> > 动作者作弊命令

自定义地图首页地图制作教程

动作者作弊命令

在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.<RefName>

DTC

来自于全局引用表的一个动作者引用。

  • ::scope.<RefName>

DTC

来自于包含了作用域引用表的一个动作者引用。

  • ::actor.<RefName>

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
  • 模型链接 – 模型数据登记用于光束时的名称。

动作者作弊命令用法

当用户在编辑器中运行自己的地图时,可以在聊天框里输入动作者作弊命令。

输出会进入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

转储一个由数据结果创建的所有动作者列表,如下所示:

<On Terms="UnitBirth.Marine" Send="Create"/>

该类型的动作者创建模式被称为自动创建,因为动作者会响应消息而自动进行自我创建。这与下述创建模式有些不同:

<On Terms="ActorCreation" Send="Create SomeActor"/>

因为在这里创建消息明确指定 了一个动作者去创建。

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

显示出与目标动作者相关联的可用于模型的动态纹理交换的所有可用纹理。