如何设置 TShock 组和权限?
TShock 组与权限
TShock 的权限基于组,而不是原版的 ops.json。请在 VeryGames panel 中打开控制台,然后输入下面的命令。这里使用的软件是 TShock,不是 tModLoader。不要把 .tmod 文件上传到这里,它们不会被加载。
默认组
每位玩家都属于一个组。该组决定他们可以执行哪些命令。TShock 默认已经提供以下组:
- guest — 未登录。刚进入世界的任何人都会属于这个组。
- default — 使用 TShock 用户登录后所属的组。普通玩家在执行 /login 后会进入该组。
- owner / admin — 服务器中已存在的管理组。请保留它们。不要删除拥有服务器控制权限的组。
先列出所有组,然后查看其中一个:
/group list /group info owner /group info default/group info 会显示父组以及该组拥有的所有权限。复制权限到新等级之前,先用它查看清楚。
创建组
先创建一个空组,再逐个添加真实的权限名称。例如:创建一个能够传送和踢人的 vip 等级。
/group add vip /group addperm vip tshock.tp /group addperm vip tshock.admin.kick删除权限的方法相同:
/group delperm vip tshock.admin.kick常用权限名称(TShock 检查的是这些字符串,而不是聊天命令本身):
- tshock.tp — 传送自己
- tshock.tp.others — 传送其他玩家
- tshock.warp — 使用 warp
- tshock.admin.kick — 踢出玩家
- tshock.admin.ban — 封禁玩家
- tshock.admin.mute — 禁言玩家
- tshock.item — 生成物品
不要把 * 添加到公开等级上。这个通配符代表所有权限,包括用户管理。只应将它保留给 owner 或 SuperAdmin。可选方式:/group add vip default 会创建一个以 default 为父组的 vip,这样 vip 会从已登录用户的权限集开始,而不是从空白开始。
分配玩家
一个组只有在某个 TShock 用户 被加入其中后才会生效。请先创建该用户(参见 如何在 Terraria TShock 服务器上添加管理员),然后把他们移动到目标组:
/user group PlayerName vip请将 PlayerName 替换为 TShock 用户名;如果两者不同,不要填写 Terraria 角色名。如果玩家已经在世界中,他们需要重新执行 /login。
请将 SuperAdmin / owner 保留给创建服务器的人。不要把该账号移到 vip,否则你会失去管理组和用户所需的命令。
REST API
REST API 用于工具和脚本(状态机器人、web panel、自动化等)。它不是你在 Terraria 中输入来加入世界的地址。游戏连接使用的是 panel 中显示的 IP 和游戏端口。REST 使用的是不同的主机和端口,这些信息也会显示在 panel 中。
- 请从 panel 中复制 REST 的主机和端口,不要自行猜测。
- 请将 TShock 配置中的 RestApiPort 保持为 panel 设置的值。修改这个值会破坏 panel 的端口映射,公开端口与配置端口将不再一致。
- API token 对应的是一个拥有足够组权限的 TShock 用户。请先创建该用户,将其加入一个能够执行脚本所需命令的组,然后使用该用户名和密码申请 token。guest 或空的 vip 组不足以执行管理员调用。
如果脚本无法连接,请先检查 panel 中的 REST 端口。然后确认该 TShock 用户能够在服务器上登录。不要手动再开第二个 REST 端口。
未知命令
如果控制台回复说 /group 或 /user 是未知命令,说明当前进程尚未运行 TShock,或者它的插件未能加载。
- 确认此服务器使用的是 Terraria 的 TShock 软件,而不是原版,也不是 tModLoader。
- 通过 panel 重启服务器,并等待其上线。
- 再次打开控制台,然后重试 /group list。
原版 Terraria 没有组功能。tModLoader 的模组也无法在此软件上加载。如果你需要使用模组,那是另一种产品。