基本操作

介面介紹

如果你對觸發器的使用介面完全不了解,建議你先閱讀官方說明手冊七日教學,或者動手去熟悉它。

  • 先從最常用的功能開始講起好了:
    WE工具列
    上圖中左邊數來第五組第一個是創建新資料夾。一個觸發被放在哪個資料夾並沒有任何影響,一般是做為分類用。
    例如與生產小兵相關的觸發放一個資料夾;與遊戲初始化相關的放一個資料夾;與測試除錯相關的放一個資料夾等等。
    資料夾可以把它改成註解形式,這樣它的外觀會有一點改變。一樣主要是分類用,例如當做分隔線。

    第五組第二個是創建新觸發。有時也可以複製/貼上已存在的觸發再改名改內容。

    第五組第三個是創建新註解,註解也是用來做分隔和分類的,裡面可以寫一些字,但有字元數的上限。

    第六組的三個分別是在一個觸發器中加入新的事件(Event)/條件(Condition)/動作(Action),以後會常常用到。

    第四組唯一的一個按鈕是用來管理變數的,按下它可以開啟變數管理器,以在裡面新增/修改/移除變數。

  • 還有一個很常用的是功能表中的編輯(Edit)功能:
    編輯功能表
    上面數來第五組的Enable Trigger是啟用/停用觸發,當觸發被停用時,就不會被編譯,也不會在遊戲中被執行,通常是為了測試目的暫時把一個觸發停掉。

    Trigger is Initially On是用來設定一個觸發預設開啟或預設關閉,被關閉的觸發不會有作用,但是可經由其它的觸發開啟而得以使用。通常是用來做一些遊戲的調控。

    Enable Function是用來啟用/停用一個觸發中的一行敍述,和啟用/停用觸發一樣,通常是為了測試目的。

    Category is Comment是用來設定資料夾是否為註解,上面有說明過。

    Convert to Custom Text是用來把觸發轉成JASS碼做編輯,雖然會變得較為難懂,但功能比一般的觸發更多。
    另外,轉成JASS以後就不能轉回來,最多用還原功能回復轉換前的樣子。

    Copy As Text可以用來把觸發(或觸發中的幾行所有事件/所有條件/所有動作)複製成文字,方便你在別的地方貼出來問人。
    但是大多數的討論區無法對齊半形空白,建議可以用記事本之類的文字編輯器把多個半形的空白( )取代成全形的空白( )以使排版美觀。
    還有,這項功能複製出的中文會變成亂碼,請手動修改它吧。(沒辦法,老外不會管中國人的死活)

撰寫觸發

假設現在別人隨便貼了一條觸發--

Complement
 Events
  Unit - A unit Dies
 Conditions
  ((Dying unit) is A Hero) Equal to True
 Actions
  Player - Add 100 to (Owner of (Dying unit)) Current gold
