ModCreate
April 11

ModCreate #2 | События

События — один из способов вести в игру разнообразие, и способ вести игрока по сюжету, или вести хаос в мир.

Как можно одним небольшим набором команд, как порождать, так и разрушать целые империи?


Виды

Существует три вида событий:

  • Глобальные (global) — влияют на ресурсы, используются для изменения цен на ресурсы;
  • Локальные (common) — влияют на страну, стандартный вид событий;
  • Осадные (siege) — влияют на последствия осады, появляются после успешной осады.

Помимо вышеперечисленных, события могут подразделяться на две категории:

  • Сценарные — события работают в пределах одного сценария;
  • Несценарные — события работают вне зависимости от сценария.

Все вышеперечисленные виды и категории, зависят от нахождения файла события в директории модификация/игры.


Директории

Событию присваивается одна из категорий, если он находится в одной из нижеперечисленных директорий:

  • AoH3/game/events/ — Несценарные;
  • AoH3/map/{папка_карты}/scenarios/{папка_сценария}/events — Сценарные.

AoH3 — Папка с игрой/модификацией.

Внутреннее устройство папок категорий идентично с одним исключением: в папке несценарных событий, должны находится все изображения для событий.

Для дальнейшего удобства, будем именовать папку событий, вне зависимости от категории: events/

Событию присваивается один из видов, если он находится, в одной из нижеперечисленных папок:

  • global/ — Глобальные События;
  • common/ — Локальные События;
  • siege/ — Осадные События.

Все вышеперечисленные папки, должны находится внутри, одной из директорий категорий.


Работа Событий

В начале каждого игрового года, игра проверяет условия Локальных Событий для каждой страны, и в том числе [в начале года], игра проверяет условия для Глобальных Событий.

Игра проверяет вне зависимости от игрового времени, только условия для Осадных Событий, их условия проверяются только после успешной осады.


True/False

При проверке на соответствие условий события, игра присваивает одно из двух значений: True (истина) или False (ложь).

При значении False игра пропускает событие, для которого выполнялось проверка, а при значении True игра «запускает» событие. И таким образом игра проверяет все события.

Например: Если условием для события, является, состоит ли Франции в каким-либо альянсе? То, если Франция будет состоять в альянсе, то событие получит значение True, в против случае — False.


Базовая Настройка

После того, как вы определились с Категорией и Видом события, можем приступить к базовому оформлению файла события.

При создании файла, убедитесь, что ваш файл имеет расширение .txt, и его названия написано с использованием латинских букв, арабских цифр, знака нижнего подчёркивания (_) и дефиса (-).

Первая часть файла выглядит следующим образом:

id= 
title= 
desc=

image=

show_in_missions= 
mission_image=

only_once=

popUp= 
possible_to_run=

Мы не рекомендуем менять расположение строк, чтобы событие оставалось работоспособность.


Заголовок

Первые три строчки можно условно назвать «Заголовком», здесь указан Идентификатор (Identifier, ID), Заголовок (Title) и Описание (Description, Desc).

Идентификатор должен быть идентичным названию файла, без его расширения.

Заполняя поля Title и Desc можно двумя способами:

1. Текстовый

После знака равенства (=) можно написать любой текст (можно использовать пробелы).

При использовании данного способа, создание перевода становится невозможным.

Для демонстрации, мы создадим событие про массовые восстания в Великобритании:

id=british_revolution 
title=Революционные Восстания по всей Великобритании 
desc=Ваше величество, в нашей империи начались массовые восстания. Что прикажете делать?

2. Мультиязычный

После знака равенства (=) нужно указать Ключ Перевода (Translation Key). Для:

  • Title — идентификатор + .t
  • Desc — идентификатор + .d

⚠ Главное, чтобы в Идентификаторе и Ключах Перевода не было пробелов.

Для демонстрации, мы создадим событие про начало СВО:

id=special_military_operation 
title=special_military_operation.t 
desc=special_military_operation.d

Картинки

Как было сказано ранее, все изображения находятся в директории Несценарных событий (AoH3/game/events), в папке images/H/.

В данной папке, изображения хранятся в разрешении 592х300рх (или формате 148:75), в расширении .png.

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

В рамках демонстрации, мы будем использовать нижеприведённое изображение, с названием br.png:

Главное, не используйте уже существующее имя файла для новых изображений.

Полное название изображения должно быть указано в параметре image:

image=br.png

Режим Миссии

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

show_in_missions=false 
mission_image=0

⚠ Миссии и Древо Миссий мы рассмотрим в другой, тематической статье.


Специфические Настройки

Оставшиеся три параметра имеют разнообразное предназначение, но принимают только значения True или False.

only_once

Определяет, является ли событие «одноразовым» или нет. При True, он «запустится» для страны, только один раз.

popUp

Определяет, появится ли окно события на экране игрока при «запуске» события или нет. При False событие отобразится под внутриигровой датой, для его просмотра, игроку необходимо нажать на него.

possible_to_run

Определяет, может ли событие «запуститься» само. При False событие можно будет «запустить», только с помощью исхода другого события.
Для демонстрации, мы будем использовать для всех трёх параметров, значение True.
Итоговый результат, первой части нашего демонстрационного события, выглядит следующим образом:

id=british_revolution 
title=Революционные Восстания по всей Великобритании 
desc=Ваше величество, в нашей империи начались массовые восстания. Что прикажете делать?

image=br.png

show_in_missions=false 
mission_image=0

only_once=true

popUp=true 
possible_to_run=true

Триггеры

Триггеры расположены после базовой части события, и определяют, при каких условиях будет «запущено» событие.

Триггеры находятся в строгой иерархии: Блок -> Заголовок -> Триггеры.

Блок

