Тема такая. Есть идея героя на основе www.smitefire.com/smite/god/bakasura-19
+ просто оставлю это здесь - wc3-maps.ru/load/modeli_dlja_warcraft_3/modeli_iz_dota_2/slark_f... - минимум переделки фейса протестить
Ключевые спеллы:
Думаю об оптимальной реализации хаванья и вырыгивания.
Первейшая идея такая - при касте спелла, которым он хавает крипов, хайдить и неуязвимить сожранного крипа, запоминать героя и сожранный юнит в локалку и запускать периодический таймер ну хотя бы в 0.5 сек. В таймере проверять наличие на герое некоей маркерной абилы, при ее наличии сбрасывать с него эту самую абилу и анхайдить-разнеуязвимить-вырыгивать крипа, делать дамаг за него, накладывать на ближайших врагов слоу. А при применении вырыгивающей способности просто давать ему эту маркерную абилу.
Второй вариант - создать глобальную переменную-массив группы на всех игроков, втч нейтральных, при касте на крипа спелла хавания так же хайдить его, неуязвимить и добавлять в эту группу. При применении вырыгивающей способности анхайдить, разнеуязвить, вырыгивать всех юнитов из группы.
Обе идеи довольно приемлемые, но кое-что смущает.
В первом случае таких таймеров теоретически могут быть сотни на ОДНОГО Бакасуру (а миррор матч теоретически возможен). И пусть там хватит периода даже больше 0.5 сек., все равно воздействие на производительность может оказаться достаточно значительным (или я ошибаюсь и 200 локальных таймеров с периодом 0.5-0.7 сек. не так уж страшны? Мне все-таки кажется, что не очень ошибаюсь).
Второй вариант кажется намного лучше и проще в реализации, но не нравится необходимость добавления глобальной переменной. Плюс небольшая неприятность - если у одного игрока будет два Бакасуры, то каждый будет вырыгивать крипов, съеденных обоими (хотя это, в принципе, очень-очень маленькая проблема и вероятность, но тем не менее).
Какой вариант считаете лучшим? Или есть собственные идеи?
Принятый ответ
глобальный массив не нужен. сохраняй группу в хэш-таблицу на хэндл героя, потом загружай ее когда надо. у каждого героя будет своя группа
вот пример, молот бурь съедает юнита а удар грома ставит всех юнитов обратно
вот пример, молот бурь съедает юнита а удар грома ставит всех юнитов обратно
Загруженные файлы
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Хештаблица в помощь, там довольно таки изи сделать - паузим, хайдим, делаем неуязвимым и отключаем пути, достаточно 1 группы юнитов на 1 героя, в группу добавляем сожанных а потом делаем с ними что нужно.
Можно и с глобальной, конечно, но см. выше.
При использовании отрыгивания, настраиваешь все параметры исходя из integer(урон, например) и затем unhide, uninvul всех юнитов в группе + делаешь с ними всю грязь.
И мне кажется идею ты содрал не с этого Slark's bastard'a, а с васаби жирного, из league of legends, который хавает крипов и плюет ими, нанося урон и земдляя. Ну, в общем, так и сделаешь.
А если хочешь, чтобы он мог схавать таким образом героя, а ты имел вижен на нем, есть два варианта:
прозрачность = 100%; пауза/стан;
SetUnitX(udg_Hero,GetUnitX(udg_Eater))
SetUnitY(udg_Hero,GetUnitY(udg_Eater))
;
Магический огонь + привязать камеру + классический hide сожранного героя.
вот пример, молот бурь съедает юнита а удар грома ставит всех юнитов обратно