骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买CDKEY 现金大奖等你拿
查看: 900|回复: 1

[原创] JetBrainsRider开发骑砍2Mod教程

[复制链接]

5

主题

15

帖子

20

积分

随仆

Rank: 1

UID
3155135
第纳尔
98
精华
0
互助
3
荣誉
0
贡献
0
魅力
0
注册时间
2020-4-2

骑砍中文站霸主正版用户勋章

鲜花(0) 鸡蛋(0)
发表于 2020-4-5 11:29:03 | 显示全部楼层 |阅读模式
本帖最后由 呐呐呐呐呐呐 于 2020-4-5 12:08 编辑

官方给的教程是Visual Studio开发。楼主用JetBrains全家桶比较顺手,前几天用它出了些报错,刚刚改了一下MSBuild版本就成功了。

1.创建mod目录和相关文件按官方给的教程创建一个mod目录在“SteamLibrary\steamapps\common\Mount & Blade II Bannerlord\Modules\”里
比如mod名是TestMod
就在里面创建TestMod目录
然后创建SubModule.xml 内容如下,根据自己的需求修改
  1. <Module>
  2.      <Name value="TestMod"/>
  3.      <Id value="TestMod"/>
  4.      <Version value="v1.0.0"/>
  5.      <SingleplayerModule value="true"/>
  6.      <MultiplayerModule value="false"/>
  7.      <DependedModules/>
  8.      <SubModules>
  9.          <SubModule>
  10.              <Name value="TestMod"/>
  11.              <DLLName value="TestMod.dll"/>
  12.              <SubModuleClassType value="TestMod.Main"/>
  13.              <Tags>
  14.                  <Tag key="DedicatedServerType" value="none" />
  15.                  <Tag key="IsNoRenderModeElement" value="false" />
  16.              </Tags>
  17.          </SubModule>
  18.      </SubModules>
  19.      <Xmls/>
  20. </Module>
复制代码
创建一个bin目录里面再套娃一个Win64_Shipping_Client目录



2.在Rider中创建ClassLibray项目
启动JetbrainsRider,新建项目类型选.NET---ClassLibray
Solution name和Project name设置为你的项目名,比如TestMod
语言(Language)选择C#,Framework暂不知有何影响。

3.修改输出目录、添加引用
展开左侧工程树状浏览区,右键第二级的项目(比如叫"TestMod",有C#图标的,第一级的是解决方案,第二级是项目,右键项目),点Properties,在Debug和Release中可以修改输出路径(Output path)为"D:\SteamLibrary\steamapps\common\Mount & Blade II Bannerlord\Modules\TestMod\bin\Win64_Shipping_Client\"(根据你的Steam游戏目录相应修改),点击OK保存
继续展开项目目录并找到References,右键添加引用(Add Reference)点击底下的添加(Add From)
定位到“SteamLibrary\steamapps\common\Mount & Blade II Bannerlord\bin\Win64_Shipping_Client”,根据你的需要选择"TaleWorlds"开头的所有dll文件

3.5 代码实现
  1. using TaleWorlds.Core;
  2. using TaleWorlds.Localization;
  3. using TaleWorlds.MountAndBlade;

  4. namespace TestMod {
  5.     public class Main : MBSubModuleBase {
  6.         protected override void OnSubModuleLoad() {
  7.             Module.CurrentModule.AddInitialStateOption(new InitialStateOption("Message",
  8.                 new TextObject("测试按钮 TestMsg"),
  9.                 9990,
  10.                 () => { InformationManager.DisplayMessage(new InformationMessage("Hello World!")); },
  11.                 false));
  12.         }
  13.     }
  14. }
复制代码


4.如果有报错,需要修改MSBuild
依次点击File---Settings---"Build,Execution,Deployment"---Toolset and Build
找到右侧的Use MSBuild version,修改到最新版本,楼主修改为15.0后编译成功

5.启动游戏、勾选你的mod,进入游戏

6.如果启动游戏后出现崩溃,需要检查xml配置
SubModule.xml中对应dll文件名是否一致
类入口是否设置正确

最终效果
TIM截图20200405115546.png

更多教程请参阅官方文档
https://docs.bannerlordmodding.com/

评分

参与人数 1第纳尔 +20 互助 +2 收起 理由
aliang227 + 20 + 2 您的帖子很有价值!

查看全部评分

1

主题

12

帖子

4

积分

平民

Rank: 1

UID
2984847
第纳尔
67
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2018-2-23

骑砍中文站霸主正版用户勋章

鲜花(0) 鸡蛋(0)
发表于 2020-4-7 21:06:32 | 显示全部楼层
<?xml version="1.0" encoding="utf-8"?>
<Module>
        <Name value="OutPrison"/>
        <Id value="OutPrison"/>
        <Version value="v0.0.1"/>
        <SingleplayerModule value="true"/>
        <MultiplayerModule value="false"/>
  <Official value="false" />
        <DependedModules>
         <DependedModule Id="Native"/>
         <DependedModule Id="SandBoxCore"/>
         <DependedModule Id="Sandbox"/>
         <DependedModule Id="CustomBattle"/>
         <DependedModule Id="StoryMode" />
        </DependedModules>
        <SubModules>
                <SubModule>
                        <Name value="OutPrison"/>
                        <DLLName value="OutPrison.dll"/>
                        <SubModuleClassType value="OutPrison.Main"/>
                        <Tags>
                                <Tag key="DedicatedServerType" value="none" />
                                <Tag key="IsNoRenderModeElement" value="false" />
                        </Tags>
                </SubModule>
        </SubModules>
</Module>

在编写测试时候遇到的一个问题,记录一下
SubModules标签下配置的是类中数据
<SubModuleClassType value="OutPrison.Main"/>中 OutPrison是namespace名 Main是类名,名字不一致启动会崩溃
这就是楼主说的检查类入口是否设置正确的意思
您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2020-7-4 20:21 , Processed in 0.055862 second(s), 19 queries , MemCache On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表