《星際爭霸2》SC2地圖製作教程”動作者作弊命令”

我們已經在《星際爭霸II》地圖製作教程頁面添加了新的《動作者作弊命令》教程。此教程介紹了MOD愛好者們在編輯器上運行測試地圖時,如何使用動作者作弊命令隨時創建和操縱動作者。這樣用戶不再需要繁瑣地設置數據或執行觸發器,就能夠迅速測試新的創意。

暴雪:

我們已經在《星際爭霸II》地圖製作教程頁面添加了新的《動作者作弊命令》教程。

此教程介紹了MOD愛好者們在編輯器上運行測試地圖時,如何使用動作者作弊命令隨時創建和操縱動作者。這樣用戶不再需要繁瑣地設置數據或執行觸發器,就能夠迅速測試新的創意。

本篇是地圖製作指引三部曲的第三部,與先前發佈的《觸發器模塊》和《數據模塊》教程一樣,通過教會你製作一張類似於《自由之翼》戰役第一關任務的小型地圖,讓你熟悉《星際爭霸II》編輯器所具有的許多特色功能。

在1.4.0修正檔中,MOD愛好者們在編輯器上運行測試地圖時,可以隨時使用動作者作弊命令來創建和操縱動作者了。這樣用戶不再需要繁瑣地設置數據或執行觸發器,就能夠迅速測試新的創意。

當測試地圖運行時,該作弊命令還可以用來修改和檢查幾乎所有的動作者。這有助於調試運行過程中動作者可能產生的問題。

這些作弊命令可以用來發送若干個新近添加的轉儲消息,諸如動畫轉儲數據、附着轉儲、主體屬性轉儲、引用轉儲以及紋理轉儲。在遊戲運行時,這些轉儲消息可告知用戶去檢查某個動作者的一些內在問題。您會發現這很有幫助,等於多了一個額外的調試工具。

詳細動作者作弊命令使用教程

地圖和MOD

地圖製作教程

動作者作弊命令

在1.4.0修正檔中,MOD愛好者們在編輯器上運行測試地圖時,可以隨時使用動作者作弊命令來創建和操縱動作者了。這樣用戶不再需要繁瑣地設置數據或執行觸發器,就能夠迅速測試新的創意。

當測試地圖運行時,該作弊命令還可以用來修改和檢查幾乎所有的動作者。這有助於調試運行過程中動作者可能產生的問題。

這些作弊命令可以用來發送若干個新近添加的轉儲消息,諸如動畫轉儲數據、附着轉儲、主體屬性轉儲、引用轉儲以及紋理轉儲。在遊戲運行時,這些轉儲消息可告知用戶去檢查某個動作者的一些內在問題。您會發現這很有幫助,等於多了一個額外的調試工具。

動作者作弊命令概念

引用名

「引用名」這個術語是「動作者引用名」的縮寫,被認為是動作者引用的一種系統變量的唯一標示(「動作者引用」或只是縮寫的「引用」)。一個動作者引用可以被歸結為一個已知的動作者,取決於1)引用名的涵義和2)上下文內容。在指定的條件下,很多作弊命令都可以用到引用名。它們的可用性多種多樣,取決於上下文內容:

D – 由Actor(D)ata而來
T – 由(t)riggers里的動作者相關函數而來
C – 由動作者(c)heats而來

當前可用的引用名是:

::HoverTarget

C

動作者在鼠標光標下。

::LastCreated

DTC

來自於觸發器,這解析到上一個由觸發器函數直接生成的動作者(但不能通過其他任何方法,例如以通過數據中的消息為結果的觸發器調用)。即使來自於其它任何地方,它也包含了創建動作者的明確創建消息(也就是「創建某個動作者」)。此動作意在跨越不同變量的「上一次創建的」()時保持高度一致性,在試圖保持最小例外原則的情況下使用的觸發器技巧。

::LastCreatedActual

DTC

上一次不論用戶通過何種方法成功創建的動作者,包括通過創建消息、動作者需求創建或是通過系統內部創建的(比如當CActorAction創建了導火管)動作者。

::Main

DTC

::User作用域的「主要」動作者。

裝飾物

 

指CActorDoodad。

單位

 

指CActorUnit。

其他

 

作用域下創建的第一個動作者。

::PortraitGame

DTC

現在不管選什麼都會顯示為遊戲頭像窗口的主要動作者。

::PortraitGameSelf

DTC

動作者作用域里主要動作者頭像。被用來從單位作用域中的任意動作者發送消息給其動作者頭像。如果頭像是用於一個單位而非當前這個的話,沒有返回值。

::Self

D

動作者接收到事件。

::User

TC

包含了來自最近打開的ActorFrom作弊命令結果。

::global.

DTC

來自於全局引用表的一個動作者引用。

::scope.

DTC

來自於包含了作用域引用表的一個動作者引用。

::actor.

DTC

來自於包含了動作者引用表的一個動作者引用。

TargetKey

TC

來自於::User作用域代表了動作者的鍵值。當數次點擊結果集時只返回第一個。

引用名分支

某些作弊命令(像「動作者傳送至」)支持「引用名分支」,允許用戶發送消息給屬於一個已知動作者的引用名(也就是作弊命令需要一個動作者以便鑒定引用名)。

   

::Creator

DTC

::User動作者的創建者。

主體

 

一個主體動作者是一個繼承了數據的動作者,比如關系導向、主體屬性等等。

::Host

DTC

最主要的主體。用於關系導向和主體屬性。

::HostImpact

DTC

用於放置光束的碰撞點。

::HostLaunch

DTC

用於放置光束的發射點。

::HostReturn

DTC

主體其中一個用途,作為其返程的目標。

::Supporter

DTC

常用來鏈接動作者的生命期作為一個「輔助」動作者(典型例子就是設置事件當輔助動作者死亡時,要求動作者也死亡)。

作用域引用名

某些作弊命令也適用於動作者作用域。有些作用域引用名變量與它們相對應的動作者類似,除非它們寧可計算動作者作用域而不是動作者。

::Actor

TC

::User動作者的作用域。

::LastCreated

TC

上一個通過作弊命令或客戶端代碼成功創建的作用域。和數據無關,因為數據不會創建作用域。

::PortraitGame

TC

遊戲頭像窗口的作用域。

::Selection

C

選擇單位的作用域。即使被選擇的是復數單位,也只返回一個單一作用域。

::User

TC

包含了最近一次使用ActorScopeFrom作弊命令的結果。當此引用是由全新有效的動作者作用域構成時,會自動設置::上一次創建的值。

內容鍵值

創建消息可獲得1和3之間的內容鍵值。這允許了觸發器和作弊命令能夠更容易地利用不同的「內容」參數和相同的數據輸入來創建不同種類的動作者實體。例如:

ActorCreateAt 模型 刺蛇 
ActorCreateAt 模型 陸戰隊員

上面兩個作弊命令都創建了一個名為「Model」的CActorModel。第一個使用了「H」資源進行創建,第二個使用了「陸戰隊員」資源進行創建。按照具體分析原則,不同類型的動作者支持不同風格的創建參數。下面是一個支持內容參數的動作者列表,且它們的順序是指定的。

CActorBeam 模型鏈接 引用發射 引用碰撞

模型鏈接 – 模型數據登記用於光束時的名稱。

引用發射 – 用於構成光束::主體發射的引用名。

引用碰撞 – 用於構成光束::主體轟擊的引用名。

CActorList 引用名

引用名 – 構成列表的引用名源。

CActorModel

模型鏈接 – 模型數據登記用於模型時的名稱。

參數調節 – 用於模型的指定參數調節,如果需要的話(否則會隨機選取)。

CActorSound

聲音鏈接 – 所用聲音的名稱。

CActorSplat

模型鏈接 – 模型數據登記用於光束時的名稱。

更多相關內容請關註:星際爭霸2專區

動作者作弊命令用法

當用戶在編輯器中運行自己的地圖時,可以在聊天框里輸入動作者作弊命令。
輸出會進入Alert.txt日誌,可在用戶的”StarCraft II/GameLogs”目錄下找到該文件。Alert.txt日誌文件名前置有日期和時間戳,舉一個現實中的例子,如名為:「2011-08-08 10.30.05 Alerts.txt」。
當前還不支持快捷方式,但稍後可能會加入該功能。

