
控制台命令运行器已更新
一个SFSE插件,可在某些事件发生时自动运行用户自定义的控制台命令。
查看大图Console Command Runner(已更新) 是一个 SFSE 插件,它会自动运行来自用户自定义 .toml 文件中的一系列控制台命令。
如何安装
安装 Data 文件夹。
你可以手动安装。
- 将其放置到游戏根目录,并与那里已有的 Data 目录合并。
你也可以使用模组管理器。
- 如果你使用 Mod Organizer 2,请让模组管理器处理此模组的压缩包。
- 如果你使用 Vortex,请让模组管理器处理此模组的压缩包。
我无法帮助你解决你的安装问题。 如果你的 "Documents\My Games\Starfield\SFSE\Logs" 目录下没有生成任何 "ConsoleCommandRunner.log" 文件,那么这就是你自己的安装问题了。
如何使用
- 在你的 "Data\SFSE\Plugins\ConsoleCommandRunner" 目录中创建一个具有唯一名称的 .toml 文件。可以读取任意数量的 .toml 文件,不仅限于单个文件。这确保了与其他模组的兼容性。
- 在这个新的 .toml 文件中,你需要创建一个如下所示的结构:
[[Event]]
EventType = "DataLoaded"
Commands = ['SetGS fZKeyMaxForce 90000', 'bat MyFile', 'bat "My File With Spaces"']
[[Event]]
EventType = "OnMenuOpenCloseEvent"
asMenuName = "BSMissionMenu"
abOpening = true
Commands = ['Player.RestoreAV StarPower 1000;CGF "Debug.Notification" "Player was powered"']
[[Event]]
EventType = "GameLoaded"
aiLoadType = 2
Commands = ['005788.MoveTo Player']
[[Event]]
EventType = "OnItemEquipped"
abEquipping = true
asActorString = "FC_HT_RonHope"
aItemStrings = ['Clothes_Baseball_Cap_01_HopeTech']
Commands = ['Print "That damn cap again..."']
[[Event]]
EventType = "OnKeyPress"
abGamepad = false
aiPrimaryKey = 0x54
aiSecondaryKey = 0xA4
aMenusBlacklist = ['PAUSED', 'FanfareMenu']
Commands = ['PRID Player;APS "Actor";CF "Actor.KillEssential" Selected;PRID']
每个单独的事件都以 "[[Event]]" 标签开头。在事件中,需要定义事件类型。如果事件有任何参数,需在下方列出。然后列出要触发的实际命令。任何有效的控制台命令都应该可以在此处使用。命令应该用撇号括起来(这样,对于任何接受字符串参数的命令,引号也可以正常工作),并用逗号分隔。 就是这样!
当你从 NexusMods 复制粘贴内容时要小心,可能存在不可见符号,我指的是零宽不中断空格(ZWNBSP)之类的。它们会破坏解析,请再次检查。
有效的事件类型
DataLoaded
此事件将在游戏数据完全加载时(这发生在主菜单中,在加载你的游戏进程之前)运行已注册的控制台命令。这只会发生一次,所以如果你退出到主菜单,此事件将不会再次触发。
你可以使用此事件来更改那些在包括保存和角色切换在内的整个游戏会话中持续存在的设置。这意味着使用 "SetGS fZKeyMaxForce 90000" 没问题,但 "005788.AddKeyword 1453AA" 是没用的(你的更改将在加载存档时被忽略)。
OnMenuOpenCloseEvent
此事件将在你打开或关闭不同菜单时运行注册的控制台命令。它有 2 个选项 —— 菜单名称和打开/关闭条件。例如,
asMenuName="BSMissionMenu"搭配abOpening=true将在你打开追踪任务的任务菜单时触发。所有有效的菜单名称都列在此处或此处(共 66 个)。你可以使用此事件在你的玩家角色已经进入游戏世界并且你可以控制他们时处理一些事情。在这里,你可以访问持久对象引用和 CGF(CallGlobalFunction)控制台命令。
GameLoaded
此事件将在你开始新游戏(包括新游戏+)或加载存档并进入游戏世界时运行注册的控制台命令。它类似于
OnMenuOpenCloseEvent,但有一个整数选项 ——aiLoadType。0 = 分配的命令将在新游戏和加载存档时都执行,1 = 仅在新游戏时执行,2 = 仅在加载存档时执行。你可以使用与
OnMenuOpenCloseEvent相同的所有命令,因为它会在游戏过程中触发,但只在最开始触发一次。OnItemEquipped
此事件将在角色装备或卸下物品时运行注册的控制台命令。这种情况随时可能发生,所以请确保你使用了良好的过滤条件。关于过滤,此事件有 3 个选项。
abEquipping- 布尔值,true = 装备,false = 卸下。asActorString- 在这里你可以指定一个字符串,可以是角色的编辑器 ID、角色基础编辑器 ID、带插件的角色 Form ID 或带插件的角色基础 Form ID。什么是带插件的 Form ID?这是一个看起来像这样的字符串:"starfield.esm:0x27A23C" —— 它包含小写的插件名称、冒号、0x 前缀和局部记录 Form ID。为什么有这么多选项?许多角色没有编辑器 ID,使用 Form ID 是唯一的解决方案。幸运的是,玩家总是有 "PlayerRef" 编辑器 ID,但你也可以使用 starfield.esm:0x14、Player 或 starfield.esm:0x7。aItemStrings- 这是一个字符串数组。你已经知道这是什么了,"Commands" 也是一个字符串数组。这里只支持编辑器 ID,但你也可以指定关键词(Keyword)编辑器 ID 来按武器或护甲类型等进行过滤。此数组只支持 "与" (AND) 逻辑,这意味着物品必须包含所有指定的编辑器 ID。如果你指定 Wakizashi 和 WeaponTypeMelee1H,那没问题。但如果你使用 Wakizashi 和 WeaponTypeRanged,过滤会排除所有物品,因为游戏中没有远程的 Wakizashi。OnKeyPress
此事件将在你按下指定的鼠标、键盘或游戏手柄按键时运行注册的控制台命令。此事件有 4 个选项,名为
abGamepad、aiPrimaryKey、aiSecondaryKey和aMenusBlacklist。abGamepad是布尔值,它决定设备类型;如果为 false,则监听鼠标和键盘,并使用虚拟键码;如果为 true,则监听游戏手柄,并使用 GLFW 游戏手柄按钮。aiPrimaryKey是主要选项,它是整数,决定触发控制台命令的键码。aiSecondaryKey是修饰键,也是整数;在按下aiPrimaryKey之前必须已经按下此键,否则aiPrimaryKey无效;你可以通过设置aiSecondaryKey = -1来禁用它。aMenusBlacklist是一个字符串数组。如果这里指定的任何菜单名称处于打开状态,则不会执行命令。额外的好处是,你可以在这里添加 "PAUSED" 菜单名称,它相当于Utility.IsGameMenuPaused()Papyrus 函数的快捷方式。
文本替换
CCR(U) 从 1.7.0 版本开始具有此功能,它允许你将自定义文本注入到你的命令中。如果你想为特定命令启用此功能,请在命令开头插入 "$" 符号,如下所示:"$Player.AddItem F 100"。现在,关于替换本身。
- 所有替换块都使用这种结构:
{Mode:ValueA:ValueB:Default},它是由 3 个冒号分隔并用花括号括起来的 4 个字符串。 - 如果 Mode 等于 "Form",那么 ValueA 应为 ESM 插件名称,ValueB 应为局部记录 FormID。执行时,此块将被解析为带 8 位数字的完整十六进制 FormID,允许你将表单传递给控制台命令。例如,
{Form:sfbgs019.esm:0x01D:0}将变成 FE00501D 或类似的,具体取决于你的加载顺序。 - 如果 Mode 不等于 "Form",它将被视为一个从游戏根目录开始的 .toml 文件路径。在这种情况下,ValueA 应为节(section)名称,ValueB 应为文件内的键(key)。例如,如果你把这个文件安装到你的 Data 文件夹中,
{Data/CCR(U).toml:YourSection:YourFloat:0.0}将被转换为 0.335。需要提及一点,布尔值在 TOML 中使用 "true" 和 "false",但 CCR(U) 会将它们解析为 "1" 和 "0",因为这是游戏所期望的。 - 如果指定的表单缺失,或文件数据不存在,任何替换都可能失败。在这种情况下,失败的块将被解析为默认值,就像这样:
{Form:Plugin.esx:0x805:F4AE8}>> F4AE8 (Plugin.esx 不存在,因为它的扩展名是错误的)。
此功能也是一个导出函数,你可以从你的 SFSE 插件中使用它。在此处查看示例。L141-L147 - 查找函数,L30-L41 - 使用函数。
显示 1-12 条,共 12 条
以上为资源接口提供的文件记录。安装时请在客户端确认文件、游戏版本及依赖。
还没有人评论,去客户端里说两句吧。
评论在新手盒子客户端中发表,这里同步展示。