Tweaksmith

Tweaksmith

掌控你的合成!此模组让你能在游戏运行时编辑配方,无需修改核心游戏文件。通过简单的 Lua 和 JSON 配置文件,轻松调整配方产物、合成时间、材料需求及经验值倍率。

脚本

[center]Palworld Tweaksmith Mod[/center]

💡 这是关于什么的? 这个模组用于对游戏进行简单的生活品质改进或平衡调整。它使用UE4SS脚本库以Lua语言编写。该模组会在运行时修改核心物品制作数据表(DT_ItemRecipeDataTable)。不同于替换游戏文件,它会拦截数据并覆盖用户在JSON配置文件中定义的特定配方参数。 这允许你全局调整以下关键配方属性:

  • 输出数量:每次制作生产的物品数量。
  • WorkAmount: 制作所需的基础时间(以秒为单位)。
  • 材料:所需材料及每种材料的数量。
  • 经验倍率:完成制作后所获得经验值的倍率。

⚙️ 如何使用 所有修改都通过结构明确的JSON文件进行管理。

1. 识别配方名称 每个修改的键值必须是游戏文件中配方的精确内部名称。这些名称区分大小写。为了方便查找,这里提供了一个小导出列表RecipeNames.csv。我没有测试列表中的所有名称,但到目前为止没有发现任何问题。这个列表是由AI生成的,使用时请谨慎。

2. 配置一个配方 你可以在JSON文件中定义你的配方修改。为此,在项目的Recipes目录中创建一个新的或编辑已有的JSON文件。

Tweaksmith
├── Scripts/
└── 配方/
    ├── global.json
    ├── sphere.json
    └── ammo.json

文件名几乎可以是任何内容,但不能包含特殊字符,且必须具有**.json扩展名。可以有多个JSON文件,模组将使用所有文件。JSON中的配方对象应按下文所示构建。所有属性修改均为可选**项,此示例仅展示可能性。

{
    "帕鲁球": {
        "OutputAmount": 10,
        "WorkAmount": 10,
        "ExpRate": 1,
        "材料": {
            "1": { "Name": "木头", "Amount": 5 },
            "2": { "Name": "石头", "Amount": 10 },
            "3": { "Name": "无", "Amount": 0 }
        }
    }
}

**修改材料 ** 材料索引编号从[1]到[5]。

  • 要更改材料:提供新的名称(例如,"IronIngot")和新的数量。
  • 移除材料的方法:将名称设置为"无",数量设置为0。

**全局修饰符 ** 如果你想要对所有配方生效的配方修改,你可以用星号 (*) 作为键来定义你的配方。所有全局修改将在任何显式修改之前应用。

{
    "*": {
        "WorkAmount": 30
    }
}

这将使所有配方的WorkAmount设置为30秒。

如果你想在不同JSON文件中应用多个全局修改,那么需要明确指定这些修改的优先级。这是因为底层机制会将所有修改合并为一个后再应用更改。如果不提供优先级,全局修改的合并顺序将不可预测,可能导致意外结果。 要对全局配置应用优先级,只需在星号后添加一个数字。数字越大,其合并顺序越靠后。默认情况下,所有优先级级别均为零。

{
    "*": {
        "WorkAmount": 30,
        "OutputAmount": 20
    },
    "*3": {
        "WorkAmount": 20
    }
}

这将把每个配方的WorkAmount 设为 20 秒,OutputAmount 设为 20。

分组 ** 如果你不想对每个配方都应用修改,而只是针对一组配方,可以利用 ItemType 属性。每个物品有两种类型,ItemTypeAItemTypeB。你可以让全局修改器在应用更改前检查这些 ItemTypes,这样就可以将某些物品排除在全局修改之外。 你可以通过在配置键上指定ItemType来实现,每个类型之间用冒号(:)连接。 模式如下:*::ItemType 的两种规范都是可选的**,但 ItemTypeB 不能在没有 ItemTypeA 的情况下存在。组的规范越具体,后者将被合并,不受优先级影响。

{
    "*": {
        "WorkAmount": 30
    },
    "*:弹药": {
        "WorkAmount": 20
    },
    "*:Material:MaterialIngot": {
        "WorkAmount": 10
    }
}

这个例子会将所有物品配方的WorkAmount 设为 30 秒,所有弹药 类型配方设为 20 秒,而所有材料锭 类型配方设为 10 秒。 您可以在 ItemTypeA.csvItemTypeB.csv 中找到可用的 ItemTypes

动态修饰符 ** 如果你想相对于原始配方的值进行修改,可以通过提供一个与动态修饰符模式正确匹配的特定字符串来实现,将其设置为某个属性的值。 模式是这样的:::<修饰符>::<操作数>**。 可用的修饰符有:

  • ADD:将操作数添加到对应的属性中。
  • 减法:从对应属性中减去操作数。
  • 乘法:将对应的属性乘以操作数。

这些动态修饰符可以应用于每个基于数字的配方属性。 这是一个示例。

{
    "*": {
        "WorkAmount": "::MULTIPLY::0.5"
    }
}

这个例子会将每个配方的WorkAmount减半。

⬇️ 前提条件 本模组需要已安装并正常运行的UE4SS(虚幻引擎4/5脚本系统),且目前仅支持最新"实验性"版本。更多详情请访问UE4SS仓库

🛠️ 安装

1. 找到Mod目录 导航到UE4SS Mods文件夹。通常看起来像这样:...\Palworld\Pal\Binaries\Win64\ue4ss\Mods

2. 下载模组 **3. 安装模组 ** 将模组内容解压到您的 ...\Mods 文件夹中。 此后,文件夹结构应大致如下所示:

ue4ss/
└── 模组/
    └── 调整师/
        ├── 脚本/
        │   └── main.lua
        │   等等。
        └── 配方/
            └── your_recipes.json

4. 应用引擎兼容性配置 由于游戏引擎的更新,需要使用特殊的配置文件才能让 UE4SS 与《幻兽帕鲁》的内存布局正常配合。 要获得所需的配置:

  1. 下载帕鲁世界优化版UE4SS发布对应的版本。
  2. 在下载的ue4ss文件夹中查找MemberVariableLayout.ini文件。
  3. 复制此文件并粘贴到你的《幻兽帕鲁》UE4SS主安装文件夹中:...\Palworld\Pal\Binaries\Win64\ue4ss

最终的布局应该是这样的:

ue4ss/
└── MemberVariableLayout.ini

**5. 在 UE4SS 中启用模组 ** 回到主UE4SS Mods文件夹 ...ue4ss\Mods并打开 mods.txt 文件。 将以下内容添加到文件的末尾:

改进工匠 : 1

保存并关闭mods.txt。该模组现已激活,将在你下次启动《幻兽帕鲁》时加载!