У тебя на скриншотах ожидание 0.05 секунд. За это время constructed structure может быть заменено на другого юнита. Поменяй на triggering unit, чтобы не возникало багов.
NazarPunk, хватит всем сувать Lua, проще всего GUI, не хватает - есть Jass. Если надо будет сделать что-то действительно грандиозное, сами изучат vJass и Lua. В вопросах большая часть людей новички, что вообще далеки от программирования, и для их целнй хватит зачастую обычного Jass и GUI.
А как это будет реализованно, если таких зданий будет не одно, а например 10-20?
Так способ, что предложил я и NazarPunk, учитывает, что таких строений будет больше 1. NazarPunk:
Да и в вопросах как-то уместней давать более гибкие решения, чтоб люди не парились.
Да ладно, кому как удобней. Я бы вместо группы использовал массив. Но с другой стороны, так как юнитов меньше 12, то есть нативка, что отдаст сразу всем юнитам один приказ.
function R2SX takes real r returns string
return R2SW(r, 0, -1)
endfunction
function B2S takes boolean b returns string
if b then
return "true"
endif
return "false"
endfunction
Вот немного изменённая версия карты. Провёл 2 теста (оба по 20 секунд): в одном юнит удалялся, в другом убивался. И там, и там по событиям результат одинаковый. Репорт с удалением, репорт с убийством.
Провёл тест в 120 секунд с удалением, результат тот же.
За 20 секунд ни одно событие не было удалено (это видно по хендлам), скорее всего утекают. Можно поставить выход на большее время. Clamp, я так понимаю, что исследование проводилось на старом форуме XGM. Сохранились ли ссылки на него?
При этом все хендлы событий освобождаются при удалении триггера.
Clamp, может пять лет назад так и было, но не так давно я проводил простое исследование на 1.26а, события не очищаются даже при удалении юнита (и при убийстве с дальнейшим разложением).
Вот карта, где просто пишутся в файл хендлы событий. Как видим, они не повторяются, а значит каждый раз создаётся новое событие, а старое висит в памяти.
Но, как я полагаю, размер события весьма мал, потому проблем это не вызовет.
Naadir, больше одного юнита, всё работает. У каждого срабатывания события свой Triggering Unit, данная "переменная" не перезаписывается при повторном срабатывании триггера.
После постройки создаём в группу, в неё добавляем всех юнитов, что появляются после постройки, группу сохраняем в хеш-тадлицу по ключам (GetHandleId(твоё_строение), любое_число). После каста абилки узнаём кастера, по ключам (GetHandleId(кастер), то_любое_число) их хеш-таблицы узнаём сохранённую группу, всем юнитам в группе отдаём приказ.
После уничтожения строения нужно почистить хеш и уничтожить группу.
» WarCraft 3 / Нужно ли собирать триггеры с одинаковым условием в один
Ред. PT153
» WarCraft 3 / Передвижение юнитов через спел на Хеш-таблице
ArhiMEN:
» WarCraft 3 / Конвертация в строку
» WarCraft 3 / отлов момента урона\доступ к значению урона.
Ред. PT153
» WarCraft 3 / Хеш-таблица
NazarPunk:
Ред. PT153
» WarCraft 3 / Конвертация в строку
» WarCraft 3 / Очередная проблема рывка
» WarCraft 3 / Передвижение юнитов через спел на Хеш-таблице
» WarCraft 3 / отлов момента урона\доступ к значению урона.
» WarCraft 3 / Отображение Урона\Система атаки
Ред. PT153
» WarCraft 3 / Отображение Урона\Система атаки
Ред. PT153
» WarCraft 3 / Отображение Урона\Система атаки
Clamp, я так понимаю, что исследование проводилось на старом форуме XGM. Сохранились ли ссылки на него?
Ред. PT153
» WarCraft 3 / Отображение Урона\Система атаки
Вот карта, где просто пишутся в файл хендлы событий. Как видим, они не повторяются, а значит каждый раз создаётся новое событие, а старое висит в памяти.
» WarCraft 3 / отлов момента урона\доступ к значению урона.
» WarCraft 3 / Как дать временную способность?
У каждого срабатывания события свой Triggering Unit, данная "переменная" не перезаписывается при повторном срабатывании триггера.
» WarCraft 3 / Эффект на способность "Сокрушение"
» WarCraft 3 / Хеш-таблица
После уничтожения строения нужно почистить хеш и уничтожить группу.
» WarCraft 3 / отлов момента урона\доступ к значению урона.
Тебе нужно сделать событие на отлов урона, чтобы лечение было в момент нанесения урона.
» WarCraft 3 / Кастомные карты в официальной 1.31 версии - куда сохранять?
» WarCraft 3 / PreloadFiles не работает или я чего-то не понимаю?
CreateNUnitsAtLoc замени на CreateUnit (порядок аргументов глянь в common.j).
» WarCraft 3 / Как сделать голод?
PrincePhoenix, да не заказ это.
» WarCraft 3 / PreloadFiles не работает или я чего-то не понимаю?
» WarCraft 3 / Кастомные карты в официальной 1.31 версии - куда сохранять?
» WarCraft 3 / Как сделать голод?
» WarCraft 3 / Как дать временную способность?