TimerStart - это встроенная функция? Просто не понимаю, каким образом воскрешение запускается именно после окончания таймера? Т.е. lua позволяет повесить условие на любой таймер, который только что создался?
Статьи читать нужно, в этой например подробно всё разжёвано. Вызвать callback из таймера ещё jass позволял, просто в lua удобно переменные через замыкания передавать.
У любого игрока может быть любое количество героев
Притом использовали wait который не точен и игнорирует паузу, вместо лаконичного решения на lua.
local ReviveTrigger = CreateTrigger()
for i = 0, bj_MAX_PLAYER_SLOTS - 1 do
local player = Player(i)
if GetPlayerController(player) == MAP_CONTROL_USER and GetPlayerSlotState(player) == PLAYER_SLOT_STATE_PLAYING then
TriggerRegisterPlayerUnitEvent(ReviveTrigger, player, EVENT_PLAYER_HERO_REVIVABLE)
end
end
TriggerAddAction(ReviveTrigger, function()
local hero = GetTriggerUnit()
local heroOwner = GetOwningPlayer(hero)
if GetPlayerController(heroOwner) ~= MAP_CONTROL_USER or GetPlayerSlotState(heroOwner) ~= PLAYER_SLOT_STATE_PLAYING then return end
local timer = CreateTimer()
local dialog = CreateTimerDialog(timer)
TimerDialogSetTitle(dialog, GetUnitName(hero))
TimerStart(timer, GetHeroLevel(hero) * 2, false, function()
local x, y = GetPlayerStartLocationX(heroOwner), GetPlayerStartLocationY(heroOwner)
ReviveHero(hero, x, y, true)
DestroyTimerDialog(dialog)
DestroyTimer(GetExpiredTimer())
end)
TimerDialogDisplay(dialog, true)
end)
Да запросто. У любого игрока может быть любое количество героев. После смерти героя запускается таймер с окном на 2*уровень героя секунд. После завершения таймера герой воскрешается.
Я не хочу ни с кем ссориться, если такой вопрос, как я задал в теме это смертный грех, то прошу прощения, надеюсь такого больше не повторится.
Такая уж у меня манера общения. Если вы разглядели в ней ссору, то могу вас искренне заверить, что её там нет. Но люди написали кучу статей, сделали по ним наработки, потратили своё время, чтоб такие вопросы не задавались, а их с регулярностью задают, ибо лень читать...
Такой большой текст, а язык программирования так и не указан.
На lua вариантов реализации много, но так как автор не указал ЯП, то предложу классичекский - структуры + хэштаблица.
» WarCraft 3 / Knights & Rogues COMPLETE EDITION
» WarCraft 3 / Knights & Rogues COMPLETE EDITION
» WarCraft 3 / Knights & Rogues COMPLETE EDITION
Ред. nazarpunk
» WarCraft 3 / Knights & Rogues COMPLETE EDITION
» WarCraft 3 / Knights & Rogues COMPLETE EDITION
» WarCraft 3 / О критических ударах и уклонениях...
» WarCraft 3 / В восстановленной карте отсутствует war3map.j, что делать?
» WarCraft 3 / variable ot is uninitillized
Ред. nazarpunk
» WarCraft 3 / Knights & Rogues COMPLETE EDITION
» WarCraft 3 / Knights & Rogues COMPLETE EDITION
» WarCraft 3 / Knights & Rogues COMPLETE EDITION
» WarCraft 3 / Триггерный приказ каста "массовой телепортации"
» WarCraft 3 / Расстояние от рудника до ратуши
» WarCraft 3 / Козырная пешка (RPG)
» WarCraft 3 / Приказ юниту
» WarCraft 3 / Приказ юниту
» WarCraft 3 / Козырная пешка (RPG)
» WarCraft 3 / Приказ юниту
» WarCraft 3 / Можно ли в переменную занести вызов функции?
На lua вариантов реализации много, но так как автор не указал ЯП, то предложу классичекский - структуры + хэштаблица.
» WarCraft 3 / Очитстка Dummy
» WarCraft 3 / Как сделать так, чтобы определённый юнит был видим лишь одному
» WarCraft 3 / Как сделать так, чтобы определённый юнит был видим лишь одному
» WarCraft 3 / Massacre of the Worlds
» Прочее / Цитадели-онлайн