找回密码
 点一下
查看: 1566|回复: 5

相同的技能不同的单位使用效果不同哇

[复制链接]
发表于 2010-5-22 21:29:14 | 显示全部楼层 |阅读模式
如题,为什么这样。我弄了个冲锋技能,把技能加给血法使用,能得到预期效果(就是移动的路径对了),但是加给守望者,她就不知道怎么的随便找个方向冲锋去了。
发表于 2010-5-22 21:47:23 | 显示全部楼层
代码代码呢
回复

使用道具 举报

发表于 2010-5-22 21:47:43 | 显示全部楼层
你放个地图看看吧
回复

使用道具 举报

发表于 2010-5-22 23:21:33 | 显示全部楼层
要先看看触发....
有可能是控制位移时的角度设置为某个特殊的值,比如说与施法者无关的单位所面向的角度+(-)随机(固定)实数。
回复

使用道具 举报

 楼主| 发表于 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
回复

使用道具 举报

发表于 2010-5-23 17:08:08 | 显示全部楼层
帮不上忙了......
我是J盲。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-24 01:58 , Processed in 0.081682 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表