|
|
Модератор форума: Dimitro |
Форум TrinityCore [TrinityCore] Help мобы друг в друге |
мобы друг в друге |
Сообщение # 7 написано 20.09.2015 в 14:18
|
Да ладно? http://www.youtube.com/watch?v=tzDGJmFjjHM (начиная с 00:13) Обратите внимание, это Legion, оффа. возможно новый контент баганыый еще пока (на офе полно багов) темболее видео с птр но щас только проверил, мобы когда встают также как на видео, в течении 3 секунд расходяться в стороны и окружают цель мобы могут двигаться друг в друге, но стоять не могут |
Первое, что пришло в голову: Подрубаетесь к Creature::Update(), к метке switch(m_deathState), где существо живо. Добавляете проверку на нахождение в бою + наличие жертвы (далее - victim) и на флаг перемещения (удостоверяетесь в том, что НИП стоит). Предварительно добавив в класс существа таймер проверки (далее - m_cprTimer), добавляете внутрь вышеозначенной проверки примерно следующее: Если m_cprTimer <= diff: - Получаете список (GetCreatureListWithEntryInGrid()), указывая радиус поиска равным 1.0f. - Обрабатываете каждое найденное существо следующим образом: а) Проверяете, стоит ли оно, находится ли в бою, совпадает ли его жертва с жертвой рассматриваемого существа. б) Если все эти проверки возвращают true - заставляете существо переместиться так, чтобы оно встало на то же расстояние от игрока, на котором оно находилось до этого, но при этом чтобы bounding_radius'ы рассматриваемого и целевого существ не пересекались. В противном случае: - Отнимаете от m_cprTimer'а diff. П.С: Учтите, что все, что написано выше, отражает лишь мои мысли по данному вопросу в данный момент. Возможно есть какой-то фактор(ы), который я не учел, и который(е) всплывут только при воспроизведении и тестировании метода. Кроме того, способ можно кастомизировать. Здесь я проверяю, находятся ли существа, атакующие общую цель, в радиусе, меньшем, чем 1.0, друг от друга. И, если да, перемещаю одно из них. При этом их bounding_radius'ы, например, не учитываются (теоретически 2 существа могут запросто находиться на расстоянии, меньшем, чем 1.0, друг от друга и при этом визуально *не мешать* друг другу в виду их малых размеров). П.С.С: Вот, один из нюансов: стоит добавить еще и проверку на чтение заклинаний, чтобы НИПы не прерывали свои касты, а дожидались их окончания. |
| |||
| |||