# SultanModLoader **Repository Path**: g_yl/sultan-mod-loader ## Basic Information - **Project Name**: SultanModLoader - **Description**: 苏丹的游戏Mod加载器 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-09 - **Last Updated**: 2025-05-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: 苏丹的游戏 ## README # 苏丹的游戏ModLoader - 该ModLoader基于[MelonLoader](https://melonloader.co/download) - [安装教程视频](https://www.bilibili.com/video/BV1AHVSzbEC5/) - [Mod开发教程视频](https://www.bilibili.com/video/BV1DaEMzMEkp) - [示例Mod项目](https://gitee.com/g_yl/sultan-game-mods) ### 工作原理 1. 第一次使用时会备份`StreamingAssets`到`StreamingAssetsBak` 1. 每次打开游戏都会先删除`StreamingAssets`并从备份中恢复原始数据 1. 读取`Mods`下的MOD,将启用的MOD应用到`StreamningAssets`中对应的文件 --- ## 安装 1. 将`MelonLoader`安装到游戏根目录 1. 将`SultanModLoader.dll`放在`Plugins`目录下 ## 注意事项 - 每次游戏更新后要删除`StreamingAssets`和`StreamingAssetsBak`文件夹并重新验证游戏资源完整性 ## 变更列表 - [TODO List](./TODO.md) --- ## 编写Mod ### Mod结构 ``` - Mods - ModName1 - mod.json - config - cards.json - ... - i18n - ... ``` - 编辑的`json`文件的相对路径需要和对应的`json`文件保持相同的相对位置,如下: - `StreamingAssets/config/cards.json` 与 `ModName/config/cards.json` - `StreamingAssets/config/rite/5000001.json` 与 `ModName/config/rite/5000001.json` - `StreamingAssets/i18n/zhTW/ui.json` 与 `ModName/i18n/zhTW/ui.json` ### `mod.json`配置文件 ```json { "Name": "Mod名称", "Version":"1.0.0", "Author":"作者", "Description":"描述", } ``` ### 数据文件 ``` { "create":{}, "replace":{} "merge":{} } ``` - 每个`json`文件都分为`create`、`replace`和`merge`三大部分 - `create`: 添加新数据,多个mod有重复索引仅第一个加载的mod生效。不支持多级索引 - `replace`: 根据索引替换value,支持多级索引 - `merge`: 根据索引合并对象或列表,支持多级索引 - 多级索引:以`$#`为分割的`Key` ### 示例 ```json // ModName/config/upgrade.json { "create":{ "3310002": { "id": 3310002, "name": "过去的荣光", "text": "获得5张<追忆过去的荣光>", "cost": 300, "condition": {}, "icon": "gain", //图标 "link_card": 2000475, //关联卡牌,点击图标弹出对应卡牌的详情界面 "effect": { "g.card": [ 2000475, "已拥有+5" ] }, "incompatible": 0 }, }, "replace":{ "3310002$#effect$#g.card": [ 2000475, "已拥有+6" ], // 相当于"3310002" --> "effect" --> "g.card":[ 2000475,"已拥有+6"] "3310002$#text": "获得6张<追忆过去的荣光>" } } // ModName/config/cards.json { "merge":{ "2000001$#tag":{"体魄":10,"激情":1}, "2000001$#equips":["武器", "武器"] } } ```