• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
Накладывание спеллов в жидкостях
admiirall
Центурион
Всем привет.
Есть задача: Нужно сделать чтобы войдя в воду(лаву) накладывался спел на игрока который в нее вошел. Вот сделана аура http://4put.ru/view-max-picture.php?id=2246768 накладывается.

Не знаю куда копать даже..

Добавлено (22.09.2013, 18:47)
---------------------------------------------
Актуально sad
Сообщение # 1 отредактировано Dimitro - Вторник, 24.09.2013, 15:13
Dimitro
Praise the sun!
void Player::HandleDrowning(uint32 time_diff) - в данном методе есть обработка нужных вам ситуаций.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 2 написано 22.09.2013 в 19:01
admiirall
Центурион
Dimitro, хм, ну когда я начинал скриптовать инст - никакого кода даже малюсенького в ядре небыло. следовательно где-то в базе прописано это. я лаву не трогал. даже.
Посмотрю
Код
void Player::HandleDrowning(uint32 time_diff)
, постараюсь разобраться, но хотелось бы в базе узнать где прописано, что при заходе в воду(лаву) накладывается аура. Уже весь world в бд пересмотрел.. не нашел такого, но где-то же должно это быть!?
Сообщение # 3 написано 22.09.2013 в 19:07
_Support_
Сore Developer
Цитата (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
admiirall
Центурион
Ничего не понял..
В
Код
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
Dimitro
Praise the sun!
Я вообще не понял, чего вы хотите добиться.
Объясню все подробно, может среди объяснений найдете ответ на вопрос, который я не понял.

Есть спелл - 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.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 6 отредактировано Dimitro - Вторник, 24.09.2013, 05:54
admiirall
Центурион
Dimitro, http://youtu.be/XafXU2IZ9ZA Я хотел добиться того чтобы баф накладывался сразу как игрок чууть чуть наступит в лаву. в ядре проверками выше он срабатывал как я уже там в воду с головой окунусь. Сделал через таблицу. знал про нее. но что-то не подумал о этом. спасибо.
Сообщение # 7 написано 24.09.2013 в 11:45
  • Страница 1 из 1
  • 1
Поиск: