找回密码
 点一下
查看: 1587|回复: 1

一个"燃油系统"遇到的问题

[复制链接]
发表于 2010-5-20 23:53:58 | 显示全部楼层 |阅读模式
获得xx物品时,增加一定量的魔法值然后删除物品.
当魔法值为0时无法移动.
但是却发现都无法执行,求问题所在.

//获得物品增加"燃料"
function FuelFeedConditions takes nothing returns boolean
    local integer i = GetUnitTypeId(GetTriggerUnit())
    return i=='H00J' or i=='h00E'
endfunction

function FuelFeed takes nothing returns nothing
    local item i = GetManipulatedItem()
    local unit u = GetTriggerUnit()
    local integer id = GetItemTypeId(i)
    if id=='pres' then
        call PauseUnit(u,false)
        call SetUnitState(u,UNIT_STATE_MANA,GetUnitState(u,UNIT_STATE_MANA)+(50*I2R(GetItemCharges(i))))
        call AddFadingTextTag("+"+I2S(50*GetItemCharges(i)),GetUnitX(u),GetUnitY(u),255,220,0,200)
        call RemoveItem(i)
    else
        call DoNothing()
    endif
    set i = null
    set u = null
endfunction

//===========================================================================
function InitTrig_FuelFeed takes nothing returns nothing
    set gg_trg_FuelFeed = CreateTrigger()
    call TriggerAddCondition( gg_trg_FuelFeed, Condition( function FuelFeedConditions ) )
    call TriggerAddAction( gg_trg_FuelFeed, function FuelFeed )
endfunction


//"燃料"为0时无法移动.
function FuelSystemConditions takes nothing returns boolean
    local integer i = GetUnitTypeId(GetTriggerUnit())
    return i=='H00J' or i=='h00E'
endfunction

function FuelSystem takes nothing returns nothing
    local unit u = GetTriggerUnit()
    local real fuel = GetUnitState(u,UNIT_STATE_MANA)
    if fuel<0.5 then
        call IssueImmediateOrder(u,"stop")
    endif
    set u = null
endfunction

//===========================================================================
function InitTrig_FuelSystem takes nothing returns nothing
    set gg_trg_FuelSystem = CreateTrigger()
    call TriggerAddCondition( gg_trg_FuelSystem, Condition( function FuelSystemConditions ) )
    call TriggerAddAction( gg_trg_FuelSystem, function FuelSystem )
endfunction
发表于 2010-5-29 21:31:30 | 显示全部楼层
下面那个trigger没有注册事件,什么事件好呢?每0.01秒发生?会不会把地图卡着?每一秒发生的话动作里面的stop后还可以走一秒钟。。。。。应该注册单位魔法事件,在动作那里不要发布停的命令而直接SetUnitMoveSpeed把速度变成0,注意了,游戏平衡常数那里有个最小速度,去改改它。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-4 16:32 , Processed in 0.173561 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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