1. 關於觸發器在J文件里的命名 關鍵詞:jass//we//T//觸發//war3
globals
trigger gg_trg_abc= null
trigger gg_trg_def= null
endglobals
function Trig_abc_Actions takes nothing returns nothing
call DoNothing()
endfunction
function InitTrig_abc takes nothing returns nothing
set gg_trg_abc=CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(gg_trg_abc, EVENT_PLAYER_UNIT_DEATH)
call TriggerAddAction(gg_trg_abc, function Trig_abc_Actions)
endfunction
function Trig_def_Actions takes nothing returns nothing
call PauseAllUnitsBJ(true)
endfunction
function InitTrig_def takes nothing returns nothing
set gg_trg_def=CreateTrigger()
call (gg_trg_def, LESS_THAN_OR_EQUAL, 12)
call TriggerAddAction(gg_trg_def, function Trig_def_Actions)
endfunction
function InitCustomTriggers takes nothing returns nothing
call InitTrig_abc()
call InitTrig_def()
endfunction
看上面的代碼(其實是倆觸發轉的吧dota我也看過.j裡面沒有這些觸發轉的j)
globals
trigger gg_trg_abc= null
trigger gg_trg_def= null
endglobals
這里是全局變數申明trigger gg_trg_abc= null 生成trigger型變數gg_trg_abc賦值沒有(null)
function InitTrig_abc takes nothing returns nothing
set gg_trg_abc=CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(gg_trg_abc, EVENT_PLAYER_UNIT_DEATH)
call TriggerAddAction(gg_trg_abc, function Trig_abc_Actions)
endfunction
這個是名字InitTrig_abc的觸發器
裡面set gg_trg_abc=CreateTrigger() 這句是對trigger型變數gg_trg_abc賦值CreateTrigger() 一個新創建的觸發 就用上了globals全局變數裡面的gg_trg_abc
function InitCustomTriggers takes nothing returns nothing
call InitTrig_abc()
call InitTrig_def()
endfunction
這個是最後讀取地圖時候要讀取的觸發器call InitTrig_abc()就調用前面的
function InitTrig_abc takes nothing returns nothing
然後又調用了全局變數裡面的gg_trg_abc變數所保存的觸發
call TriggerRegisterAnyUnitEventBJ(gg_trg_abc, EVENT_PLAYER_UNIT_DEATH)
call TriggerAddAction(gg_trg_abc, function Trig_abc_Actions)
這個是gg_trg_abc對應的事件和動作
事件由任意單位事件EVENT_PLAYER_UNIT_DEATH產生
動作則調用函數function Trig_abc_Actions takes nothing returns nothing
還有不懂的繼續問
望採納 謝謝
用你的例子來說吧
把gg_trg_abc變成abc
gg_trg_def變成def 其他的函數無序排列就是
globals
trigger abc= null //這里是變數 叫什麼的無所謂 但是前面的trigger不能變 說明這個變數只能用來裝trigger 不能用來記錄其他東西
trigger def= null
endglobals
function AH takes nothing returns nothing //function AH 這個意思是函數名字AH
call DoNothing()
endfunction
function CH takes nothing returns nothing //不解釋function了
set abc=CreateTrigger() //變數abc記住的一個新建的觸發器 一個句柄類型的變數
call TriggerRegisterAnyUnitEventBJ(abc, EVENT_PLAYER_UNIT_DEATH) //向abc變數記住的觸發注冊事件 當事件發生的時候判斷條件 做動作 當然這個沒條件
call TriggerAddAction(abc, function AH) //向abc變數記住的觸發添加動作 注意添加動作時候的添加的是函數AH
endfunction
function BH takes nothing returns nothing
call PauseAllUnitsBJ(true)
endfunction
function DH takes nothing returns nothing
set def=CreateTrigger() //和上面差不多
call (def, LESS_THAN_OR_EQUAL, 12)
call TriggerAddAction(gg_trg_def, function BH)
endfunction
function InitCustomTriggers takes nothing returns nothing
call CH()
call DH()
endfunction
看明白了么通過函數InitCustomTriggers調用函數CH和DH
由CH生成觸發abc並且注冊事件條件動作
由DH生成觸發def並且注冊事件條件動作
然後map.j後面有最後一個主函數main調用InitCustomTriggers函數達到生成觸發的原理
魔獸的jass的結構就是 先變數 然後基礎函數 然後調用了基礎函數的函數 這樣一級一級往後面走最後是主函數main入口
不明白繼續問