В общем для тех кто хочет сделать вокрешение крипов как в доте - тоесть вокрешение группами. И так Для этого нам пригодится WE и id юнитов(нейтралов которых вы хотите воскресить) Создаем обычный триггер с событием времени Назовен его SpawnNeutral
Code
function InitTrig_SpawnNeutral takes nothing returns nothing local trigger t = CreateTrigger() call TriggerRegisterTimerEvent(t, 40, true) call TriggerAddAction(t, function Trig_SpawnNeutral_Actions) endfunction
этот триггер будет вызываться каждые 40 секунды игры. Далее на нужно создать глобальную переменную группу Это делаеться вверху (самом) триггера globals group Neutral endglobals Далее нам нужна левая функция которыя будет проверять наличие юнитов в группе.
Code
function GetGroup takes group g returns boolean set Neutral = g return FirstOfGroup(Neutra) == null endfunction
эта функция будет узнавать есть ли в группе юниты и будет выводить нам значение true или false. Далее переходим в наш SpawnNeutral триггер в нем создаем локальную группу
Code
local group g = CreateGroup()
дальше нам надо внести в группу юнитов которые находятся в области(заранее созданной) для вокрешения крипов. и далее...
Code
call GroupEnumUnitsInRect(g, gg_rct_NC1, null)
g - это наша локальная группа gg_rct_NC1 - это наша локация null - это null (no comments) теперь мы проверяем если в группе нет юнитов то создаем на локации которую выделили нейтралов.
Code
if GetGroup(g) then
где GetGroup(g) - это наша левая функция которая проверяет на наличие юнитов в группе аg - это наша локальная группа в которую мы занесли юнитов далее мы создаем здесь юнтов методом
Code
call CreateUnitAtLoc(Player(PLAYER_NEUTRAL_AGGRESSIVE), 'здесь id вышего юнита', GetRectCenter(ваша локация), 0)
и так далее
Code
endif
но по окончанию функции нода всегда писать
Code
call DestroyGroup(g)
- чтоб при последующем вызове функции не требовалось проверять уже наличие там других юнитов с других локаций и создавать новую группу
Code
set g = CreateGroup()
повторяем все заново .. заносим в группу юнитов проверяем на наличие и создаем в локации. Вот весь мой триггер. Желаю вам удачи. Всего наилучшего Lawson
globals group Neutral endglobals
function GetGroup takes group g returns boolean set NeutralGroup = g return FirstOfGroup(g) == null endfunction
function GetNeutral takes nothing returns nothing local group g set g = CreateGroup() call GroupEnumUnitsInRect(g, gg_rct_NC1, null) if GetGroup(g) then call CreateUnitAtLoc(Player(PLAYER_NEUTRAL_AGGRESSIVE), 'otau', GetRectCenter(gg_rct_NC1), 0) call CreateUnitAtLoc(Player(PLAYER_NEUTRAL_AGGRESSIVE), 'odoc', GetRectCenter(gg_rct_NC1), 0) endif call DestroyGroup(g) endfunction //=========================================================================== function InitTrig_SpawnNeutral takes nothing returns nothing local trigger t = CreateTrigger() call TriggerRegisterTimerEvent(t, 40, true) call TriggerAddAction(t, function GetNeutral ) endfunction
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Воскресенье, 20 Февраля 2011, 23:16:07
Добавлено (20-02-2011, 21:18) --------------------------------------------- lawson, ещё добавь в "требования" - JNGP (насколько я понял, у тебя используется globals/endglobals.. а это вроде как vJass).. но я могу и ошибаться