動作者作弊命令列表

在為每條命令給定的語法中,打上了波形括號{}的參數表示為一個可選參數。在成功執行的某些作弊命令時,兩個全局變量——「::User動作者」和「::User作用域」的值是固定的,對其他作弊命令也同樣起作用。那些殺死動作者和作用域的作弊命令,會將那些可能會中斷當前活躍單位和效果的動作者和作用域排除出來。
ActorCreateAt
在指定區域創建一個動作者。設置::User動作者至該動作者,設置::User作用域至該作用域。
該作弊命令常用於在測試地圖上直接創建一個動作者,從而不必等到該動作者正常創建就可以觀察其屬性並和它互動。用戶可以利用坐標軸來精準定位動作者戰鬥測試或諸如此類。

語法:
ActorCreateAt x,y actorName {contentName} {content2Name} {content3Name}

例如:
ActorCreateAt 50,50 Model Drone ActorCreateAt 50,50 NexusSplat

ActorCreateAtCursor
在鼠標光標位置創建一個動作者(其中包含了動作者作用域),設置::User動作者至該動作者,設置::User作用域至該作用域。
該作弊命令常用於在測試地圖上直接創建一個動作者,從而不必等到該動作者正常創建就可以觀察其屬性並和它互動。它將動作者放置在光標位置,這樣一來用戶就不用特地去獲取指定坐標,才能把動作者放置於一個顯而易見的位置。

語法:
ActorCreateAtCursor actorName {contentName} {content2Name} {content3Name}

例如:
ActorCreateAtCursor Model Drone
ActorCreateAtCursor NexusSplat
ActorCreateAtCursor Sound HydraliskAirAttackLaunch

ActorDumpAutoCreates
轉儲一個由數據結果創建的所有動作者列表,如下所示:

該類型的動作者創建模式被稱為自動創建,因為動作者會響應消息而自動進行自我創建。這與下述創建模式有些不同:

因為在這里創建消息明確指定 了一個動作者去創建。
ActorDumpAutoCreates可以被用來追蹤動作者是否在無意中被某些事件所創建出來。

語法:
ActorDumpAutoCreates

ActorDumpEvents
轉儲一個::User動作者可看見的所有動作者事件列表,不包括自動創建的事件。
該作弊命令可被用來在地圖中所有動作者事件上執行各式各樣的文本搜索,像是如果想要查看響應一個給定單一事件的所有動作者,不管它們是從屬於誰的。

語法:
ActorDumpEvents

ActorDumpLeakRisks
轉儲一個包括所有持續時間大於特定值,從而可能造成溢出的動作者的列表。用戶可檢查炮口火焰模型的持續時間是否超過一分鍾。因為一般來說,炮口火焰從不會持續那麼長時間。某些種類的動作者從不在列表上顯示溢出風險,因為它們會自動被系統清除,因此也不會由於溢出而造成不良數據。
如果地圖隨着時間的流逝而變得愈加緩慢,該作弊命令可以決定是否是由於溢出所造成的。

語法:
ActorDumpLeakRisks age

ActorDumpLive
轉儲一個整張地圖上活着的動作者列表,排序方式包含了作用域。
該作弊命令有助於決定動作者是否存在,不管它們有沒有出現在遊戲世界中預設的位置中。一個錯誤顯示在0,0的動作者仍將出現在活躍動作者列表中。

語法:
ActorDumpLive

ActorFrom
設置一個新的::User動作者為活的動作者,並給予引用名。
該作弊命令是設定遊戲世界中各種各樣動作者至::User引用的關鍵,如此一來用戶就可以發送作弊命令給它們了。

語法:
ActorFrom RefName


例如:
ActorFrom ::HoverTarget ActorFrom ::Selection

ActorFromActor
設置::User動作者通過另外一個動作者和一個引用名分支給一個動作者引用。
該作弊命令有助於設定遊戲世界中各式各樣的父系和子系動作者至::User引用,如此一來用戶可發送作弊命令給它們了。它通常用於執行一個動作者::主體引用的操作。

