在《饥荒联机版》(Don’t Starve Together, DST)这款充满挑战的生存游戏中,指令代码为玩家提供了一种强大的方式来修改游戏状态、进行测试、恢复数据或简单地获得乐趣。这些代码通常是游戏开发者用于调试和测试的工具,但对玩家开放后,成为了解决特定问题或丰富游戏体验的途径。
指令代码是什么?为何玩家会使用它们?
简单来说,饥荒联机版的指令代码(或称控制台命令)是一系列特殊的文本命令,玩家可以直接在游戏内的控制台输入,从而绕过常规的游戏机制,直接影响游戏世界、角色状态、物品生成等。它们是游戏底层功能的暴露。
玩家为何会使用指令代码?
玩家使用指令代码的原因多种多样,并非所有人都出于“作弊”的目的:
- 测试与调试: 对于模组(Mod)开发者或想了解游戏机制的玩家,指令是测试物品、生物行为、游戏事件最快捷的方式。
- 解决突发问题: 游戏过程中遇到恶性Bug,例如角色卡死、关键物品丢失、世界生成错误等,指令代码可能是唯一的救援手段。例如,使用传送指令脱离卡点,或使用生成指令恢复丢失的物品。
- 服务器管理: 服务器管理员需要使用指令来踢出、封禁恶意玩家,或者在出现重大问题时回档(rollback)服务器状态。
- 学习与探索: 玩家可以通过生成各种生物或物品来观察它们的属性和行为,无需花费大量时间在生存模式下获取。
- 创造与实验: 在非正式的游戏或沙盒模式下,玩家可以使用指令快速构建基地、召唤大量生物进行混战,或者尝试一些非常规的游戏玩法。
- 降低难度或快速体验: 对于不追求极限生存、只想体验游戏内容的玩家,或者在多次失败后感到沮丧的玩家,使用指令获取资源或改变状态可以帮助他们继续游戏。
需要注意的是,在官方公共服务器或未经所有玩家同意的私服中使用指令代码可能会影响其他玩家的游戏体验,甚至可能被服务器管理员踢出或封禁。因此,通常建议在自己搭建的服务器、单人游戏(虽然联机版主要针对多人,但也可以本地开服自己玩)或与朋友协商一致的私服中使用。
如何开启和使用指令控制台?
使用指令代码的第一步是打开游戏内的控制台。
开启控制台:
在游戏运行时,按下键盘上的“~”键(通常位于Esc键下方,Tab键上方)。部分键盘布局可能需要按其他键,但“~”是最常见的。
按下“~”键后,屏幕下方会出现一个文本输入框。这就是控制台。同时,游戏可能会暂停或进入慢动作,具体取决于服务器设置。
输入和执行指令:
- 在控制台输入框中键入你想要执行的指令代码。
- 确保指令的语法、大小写(特别是物品/生物名称)和参数都正确。
- 按下键盘上的“回车”(Enter)键执行指令。
执行成功后,通常不会有明显的提示信息,但游戏状态会立即发生改变。如果指令输入错误,通常也不会有错误提示,只是指令不会生效。
关闭控制台:
再次按下“~”键即可关闭控制台输入框,恢复正常游戏画面和速度。
指令的基本语法:
大多数指令都是通过调用游戏内部对象或函数的特定方法来实现的。常见的指令结构包括:
- 客户端指令: 以 c_ 开头。这些指令通常影响当前玩家的客户端或视角。例如,c_give() 是一个常用的客户端指令。
- 服务器指令: 这些指令通常需要通过一个特定的服务器对象来调用,比如 TheWorld(代表游戏世界)或 TheNet(代表网络系统)。这些指令通常会影响整个服务器上的所有玩家和游戏状态。例如,修改时间需要通过 TheWorld 对象。
- 玩家对象指令: 通过 ThePlayer 对象调用,影响执行指令的那个玩家。例如,修改生命值需要通过 ThePlayer 对象。
许多指令是函数的调用,需要括号 () 和参数。参数之间用逗号 , 分隔,字符串类型的参数需要用双引号 ” “ 括起来。
例如:c_spawn(“log”, 10) – 生成10个木头,”log” 是字符串参数,10 是数字参数。
指令代码的类型与分类
虽然无法在这里列出所有指令,但我们可以根据功能将它们分类,并讲解如何使用常见类别的指令。了解这些分类有助于你更快地找到需要的指令,并理解它们的作用范围(只影响自己还是影响所有人)。
1. 物品与生物生成指令
这是最常用的一类指令,用于在玩家当前位置或指定位置生成游戏中的任何物品、生物或建筑原型(prefab)。
-
c_spawn(“prefabname”, amount)
在玩家鼠标指向的位置生成指定数量的物品或生物。
“prefabname”:需要生成的物品/生物/建筑在游戏中的内部名称。这是字符串类型,必须用双引号括起来。例如:”log”(木头)、”flint”(燧石)、”beefalo”(牛牛)、”spider_den”(蜘蛛巢)。注意大小写通常是敏感的。
amount:可选参数,指定生成的数量。如果省略,默认为1。这是数字类型。示例:
生成1个切斯特:c_spawn(“chester”)
生成20块石头:c_spawn(“rocks”, 20)
生成5只兔子:c_spawn(“rabbit”, 5) -
c_give(“prefabname”, amount)
将指定数量的物品直接添加到当前玩家的物品栏中。通常用于获取物品而不是在地上生成。参数同 c_spawn。
示例:
给自己1个曼德拉草:c_give(“mandrakeroot”)
给自己10个草:c_give(“cutgrass”, 10)
2. 玩家状态与控制指令
这类指令用于修改玩家自身的属性,如生命、饥饿、精神,或者进行传送等操作。这些指令通常通过 ThePlayer 对象调用。
-
生命值控制:
设置最大生命值:ThePlayer.components.health:SetMaxHealth(value)
设置当前生命值百分比:ThePlayer.components.health:SetPercent(value) (value范围通常是0到1,例如0.5代表50%)示例:
设置最大生命值为300:ThePlayer.components.health:SetMaxHealth(300)
将当前生命值回满:ThePlayer.components.health:SetPercent(1) -
饥饿度控制:
设置当前饥饿度百分比:ThePlayer.components.hunger:SetPercent(value) (value范围0到1)
示例:
将饥饿度回满:ThePlayer.components.hunger:SetPercent(1)
-
精神值控制:
设置当前精神值百分比:ThePlayer.components.sanity:SetPercent(value) (value范围0到1)
示例:
将精神值回满:ThePlayer.components.sanity:SetPercent(1)
-
移动速度控制:
设置玩家移动速度乘数:c_speedmultiplier(multiplier)
示例:
将速度变为2倍:c_speedmultiplier(2)
恢复正常速度:c_speedmultiplier(1) -
传送指令:
传送到指定玩家身边:c_goto(player_index)
需要先获取玩家索引。可以通过指令 TheNet:GetClientTable() 查看当前在线玩家列表及其索引(通常是一个数字)。在控制台输入这个指令后,会打印出玩家列表信息。示例:
假设通过 TheNet:GetClientTable() 查到你想传送到的玩家索引是2:c_goto(2)
-
无敌模式:
开启无敌模式:ThePlayer.components.health:SetInvincible(true)
关闭无敌模式:ThePlayer.components.health:SetInvincible(false)
3. 世界状态与环境控制指令
这些指令影响整个游戏世界的状态,如时间、天气、季节等。它们通常通过 TheWorld 对象调用,并且往往需要服务器管理员权限才能执行。
-
时间控制:
设置一天中的时间:TheWorld.components.playtime:SetTime(time)
时间参数 time 的单位是每小时300。黎明是6*300=1800,白天结束是15*300=4500,黄昏结束是18*300=5400,夜晚结束是30*300=9000(第二天黎明)。这是一个循环值。示例:
设置为黎明:TheWorld.components.playtime:SetTime(1800)
设置为黄昏开始:TheWorld.components.playtime:SetTime(4500)
设置为午夜:TheWorld.components.playtime:SetTime(6000) -
天气控制:
设置雨强度:TheWorld.state.weather.rain.intensity = value (value范围0到1)
设置雪强度:TheWorld.state.weather.snow.intensity = value (value范围0到1)
设置是否结冰:TheWorld.state.isfrozenstate = true/false示例:
开始下大雨:TheWorld.state.weather.rain.intensity = 1
停止下雨:TheWorld.state.weather.rain.intensity = 0
让整个世界结冰:TheWorld.state.isfrozenstate = true -
跳过一天:
直接跳到第二天:TheWorld.components.playtime:SetDay(day)
这里的day是你想设置的游戏天数。示例:
跳到第10天:TheWorld.components.playtime:SetDay(10)
4. 服务器管理指令
这些指令用于管理服务器上的玩家,通常只有服务器所有者或被添加为管理员的玩家才能执行。它们通常通过 TheNet 对象调用。
-
获取玩家列表和ID:
显示当前在线玩家列表及其 User ID 和 Client Index:TheNet:GetClientTable()
这个指令会在控制台打印出信息,你需要查看这些信息来获取要踢出或封禁玩家的 User ID 或 Index。User ID 是玩家的唯一标识,Client Index 是他们当前连接的编号。 -
踢出玩家:
踢出指定 User ID 的玩家:TheNet:Kick(userid)
踢出指定 Client Index 的玩家:TheNet:DisconnectClient(client_index) (注意这里用的是 DisconnectClient)示例:
踢出 User ID 为 “KU_xxxxxxxx” 的玩家:TheNet:Kick(“KU_xxxxxxxx”)
踢出 Client Index 为 3 的玩家:TheNet:DisconnectClient(3) -
封禁玩家:
封禁指定 User ID 的玩家:TheNet:Ban(userid)
封禁指定 Client Index 的玩家(不常用):TheNet:BanClient(client_index)示例:
封禁 User ID 为 “KU_xxxxxxxx” 的玩家:TheNet:Ban(“KU_xxxxxxxx”)
-
回档服务器:
回档服务器到指定帧数前:c_rollback(frames)
frames 参数代表要回退的游戏帧数。一秒游戏大约有30帧。回档是一个非常强力的功能,可以用于恢复到出现问题之前的状态,但会丢失回档后所有玩家的进度。示例:
回档服务器到10000帧前(约5分钟):c_rollback(10000)
-
管理管理员列表:
将指定 User ID 的玩家添加为管理员:TheNet:AddAdmin(userid)
将指定 User ID 的玩家从管理员列表中移除:TheNet:RemoveAdmin(userid)示例:
将 User ID 为 “KU_xxxxxxxx” 的玩家添加为管理员:TheNet:AddAdmin(“KU_xxxxxxxx”)
(注意:服务器的管理员列表通常存储在服务器文件 adminlist.txt 中,指令方式是临时添加或移除,永久的管理需要修改该文件。)
5. 其他实用指令
-
列出所有原型名称:
显示游戏中所有物品、生物、建筑等的内部名称(Prefab Name):c_listallprefabs()
这个指令的输出非常庞大,会在控制台显示,用于查找 c_spawn 或 c_give 需要的精确名称。 -
显示玩家坐标:
显示当前玩家在地图上的坐标:ThePlayer.Transform:GetWorldPosition()
使用指令代码的注意事项
虽然指令代码提供了强大的功能,但在使用时需要注意以下几点:
- 权限问题: 大部分影响整个服务器或修改玩家状态的指令(特别是服务器管理指令)需要管理员权限才能执行。如果你不是服务器所有者,需要联系所有者将你的 User ID 添加到管理员列表。
- 语法精确性: 指令、对象名称、方法名称通常是大小写敏感的(特别是 Lua 语法部分),而 prefab name 也是大小写敏感的。参数类型(字符串用引号,数字不用)必须正确。一个小小的拼写错误或标点错误都会导致指令无效。
- 影响范围: 客户端指令(c_开头)通常只影响你自己的游戏表现,而服务器指令(通过 TheWorld, TheNet 调用)会影响所有连接到服务器的玩家。在公共服务器上谨慎使用或避免使用可能影响他人的指令。
- 潜在风险: 滥用或错误使用指令可能导致游戏不稳定、存档损坏、数据丢失或产生无法预料的游戏Bug。例如,回档指令是不可逆的,请务必谨慎使用。
- 游戏更新: 游戏更新可能会改变、移除或添加新的指令,或者改变现有指令的语法或功能。你在旧版本中使用的指令在新版本中可能不再有效。
- Prefab 名称查找: 游戏中存在成千上万的 prefab,记住所有名称是不现实的。当需要生成特定物品或生物时,最可靠的方法是查阅最新的饥荒联机版 Wiki 或使用 c_listallprefabs() 指令来查找准确的名称。
掌握了饥荒联机版的指令代码,你将能够更好地掌控游戏体验,无论是用于解决问题、进行测试还是创造独特的玩法。但请记住,它们是强大的工具,请负责任地使用。
哪里可以找到更多指令?
本篇文章无法包含饥荒联机版的所有指令代码,因为数量非常庞大且部分指令可能只有在特定情境下有用。如果你需要查找某个特定功能对应的指令,或者想了解更多高级指令,推荐访问以下资源:
- 饥荒联机版相关的玩家社区论坛和讨论区:经常有玩家分享实用的指令或解答相关疑问。
- 专门的饥荒联机版 Wiki 或数据库网站:这些网站通常会收录游戏中绝大多数物品、生物、建筑的 prefab 名称,以及已知的大量控制台指令及其用法。
- 观看相关的游戏教程视频:一些视频作者会演示指令的使用方法和效果。
通过这些途径,你可以找到更详尽的指令列表和更深入的使用教程。