技能带视频-闪电漩涡。话说以前限1时必放,开3后反而没人放
永恒的灌水帝吧
全部回复
仅看楼主
level 15
najizhimo 楼主
这个是无聊翻起皮蛋的作品,就也想做个电系技能,通宵了一个晚上才做了一个[拍砖],呀叻呀叻。
◆技能名称: 闪电漩涡
◆技能介绍: 在目标点形成一个半径300的闪电漩涡,闪电漩涡可以麻痹范围内的单位,降低其50%的攻击/移动速度。而且闪电漩涡会以每秒500的速度吸引600范围内的所有敌对单位。当单位被拉扯到漩涡中心时,将被漩涡抛出去并受到可连锁3次,100伤害且不衰减的闪电链打击。当单位从空中落地时,将再受到一次闪电链的打击。(该漩涡可以被玩家操控)
◆技能预览: 看视频
◆技能来源: 填坑属性
◆UI版本: 1.24以上随意



2012年03月20日 04点03分 1
level 15
najizhimo 楼主

2楼
地图在这里wow8.org/bbs/thread-176980-1-1.html
2012年03月20日 04点03分 2
level 15
najizhimo 楼主
library Vortex initializer Init
globals
hashtable HT=null
real MAX_X=1244
real MIN_X=-1255
real MAX_Y=1007
real MIN_Y=-1525
endglobals
function Rose takes real a,real n,real xita,real P returns real
return a*(Sin((n*xita-P)*bj_DEGTORAD))
endfunction
function Distance takes real x1,real y1,real x2,real y2 returns real
return SquareRoot((y2-y1)*(y2-y1)+(x2-x1)*(x2-x1))
endfunction
function Angle takes real x1,real y1,real x2,real y2 returns real
local real r
set r=bj_RADTODEG*Atan2(y2-y1,x2-x1)
if r<0 then
return 360+r
endif
return r
endfunction
function VortexA4 takes nothing returns nothing
local timer t=GetExpiredTimer()
local integer pk=GetHandleId(t)
local unit u=LoadUnitHandle(HT,pk,1)
local real f=LoadReal(HT,pk,2)
local real s=LoadReal(HT,pk,3)
local real Time=LoadReal(HT,pk,4)
local real a=8*400/(0.5*0.5)
local real vx=s/(0.5*50)
local real vy=.5*a*0.5
local unit u2
set Time=Time+.02
call SaveReal(HT,pk,4,Time)
set f=3+f
call SaveReal(HT,pk,2,f)
if GetUnitX(u)>MAX_X or GetUnitX(u)<MIN_X or GetUnitY(u)>MAX_Y or GetUnitY(u)<MIN_Y then
else
call SetUnitX(u,GetUnitX(u)+Cos(f*bj_DEGTORAD)*vx)
call SetUnitY(u,GetUnitY(u)+Sin(f*bj_DEGTORAD)*vx)
endif
call SetUnitFlyHeight(u,GetUnitDefaultFlyHeight(u)+vy*Time-.5*a*Time*Time,0)
if Time>=0.5 then
call SetUnitFlyHeight(u,GetUnitDefaultFlyHeight(u),0)
call SaveBoolean(HT,GetHandleId(u),65535,false)
set u2=CreateUnit(GetOwningPlayer(LoadUnitHandle(HT,pk,5)),'u002',GetUnitX(LoadUnitHandle(HT,pk,5)),GetUnitY(LoadUnitHandle(HT,pk,5)),0)
call UnitApplyTimedLife(u2,'BTLF',0.5)
call IssueTargetOrder(u2,"chainlightning",u)
call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl",GetUnitX(u),GetUnitY(u)))
call FlushChildHashtable(HT,pk)
call DestroyTimer(t)
endif
set t=null
set u=null
set u2=null
endfunction
function VortexA3 takes unit u1,unit u2 returns nothing
local timer t=CreateTimer()
local integer pk=GetHandleId(t)
local real x=GetUnitX(u1)
local real y=GetUnitY(u1)
local unit u=CreateUnit(GetOwningPlayer(u1),'u002',x,y,0)
call UnitApplyTimedLife(u,'BTLF',0.5)
call IssueTargetOrder(u,"chainlightning",u2)
if UnitAddAbility(u2,'Arav') then
call UnitRemoveAbility(u2,'Arav')
endif
call SetUnitX(u2,x)
call SetUnitY(u2,y)
call SaveBoolean(HT,GetHandleId(u2),65535,true)
call SaveUnitHandle(HT,pk,1,u2)
call SaveReal(HT,pk,2,GetRandomReal(0,359))
call SaveReal(HT,pk,3,600)
call SaveUnitHandle(HT,pk,5,u1)
call TimerStart(t,0.02,true,function VortexA4)

