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

来看看为什么加上技能让后减掉技能,有时候减不掉啊

[复制链接]
发表于 2010-6-22 00:10:53 | 显示全部楼层 |阅读模式
这样的,当指定单位生命值降低为或小于原来的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
发表于 2010-6-22 09:34:17 | 显示全部楼层
光环效果有延迟,删除技能后再删除魔法效果就OK
回复

使用道具 举报

 楼主| 发表于 2010-6-22 15:29:31 | 显示全部楼层
版主......我不是说光环效果延迟...是那个技能压根没删掉
回复

使用道具 举报

发表于 2010-6-23 17:47:55 | 显示全部楼层
先用BJDebugMsg确定一下执行,然后,如果执行,那看看技能代码对不对
回复

使用道具 举报

 楼主| 发表于 2010-6-28 03:17:03 | 显示全部楼层
会不会那个血量小于50%的时候加了技能后直接终止了函数所以50%血以上减掉技能的触发没有被注册事件?
回复

使用道具 举报

发表于 2010-9-13 22:33:43 | 显示全部楼层
[jass]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
[/jass]
回复

使用道具 举报

发表于 2010-9-13 22:35:35 | 显示全部楼层
引用第5楼subny于2010-09-13 22:33发表的  :
[jass]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')  //这句和上面那句换个顺序
.......


改成下面这个


[jass]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 UnitAddAbility(GetTriggerUnit(),'Aakb')
call TriggerAddCondition(trg,Condition(function knightattackdown))//事件的动作(条件)
return false
endfunction [/jass]
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 21:57 , Processed in 0.036119 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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