在1.4.0版本中,模組創作者可在使用編輯器執行測試地圖時,使用動作者作弊碼隨即創造出動作者並利用之。用此測試一些臨時的點子非常方便,不需要再設定什麼資料或執行觸發器。
在執行測試地圖時,這些作弊碼還可用來修改和檢查幾乎所有動作者,所以很適合用於執行動作者除錯。
這些作弊碼還可以用來發送新啟用的轉儲訊息,例如動畫轉儲資料庫(AnimDumpDB),附加轉儲(AttachDump),主體屬性轉儲(HostedPropDump),參考值轉儲(RefDump)及材質轉儲(TextureDump)。模組創造者可在遊戲運行時,利用這些轉儲訊息來檢查特定動作者在遊戲內的樣子,這絕對是另一個方便的除錯小工具。
動作者作弊概論
參考名稱
「參考名稱」(Ref Name)是「動作者參考名稱」(Actor Reference Name)的縮寫,它具有辨識動作者參考值這類系統變數(亦即 actor ref 或 ref)的獨特功能。只要藉由(1)參考名稱的含義,以及(2)其所使用的內容,即可解析動作者參考值來找出指定的動作者。參考名稱可用於許多指定的作弊碼中,但該些作弊碼的用途和用法不同,需視其套用的內容而定:
D - 來自動作者資料(D)
T - 來自觸發器中與動作者相關的函數(T)
C - 透過動作者作弊碼(C)
目前可用的參考名稱為:
| ::HoverTarget(游標暫留的目標) | C | 游標下的動作者 |
| ::LastCreated(最後創造) | DTC | 來自觸發器,可用來解析出上一個直接透過觸發器函數(而非藉由其他方法,例如觸發器呼叫後再透過資料中的訊息所創造等等)所成功創建的動作者。或來自任何地方,包括藉由「創造」訊息(即「創造動作者」Create SomeActor)所明確創建的動作者。這樣是為了確保觸發器中所有由「最後創造」(LastCreated)機制中的不同變量能盡可能達到一致性,並同時盡量遵循「最少例外原則」,以減少意外的發生。 |
| ::LastCreatedActual(最後實際創造的動作者) | DTC | 不論用的是什麼方法,使用者成功創建的最後一個動作者。此類動作者可包含藉由「創建」訊息、動作者要求創建或是系統內部創造的動作者(例如當「預設動作者動作」創造小型爆破效果)等等 |
| ::Main(主要) | DTC | ::User(使用者)範圍的「主要」動作者 |
| ● Doodad(飾物) | 預設動作者飾物。 | |
| ● Unit(單位) | 預設動作者單位。 | |
| ● 預設動作者單位 | 在該範圍內第一個創造的動作者。 | |
| ::PortraitGame(遊戲頭像) | DTC | 不論選的是什麼,目前遊戲頭像視窗中的主要動作者。 |
| ::PortraitGameSelf(自身的遊戲頭像) | DTC | 此動作者範圍內主動作者的頭像。這適合用來將訊息發送給單位範圍內任一動作者的頭像動作者,如果該頭像並非用於目前的單位則不返回任何結果。 |
| ::Self(自身) | D | 收到事件的動作者。 |
| ::User(使用者) | TC | 含有源自最近的「來自動作者」(ActorFrom)作弊碼的結果。 |
| ::global. |
DTC | 源自全域參考表中的動作者參考值。 |
| ::scope. |
DTC | 源自含有範圍的參考表的動作者參考值。 |
| ::actor. |
DTC | 源自含有動作者的參考表的動作者參考值。 |
| TargetKey(目標識別碼) | TC | 源自 ::User範圍中識別碼所代表的動作者。如果結果集有多條結果時,僅返回第一條結果。 |
子參考名稱
某些作弊碼(例如「動作者寄至」(ActorSendTo))可支援「子參考名稱」,透過此類作弊碼玩家可發送訊息給「屬於」指定動作者的參考名稱(即此作弊碼需要有一動作者以評估其參考名稱)。
| ::Creator(創造者) | DTC | ::User動作者的創造者。 |
| Hosts(主體) | 主體動作者為其他動作者繼承方位、主體屬性等資料的來源。 | |
| ::Host(主體) | DTC | 主要的主體,用於方位和主體屬性。 |
| DTC | ||
| ::HostLaunch(主體發射) | DTC | 用於定位光束的發射點。 |
| ::HostReturn(主體返回) | DTC | 被觸角用來做為返程目標的主體。 |
| ::Supporter(支援器) | DTC | 用來將動作者的生命期限(時效)連結至「支援型」動作者(通常是為了設定指示動作者在該支援型動作者死亡時死去的事件)。 |
範圍參考名稱
某些作弊碼是用於動作者範圍的。有些範圍名稱的變數與其相對應的動作者相似,只不過該些變數用於動作者範圍而非動作者。
| ::Actor(動作者) | TC | ::User 動作者的範圍。 |
| ::LastCreated(最後創造) | TC | 使用者藉由作弊碼或客戶端程式碼成功創建的上一個範圍。與資料無關,因為資料並不創造範圍。 |
| ::PortraitGame(遊戲頭像) | TC | 遊戲頭像視窗的範圍。 |
| ::Selection(選擇) | C | 所選擇單位的範圍。就算選擇了複數個單位也只返回單一範圍。 |
| ::User(使用者) | TC | 含有來自最近的ActorScopeFrom(來自動作者範圍)作弊碼所得到的結果。當生成 該參考值和新的有效動作者範圍時,自動開始 ::LastCreated 值。 |
內容識別碼
創建訊息大約需要1至3個內容識別碼。這些識別碼能讓觸發器和作弊碼更輕易地利用相同的資料項創建出含有不同「內容」參數的各種動作者實例。舉例來說:
ActorCreateAt Model Hydralisk(動作者創建於:模型:刺蛇)
ActorCreateAt Model Marine(動作者創建於:模型:陸戰隊)
這兩個作弊碼都創建了一個被稱作為「模型」的預設動作者模型。第一個作弊碼用「刺蛇」作為素材,而第二個則以「陸戰隊」為素材。各種動作者可根據各種不同的情況支援不同的創造參數樣式。下列為可支援內容參數的動作者及它們特定的順序。
CActorBeam ModelLink RefLaunch RefImpact(預設動作者光束:模型連結:參考發射值:參考衝擊值)
● ModelLink(模型連結)- 用於光束的 modelData(模型資料)項目的名稱。
● RefLaunch(參考發射值)- 用於生成光束的 ::HostLaunch(主體發射值)的參考名稱。
● RefImpact(參考衝擊值)- 用於生成光束的 :: HostImpact(主體衝擊值)的參考名稱。
CActorList RefName(預設動作者列表:參考名稱)
● RefName(參考名稱)- 用來生成表單的參考名稱來源
CActorModel(預設動作者模型)
● ModelLink(模型連結)- 用於該模型的 modelData(模型資料)項目的名稱。
● Variation(變量)– 如果有需要,可指定模型的變量碼,否則將隨機挑選。
CActorSound(預設動作者音效)
● SoundLink(音效連結)- 欲使用的音效的名稱。
CActorSplat(預設動作者效果圖)
● ModelLink(模型連結)- 用於該光束的 modelData(模型資料)項目的名稱。
動作者作弊碼的用法
使用者可在使用編輯器執行地圖時,將動作者作弊碼輸入聊天欄中。輸出會放在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參考值,因為如此一來使用者便能將作弊指令發送至各個動作者。此作弊碼常常被用來執行動作者的 :Host 參考值的運算。
語法:
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
動作者來解析系統的動作者參考值,以便將訊息發送至系統的動作者參考值,也就是說此常式會發送訊息至子參考名稱(雖然它也會影響 ::Main 參考名稱)。
此作弊碼可以說是發送訊息至子動作者的捷徑。
語法:
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 範圍內的動作者進行ActorOrphan(動作者孤立)訊息效果的測試。
語法:
ActorScopeOrphan
ActorScopeSend(動作者範圍發送)
廣播使用者訊息至 ::User 範圍內的所有動作者。
此作弊碼是專門用在,當使用者想要發送訊息給某一範圍內的所有動作者這類稀有的案例上。
(題外話:此作弊碼看起來或許是可以將某動作者範圍內的所有模型調成紅色的好方法,但最好還是讓子級動作者脫離 ::Main 動作者並繼承 tintColor(色調顏色)屬性。接著使用者僅需發送 SetTintColor(設定色調顏色)訊息至範圍的 ::Main 動作者,然後只要依賴 hostedProp(主體屬性)繼承去修改顏色。當一個範圍混雜著不能被染成紅色的動作者(例如敵方衝擊的小型爆破效果)以及應該被染為紅色的動作者時,使用第二種方法通常是比較好的作法。因為廣播 tintColor 訊息的話,不管怎樣範圍內的所有模型都會被變成紅色的。)
語法:
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
列印出動作者身上與指定hostedProp(主體屬性)相關的所有資訊。如果 IncludeChildren(包括子級)參數為1的話,列印出該目標動作者的屬性及其所有的子項。
範例:
HostedPropDump 0 TintColor
HostedPropDump 1 TeamColor
HostedPropDumpAll(主體的所有屬性轉儲)
語法:
HostedPropDumpAll IncludeChildren
列印出與動作者有的所有主體屬性相關的全部資訊。如果 IncludeChildren(包括子級)參數為1的話,便對目標動作者的所有子項進行相同的操作。
RefDump(參考值轉儲)
語法:
RefDump RefName
列印出refName(參考名稱)所指定之動作者的除錯資訊。目前這只適用於系統參考表裡的動作者參考值,也就是指下列格式的參考值::actor.someUserRef、::scope.someUserRef 以及 ::global.someUserRef。
範例:
RefDump ::actor.someUserRef
RefTableDump(參考表轉儲)
語法:
RefDump RefTableType
列印出特定參考表內所有動作者參考值的除錯資訊。RefTableType(參考表類型)參數是有區分大小寫的,並且會出現Actor(動作者)、Scope(範圍) 或 Global(全域)等代符/符標。
範例:
RefDumpAll Actor
TextureDump(材質轉儲)
語法:
TextureDump
列印出與目標動作者相關的模型目前所使用的所有材質,並標示出哪些是與材質欄位有關,以及是否被替換成其他動態材質。
TextureDumpDB(材質轉儲資料庫)
語法:
TextureDumpDB
列印出可與目標動作者相關的模型進行動態材質調換的所有可用材質。
