Как сделать удаление трупов через заданный промежуток времени после их спавна ?

crusader556, да, нужны оба триггера. Чтобы уменьшить время, нужно либо уменьшить Custom Value, либо время в событии второго триггера. Попробуй custom value 2.

crusader556:
...для меня то что написано во втором триггере вообще темный лес.
В условии первого триггера поменяй пехотинца, на нужного тебе юнита:
И ещё как то ускорить удаление , чтобы примерно через 1-2 секунды после появления он исчезал.
Попробовал выставить подходящие значения. Если надо больше или меньше, то custom value увеличивай или уменьшай.

Короче, открылась неожиданная информация, которая указывает, что всё это полная ерунда с двумя триггерами, таймерами, хэш-таблицами и так далее.
Нужен один триггер:
Событие - Юнит умирает;
Условие - Тип юнита такой-то;
Действия -
  • Ждать пару-тройку секунд,
  • Убрать умершего юнита из игры.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
13
Те, которые на кладбище у нежити (тут триггерно нужно)? Если нет (то есть обычные), то это есть в игровых константах.
Скрин в файлах.
Загруженные файлы
26
Ещё можно так триггерно:
Убитому юниту, если не герой, присваивается Custom Value 5, а также добавляется в отряд. Каждые 2 секунды юниты в отряде перебираются, Custom Value уменьшается на 1, если оно стало 0, то юнит удаляется из отряда и игры.
Загруженные файлы
12
8gabriel8:
Ещё можно так триггерно:
Убитому юниту, если не герой, присваивается Custom Value 5, а также добавляется в отряд. Каждые 2 секунды юниты в отряде перебираются, Custom Value уменьшается на 1, если оно стало 0, то юнит удаляется из отряда и игры.
А можно тоже самое , только для отдельно взятого юнита?(не всех трупов в карте)
26
Конечно, в триггер, где условие, что юнит неГерой, поменяй условие, что юнит такого-то типа.
12
8gabriel8:
Конечно, в триггер, где условие, что юнит неГерой, поменяй условие, что юнит такого-то типа.
Нужно юзать оба триггера же ? А то я в них не шарю , для меня то что написано во втором триггере вообще темный лес.
И ещё как то ускорить удаление , чтобы примерно через 1-2 секунды после появления он исчезал.
28
Используй хештаблицу и таймер.
globals
    constant hashtable Hash = InitHashtable()
    constant integer UNIT_INDEX_DELAYED_REMOVAL = 0
    constant real DELAYED_REMOVAL_TIME = 5. // Нужное время в секундах.
endglobals

function DelayedRemoval takes nothing returns nothing
	local timer t = GetExpiredTimer()
	local integr id = GetHandleId(t)
	call RemoveUnit(LoadUnitHandle(Hash, id, UNIT_INDEX_DELAYED_REMOVAL))
	call RemoveSavedHandle(Hash, id, UNIT_INDEX_DELAYED_REMOVAL)
	call RemoveTimer(t)
	set t = null
endfunction

function Trig_UnitDecay_Actions takes nothing returns nothing
	local timer t = CreateTimer()
	call SaveUnitHandle(Hash, GetHandleId(t), UNIT_INDEX_DELAYED_REMOVAL, GetDecayingUnit())
	call TimerStart(t, DELAYED_REMOVAL_TIME, false, function DelayedRemoval)
	// Время можно менять в зависимости от типа юнита и прочего, оно не обязательно должно быть константой.
	set t = null
endfunction

function InitTrig_UnitDecay takes nothing returns nothing
    set gg_trg_UnitDecay = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ( gg_trg_UnitDecay, EVENT_PLAYER_UNIT_DECAY )
    call TriggerAddAction(gg_trg_UnitDecay, function Trig_UnitDecay_Actions)
endfunction
Если надо на гуи, могу сделать.
26
crusader556, да, нужны оба триггера. Чтобы уменьшить время, нужно либо уменьшить Custom Value, либо время в событии второго триггера. Попробуй custom value 2.

crusader556:
...для меня то что написано во втором триггере вообще темный лес.
В условии первого триггера поменяй пехотинца, на нужного тебе юнита:
И ещё как то ускорить удаление , чтобы примерно через 1-2 секунды после появления он исчезал.
Попробовал выставить подходящие значения. Если надо больше или меньше, то custom value увеличивай или уменьшай.

Короче, открылась неожиданная информация, которая указывает, что всё это полная ерунда с двумя триггерами, таймерами, хэш-таблицами и так далее.
Нужен один триггер:
Событие - Юнит умирает;
Условие - Тип юнита такой-то;
Действия -
  • Ждать пару-тройку секунд,
  • Убрать умершего юнита из игры.
Загруженные файлы
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.