CSharpLoader

CSharpLoader

C# mod加载器,允许使用C# 编写 mod,调用游戏内部的C#接口。C# mod loader, allow you to run mod with C#, call inner C# api.

工具

《黑神话:悟空》使用USharp作为脚本引擎,许多逻辑通过C#实现,并提供接口供Unreal Engine (UE) 使用,而部分内部接口无法通过UE C++/Lua访问。
此模组加载器可加载用C#编写的模组。C#模组能够调用USharp端提供的API,包括游戏内部接口和C#封装的UE引擎接口,同时也能向游戏内部事件和委托添加回调。

悟空使用USharp作为脚本引擎,大量逻辑用C#实现。有些API只能在C#中访问,而无法在UE C++中访问。

此模组加载器允许您加载用C#编写的模组。C#模组可以调用b1-managed和虚幻引擎中的C# API。

更新记录

0.1.0:

  • 重新提前了初始化时间,并避免出现错误,方便一些模组提前hook。

0.0.9:

  • 0.0.8版本提前了初始化时机,此版本将等待时间加回来,避免一些现有模组初始化失败。

0.0.8:

  • 支持C# Patch/Hook,请注意说明。
  • 支持手柄按键(暂不支持PS和Switch手柄),也可以直接hook OnAnyKeyTriggerEvent。
  • 兼容其他使用version.dll的插件(放到CSharpLoader/Plugins目录中)。
  • 尝试支持游戏中文路径。

更改日志

0.1.0:

  • 初始化时间再次提前,避免了错误。

0.0.9:

  • 0.0.8版本将初始化时间提前。

0.0.8:

  • 支持C#补丁/挂钩,请注意。
  • 支持游戏手柄按钮(目前不支持PS和Switch控制器),也可直接挂钩OnAnyKeyTriggerEvent。
  • 兼容其他使用version.dll的插件(将它们放在CSharpLoader/Plugins目录中)。
  • 尝试支持中文游戏路径。

使用说明

解压到游戏目录
额外添加到游戏文件夹。

BlackMythWukong/b1/Binaries/Win64/
  CSharpLoader/
    Data/
    Mods/
    Plugins/
    0Harmony.dll
    CSharpManager.bin
    CSharpModBase.dll
    Mono.Cecil.dll
    Mono.Cecil.Pdb.dll
    Mono.Cecil.Rocks.dll
    b1cs.ini
  version.dll

模组的dll需要放在
模组dll应放置在

CSharpLoader/Mods/<ModName>/<ModName>.dll

例如

CSharpLoader/Mods/CSharpExample/CSharpExample.dll

如果你安装后游戏打不开,请尝试把hid.dll改名成version.dll(新版默认使用version.dll)。

配置文件 CSharpLoader/b1cs.ini

  • 开发:开启开发模式,可以按ctrl+f5重新加载C#模组。
  • Console: 显示控制台窗口,打印日志。
  • EnableJit: 开启jit模式,请看下面的注意事项。

配置文件 CSharpLoader/b1cs.ini

  • 开发:按ctrl+f5重新加载C#修改器。
  • 控制台:显示控制台窗口以打印日志。
  • EnableJit:请看下面的注意事项。

注意
从版本0.0.7之后的C#加载器开始,为了支持C#补丁/挂钩,游戏的mono运行时的运行模式从默认的解释执行模式,改成了jit(运行时编译执行)模式。jit一定程度上可能会带来一些性能提升,但可能并未经过游戏开发商的充分测试,可能会对游戏的稳定性带来一些影响。同时由于修改了游戏的底层执行代码,目前与一些修改器不兼容,包括风灵月影在内的一些修改器会失效,请根据你使用的模组的说明,决定是否使用支持hook的C#加载器。

注意
从版本0.0.7版本的C#加载器开始,为启用C#补丁/钩子,游戏的Mono运行时执行模式已从默认的解释器模式改为JIT(Just-In-Time)模式。JIT有可能带来一些性能改进,但游戏开发人员可能尚未对其进行彻底测试,这可能会影响游戏的稳定性。此外,它目前与一些训练器(包括flingtrainer)不兼容,可能会失效。请根据您使用的MOD的说明决定是否使用支持钩子的C#加载器。

与其他插件的兼容性
"version.dll"是常用的插件名字。如果您使用的其他插件存在命名冲突,您可以将它们的DLL重命名为"version.dll"以外的任何名称(后缀必须为".dll"),并将它们放在"CSharpLoader/Plugins/"目录中。C#加载器将一起加载这些插件。

如果你想了解如何用C#开发黑神话悟空的模组,可以看这里:
https://github.com/czastack/B1CSharpLoader/

感谢禽兽-云轩等模组作者的使用和反馈,帮助完善了这个C#加载器,期待他们做出的优秀模组。
也感谢之前我修改器的用户们的使用和反馈,C#加载器最开始在修改器上实验,并逐渐完善。

感谢chenstack等模组作者的使用和反馈,并逐步完善。
作者:chenstack