Если все блоки имеют значение True, то событие «запускается». Существует четыре вида ключей блоков:

  • trigger_and — Если все заголовки имеют значение True
  • trigger_and_not — Если все заголовки имеют значение False
  • trigger_or — Если хотя бы одно заголовок имеет значение True
  • trigger_or_not — Если хотя бы одно заголовок имеет значение False

Все триггеры и заголовки расположены в Блоке, который состоит из «пары» ключей. Блок начинается стандартным ключом, и заканчивается ключом с _end.

В одном событие, можно использовать несколько блоков, событие «запустится» только, если все блоки имеют значение True.

trigger_and

trigger_and_end

trigger_or

trigger_or_end

⚠ ПРИМЕЧАНИЕ: Начальный и Конечный ключи должны быть одного вида. Так же блоки не могут пересекаться.

Заголовок

Заголовки имеют аналогичные виды, как и Блоки:

  • next_and — Если все Триггеры имеют значение True
  • next_and_not — Если все Триггеры имеют значение False
  • next_or — Если хотя бы один Триггер имеет значение True
  • next_or_not — Если хотя бы один Триггер имеет значение False

В одном блоке может использоваться, неограниченное количество заголовков. Каждый заголовок должен содержать хотя бы один Триггер.

trigger_and 
next_and

trigger_and_end

trigger_or 
next_and

next_or

trigger_or_end

Триггер

Всего существует 230 игровых триггеров. Их список вы можете найти в игровом файле AoH3/game/_FAQ/Events_Triggers.txt

Либо в нашей отдельной статье.

Если игровые значения соответствуют условиям триггера, то триггер получает значение True, иначе False.

Для демонстрации, мы будем использовать следующие триггеры:

trigger_or 
next_and 
is_civ=uni 
is_player=uni 
random_chance=50.0 
civ_provinces_over=3000 
next_and
is_civ=uni2 
is_player=uni2 
random_chance=50.0 
civ_provinces_over=3000 
trigger_or_end

Исходы

Всего существует 180 исходов. Они отвечают за результат, который последует, после «запуска» события.

Их список вы можете найти в файле AoH3/game/_FAQ/Events_Outcomes.txt

Исходы находятся в конце файла, в специальном блоке.

option_btn

option_end

Помимо исходов, с начало необходимо заполнить два значения:

option_btn 
name= 
ai=

option_end
  • name — текст на кнопке события, заполняется так же, как и описание/заголовок события. Для ключа перевода, можно ввести любой ключ без пробелов.
  • ai — шанс, с которым ИИ примет данное решение.

Можно использовать несколько блоков исходов, для создания нескольких кнопок.

Для демонстрации мы будем использовать следующий код, с использованием ключей перевода:

option_btn 
name=SMO_1 
ai=90 
declare_war=ukr 
bonus_duration=10 
bonus_production_efficiency=1 
bonus_duration=10 
bonus_inflation=10.0 
option_end

option_btn 
name=SMO_2 
ai=10 
bonus_duration=10 
bonus_production_efficiency=5 
bonus_duration=10 
bonus_corruption=10.0 
option_end

Локализация

Все Ключи Перевода должны быть размещены в файле локализации, расположенный в директории: AoH3/game/languages/.

Все файлы названы по следующему правилу: Bundle_ + {код языка} + .properties

Для русского и украинского используются ru и ua соответственно.

Исключением является файл английской локализации, он не имеет кода языка.

Для корректной работы игры, нужно скопировать (если создаёте модификацию)/нужно отредактировать (если создаёте для игры) файл, добавив в конце ключи локализации.

После ключа добавляется знак равенства (=), после которого расположен текст локализации.

Для демонстрации, мы будем использовать следующий текст, для локализации события и его кнопок:

special_military_operation.t=Специальная Военная Операция 
special_military_operation.d=Наша страна стоит на очень сложном перепу тье. Либо мы и дальше будем газовой станцией стран запада, или Россия наконец покажет свою истинную мощь? Каким будет Ваше решение, Госп один Президент? 
SMO_1=Начать Специальную Военную Операцию! Мы покажем нашу ист инную мощь! 
SMO_2=Мы должны сохранять стабильный миропорядок, вне зависимос ти от его устройства.

Итог

Итоговые файлы у нас следующие:

british_revolution.txt

id=british_revolution 
title=Революционные Восстания по всей Великобритании 
desc=Ваше величество, в нашей империи начались массовые восстания. Что прикажете делать?

image=br.png 

show_in_missions=false 
mission_image=0

only_once=true

popUp=true 
possible_to_run=true

trigger_or 
next_and 
is_civ=uni 
is_player=uni 
random_chance=50.0 
civ_provinces_over=3000 
next_and is_civ=uni2 
is_player=uni2 
random_chance=50.0 
civ_provinces_over=3000 
trigger_or_end

option_btn 
name=Освободить Владения 
ai=100 
explode=uni 
explode=uni2 
option_end

special_military_operation.txt

id=special_military_operation 
title=special_military_operation.t 
desc=special_military_operation.d

image=smo.png

show_in_missions=false 
mission_image=0

only_once=true

popUp=true
possible_to_run=true

trigger_and 
next_and 
is_civ=rus 
next_and 
exact_day=24=2=2022 
trigger_and_end

option_btn 
name=SMO_1 
ai=90 
declare_war=ukr 
bonus_duration=10 
bonus_production_efficiency=1 
bonus_duration=10 
bonus_inflation=10.0 
option_end

option_btn 
name=SMO_2 
ai=10 
bonus_duration=10 
bonus_production_efficiency=5 
bonus_duration=10 
bonus_corruption=10.0 
option_end

Если вам необходим исходный код, вы можете его скачать с нашего GitHub.

По мере необходимости данное руководство будет дополняться.