服务器端角色 (SSC)
与许多游戏(例如 Minecraft)不同,Terraria 默认允许玩家将角色从单人游戏或其他多人服务器带到不同的服务器之间。这有利有弊。虽然玩家可以享受寻找物品和与朋友合作的自由,但这带来了明显的安全问题。毕竟,如果玩家可以从任何地方获得物品,这意味着他们可以将这些物品带入尚未达到游戏进度点的世界中。更糟糕的是,他们可能通过非法手段获得了这些物品。
通过 Zidonuke 和 Re-Logic 之间的合作引入,Terraria 支持服务器端角色的概念,并配有兼容的服务器替代方案。基础游戏支持服务器端角色,但不实现存储后端或同步系统。启用后,游戏客户端不再将数据持久化到磁盘,并将本地数据的许多方面(但不是全部)的权限交给服务器。
在 TShock 中启用时,SSC 接管玩家的库存管理控制。在此模式下,玩家会获得由服务器所有者描述的起始库存,然后只有在连接到服务器时才保留该库存。当他们断开连接时,他们的原始角色数据仍将保存在本地,确保他们不会丢失本地数据。
对于开发者来说,TShock 的 SSC 实现应被视为参考实现。使用这个系统可以做的事情比 TShock 所做的更多。
限制
在 TShock 5(Terraria 1.4.4.x)中,装备有一些注意事项。如果您不小心,可能会发生数据丢失或损坏。 如果玩家被上debuff、被控制或死亡,玩家的客户端将忽略装备同步包。TShock 的 Disable()
方法、蛛网和其他上debuff效果可能导致服务器和客户端之间的不同步。此外,如果玩家使用物品或以其他方式被上debuff,他们也可能不同步。因此,我们强烈建议告诉玩家在装备更改期间要小心,不要使用物品,否则会有数据丢失或损坏的风险。
使用 Dimensions
或其他将多个服务器连接在一起的代理工具的管理员,如果这些代理在服务器切换窗口期间(在玩家登录和同步之前)禁用或上debuff玩家,可能会遇到此问题。
设置 SSC
要设置 SSC,只需在 tshock
配置文件夹中的 sscconfig.json
中将 Enabled
更改为 true
。
提供了一个示例配置文件:
{
"Settings": {
"Enabled": true,
"ServerSideCharacterSave": 5,
"LogonDiscardThreshold": 250,
"StartingHealth": 100,
"StartingMana": 20,
"StartingInventory": [
{
"netID": -15,
"prefix": 0,
"stack": 1
},
{
"netID": -13,
"prefix": 0,
"stack": 1
},
{
"netID": -16,
"prefix": 0,
"stack": 1
}
],
"WarnPlayersAboutBypassPermission": true
}
}
在此示例配置中,StartingInventory
清单描述了每个玩家加入时拥有的起始物品。在这种情况下,是铜装备。您可以通过添加其他条目来自定义此设置。
netID
和 prefix
可以在官方 Terraria 百科中找到。例如,此块后的更新配置文件将 Zenith
(天顶剑)添加为新玩家的起始物品。
{
"Settings": {
"Enabled": true,
"ServerSideCharacterSave": 5,
"LogonDiscardThreshold": 250,
"StartingHealth": 100,
"StartingMana": 20,
"StartingInventory": [
{
"netID": -15,
"prefix": 0,
"stack": 1
},
{
"netID": -13,
"prefix": 0,
"stack": 1
},
{
"netID": -16,
"prefix": 0,
"stack": 1
},
{
"netID": 4956,
"prefix": 0,
"stack": 1
}
],
"WarnPlayersAboutBypassPermission": true
}
}
每个字段的解释可以在 ssc config 中找到。
作为管理员游玩
如果您作为管理员游玩,请确保您在 owner
组或类似组中。我们真的不建议作为 superadmin
游玩。superadmin
和其他拥有 tshock.ignore.ssc
权限的用户不会使用服务器端角色。这意味着他们能够从他们的个人角色文件中带入物品,并且数据根本不会保存到服务器。
如果 TShock 玩家拥有 tshock.ignore.ssc
权限,并且配置文件中的 WarnPlayersAboutBypassPermission
设置为 true
,您将在服务器控制台中看到警告,指示玩家未正确保存。
上传数据
有时,您希望从加入服务器的玩家导入玩家数据。例如,如果您信任您的朋友不会带入被修改的物品,您可以将他们的数据导入系统。这可以通过 /uploadssc
命令完成。
/overridessc
命令可用于从给定玩家上传 SSC 数据。这个命令和 /uploadssc
的区别在于:/overridessc
上传他们加入时的数据,而 /overridessc
只会将他们当前的状态保存到数据库中。