找回密码
 点一下
查看: 1114|回复: 6

求教:这里面哪里没有排泄?

[复制链接]
发表于 2011-4-3 12:39:01 | 显示全部楼层 |阅读模式
用YD检测....泄漏了一个点和一个特效...
但是自己看来看去.觉得都已经排泄了....想不明白..所以发上来求教.....
( 话说J区发帖求助了几次...发现石沉大海... 所以就发到这里了.
不过这个和J的关系不算大吧....)
[jass]
    local effect u
    local integer i = 1
    local location d = GetUnitLoc(GetTriggerUnit())
    local location d2 = PolarProjectionBJ(d,300,10)
    local unit u1
    set u1 = CreateUnitAtLoc( GetOwningPlayer(GetTriggerUnit()), 'h000', d, 0 )
    call IssueImmediateOrder( u1, "stomp" )
    call UnitApplyTimedLife(u1,'BHwe',3)
    loop
    exitwhen i > 36
    set d2 = PolarProjectionBJ(d,300,10*i)
    call DestroyEffect( AddSpecialEffectLoc("Abilities\\Weapons\\BallsOfFireMissile\\BallsOfFireMissile.mdl", d2 ))
    set i = i + 1
    endloop
    call TriggerSleepAction(1)
    call IssueTargetOrder( u1, "slow", GetTriggerUnit() )
    set u = AddSpecialEffectTargetUnitBJ( "left hand", gg_unit_Hpal_0000, "war3mapImported\\mac1.mdx" )
    call UnitAddAbility(gg_unit_Hpal_0000,'AHbh')
    call TriggerSleepAction(15)
    call UnitRemoveAbility(gg_unit_Hpal_0000,'AHbh')
    call DestroyEffect(u)
    call RemoveLocation(d)
    call RemoveLocation(d2)
    set d = null
    set d2 = null
    set u =null
    set u1 = null
[/jass]
 楼主| 发表于 2011-4-3 23:18:11 | 显示全部楼层
擦汗....没有大神在吗...自己支持一下.
回复

使用道具 举报

发表于 2011-4-4 06:36:40 | 显示全部楼层
11行    set d2 = PolarProjectionBJ(d,300,10*i)
回复

使用道具 举报

发表于 2011-4-4 06:58:07 | 显示全部楼层
set d2 = PolarProjectionBJ(d,300,10*i)

call DestroyEffect( AddSpecialEffectLoc("Abilities\\\\Weapons\\\\BallsOfFireMissile\\\\BallsOfFireMissile.mdl", d2 ))

d2重复设置了,把RemoveLocation放在set上面,
然后特效,你这么创建特效 ....声明特效变量有啥意义
回复

使用道具 举报

 楼主| 发表于 2011-4-4 12:29:00 | 显示全部楼层
引用第3楼暧昧⒊秒于2011-04-04 06:58发表的 :
set d2 = PolarProjectionBJ(d,300,10*i)

call DestroyEffect( AddSpecialEffectLoc("Abilities\\\\Weapons\\\\BallsOfFireMissile\\\\BallsOfFireMissile.mdl", d2 ))

d2重复设置了,把RemoveLocation放在set上面,
.......

这是是个极坐标...要让这个点移动....36次..所以只能放到loop里面....一开始的那个地方的声明确实是无意义...
RemoveLocation 应该放在 set 下面? 抱歉.你最后这句.我没有看懂...

----------------------我去试了一下.
把set放在RemoveLocation上面.就显示泄漏为0.
反之.会有一个特效泄漏.但是点却没有....好神奇.
回复

使用道具 举报

发表于 2011-4-4 20:56:44 | 显示全部楼层

回 4楼(4133789) 的帖子

PolarProjectionBJ这个函数会创建点,用完记得 RemoveLocation 。
YD说你只泄漏一个真太温柔了。
[jass]
loop
exitwhen i > 36
set d2 = PolarProjectionBJ(d,300,10*i)
call DestroyEffect( AddSpecialEffectLoc("Abilities\\\\Weapons\\\\BallsOfFireMissile\\\\BallsOfFireMissile.mdl", d2 ))
set i = i + 1
endloop
[/jass]
这里创建了35个点,加上第四行的
[jass]local location d2 = PolarProjectionBJ(d,300,10)[/jass]
一共36个点,只Remove了loop中PolarProjectionBJ创建的最后一个点。
YD真的很温柔。
回复

使用道具 举报

 楼主| 发表于 2011-4-5 08:54:16 | 显示全部楼层

Re:回 4楼(4133789) 的帖子

引用第5楼cuathc于2011-04-04 20:56发表的 回 4楼(4133789) 的帖子 :
PolarProjectionBJ这个函数会创建点,用完记得 RemoveLocation 。
YD说你只泄漏一个真太温柔了。
[jass]
loop
exitwhen i > 36
.......

擦汗.原来是这样....
大致明白.不过话说好恐怕啊....我以前对点的理解...
看来是误解了.....擦汗.
谢谢.
另外想问问....就是特效的局部变量的使用和清除...在JASS中有没有什么特别之处?
我用.一般的局部变量都是先 删除 然后set为空.这样YD上也显示为没有泄漏.
但是特效局部变量 却要先set为空.然后再删除.YD才会显示不泄漏...否则就是泄漏.

YD太温柔.
有时还是要来GA的众神殿求虐才行啊.....
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-4 07:14 , Processed in 0.038309 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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