Hearts of Iron IV

Hearts of Iron IV

665 vurderinger
Как сделать Мод
Av Kengelet
Руководство по созданию мода
3
23
8
2
4
4
2
2
2
2
   
Utmerkelse
Favoritt
Favoritter
Fjern som favoritt
Начало Мода
Запускаем Игру

Переходим во вкладку "Модификации"

Затем нажимаем на кнопку "Инструменты модификаций"
Нажимаем на кнопку "Создать модификацию"

Называем наш мод
Вписываем версию мода
И создаем папку (называют еще каталог)






















Тэги (Метки мода)
Alternative History - Альтернативная история
Balance - Баланс
Events - Евенты
Fixes - Исправления (Фикс)
Gameplay - Игровой Процесс
Graphics - Графика
Historical - Исторические
Ideologies - Идеология
Map - Карта
Military - Военные (?)
National Focuses - Национальные Фокусы
Sound - Звук
Technologies - Технологии
Translation - Перевод
Utilities - Утилиты


После этого нажимаем на кнопку "Создать Мод"

И идем по этому пути - C:\Users\ЮЗЕР\Documents\Paradox Interactive\Hearts of Iron IV\mod\ВАШ МОД
Начало создание страны



Cоздаем файл history
В history создаем две папки: countries и states

Теперь идем в оригинальную игру и ищем папку history
Теперь все, что есть в states копируем в нашу, модовую папку states

А теперь идем в нашу модовую папку countries
Создаем txt файл по типу "Тег страны" - "Название страны" (Типо GEG - Gerger)

Тег страны - Так сказать оно нужно чтобы контактировать с страной
Название страны - Нужен только в двух вещях

Этот файл мы будем называть "Файл страны"

Открываем наш файл Файл страны через Atom или Notepad++
Копируем все это в наш файл

capital = 5 ##Наша столица oob = "GEG_1936" ##GEG - Тег, заменить set_research_slots = 3 #Количество ячеек исследования # Технологии, какие будут открыты при старте set_technology = { infantry_weapons = 1 infantry_weapons1 = 1 tech_recon = 1 tech_support = 1 tech_engineers = 1 tech_military_police = 1 tech_mountaineers = 1 motorised_infantry = 1 paratroopers = 1 gw_artillery = 1 gwtank = 1 basic_light_tank = 1 # PLACEHOLDER early_fighter = 1 fighter1 = 1 early_bomber = 1 strategic_bomber1 = 1 naval_bomber1 = 1 mass_assault = 1 fleet_in_being = 1 } set_politics = { ruling_party = communism ##Рулевая партия last_election = "1936.1.1" ##Последние выборы (если есть) election_frequency = 48 ##Через сколько проводят выборы elections_allowed = no ##Есть ли выборы } set_popularities = { democratic = 15 ##Демократия neutrality = 20 ##Нейтралитет communism = 60 ##Коммунизм fascism = 5 ##Фашизм } create_country_leader = { name = "Vasil Zacharka" desc = "" picture = "gfx/leaders/Europe/Portrait_Europe_Generic_3.dds" expire = "1965.1.1" ideology = centrism traits = { # } } # Лидер Страны create_country_leader = { name = "Mega Lider" desc = "" picture = "gfx/leaders/Europe/Portrait_Europe_Generic_land_3.dds" #Картинка expire = "1965.1.1" #Когда умрет ideology = stalinism ##За какую Идеологию (входит в types у коммунистов) #conservatism, liberalism и socialism - демократия #marxism, leninism, stalinism, anti_revisionism, anarchist_communism - коммунизм #nazism, fascism_ideology, falangism, rexism - национализм #despotism, oligarchism, moderatism и moderatism - нейтралитет traits = { # } } }
# - это комментарий

Теперь создаем папку common
В папке "common" создаем папку country_tags и countries"

В нашу папку coutry_tags копируем из оригинальной игры файл country_tags\00_countries.txt

Открываем 00_countries.txt и идем в вниз
Пишем
"Тег страны" = "countries/"Название страны".txt"
Пример GEG = "countries/Gerger.txt"

Цвет страны

Теперь открываем папку "countries"
Создаем txt файл "Название страны"
Пример "Germen"







Теперь пишем:

graphical_culture = eastern_european_gfx graphical_culture_2d = eastern_european_2d

После этого Пишем;
color = rgb { R G B } ##Цвет на политической карте

RGB Это цвет нашей Страны
Если мы напишем color = rgb { 0 0 0 ] то это черный
Если мы напишем color = rgb { 0 255 0 } то это Ярко-Зеленый
Также можно использовать спец. сайты
Adobe Color[color.adobe.com]