哇!看起來好複雜,要怎麼寫呢?請一步一步跟著做:

  1. 首先,按下[創建新觸發]按鈕創造觸發,並且把它命名為Complement

  2. 按下[創建新事件],創造一個事件,你會看到這個:
    創建新事件
    你可以在Map Initialization那一欄裡往下找,直到找到你要的為止。
    也可以在-All那裡往下拉到部隊(Unit)分類,以便使下面那欄只顯示出部隊類別的事件,再從中找尋。
    或者在-All那裡拉到搜尋關鍵字,並且搜尋你要的字。
    還有就是按下U,就會立刻拉到以U開頭的地方(中文版一樣,切換成中文輸入法再輸入中文即可)。

    總之,你應該會在選到Unit - Generic Unit Event時,看到Event Text那裡呈現這樣:
    Generic Unit Event
    是不是和你要的Unit - A unit Dies一模一樣呢?按下OK確認,此時你會發現Event下面已經多了這一行觸發敍述了。

  3. 接著我們來加入條件。如果你是有經驗的WEer,根據((Dying unit) is A Hero) Equal to True,你應該可以直接看出應該去找Boolean Comparison;
    如果你沒經驗,你或許在每個都試過以後,發現Boolean Comparison是唯一可行的。總之,選到Boolean Comparison。
    裡面的內容是:
    增加條件
    似乎不太像我們要的?不過讀者有看到嗎? Click on the underlined sections to set values

    所以我們點一下((Triggering unit) is A structure),出現這個視窗:
    條件設定
    這是觸發編輯器的結構特色,每一個事件/條件/動作下或多或少有用到函數(Function)。
    每一個函數可回傳一個值,其內可能又有別的函數,就是像這樣一層一層地往下推。

    廢話不多說,點一下(Triggering Unit),接下來又會出現一串選項,選到Event Response - Dying Unit,按下OK,
    你會發現現在它改成了((Dying unit) is A structure)

    接著用同樣方法,把A structure改成A hero,然後連按OK-OK-OK,你的條件加好了。

  4. 再來是動作,這個應該不用教了吧?用同樣的方法一層一層寫就好了

  5. 一定會有人問--為什麼你一看到動作Player - Add 100 to (Owner of (Dying unit)) Current gold,就知道要找Player - Add Property呢?
    理由很簡單--就是經驗。等你熟悉以後也能這麼快,不必一個一個選項龜速地看。

設定變數

有時候我們會看到這樣的觸發:

Set Barrack Count
 Events
  Unit - Barracks 0001 <gen> Dies
 Conditions
 Actions
  Set BarracksCount = (BarracksCount - 1)
  Multiboard - Set the text for (Last created multiboard) item in column 1, row 1 to (String(BarracksCount))

  • 上面的Barracks 0001 <gen>後會有寫個<gen>,代表那是指向一個地圖預置的東西,而編號是由WE自動產生的。
    在事件裡選到Unit - Specific Unit Event,下面的Unit按下去之後,電腦會讓你選取一個已經被擺在地圖上的部隊,你可以擺一個兵營然後選取它,編號或許不是0001,但是那不要緊,只要你知道那代表的是那一個兵營即可。

  • 下面的Set BarracksCount = (BarracksCount - 1)可在動作的Set Variable那欄找到,
    可是當我們按下Variable時,可能會像下圖一樣,發現一個選項都沒有:
    變數

    這表示你尚未建立變數,按下Edit Variables以後,會出現一個讓你設定變數的視窗,
    按下上面第三組第一個鈕(應該是唯一能按的鈕)建立新變數,名稱輸入BarracksCount,當然你可以視需要改成別的名稱
    類型選擇整數(Integer),然後按OK,此時Variable那個視窗就會出現BarracksCount讓你選擇了。

    一定又有人會問,為什麼要選Integer?選別的會怎樣?你怎麼知道要選Integer?
    呃,你可自己試試看不選擇Integer會有什麼不一樣…
    至於我怎麼知道要選Integer,一樣也是靠經驗,因為Set BarracksCount = (BarracksCount - 1),後面顯然是一個整數。

  • 最後一行讀者你應該知道要怎麼設定了吧?
    說實話,如果前面沒講到,你可能找破頭也沒辦法在String選項下面找到BarracksCount這個選項,
    所以這個又要經驗了,內行的人一眼就知道那是一個變數,因為它不像是一個完整的文句,
    變數的取名是有限制的,只能用英數、不能用空白(通常用底線_代替),所以看起來會和一個函數的語法不太一樣。

    當然,初學者難免分不太出來,可能全部函數都找過了,發現找不到,才終於想到那是一個變數。
    這個沒有辦法,誰叫你是初學者?凡事總是有個起步啊。

  • 變數是什麼?好問題,欲知詳情,請看下文

綜合教學/觸發器使用教學/1.基本操作.txt · 上一次變更: 2007年11月12日 9:26 pm 來自 wasabi
www.chimeric.de Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0