function Trig_ovcisp_Conditions takes nothing returns boolean if ( not ( GetUnitTypeId(GetDyingUnit()) == 'nshe' ) ) then return false endif return true endfunction
function Trig_ovcisp_Actions takes nothing returns nothing local integer i = 12 set i = i - 1 if i == 0 then loop exitwhen i == 12 call CreateUnitAtLoc(Player(15), 'nshe', GetRandomLocInRect(gg_rct_ovci), 0.00) set i = i + 1 endloop endif endfunction
//=========================================================================== function InitTrig_ovcisp takes nothing returns nothing set gg_trg_ovcisp = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_ovcisp, EVENT_PLAYER_UNIT_DEATH ) call TriggerAddCondition( gg_trg_ovcisp, Condition( function Trig_ovcisp_Conditions ) ) call TriggerAddAction( gg_trg_ovcisp, function Trig_ovcisp_Actions ) endfunction
при сохранение на проверке пишет что всё правильно, ошибок нет... то когда все юниты умирают, то не одного юнита не делает... Про то, что при смерти каждого из юнита в области создаётся локальная переменная i я подозреваю, так что можете подсказать как ещё исправить это? П.С. сильно помидоры не кидать
Dead Girls can't say NOT! Делаю свойORPGпроект, нужны триггерщики(JASS-еры) и идейщики... Все подробности в ЛС
Сообщение отредактировал ctpaxm - Понедельник, 28 Мая 2012, 02:16:11
function Trig_ovcisp_Actions takes nothing returns nothing local integer i = 12 set i = i - 1 if i == 0 then loop exitwhen i == 12 call CreateUnitAtLoc(Player(15), 'nshe', GetRandomLocInRect(gg_rct_ovci), 0.00) set i = i + 1 endloop endif endfunction
Разбираем пошагово. Создается переменная, равная 12. Уменьшается на один (i = 11). Сравнивается с нулем (11 != 0). Все действия внутри блока пропускаются.