Сообщество Империал: Уроки по моддингу от papeion по Total War: Attila - Сообщество Империал

papeion

Уроки по моддингу от papeion по Total War: Attila

Делюсь своим опытом моддинга Аттилы
Тема создана: 08 ноября 2017, 11:33 · Автор: papeion
 papeion
  • Imperial
Imperial
Форумчанин

Дата: 08 ноября 2017, 11:33

В этой теме буду выкладывать свои туториалы.
Категорически прошу, не надо здесь задавать вопросы, для этого есть тема.
Но можно критиковать или дополнять мои уроки.
     papeion
    • Imperial
    Imperial
    Форумчанин

    Дата: 08 ноября 2017, 11:58

    Первая большая тема, моддинг событий и скриптов

    Урок-1. Инциденты.

    Во-первых, насколько я понял, инцидент срабатывает только для игрока.
    Например, какого-нибудь "Потопа" или "Землетрясения" в регионах АИ не бывает.
    Однако, с помощью инцидента мы можем запустить скрипт, который отработает там где и для кого вы хотите.

    Чтобы создать инцидент, надо:

    1) Создать новый ключ инцидента в таблице incidents_tables
    - колонка generate отвечает за автозапуск инцидента. Если не собираетесь запускать инцидент каким-то др. образом, то ставьте галочку.
    - колонка ui_image отвечает за то, какая иллюстрация будет сопровождать этот инцидент. Иллюстрации лежат по пути ui/eventpics.
    - колонка prioritised отвечает за абсолютный приоритет в очереди срабатывания инцидента. Ставьте галочку, если ваш инцидент запланированный на определённый ход. И не надо, если ваш инцидент должен сработать на случайном ходу.

    Imp

    2) В таблице cdir_events_incident_option_junctions_tables задайте для вашего инцидента условия для срабатывания (таргетинг, шанс, исключения и т.д.). Но имейте в виду, что некоторые из них тугодумные, т.е. игра их с трудом обрабатывает. К таким относится настройка инцидента на "сезон" CND_SEASON (кстати, такая настройка совершенно не нужна для запланированного на определённый ход инцидента), чтобы указать несколько сезонов, делаем для каждого свою строку. Также существуют настройки, с которыми инцидент никак не хочет запускаться, например, это "армия в регионе" GEN_CND_ARMY_IN_REGION, "нет армии в регионе" GEN_CND_NOT_ARMY_IN_REGION. Делайте проверочные тесты для того, чтобы убедиться, что ваш инцидент правильно работает или что вообще будет работать.

    Примеры того, как можно назначить настройки, можно посмотреть у существующих инцидентов.

    Важно: для каждой строки нужен свой ID, неповторяющийся в других строках. См. первую колонку.

    CND_CAMPAIGN - эта настройка обязательная, она отвечает за то, в какой компании будет срабатывать инцидент, т.е. или в ГК, или в Велизарии, или Шарлемане. Или там и там, тогда надо для каждой компании сделать строку.
    CND_FACTION - эта настройка по желанию, когда вы хотите настроить срабатывание инцидента для конкретной фракции, или нескольких конкретных фракций (для каждой сделать строку).
    VAR_CHANCE - эта настройка обязательная, она по видимому отвечает за шанс на срабатывание. В запланированных инцидентах надо ставить 100, а в случайных ограничиться вариантами от 5 до 80. Особо важна она для случайных, если их много, чтобы задать им приоритет по отношению друг к другу.
    VAR_FOLLOWUP_CHANCE - эта настройка по желанию. Она тоже отвечает за шанс срабатывания. Но я не знаю, чем она в этом смысле отличается от основной. Могу только гадать! Возможно она дополнительно увеличивает шансы. Именно исходя из этой догадки я её использую.

    GEN_CND_OWNS - не знаю что это, но она обязательная.

    CND_FIRST_ROUND - эта настройка...
    CND_LAST_ROUND - и эта настройка являются обязательными для запланированных на определённый ход инцидентов. Именно они отвечают, на каком ходу должен сработать инцидент. Я обычно указываю одинаковые значения в обоих. Разницу между ними не проверял.

    CND_ROUNDS_UNTIL_NEXT - эта настройка является обязательной для случайных инцидентов, т.е. срабатывающих на случайном ходу. Она отвечает за то, через сколько ходов можно повторно запускать этот инцидент.

    GEN_TARGET_REGION - эта настройка и
    GEN_CND_FORCE_IN_PROVINCE - и эта настройка, я не проверял на предмет обязательности, но от такого типа настроек зависит работоспособность инцидента общего действия ...т.е. просто на всю фракцию. Я их обязательно выставляю обе для запланированных инцидентов общего направления (т.е. чтобы просто повлиять на всю фракцию). Я это просто скопировал у камрада Скидвара, ибо столкнулся с тем, что не вполне ещё уяснил, какие настройки и в каких типах инцидентов обязательные.

    На скриншоте типичный плановый (срабатывающий на конкретном ходу) инцидент общего действия (без специальных таргетингов, а просто, чтобы дать фракции временно действующий пакет эффектов, или чтобы просто запустить с помощью такого инцидента скрипт).

    Imp

    GEN_TARGET_REGION - эта настройка задаёт условие - инцидент действует в регионе. Совместно с ней мы по желанию:
    - применяем ещё настройку GEN_CND_REGION_ANY_OF, с помощью которой указываем, какой именно регион или несколько регионов мы имеем в виду. Когда несколько регионов, то они вписываются в одну строку через точку с запятой, при чём можно с пробелом между ключами, можно без пробела, главное, чтобы ключи регионов разделяла точка с запятой. Без этой настройки инцидент сработает рандомно в любом регионе.
    - или\и настройку GEN_CND_REGION_BUILDING_LEVEL с помощью которой указываем условие, какая постройка должна быть в регионе (или несколько вариантов построек, каждая на новой строке)
    - или\и настройку GEN_CND_REGION_NOT_BUILDING_CHAIN_AVAILABLE с помощью которой мы указываем, каких построек не должно быть, но на этот раз указываем не ключи построек, а целую группу построек CHAIN. Например, в инциденте "Засуха" в Шарлемане таким образом исключаются все регионы, в которых есть порт.

    На скриншоте пример планового инцидента, имеющего специальное условие, сработать для конкретного региона. Я выделил строки, которые отвечают за то, чтобы сработать в регионе вообще, и именно в конкретном регионе в частности.

    Imp

    На следующем скриншоте вы видите настройки инцидента, который должен срабатывать на случайном ходу и повторное срабатывание разрешено через 24 хода (выделил):

    Imp

    Я перечислил то, чем я пользуюсь, но существуют ещё и др. настройки.
    Собственно название ключей настроек состоят из слов, так что должно быть итак понятно, что к чему.
    Главное не ленитесь тестировать.

    3) В таблице cdir_events_incident_payloads_tables мы назначаем нашему инциденту то, что именно должно случиться (во фракции, в регионе, с персонажем и т.д., таргетинг на которых мы настраиваем в предыдущей таблице).

    В первой колонке так же надо указать ID - индивидуальный номер для каждой строки

    В колонке payload_key мы можем указать:

    - Если мы хотим прицепить пакет эффектов (к фракции, к региону ли), то мы вписываем в эту колонку payload-ключ, который в свою очередь создаём в табл. cdir_events_payloads_tables. Один такой ключ можно использовать только для одного инцидента. В этой таблице мы назначаем, какой именно пакет эффектов (колонка effect_bundle_key). При этом один и тот же ключ пакета эффектов можно прицепить к нескольким ключам payload_key. Ну а ключ пакета эффектов создаётся в таблице effect_bundles_tables, при этом важно, что ему выставлено в последней колонке (фракция, регион и т.д.), которая отвечает за то, к чему именно будет цепляться этот пакет (ко всей фракции, или к региону, и т.д.). В свою очередь этому пакету эффектов назначаются эффекты в таблице effect_bundles_to_effects_junctions_tables.
    Ну и, в последней колонке мы должны указать, сколько времени должен действовать пакет эффектов, например DURATION[5];GLOBAL, что означает в течение пяти ходов. Если выставить ноль, то действие будет вечным.

    Спойлер (раскрыть)


    - При этом, если мы хотим прицепить пакет эффектов к региону, то мы должны добавить строку с ключом TARGET и значением EVENT для него в посл. колонке. В случае же, когда мы хотим прицепить пакет эффектов к фракции, это не нужно.


    - Если мы хотим задать разрушение в регионе, то делаем строку с настройкой DAMAGE_BUILDING в этой колонке и указанием для неё степени разрушения в последней колонке, например, MIN[75];MAX[100], что означает минимально и максимально возможное разрушение в процентах.

    На скриншоте я выделил три строки, что должно произойти для инцидента "Землятресение".
    Ключ-payloads должен прицепить к региону временно действующий пакет с эффектами.
    Кроме того, должны повредиться постройки в регионе на 75-100 %

    Imp

    - Если мы хотим дать или отнять деньги из казны, то используем настройку TREASURY с указанимем в посл. колонке сколько именно, например, AMOUNT[-15000], что означает отнять 15000 или AMOUNT[15000], что означает добавить 15000

    - Если мы хотим повысить\снизить контроль власти то испльзуем настройку CHANGE_POLITICAL_POWER, и в последней колонке указываем значение, например, AMOUNT[-20], что означает снизить контроль власти на 20%

    - Если мы хотим вывести мини-сообщение, то используем настройку TEXT_DISPLAY с указанием в посл. колонке ключа, например, LOOKUP[cha_aegidius_afranius_1]. Сам такой ключ создаётся в табл. campaign_payload_ui_details_tables

    Я перечислил то, чем я пользуюсь, но существуют ещё и др. настройки.

    -----------
    4) Естественно, что вам надо сделать локализацию для инцидента (заголовок и описание), для нового пакета эффектов, для мини-сообщения. Примеры оформления легко подсмотреть в ванильной локализации посредством просмотра ванильных же ключей. Кстати, для ключей-payloads локализация не нужна.

    5) С помощью инцидента можно запускать какой-нибудь скрипт, но об этом позже.

    P.S. Это не окончательный вариант урока. Со временем я буду вносить в него изменения\дополнения, может быть и скриншоты тоже.
    Скорее всего я буду ещё долго разрабатывать\улучшать этот урок.
       vadim
      • Imperial
      Imperial
      StratArtModding

      Дата: 02 апреля 2019, 08:38

      Приветствую Уважаемого Камрада
      Вопросик у меня есть к Вам/а возможно и просьба/
      Хотел вписать в канву своего мода появление Римской Экспедиции в виде Движения Аристократов для Восстановления былой славы Византии.
      Поясню, предположим остается у Зри пара регионов по островам или в северной Африке. Константинополя они лишаются.
      Прописывается Скрипт на появление Фракции Возрождения /Рим_Экспед/ данная фракция все завоёванные регионы передает естественно во владения Ври.
      Условием к срабатыванию Скрипта является утрата владения Константинополем и остаток из двух регионов /во владении Ври/
      При этом либо до срабатывания Скрипта на появление Новой Фракции либо сразу после прописывается Инцидеент для этого Движения Возрождения.
      Очень хотелось бы чтобы Вы Уважаемый Для просмотра ссылки Зарегистрируйтесь помогли мне с пропиской этого скрипт_комплекса - поскольку у вас всё таки Намного больше в этом Опыта.
         papeion
        • Imperial
        Imperial
        Форумчанин

        Дата: 04 апреля 2019, 05:36

        Урок:
        1. Если фракция не существует на карте, и вам надо респаунить её, то
        а) Вариант А. Обязательно респаунить два хода подряд. Ибо если один, то эта фракция будет вести себя пассивно и отсутствовать в списке фракций компании при переходе хода.
        б) Вариант Б. Достаточно респаунить один раз если эту фракцию вы настроили при сборке старпос особым образом. Смотри пример в "Последнем римлянине" в виде мавров или лангобардов. Они, несмотря на то, что до репауна отсутствуют на карте, однако они присутствуют в списке фракций при переходе хода. Секрет в том, что при сборке старпос этим фракциям прописано по одной орде с лидером, которые находятся как бы на карте, но в зоне терраинкогнита.

        Урок:
        Чтобы респаунить армию на карту компании, много ума не надо.
        1. Вариант №1. Респаун с помощью только таблиц. Создать инцидент. Настройки на респаун посредством инцидента подсмореть в Рим-2. Там в последнем длс (римская республика) СА показали нам, как это делается.
        2. Вариант №2. Респаун с помощью инцидета + скрипта. Сделать скрипт, который активируется при условии срабатывания инцидента. Код скрипта выглядит так: если ключ инцидента активировался, то запускается такой-то респаун.
        3. Вариант №3. Респаун с помощью только скрипта. Тут главная проблема: правильно настроить условия для срабатывания респауна. Проще всего выставить на таком-то ходу. Если же требуются более сложные условия, то подбирать код посредством тестов.

        Урок:
        Чтобы фракция завоёвывала регионы для своего вассала, надо во-первых, сделать её сатрапом или протекторатом (кем именно это надо уточнить). Опять же: если фракция изначально настроенна в старпос, как прусутствующая в терра инкогнита, то можно уже в старпос выставить ей быть сатрапом\протекторатом. Если же её нет в компании, и придётся делать двойной респаун, то назначать её сатрапом придётся посредством скриптовой команды (я этого ни разу не делал, но вроде бы есть такая команда, хотя неизвестно, как её правильно записывать в скрипте, нужны тесты.
        Чтобы фракция завоёвывала регионы для своего вассала, это надо во первых выставить ей пакет режимов оккупации.

        Скрипт завоевания для своего вассала какой-там есть ли или нет, я не знаю. Надо смотреть. Подозреваю, что особо специального скриптинга для этого не требуется.

        Я сейчас написал этот текст. И ушёл на работу. Времени у меня оч. мало, и работа нервная, пока не могу моддить. Может через месяц получится.
           fuat1989
          • Imperial
          Imperial
          Форумчанин

          Дата: 08 апреля 2020, 19:39

          Ребят объясните как изменить особенности фракций с помощью редактора или моддинга. В интернете очень много информации , но вся она обо всём и сразу. Мне нужно только изменение самих бонусов . Как например усилить способность царь царей у сасанидов.
             Похожие Темы
            TОбсуждение Total War: Pharaoh
            Очередная часть серии игр Total War
            Автор v vadim
            Обновление 9 мин. назад
            ЭMedieval 2 Total War - ванила hot-seat
            Описание ходов хот сита
            Автор X Xamax
            Обновление 49 мин. назад
            МРусская архитектура для Medieval 2: Total War
            Уникальная архитектура для русских фракций
            Автор J Jukoman
            Обновление 57 мин. назад
            Воспользуйтесь одной из соц-сетей для входа
            РегистрацияВход на форум 
            Сообщество ИмпериалTotal War: Attila Моды Total War: Attila Глобальные моды Total War: Attila Моды от papeion Обратная Связь
            Стиль:Language: 
            «Империал» · Условия · Ответственность · Визитка · 29 мар 2024, 08:19 · Зеркала: Org, Site, Online · Эльдорадо казино · Gold казино · Счётчики