Базовый C# Мод


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

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

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

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

C# IDE (интегрированная среда разработки)
C# Decompiler (декомпилятор)
  • dnSpy или dotPeek (не требуется для базовых модификаций)
Текстовый Редактор
Для запуска своих модов, вы можете использовать Bannerlord.exe, вызывая его из ".bat" файла (для более подробной информации см. пункт "Отладка").

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

  1. Найдите папку "Modules" в папке с игрой
  2. Создайте и назовите папку по своему усмотрению (к примеру "MyModule")
  3. Внутри папки создайте подпапку "bin", но не переходите в нее (она будет использовать для хранения ваших библиотек)
  4. В папке модуля создайте текстовый файл и переименуйте его в "SubModule.xml" (без кавычек) и вставьте текст который вы можете видеть ниже
  5. Проверьте отображается ли ваш модуль в лаунчере, в спиcке модулей для одиночной игры (singleplayer)
<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/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, важно понять что это не требуется для простейших модификаций (например изменение или добавление предметов/ персонажей/сцен).
  1. Запустите Microsoft Visual Studio и выберите Create New Project (в редакции на руском языке выберите Файл>Создать>Проект)
  2. Выберите библиотеку классов (.NET Framework)
  3. Назовите ваш проект и выберите  .NET Framework 4.7.2. Если данная опция вам не доступна, скачайте специальный пакет для разработчиков (developer pack) здесь
  4. Теперь когда ваш проект создан, задайте путь для исходных файлов компиляции проекта в Modules/ВашеНазваниеМодуля/bin, которая находится в папке с вашой игрой
  5. Также нужно сделать "ссылки" с вашего новосозданного проекта на библиотеки TaleWorlds, которые находятся в bin\Win64_Shipping_Client

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

  1. Для начала создадим базовый класс MySubModule (который в свою очередь наследует класс MBSubModuleBase) и применим заимствования к нему. У вас должно получиться что то такое (смотреть первый блок "Code")
  2. Добавим в наш класс метод OnSubModuleLoad() и укажем на его перезапись (смотреть второй блок "Code")
  3. После этого добавим немного кода в наш перезаписанный метод. По сути мы добавляем кнопку в главное меню используя метод AddInitialStateOption, а за вывод изображения на экране отвечает DisplayMessage (смотреть третий блок "Code")
  4. Скомпилируйте ваш код используя комбинацию клавиш CTRL+B или CTRL+SHIFT+B (итоговый код в четвертом блоке "Сode")
  5. Откройте Community Launcher и выберите ваш мод в списке модулей для одиночной игры
  6. Запустите игру. В главном меню вы увидите кнопку "Message", нажав на нее, в левом нижнем углу появится текст "Hello World"
  7. Поздравляем! Вы создали свой первый мод для Mount&Blade II: Bannerlord
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));
        }
    }
}

Отладка

  1. Откройте настройки проекта и выберите кнопку "Debug" (Отладка)
  2. Выберите опцию Start external program (запуск внешнего приложения) и сконфигурируйте путь к файлам "Bannerlord.exe"
  3. Удостоверьтесть что в качестве рабочей директории выбрана папка bin\Win64_Shipping_Client
  4. Добавьте следующие command line arguments (аргументы коммандной строки)  "_MODULES_*Native*MyModule*_MODULES_ /singleplayer" (без кавычек, также удостоверьтесь что название вашего модуля "MyModule", а не какое либо другое). Вы также можете использовать данные аргументы коммандной строки для запуска своих модов (для этого создайте файл с расширением".bat" и поместите в папку bin\Win64_Shipping_Client, предварительно добавьте в файл следующее "Bannerlord.exe _MODULES_*Native*MyModule*_MODULES_ /singleplayer" (без кавычек))

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

  • В качестве среды разработки для модов, также может использоваться JetBrains Rider (отличается многими полезными функциями, в том возможностью смотреть декомпилированный код тейлов сразу, не прибегая к помощи сторонних декомпиляторов). Минусы это то что программа платная, но есть версия для студентов
  • Официальной поддержки модификаций от тейлов ждать еще как минимум пол-года, а то и год (полный функционал будет доступен только после релиза). То что я описал выше, это отличная возможность опробовать себя в моддинге уже сейчас и получить полезные навыки, которые пригодятся в будущем
  • За основу данного туториала, был взят гайд от Ster, который доступен по этой ссылке тут, а также документация по игре тут. Пока что в ней не хватает информации по некоторым направлениям, но она будет дополнятся. Если вам интересен дальнейший моддинг игры, советую ознакомиться с ней




- используйте эту кнопку если вы обнаружили ошибку/искажение содержимого/отсутствие контента в новости или если хотите сообщить администрации о выходе новой версии мода и т.п.

