Моддинг ивентов - Страница 2 - Учебники по моддингу - Strategium.ru Перейти к содержимому

Моддинг ивентов

Рекомендованные сообщения

Semenar

Перевод данной статьи. Перевод неточен.

Ивент должен иметь следующие вещи:

- Свой уникальный номер (id)

- Заголовок

- Текст описания

- Картинку

- Триггер: если то, что в нём записано, неверно, то ивент не появится

- Среднее время до появления ('mean time to happen') -этот показатель отвечает за то, как часто ивент будет происходить, если выполнены условия триггера

- Один или несколько вариантов выбора для игрока или ИИ с эффектами для них

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

Ивент для страны или для провинции?Нажмите здесь!
 

Ивент может происходить с провинцией или со страной.

Со страной:

trigger = {
trade_goods = slaves
NOT = {
owner = { has_country_modifier = the_abolish_slavery_act }
}
any_country = {
has_opinion_modifier = {
who = ROOT
modifier = improved_relation
}
NOT = {
has_country_modifier = the_abolish_slavery_act
}
}
}

[Cкрыть]

Среднее время появленияНажмите здесь!
 

Среднее время появления означает, как часто происходит ивент, если условия триггера соблюдены. Среднее время появления, равное 3 месяцам, означает, что ивент должен происходить примерно каждые три месяца."Базовое" среднее время появления определяется в днях или месяцах. Новы можете уменьшить или увеличить это время из-за определённых условий.Например:

mean_time_to_happen = {
months = 400

modifier = {
factor = 0.8
NOT = { stability = 0 }
}
}

В данном случае, если стабильность меньше 0, базовое среднее время появления умножается на 0.8 и становится 400*0.8=320 месяцев.

[Cкрыть]

Вызывается только другим событием?Нажмите здесь!
 

Многие ивенты не используют среднее время появления, а используют вместо него код

 on_peace_recipient = {        

events = {                           

flavor_eng.9104                                              #End of Hundred Years War                     

flavor_fra.9104                                # End of Hundred Years War      

}

} 

Такие ивенты, как и остальные, могут быть найдены в папке events. Например:

#The End of the Hundred Years War
country_event = {
id = flavor_eng.9104
title = "flavor_eng.EVTNAME9104"
desc = "flavor_eng.EVTDESC9104"
picture = DIPLOMACY_eventPicture

is_triggered_only = yes

trigger = {
NOT = { has_country_flag = ENG_had_event_9104 }
NOT = { is_year = 1500 }
OR = {
AND = {
tag = ENG
NOT = { exists = GBR }
}
tag = GBR
}
primary_culture = english
NOT = {
french_region = { owned_by = ROOT }
}
FRA = {
exists = yes
NOT = { war_with = ENG }
NOT = { war_with = GBR }
}
}

В данном случае, если страна соглашается на чужое предложение о мире, файл on_actions.txt посылает стране два ивента. Если все условия в триггере верны, то ивент происходит. Например, для того, чтобы вышеуказанный ивент произошёл, год должен быть меньше 1500, ивент не должен был происходить раньше, страна – либо Великобритания (GBR), либо Англия (ENG), если Великобритания не существует, культура – английская,провинций во Франции у страны нет, Франция существует и не воюет ни с Англией,ни с Великобританией.

[Cкрыть]

Использование is_triggered_only вместе с триггеромНажмите здесь!
 

С помощью использования is_triggered_only вместе с триггером можно сделать некоторые конструкции, которых нет в оригинальном коде:

option = {
name = "CHILE_WAR" #this is the pointer to the localisation
set_country_flag = chilean_nationalism #setting and removing country flagsaren't shown on mouseover
CHL = {
declare_war_with_cb = {
who = ROOT
casus_belli = cb_independence_war
}
}
clr_country_flag = colonial_annexation_chl
}

Вариант выбора состоит из:

- имени

- триггера (необязательно)

- условий if (необязательно)

- шанса принятия ИИ именно этого варианта (необязательно)

- эффектов

Триггер

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

option = {
name = "EVTOPTA799"
trigger = {
prestige = 90
}
add_dip_power = 20
}
}
option = {
name = "EVTOPTB799"
trigger = {
NOT = { prestige = 90 }
}
add_prestige = 20
}

Первый вариант будет доступен при престиже хотя бы 90,второй при престиже менее 90.

If

Вариант выбора может иметь несколько эффектов, которые выполняются при выполнении определённых условий. Условия заключаются в limit ={ }, а эффекты пишутся ниже. Пример варианта выбора с if:

option = {
name = awesome_event.22.a
if = {
limit = {
has_heir = yes
}
add_prestige = 10
if = {
limit = {
has_heir = no
}
add_prestige = -10
}
treasury = 10
}

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

Шанс принятия ИИ

Шанс принятия ИИ означает, с какой вероятностью ИИ примет именно этот вариант выбора. Если у одного варианта выбора стоит фактор 3, а у второго - 1, то первый вариант будет в 3/1=3 раза чаще выбираться ИИ, чем второй.

Пример:

option = {
	name = "EVTOPTA1073"			# Increase centralization efforts.
	ai_chance = { factor = 75 }
	add_treasury = -500
}
option = {
	name = "EVTOPTB1073"			# Leave as it is.
	ai_chance = { factor = 25 }
	add_stability = -2
}

- первый вариант ИИ будет выбирать чаще в 3 раза.

Ещё пример:

ai_chance = { 
		factor = 40 
		modifier = {
			factor = 0
			NOT = { prestige = 50 }
		}
		modifier = {
			factor = 0
			NOT = { dip_power = 100 }
		}
	}

В данном примере ИИ выберет этот вариант, только если престиж хотя бы 50, а дипломатических очков хотя бы 100 (но это не даёт гарантии, что ИИ выберет именно этот вариант ответа).

[Cкрыть]

Проверка ивентов на ошибкиНажмите здесь!
 

Вы можете заставить ивенты вызваться в любой момент, даже если условия не выполнены, через консоль. Откройте консоль комбинацией Alt+2+1 или ~(буква Ё) и введите туда event <id вашего ивента, скобки писать не надо>

Такой способ позволяет проверить, запускается ли ивент в игре.

Стоит помнить, что если условия не выполнены, то могут получиться странные результаты вызова ивента.

Проверить, происходит ли ивент при выполнении условий, можно, поставив mean time to happen равное 1 дню. Тогда он произойдёт немедленно при выполнении условий.

[Cкрыть]
Изменено пользователем Semenar
Ссылка на комментарий

Закреплённые сообщения
Виктор2

Уважаемые мододелы, подскажите, пожалуйста, чайнику:

Есть мод Rebalanced automatic development

К нему есть некая ссылочка:

https://github.com/Ramit110/EUIV-Rebalanced-Automated-Development-Fork

Где когда-то как я понял выложили основу работы мода: скрипты, ивенты, условия

Я все просмотрел, вроде все понятно.

Хотел использовать, чтобы методом проб  и ошибок перебалансировать мод, выкладывать мод не планировал.

Попробовал создать все необходимые директории просто в файлах игры - оно не работает.

Попробовал создать в имеющихся директориях(например randomevents)  - оно не работает.

Попробовал на основании условий и триггеров, прописать кусочек(сильно упрощенный, просто чтобы начали развиваться провинции) - оно не работает.

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

Спасибо.

_________
добавлено 1 минуту спустя

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

Ссылка на комментарий

Silverberg

Здравствуйте. Пытаюсь создать мод на Междоусобную войну в Московском княжестве

Выделил как отдельное государство Галическое княжество под управлением Дмитрия Шемяки в качестве вассала Московского княжества и передал Пермь в качестве вассала Новгороду (по причине лимита дипотношений), однако на формировании ивентов и решений возникли сложности, т.к. до этого я не делал ничего подобного. Что хотелось бы реализовать:

- Стартовый ивент на высокий liberty_desire и отрицательные отношения с Московским княжеством для Галича (провинции Галич, Ветлуга, Соль Галицкая подконтрольные Дмитрию Шемяке) и незначительное повышение liberty_desire для остальных княжеств. Триггер ивента на декабрь 1444 с дополнительным условием is_vassal = GLC, is_vassal = RSO и т.д. увы не срабатывает

- Повышение шансов на поражение Московского княжества в войне с Казанью в 1445. Тестовые запуски показывают что Казань неизменно проигрывает вследствие численного преимущества Московского княжества несмотря на приданные Казани стартовые военные бонусы для правителя и наследника:
        leader = { name = "Ulugh Muhammad"       type = general    fire = 4    shock = 4    manuever = 4    siege = 1 }

        leader = { name = "Mahmudak"       type = general    fire = 3    shock = 3    manuever = 4    siege = 1 }
    add_ruler_personality = bold_fighter_personality
    add_ruler_personality = tactical_genius_personality
    add_ruler_personality = inspiring_leader_personality
    add_heir_personality = entrepreneur_personality

и отсутствие у Московского княжества Дмитрия Шемяки в качестве стартового полководца

- Пленение Василия II и опционально одного из его вассалов (вероятно в зависимости от военных потерь?) с последующим заключением мира с Казанью и выделением вассального Касимовского ханства под управлением Касима Чингизида

- Параллельно с этим показать статус князя Московского для Дмитрия Шемяки посредством временной передачи Московского княжества в унию совместно со включением в состав Галича провинций Вятка и Можайск

- Возвращение Василия II из плена с выплатой дани и начало боевых действий с опциональным участием Твери с дополнительным вариантом перехода на сторону Василия II в случае передачи князю Борису провинции Ржев

Желаемые результаты:

- Историческая победа Василия II: уничтожение Галического княжества, уничтожение крепости в провинции Галич. Последующий ивент с отравлением Дмитрия Шемяки в Новгороде, убирающий корки Галича и понижающий liberty_desire у остающихся вассалов в обмен на снижение дипломатической репутации до смерти правителя

- Расширенная победа Василия II: см. исторический вариант + корки на Тверь при условии сохранения Ржева и участия Бориса Александровича в войне на стороне Дмитрия Шемяки

- Альтисторическая победа Дмитрия Шемяки: окончательно не утверждено, но вероятно Московское княжество получает статус униата? Или же возможность конвертировать Галическое княжество в Московское? Или же простое получение территорий Московского княжества Галическим?

- Расширенная победа Дмитрия Шемяки: см. альтисторический вариант + корки на Тверь при условии передачи Ржева Борису Александровичу Василием II и участии в войне на стороне Василия Тёмного

Подскажите пожалуйста каким образом лучше всего было бы реализовать вышеизложенные планы?

Изменено пользователем Silverberg
Возможно ли удалить пост? Не та тема
Ссылка на комментарий

Присоединиться к обсуждению

Вы можете оставить комментарий уже сейчас, а зарегистрироваться позже! Если у вас уже есть аккаунт, войдите, чтобы оставить сообщение через него.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Only 75 emoji are allowed.

×   Ваша ссылка автоматически преображена.   Отображать как простую ссылку

×   Предыдущее содержимое было восстановлено..   Очистить текст в редакторе

×   You cannot paste images directly. Upload or insert images from URL.

  • Ответы 21
  • Создано
  • Последний ответ
  • Просмотры 12257

Лучшие авторы в этой теме

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу


admin@strategium.ru

Copyright © 2008-2025 Strategium.ru Powered by Invision Community

×
×
  • Создать...