想在原版服务器上维持秩序,过去只有两条路:要么用外部的 RCon 工具,要么装一个每位玩家都得跟着安装的模组。其实还有第三条路——整套管理系统都能塞进任务的 init.c 里。
不需要模组,不需要客户端安装,也不需要服务器模组。你的玩家什么都不用装,也察觉不到任何变化,照常连接即可。谁是管理员由 SteamID64 决定,而不是玩家名字。
已在 DayZ 1.29.163451 上测试通过,Windows 独立服务器加客户端,切尔诺鲁斯地图。
包含什么
27 条聊天指令:带预设地点的传送、治疗、上帝模式、生成物品、踢人与封禁、天气与时间、管理员管理。
- 完整的车辆 ——
/vehicle sedan会在你面前放上一辆造好的车:所有部件已装好,四种液体加满,电瓶已充电。 - 完整的枪械 ——
/weapon m4a1把配件装齐的枪放在地上,弹匣已插入,旁边还有两个装满的备用弹匣。 - 传送预设 —— 内置 20 个切尔诺鲁斯地点,你自己的地点可以在游戏里用
/addloc添加。 - 封禁名单在玩家连接时就会生效,并且每条执行过的指令都会记入日志。
哪些部件配哪辆车,代码里并没有写死。脚本会在首次生成时读取游戏配置,据此建立一份覆盖所有插槽的索引。因此模组里的车辆和枪械同样有效,谁都不必去维护一张部件清单。
安装
把 init.c 复制到任务文件夹,覆盖原有文件。原版逻辑已经完整包含在内,不会丢失任何东西。
DayZServer\mpmissions\dayzOffline.chernarusplus\init.c启动服务器时指定配置文件夹(-profiles=)。首次启动时,系统会在那里创建四个文件:管理员名单、封禁名单、传送地点和日志。
如何成为管理员
你的 SteamID64 是以 7656119 开头的 17 位数字,可以在 Steam 个人资料的网址里找到。在 dayu_admins.txt 中每行写一个:
// DAYU admin list
76561198000000001
76561198000000002然后在游戏里输入 /reload,无需重启服务器。已经是管理员的人可以用 /addadmin <steamid> 添加其他人。
指令一览
打开聊天框,消息以 / 开头。
- 信息:
/help、/players、/pos - 玩家:
/heal、/god、/kill - 传送:
/tp <x> <z>、/goto <地点>、/locations、/addloc、/delloc、/tpto、/tphere - 生成:
/vehicle <名称>、/weapon <名称>、/spawn <类名> [数量] - 管理:
/kick、/ban、/unban、/bans - 服务器:
/say、/time、/weather、/admins、/addadmin、/deladmin、/reload
玩家名字可以简写,凡是要填名字的地方也都能填 SteamID。/vehicle 和 /weapon 只需给出名称片段:sedan 会给你 CivilianSedan,m4a1 则是 M4A1。
原版的限制
有两件事是任务脚本做不到的。
你输入的指令会留在聊天里,所有人都看得见。聊天消息由引擎自行分发,脚本无法拦下。若想避免,请用直接聊天频道下达指令,这样只有附近的玩家能看到。
无法实现 BattlEye 层面的真正封禁。这里的封禁名单是脚本自己的,会在玩家连接时把人踢出去;需要硬封禁时请同时使用 BattlEye。
下载
github.com/006mi4/dayz-vanilla-admin-menu
那里有 init.c 以及一份涵盖全部指令的详细英文说明。脚本本身采用 MIT 许可;文件中的原版部分归 Bohemia Interactive 所有。