命令控制台
本地命令模式 注: * 你在重新加载世界后必须重新输入每一个命令。 Lua 支持可变数量参数的函数,例如,你只想生成一个野牛的预设,你可以不填 "amount" 参数:"c_spawn('beefalo')"。 如果你不是主机(或者它是一个专用服务器,你是这个服务器的管理员),大部分命令需要远程执行。在控制台中按 Ctrl 来切换远程命令模式。一小部分命令(例如显示地图)仍然可以在本地模式下完成。 远程命令模式 许多饥荒命令 仍然在DST(多人版饥荒)中可用,因此你仍然可以阅读它。 黑色下划线字体为需要加入数值或实例以运行的部分,如: c_spawn("生物or实体",数量) 目录 1 简单命令 2 玩家命令 3 其他玩家命令 4 世界命令 5 网络/服务器命令 6 杂项命令 简单命令[] 生成实例 c_spawn("prefab",amount) c_spawn("生物or实体or物品",数量) 利用 c_spawn("生物or实体or物品",数量) 命令,在鼠标所指处生成一定数量的指定预设。 获得物品 c_give("prefab",amount) c_give("物品",数量) 在你的物品栏中生成一定数量被指定的"预设"。只适用于可以被储存在物品栏的背包 和物品 。 注意,如果你在“prefab”处填入生物或实体,他们将会生成在鼠标所在的地方,这使得上一个命令变得用处不大(除非你要让物品放在地上而不是放在背包里) 脚本(未测试) c_doscenario(scenario) c_doscenario(项目) 应用一个选择的项目(脚本)并执行它。 生命值 c_sethealth(percent) c_sethealth(-1到1) 用百分比设置你的生命值。注:使用分数 0.90 = 90% 你同样可以设置比1大的数字,但是你的血量不会超过上限 理智值 c_setsanity(percent) c_setsanity(-1到1) 用百分比设置你的理智值。注:使用分数 0.90 = 90% 你同样可以设置比1大的数字,但是你的理智不会超过上限 饥饿值 c_sethunger(percent) c_sethunger(-1到1) 用百分比设置你的饥饿值。注:使用分数 0.90 = 90% 你同样可以设置比1大的数字,但是你的饥饿值不会超过上限 湿度 c_setmoisture(percent) c_setmoisture(-1到1) 用百分比设置你的湿度。注:使用分数 0.90 = 90% 你同样可以设置比1大的数字,但是你的湿度不会超过上限 温度 c_settemperature(degrees) c_settemperature(-20到85) 设置你的温度。 玩家温度的范围是-20到85,你同样可以设置比-20小或比85大的数字,但是你的温度不会超过上限 上帝模式 c_godmode() c_godmode(true or false,开启或关闭)(可以为空,为空时默认为切换另一状态) 玩家的理智值(实测有误)、[brother 上帝模式不是无敌的,食用减少精神值的食物仍会扣除对应精神,而且湿度仍会上升下降 超级上帝模式 c_supergodmode() c_supergodmode(true or false,开启或关闭)(可以为空,为空时默认为切换另一状态) 和上帝模式一样但会将你的各项统计数据设置为满,即使你将它关闭。与c_godmode()相似,,它也会复活你(通过 c_supergodmode() 复活后不会将你置于上帝模式)。再次使用命令停用上帝模式。 使用超级上帝模式同样会将你的湿度清零并使你的温度变为25,在月岛时使用超级上帝模式会将理智值加满而不是清空 设置额外的移动速度 c_speedmult(multiplier) c_speedmult(0+) 标准额外的移动速度为 1。设置为 2 使你以两倍的速度移动,设置为 20 可以让你轻松地穿过墙和 "越过 " 水。 移速可以设置为负,但是实际效果为数值的绝对值,而非倒着走 这儿有其他一些命令,但是它们很难使用而且用处不大。 玩家命令[] 注:如果你不是管理员的客户端发送远程命令,那么大多数命令将不会有效(按 Ctrl 键切换控制台远程命令模式)。 动作预测 ThePlayer:EnableMovementPrediction(true) ThePlayer:EnableMovementPrediction(true or false,开启或关闭)(可以为空,为空时默认为切换另一状态) 默认情况下为开启状态,将 true 改为 false 可以关闭动作预测,关闭动作预测通常对战斗有一些帮助。该命令只有客户端执行才有效,主机或服务器执行将不会有效。(必须在控制台的本地模式下执行该命令才有效,也就是必须关闭控制台的远程命令模式) 译者注:动作预测也可以直接在游戏设置中关闭,设置 --> 延迟补偿(Lag Compensation),将其修改为 无(None)就可以关闭动作预测。 创造模式 ThePlayer.components.builder:GiveAllRecipes() ThePlayer.components.builder:GiveAllRecipes(true or false,开启或关闭)(可以为空,为空时默认为切换另一状态) 你可以合成任何东西。 生命值上限 ThePlayer.components.health:SetMaxHealth(value) ThePlayer.components.health:SetMaxHealth(数值) 改变你的角色 的生命 值上限 理智值上限 ThePlayer.components.sanity:SetMax(value) ThePlayer.components.sanity:SetMax(数值) 改变你的角色 的理智 值上限 饥饿值上限 ThePlayer.components.hunger:SetMax(value) ThePlayer.components.hunger:SetMax(数值) 改变你的角色 的饥饿 值上限 暂停饥饿 ThePlayer.components.hunger:Pause(true) ThePlayer.components.hunger:Pause(true or false,开启或关闭)(可以为空,为空时默认为切换另一状态) 你的角色 不再降低饥饿值。 食用腐烂食物仍会降低饥饿值 伤害倍数 ThePlayer.components.combat.damagemultiplier = value ThePlayer.components.combat.damagemultiplier = 数值 改变你的角色 的伤害倍数 海狸 ThePlayer.components.beaverness:SetPercent(.01) ThePlayer.components.beaverness:SetPercent(.01)(未测试,等待补充) 把伍迪 变成海狸 。把 .01 改为 1 可以让你变回伍迪。 联机版不可用 其他玩家命令[] 注:下面许多命令通常用于玩家,像 c_godmode() 或者 c_sethealth(1),通过先使用 c_select(AllPlayers[number])可以对其他玩家执行命令。所以你需要一个玩家列表来知道各个玩家的编号(number ): 列出所有玩家的用户名和编号 c_listallplayers() c_listallplayers(true or false,开启或关闭)(可以为空,为空时默认为切换另一状态) 实测结果为false无效 取一个玩家 AllPlayers[number] AllPlayers[玩家编号(点击tab有显示)] AllPlayers[1] 取的是主机玩家。其他玩家的编号显示在记分板上(某些情况下编号有可能是错的,你可以先用 c_listallplayers() 来查看每个用户编号的用户名和角色)。大部分玩家命令可以用 AllPlayers[number] 代替 ThePlayer。 对所有玩家使用同一命令 for k,v in pairs(AllPlayers) do command end 只修改command,用其他命令代替command,使用 "v" 代替命令中的 AllPlayers[number]。例如, "for k,v in pairs(AllPlayers) do c_move(v) end" 将会把所有玩家都移动到鼠标所指的位置。 移动一个玩家 c_move(AllPlayers[number]) 移动玩家到鼠标所指的位置。 杀死一个玩家 AllPlayers[number]:PushEvent('death') 杀死玩家。 复活玩家 AllPlayers[number]:PushEvent('respawnfromghost') 复活玩家。 传送至玩家 c_goto(AllPlayers[number]) 传送到对应编号的玩家,玩家编号可以通过 c_listallplayers() 获取。 丢掉玩家物品栏的物品 AllPlayers[number].components.inventory:DropEverything() 丢掉对应编号的玩家物品栏的所有物品,玩家编号可以通过 c_listallplayers() 获取。 让玩家重新选择角色 c_despawn(AllPlayers[number]) 使用该命令将会删除玩家物品栏的物品而不会掉落,所以推荐你先让玩家的物品丢掉他们的物品,或者使用上一条命令 DropEverthing()。 截至2016年6月25日,增加了一个新的命令来指定玩家。你可以通过一个玩家名UserToPlayer('玩家名') 来指定一个玩家而不是使用玩家编号。例如,杀死一名叫做 "PlayerA" 的玩家,他的用户编号为5,你可以执行: AllPlayers[5]:PushEvent('death') 但在此之前你必须先运行 c_listallplayers() 来知道玩家编号,十分麻烦。 为了简单一点地执行命令,你可以把命令改成: UserToPlayer('PlayerA'):PushEvent('death') 世界命令[] 传送到预设 c_gonext("prefab") 输入该命令后,你将被传送到第一个预设的实体.如果存在多个预设的实体,控制台日志将会显示实体数量的列表,再次执行相同的命令将会传送玩家到下一个在世界中生成的预设的实体。 删除鼠标下的实体 ConsoleWorldEntityUnderMouse():Remove() c_select():Remove() 输入该命令后,将会删除你鼠标下的物品。在专用服务器上使用第二个命令,因为第一个不能在专用服务器上使用。 显示地图 minimap = TheSim:FindFirstEntityWithTag("minimap") TheWorld.minimap.MiniMap:ShowArea (0,0,0,10000) 这是一个本地命令,且客户端不可用。 跳过一天 TheWorld:PushEvent("ms_nextcycle") 跳过时间 TheWorld.net.components.clock:OnUpdate(16*30*x) 跳过 x 天。将 x 修改为所要跳的天数(例如,16*30*4.5 为跳过4.5天) 警告:数值太大可能会冻结游戏。(取决于电脑的运算速度) 跳过时间单元并更新 LongUpdate(X) 对世界对象执行 "LongUpdate" 事件并跳过X个时间单元 注:每一个时间部分有30个时间单元。想要跳过一天可以使用 LongUpdate(480) 或者用乘法计算,例如 LongUpdate(X*16*30) 或者 LongUpdate(X*TUNING.TOTAL_DAY_TIME) X 为想要跳过的天数。 译者注:每天有16个小部分,每部分有30个时间单元,每单元为现实中的一秒,所以一天为现实中的8分钟。(详见日夜周期 ) 跳过时钟阶段 TheWorld:PushEvent("ms_nextphase") 跳过当前时钟阶段。 设置时钟阶段 TheWorld:PushEvent("ms_setclocksegs", {day=x,dusk=y,night=z}) 设置每个时钟阶段的时间部分的数量。如果 x + y + z 加起来超过 16 将会产生错误。注意这样的修改第二天会复原。例子: TheWorld:PushEvent("ms_setclocksegs", {day=14,dusk=1,night=1}) 非常长的白天,非常短的黄昏和夜晚(只给黄昏一个时间部分和夜晚一个时间部分) 设置季节的时钟阶段 TheWorld:PushEvent("ms_setseasonclocksegs", {summer={day=sx,dusk=sy,night=sz}, winter={day=wx,dusk=wy,night=wz}}) 为指定季节设置每个时钟阶段的时间部分的数量。如果 x + y + z 加起来超过 16 将会产生错误。不像设置时钟阶段一样,该设置是永久性的。例子: TheWorld:PushEvent("ms_setseasonclocksegs", {summer={day=14,dusk=1,night=1}, winter={day=13,dusk=1,night=2}}) 非常长的白天,非常短的黄昏和夜晚(夏天:只给黄昏一个时间部分和夜晚一个时间部分,冬天:只给黄昏一个时间部分和夜晚两个个时间部分) 设置季节长度 TheWorld:PushEvent("ms_setseasonlength", {season="summer", length=15}) 设置季节的长度。 进入夏季 TheWorld:PushEvent("ms_setseason", "summer") 进入夏季 进入冬季 TheWorld:PushEvent("ms_setseason", "winter") 进入冬季 当添加了巨人的统治DLC,会有额外的命令TheWorld:PushEvent("ms_setseason", "spring") 和 TheWorld:PushEvent("ms_setseason", "autumn") 开始下雨 TheWorld:PushEvent("ms_forceprecipitation") 开始下雨 停止下雨 TheWorld:PushEvent("ms_forceprecipitation", false) 停止下雨。这包括青蛙雨 。 生成闪电 TheWorld:PushEvent("ms_sendlightningstrike", ConsoleWorldPosition()) 闪电击中玩家,如果靠近避雷针的话,则击中避雷针。 陨星撞击 c_spawn("shadowmeteor", 1) 陨星撞击在鼠标的位置。随机生成不同类型的岩石。 激活所有的事件 for k, v in pairs(SPECIAL_EVENTS) do if v ~= SPECIAL_EVENTS.NONE then local tech = TECH[k] if tech ~= nil then tech.SCIENCE = 0 end end end function IsSpecialEventActive(event) return true end 同一时间内激活所有事件 。 测量距离 print(math.sqrt(ThePlayer:GetDistanceSqToInst(ConsoleWorldEntityUnderMouse()))) 在控制台日志中输出玩家和鼠标指着的物体的距离(默认情况下按Ctrl + L显示控制台日志)。 网络/服务器命令[] 踢/封禁一个玩家 TheNet:Kick(userid) TheNet:Ban(userid) 注意,这可以通过记分板更简单得完成。userid 可以通过 AllPlayers 表来获取,先找到你想要踢出服务器的玩家的编号(见上面的其他玩家命令 部分),然后使用 AllPlayers[#].userid。 例子: c_listallplayers()[1] (KU_aabbccdd) Player1 [2] (KU_AABBCCDD) Player2 如果想要在服务器上封禁 Player2,控制台中输入命令 TheNet:Ban(AllPlayers[2].userid) 或者 TheNet:Ban("KU_AABBCCDD") 临时封禁一个玩家 TheNet:BanForTime(userid,time_in_seconds) 可以短时间内封禁玩家。userid 为将要被封禁的玩家的 KU id。获取到它后,它可以被放到这种格式里: TheNet:BanForTime("KU_aabbccdd", 120). 执行后会封禁相应KU id的玩家120秒。如果你的服务器拥有多个世界(洞穴和上层世界),这个命令需要在两个服务端都输入。 连接服务器 c_connect("IP address", port, "password") 如果无法进行常规的连接,可以使用该命令直接连接一个IP地址。默认情况下,端口是10999。如果服务器没有密码的话,你可以不填密码参数:c_connect("10.0.0.8", 10999) 重新加载世界 c_reset() 不保存游戏并重载世界(也就是重载到上一个储存点)。如果你是一个客户端的话,该命令可能会造成你的游戏崩溃(除非你用远程命令模式发送该命令)。 重新生成世界 c_regenerateworld() 重生生成世界。 重新生成世界碎片 c_regenerateshard() 重新生成世界碎片。 保存 c_save() 强制服务器立即保存。(服务器通常在夜晚结束的时候自动保存) 关闭服务器 c_shutdown( true / false) true 会保存游戏,false 不会保存游戏。 c_shutdown() 和 c_shutdown(true) 是一样的。 回档 c_rollback(count) 回档服务器一定次数。 c_rollback() 会回档一次,c_rollback(3) 会回档三次。 启用/禁用新玩家加入 TheNet:SetAllowIncomingConnections( true / false ) 默认情况下设置为 true (新玩家可以加入)。设置为 false 将禁止玩家进入。 发送一个服务器公告 c_announce("announcement") 可以发送一个公告给玩家,例如即将关闭 / 重启服务器,让玩家知道即将断线。 杂项命令[] 清空停尸间(讣告) ErasePersistentString("morgue") 清空停尸间,需要关闭并重启游戏才能看到清空效果。 计算预设的数量 c_countprefabs("prefab") 在专用服务器上计数结果将会输出在控制台上 生成虫洞 请逐步输入,或用分号连接多行为一行 用这个命令生成虫洞1: worm1 = c_spawn("wormhole") 用这个命令生成虫洞2: worm2 = c_spawn("wormhole") 创建虫洞1到虫洞2之间的连接: worm1.components.teleporter.targetTeleporter = worm2 还有回来的连接: worm2.components.teleporter.targetTeleporter = worm1 完成! 生成一只被驯化了的牛 local beef = c_spawn("beefalo"); beef.components.hunger:DoDelta(400); beef.components.domesticatable:DeltaTendency("DEFAULT", 1); beef:SetTendency(); beef.components.domesticatable.domestication = 1; beef.components.domesticatable:BecomeDomesticated(); 用下面的值替换 DEFAULT 来改变牛的特征。"RIDER", "ORNERY", "PUDGY"
控制台/饥荒联机版中的命令