語法:
ActorFromActor refName

例如:
ActorFromActor ::Host
設置::User動作者至來自於主體的動作者。
ActorFromActor ::Creator
設置::User動作者至其創建的動作者。

ActorKillAll
殺死所有的動作者,除了那些作為活着的單位和效果樹一部分的。
有助於清除測試地圖上的動作者,如此一來單個的動作者就可以單獨進行測試了。

語法:
ActorKillAll

ActorKillClass
殺死在光標指定半徑內所有指定類別的動作者。如果沒有指定半徑,則范圍為無限大。
如果用戶正在審查時較難去集中在一個問題上,可用該作弊命令來清除一片區域(或是整張地圖)內指定類型的動作者。例如,殺死所有的裝飾性動作者來確認是否是由於它們所造成的執行問題,是比較行之有效的一個手段。

語法:
ActorKillClass class {range}

例如:
ActorKillClass Model 15
ActorKillClass Sound

ActorKillLink
以指定的動作者鏈接殺死光標給定半徑內所有的動作者。如果沒有指定半徑,則范圍為無限大。
如果用戶正在審查時較難去集中在一個問題上,可用該作弊命令來清除一片區域(或是整張地圖)所有特定的動作者實例。例如,殺死在一片(AoE)攻擊影響區域內特別命名的所有模型,如果創建了太多模型,模糊了某些攻擊的圖形特效。或是用戶根據給定的名稱殺死所有聲音,來看是否能聽到與效果相關聯的其他聲音。

語法:
ActorKillLink link {range}

ActorSend
發送一個有效的用戶消息至當前活躍的::User動作者。
到目前為止使用最多的一個動作者作弊命令,也是開發者(內部的或外部的)通過作弊命令與動作者進行互動的主要方式。

語法:
ActorSend message

例如:
ActorSend Destroy
ActorSend SetTintColor {255,255,0}

ActorSendTo
發送一個消息至一個系統動作者引用,使用::User動作者來幫助解決系統動作者引用。換句話說,該程序發送消息至引用名分支(盡管它也適用於::主引用名)。
該作弊命令可作為發送消息至動作者分支的一個捷徑;用戶不需要首先使用ActorFromActor作弊命令來設置::User引用。

語法:
ActorSendTo refName message

例如:
ActorSendTo ::Host SetOpacity 0.5
ActorSendTo ::Main SetTintColor {255,0,0}

ActorScopeDumpLive
轉儲一個整張地圖中活躍作用域列表。
該作弊命令有助於尋找那些不再有任何(作用的)動作者、卻仍在消耗資源的動作者作用域。

語法:
ActorScopeDumpLive

ActorScopeFrom
從指定作用域引用名中設置一個新的::User作用域。
該作弊命令是設定遊戲世界中各種各樣作用域至::User作用域引用的關鍵,如此一來用戶便可輕松找到並發送消息給作用域中的任何一個動作者。

語法:
ActorScopeFrom scopeName

例如:
ActorScopeFrom ::PortraitGame
ActorScopeFrom ::Selection

ActorScopeKill
殺死當前設置的::User動作者和::User作用域。該命令無法殺死還活着的單位或效果的作用域來避免意料之外的結果。
通過殺死他們包含的作用域能夠有效清除一個或多個用戶試驗過的動作者,因為這將殺死作用域中的所有動作者。

語法:
ActorScopeKill

ActorScopeOrphan
孤立當前設置的::User作用域。一個孤立的作用域會自動殺死自己,當最後一個保持它活着的動作者死亡時(例如當一個單位的死亡模型動作者完成動畫並自殺)。該命令不會孤立來自單位或效果的作用域來避免意料之外的結果。
該作弊命令可被用來測試在::User作用域內動作者孤立消息在動作者身上的效果。

語法:
ActorScopeOrphan

