Добавлено (11-03-2011, 15:02) --------------------------------------------- Mep3aB4uK, Событие зашел в зону игровой карты тут привязка Событие начало игры тут привязка
Добавлено (11-03-2011, 15:09) --------------------------------------------- Событе-Specific Unit Event - сюда нельзя вставлять переменные на гуи. Так пикнутых юнитов не вставиш.
function Trig_addDamage_Actions takes nothing returns nothing call TriggerRegisterUnitEvent(gg_trg_ManaBurn,GetEnteringUnit(),EVENT_UNIT_DAMAGED)//gg_trg_ManaBurn имя трига endfunction
//=========================================================================== function InitTrig_addDamage takes nothing returns nothing set gg_trg_addDamage=CreateTrigger() call TriggerRegisterEnterRectSimple(gg_trg_addDamage,bj_mapInitialPlayableArea) call TriggerAddAction(gg_trg_addDamage,function Trig_addDamage_Actions) endfunction
Code
local group g=CreateGroup() local unit e call GroupEnumUnitsInRect(g,bj_mapInitialPlayableArea,null) loop set e=FirstOfGroup(g) exitwhen e==null call TriggerRegisterUnitEvent(gg_trg_ManaBurn,e,EVENT_UNIT_DAMAGED)////gg_trg_ManaBurn имя трига call GroupRemoveUnit(g,e) endloop call DestroyGroup(g) set g=null //=========================================================================== function InitTrig_init takes nothing returns nothing set gg_trg_init=CreateTrigger() call TriggerRegisterTimerEventSingle(gg_trg_init,0.01) call TriggerAddAction(gg_trg_init,function Trig_init_Actions) endfunction
Опишу скил, может так поймете... Юнит получает урон(не атакован, а именно получает урон) услови - полученный урон меньше Х действие- тому кто наносит урон наносится Х урона
О боже и все - ты бы сразу тогда обяснил за чем тебе это. Пффф Это элементарно!
Добавлено (11-03-2011, 15:26) --------------------------------------------- Вот весь триггер! Где #### - твое условие $$$$ - кол-во урона.
function Damaged takes nothing returns nothing local unit a = GetEventDamageSource() local real r = GetEventDamage() if (r < ####) then call UnitDamageTarget(GetTriggerUnit(), a, $$$$, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS) endif set a = null endfunction
function Trig_j_Actions takes nothing returns nothing local trigger t = CreateTrigger() call TriggerRegisterUnitEvent(t, GetTriggerUnit(), EVENT_UNIT_DAMAGED) call TriggerAddAction(t, function Damaged) endfunction
//=========================================================================== function InitTrig_j takes nothing returns nothing set gg_trg_j = CreateTrigger( ) call TriggerRegisterAnyUnitEventBJ( gg_trg_j, EVENT_PLAYER_UNIT_ATTACKED ) call TriggerAddAction( gg_trg_j, function Trig_j_Actions ) endfunction
Nic nie wiem bo mam chuj. редактирую посты! ВСЕ!
Сообщение отредактировал lawson - Пятница, 11 Марта 2011, 15:32:42
и можно установить в условии - если HERO получает 20 или меньше урона то нанести тому обратно 20 урона? Опиши как так зделать плиз, а то заипался думать
lawson, хорошо, проверкой на атакующего на скорую руку можно пренебречь. Но ты не подумал, что при каждой последующей атаке юниту будет наноситься все больше и больше урона (т. к. при каждой атаке создается новый триггер)?
Кароче создаешь триггер под именем j там потом конвертировать в текст и все удаляешь от туда и встявляешь мой триггер если он тебе подходит там только нет уловий на того кто атакует.
local trigger trig = GetTriggeringTrigger() call TriggerClearActions(trig) call DestroyTrigger(trig) set trig = null
Добавлено (11-03-2011, 15:45) --------------------------------------------- Нет, я имею в виду использовать хэш для того, чтобы прицепить к триггеру таймер (которого у тебя нет).
Добавлено (11-03-2011, 15:46) --------------------------------------------- Сделай ему чтоб было без ошибок.
Добавлено (11-03-2011, 15:47) --------------------------------------------- Тоесть когда юнита атакуют то создавать таймер а когда ему наноситься урон то вырубать таймер и удалять триггре?
function Damage_Timer takes nothing returns nothing local timer t = GetExpiredTimer() local integer id = GetHandleId(t) local trigger trig = LoadTriggerHandle(udg_Hash, id, 0) call FlushChildHashtable(udg_Hash, GetHandleId(trig)) call TriggerClearActions(trig) call DestroyTrigger(trig) call RemoveSavedHandle(udg_Hash, id, 0) call DestroyTimer(t) set trig = null set t = null endfunction
function Damaged takes nothing returns nothing local unit a = GetEventDamageSource() local trigger trig = GetTriggeringTrigger() local integer id = GetHandleId(trig) local timer t = LoadTimerHandle(udg_Hash, id, 0) if GetEventDamage() < #### and a == LoadUnitHandle(udg_Hash, id, 1) then call UnitDamageTarget(GetTriggerUnit(), a, $$$$, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_UNIVERSAL, WEAPON_TYPE_WHOKNOWS) call RemoveSavedHandle(udg_Hash, GetHandleId(t), 0) call DestroyTimer(t) call FlushChildHashtable(udg_Hash, id) call TriggerClearActions(trig) call DestroyTrigger(trig) endif set a = null set trig = null set t = null endfunction
function Trig_j_Actions takes nothing returns nothing local trigger trig = CreateTrigger() local timer t = CreateTimer() local integer id = GetHandleId(trig) call TriggerRegisterUnitEvent(trig, GetTriggerUnit(), EVENT_UNIT_DAMAGED) call TriggerAddAction(trig, function Damaged) call SaveAgentHandle(udg_Hash, GetHandleId(t), 0, trig) call SaveAgentHandle(udg_Hash, id, 0, t) call SaveAgentHandle(udg_Hash, id, 1, GetAttacking()) call TimerStart(t, .5, false, function Damage_Timer) set t = null set trig = null endfunction
//=========================================================================== function InitTrig_j takes nothing returns nothing local trigger trig = CreateTrigger) local integer i = 0 set udg_Hash = InitHashtable() loop call TriggerRegisterPlayerUnitEvent(trig, Player(i), EVENT_PLAYER_UNIT_ATTACKED, null) exitwhen i == 15 set i = i + 1 endloop call TriggerAddAction(trig, function Trig_j_Actions) set trig = null endfunction