找回密码
 点一下
楼主: 麦德三世

[小题目]如何做出单位生命值变化的触发

[复制链接]
发表于 2006-4-25 23:52:58 | 显示全部楼层
每次单位生命变化都必须在屏幕上显示出其生命值
没错吖.是显示生命.嗯嗯...我米看错...
回复

使用道具 举报

发表于 2006-4-26 00:21:01 | 显示全部楼层
汗~ 局部变量才要set null
不是局部变量设它做什么...
回复

使用道具 举报

发表于 2006-4-26 00:41:29 | 显示全部楼层
都是高手`~我是来膜拜的~~
回复

使用道具 举报

发表于 2006-4-26 11:13:06 | 显示全部楼层
啦啦啦~~鄙视万恶的10字节!

[jass]function LifeChange_Trigger takes nothing returns nothing
    local trigger Life_Trigger = CreateTrigger()
    local real Curr_Life = GetUnitStateSwap(UNIT_STATE_LIFE, udg_Player)
    local real Less_Life = Curr_Life - udg_Precision
    local real More_Life = Curr_Life + udg_Precision

    call DisplayTextToForce( GetPlayersAll(), \"CurrLife: \" + R2S(Curr_Life) )
    call DestroyTrigger(GetTriggeringTrigger())
    call TriggerRegisterUnitLifeEvent( Life_Trigger, udg_Player, LESS_THAN, Less_Life )
    call TriggerRegisterUnitLifeEvent( Life_Trigger, udg_Player, GREATER_THAN, More_Life )
    call TriggerAddAction( Life_Trigger, function LifeChange_Trigger )
endfunction[/jass]

[ 本帖最后由 风间?草 于 2006-4-26 11:14 编辑 ]
回复

使用道具 举报

发表于 2006-4-26 13:08:08 | 显示全部楼层
卡了   多发了.......

[ 本帖最后由 Red_Wolf 于 2006-4-26 13:22 编辑 ]
回复

使用道具 举报

发表于 2006-4-26 13:22:03 | 显示全部楼层
[jass]function h2i takes handle h returns integer
    return h
    return 0
endfunction

function i2a takes integer i returns triggeraction
    return i
    return null
endfunction

function LifeChange_Trigger takes nothing returns nothing
    call DisplayTextToPlayer(Player(0), 0, 0, \"CurrLife: \" + R2S(GetUnitState(udg_Player,UNIT_STATE_LIFE)) )
    call TriggerRemoveAction(GetTriggeringTrigger(),i2a(udg_Action))
    call DestroyTrigger(GetTriggeringTrigger())
    set udg_Trg = CreateTrigger()
    call TriggerRegisterUnitStateEvent( udg_Trg, udg_Player, UNIT_STATE_LIFE, LESS_THAN, GetUnitState(udg_Player,UNIT_STATE_LIFE) - 1 )
    call TriggerRegisterUnitStateEvent( udg_Trg, udg_Player, UNIT_STATE_LIFE, GREATER_THAN, GetUnitState(udg_Player,UNIT_STATE_LIFE) + 1 )
    set udg_Action = h2i(TriggerAddAction( udg_Trg, function LifeChange_Trigger ))
endfunction

[/jass]

楼上的改成这样就不错了,可以看单人.w3x

[ 本帖最后由 Red_Wolf 于 2006-4-26 14:21 编辑 ]
回复

使用道具 举报

发表于 2006-4-26 14:06:53 | 显示全部楼层
本题将于本周日决定优胜者。



另外,今日增加了技能区的题目:

《一个可控的模拟BUFF》:
http://bbs.ourga.com/viewthread. ... a=page%3D1#pid12820


明天将增加的是JASS区的题目。
回复

使用道具 举报

发表于 2006-4-26 14:23:09 | 显示全部楼层

看来这个题目太简单了,再加深难度:

看来这个题目太简单了。
现在应该考虑把它封装成函数,并使其能多人

函数接口标准:
[jass]
// 注册单位属性改变事件
//@Return: 创建的事件
//@whichTrigger: 事件满足时执行的触发器
//@whichUnit: 注册事件的单位
//@whichState: 注册何种状态
function RegisterUnitStateEvent takes trigger whichTrigger, unit whichUnit, unitstate whichState returns event
endfunction

// 取消注册单位属性改变事件
//@Return: 是否成功
//@e: 事件
function UnRegisterUnitStateEvent takes event e returns boolean
endfunction
[/jass]


注意:
一、要求能够多人,且同一个单位的不同属性能分别注册事件。
二、虽然Jass中没有创建事件的函数,但我们可以利用“return Bug”啊。再提示一下:可以利用GameCache、location、镜头设置来存储参数
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 21:44 , Processed in 0.062637 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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