PalServerSettings

PalServerSettings

这是一个为UE4SS提供的服务端《幻兽帕鲁》世界设置覆盖工具。它能将您选定的世界设置应用到运行中的专用服务器并保持生效,可实时替代编辑PalWorldSettings.ini文件,核心优势在于:客户端无需安装任何内容。相关数值(以及显示数值的界面文本)将通过游戏常规机制传送至玩家。

[bold]PalServerSettings[/bold]

一个基于 UE4SS 的[bold]服务端[/bold]帕鲁世界设置覆盖模组。它可以将你选择的世界设置应用于运行中的专用服务器并持续生效——这是对编辑 PalWorldSettings.ini 的实时替代方案,其关键优势在于:[bold]客户端无需安装任何内容。[/bold]数值(以及显示它们的 UI 文本)通过游戏正常的复制机制传递给玩家。

[bold]功能[/bold]

  • 覆盖 [bold]105[/bold] 个世界设置字段(共 108 个,其中三个不可设置——请参阅限制)。
  • [bold]持久化[/bold]数值。游戏会在任何更改后的几秒钟内从内部缓存恢复设置;此模组会按间隔重新应用,让你的数值保持生效而非被还原。
  • [bold]传递给客户端。[/bold]它会写入已复制的设置结构体,因此连接的玩家无需客户端模组即可在游戏玩法和 UI 文本(例如死亡界面)中看到正确的数值。
  • [bold]绕过原版的最小/最大限制。[/bold]超出游戏内滑块允许范围的数值(例如 ExpRate = 7.5)也能被接受并保持。

它[bold]不会[/bold]添加物品、帕鲁、配方或新内容——仅更改现有的世界设置数值。如需进行数据/蓝图模组修改,请参阅 PalSchema

[bold]工作原理[/bold] 帕鲁的世界设置位于服务器 PalOptionSubsystem 的一个结构体中。此模组会按间隔将你期望的数值写入 [bold]三[/bold] 个位置:

  1. PalOptionSubsystem.OptionWorldSettings —— 游戏读取的实时数值。
  2. PalOptionSubsystem.OptionWorldSettingsCache —— 游戏从中恢复数值的内部副本。仅写入 #1 会在约 30 秒内被还原;同时写入缓存则能使更改持久化。
  3. PalOptionReplicator.OptionWorldSettings —— 推送到客户端的[bold]已复制[/bold]结构体。写入此数据可使客户端 UI 和游戏玩法显示正确的数值,而无需任何客户端模组。

由于游戏的所有 UI 和游戏玩法均读取这些结构体(而非直接读取 .ini 文件),因此更改结构体会改变所有下游内容。

[bold]安装方法[/bold]

  1. 在[bold]你的专用服务器[/bold]上安装[bold]帕鲁专属[/bold]版本的 UE4SS(标准版本会在帕鲁上崩溃):https://github.com/Okaetsu/RE-UE4SS/releases/tag/experimental-palworld
  2. 将 PalServerSettings 文件夹复制到:\Pal\Binaries\Win64\ue4ss\Mods\
  3. 确保 PalServerSettings 文件夹中存在一个空的 enabled.txt 文件(模组自带一个)。
  4. 编辑 Scripts/config.lua 以选择你的设置(见下文)。
  5. 启动/重启服务器。

客户端正常连接——[bold]他们无需安装任何内容。[/bold]

[bold]配置[/bold] 所有设置均位于 Scripts/config.lua 中。每个字段均已列出、记录说明并[bold]注释掉[/bold]并附有其游戏默认值。要覆盖某个设置,请移除开头的 -- 并设置你的数值:

return {
    DeathPenalty = 0,  -- 无:玩家死亡保留物品
    ExpRate      = 2.0, -- 双倍经验
    WorkSpeedRate = 3.0,
}

任何保留注释状态的设置都将使用游戏自身的默认值。

[bold]注意[/bold]

  • [bold]枚举字段接受数值而非名称。[/bold] DeathPenalty = 0 表示无。

枚举参考位于 config.lua 顶部:

  • DeathPenalty:无=0,物品=1,物品和设备=2,全部=3
  • Difficulty:无=0,简单=1,普通=2,困难=3,极难=4,自定义=5
  • RandomizerType:无=0,区域=1,全部=2
  • LogFormatType:文本=0,JSON=1
  • [bold]数值字段接受任何数字[/bold]——原版滑块限制不适用。

config.lua 中显示的范围仅供参考,并非上限。

  • 更改需在[bold]服务器重启[/bold]后生效。

[bold]验证是否生效[/bold] 服务器日志(ue4ss/UE4SS.log)会在载入后几秒钟显示:

[ServerSettings] loaded. First apply in 8000 ms, then every 5000 ms.
[ServerSettings] applying settings (subsystem found). fields/pass=N

fields/pass(你的字段数量) x 3 个目标。例如,配置了 4 个字段会显示 fields/pass=12

[bold]限制[/bold]

  • [bold]仅限服务器功能。[/bold]客户端没有游戏内编辑 UI。原版世界设置菜单受限于客户端的本地 IsServer() 检查,服务器无法在客户端上绕过此检查,因此玩家的设置标签页需要单独的客户端模组。此模组特意设计为仅服务端使用。
  • [bold]有三个字段无法设置[/bold](在 config.lua 中标记为 [UNSUPPORTED]):
    1. AdditionalDropItemWhenPlayerKillingInPvPMode(FName 类型——写入会导致崩溃)
    2. CrossplayPlatforms(数组)
    3. DenyTechnologyList(数组)
  • [bold]仅限 Windows 专用服务器[/bold](UE4SS 的要求)。

[bold]故障排除[/bold]

  • [bold]日志中无 [ServerSettings] 行[/bold] → 模组未加载。请检查 enabled.txt 是否存在于模组文件夹中,以及你正在使用帕鲁专属版本的 UE4SS。
  • [bold]服务器启动时崩溃[/bold] → 你很可能使用了标准版 UE4SS。请使用上方链接的帕鲁版本。
  • [bold]某项设置不生效[/bold] → 确认该行已取消注释(无开头的 -- ),数值类型正确(枚举 = 数字,布尔值 = true/false),并且你已重启服务器。如果它是三个 [UNSUPPORTED] 字段之一,则按设计会被跳过。
  • [bold]编辑了配置但无变化[/bold] → 文件必须以 UTF-8 [bold]无 BOM[/bold] 格式保存。BOM 会导致 Lua 无法加载脚本。