
Discord 丰富状态
为游戏添加了Discord Rich Presence支持!
查看大图源代码可在 GitHub 上获取!
为游戏添加了 Discord Rich Presence 支持!灵感来源于 NexusMods 上首批模组之一——Bannerlord 的 Discord RP!
正如 BUTR 模组一贯的风格,提供完整的翻译支持!
设置可通过 MCM 进行调整!
你也可以在选项中启用模组分享功能,这会在你的个人资料底部添加一个漂亮的按钮。
点击按钮会生成一个格式为 https://modlist.butr.link/d29ee27c-5f08-4a53-b4ae-231a76d5e404 的网址,其中包含你的游戏版本和已启用的模组列表!
该网址自游戏启动起 8 小时内有效!
关于此功能的一些说明。在游戏开始时启用该选项或在启用选项的情况下保存时,模块会将游戏版本和模组列表发送至 https://modlist.butr.link,并获取一个有效期为 8 小时的链接,该链接将显示相关信息。之所以采用这种方式,是因为 Discord 对 URL 长度有限制,我们无法通过查询参数将信息放入 URL 中,因此我们使用了一个短暂存在的后端服务器来存储这些信息。
因为该模块是开源的,即使我们的服务器在几年后停止运行,我们仍提供了后端供任何人托管并重新设置该模块的功能!
游戏支持基本状态:
- 主菜单
- 加载中
- 自定义战斗
- 战役:
- 靠近定居点时
- 与某人对话时
- 在定居点内
- 在定居点内(任务中)
- 战斗中(模拟或非模拟)显示部队数量。攻击/防守。袭击、围城、强攻*均支持
给模组制作者:
其他模组可以使用此模块来设置它们自己的状态: 请注意,即使用户未启用 Bannerlord.DiscordRichPresence,您仍可使用此代码,相关操作将被跳过。
ButterLib 的动态 API
内部静态类 DiscordRichPresenceAPI
{
private static readonly Action<string, DateTime?, DateTime?, bool>? SetPresenceMethod =
DynamicAPIProvider.RequestAPIMethod<Action<string, DateTime?, DateTime?, bool>>("Bannerlord.DiscordRichPresence", "SetPresence");
private static readonly Action<bool>? SetPreviousPresenceMethod =
DynamicAPIProvider.RequestAPIMethod<Action<bool>>("Bannerlord.DiscordRichPresence", "SetPreviousPresence");
public static void SetPresence(string details, DateTime? start, DateTime? end)
{
如果(SetPresenceMethod != null)
{
SetPresenceMethod(详情, 开始, 结束, true);
}
}
public static void SetPreviousPresence()
{
如果(SetPreviousPresenceMethod != null)
{
设置上一个在线状态(true);
}
}
}
反思与和谐
内部静态类 DiscordRichPresenceAPI
{
private static readonly Action<string, DateTime?, DateTime?, bool>? SetPresenceMethod =
AccessTools.Method("Bannerlord.DiscordRichPresence.DynamicAPI:SetPresence") 是一个有效的方法
? AccessTools.MethodDelegate<Action<string, DateTime?, DateTime?, bool>>(方法)
: null;
private static readonly Action<bool>? SetPreviousPresenceMethod =
AccessTools.Method("Bannerlord.DiscordRichPresence.DynamicAPI:SetPreviousPresence") 是一个有效方法
? AccessTools.MethodDelegate<Action<bool>>(方法)
: null;
public static void SetPresence(string details, DateTime? start, DateTime? end)
{
如果(SetPresenceMethod != null)
{
SetPresenceMethod(详情, 开始, 结束, true);
}
}
public static void SetPreviousPresence()
{
如果(SetPreviousPresenceMethod 不为空)
{
设置先前存在状态(真);
}
}
}
正在加载版本记录…









正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。