|
这样的,当指定单位生命值降低为或小于原来的50%,动作为增加技能‘战鼓’给触发单位,我用J写的,可以临时创建一个触发,触发事件是当触发单位(这里的触发单位就是那个加了技能的单位)生命大于50%的时候,动作为删除技能‘战鼓’对触发单位(这个触发单位是临时触发的触发单位),然后破坏掉这个临时触发。
这样运行游戏的时候自己把单位砍掉一半血,单位就立刻有了‘战鼓’技能,然后去补血,生命大于50%的时候技能就被删除掉了,这样看似目的已经达到了,但是一波怪刷了下来,我的几个单位打着打着打完了,许多都半血一下,都有了‘战鼓’这个技能,但是回到血池补血的时候有部分单位仍然拥有‘战鼓’技能,多番尝试均找不到原因,望jass高手教教小弟
[ 此帖被frozenleave在2010-06-21 23:16重新编辑 ]
评价结果 共有0
头晕晕
本周帖子评价之最 更多
最精彩:amai加入的地图 加入4个新种族 作者:myjian
最感动:请问谁有2010世界杯专用球普天同庆或者其他足球模型? 作者:秋风落雁
最愤怒:韩国传统节日端午祭到了 作者:alexries
22 板凳 发表于: 昨天 23:26 ┊ 编辑只看该作者 ┊ 小 中 大
function knightattackdown takes nothing returns boolean
call UnitRemoveAbility(GetTriggerUnit(),'Aakb')//删除技能‘战鼓’
call DestroyTrigger(GetTriggeringTrigger())//破坏临时的触发器
return false
endfunction
function knightattackup takes nothing returns boolean
local trigger trg=CreateTrigger()这里新创建触发,就是每个单位血少于50%的时候就加‘战鼓’技能,并且建立触发
call TriggerRegisterUnitLifeEvent(trg,GetTriggerUnit(), GREATER_THAN,GetUnitState(GetTriggerUnit(),UNIT_STATE_MAX_LIFE)*0.5)//为触发建立了生命大于50%的事件。
call TriggerAddCondition(trg,Condition(function knightattackdown))//事件的动作(条件)
call UnitAddAbility(GetTriggerUnit(),'Aakb')
return false
endfunction
function xiuziyin takes nothing returns boolean//这个是某个技能引发的触发,只运行一遍就删除了这个触发
local unit me=GetTriggerUnit()
local trigger trg=GetTriggeringTrigger()
local unit knight
local integer i=0
local real life
local trigger trglife
loop
exitwhen i>5
set knight =CreateUnit(GetOwningPlayer(me),'hkni',GetUnitX(me),GetUnitY(me),0)
set trglife=CreateTrigger()
call TriggerRegisterUnitLifeEvent(trglife,knight,LESS_THAN_OR_EQUAL, GetUnitState(knight,UNIT_STATE_MAX_LIFE)*0.5)//*这里给刚刚创建的骑士注册生命值小于或等于50%的事件。
call TriggerAddCondition(trglife,Condition(function knightattackup))//这里是触发动作,加技能‘战鼓’
set i=i+1
endloop
set me=null
set knight=null
call DestroyTrigger(trg)
set trg=null
return false
endfunction |
|