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

很困惑,计时器模拟单位生命值变化事件问题

[复制链接]
发表于 2010-10-13 01:46:38 | 显示全部楼层 |阅读模式
整个函数是用周期为0.01秒的计时器运行的,如果加上特殊效果的话就很容易弹错。如果特殊效果在创建的时候就删除的话就不会弹错。请教原因。。。
function fenxue takes nothing returns nothing//血量少于十分之一加敏捷
local timer tm=GetExpiredTimer()
local unit me=LUtm(tm,"me")
local integer level=GetUnitAbilityLevel(me,'A00H')
if GetUnitLifePercent(me)<10 and LItm(tm,"t")==0 then
  call UnitAddAbility(me,'A003')
  call SaveEffect(udg_HT,GetHadnleId(me),StringHash("ef"),AddSpecialEffectTarget( "war3mapImported\\BloodBanish.mdx" ,me,"origin"))
  call SetUnitAbilityLevel(me,'A003',level)
  call SItm(tm,"t",1)
endif
if GetUnitLifePercent(me)>10 or GetUnitLifePercent(me)==10 and LItm(tm,"t")==1 then
  call DestroyEffect(LoadEffect(udg_HT,GetHadnleId(me),StringHash("ef")))
  call FlushChildHashtable(xxxxx)
  call UnitRemoveAbility(me,'A003')
  call SItm(tm,"t",0)
endif
set tm=null
set me=null
endfunction
发表于 2010-10-13 02:58:46 | 显示全部楼层
0.01秒创建个特效1秒100个特效.............   改用添加球体技能 或者动态注册事件 判断生命值
给你个被动魔法护盾玩玩1.20的..........

被动魔法盾.w3x

20 KB, 下载次数: 22

回复

使用道具 举报

 楼主| 发表于 2010-10-13 10:59:42 | 显示全部楼层
我的代码只要中间不用哈希表就没问题了,已经找到了解决办法了,效果用球体技能代替,这样就不需要在里面用哈希表了。
回复

使用道具 举报

发表于 2010-10-14 16:23:42 | 显示全部楼层
每次每个ME的HANDLE值都不一样,所以你不能这样设置PARENTKEY
回复

使用道具 举报

发表于 2010-10-14 17:09:56 | 显示全部楼层
特效创造一次,创造完立刻删除也可以看得到
小医仙的hashtable用法真的很匪夷所思...
回复

使用道具 举报

 楼主| 发表于 2010-10-15 10:39:33 | 显示全部楼层
回复楼上。。。有些特效创建出来就立即删除还是会播放一次,有些却不会例如强力击里面的小龙卷风,需要延时删除。。。。还厚回复楼上上,为什么每个ME的handle值不一样?ME是触发单位,指向同一个触发单位的handle是一样的,不是吗?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 01:59 , Processed in 0.044857 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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