《雾锁王国》Shroudtopia模组管理器由作者“s0t7x”精心制作而成,这个模组管理器的主要特点是动态加载和卸载模组,无需重启游戏,提供了极高的灵活性来增强游戏体验。
1、解压文件。
2、从 release 部分获取最新的 modloader 二进制文件。
3、将文件解压缩到 Enshrouded 游戏或专用服务器文件夹中。
如果不存在,请创建一个 'mods' 文件夹,并将您的 mod DLL 放入其中。
5、启动游戏/服务器 - 如果 'shroudtopia.json' 不存在,则会生成默认配置。
6、如果 Shroudtopia 加载正确,您应该在服务器控制台中看到如下内容:
首次启动时,将创建一个默认配置文件“shroudtopia.json”。默认情况下,所有 Mod 都处于停用状态,因此您必须通过调整配置来手动激活它们。
[shroudtopia][INFO] Config loaded.
[shroudtopia][INFO] Wait before injection. Configured boot delay is 3000ms.
配置
每个 Mod 都可以通过 'shroudtopia.json' 配置文件启用或自定义。这是一个示例配置:
每个 Mod 都公开了它的配置选项,可以在 'shroudtopia.json' 中更改。例如,要启用或禁用 basics mod 的特定功能:
{
"active": true,
"bootDelay": 3000,
"enableLogging": true,
"logLevel": "INFO",
"mods": {
"basics": {
"active": true,
"no_stamina_loss": true,
"no_fall_damage": true,
"no_craft_cost": true,
"inf_item_use": true,
"bypass_altar_limit": true
},
"Flight Mod": {
"active": true
}
},
"updateDelay": 500
}
"basics": {
"active": true,
"no_stamina_loss": true,
"no_fall_damage": false,
"no_craft_cost": true,
"inf_item_use": true,
"bypass_altar_limit": true
}
创建 Mod
Shroudtopia 的 Mod 被编写为动态库 (DLL),需要包含 './shroudtopia/' 中的 'shroudtopia.h'。它们必须实现 'Mod' 接口并提供工厂函数 'extern “C” __declspec(dllexport) Mod* CreateModInstance()'。
下面是一个示例工厂函数:
extern "C" __declspec(dllexport) Mod* CreateModInstance() {
return new BasicsMod();
}
Mod 接口
每个 Mod 都必须实现以下功能才能与 Modloader 集成:
'ModMetaData' 包含有关 Mod 的基本信息:
class Mod {
public:
virtual ~Mod() {}
virtual ModMetaData GetMetaData() = 0;
virtual void Load(ModContext* modContext) = 0;
virtual void Unload(ModContext* modContext) = 0;
virtual void Activate(ModContext* modContext) = 0;
virtual void Deactivate(ModContext* modContext) = 0;
virtual void Update(ModContext* modContext) = 0;
};
struct ModMetaData {
std::string name;
std::string description;
std::string version;
std::string author;
std::string targetShroudtopiaVersion;
bool hasClientSupport;
bool hasServerSupport;
};
ModContext
“ModContext”被传递给每个 Mod 并提供对核心功能的访问,例如配置、日志记录和 Mod 管理。例如,mod 可以通过以下方式检索配置值:
bool enabled = modContext->config.GetBool("modName", "feature_name", false)
更多内容:雾锁王国补丁