“Basic Csharp Mod”的版本间的差异

来自骑砍中文百科
跳转至: 导航搜索
介绍
编程
 
(未显示同一用户的15个中间版本)
第7行: 第7行:
 
<big>本教程中,我们将这个项目命名为 '''ExampleMod'''。</big>
 
<big>本教程中,我们将这个项目命名为 '''ExampleMod'''。</big>
 
== <big>创建模组(SubModule.xml)</big> ==
 
== <big>创建模组(SubModule.xml)</big> ==
# 前往游戏文件下的 '''Modules''' 目录。
+
1. 前往游戏文件下的 '''Modules''' 目录。<br>
# 创建一个新的文件夹并命名为 '''ExampleMod'''(必须跟你第4步使用的id相同)。
+
2. 创建一个新的文件夹并命名为 '''ExampleMod'''(必须跟你第4步使用的id相同)。<br>
# 创建一个新的文件夹并命名为 '''bin''' 然后在其中新建一个子文件夹并命名为 '''Win64_Shipping_Client'''。
+
3. 创建一个新的文件夹并命名为 '''bin''' 然后在其中新建一个子文件夹并命名为 '''Win64_Shipping_Client'''。<br>
# 在你第2步创建的目录下新建一个文件 '''SubModule.xml'''(必须是这个文件名)并粘贴该代码:[https://docs.bannerlordmodding.com/_tutorials/basic-csharp-mod#setting-up-your-module-submodule-xml  查看代码]<br>注意:'''MySubModule''' 是在编程部分会使用的类的名字。
+
4. 在你第2步创建的目录下新建一个文件 [[SubModule|'''SubModule.xml''']] (必须是这个文件名)并粘贴该代码:[https://docs.bannerlordmodding.com/_tutorials/basic-csharp-mod#setting-up-your-module-submodule-xml  源链接]
# 如果你使用了不同的名字,请修改以上文件并匹配你的 '''Module/SubModule''' 的值。
+
<nowiki>
# 打开游戏启动器并确认你的模组名字出现在了 Singleplayer > Mods 中。
+
<Module>
 +
    <Name value="Example Mod"/>
 +
    <Id value="ExampleMod"/>
 +
    <Version value="v1.0.0"/>
 +
    <SingleplayerModule value="true"/>
 +
    <MultiplayerModule value="false"/>
 +
    <DependedModules>
 +
        <DependedModule Id="Native"/>
 +
        <DependedModule Id="SandBoxCore"/>
 +
        <DependedModule Id="Sandbox"/>
 +
        <DependedModule Id="CustomBattle"/>
 +
        <DependedModule Id="StoryMode" />
 +
    </DependedModules>
 +
    <SubModules>
 +
        <SubModule>
 +
            <Name value="ExampleMod"/>
 +
            <DLLName value="ExampleMod.dll"/>
 +
            <SubModuleClassType value="ExampleMod.MySubModule"/>
 +
            <Tags>
 +
                <Tag key="DedicatedServerType" value="none" />
 +
                <Tag key="IsNoRenderModeElement" value="false" />
 +
            </Tags>
 +
        </SubModule>
 +
    </SubModules>
 +
    <Xmls/>
 +
</Module>
 +
</nowiki>
 +
<br>注意:'''MySubModule''' 是在[[Basic_Csharp_Mod#.E7.BC.96.E7.A8.8B| 编程部分]] 会使用的类的名字。<br>
 +
5. 如果你使用了不同的名字,请修改以上文件并匹配你的 '''Module/SubModule''' 的值。<br>
 +
6. 打开游戏启动器并确认你的模组名字出现在了 Singleplayer > Mods 中。<br>
 
 查看更多有关目录的信息,请访问[[Folder Structure|目录结构]]。
 
 查看更多有关目录的信息,请访问[[Folder Structure|目录结构]]。
 +
 
== <big>创建项目</big> ==
 
== <big>创建项目</big> ==
 在创建项目之前, 你需 要知 这里对于基础模组(如物品/场景/文化等)而言是不需要的。
+
 在创建项目之前,要 这里对于基础模组(如物品/场景/文化等)而言是不需要的。
 
# 启动 Microsoft Visual Studio 并点击 新建项目(Create New Project)。
 
# 启动 Microsoft Visual Studio 并点击 新建项目(Create New Project)。
 
# 选择 Class Library (.NET Framework)。
 
# 选择 Class Library (.NET Framework)。
第21行: 第51行:
 
# 建好项目后,[https://docs.microsoft.com/zh-cn/visualstudio/ide/how-to-change-the-build-output-directory?view=vs-2019 设置你的编译路径]为游戏目录下的 Modules/ExampleMod/bin/Win64_Shipping_Client。
 
# 建好项目后,[https://docs.microsoft.com/zh-cn/visualstudio/ide/how-to-change-the-build-output-directory?view=vs-2019 设置你的编译路径]为游戏目录下的 Modules/ExampleMod/bin/Win64_Shipping_Client。
 
# [https://docs.microsoft.com/zh-cn/visualstudio/ide/how-to-add-or-remove-references-by-using-the-reference-manager?view=vs-2019 引用] 在你游戏文件目录(不是你的模组目录)下 bin\Win64_Shipping_Client 中的 TaleWorlds.*(DLLs),并且引用每个官方模组目录 Modules\ModuleName\bin\Win64_Shipping_Client 下的 TaleWorlds.* DLLs。
 
# [https://docs.microsoft.com/zh-cn/visualstudio/ide/how-to-add-or-remove-references-by-using-the-reference-manager?view=vs-2019 引用] 在你游戏文件目录(不是你的模组目录)下 bin\Win64_Shipping_Client 中的 TaleWorlds.*(DLLs),并且引用每个官方模组目录 Modules\ModuleName\bin\Win64_Shipping_Client 下的 TaleWorlds.* DLLs。
 +
 
== <big>调试项目(可选)</big> ==
 
== <big>调试项目(可选)</big> ==
 +
# 打开项目属性并转至 '''Debug''' 标签页。
 +
# 选择 '''Start external program''' 选项并浏览至游戏文件(不是你的模组)下的目录 bin\Win64_Shipping_Client 中的 Bannerlord.exe。
 +
# 设置工作目录为游戏文件(不是你的模组)下的目录 bin\Win64_Shipping_Client。
 +
# 添加以下命令行参数(确定把 ExampleMod 换成了你的模组的名字)<br>
 +
* /singleplayer _MODULES_*Native*SandBoxCore*CustomBattle*SandBox*StoryMode*ExampleMod*_MODULES_
 +
 
== <big>编程</big> ==
 
== <big>编程</big> ==
 +
1. 在你的 VS 项目中新建一个类并命名为 '''MySubModule''',然后打开它。<br>
 +
2. 将以下指令添加到你的类中:
 +
using TaleWorlds.Core;
 +
using TaleWorlds.Localization;
 +
using TaleWorlds.MountAndBlade;
 +
3. 继承 MBSubModuleBase 类。<br>
 +
4. 复写 OnSubModuleLoad() 继承方法。<br>
 +
5. 添加如下代码到你的复写方法中:[https://docs.bannerlordmodding.com/_tutorials/basic-csharp-mod#programming 源链接]<br>
 +
<nowiki>
 +
Module.CurrentModule.AddInitialStateOption(new InitialStateOption("Message",
 +
    new TextObject("Message", null),
 +
    9990,
 +
    () => { InformationManager.DisplayMessage(new InformationMessage("Hello World!")); },
 +
    false));
 +
</nowiki>
 +
6. 编译你的项目并确定文件被输出到了 Modules\ExampleMod\bin\Win64_Shipping_Client。<br>
 +
7. 打开游戏启动器转到 Singleplayer > Mods 确定你的模组被勾选了并启动。<br>
 +
8. 在主界面中,你应该可以看到一个 Message 按钮,单击后你会在左下角聊天框看见输出了 Hello World。<br>
 +
9. 你成功地创建了你的第一个游戏模组!
 +
<br>

2020年4月20日 (一) 13:28的最新版本

访问源文档
返回目录

介绍

这个教程接下来将一步一步教你创建一个基于 C# 的模组,这个模组将添加一个叫 Message 的按钮到单人游戏主界面,在点击这个按钮后将输出 Hello World

准备工作

本教程中,我们将这个项目命名为 ExampleMod

创建模组(SubModule.xml)

1. 前往游戏文件下的 Modules 目录。
2. 创建一个新的文件夹并命名为 ExampleMod(必须跟你第4步使用的id相同)。
3. 创建一个新的文件夹并命名为 bin 然后在其中新建一个子文件夹并命名为 Win64_Shipping_Client
4. 在你第2步创建的目录下新建一个文件 SubModule.xml(必须是这个文件名)并粘贴该代码:源链接

 <Module>
     <Name value="Example Mod"/>
     <Id value="ExampleMod"/>
     <Version value="v1.0.0"/>
     <SingleplayerModule value="true"/>
     <MultiplayerModule value="false"/>
     <DependedModules>
         <DependedModule Id="Native"/>
         <DependedModule Id="SandBoxCore"/>
         <DependedModule Id="Sandbox"/>
         <DependedModule Id="CustomBattle"/>
         <DependedModule Id="StoryMode" />
     </DependedModules>
     <SubModules>
         <SubModule>
             <Name value="ExampleMod"/>
             <DLLName value="ExampleMod.dll"/>
             <SubModuleClassType value="ExampleMod.MySubModule"/>
             <Tags>
                 <Tag key="DedicatedServerType" value="none" />
                 <Tag key="IsNoRenderModeElement" value="false" />
             </Tags>
         </SubModule>
     </SubModules>
     <Xmls/>
 </Module>


注意:MySubModule 是在编程部分会使用的类的名字。
5. 如果你使用了不同的名字,请修改以上文件并匹配你的 Module/SubModule 的值。
6. 打开游戏启动器并确认你的模组名字出现在了 Singleplayer > Mods 中。
查看更多有关目录的信息,请访问目录结构

创建项目

在创建项目之前,要告知你这里对于基础模组(如物品/场景/文化等)而言是不需要的。

  1. 启动 Microsoft Visual Studio 并点击 新建项目(Create New Project)。
  2. 选择 Class Library (.NET Framework)。
  3. 将你的项目命名为 ExampleMod(如果你用了其它名字请确保命名空间和程序集名称是正确的)并使用.NET Framework 4.7.2 作为 Framework。如果没有这个选项,在这里下载(开发包)。
  4. 建好项目后,设置你的编译路径为游戏目录下的 Modules/ExampleMod/bin/Win64_Shipping_Client。
  5. 引用 在你游戏文件目录(不是你的模组目录)下 bin\Win64_Shipping_Client 中的 TaleWorlds.*(DLLs),并且引用每个官方模组目录 Modules\ModuleName\bin\Win64_Shipping_Client 下的 TaleWorlds.* DLLs。

调试项目(可选)

  1. 打开项目属性并转至 Debug 标签页。
  2. 选择 Start external program 选项并浏览至游戏文件(不是你的模组)下的目录 bin\Win64_Shipping_Client 中的 Bannerlord.exe。
  3. 设置工作目录为游戏文件(不是你的模组)下的目录 bin\Win64_Shipping_Client。
  4. 添加以下命令行参数(确定把 ExampleMod 换成了你的模组的名字)
  • /singleplayer _MODULES_*Native*SandBoxCore*CustomBattle*SandBox*StoryMode*ExampleMod*_MODULES_

编程

1. 在你的 VS 项目中新建一个类并命名为 MySubModule,然后打开它。
2. 将以下指令添加到你的类中:

using TaleWorlds.Core;
using TaleWorlds.Localization;
using TaleWorlds.MountAndBlade;

3. 继承 MBSubModuleBase 类。
4. 复写 OnSubModuleLoad() 继承方法。
5. 添加如下代码到你的复写方法中:源链接

 Module.CurrentModule.AddInitialStateOption(new InitialStateOption("Message",
     new TextObject("Message", null),
     9990,
     () => { InformationManager.DisplayMessage(new InformationMessage("Hello World!")); },
     false));

6. 编译你的项目并确定文件被输出到了 Modules\ExampleMod\bin\Win64_Shipping_Client。
7. 打开游戏启动器转到 Singleplayer > Mods 确定你的模组被勾选了并启动。
8. 在主界面中,你应该可以看到一个 Message 按钮,单击后你会在左下角聊天框看见输出了 Hello World。
9. 你成功地创建了你的第一个游戏模组!