ActorScopeSend
廣播一個用戶消息給::User作用域里的所有動作者。
在某些偶然的情況下,用戶想要發送一個消息給作用域里所有動作者,此時該命令很有用。
(另外一個與之相關的,雖然它可能看起來像是一個將動作者作用域里所有模型染成紅色的好辦法[例如],它是典型地好過將子系動作者脫離出::主動作者和動作域的::主動作者,並且一來主體屬性繼承並過濾改變的顏色。後面這一想法是典型地要好過當一個作用域可有不必染成紅色的動作者(例如敵軍碰撞爆炸)與那些原本打算變成紅色的動作者一起。無論如何,廣播染色消息將會導致作用域內的模型全部變為紅色。)

語法:
ActorScopeSend message

例如:
ActorScopeSend Destroy

ActorUsersDump
返回當前設置的::User動作者和::User作用域。
假如用戶忘記了這些引用的當前設置,該命令會有幫助。

語法:
ActorUsersDump

ActorUsersFromHoverTarget
在光標下設置::User動作者至動作者。設置::User作用域至包含了那個動作者的動作者作用域。
在檢驗和操作不屬於任何一個可選擇對象的遊戲世界動作者時非常有用。

語法:
ActorUsersFromHoverTarget

ActorUsersFromPortraitGame
設置::User動作者至遊戲頭像窗口中的頭像動作者。設置::User作用域至遊戲頭像窗口的動作者作用域。
在檢驗和操作頭像窗口中包含的動作者時非常有用。

語法:
ActorUsersFromPortraitGame

ActorUsersFromSelection
為所選單位設置::User動作者至::Main動作者。設置::User作用域至包含那個動作者的動作者作用域。
在檢驗和操作屬於一個可選擇對象遊戲世界動作者時非常有用。

語法:
ActorUsersFromSelection

ActorWorldParticleFXDestroy
清除遊戲世界中當前存在的所有粒子和帶狀物。該命令無法阻止新的粒子和帶狀物產生——即使是在粒子系統下清除掉所有的粒子也不行。
可被用來立即清除世界中的模糊粒子和帶狀物特效(特別是當遊戲暫停時),以便能夠更緊密的檢查模型或是其它視覺特效的其它部分。

語法:
ActorWorldParticleFXDestroy

動作者轉儲消息

用戶可發送動作者轉儲消息給動作者,以便從它們那里獲取調試的相關消息。

AliasDump
語法:
AliasDump
顯示出與當前動作者別名相關的所有動作者。

AnimDumpDB
語法:
AnimDumpDB
顯示出與可用動畫模型相關的所有動作者。顯示出每個動畫的持續時間,同時還顯示其是否為一個循環動畫。

AttachDump
語法:
AttachDump
顯示出與存在在模型上的附着點相關的所有動作者。同時還顯示用戶指定的附着鍵和以附着卷為目標相關的每個附着點。

HostedPropDump
語法:
HostedPropDump IncludeChildren PropType
如果動作者有的話,顯示出與指定主體屬性相關的所有消息。如果「包括子集」的參數為1,會顯示出目標動作者連同其所有子集一起的屬性消息。
例如:
HostedPropDump 0 TintColor
HostedPropDump 1 TeamColor

HostedPropDumpAll
語法:
HostedPropDumpAll IncludeChildren
顯示出與所有存在於動作者上的主體屬性相關的所有消息。如果「包括子集」的參數為1,那麼目標動作者的所有子集也都是一樣的。

RefDump
語法:
RefDump RefName
顯示出引用名指定動作者的調試消息。當前只適用於系統引用表格里的動作者引用,這意味着引用格式為「::動作者.某些用戶引用」、「::作用域.某些用戶引用」和「::全局.某些用戶引用」。

例如:
RefDump ::actor.someUserRef

RefTableDump
語法:
RefDump RefTableType
顯示出一個已知引用表格內所有動作者的調試消息。「引用表格類型」參數要區分大小寫,還要注意動作者、作用域或全局的標識符。

例如:
RefDumpAll Actor

TextureDump
語法:
TextureDump
顯示出與目標動作者相關聯的模型當前使用的所有紋理。表明了誰與紋理槽相關聯以及它們是否已經交換出去並且被其他動態紋理所替代。

TextureDumpDB
語法:
TextureDumpDB
顯示出與目標動作者相關聯的可用於模型的動態紋理交換的所有可用紋理。

來源:遊民星空