[JASS][轉貼]勿讓Condition自己刪除自己

各類的進階專題研究、WE Bug討論等。

版主: crassorz, tv580025

[JASS][轉貼]勿讓Condition自己刪除自己

文章tv580025 » 2010年03月04日 2:35 am

原文:http://bbs.islga.org/read.php?tid=9627
作者:trevors
以下程式碼是我在everguo教程裡看到的,用的是condition,但是使用的時候卻發生錯誤
代碼: 選擇全部
function DestroyTriggerAll takes trigger trg returns nothing
    call TriggerRemoveCondition(trg,I2TC(GetStoredInteger(udg_GC,I2S(H2I(trg)),"TriggerCondition")))
    call DestroyTrigger(trg)
call FlushStoredMission(udg_GC,I2S(H2I(trg)))
endfunction
//========================================================
function RegisterUnitAmortCond takes nothing returns nothing
    call SetUnitInvulnerable(GetTriggerUnit(), true)
    call DestroyTriggerAll(GetTriggeringTrigger())
endfunction

function RegisterUnitAmortEvent takes unit witchUnit returns nothing
    local trigger trg = CreateTrigger()
    call TriggerRegisterUnitStateEvent(trg, witchUnit, UNIT_STATE_LIFE, LESS_THAN_OR_EQUAL, 50)
    call StoreInteger(udg_GC,I2S(H2I(trg)),"TriggerCondition",H2I (TriggerAddCondition(trg,Condition(function RegisterUnitAmortCond))))
    set trg = null
endfunction

這是在教程中看到的另一段程式碼,是用action做的...但卻可以執行
代碼: 選擇全部
function RegisterUnitAmortAction takes nothing returns nothing
    local trigger trg = GetTriggeringTrigger()
    local triggeraction Act=I2TA(GetStoredInteger(udg_GC,I2S(H2I(trg)),"Triggeraction"))
    call SetUnitInvulnerable(GetTriggerUnit(), true)
    call TriggerRemoveAction(trg,Act)
    call DestroyTrigger(trg)
   call FlushStoredMission(udg_GC,I2S(H2I(trg)))
    set trg = null
    set Act=null
endfunction

function RegisterUnitAmortEvent takes unit witchUnit returns nothing
    local trigger trg = CreateTrigger()
    local triggeraction Act
    call TriggerRegisterUnitStateEvent(trg, witchUnit, UNIT_STATE_LIFE, LESS_THAN_OR_EQUAL, 50)
    set Act=TriggerAddAction(trg,function RegisterUnitAmortAction)
    call StoreInteger(udg_GC,I2S(H2I(trg)),"Triggeraction ",H2I(Act))
    set trg = null
    set Act=null
endfunction

經過測試,把第一段程式碼中的call TriggerRemoveCondition(trg,I2TC(GetStoredInteger(udg_GC,I2S(H2I(trg)),"TriggerCondition"))) 去掉就不會出錯...
不知道是我使用有問題,還是程式碼的問題....想請教下各位大大

TriggerAction可以

TriggerCondition不行

詳細說明我找時間會補上
圖檔
http://weo.sabi.tw/blog <= 這是我的部落格
http://plurk.com/Neo_Yang <= 噗浪請按我


圖檔  凡事不經思索便行動 一條腸子直通到底的笨蛋
頭像
tv580025
冰霜翼龍
冰霜翼龍
 
文章: 1644
註冊時間: 2006年02月09日 12:29 pm
來自: Matrix

回到 專題討論區

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客