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

Стратегии, Игровые Миры, История, Total War
Стратегии, Игровые Миры, История, Total War
  • Поиск
  • Законы
  • Сообщество
  • Репутация
  • Экономика
  • Больше
Уважаемый Imperial Гость, анонсирована первая игра серии Total War Saga - Total War Saga: Thrones of Britannia

papeion Уроки по моддингу от papeion
Делюсь своим опытом моддинга Аттилы
Тема создана: 08 Ноябрь 2017, 11:06 · Автор: papeionСообщений: 1 · Просмотров: 165

papeion
  • Imperial
Imperial
1 984
Imperial
11
Imperial
187
Imperial
1 809
Imperial
1

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

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

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

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

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

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

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

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

    Imperial

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

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

    Imperial

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

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

    Imperial

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

    Imperial

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

    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 %

    Imperial

    - Если мы хотим дать или отнять деньги из казны, то используем настройку 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. Это не окончательный вариант урока. Со временем я буду вносить в него изменения\дополнения, может быть и скриншоты тоже.
    Скорее всего я буду ещё долго разрабатывать\улучшать этот урок.
      Введите ваши имя форумчанина и пароль:
      Введите Ваше имя  
      [Регистрация нового аккаунта]
      Введите Ваш пароль 
      [Восстановить пароль]

      Воспользуйтесь одной из соц-сетей для входа на форум:


      Внимание: Реклама отключена для зарегистрированных посетителей

      Стиль
         24 Ноя 2017, 07:02
      © 2017 «Империал». Условия предоставления. Ответственность сторон. Декларация о Сотрудничестве. Лицензия зарегистрирована на: «Империал». Счётчики