|
Новичкам Информация для всех новичков, новичкам рекомендуется задавать свои вопросы здесь |
|
Опции темы | Поиск в этой теме | Опции просмотра |
11.11.2013, 20:45 | #1 |
Гость
Сообщений: n/a
|
Немножечко о талантах
Доброго времени суток, если не трудно уточните пожалуйста пару вещей.
Последняя сборка CMaNGOS(4.3.4), решил реализовать талант Энханс Шамана: "Жгучее пламя"(ссылку не могу дать т.к. в МоР нету этого таланта уже) и в связи с ним столкнулся с рядом проблем: 1)Имеются ли в DBC файлах шанс на прок спелла(надеюсь правильно выразился)? 2) Талант имеет ауру "SPELL_AURA_DUMMY" т.е следовательно его надо реализовывать в SpellAura.cpp в разделе: Код:
void Aura::HandleAuraDummy(bool apply, bool Real) Или все же в SpellEffect.cpp в разделе "EffectDummy" ? (Догадки падают именно на реализацию в SpellEffect.cpp) Как работает талант: Опаляющий тотем() использовав спелл "Опаляющая стрела()" накладывает на врага спелл: "Жгучее пламя"(Уровень 1,2,3)(), который стакается до 5 штук и за 15 секунд наносит урон от "Опаляющая стрела" (При 5 стаках урон равен 5 опаляющим стрелам) Будьте любезны подскажите пожалуйста правильную дорожку. Заранее спасибо. P.S Пустые скобочки я оставил чтоб вставить ссылки на wowhead, щас нету возможности т.к. интернет еле работает((( Еще раз заранее спаибо Последний раз редактировалось Felzewell; 11.11.2013 в 21:01. |
11.11.2013, 22:07 | #2 |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
Для справки о dbc используй http://ru-mangos.ru/showthread.php?t=3501
А аур таланта нет прок данных, а шанс лежит в basepoints. Насколько я помню, ауры мастера могут прокать от атак пета (тотема), так что по идее можно через HandleDummyAuraProc все сделать. Если в проке просто кастовать жгучее пламя то оно само собой будет стакаться до нужного количества раз. То, что ты написал про HandleAuraDummy и EffectDummy тут никак не поможет, это всего лишь обработчики наложения ауры таланта и и его эффекта. Если уж совсем невтерпеж, то можешь посмотреть как реализовано тут https://github.com/Dramacydal/murloc...ects.cpp#L1453, но это в другом варианте, хаково и неправильно. Последний раз редактировалось Amaru; 11.11.2013 в 22:11. |
12.11.2013, 07:26 | #3 |
Гость
Сообщений: n/a
|
Спасибо за информацию, буду ковыряться, пытаться понять. а вот вопрос не по теме, как понять хаковая реализация или нет ?
|
12.11.2013, 10:16 | #4 |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
Вообще это сложно сказать, чтобы понимать это, нужно понимать как устроен эмулятор.
В моем понимании правильная реализация талантов - это сведение всего к написанию кода в обработчиках эффектов, аур и проков. Но и там можно столько хаков наворотить, что потом людям страшно будет. |
12.11.2013, 12:30 | #5 |
Гость
Сообщений: n/a
|
Понятно, спасибо еще раз... думаю я взялся сразу за сложный талант... Подскажите пожалуйста есть ли талант или спелл который проще реализовать ?
|
12.11.2013, 12:35 | #6 |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
Таких полно)
Нерабочий талант подразумевает то, что стандартными механиками ядра он по какой-то причине не обрабатывается. Тут по любому нужно будет разбираться что, где и на каком этапе не работает. |
12.11.2013, 13:15 | #7 |
Гость
Сообщений: n/a
|
Ахах))) ясненько, в общем решил взяться за показавшийся легким на первый взгляд спелл ("Высвободить чары стихий")
По сути спелы шаманских бафов на оружие из за этого спела тригерят соответствующие спеллы т.е. если стоит Оружие языка пламени то на противника тригериться спелл: Высвободить чары огня и т.д. в SpellEffect.cpp в разделе EffectDummy в case SPELL_FAMILY_SHAMAN прописал следующий код: Код:
/// Unleash Elements (Fix by Felzewell) switch (m_spellInfo->Id) { case 73680: { if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER) return; uint32 triggered_spell_id; switch (m_spellInfo->Id) { case 8017: triggered_spell_id = 73684; break; // Rockbiter Weapon case 8024: triggered_spell_id = 73683; break; // Flametongue Weapon case 8033: triggered_spell_id = 73682; break; // Frostbrand Weapon case 8232: triggered_spell_id = 73681; break; // Windfury Weapon case 51730: triggered_spell_id = 73685; break; // Earthliving Weapon } unitTarget->CastSpell(unitTarget, triggered_spell_id, true); return; } } P.S : Не пинайте сильно, первый раз пытаюсь починить спелл))) сори незнал как пропорционально на форуме прописать код Последний раз редактировалось Felzewell; 12.11.2013 в 13:21. Причина: добавил P.S |
12.11.2013, 14:18 | #8 |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
Ну этот код даже с точки зрения языка логики не имеет
|
12.11.2013, 15:33 | #9 |
Гость
Сообщений: n/a
|
Понятно.... порыскав по ссылке которую вы мне дали нашел у него тоже реализацию "Высвободить чары стихий" https://github.com/Dramacydal/murloc...ects.cpp#L5306
Подскажите пожалуйста Это тоже хаковая реализация ? просто хочу как бы... пример Ах да параметр case должен иметь id Чар стихий(огонь, вода, и т.д)? или число используемое в case не имеет значения ? Заранее спасибо |
12.11.2013, 15:45 | #10 |
YTDB Dev
Регистрация: 01.02.2010
Сообщений: 288
Сказал(а) спасибо: 125
Поблагодарили 97 раз(а) в 53 сообщениях
|
|
12.11.2013, 16:05 | #11 |
Гость
Сообщений: n/a
|
Сори)) Незнал))
Посмотрев код повнимательнее заметил такую функцию как GetEnchantmenId() Именно значение EnchantmentId вставляется в case? Как ставить оффтопик ?)) Последний раз редактировалось Felzewell; 12.11.2013 в 16:23. |
12.11.2013, 16:36 | #12 |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
Последний раз редактировалось Amaru; 12.11.2013 в 16:39. |
13.11.2013, 10:24 | #13 | |
Гость
Сообщений: n/a
|
Цитата:
Не могли бы вы подсказать из какого файла вы брали значение EnchantmentId, Заранее благодарен |
|
13.11.2013, 13:58 | #14 |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
|