Вернуться   Форумы SDlive > WoW Academ > Клуб нытиков
Ответ
 
Опции темы Опции просмотра

Спасение утопающих - дело рук самих утопающих
Старый 09.10.2009, 07:02   #1
animagus
Гуру
 
Аватар для animagus
 
Регистрация: 25.10.2008
Сообщения: 1,199
animagus - блестящий ораторanimagus - блестящий ораторanimagus - блестящий оратор
Вес репутации: 38
По умолчанию Спасение утопающих - дело рук самих утопающих

Так как наши админы не могут/не хотят/не успевают фиксить спеллы и таланты у меня возникло желание научиться это делать самому. Было бы неплохо если кто-нибудь объяснил как это делать.
Пример спелл lifebloom
http://github.com/mangos/mangos/raw/...SpellAuras.cpp
Код:
            // Lifebloom
            if (GetSpellProto()->SpellFamilyFlags & UI64LIT(0x1000000000))
            {
                if ( apply )
                {
                    if ( caster )
                        // prevent double apply bonuses
                        if(m_target->GetTypeId()!=TYPEID_PLAYER || !((Player*)m_target)->GetSession()->PlayerLoading())
                            m_modifier.m_amount = caster->SpellHealingBonus(m_target, GetSpellProto(), m_modifier.m_amount, SPELL_DIRECT_DAMAGE);
                }
                else
                {
                    // Final heal only on dispelled or duration end
                    if ( !(GetAuraDuration() <= 0 || m_removeMode == AURA_REMOVE_BY_DISPEL) )
                        return;

                    // have a look if there is still some other Lifebloom dummy aura
                    Unit::AuraList const& auras = m_target->GetAurasByType(SPELL_AURA_DUMMY);
                    for(Unit::AuraList::const_iterator itr = auras.begin(); itr!=auras.end(); ++itr)
                        if((*itr)->GetSpellProto()->SpellFamilyName == SPELLFAMILY_DRUID &&
                            ((*itr)->GetSpellProto()->SpellFamilyFlags & UI64LIT(0x1000000000)))
                            return;

                    // final heal
                    if(m_target->IsInWorld() && m_stackAmount > 0)
                    {
                        int32 amount = m_modifier.m_amount / m_stackAmount;
                        m_target->CastCustomSpell(m_target, 33778, &amount, NULL, NULL, true, NULL, this, GetCasterGUID());

                        if (caster)
                        {
                            int32 returnmana = (GetSpellProto()->ManaCostPercentage * caster->GetCreateMana() / 100) * m_stackAmount / 2;
                            caster->CastCustomSpell(caster, 64372, &returnmana, NULL, NULL, true, NULL, this, GetCasterGUID());
                        }
                    }
                }
                return;
            }
Меня больше всего что происходит в строчках, которые как раз соотвествуют сломанному финальноу тику.
Код:
int32 amount = m_modifier.m_amount / m_stackAmount;
m_target->CastCustomSpell(m_target, 33778, &amount, NULL, NULL, true, NULL, this, GetCasterGUID());
m_stackAmount - если я правильно понял это количество стаков(но зачем на него делить?)
33778 - видимо id спелла отвечающего за финальный тик

Последний раз редактировалось animagus, 09.10.2009 в 10:09.
animagus вне форума   Ответить с цитированием

Старый 09.10.2009, 07:34   #2
version
Admin
 
Регистрация: 23.08.2007
Сообщения: 980
version - блестящий ораторversion - блестящий ораторversion - блестящий оратор
Вес репутации: 40
По умолчанию

Такая инициативность радует.
Контрибьютинг в код делают тех-гмы, в данный момент SeT.
Администрация контрибьютингом в код не занимается.

Соответственно по вопросам как и что можно спросить у SeT'а
__________________
Администрация сервера НЕ несет ответственности за игровые аккаунты.
http://wowacadem.ru/rules/
version вне форума   Ответить с цитированием

Старый 09.10.2009, 09:51   #3
SeT
Tech GM
 
Аватар для SeT
 
Регистрация: 09.03.2007
Сообщения: 1,522
SeT - блестящий ораторSeT - блестящий ораторSeT - блестящий оратор
Вес репутации: 42
По умолчанию

Ну да, все так.
__________________
SeT вне форума   Ответить с цитированием

Старый 09.10.2009, 09:57   #4
Fenix
Guardian of Cenarius
 
Аватар для Fenix
 
Регистрация: 25.09.2007
Адрес: Бердск
Сообщения: 2,195
Fenix - блестящий ораторFenix - блестящий ораторFenix - блестящий оратор
Вес репутации: 41
Отправить сообщение для  Fenix с помощью ICQ
По умолчанию