Комментариев 8

Царь
syabr
Титул: Главный динозавр и ГГ сайта
Офлайн 29 марта 2020 14:22 поделиться
Шикарно. Правда ссылка на гайд от Ster не пашет, кинь мне в личку, добавлю в новости


Танки грязи не боятся, сама отвалится
Я на Всадниках Кальрадии: https://rusmnb.ru/index.php?action=profile;u=18932
Друг сообщества
ki_20
Титул: Брат Gut'a
Офлайн 29 марта 2020 15:20 поделиться
Меня радовало наличие модов на Bannerlord(хоть он ещё и не вышел в РН) а теперь меня радует и появление гайдов как собственно это и сделать. Браво smile30 


Отрок
Roehn
Офлайн 29 марта 2020 17:46 поделиться
Ну поезд бесконечных модификаций на баннерлорд уже выдвигается)Автору респект!


Крадущийся тигр, затаившийся дракон....
Царь
syabr
Титул: Главный динозавр и ГГ сайта
Офлайн 30 марта 2020 10:44 поделиться
Тема обновлена


Танки грязи не боятся, сама отвалится
Я на Всадниках Кальрадии: https://rusmnb.ru/index.php?action=profile;u=18932
Странник
apan98
Офлайн 20 апреля 2020 20:56 поделиться
Есть дискорд канал или топик, где сидят рускоязычные чуваки и уже ковыряют его движок? Хочу тоже мод сделать моды начать делать.
А именно:
1) Добавить отряды дезертиров на карту (а то эти разбойники уже по горло)
2) Добавить зависимость процветания городов, к наградам за турниры (Если город процветает то турниры приносят больше денег, хлеба и зрелищ как говорится)
3) Добавить книжки, учителей итд. Что бы за кругленькую сумму можно было увеличивать очки фокуса, для себя или своих товарищей.
4) Сделать что бы навык торговля прокачивался в зависимости от суммы, которую ты получил (Потому что сейчас, навык качается от количества сделок). То есть можно купить зерно в самом южном Асерайском городе за 4 монеты, и очень долго продавать по 1 шт, в городе где это выгодно, и можно быстро прокачать торговлю, толком и не торгуя.
5) Вернуть Warband-овскую зависимость к количеству лута. Если ты один победил 20 морских налетчиков, то весь лут достается тебе (Огромное количество всяких плюшек), а если армией то количество значительно уменьшается (Потому что делишься лутом)

Идей много, сам я программист, но хотел бы найти других чуваков которые этим занимаются


Ратник
Mr_Cat1993
Офлайн 28 апреля 2020 10:36 поделиться
Доброго времени суток! Хотел бы узнать, как можно заменить звуки? Вот если бы я хотел скажем голоса солдат сменить, что нужно делать для этого? Заранее спасибо)


Царь
syabr
Титул: Главный динозавр и ГГ сайта
Офлайн 28 апреля 2020 10:38 поделиться
Mr_Cat1993, пока никак.


Танки грязи не боятся, сама отвалится
Я на Всадниках Кальрадии: https://rusmnb.ru/index.php?action=profile;u=18932
Ратник
Mr_Cat1993
Офлайн 28 апреля 2020 14:14 поделиться
syabr, Печально, но будем ждать) Спасибо ещё раз за ответ)


Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Онлайн

Сейчас на сайте: 127
Гостей: 124

Пользователи: 

Последние комментарии

Парламент commando
Samiraldos, Сегодня, 08:55
Цитата: ArtkolobokSamiraldos, Хорошо, но чтобы получить быстрый ответ, заходи на наш дискорд...
Парламент commando
Artkolobok, Вчера, 13:56
Samiraldos, Хорошо, но чтобы получить быстрый ответ, заходи на наш дискорд сервер:...
Парламент commando
Samiraldos, Вчера, 07:44
Цитата: ArtkolobokSamiraldos, Идея с партиями давно утратила свою актуальность, да и никто особо не...
MOD Voice Acting - AI Voice Acting for Every Character
Gut, 19 ноября 2024 18:13
с возвращением, грац!!...
Парламент commando
Gut, 19 ноября 2024 18:03
Samiraldos, Если есть желание, то всегда можно найти компромисс. Сами по себе партии утратили...
Парламент commando
Artkolobok, 19 ноября 2024 09:57
Samiraldos, Идея с партиями давно утратила свою актуальность, да и никто особо не хочет этим...
Парламент commando
Samiraldos, 19 ноября 2024 03:23
Я бы добавил должность партии в виде фрилансеров. Ну допустим я играю сейчас в МиБ потом буду...
Кольца
Samiraldos, 19 ноября 2024 03:06
https://commando.com.ua/uploads/posts/2018-05/1525510484_zol-bol-rad.png...