|
楼主 |
发表于 2010-5-23 15:47:17
|
显示全部楼层
function chongfeng takes nothing returns nothing //技能函数
local timer tm=GetExpiredTimer()
local unit me=LoadUnitHandle(udg_HT,GetHandleId(tm),StringHash("fuck"))
local unit you=LoadUnitHandle(udg_HT,GetHandleId(tm),StringHash("shit"))
local integer n=LoadInteger(udg_HT,GetHandleId(tm),StringHash("N"))
local real t=LoadReal(udg_HT,GetHandleId(tm),StringHash("t"))
local real x = LoadReal(udg_HT,GetHandleId(tm),StringHash("targetx") )
local real y = LoadReal(udg_HT,GetHandleId(tm),StringHash("targety"))
local real x1 = LoadReal(udg_HT,GetHandleId(tm),StringHash("mex"))
local real y1= LoadReal(udg_HT,GetHandleId(tm),StringHash("mey"))
local real dx
local real dy
local integer k=3
local real dist=GetRandomReal(0,300)
local real angle=GetRandomReal(0,360)
local real x2
local real y2
local real C=(y1-y)/(x1-x) // 这个是斜率
local effect fx
local integer i=40
call SaveInteger(udg_HT,GetHandleId(tm),StringHash("k"),k)
call DisplayTimedTextToPlayer(Player(0),0,0,1,"func")
if n>0 then
if ModuloInteger(n,30)==0 then
call IssuePointOrder(me,"smart",x,y)
endif
set x1=GetUnitX(me)
set y1=GetUnitY(me)
if x-x1<0 then
set dx=-150*(Pow(t+0.01,2.5)-Pow(t,2.5))
else
set dx=150*(Pow(t+0.01,2.5)-Pow(t,2.5))
endif
set dy=C*dx //这个可以确保是直线,可不知道为什么有的英雄用这个技能方向会会错但依然是直线
if RAbsBJ(x-x1)<20 then
set n=0
loop
exitwhen i<0
set i=i-1
set dist=GetRandomReal(300,300)
set angle=GetRandomReal(0,360)
set x1 = GetUnitX(me) + dist * Cos(angle * bj_DEGTORAD)
set y1 = GetUnitY(me) + dist * Sin(angle * bj_DEGTORAD)
set fx= AddSpecialEffect("Units\\\\Demon\\\\Infernal\\\\InfernalBirth.mdl",x1,y1)
call DestroyEffect(fx)
endloop
call SetUnitPathing(me,true)
call TimerStart(tm,1,true,function spell)
set you=null
set me=null
endif
call SetUnitX(me,x1+dx)
call SetUnitY(me,y1+dy)
set n=n-1
call SaveInteger(udg_HT,GetHandleId(tm),StringHash("N"),n)
set t=t+0.01
call SaveReal(udg_HT,GetHandleId(tm),StringHash("t"),t)
else
set you=null
set me=null
call FlushParentHashtable(udg_HT)
call DestroyTimer(tm)
endif
endfunction |
|