Цитата:
Сообщение от SeT Посмотреть сообщение
Ну да, все так.
Set не в обиду тебе но комент заставил поржать
человек просит помощи разобраться в коде талантов/спелов
Цитата:
Сообщение от animagus Посмотреть сообщение
у меня возникло желание научиться это делать самому. Было бы неплохо если кто-нибудь объяснил как это делать.
возможно грядет еще 1 техник?
__________________
Fenix вне форума   Ответить с цитированием

Старый 09.10.2009, 10:08   #5
animagus
Гуру
 
Аватар для animagus
 
Регистрация: 25.10.2008
Сообщения: 1,199
animagus - блестящий ораторanimagus - блестящий ораторanimagus - блестящий оратор
Вес репутации: 38
По умолчанию

Ну раз:
Цитата:
Сообщение от SeT Посмотреть сообщение
Ну да, все так.
Тогда получается что если выкинуть из строчки
Код:
int32 amount = m_modifier.m_amount / m_stackAmount;
деление на m_stackAmount то финальный тик начнет увеличиваться пропорционально количеству стаков(что и долно быть).
-А где посмотреть спелл №33778 чтобы проверить спелл повер кофицент?
-И где считается m_modifier.m_amount?
animagus вне форума   Ответить с цитированием

Старый 09.10.2009, 10:13   #6
Winger
Гуру
 
Аватар для Winger
 
Регистрация: 26.01.2008
Адрес: O
Сообщения: 1,148
Winger стоит выше репутацииWinger стоит выше репутацииWinger стоит выше репутации
Вес репутации: 41
Отправить сообщение для  Winger с помощью ICQ
По умолчанию

Цитата:
Сообщение от animagus Посмотреть сообщение
-А где посмотреть спелл №33778 чтобы проверить спелл повер кофицент?
Прибавляешь к "http://www.wowhead.com/?spell=" цифирки "33778" и получаешь ссылку на спелл: http://www.wowhead.com/?spell=33778
__________________
Dubito Ergo Sum http://www.erepublik.com/en/referrer/Kerib
Winger вне форума   Ответить с цитированием

Старый 09.10.2009, 10:17   #7
SeT
Tech GM
 
Аватар для SeT
 
Регистрация: 09.03.2007
Сообщения: 1,522
SeT - блестящий ораторSeT - блестящий ораторSeT - блестящий оратор
Вес репутации: 42
По умолчанию

Че я буду тут рассказывать все теорию С++ и кода мангоса? Береш ставиш сервер, запускаеш в дебаге, и дебагаеш по строчке.

Остановил на этой строчке
Цитата:
int32 amount = m_modifier.m_amount / m_stackAmount;
и там будет все написано, чему равно m_modifier.m_amount и m_stackAmount, все сразу станет понятно.

А где посмотреть спелл №33778 чтобы проверить спелл повер кофицент?
В таблице spell_bonus_data, у нас нет этого спелла там, значит идет стандартный расчет.

И где считается m_modifier.m_amount?
m_modifier заполняется при наложении ауры.
__________________
SeT вне форума   Ответить с цитированием

Старый 09.10.2009, 10:44   #8
animagus
Гуру
 
Аватар для animagus
 
Регистрация: 25.10.2008
Сообщения: 1,199
animagus - блестящий ораторanimagus - блестящий ораторanimagus - блестящий оратор
Вес репутации: 38
По умолчанию

Цитата:
А где посмотреть спелл №33778 чтобы проверить спелл повер кофицент?
В таблице spell_bonus_data, у нас нет этого спелла там, значит идет стандартный расчет.
По стандартному расчету кофицент для Спелл повера выставляется 0(должен быть около 50%)Так и должно быть?
Может тогда обьяснишь вкратце как ставить сервер?
animagus вне форума   Ответить с цитированием

Старый 09.10.2009, 11:22   #9
SeT
Tech GM
 
Аватар для SeT
 
Регистрация: 09.03.2007
Сообщения: 1,522
SeT - блестящий ораторSeT - блестящий ораторSeT - блестящий оратор
Вес репутации: 42
По умолчанию

Цитата:
Сообщение от animagus Посмотреть сообщение
Может тогда обьяснишь вкратце как ставить сервер?
нет. getmangos.ru
__________________
SeT вне форума   Ответить с цитированием

For hunters
Старый 25.11.2009, 14:31   #10
animagus
Гуру
 
Аватар для animagus
 
Регистрация: 25.10.2008
Сообщения: 1,199
animagus - блестящий ораторanimagus - блестящий ораторanimagus - блестящий оратор
Вес репутации: 38
По умолчанию For hunters

По идее добавление этого в таблицу npc_trainer должно исправить баг с черной стрелой.
Вложения
Тип файла: rar fix.rar (575 байт, 12 просмотров)
animagus вне форума   Ответить с цитированием
Ответ


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +1, время: 20:15.

| Home | Регистрация | Справка | Пользователи | Календарь | Сообщения за день | Поиск | Новые сообщения | Мобильный контент |