怎么才能打断YD自带的万能旋转函数?
魔兽地图编辑器吧
全部回复
仅看楼主
level 11
神主ZUN神 楼主
求高人解答。
2013年12月08日 10点12分 1
吧务
level 15
自己写个
2013年12月08日 10点12分 2
应该有停止的办法把。。。
2013年12月08日 10点12分
或暂停ydwe内部的计时器
2013年12月08日 10点12分
回复 金皮蛋:。。。那么我问一下检测不存在的单位死亡返回的值是假值吗?
2013年12月08日 10点12分
level 11
神主ZUN神 楼主
没有高人吗?
2013年12月08日 10点12分 3
level 11
神主ZUN神 楼主
2013年12月08日 10点12分 4
level 11
神主ZUN神 楼主
没人理吗?
2013年12月08日 10点12分 5
level 14
打死?
2013年12月08日 10点12分 6
level 12
自己写
2013年12月08日 10点12分 7
吧务
level 15
检测不存在的单位死亡返回的值:
第一种返回 假
第二种返回真
2013年12月08日 10点12分 9
吧务
level 15
YD的环绕函数
自己复制到地图自定义代码区里再改
library Around requires YDWEBase
//library TP1 requires YDWEBase
globals
private constant timer AROUND_TIM = CreateTimer()
private constant real AROUND_INTER = 0.01
endglobals
private struct Data
static thistype array Structs
static integer Total = 0
unit caster = null
unit obj = null
real dur = 0.
real inter = 0.
real each = 0.
real rate = 0.
real dis = 0.
real rise = 0.
real angle = 0.
real radius = 0.
real height = 0
endstruct
private function spin takes nothing returns nothing
local Data d = 0
local real x = 0.
local real y = 0.
local integer inst = 0
loop
exitwhen (inst == Data.Total)
set d = Data.Structs[inst]
if ( d.dur > 0 ) and (GetUnitState(d.caster, UNIT_STATE_LIFE)>0) and (GetUnitState(d.obj, UNIT_STATE_LIFE)>0) then
set d.each = d.each + AROUND_INTER
if ( d.each >= d.inter ) then
set d.angle = d.angle + d.rate
set d.radius = d.radius + d.dis
set d.height = d.height + d.rise
set x = GetUnitX(d.caster) + d.radius*Cos(d.angle)
set y = GetUnitY(d.caster) + d.radius*Sin(d.angle)
set x = YDWECoordinateX(x)
set y = YDWECoordinateY(y)
call SetUnitX(d.obj, x)
call SetUnitY(d.obj, y)
call SetUnitFlyHeight(d.obj, d.height, 0.)
set d.each = 0.
endif
set d.dur = d.dur - AROUND_INTER
else
set bj_lastAbilityTargetUnit=d.caster
call YDWESyStemAbilityCastingOverTriggerAction(d.obj,10)
set d.caster = null
set d.obj = null
call d.destroy()
set Data.Total = Data.Total - 1
set Data.Structs[inst] = Data.Structs[Data.Total]
set inst = inst - 1
endif
set inst = inst + 1
endloop
if ( Data.Total == 0 ) then
call PauseTimer(AROUND_TIM)
endif
endfunction
function YDWEAroundSystem takes unit satellite, unit star, real angleRate, real displacement, real riseRate,real timeout, real interval returns nothing
local Data d = Data.create()
local real x1 = GetUnitX(star)
local real y1 = GetUnitY(star)
local real x2 = GetUnitX(satellite)
local real y2 = GetUnitY(satellite)
set d.caster = star
set d.obj = satellite
set d.dur = timeout
set d.inter = interval
set d.rate = angleRate*(3.14159/180.)
set d.dis = displacement
set d.rise = riseRate
set d.angle = Atan2(y2-y1,x2-x1)
set d.radius = SquareRoot((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))
set d.height = GetUnitFlyHeight(d.obj)
set Data.Structs[Data.Total] = integer(d)
set Data.Total = Data.Total + 1
call YDWESaveIntegerByString(I2S(YDWEH2I(satellite)),"abilevent",10)
if ( Data.Total - 1 == 0 ) then
call TimerStart(AROUND_TIM, AROUND_INTER, true, function spin)
endif
endfunction
endlibrary
2013年12月08日 11点12分 10
level 13
杀了被绕的单位就停了
2013年12月08日 11点12分 12
如果目标单位死了呢?是围绕的目标单位。
2013年12月08日 12点12分
回复 神主ZUN神 :一个意思,死了就停
2013年12月08日 12点12分
level 7
自己写环绕
2013年12月08日 12点12分 13
1