
自定义快捷键
本模组允许你将控制台命令绑定到热键,并添加了许多新的控制台命令。详情请参阅说明。
查看大图TL;DR
这个模组对玩家和模组制作者都很有用。您可以通过编辑 hotkeys.json 来添加/编辑热键(更改将立即生效)。按键绑定可以在模组选项菜单中更改(按键 + 按键修饰符)。
一些功能:
- 您可以通过一次按键执行多个控制台命令
- 您可以使用热键在不同状态之间切换(每次按键执行不同的命令)
- 您可以在按住热键时持续重复执行命令
- 您可以为热键使用可选的辅助按键
- 添加了许多新的控制台命令(例如使用/装备物品或将模块连接到海虾号)
MOD 选项菜单
默认情况下,所有热键都已添加到模组选项菜单中。每个热键有两个绑定按钮,但与原生绑定不同,它们不是用于主/次按键,而是用于按键和可选的按键修饰符。
两个按钮均可用于绑定按键以及绑定修饰键。
您可以使用 Control、Alt 和 Shift 键作为修饰键(左右键被视为不同的键)。您也可以单独使用这些键,在这种情况下它们将像普通键一样工作。
如果你同时绑定两个修饰键或两个非修饰键,那么只会使用第一个键。
您可以通过将鼠标指针悬停在绑定按钮上并按Delete键来清除绑定(无需点击按钮)。
HOTKEYS.JSON
所有热键都在模组文件夹的hotkeys.json中指定。您可以直接从游戏内打开此文件(模组选项菜单中的按钮)。
对 hotkeys.json 的更改会立即生效(在您切换回游戏时),您无需重新加载游戏即可添加或编辑热键。
示例 hotkeys.json 包含三个热键:
{
"hotkeys": [
{
"key": "A",
"command": "some_console_command"
},
{
"key": "B",
"command": "some_console_command1; some_console_command2",
"label": "两个命令"
},
{
"key": "LeftAlt+C",
"command": "some_console_command value1 | some_console_command value2",
"mode": "PressRelease",
"label": "使用修饰键切换",
"hidden": true
}
]
}
字段描述
每个热键的描述格式如下:
{
"key": "A",
"command": "some_console_command",
"mode": "Press",
"label": "某个标签",
"hidden": false
}
字段 key 和 command 是必需的,其他字段是可选的。
"key"(必需):可以是空字符串(""),可以是单个按键(例如"A"或"LeftAlt")或带有一个修饰键的按键(例如"LeftShift+F1")。
"command"(必需):与此热键关联的控制台命令。您可以在此处使用任何有效的控制台命令和两种分隔符——分号(;)和竖线(|)。更多信息请参阅第5节。
"mode"(可选,默认值:"Press"):热键模式。热键可以在三种不同模式下工作:
- 按下模式(0或"Press"):按键按下时命令将执行一次
- 按下/释放模式(1或"PressRelease"):按键按下时命令将执行一次,按键释放时将再次执行
- 保持模式(2或"Hold"):按键按住期间每帧都会执行命令
"label"(可选,默认值:""):模组选项菜单中该选项的标签。若省略此字段或留空,则将使用命令本身作为标签。
"hidden"(可选,默认值:false):若设为true,该选项将在模组设置菜单中隐藏,但快捷键仍保持激活状态。
命令分隔符
您可以在"命令"字段中使用两种分隔符 - 分号(;)和竖线(|)。
如果你需要按一次键执行多个命令,可以用分号将它们分开,例如:"command": "item titanium 5; item silver 10; item gold 15"。
所有这些命令将作为一个单一动作执行(每个命令在自己的帧上)。此外,你可以使用等待命令在命令之间添加延迟(更多信息请参见第6.1节)。
对于更复杂的行为,您可以使用竖线作为分隔符。竖线将命令字符串拆分为独立命令的列表。列表中的每个命令将在单独的热键激活时依次执行。
例如,假设你有这个命令字符串:"command": "speed 10 | speed 1" 并为热键使用默认的 "Press" 模式。那么,当你第一次按下热键时,将执行命令 "speed 10"。
在下次按下热键时,将执行命令"speed 1"。第三次按下将再次执行"speed 10",依此类推。
使用相同的命令字符串和"PressRelease"模式,第二个命令"speed 1"将在您释放热键时执行。
使用"保持"模式时,在热键按住期间,第一和第二条指令将在每一帧交替执行。
你可以在同一个命令字符串中使用两种分隔符,例如 "daynightspeed 10; speed 10 | daynightspeed 5; speed 5 | daynightspeed 1; speed 1"。竖线的优先级高于分号。
新命令
本节介绍此模组新增的控制台命令。
必需参数用尖括号括起(例如<width>),可选参数用方括号括起(例如[itemtype])。
6.1. 通用命令
addhotkey <command>
添加一个带有指定命令的热键并打开选项菜单。从控制台使用它,可以快速向hotkeys.json中添加一个热键模板。
示例:addhotkey item titanium 10
setresolution <width> <height> [fullscreen:{yes|no}]
设置Subnautica窗口分辨率。第三个参数默认为true。
示例:setresolution 1280 720 false
setwindowpos <x> <y>
设置Subnautica窗口位置。
示例: setwindowpos 10 10
fov <value>
改变视野范围。潜水镜在视野值较低时会遮挡视线,可使用devtools_hidegui命令将其隐藏(详见6.5节)。
示例:fov 60
showmessage <message>
在屏幕左上角显示消息。
示例:showmessage 你好,世界!
clearmessages 清除当前在屏幕左上角显示的所有消息。
showmodoptions 打开选项菜单并切换到"模组"选项卡。
lastcommand [index]
执行最后输入的控制台命令。参数是从控制台历史记录末尾开始的命令的零基索引(默认为0)。
示例(执行倒数第二个命令):lastcommand 1
wait <seconds>
在由分号分隔的命令之间添加延迟(更多信息请参见第5节)。
示例(在两个命令之间添加半秒延迟):command1; wait 0.5; command2
6.2. 物品/槽位命令
bindslot <slotID> [itemtype]
将库存中的特定物品分配给快速栏槽位ID(槽位ID是从零开始的索引)。如果省略物品类型,则槽位将清除之前的绑定。
示例(将手电筒绑定到第一个快捷栏):bindslot 0 flashlight
equipslot [slotID]
将物品装备到快速槽 slotID 中(slotID 是从零开始的索引)。如果省略 slotID,则当前装备的物品将被收起。
示例(在第一个槽位装备物品):equipslot 0
useitem <itemtype> [itemtype2] .. [itemtypeN]
使用背包中的消耗品或装备可装备物品。如果指定了多个物品类型,将使用列表中第一个找到的物品。
示例(喝一瓶水):useitem filteredwater disinfectedwater bigfilteredwater
6.3. 载具命令
vehicle_enter 进入附近的海蛾号或海虾号的命令。
vehicle_upgrades 打开附近海卡车或虾式机甲升级界面的命令。
seatruck_forcedexit 使用此命令无论连接了多少模块都可以从海蛾号外部退出。仅在玩家驾驶海蛾号时有效。
seatruck_dropmodules [keep_modules]
从海蛾号断开模块连接,但保留前 keep_modules 数量的模块连接(默认值为零)。仅在玩家驾驶海蛾号时生效。
示例(断开除前两个模块外的所有模块):seatruck_dropmodules 2
seatruck_dropmodules_end [drop_modules]
断开与海卡车的 drop_modules 数量模块的连接,从卡车的末端开始计数(默认为1)。仅在玩家驾驶海卡车时有效。
示例(断开最后一个模块的连接): seatruck_dropmodules_end 1
seatruck_forcedconnect [maxdistance] [maxangle] 将最近的松散模块连接到海卡车上。模块应距离卡车后部小于最大距离(默认距离为10)。模块与卡车方向之间的角度应小于最大角度(默认角度为30度)。建议使用默认值。仅当玩家驾驶海卡车时有效。
6.4. Game* 命令
game_startnew [game_mode:{survival|freedom|hardcore|creative}]
在指定游戏模式下开始新游戏。仅在主菜单中有效。参数默认为'creative'。
示例: game_startnew survival
game_load [saveslot]
加载指定槽位ID的已保存游戏(你可以使用UITweaks查看存档的槽位ID)。仅在主菜单中有效。默认加载最后保存的游戏。
示例: game_load 10
game_save 将当前游戏保存到其存档位。
game_quit [to_desktop:{true|false}]
退出游戏。参数默认为 false(退出到主菜单)。
示例:game_quit true
6.5. 开发者工具
devtools_toggleterrain 切换调试信息菜单(原版中为F1键)。
devtools_togglegraphics 切换调试图形菜单(原版中为F3)。
devtools_toggleframegraph 切换性能图表。
devtools_hidegui [state:{none|mask|ui|maskui|all}]
0 或 none - 不隐藏任何内容
1 或 mask - 隐藏潜水员面具
2 或 ui - 隐藏HUD界面
3 或 maskui - 隐藏面具和HUD界面
4 或 all - 隐藏面具、HUD界面和玩家模型
如果省略状态参数,命令将循环遍历所有状态。
示例:devtools_hidegui mask
命令示例
本节展示了用于游戏游玩和模组开发的各种命令使用示例。您可以将它们作为自己命令的起点。这些及其他示例命令可在模组文件夹中的 hotkeys.sample.json 中找到(您可以复制部分命令或直接将其重命名为 hotkeys.json)。
"bindslot 0 flashlight; equipslot 0 | bindslot 1 propulsioncannon; equipslot 1"
"bindslot 0 seaglide; equipslot 0; autoforward true | bindslot 0 flashlight; equipslot 0; autoforward false"
切换海蛾号和手电筒的命令(同时切换自动前进)
"devtools_hidegui mask; fov 5 | fov 60; devtools_hidegui none"
放大镜头的命令(在各种情况下都很有用)。潜水镜在低视野值下效果不佳,因此需要隐藏它。您可能希望将其与按下释放热键模式一起使用。
"setresolution 1280 720 false; setwindowpos 10 10 | setresolution 2560 1440"
切换全屏模式的命令(主要在模组开发时有用)。同时将游戏窗口移动到角落。
"spawn exosuit; warpforward 10; speed 10; vehicle_enter; wait 2; speed 1; clearmessages"
生成海虾号并进入其中的命令(用于模组开发时使用)。使用 speed 和 wait 命令来加速生成和进入的动画(wait命令受speed命令影响,因此实际等待0.2秒)。
要求:
- QMod管理器
- SML助手
安装:
将压缩包解压到您的 QMods 文件夹中
更新检查:
此模组会定期通过互联网检查更新。 您可以在 mod.json 中禁用它(将 "UpdateCheck" 设置为 false)。
源代码:
https://github.com/zorgesho/SubnauticaMods/tree/master/CustomHotkeys

还没有人评论,去客户端里说两句吧。
评论在新手盒子客户端中发表,这里同步展示。