Базовый 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://commando.com.ua/commando/main/3337-kak-pravilno-soobschit-ob-oshibke.html
Президент ki_20
Онлайн 29 марта 2020 15:20 поделиться
Меня радовало наличие модов на Bannerlord(хоть он ещё и не вышел в РН) а теперь меня радует и появление гайдов как собственно это и сделать. Браво smile30 
Отрок Roehn
Офлайн 29 марта 2020 17:46 поделиться
Ну поезд бесконечных модификаций на баннерлорд уже выдвигается)Автору респект!
--------------------
Крадущийся тигр, затаившийся дракон....
Главный администратор syabr
Офлайн 30 марта 2020 10:44 поделиться
Тема обновлена
--------------------
https://commando.com.ua/commando/main/3337-kak-pravilno-soobschit-ob-oshibke.html
Странник 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://commando.com.ua/commando/main/3337-kak-pravilno-soobschit-ob-oshibke.html
Ратник Mr_Cat1993
Офлайн 28 апреля 2020 14:14 поделиться
syabr, Печально, но будем ждать) Спасибо ещё раз за ответ)
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации. Регистрация.

Интересно

Онлайн

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



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

MOD War and Blood
ki_20, Сегодня, 18:20
Alukard144, архив мода(Mega)...
ПРОХОЖДЕНИЕ A WORLD OF ICE AND FIRE
Дима Гончар, Сегодня, 18:15
Swordsmen832, приветствую на сайте, попробуй поискать читами ctrl+T...
MOUNT AND BLADE 2 BANNERLORD: Русификатор
syabr, Сегодня, 18:05
DoVaCiiN, понятия не имею что там творится в стиме, нам такое никто не сообщал. Они там могут долго...
ПРОХОЖДЕНИЕ A WORLD OF ICE AND FIRE
Swordsmen832, Сегодня, 17:54
Люди здравствуйте.Брог Маттер дал мне квест найти его брата,может я слепой может быть это баг,но я...
MOD War and Blood
Alukard144, Сегодня, 17:34
Спасибо подожду)...
MOD War and Blood
ki_20, Сегодня, 17:33
Alukard144, через минут 45 появится....
MOUNT AND BLADE 2 BANNERLORD: Русификатор
DoVaCiiN, Сегодня, 17:31
Здравствуйте! На днях переустановил ОС и первым делом скачал баннерлорд и поставил на него...
MOD War and Blood
Alukard144, Сегодня, 17:28
А других вариантов нет кроме Яндекса ?...
MOD War and Blood
ki_20, Сегодня, 17:25
Alukard144, если лимит превышен, то нажми на желтую кнопку, архив мода сохранится на твой Яндекс...