2012年03月20日 04点03分 3
level 15
najizhimo 楼主
set t=null
endfunction
function VortexA2 takes nothing returns nothing
local timer t=GetExpiredTimer()
local integer pk=GetHandleId(t)
local real x=GetUnitX(LoadUnitHandle(HT,pk,0))
local real y=GetUnitY(LoadUnitHandle(HT,pk,0))
local real r=0
local real a=LoadReal(HT,pk,200)
local real d
local real l
local integer i=LoadInteger(HT,pk,100)
local boolean b
local group g=CreateGroup()
local unit u
local unit u2
if IsUnitType(LoadUnitHandle(HT,pk,0),UNIT_TYPE_DEAD) then
loop
set r=r+1
call DestroyLightning(LoadLightningHandle(HT,pk,R2I(r)))
call RemoveUnit(LoadUnitHandle(HT,pk,100+R2I(r)))
exitwhen r>=36
endloop
call FlushChildHashtable(HT,pk)
call DestroyTimer(t)
else
set a=a+7
call SaveReal(HT,pk,200,a)
set i=i+1
call SaveInteger(HT,pk,100,i)
if i-(i/10)*10==0 then
set b=true
else
set b=false
endif
call GroupEnumUnitsInRange(g,x,y,600,null)
loop
set u=FirstOfGroup(g)
exitwhen u==null
call GroupRemoveUnit(g,u)
if IsUnitType(u,UNIT_TYPE_DEAD)==false and IsUnitEnemy(u,GetOwningPlayer(LoadUnitHandle(HT,pk,0))) and LoadBoolean(HT,GetHandleId(u),65535)==false and GetUnitMoveSpeed(u)>0 then
set u2=LoadUnitHandle(HT,GetHandleId(u),65536)
if u2==LoadUnitHandle(HT,pk,0) then
set d=Distance(GetUnitX(u),GetUnitY(u),x,y)
set l=3+Angle(x,y,GetUnitX(u),GetUnitY(u))
if d<=20 then
call VortexA3(LoadUnitHandle(HT,pk,0),u)
else
if b then
call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\ForkedLightning\\ForkedLightningTarget.mdl",GetUnitX(u),GetUnitY(u)))
endif
call SetUnitX(u,x+(d-10)*Cos(l*bj_DEGTORAD))
call SetUnitY(u,y+(d-10)*Sin(l*bj_DEGTORAD))
endif
else
if u2==null then
call SaveUnitHandle(HT,GetHandleId(u),65536,LoadUnitHandle(HT,pk,0))
set d=Distance(GetUnitX(u),GetUnitY(u),x,y)
set l=3+Angle(x,y,GetUnitX(u),GetUnitY(u))
if d<=20 then
call VortexA3(LoadUnitHandle(HT,pk,0),u)
else
if b then
call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\ForkedLightning\\ForkedLightningTarget.mdl",GetUnitX(u),GetUnitY(u)))
endif

