|
|
Модератор форума: Dimitro |
Форум TrinityCore [TrinityCore] Help Накладывание спеллов в жидкостях (# #) |
Накладывание спеллов в жидкостях |
Всем привет.
Есть задача: Нужно сделать чтобы войдя в воду(лаву) накладывался спел на игрока который в нее вошел. Вот сделана аура http://4put.ru/view-max-picture.php?id=2246768 накладывается. Не знаю куда копать даже.. Добавлено (22.09.2013, 18:47) --------------------------------------------- Актуально |
void Player::HandleDrowning(uint32 time_diff) - в данном методе есть обработка нужных вам ситуаций.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 2 написано 22.09.2013 в 19:01
|
Dimitro, хм, ну когда я начинал скриптовать инст - никакого кода даже малюсенького в ядре небыло. следовательно где-то в базе прописано это. я лаву не трогал. даже.
Посмотрю Код void Player::HandleDrowning(uint32 time_diff)
Сообщение # 3 написано 22.09.2013 в 19:07
|
Цитата (admiirall) постараюсь разобраться, но хотелось бы в базе узнать где прописано, что при заходе в воду(лаву) накладывается аура. Уже весь world в бд пересмотрел.. не нашел такого, но где-то же должно это быть!? Код uint32 damage = GetMaxHealth() / 5 + urand(0, getLevel()-1); EnvironmentalDamage(DAMAGE_DROWNING, damage); } else if (!(m_MirrorTimerFlagsLast & UNDERWATER_INWATER)) // Update time in client if need SendMirrorTimer(BREATH_TIMER, getMaxTimer(BREATH_TIMER), m_MirrorTimer[BREATH_TIMER], -1);
upon the look
Сообщение # 4 написано 22.09.2013 в 19:14
|
Ничего не понял..
В Код void Player::HandleDrowning(uint32 time_diff) И что мне с этим делать? При заходе в мою "лаву" не рассчитывается никакого урона. идет чистый урон от ауры, которая накладывается. Где это прописано что накладывается аура мне не ясно. У боса в ядре ставил проверку вот такую: Код if (me->IsInWater()) { действие } и она работает. но не совсем правильно по видео можно понять почему. Аура накладывается как только я каснулся чуть-чуть лавы, а спел как я почти весь зашел в нее. Код Map::PlayerList const &PlayerList = me->GetMap()->GetPlayers(); if (!PlayerList.isEmpty()) for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) if (Player* player = i->GetSource()) if(player->IsInWater()) { каст спела } Так сделал в ядре для игрока. Где-то нашел в ядре и изменил под себя. Добавлено (23.09.2013, 21:28)
Сообщение # 5 написано 23.09.2013 в 21:28
|
Я вообще не понял, чего вы хотите добиться.
Объясню все подробно, может среди объяснений найдете ответ на вопрос, который я не понял. Есть спелл - 101619 - магма. В методе void Player::UpdateUnderwaterState есть код, который, в итоге, обращается к LiquidType.dbc, из которого берет инфу о конкретных жидкостях, в том числе и о спеллах, которые должны эти жидкости накладывать. В этом методе и накладывается вышеуказанный спелл. Этот спелл, исходя из данных в Spell.dbc вешает ауру периодического урона в 5к, а вторым эффектом триггерит спелл - 101819 - магма, который накладывает ауру процентного увеличения дамага от предыдущего спелла. Спелл пылающие кулаки - 101866 не имеет родительского спелла, который бы его триггерил (хотя имеет дочерний спелл, но это не важно). Несмотря на то, что я играл на офе во времена 4.3.4, как именно на офе вызывается этот спелл я сказать не могу, но можно сделать так, что-бы его триггерил, к примеру первый спелл - 101619 - магма, для этого в бд есть таблица - http://collab.kpsn.org/display/tc/Spell+linked+spell+tc2. Разбирайтесь.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку. |
Dimitro, http://youtu.be/XafXU2IZ9ZA Я хотел добиться того чтобы баф накладывался сразу как игрок чууть чуть наступит в лаву. в ядре проверками выше он срабатывал как я уже там в воду с головой окунусь. Сделал через таблицу. знал про нее. но что-то не подумал о этом. спасибо.
Сообщение # 7 написано 24.09.2013 в 11:45
|
| |||
| |||