function damage takes nothing returns nothing 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_BackStab,e,EVENT_UNIT_DAMAGED) call GroupRemoveUnit(g,e) endloop call DestroyGroup(g) set g=null endfunction function Actions takes nothing returns nothing local unit t=GetTriggerUnit() local unit c=GetEventDamageSource() local real a=57.296*Atan2(GetWidgetY(t)-GetWidgetY(c),GetWidgetX(t)-GetWidgetX(c))-GetUnitFacing(c) if a>= -150. and GetUnitAbilityLevel(c,'A000')>0. then call UnitDamageTarget(c,t,GetHeroAgi(c,true)*.25*GetUnitAbilityLevel(c,'A000'),true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKN OWS) call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Other\\Stampede\\StampedeMissileDeath.mdl",t,"chest")) endif set c=null set t=null endfunction //=========================================================================== function InitTrig_BackStab takes nothing returns nothing set gg_trg_BackStab=CreateTrigger() call TriggerAddAction(gg_trg_BackStab,function Actions) call TimerStart(CreateTimer(),.1,false,function damage) endfunction
на call UnitDamageTarget(c,t,GetHeroAgi(c,true)*0.25*GetUnitAbilityLevel(c,'A000'),true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_ TYPE_WHOKNOWS )
Добавлено (23-01-2011, 17:35) --------------------------------------------- Dreii, а в твоем коде конкретные ошибки: ну забыл пару скобок, пару запятых, пару 0...
Dreii, :facepalm: Сравнивай свое с моим. Я аж выделил различия: Твое: call UnitDamageTargetc,t,GetHeroAgic,true)*.25*GetUnitAbilityLevelc,'A000'),true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS ) Мое: call UnitDamageTarget(c,t,GetHeroAgi(c,true)*0.25*GetUnitAbilityLevel(c,'A000'),true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_ TYPE_WHOKNOWS )
Все равно) тогда call UnitDamageTarget(c,t,GetHeroAgi(c,true)*0.25*GetUnitAbilityLevel(c,'A000'),true,false,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS) У тебя не было 0 это раз) и у тебя в конце было написано WHOK NOWS
Ладно. Вылет происходит из-за зацикливания триггера. Смотрите сами:
1) Воин подходит и наносит урон в спину врагу. 2) Срабатывает триггер, воин-цель получает дополнительный урон. 3) Триггер срабатывает СНОВА! Ведь воин опять получил урон, правильно? 4) Смотрите пункт №2. ... 100500) Происходит вылет из-за бесконечных вызовов.
Если хотите сделать это рабочим, выключайте триггер перед нанесением урона и включайте сразу после. Вот и все.