Теперь идем в оригинальную игру по пути common/countries/ и копируем colors.txt в наш countries

Открываем, идем в самый вниз и пишем
"Тег" = { ##Например GEG color = rgb { R G B } color_ui = rgb { R G B } ##Цвета Границы }

Области

Идем в по пути \history\states и видим уже заранее заготовленные Области

Теперь нам нужна id области, которые хотим отжать у других стран во славу нашей страны
Что бы узнать какой Вам нужен id - Список областей[hoi4.paradoxwikis.com]

Когда определились с id, пишем его в поисковике и находим
Когда нашли открываем его
А теперь поподробнее
state={ id=5 ##Id Области name="STATE_5" ##Id Области для локализации manpower = 3378108 ##Численость области state_category = large_city ##Тип области history={ owner = GER ##Контролирует область controller = GER ##Необязательно victory_points = { ##Победные очки в регионе (6332 - регион 10 - победные очки) 6332 10 } buildings = { ##Постройки infrastructure = 6 ##Инфраструктура industrial_complex = 2 ##Заводы народа 6332 = { bunker = 1 ##Бункер в регионе (6332 - регион) } anti_air_building = 2 ##Анти-аир 6332 = { naval_base = 5 ##Верфь в регионе (6332 - регион) } air_base = 6 ##Уровень воздушной базы } add_core_of = GER ##Потомственно принадлежит 1939.1.1 = { ##Если запуск произошел за 1939.1.1 и более buildings = { anti_air_building = 5 ##Анти аир = 5 } } } provinces={ ##Номера регионов входящих в Область 266 281 348 395 3351 3380 3384 6332 6375 6402 9327 9346 9372 9398 11245 11265 11386 } }

Нам нужно заменить только GER (или другой тег) на ваш

Теперь идем снова в \history\countries в Файл страны
Изменяем capital = "Id области"
Пример capital = 5
Это и будет ваша столица

Локализация

Создаем папку localisation








Копируем файл countries_l_russian.yml из localisation оригинальной игры в нашу папку

Открываем
Идем в конец
Пишем
Тег_communism:0 "Название страны при Комунизме" Тег_communism_DEF:0 "Название страны при Комунизме для Евентов" Тег_communism_ADJ:0 "Название страны при Комунизме сокращенно" Тег_democratic:0 "Название страны при Демократии" Тег_democratic_DEF:0 "Название страны при Демократии для Евентов" Тег_democratic_ADJ:0 "Название страны при Демократии сокращенно" Тег_fascism:0 "Название страны при Фашизме" Тег_fascism_DEF:0 "Название страны при Фашизме для Евентов" Тег_fascism_ADJ:0 "Название страны при Фашизме сокращенно"
Также файл должен быть в кодировке UTF-8

Страны - Создаем Флаги и Потреты
В Папке мода Создаем папку "gfx"

В Папке "gfx" Создаем две папки: "flags" и "leaders"

В Папке "flags" Создаем две папки: "medium" и "small"

Мы будем Использовать "paint.net" (Это не ссылка)
Нажимаем "Изображение"
Потом "Изменить Размер..."
Откл. "Сохранять Пропоции"
Нажимаем ок





















Вставляем Картинку Нашего Флага и Нажимаем "Увеличить Плотно"













Размеры флагов

Большой Флаг:
Ширина: 82
Высота: 52
Сохраняем Так: /gfx/flags

Средний Флаг:
Ширина: 41
Высота: 26
Сохраняем Так: /gfx/flags/medium

Маленький Флаг:
Ширина: 10
Высота: 7
Сохраняем Так: /gfx/flags/small

Называем флаги так: "Тег"_"Идеалогия" (communism, democratic, fascism, neutrality)
Пример: GEG_communism
В формате "TGA"

Нажимаем На "32 Бита"
Откл. Сжатие






















Как должна выглядить Папка после всего этого:

Потреты

Создаем В Папке "leaders" Папку "Тег Страны" (GEG,ВYВ)

Ищем фото Нашего Лидера
Ну, например Путина/























Потрет нашего лидера должен сохранен быть так
Ширина: 156
Высота: 210
В формате: DDS
Параметры: A8R8G8B8
Сохраняем Так: "Каталог Мода"/gfx/leaders/"Тег Страны"/"Название нашего Лидера" (Например:Mega_Lider)













Идем в Файл страны
Ищем Такой Код
Изменяйте то, что вам нужно изменить
create_country_leader = { name = "Mega Lider" #Имя desc = "POLITICS_MOHAMMED_ZAHIR_SHAH_DESC" picture = "Mega_Lider.dds" #Картинка, прописываем ваш файл который вы сохранили expire = "1965.1.1" #Когда умрет ideology = marxism ##За какую Идеологию (Коммунизм) traits = { # } }

Нац. Фокусы
Создаем в Папке "common" Папку "national_focus" и создаем Файл "Название нашей страны"







Это будет Фокусы Страны

Пишем
focus_tree = { id = "Название страны"_focus ##Пример germen_focus country = { factor = 1 #0 = для всех стран, 1 = для одной } default = yes reset_on_civilwar = no }

Потом добавляем после reset_on_civilwar = no это
focus = { id = Focus_Number_1 icon = GFX_goal_generic_construct_civ_factory x = 8 #По горизонтали y = 0 #По вертикали cost = 10 completrion_reward = { ##Когда фокус выпол. add_tech_bonus = { #Дать бонус name = industrial_bonus ##На индустриальные технологии bonus = 0.5 ##На 50% uses = 1 ##Использовать только 1 раз category = industry } } }

Локализация

Копируем из оригинальной игры файл \localisation\focus_l_russian.yml в нашу папку localisation

Открываем и идем в вниз
Пишем
"Название нашего фокуса":0 "Фокус номер 1" "Название нашего фокуса"_desc:0 "Фокус номер 1 - Описание фокуса"

Наследование

Создадим еще один фокус под Focus_Number_1
focus = { id = Focus_Number_2 icon = GFX_goal_generic_construct_civ_factory prerequisite = { focus = Focus_Number_1 } ##Наследование от Focus_Number_1 x = 0 #По горизонтали y = 1 #По вертикали relative_position_id = Focus_Number_1 ##Наследование позиции cost = 10 available_if_capitulated = yes completion_reward = { add_tech_bonus = { name = industrial_bonus bonus = 0.5 uses = 1 category = industry } } }
Так-же прописываем этому фокусу локализацию

Исключения
Создаем новый фокус по координатам x = 10 y = 1 (а это вы сами)
И после иконки добавляем mutually_exclusive = { focus = "Фокус" }
Например Focus_Number_2

Идем к фокусу который мы хотим с которым мы хотим прописать Исключение
И после иконки пишем
mutually_exclusive = { focus = "Другой фокус где мы прописали Исключения с этим" }
Например Focus_Number_3
Должно получится вот так

Полезные команды:
Focus.AutoComplete - Можно быстро исследовать фокус

Так же более подробно об Фокусах вы можете почитать на Вики[hoi4.paradoxwikis.com] (Англ.)
Заставки к Загрузке
В папке "gfx" Создайте папку "loadingscreens"












Ваши заставки будут тут
Вам нужно только 9 заставок (Главная - 5-ая, Она будет отображатся когда загрузится игра)
Разрешение 1920x1080
Название файлов - load_1 - load_2 - load_3 - load_4 - load_5 - load_6 - load_7 - load_ 8 - load_9
Музыка
В этой главе мы научимся добавлять в игру музыку и радио для них

Создаем радио
Создаем папку interface и копируем из ванили по пути \interface\ два файла -
musicplayer.gfx - В .gfx файлах мы прописываем откуда надо загружать картинки
musicplayer.gui - В .gui файлах мы прописываем интерфейс, аля UI. Нам этот файл кстати не пригодится, поэтому можете его не копировать

Также нам надо придумать название для нашего радио. И для примера мы дадим название "prosto_radio"

Мы снова идем в наш мод по пути \interface\ и создаем файл music_station_название_радио.gui (music_station_prosto_radio.gui)
С кодировкой UTF-8 без BOM

Вставляем код
guiTypes = { containerWindowType = { name = "prosto_radio" position = { x =0 y=0 } size = { width = 590 height = 46 } iconType ={ name ="musicplayer_header_bg" spriteType = "GFX_musicplayer_header_bg" position = { x= 0 y = 0 } allwaystransparent = yes } instantTextboxType = { name = "track_name" position = { x = 72 y = 20 } font = "hoi_20b" text = "Roger Pontare - Nar vindarna viskar mitt namn" maxWidth = 450 maxHeight = 25 format = center } instantTextboxType = { name = "track_elapsed" position = { x = 124 y = 30 } font = "hoi_18b" text = "00:00" maxWidth = 50 maxHeight = 25 format = center } instantTextboxType = { name = "track_duration" position = { x = 420 y = 30 } font = "hoi_18b" text = "02:58" maxWidth = 50 maxHeight = 25 format = center } buttonType = { name = "prev_button" position = { x = 220 y = 20 } quadTextureSprite ="GFX_musicplayer_previous_button" buttonFont = "Main_14_black" Orientation = "LOWER_LEFT" clicksound = click_close pdx_tooltip = "MUSICPLAYER_PREV" } buttonType = { name = "play_button" position = { x = 263 y = 20 } quadTextureSprite ="GFX_musicplayer_play_pause_button" buttonFont = "Main_14_black" Orientation = "LOWER_LEFT" clicksound = click_close } buttonType = { name = "next_button" position = { x = 336 y = 20 } quadTextureSprite ="GFX_musicplayer_next_button" buttonFont = "Main_14_black" Orientation = "LOWER_LEFT" clicksound = click_close pdx_tooltip = "MUSICPLAYER_NEXT" } extendedScrollbarType = { name = "volume_slider" position = { x = 100 y = 45} size = { width = 75 height = 18 } tileSize = { width = 12 height = 12} maxValue =100 minValue =0 stepSize =1 startValue = 50 horizontal = yes orientation = lower_left origo = lower_left setTrackFrameOnChange = yes slider = { name = "Slider" quadTextureSprite = "GFX_scroll_drager" position = { x=0 y = 1 } pdx_tooltip = "MUSICPLAYER_ADJUST_VOL" } track = { name = "Track" quadTextureSprite = "GFX_volume_track" position = { x=0 y = 3 } alwaystransparent = yes pdx_tooltip = "MUSICPLAYER_ADJUST_VOL" } } buttonType = { name = "shuffle_button" position = { x = 425 y = 20 } quadTextureSprite ="GFX_toggle_shuffle_buttons" buttonFont = "Main_14_black" Orientation = "LOWER_LEFT" clicksound = click_close } } containerWindowType={ name = "prosto_radio_stations_entry" size = { width = 162 height = 130 } checkBoxType = { name = "select_station_button" position = { x = 0 y = 0 } quadTextureSprite = "КАРТИНКА" clicksound = decisions_ui_button } } }

Вставляйте свое название за место prosto_radio и сохраняйте

Все должно выглядеть так, кроме названия


Время создать картинку для радио
Создаем папки по такому пути \gfx\interface\topbar\musicplayer\
Запускаем paint net либо что-то другое, создаем файл 304x120 и копируем картинку которая представлена внизу
Может быть конечно не точно вырезано, но да ладно





В первую рамку мы вставляем картинку, когда радио не включено
Во вторую наоборот, когда включено радио

Делаем и сохраняем нашу картинку как dds по типу название_album_art.dds (prosto_album_art.dds)
Открываем musicplayer.gfx, идем вниз и пишим
spriteType = { name = "GFX_prosto_radio_album_art" texturefile = "//gfx//interface//topbar//musicplayer//prosto_radio_album_art.dds" noOfFrames = 2 }
За место prosto_radio - ваше название (просто напоминание)

Идем в music_station_название_радио.gui и находим строчку
quadTextureSprite = "КАРТИНКА"
Пишем что-то, аля GFX_prosto_radio_album_art
quadTextureSprite = "GFX_название_album_art"

Музыка!
Ищем музыку, потом конвертим в формат .ogg

Создаем папки \music\название\
Скидываем туда вашу музыку в .ogg и создавайте два файла
название_music.asset - мы в этом файле указываем путь к музыке
название_soundtrack.txt - в этом файле мы указываем на какой станции будет играть музыка и при каких обстоятельствах
С кодировкой UTF-8 без BOM

Открываем название_music.asset
Копируем
music = { name = "Название" file = "Название вашей музыке.ogg" volume = 0.65 }
И так для всех .ogg

После работы открываем название_soundtrack.txt
Копируем
music_station = "Название_радио" #Только один раз music = { #А это - кнтр с, кнтр в для каждой музыки song = "Название" chance = { factor = 2 #Какая вероятность того, что выпадет именно это музыка. } }
Также есть модификаторы

Это музыка может проигрыватся только если вы играете за Советский союз
music = { song = "Название" chance = { modifier = { factor = 2 tag = SOV } } }

Будет играть эта музыка при условии что нет войны
music = { song = "Название" chance = { modifier = { factor = 1 has_war = no } } }

Ваше правительство - Демократы
music = { song = "Название" chance = { modifier = { factor = 1 has_government = democratic } } }


Локализация
Входим в папку localisation
Копируем music_l_russian.yml и musicplayer_l_russian.yml
В musicplayer_l_russian.yml мы пишем
название_радио_TITLE:0 "Название"
Пример: prosto_radio_TITLE:0 "Просто радио"

В music_l_russian.yml
название_музыки:0 "Название музыки"
Пример: Tachanka:0 "Тачанка"

Евенты
Мне лень делать этот раздел, поэтому вот вам ссылки
Офиц. инфа на вики - https://hoi4.paradoxwikis.com/Event_modding

Видосик на Англ - https://www.youtube.com/watch?v=ItlVZvJ5LAI
Детальный рассказ про Евенты на Англ. - https://www.youtube.com/watch?v=YRDsJRW5eW4&list=PLt_7vUaEvaGTJ0ISBqY2v4EyfmPALiVS7&index=7&t=1958s

Если вы не понимайте Английский, то
Видосик на Русском - https://www.youtube.com/watch?v=EZGIpH8lgiQ
Еще видосик на Русском - https://www.youtube.com/watch?v=GcRS-XUZKuU
Идеологии
Создаем папки - \common\ideologies и копируем 00_ideologies.txt к себе

Копируем не в самый конец и изучаем
anarchist = { types = { anarcho_syndicalism = { # Используется при назначении лидерам идеологии. } } dynamic_faction_names = { "FACTION_NAME_ANARCHIST_1" # Faction names used by the ai when an ai with this ideology creates a faction } color = { 169 42 42 } # RGB Цвет rules = { # Правила для идеологии can_declare_war_on_same_ideology = # Может ли страна объявлять войну с страной у которой та-же идеология. Необязательно. can_force_government = # Страна может изменить идеологию при мирном соглашении. Необходимо написать. can_send_volunteers = # Страна может отправлять добровольцев. Необходимо написать. can_puppet = # Страна может делать марионеточные нации в мирном соглашении. Необходимо написать. can_lower_tension = # Страна понижает мировое напряжение при мирном соглашении. Необязательно. can_only_justify_war_on_threat_country = # Страна может оправдать только нацию, которая создала мировую напряженность/угрозу. Необязательно. can_guarantee_other_ideologies = # Может давать гарантии странам с другими идеологиями. Не требуется } can_host_government_in_exile = no #Может принять правительство в изгнании war_impact_on_world_tension = # Изменяется с -1 на 1. Увеличивает или уменьшает мировое напряжение, созданное этой нацией faction_impact_on_world_tension = # Изменяется от -1 до 1. Увеличивает или уменьшает влияние фракции на мировое напряжение modifiers = { # Модификаторы generate_wargoal_tension = # Требуемая мировая напряженность, чтобы начать оправдывать войну (от 0 до 1) join_faction_tension = # Требуемое мировое напряжение, чтобы присоединиться к фракции (от 0 до 1) lend_lease_tension = # Требуемое напряжение для начала ленд-лиза (от 0 до 1) send_volunteers_tension = # Требуемое напряжение для отправки добровольцев (от 0 до 1) guarantee_tension = # Требуемое напряжение, чтобы гарантировать нацию (от 0 до 1) take_states_cost_factor = # Изменяет стоимость областей в мирном соглашении. 0,25 увеличит стоимость области на 25% (-1 к 1) annex_cost_factor = # Изменяет стоимость полной аннексии нации в мирном соглашении. 0,5 увеличит стоимость аннексии на 50% (-1 к 1) justify_war_goal_when_in_major_war_time = # Изменяет стоимость оправдания войны во время войны. 0,5 уменьшит время на 50% (от 0 до 1) drift_defence_factor = # Естественная защита от других идеологии # 0.3 обеспечит 30% защиту от дрейфа (-1 к 1) puppet_cost_factor = # Изменяет стоимость марионеточной нации в мирном соглашении (-1 к 1) } can_be_boosted = no # Можете ли вы повысить популярность этой идеологии в другой стране can_collaborate = no # Про это ничего не написано faction_modifiers = { #модификаторы faction_trade_opinion_factor = 0.50 #плюс 50% для торгового мнения } ai_<идеология> = yes # Тип поведения ИИ (democratic, communism, fascism, neutral или создайте новую). }
Там много значений пусты, поэтому поставляйте как вам хочется.

Идеология практически готова (кроме иконки/локализаций), надо только прописать в файле стране лидера/соотношение и сделать флаг

Будем делать все эти вещи в файле СССР (можно конечно в другом файле), поэтому копируем его

Ищем где определяются идеологии и изменяем
set_politics = { ruling_party = anarchist last_election = "1933.7.1" election_frequency = 48 elections_allowed = no } set_popularities = { democratic = 20 fascism = 10 communism = 10 anarchist = 60 }

Добавляем флаги

Делаем лидера
create_country_leader = { name = "Not Joseph Stalin" desc = "POLITICS_JOSEPH_STALIN_DESC" picture = "Portrait_Soviet_Joseph_Stalin.dds" expire = "1953.3.1" ideology = anarcho_syndicalism #одно из types traits = { } }

Локализация
Ищем parties_l_russian.yml

Добавляем
anarchist:0 "Анархия" anarchist_noun:0 "Анархия" #Идеология - имя существительное anarchist_desc:0 "Анархия - описание."

Также можно создать "партии" для стран
SOV_anarchist_party:0 "Партия анархия?"

Потом идем в countries_l_russian и пишем название нашей страны при этой идеологии
SOV_anarchist:0 "Анархистская Россия"


Иконка для идеологии

Создаем иконку по 66x68
Сохраняем по пути \gfx\interface\ideologies в формате dds с названием "идеология_group.dds"

Берем файл countrypoliticsview.gfx из ванили
Идем в не совсем конец и пишем
spriteType = { name = "GFX_ideology_идеология_group" texturefile = "gfx/interface/ideologies/идеология_group.dds" }

Иконка сделана (но у меня она получилась темная)
Создание Области
Ну, первым делом идем по этому пути \history\states и спускаемся
Мы видим, что последний "id области" это 762

Создаем новый файл по типу "Id + 1-"Название области""
Например 763-Kaliningrad

Открываем и копируем это
state={ id=763 #Id Области name="STATE_763" #Id Области при локализации manpower = 100000 #Численость state_category = town ##Тип области resources={ #Ресурсы steel=2 } history={ owner = ТЕГ #Принадлежит buildings = { ##Постройки infrastructure = 5 ##Инфраструктура industrial_complex = 1 ##Заводы народа arms_factory = 1 ##Военные Заводы air_base = 2 ##Уровень воздушной базы } add_core_of = ТЕГ ###Потомственно принадлежит } provinces={ #Регионы которые входят в область } }
Заменяйте ТЕГ на ваш Тег

Теперь нам нужно заполнить provinces регионами
Но сначала надо определится откуда мы будем вытаскивать регионы

ID областей[hoi4.paradoxwikis.com]
Либо вы можете посмотреть откуда вы хотите украсть регионы в -debug режиме

Так вот, по уроку мы будем вытаскивать регионы из 5 id области
(ведь у нас Калиниград)
Открываем файл
Смотрим какие регионы мы хотим взять у других областей в нашу
ID регионов[hoi4.paradoxwikis.com]
Удаляем в ориг. файле регионе и перетаскиваем в нашу
(Для создания Калиниграда нам нужны id регионов: 281 348 395 3384 6332 11265)
Границы немного неровные из-за самих регионов

Локализация
Копируем файл state_names_l_russian.yml
Идем вниз и добавляем
STATE_763:0 "Калиниград"

Расположения объектов
Теперь надо перейти в -debug
Как это сделать:
1) Нажимайете на игру в Стими ПКМ
2) Свойства
3) Установить параметры запуска...
4) Написать -debug
5) ???
6) Profit

Теперь у вас появится кнопка "Hudge"


















Нажимаем
Видим это
Теперь надо нажать на "Buildings"
А там нажимаем на "Validate All States", либо на "Find Eroor" и делаем дело (если знаете как)
Нажимаем на Save
Идем по \Documents\Paradox Interactive\Hearts of Iron IV\map
Копируем buildings.txt
Идем в наш Каталог
Создаем папку "map"







И копируем туда buildings.txt

Добавление в supplyareas
Копируем \map\supplyareas в наш map

Ищем к какому стратег. региону мы хотим присоединить
Например 1-SupplyArea.txt
Добавляем наш id области
Вот так

Так же надо эту область добавить в strategicregions (а теперь вы тут сами)
Подробнее Вики (Англ.)[hoi4.paradoxwikis.com]
Ветки технологий
В этой главе мы научимся создавать ветки технологий

На примере мы создадим ветвь улучшения скорости мото дивизий

Создаем отдельную ветвь
Создаем папку \interface\ и копируем countrytechtreeview.gui
Что этот за файл? Это весь интерфейс технологий.

Также создаем папки по этому пути - \common\technologies\
Копируем из \common\technologies\ файл infantry.txt

Открываем infantry.txt, и если мы хотим создать новую ветвь, то пишем следующее. Если вы хотите продолжить ветвь, то идите в подглаву "Продолжение ветки"

improving_logistics= { motorized = { #Увеличиваем скорость для всей категории "motorized" maximum_speed = 0.1 } research_cost = 1.5 #Стоимость start_year = 1938 #Когда можно исследовать без потерь folder = { name = infantry_folder #В какой вкладке position = { x = 2 y = @1938 } #Позиция } categories = { #Категории motorized_equipment } ai_will_do = { #Фактор ИИ factor = 1 } }

"Объяснение всего, что есть в ячейке технологии"
technologies = { <название_технологии> = { # Любой модификатор для страны может быть использован здесь. <модификатор> doctrine = yes # Эта технология - доктрина research_cost = <число> # Стоимость start_year = <год> # В каком году эта технология перестает получать преждевременные штрафы. # Эффекты, применяемые к завершению технологии on_research_complete = { <effects> } show_effect_as_desc = yes # Отображает эффекты в описании. # Изменить свойство юнитов и под-свойств <юнит> = { <свойство> = <число> # Необходимо! <terrain> = { <свойство> <число> } } # Изменить свойство объекта для всей категории <категория> = { <свойство> <value> } # Открыть поддержку (поддержка ПВО/ПТО...) enable_subunits = { <поддержка> } # Открыть вооружение (оружие/корабли/танки...) enable_equipments = { <название_вооружения> } show_equipment_icon = yes # Показать значок оборудования, который разблокирован # Открыть строение enable_building = { building = <строение> level = 1 } # Links technologies in corner. Used for variant technologies of base technology # sub_technologies = { <technology> } # Технологии, использующие эту технологию, зависят от других технологий. dependencies = { <technology> = 1 } # Limits technology visibility if trigger is false. Used for DLC checks. Used for focus-only technologies. allow = { <triggers> } # Limits technology (and linked technologies) visibility if trigger is false. Used for DLC checks. allow_branch = { <triggers> } # Multiple allowed. Controls the links between technologies. path = { leads_to_tech = <technology> research_cost_coeff = <float> } # Used to either-or with other technologies. XOR = { <technology> } # Controls which folder (tab) the technology appears under. folder = { name = <folder name> # Found in countrytechtreeview.gui # Position in the tech tree interface position = { x = 0 y = 0 } } # Which technology categories apply to this technology. categories = { <categories> } # Weighting for the AI to pick the technology ai_will_do = { factor = <float> # Conditional modifier to the factor. modifier = { factor = <float> <triggers> } } # Adjusts weighting depending on taken technology (uses technology tags) ai_research_weights = { <type> = <float> } } } Взято отсюда[hoi4.paradoxwikis.com]

Идем теперь в countrytechtreeview.gui
Ищем следующее

containerWindowType = { name = "infantry_folder" position = { x=0 y=47 } size = { width = 100%% height = 100%% } margin = { top = 13 left = 13 bottom = 24 right = 25} drag_scroll = { left middle } verticalScrollbar = "right_vertical_slider" horizontalScrollbar = "bottom_horizontal_slider"

Крутим вниз пока не обнаруживаем это

gridboxtype = { name = "support_weapons_tree" position = { x = 140 y = 210 } #size = { width = 420 height = 500 } slotsize = { width = 70 height = 70 } format = "LEFT" }
Это начало ветви. Например вот этот именно код определяет начало ветви "помогательного вооружения"

Пишем после всех "gridboxtype" следующее:
gridboxtype = { name = "improving_logistics_tree" #Название_Технологии_tree position = { x = 140 y = 325 } slotsize = { width = 70 height = 70 } format = "LEFT" }





Создаем картинку для технологии
Для технологий которые дают эффекты - 64x64
Для технологий которые открывают оружие - Нет точных размеров
Все в .dds

Копируем из папки interface файл Technologies.gfx в нашу папку
Сохраняем картинку в \gfx\interface\technologies

Открываем Technologies.gfx
Идем в самый конец

Пишем
SpriteType = { name = "GFX_improving_logistics_medium" texturefile = "gfx/interface/technologies/improving_logistics.dds" }


А вот сама картинка исследования


Продолжение ветки

Идем в infantry.txt
И добавляем в структуру improving_logistics следующий код
path = { leads_to_tech = improving_logistics2 research_cost_coeff = 1 }
Этот код говорит нам, что исследование improving_logistics приведет нас к возможности исследования improving_logistics2

После структуры improving_logistics пишем
improving_logistics2 = { motorized = { maximum_speed = 0.1 } research_cost = 1.7 start_year = 1939 folder = { name = infantry_folder position = { x = 2 y = @1939 } } categories = { motorized_equipment } ai_will_do = { factor = 1 } }

У нас появилась новое исследование, но нет иконки.
Так-что вот вам иконка, идите и добавляйте её с помощью верхней подглавы.


Локализация
За локализацию технологий отвечает equipment_l_russian.yml
Копируем и открываем
improving_logistics:0 "Улучшение скорости мото дивизий - Название" improving_logistics_short:0 "Улучшение скорости мото дивизий - Тоже название но в другом месте" improving_logistics_desc:0 "Улучшение скорости мото дивизий - Описание" improving_logistics2:0 "Улучшение скорости мото дивизий II - Название" improving_logistics_short2:0 "Улучшение скорости мото дивизий II - Тоже название но в другом месте" improving_logistics_desc2:0 "Улучшение скорости мото дивизий II - Описание"

Так-же можно создать для разных стран разные названия
ТЭГ_improving_logistics:0 "Улучшение скорости мото дивизий - специальное название для какой-то страны"

Делаем картинку для мода
Сначала надо запихнуть саму картинку в вашу папку с модом (picter.png)







После этого надо найти файл расширения .mod с названием вашего каталога в папке каталога

После тегов вы пишите picture="Название вашей картинки.png"









Также максимальное размер картинки - 1Мб
Дебаг лог и все такое
Как включить Дебаг?
Правая кнопка по игре -> Свойства -> Параметры запуска -> Прописать "-debug"
















Логи ошибок, называемые "дебаг логи", будут автоматически появиться после завершения загрузки игры.
Также они находятся тут - C:\Users\ПОЛЬЗОВАТЕЛЬ\Documents\Paradox Interactive\Hearts of Iron IV\logs\error.log


Известные ошибки/проблемы

Ошибка:
Error: "Unexpected token: , near line: 2 " in file: "ПУТЬ_К_ФАЙЛУ" near line: 2
Решение 1: Лишний символ, надо удалить его

Решение 2: Поменять кодировку на UTF-8













Проблема: Мод в лаунчере виден и включен, но при запуске игры не работает мод

Решение: В файле C:/Users/Документы/Paradox Interactive/Hearts of Iron IV/mod/name.mod в нем есть такая ссылка на папку мода: path="C:/Users/Документы/Paradox Interactive/Hearts of Iron IV/mod/name". Надо изменить на path="/mod/name".
name - название мода.

"Скорее всего он изначально когда создавал мод кинул такую ссылку и при этом он не воспринимал ее, и поэтому он как бы видел что мод есть но не запускал его, так как ссылку он не мог считать. Я просто то что перед /mod все удалил и все заработало."

Решение проблемы от @Serguliu

(Предлагайте свои ошибки и пути их решения)
Если хотите задать вопрос в комментах
Если хотите задать вопрос в комментах, то
  • Связанное с багами/проблемами

    • 1) Проверьте весь код (И еррор лог тоже)
      2) Загуглите проблему (на Английском тоже)
      3) Нет результатов - задавайте, также нужен дебаг лог для понятия ситуации (или код)

    Вопрос по материалу "как сделать" или вы не поняли этот материал

    • 1) Загуглите гайды (и на Инглише)
      2) Посмотрите, как это сделано в ваниле или в модах
      3) Нет результатов - задавайте


Также это достаточно старое руководство, поэтому многое может и устарело. Поэтому не ленитесь и самостоятельно изучайте другие руководства или сам код в игре.
846 kommentarer
Edgarysosal 14 minutter siden 
че делать если мод вообще не запускается? сделал все как указано, и методы исправления ошибок тоже сделал, ну вообще не работает мод, хотя все верно сделано, кто знает что делать? на ютубе не нашел нихуя
ℒΌℕᎶ⓷⓷⓿⓿⓿ 9. feb. kl. 7.54 
А как сделать мод на создание тех же марионеток у германии на другую страну например Италию?
jäger 2. feb. kl. 6.34 
что делать если страна не появилась в игре?
N1zz1y 25. jan. kl. 0.52 
как сделать определенные территории национальными для стран?
DeVoid 9. sep. 2024 kl. 17.03 
Создал мод сначала выдавало ошибку: не найден путь, а после просто пропала ошибка, но фокусов нет, что делать?
life enjoyer 28. aug. 2024 kl. 1.02 
капеец я сделал мод,ничего не получилось и теперь мне все время пишет что у меня есть модифицированные сохранения, и на онлайн серверы я не могу заходить, версия поменялась:GDNormal:
chekrizhka 25. aug. 2024 kl. 6.32 
Как сделать свою карту не реального мира и именно свою
гарик харамов 19. aug. 2024 kl. 5.51 
Я сделал регион, и у меня столица находится в Днепропетровске, можно её как-то переместить в другую провинцую, в моём случае Запорожье?
Магистр пiва 16. aug. 2024 kl. 16.40 
я хочу добавить правителя на другие идеологии как это сделать? Перечитывал несколько раз и нечего не нашёл
Dora 16. aug. 2024 kl. 4.15 
сделал страну, она появилась, но корки у нее нету на свою провку, помогите че делать