offline
Опыт:
16
Активность:
|
Не работает событие
Господа, выскажите свои соображения. Я наткнулся на такую проблему. Я сменил в триггере событие:
Код:
function Attack_mana_burn_Conditions takes nothing returns boolean
return (GetRandomInt(1,100)<=15) and GetUnitAbilityLevel(GetAttacker(),'A000')>0 and IsUnitType(GetTriggerUnit(),UNIT_TYPE_STRUCTURE)!=true
endfunction
function Attack_mana_burn_Condition takes nothing returns boolean
return GetUnitAbilityLevel(GetEventDamageSource(),'A000')>0
endfunction
function Attack_mana_burn_Action takes nothing returns nothing
local unit e = GetEventDamageSource()
local unit w = GetTriggerUnit()
local integer i = GetUnitAbilityLevel(e,'A000')
local unit u = CreateUnit(GetOwningPlayer(e),'h000',GetUnitX(e),GetUnitY(e),bj_UNIT_FACING)
call UnitAddAbility(u,'A001')
call SetUnitAbilityLevel(u,'A001',i)
call IssueTargetOrder(u,"manaburn",w)
call UnitApplyTimedLife(u,'BTLF',3)
set e = null
set w = null
set u = null
call DestroyTrigger(GetTriggeringTrigger())
endfunction
function Attack_mana_burn_Actions takes nothing returns nothing
local trigger t = CreateTrigger()
local unit u = GetTriggerUnit()
local unit y = GetAttacker()
local boolexpr c = Condition(function Attack_mana_burn_Condition)
call TriggerRegisterUnitEvent(t,u,EVENT_UNIT_DAMAGED)
call TriggerAddCondition(t,c)
call TriggerAddAction(t,function Attack_mana_burn_Action)
call TriggerSleepAction(1)
call DestroyTrigger(t)
call DestroyBoolExpr(c)
set u = null
set y = null
set c = null
endfunction
//===========================================================================
function InitTrig_Attack_mana_burn takes nothing returns nothing
set gg_trg_Attack_mana_burn = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(gg_trg_Attack_mana_burn,EVENT_PLAYER_UNIT_ATTACKED )
call TriggerAddCondition(gg_trg_Attack_mana_burn,Condition(function Attack_mana_burn_Conditions))
call TriggerAddAction(gg_trg_Attack_mana_burn,function Attack_mana_burn_Actions)
на такое событие:
Код:
function Attack_mana_burn_Conditions takes nothing returns boolean
return GetUnitAbilityLevel(GetAttacker(),'A000')>0 and IsUnitType(GetTriggerUnit(),UNIT_TYPE_STRUCTURE)!=true//(GetRandomInt(1,100)<=15) and
endfunction
function Attack_mana_burn_Condition takes nothing returns boolean
return GetUnitAbilityLevel(GetEventDamageSource(),'A000')>0
endfunction
function Attack_mana_burn_Action takes nothing returns nothing
local unit e = GetEventDamageSource()
local unit w = GetTriggerUnit()
local integer i = GetUnitAbilityLevel(e,'A000')
local unit u = CreateUnit(GetOwningPlayer(e),'h000',GetUnitX(e),GetUnitY(e),bj_UNIT_FACING)
call UnitAddAbility(u,'A001')
call SetUnitAbilityLevel(u,'A001',i)
call IssueTargetOrder(u,"manaburn",w)
call UnitApplyTimedLife(u,'BTLF',3)
set e = null
set w = null
set u = null
call DestroyTrigger(GetTriggeringTrigger())
endfunction
function Attack_mana_burn_Actions takes nothing returns nothing
local trigger t = CreateTrigger()
local unit u = GetTriggerUnit()
local unit y = GetAttacker()
local boolexpr c = Condition(function Attack_mana_burn_Condition)
call TriggerRegisterUnitEvent(t,u,EVENT_UNIT_DAMAGED)
call TriggerAddCondition(t,c)
call TriggerAddAction(t,function Attack_mana_burn_Action)
call TriggerSleepAction(1)
call DestroyTrigger(t)
call DestroyBoolExpr(c)
set u = null
set y = null
set c = null
endfunction
//===========================================================================
function InitTrig_Attack_mana_burn takes nothing returns nothing
local trigger t = CreateTrigger()
local integer i = 0
loop
exitwhen i > 9
call TriggerRegisterPlayerUnitEvent(t,Player(i),EVENT_PLAYER_UNIT_ATTACKED,null)
set i = i + 1
endloop
call TriggerAddCondition(t,Condition(function Attack_mana_burn_Conditions))
call TriggerAddAction(t,function Attack_mana_burn_Actions)
endfunction
После теста на карте событие с циклом не работает. Интересно еще то, что я когда скопировал этот триг с событием цикла в чистую пустую карту, он там работает. Есть какие нибудь соображения?
Отредактировано Maniac, 08.12.2012 в 20:22.
|