Я здесь впервые , но не могли бы вы мне помочь.
В кратце :
Каст юнит пускает снаряд(дамми юнита) на вражеского юнита , он получает урон , наносится эффект , и следующее что должно быть , он должен отлетать , но вместо этого он летит правельно , но не останавливается и летит за карту !
помогите пожалуйста , заранее благодарен.
Вот код :
function Trig_FirebollTwo_Conditions takes nothing returns boolean
return GetSpellAbilityId()=='A002'
endfunction
function move_jerx takes nothing returns nothing
local timer t=GetExpiredTimer()
local integer h=GetHandleId(t)
local real a=LoadReal(udg_h,h,1)
local unit c=LoadUnitHandle(udg_h,h,2)
local integer i=LoadInteger(udg_h,h,3)+1
if(i<10)then
call SetUnitX(c,GetUnitX(c)+25.*Cos(a))
call SetUnitY(c,GetUnitY(c)+25.*Sin(a))
elseif(i>9 and i<16)then
call SetUnitX(c,GetUnitX(c)+15.*Cos(a))
call SetUnitY(c,GetUnitY(c)+15.*Sin(a))
elseif(i>15 and i<19)then
call SetUnitX(c,GetUnitX(c)+10.*Cos(a))
call SetUnitY(c,GetUnitY(c)+10.*Sin(a))
elseif(i>18 and i<21)then
call SetUnitX(c,GetUnitX(c)+5.*Cos(a))
call SetUnitY(c,GetUnitY(c)+5.*Sin(a))
endif
if(i==21)then
call PauseTimer(t)
call FlushChildHashtable(udg_h,h)
call DestroyTimer(t)
else
call SaveInteger(udg_h,GetHandleId(t),1,i)
endif
set t=null
set c=null
endfunction
function MoveTwo takes nothing returns nothing
local timer t=GetExpiredTimer()
local integer h=GetHandleId(t)
local unit u=LoadUnitHandle(udg_h,h,1)
local unit c=LoadUnitHandle(udg_h,h,2)
local real x2=GetUnitX(c)
local real y2=GetUnitY(c)
local unit d=LoadUnitHandle(udg_h,h,3)
local real x=GetUnitX(d)
local real y=GetUnitY(d)
local real a=LoadReal(udg_h,h,4)
call SetUnitX(d,x+20.*Cos(a))
call SetUnitY(d,y+20.*Sin(a))
if(((y2-y)*(y2-y)+(x2-x)*(x2-x))<=14400)then
call PauseTimer(t)
call FlushChildHashtable(udg_h,h)
call DestroyTimer(t)
call RemoveUnit(d)
call UnitDamageTarget(u,c,GetUnitAbilityLevel(u,'A002')*70.,true,false,ATTACK_TYPE_CHAOS,DAMAGE_TYPE_NORMAL,null)
call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Other\\Incinerate\\FireLordDeathExplode.mdl",c,"body"))
set t=CreateTimer()
set h=GetHandleId(t)
call SaveReal(udg_h,h,1,a)
call SaveUnitHandle(udg_h,h,2,c)
call SaveInteger(udg_h,h,3,0)
call TimerStart(t,0.03,true,function move_jerx)
endif
set u=null
set c=null
set d=null
set t=null
endfunction
function Trig_FirebollTwo_Actions takes nothing returns nothing
local timer t=CreateTimer()
local integer h=GetHandleId(t)
local unit u=GetTriggerUnit()
local real x=GetUnitX(u)
local real y=GetUnitY(u)
local unit c=GetSpellTargetUnit()
local real x2=GetUnitX(c)
local real y2=GetUnitY(c)
local real a=Atan2(y2-GetUnitY(u),x2-GetUnitX(u))
local unit d=CreateUnit(GetOwningPlayer(u),'n000',x,y,a*57.295779513)
call SetUnitX(d,x+20.*Cos(a))
call SetUnitY(d,y+20.*Sin(a))
call SaveUnitHandle(udg_h,h,1,u)
call SaveUnitHandle(udg_h,h,2,c)
call SaveUnitHandle(udg_h,h,3,d)
call SaveReal(udg_h,h,4,a)
call TimerStart(t,0.03,true,function MoveTwo)
set t=null
set u=null
set c=null
set d=null
endfunction
function InitTrig_FirebollTwo takes nothing returns nothing
local trigger trg=CreateTrigger()
set udg_h=InitHashtable()
call TriggerRegisterAnyUnitEventBJ(trg,EVENT_PLAYER_UNIT_SPELL_EFFECT)
call TriggerAddCondition(trg,Condition(function Trig_FirebollTwo_Conditions))
call TriggerAddAction(trg,function Trig_FirebollTwo_Actions)
set trg=null
endfunction