2012年03月20日 04点03分 4
level 15
najizhimo 楼主
call SetUnitX(u,x+(d-10)*Cos(l*bj_DEGTORAD))
call SetUnitY(u,y+(d-10)*Sin(l*bj_DEGTORAD))
endif
elseif IsUnitType(u2,UNIT_TYPE_DEAD)==false then
if Distance(GetUnitX(u),GetUnitY(u),x,y)<Distance(GetUnitX(u),GetUnitY(u),GetUnitX(u2),GetUnitY(u2)) then
call SaveUnitHandle(HT,GetHandleId(u),65536,LoadUnitHandle(HT,pk,0))
set d=Distance(GetUnitX(u),GetUnitY(u),x,y)
set l=3+Angle(x,y,GetUnitX(u),GetUnitY(u))
if d<=20 then
call VortexA3(LoadUnitHandle(HT,pk,0),u)
else
if b then
call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\ForkedLightning\\ForkedLightningTarget.mdl",GetUnitX(u),GetUnitY(u)))
endif
call SetUnitX(u,x+(d-10)*Cos(l*bj_DEGTORAD))
call SetUnitY(u,y+(d-10)*Sin(l*bj_DEGTORAD))
endif
endif
endif
endif
endif
endloop
loop
set r=r+1
call MoveLightningEx(LoadLightningHandle(HT,pk,R2I(r)),false,x+100*Cos((a+30*r)*bj_DEGTORAD),y+100*Sin((a+30*r)*bj_DEGTORAD),0,x+200*Cos((a+60+30*r)*bj_DEGTORAD),y+200*Sin((a+60+30*r)*bj_DEGTORAD),100)
call MoveLightningEx(LoadLightningHandle(HT,pk,12+R2I(r)),false,x+200*Cos((a+60+30*r)*bj_DEGTORAD),y+200*Sin((a+60+30*r)*bj_DEGTORAD),100,x+300*Cos((a+120+30*r)*bj_DEGTORAD),y+300*Sin((a+120+30*r)*bj_DEGTORAD),200)
call MoveLightningEx(LoadLightningHandle(HT,pk,24+R2I(r)),false,x+100*Cos((a+30*r)*bj_DEGTORAD),y+100*Sin((a+30*r)*bj_DEGTORAD),0,x,y,150)
exitwhen r>=12
endloop
endif
call DestroyGroup(g)
set u=null
set t=null
set g=null
set u2=null
endfunction
function VortexA takes nothing returns nothing
local timer t
local integer pk
local real x
local real y
local real r
local unit u
if GetUnitTypeId(GetSummonedUnit())=='u000' then
set t=CreateTimer()
set pk=GetHandleId(t)
set x=GetUnitX(GetSummonedUnit())
set y=GetUnitY(GetSummonedUnit())
call SaveUnitHandle(HT,pk,0,GetSummonedUnit())
set r=0
loop
set r=r+1
call SaveLightningHandle(HT,pk,R2I(r),AddLightningEx("CHIM",false,x+100*Cos(30*r*bj_DEGTORAD),y+100*Sin(30*r*bj_DEGTORAD),0,x+200*Cos((60+30*r)*bj_DEGTORAD),y+200*Sin((60+30*r)*bj_DEGTORAD),100))
call SaveLightningHandle(HT,pk,12+R2I(r),AddLightningEx("CLPB",false,x+200*Cos((60+30*r)*bj_DEGTORAD),y+200*Sin((60+30*r)*bj_DEGTORAD),100,x+300*Cos((120+30*r)*bj_DEGTORAD),y+300*Sin((120+30*r)*bj_DEGTORAD),200))
call SaveLightningHandle(HT,pk,24+R2I(r),AddLightningEx("FORK",false,x+100*Cos(30*r*bj_DEGTORAD),y+100*Sin(30*r*bj_DEGTORAD),0,x,y,150))
exitwhen r>=12
endloop
set r=0
loop
set r=r+1
call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Other\\ForkedLightning\\ForkedLightningTarget.mdl",x+Rose(300,4,3*r,90)*Cos(3*r*bj_DEGTORAD),y+Rose(300,4,3*r,90)*Sin(3*r*bj_DEGTORAD)))
exitwhen r>=120
endloop
set r=0
loop
set r=r+1
set u=CreateUnit(GetTriggerPlayer(),'u001',x+300*Cos(10*r*bj_DEGTORAD),y+300*Sin(10*r*bj_DEGTORAD),0)
call UnitApplyTimedLife(u,'BTLF',0.7)
call IssueImmediateOrder(u,"fanofknives")
exitwhen r>=36
endloop
call TimerStart(t,0.02,true,function VortexA2)
set u=null
set t=null
endif
endfunction
private function Init takes nothing returns nothing
local trigger t=CreateTrigger()
call TriggerRegisterPlayerUnitEvent(t,Player(0),EVENT_PLAYER_UNIT_SUMMON,null)
call TriggerAddCondition(t,Condition(function VortexA))
set t=null
call FlushParentHashtable(HT)
set HT=InitHashtable()
endfunction
endlibrary
2012年03月20日 04点03分 5
level 15
najizhimo 楼主
顺便一提,这个技能本身就设定为不能吸引0移速的单位,不协调是一个原因,也避免了和根须缠绕、捕网等冲突,也防止了灵肉分离现象。扔空中单位没问题,有个最低高度保底。
2012年03月20日 04点03分 6
level 4
下载还要影币
2012年08月06日 07点08分 7
下尼玛,吧内网盘,J演示
2012年08月06日 07点08分
level 9
up
2014年08月08日 23点08分 10
level 1
话说背景音乐叫什么名字,挺好听的
2014年08月20日 05点08分 11
2014年08月20日 05点08分
回复 864370567 :神様のおくりもの
2014年08月20日 12点08分
回复 najizhimo :谢谢
2014年08月20日 12点08分
level 10
真可怕
2014年08月24日 06点08分 12
1