自定义成就

自定义成就

允许你使用内容补丁向游戏中添加自定义成就。

这是一个简单的成就框架,可在收藏选项卡中添加自定义成就:

图片

自定义成就可以使用如上图所示的自定义图标,或使用默认的金色星星。

创建自定义成就

使用 Content Patcher 创建成就。

成就数据通过路径 custom_achievements_dictionary 添加到字典中,例如:

{  
    "Format": "1.23.0",  
    "Changes": [  
        {  
            "Action": "EditData",  
            "Target": "custom_achievements_dictionary",  
            "Entries": {  
                "FarmingLevelTen": {  
                    "ID": "FarmingLevelTen",  
                    "name": "专业农民",  
                    "description": "达到耕种等级十级。",  
                    "iconPath": "LevelAchievementsFarmingLevelTen",  
                    "drawFace": true,  
                    "achieved": false  
                }  
            },  
            "Update": "OnDayStart, OnLocationChange, OnTimeChange"  
        },  
        {  
            "Action": "EditData",  
            "Target": "custom_achievements_dictionary",  
            "Fields": {  
                "FarmingLevelTen": {  
                    "achieved": true  
                }  
            },  
            "When": {  
                "Query: {{SkillLevel:Farming}} > 9": true  
            },  
            "Update": "OnDayStart, OnLocationChange, OnTimeChange"  
        },  
        {  
            "Action": "Load",  
            "Target": "LevelAchievementsFarmingLevelTen",  
            "FromFile": "assets/FarmingLevelTen.png"  
        }  
    ]  
}  

这会在耕种技能等级大于 9 时将 achieved 字段设为 true。

当 Content Patcher 根据 Update 字段更新 achieved 字段时,会触发成就通知。

自定义图标

图标路径可以省略,以使用默认星星。否则,必须像上述示例一样由你的模组提供 PNG 文件。

默认情况下,成就的星星面部由游戏随机选择。如果设置 drawFace 为 false,则只会显示你的图标,不添加额外面部。

如果你使用图块集,还可以选择指定一个 iconRect 矩形,包含 X、Y、宽度和高度字段,以仅使用源 PNG 的一部分。

技术细节

需要 SMAPI 和 Content Patcher,使用 Harmony。

兼容 Mod Updater 以实现自动更新。

代码位于 https://github.com/aedenthorn/StardewValleyMods。

如果你想投诉、寻求帮助或帮助我测试模组,可以访问 我的 Discord 服务器。

我所有星露谷物语模组的列表可在 https://www.nexusmods.com/stardewvalley/articles/895 找到。