Hearts of Iron IV

Hearts of Iron IV

50 ratings
Как создавать персонажей в Hearts of Iron 4
By St. Himars
В этом руководстве мы разберем - как создавать персонажей для разных стран, давать им роли и добавлять их непосредственно в игру.
7
   
Award
Favorite
Favorited
Unfavorite
Начало:
Первым делом немного предыстории.
На версиях игры ниже 1.11.0 (Barbarossa) все необходимые персонажи вводились следующим образом:
  • генералы, адмиралы и лидеры страны на момент начала игры добавлялись непосредственно в "истории" страны;
  • министры - в списке доступных для страны идей;
  • если персонаж должен появиться во время игры (по фокусу, событию, решению, т.п.), его необходимо было прописать непосредственно в коде искомого действия.
Под данную систему у меня уже был гайд (если вы хотите его глянуть, то вот).
По понятным причинам такая система вызывала определенные сложности. Например, если один и тот же человек должен быть и министром, и лидером, и генералом - вам придется создать три разных структуры в разных местах игры. Это создает определенные проблемы, когда, например, персонаж должен по событию умереть, но при этом он останется на остальных ролях, если забыть ввести дополнительные триггеры. Но впрочем, новая система такие проблемы исключает, потому будем работать с ней.
Что потребуется:
  • Во-первых, создать сам мод. Можно, конечно, все свои манипуляции проделывать и в основных файлах игры, но потом, если вы будете ставить другие моды, захотите повыполнять ачивки или просто пароходы дропнут новое обновление, то все может сломаться или перестать работать так, как задумано (иногда даже приходится переустанавливать игру).
    Ну а о создании мода из лаунчера существует множество инструкций в этих ваших ынтернетах, в которых, надеюсь, никого не забанили, потому найдете сами.

    ВАЖНО! Удостоверьтесь, что путь к папке с модом (общий его вид указан ниже) у вас полностью англоязычный, и не лежит где-нибудь в OneDrive, иначе мод у вас, скорее всего, запускаться не будет!

  • Когда мод создан:
    • В каталоге с нашим модом (по умолчанию - "C:\Users\Имя_Пользователя\Documents\Paradox Interactive\Hearts of Iron IV\mod\Название_мода", пример на скрине 1) создаем следующие папки - "common", "gfx", "history" и "localisation" (скрин 2).




    • Внутри папки "common" создаем папку "characters". В ней мы будем непосредственно работать с персонажами.



    • Внутри папки "gfx" создаем папки "interface" (а внутри неё - папку "ideas"), и "leaders" (внутри - папку "TAG". В первом месте хранятся изображения министров, во втором - портреты генералов и лидеров страны.

      (Во втором случае в название папки с картинками вместо TAG подставьте тэг нужной вам страны. Он состоит из трех букв, и для конкретной страны его можно узнать в tdebug-моде в игре, или посмотреть в файле "common\country_tags\00_countries.txt").





    • Внутри папки "history" создаем папку "countries". В ней мы будем добавлять (или как говорят в своих дневниках разрабы - "нанимать") персонажей в игру.



    • По пути "localisation/lang" (lang - это язык, на котором будет видна ваша локализация, в данном конкретном примере - russian), из файлов оригинальной игры копируем файл "characters_l_XXXX.yml" (XXXX - это название языка, на который мы будем локализовать имена наших персонажей, в этом примере, опять же - russian). Правда, лично я рекомендую не работать с оригинальными файлами, а переименовать их в еще что-нибудь (например, поставив в начало названия этих файлов название вашего мода, пример на скрине ниже).



    Совет: В папке языка с файлами локализации можно также создать дополнительно папку с названием "replace", и кидать в неё все файлы, где будут присутствовать локализационные ключи из оригинальной игры, если вам потребуется их изменять. Тогда игра при запуске будет корректнее менять их на ваши.
Добавление персонажа:
Теперь, когда вы создали все необходимые директории, можно начинать делать персонажей.
  • Идем в папку "characters", создаем в ней txt файл с названием в виде тэга вашей страны (не принципиально, по факту можно любое) и открываем его.



    Ах да. Для всех манипуляций с любый хоешным кодом настоятельно рекомендуется использовать Notepad++.

  • Добавление персонажа выглядит следующим образом:
    • Блок characters тянется до самого конца файла, и все персонажи объявляются и описываются внутри него;
    • Наш персонаж также объявляется блоком, имеющим свое название (это еще не имя персонажа, потому можно любое). Все свойства персонажа задаются внутри этого блока:
      • name - ключ для локализации персонажа, а если её нет - плейсхолдер вместо неё. Можно любой, но желательно созвучный с именем персонажа, чтобы не запутаться;
      • portraits = {...} - список портретов для вашего персонажа. Бывает двух видов - civilian = {...} и army = {...} (большой разницы не играет, какой именно брать, если портрет и для лидерства, и для армии, у вашего персонажа один и тот же. И напротив - если ваш персонаж имеет и гражданский, и военный портреты, то следует указать оба блока).
      • Блоки civilian/army имеют два свойства: large - большой портрет (для генерала/лидера), и small - портрет министра. Портреты указываются либо в виде пути к нему (пример: large = "gfx/leaders/TAG/имя_файла"), либо в виде GFX-ключа, о котором позже (пример: large = "GFX_portrait_character_name_large").
      • Затем вашему персонажу, также в виде блоков, задаются роли, о которых ниже.
Так или иначе, вот вам пара примеров того, как должен выглядеть блок персонажа (со всеми ролями):


Роли персонажа:
У вашего персонажа могут быть следующие роли:
  • Лидера государства;
  • Министра/советника/теоретика/члена Генштаба;
  • Генерала;
  • Фельдмаршала;
  • Адмирала.
По некоторым причинам, на агентов данные нововведения пароходы пока распространять не стали, потому они объявляются по старинке.
Ваши персонажи не ограничены по количеству доступных им ролей. То есть, один и тот же персонаж может быть и генералом, и советником в министрах и в Генштабе, и лидером какой-нибудь из идеологий одновременно.
Теперь конкретно по свойствам каждой роли:
  • Лидер (блок country_leader = {...}):
    • ideology - Суб-идеология персонажа. Определяет его принадлежность к той или иной фракции (фашистам ли, коммунистам ли, т.п). Стандартные суб-идеологии в оригинале лежат по пути "common\ideologies\00_ideologies.txt", ну а про создание своих, как нибудь, в другой раз;
    • traits = {...} - в фигурных скобках перечисляются черты персонажа. Стандартные лежат в "common\country_leader\00_traits.txt", можно создать и свои собственные. Необязательный параметр.
    • expire - дата истечения срока полномочий персонажа. Не принимается во внимание во время игры, но при её начале, если дата старта позже указанной здесь даты, персонаж не будет доступен ни при каких обстоятельствах. Дата указывается в формате Год.Месяц.День.Час. Необязательный параметр.
    • id - ID персонажа. Это остатки от прошлой системы героев, и сейчас его использовать не нужно (если не хочется удалять параметр, поставьте ему значение -1).
    • desc - ключ для локализации описания вашего лидера, либо плейсхолдер, если таковой нет. Необязательный параметр.

    Пример:


  • Министр (блок advisor = {...})
    • slot - указывает принадлежность персонажа к конкретному слоту идей. В оригинале есть следующие слоты:
      • political_advisor - политический советник/министр
      • theorist - теоретик
      • army_chief/navy_chief/air_chief - главнокомандующий армией/флотом/ВВС
      • high_command - члены Генштаба
      Могут быть добавлены и собственные слоты (как на примере ниже), но это, опять же, тема отдельного гайда.
    • idea_token - указывает идентификатор персонажа для триггеров, где нужно указать его как добавленную идею (скажем, чтобы можно было выполнить фокус или решение только если ваш персонаж будет министром);
    • ledger - принадлежность вашего персонажа к слотам идей в призме взгляда разведки других государств. Бывает следующих видов:
      • civilian - персонаж будет отображаться в секции с законами и министрами
      • military - во всех военных секциях
      • army/navy/air - в конкретной военной секции (армейской, морской или воздушной)
      • all - во всех секциях в принципе
      • hidden - персонаж не будет виден иностранной разведке ни в одной из секций.
      Этот параметр не всегда обязательно задавать. Если у вашего слота идей изначально задан таковой - он будет применен ко всем идеям в данном слоте автоматически. Если же он равен Invalid - данный параметр нужно задавать каждому персонажу в данном слоте отдельно.
    • can_be_fired = no - указывается, если данного министра нельзя уволить вручную. До патча 1.12.8 для этих же целей использовался параметр removal_cost = -1. Необязательный параметр.
    • traits = {...} - в фигурных скобках перечисляются черты персонажа. Сами черты - те же, что и у лидера страны (лежат в том же месте).
    • visible = {...} - блок условий, при соблюдении которых министр будет видим на панели его выбора. Необязательный параметр.
    • available = {...} - блок условий, при которых министр будет доступен для найма. Необязательный параметр.
    • cost - цена назначения министра в политической власти. Необязательный параметр.
    • removal_cost - цена снятия с поста министра в политической власти. Необязательный параметр.
    • on_add = {...} и on_remove = {...} - блоки эффектов, которые будут произведены при назначении/снятии вашего министра. Необязательный параметр.

    Пример:


  • Генерал (блок corps_commander = {...}), фельдмаршал (блок field_marshal = {...} - во всех аспектах аналогичен генералу) и адмирал (блок navy_leader = {...}):
    • traits = {...} - в фигурных скобках перечисляются черты персонажа. У генералов, фельдмаршалов и адмиралов свои собственные черты, они лежат в "common\unit_leader\00_traits.txt".
    • skill - уровень навыков генерала/адмирала, влияет на скорость получения им опыта (и возможность создать из него советника и включить в Генштаб вручную);
    • attack_skill - уровень атаки у генерала/адмирала;
    • defense_skill - уровень обороны у генерала/адмирала;
    • planning_skill - уровень планирования у генерала;
    • logistics_skill - уровень логистики у генерала;
    • maneuvering_skill - уровень маневра у адмирала;
    • coordination_skill - уровень координации у адмирала;
    • legacy_id - то же самое, что и id у лидера страны. Необязательный параметр.
    • visible = {...} - блок условий, при соблюдении которых генерал/адмирал будет видим и доступен для назначения в соответствующей панели. Необязательный параметр.

Пример:
Добавление портретов:
С тем, как нужно портреты рисовать, да еще и так, чтобы они не сильно отличались от стиля штатных художников из Paradox - этого я вам не подскажу, ибо сам не обладаю нужными навыками. А по простым методикам кого-то нарисовать есть многочисленные гайды разной степени качества, в том числе и на YouTube.
Но если у вас уже есть все нужные портреты, то могу посоветовать следующее:
  • Формат ваших изображений - .dds, или .png;
  • Размеры - 156x210 пикселей для портретов лидеров/генералов, и 65x67 пикселей у министров;
  • В названии портрета НЕ должно быть никаких символов, кроме английских букв, цифр и нижних подчеркиваний. Любая кириллица, любые закорючки языков старой Европы, или, не дай бог, что-то на арабском, приведет лишь к тому, что ваш файл, скорее всего, игра просто не найдет;
  • Ну и, наконец, про GFX-переменные. Чтобы задавать портреты через них:
    • В директории мода создаем папку "interface";
    • Затем из оригинальной игры копируем сюда какой-нибудь файл с расширением .gfx. Рекомендую его после этого переименовать. Открываем его Notepad-ом.



    • Открыв файл, если вы его переименовали, все данные оттуда можно удалить (оставив блок spriteTypes = {...} пустым). Добавляем ниже следующий код (пример на скрине ниже):

      spriteType = {
      name = "имя_переменной"
      texturefile = "путь к вашему портрету"
      }




    • Затем берем нашу имя_переменной, возвращаемся к файлу с персонажами, и там, где задаются портреты, в качестве пути указываем эту переменную.
Приписываем персонажа стране:
После того, как вы завершили основную работу по прописке персонажа в игру, теперь нужно выдать его какой-либо стране, чтобы он стал доступен. Но перед тем:
  • Идем в файлы локализации, созданные заранее (указаны выше в руководстве, но по большей части название файла не играет большой роли - главное, чтобы оно не совпадало с оригинальным названием, иначе мод будет замещать ванилу с возможными проблемами потом).
  • В начале файла указывается, на какой язык переводим (в нашем случае это указание имеет вид "l_russian:"). Локализация имеет вид " ключ_локализации:0 "..."". Ключом локализации, в нашем случае, будет то, что вы указали у персонажа в свойстве name. Ну а в кавычках - то, что должно выводиться в игре (при использовании нужного языка).

Теперь пропишем персонажа стране:
  • Копируем по пути "history\countries" из файлов оригинальной игры файл, имеющий название а-ля "TAG - Name.txt" (где TAG - тэг вашей страны, Name - её название);
  • Открываем его, и в любом месте дописываем следующий блок:
    recruit_character = character_name, где character_name - название блока с вашим персонажем (которое теперь везде будет использоваться как ключ, указывающий на конкретно этого персонажа).



Ну и все. При следующем запуске игры персонаж должен появиться в том месте, куда вы его назначили:



Заключение:
Как видите, добавление своих персонажей или редактура существующих не является какой-то непосильной задачей, с которой вполне может справится даже далекий от моддинга и элементарного программирования человек, способный сделать за компьютером больше, чем включить его на кнопку. Главное - не переборщить с некоторыми настройками и не вскрыться камнем вниз с крыши чего-нибудь из-за лютой рутины и монотонности в некоторых местах сего процесса.

Если у вас что-то не заработает, задавайте вопросы в комментариях или (что предпочтительнее) пишите в ЛС - помогу чем смогу!

Если хотите отблагодарить автора финансово, то вот: https://www.donationalerts.com/r/st_himars

Еще мои гайды:
https://steamproxy.net/sharedfiles/filedetails/?id=1856313518
https://steamproxy.net/sharedfiles/filedetails/?id=3308231607
https://steamproxy.net/sharedfiles/filedetails/?id=2950066795
15 Comments
S.K. / K r A I S # 5 Nov @ 3:27am 
Есть проблемка. Я вроде всё сделал правильно, по гайду. По началу всё было нормально, но после 3 политического советника я заметил следующее: "Если я нанимаю одного кастомного (моего мода) политического советника, тогда все остальные кастомные (моего мода) генералы, фельдмаршалы, политические советники просто пропадают. Не знаю что делать.
排泄物の王 19 May @ 7:31am 
Ладно, я смог наконец разобраться с пикчей на портреты, но все еще остается одна проблема. Я сколь не пытался, но не могу по какой-то причине добавить нормальное имя персонажу, а не оставлять его обозначение, хотя вроде таки я делаю все правильно.
排泄物の王 19 May @ 5:57am 
в игре появляется только ID персонажа и generic портрет. Портрет давал, локализацию тоже. Херня какая-то получается в итоге вместо желаемого... И шо делац?
俄语 Voenniy_Prestupnik 26 Mar @ 9:41am 
не робит
Mäksim Bösik 6 Mar @ 4:06am 
Нихера не работает, только хуже стало
Vardi 5 Jan @ 4:47am 
Зроби будь ласка гайд як додати нових шпигунів, не можу знайти у файлах гри де це прописано, вчені з нового оновлення бачу, а от шпигунів не знайду
Я ЖРУ ШТУКАТУРКУ 5 Oct, 2024 @ 3:00am 
что делать у меня появился главнокомандующий но нет портрета на него
ΩM€G∆ 12 Aug, 2024 @ 1:16pm 
Очень признателен, мне помогло:steamthumbsup:
Jahorikѣ Pitonѣ 5 Jan, 2024 @ 8:07am 
друг,добавь в друзья пожалуйста) у меня проблемы с этим гайдом(
[VNG] Hunter 6 Sep, 2023 @ 11:40pm 
Спасибо за гайд, спустя год получилось добавить генерала :honor: