Всадники Кальрадии

Модификации => Обмен опытом (в помощь мододелу) => Обмен опытом: Bannerlord => Тема начата: Fddd от 27 Марта, 2020, 14:02

Название: [Code] Базовый C# Мод
Отправлено: Fddd от 27 Марта, 2020, 14:02

Введение


Данное руководство покажет вам, как шаг за шагом, создать базовый мод для Mount&Blade II: Bannerlord, используя язык C#. Этот мод добавляет кнопку "Message" в главное меню одиночного режима игры. При ее нажатии, происходит отправка сообщения "Hello World" в чат.

Перед началом


Моддинг в Mount&Blade II: Bannerlord в данный момент имеет ограничения, связанные с отсутствием доступа к инструментам мододелов от разработчиков. В тоже время доступно множество вещей с которыми можно работать и которые можно будет менять в версии для раннего доступа, не дожидаясь официальных инструментов.

Инструментарий


C# IDE (интегрированная среда разработки)
C# Decompiler (декомпилятор)
Текстовый Редактор

Вы также можете использовать Bannerlord.exe вызывая его из ".bat" файла (для более подробной информации см. пункт "Отладка"). Установка довольно проста (скопируйте файл с расширением ".exe" в папку bin\Win64_Shipping_Client, папку "Modules" в папку "Modules" игры

Cоздание папки модуля и файла SubModule


<Module>
        <Name value="My Module"/>
        <Id value="MyModule"/>
        <Version value="v1.0.0"/>
        <SingleplayerModule value="true"/>
        <MultiplayerModule value="false"/>
        <DependedModules/>
        <SubModules>
            <SubModule>
                <Name value="MySubModule"/>
                <DLLName value="../../Modules/MyModule/bin/Win64_Shipping_Client/ExampleMod.dll"/>
                <SubModuleClassType value="ExampleModNameSpace.MySubModule"/>
                <Tags>
                    <Tag key="DedicatedServerType" value="none" />
                    <Tag key="IsNoRenderModeElement" value="false" />
                </Tags>
            </SubModule>
        </SubModules>
        <Xmls/>
    </Module>

Создание и настройка проекта Visual Studio


До того как начать настраивать проект в Microsoft Visual Studio, важно понять что это не требуется для простейших модификаций (например изменение или добавление предметов/ персонажей/сцен).

Создание и настройка базового класса и игровой логики


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

namespace ExampleModNameSpace
{
    public class MySubModule : MBSubModuleBase
    {
    }
}
protected override void OnSubModuleLoad()
        {
            base.OnSubModuleLoad();
        }
Module.CurrentModule.AddInitialStateOption(new InitialStateOption("Message",
                new TextObject("Message", null),
                9990,
                () => { InformationManager.DisplayMessage(new InformationMessage("Hello World!")); },
                false));
using TaleWorlds.Core;
using TaleWorlds.Localization;
using TaleWorlds.MountAndBlade;

namespace ExampleModNameSpace
{
    public class MySubModule : MBSubModuleBase
    {
       protected override void OnSubModuleLoad()
        {
            base.OnSubModuleLoad();
            Module.CurrentModule.AddInitialStateOption(new InitialStateOption("Message",
                new TextObject("Message", null),
                9990,
                () => { InformationManager.DisplayMessage(new InformationMessage("Hello World!")); },
                false));
        }
    }
}

Отладка


Дополнительная информация


Название: Re: [Code] Базовый C# Мод
Отправлено: Тур от 03 Января, 2021, 23:40
Может не в той теме спрашиваю, но мне нужно перевести мод, а часть строк в dnSpy при их переводе обратно не компилируются. Это строки в контекстном меню которых отсутствуют пункты Изменить инструкции IL и Изменить метод. Поднапряг свои мозги и понял, что эти строки (а в идеале вообще все) нужно вынести в отдельный xml-файл, присвоив им ID. Но как это сделать? Стал искать. Нашёл видео на китайском сайте и языке. Нифига не понял - я тупой. Объясните пожалуйста доступным, даже такому тупому как я, языком.
Собственно, вот проблема
(https://jpegshare.net/thumbs/4e/fd/4efd14388b12b11460aebff7294ee40d.jpg) (https://jpegshare.net/4e/fd/4efd14388b12b11460aebff7294ee40d.png.html)

А это видео того китайца
https://www.bilibili.com/video/BV1Tt4y117K2/ (https://www.bilibili.com/video/BV1Tt4y117K2/)