Ивенты на трейты. - Моды и моддинг - Strategium.ru Перейти к содержимому

Ивенты на трейты.

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

Кецаль

Не помню уже где, когда и для кого я это писАл, но сохранил просто для себя. Сегодня, видимо, настал день, когда это стОит выложить отдельной темой. Весь текст ниже - копия моего сообщения на форуме где-то годичной давности.

__________________________________________________________________

На форуме один из пользователей озаботился невозможностью добавить картинку к созданному им трейту персонажа.

Сам я до этого особо не вникал в тему, дал пользователю общий совет, а через пару часов, узнав, что ничего не вышло, решил уделить этому вопросу внимание. После недолгих плясок с бубном добавить картинку к трейту у меня получилось. Да и ещё кое-что вышло. Решил расписать «технологию», вдруг кому пригодится.

Хотел загнать всё под спойлер, но форум "бычит" :001:

Сразу поясню, что сделал всё в виде модификации, что и всем советую. Никаких конфликтов файлов.

шаг №1Нажмите здесь!
 

Для начала создаём в папке \mod папку с модом. Я назвал её \robot.

Чтобы мод запускался через лаунчер, необходимо в папке \mod создать текстовый файл robot.txt. Открываем его и пишем:

name = "robot"
path = "mod/robot"

Как видно из кода, имя мода должно совпадать с именем созданной нами ранее папки. Сохраняем текстовый файл и выходим из него. Переименовывая, меняем расширение файла с robot.txt на robot.mod.

[Cкрыть]

Теперь наш мод уже видно в лаунчере, но этого мало для его работы.

Для придания трейта ( черты характера) персонажу, необходимо ввести в игру какое-либо событие.

шаг №2Нажмите здесь!
 

Создаём в папке \robot папку \events, а в ней – текстовый файл robot_event.txt. В нём пишем:

#######################################

#

# Robot! Этот блок в комментариях - просто описание, для удобства работы, не обращайте внимания.

#

# Event ID robot.1 reserved

#

#######################################

namespace = robot Это – важная часть кода, она позволяет использовать игре id ивента вида id = robot.1, id = robot.2, id = robot.3 и так далее.

### Robot Название ивента под комментарием, для удобства, можно и не писать.

character_event = { Строка говорит, что событие произойдёт с одним из игровых персонажей .

id = robot.1 id события, по которому игра его идентифицирует

title = "EVTNAMErobot.1" Имя события, будет вписано над картинкой. Набор букв в кавычках нужно будет перевести в файле локализации. Чуть позже об этом.

desc = "EVTDESCrobot.1" Описание события – то, что мы обычно видим на титульном листе ивента. Стена текста, короче. Нужно будет перевести в файле локализации

picture = GFX_evt_robot Картинка между именем события и стеной текста, особо не мудрствовал, взял первую попавшуюся из папки «корневая папка»\gfx\event_pictures, подробнее – позже.

only_men = no строка говорит о том, что событие будет происходить и с мужскими и с женскими персонажами

trigger = { строка с условиями, при которых возможно событие. В нашем случае их минимум – одно, но важное.

ai = no Событие будет происходить только с персонажем под управлением игрока.

}

mean_time_to_happen = {

months = 240 строка определяет частоту события. В нашем случае это ОЧЕНЬ НЕ частое событие ( но мы ведь умеем работать с консолью?)

}

immediate = { здесь можно указать, что произойдёт в любом случае при наступлении события ( до нажатия вами кнопки «ок», или «да»-«нет») в нашем случае - ничего

}

option = { Ниже – описание события, происходящего после нажатия кнопки.

name = "EVTOPTArobot.1" Текст, который будет на кнопке. Нужно будет перевести в файле локализации

if = { Тут стоит условие

limit = { на предел

NOT = { наличия трейта

trait = robot Робот

} если Робот уже есть, то ещё раз он не появится. Трейт, я имею в виду. Событие то может

} но уже без эффекта

random = { А тут лежит вероятность

chance = 90 в 90%, того, что вы действительно

add_trait = robot Робот

} Вероятность появится только в том случае, если трейта Робот ещё нет.

}

}

}

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

[Cкрыть]

Теперь посмотрим, без чего наш ивент не будет работать.

Ну во-первых это сам трейт. Он ещё не создан, а уже используется в ивенте.

шаг №3Нажмите здесь!
 

Я не стал особо разбираться в плюсах, просто взял трейт «Гений»( genius ) из файла «корневая папка»\common\traits \00_traits.txt и усилил его плюсы.

Создаём в папке \mod\robot\common\traits файл robot_traits.txt и пишем в нём

 
#####################
# POSSIBLY CONGENITAL
#####################

robot = {
 birth = yes
 inherit_chance = 25

 opposites =  {
	 imbecile
	 slow
	 quick
 }

 diplomacy = 15
 intrigue = 15
 stewardship = 15
 martial = 15
 learning = 15

 ai_rationality = 30

 vassal_opinion = 5	
}

Как прошлый код разбирать не буду, просто знайте, что Робот – сила и мошчЪ. С ним не балуй. Персонаж получает +15 всего.

[Cкрыть]

Идём дальше.

В нашем ивенте используются картинки.

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

Попытаемся изобразить картинку трейта.

шаг №4Нажмите здесь!
 Все имеющиеся изображения трейтов лежат в папке «корневая папка»\gfx\traits. Можно сделать и своё по аналогии ( но это долго), я же беру готовое и опять –гения. Копируем genius.dds в папку \mod\robot\gfx\traits (созданную заранее) и просто переименовываем в robot.dds.

Теперь нам нужно, чтобы игра воспринимала эту картинку. В папке «корневая папка»\interface лежит файл traits.gfx, прописывающий игре какие картинки для трейтов брать и где это делать. Как ни странно, файл прекрасно открывается и редактируется простым блокнотом. Хотя, чего там удивляться… Создаём по аналогии директорию \mod\robot\interfacе. Копируем в неё файл из корневой папки, удаляем в нём всё и сохраняем пустым, после чего переименовываем в robot_trait.gfx.

Теперь пишем в нём следующее:

spriteTypes = {

spriteType = {

name = "GFX_trait_robot" Текст, выделенный красным, должен совпадать с именем предполагаемой картинки robot.dds Это первое условие.

texturefile = "gfx/traits/robot.tga" Текст, выделенный красным, должен совпадать с именем предполагаемой картинки robot.dds Это второе условие.

noOfFrames = 1

norefcount = yes

effectFile = "gfx/FX/buttonstate.lua"

}

}

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

[Cкрыть]

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

шаг №5Нажмите здесь!
 

Все имеющиеся изображения подобного рода лежат в папке «корневая папка»\gfx\ event_pictures. Можно сделать и своё по аналогии, но это долго. Я подобрал себе какого-то алкаша на картинке. Копируем Drunk.dds в папку \mod\robot\gfx\ event_pictures (созданную заранее) и просто переименовываем в robot.dds ( да, опять robot.dds, это не страшно)

Теперь нам нужно, чтобы игра воспринимала эту картинку. В папке «корневая папка»\interface лежит файл eventwindow.gfx, прописывающий игре какие картинки для ивентов брать и где это делать. Создаём по аналогии директорию \mod\robot\interfacе. Копируем в неё файл из корневой папки, удаляем в нём всё и сохраняем пустым, после чего переименовываем в robot_eventwindow.gfx.

Теперь пишем в нём следующее:

spriteTypes =

{

spriteType = {

name = "GFX_evt_ robot " Текст, выделенный красным, должен совпадать с именем предполагаемой картинки robot.dds Это первое условие.

texturefile = "gfx\\event_pictures\\ robot.tga" Текст, выделенный красным, должен совпадать с именем предполагаемой картинки robot.dds Это второе условие.

allwaystransparent = yes

}

}

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

picture = GFX_evt_robot

name = "GFX_evt_ robot "

Только в ивенте не используются кавычки

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

[Cкрыть]

Добавлено Кастилиусом:

Кроме того, как в данном случае, когда Вы создаете отдельный мини мод, то в папке GFX мода нужно создать папку FX и туда вложить ванильный файл buttonstate.lua. Без него иконки не станут отображаться!

Ну и остались мелочи – пишем локализацию.

шаг №6Нажмите здесь!
 

Создаём папку \mod\robot\localisation, в ней файл robot_localisation.csv ( лучше скопировать откуда-нибудь любой .csv -файл, открыть текстовым редактором ( не экселем) и, всё там удалив, сохранить пустой, переименовав) и смотрим, что нам нужно локализовать.

Во-первых очевидные EVTNAMErobot.1, EVTDESCrobot.1 и EVTOPTArobot.1 из скрипта ивента.

Во-вторых – отнюдь не очевидные robot ( перевод же самого трейта!) и robot_desc ( эта строка будет описывать трейт при наведении на него мышью в игре). Чтож, приступим.

Открываем уже пустой файл robot_localisation.csv ( удалили всё?) текстовым редактором ( категорически настаиваю именно на нём, эксель может повредить файл при сохранении, проверено). Пишем в нём следующее

robot;Робот;x
robot_desc;Это робот, а не человек!;x
EVTNAMErobot.1;Я стал роботом?;x
EVTDESCrobot.1;С недавних пор я заметил, что обладаю невероятными способностями. Неужели я... робот?;x
EVTOPTArobot.1;Вот это да!;x

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

[Cкрыть]

Вроде всё.

результат. осторожно - скриншотНажмите здесь!
 

C8182P5k.png

[Cкрыть]

Уфф, а описывать всё это в сто раз дольше, чем сделать, однако.

Дополнение:

.dds-картинки легко редактируются бесплатным PaintNet от мелкософта.

Все остальные файлы ( .txt, .gfx, csv) открывались и редактировались простым блокнотом.

Дополнение 2:

Введение своей ивентовой графики в игру не сложно, важно помнить - формат картинок должен соответствовать тому, что использует игра.

______________

С уважением, Кецаль.

Изменено пользователем Кастилиус
Добавил необходимую информацию для отображения новых иконок
Ссылка на комментарий

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

Не нашла кнопку "поблагодарить".)) Скажу словами - спасибо большое!

Изменено пользователем Антипа
Ссылка на комментарий

Кецаль
Не нашла кнопку "поблагодарить".)) Скажу словами - спасибо большое!

Главное - чтобы польза была (С)

С уважением, Кецаль.

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

Огнезвезд
Главное - чтобы польза была (С)

С уважением, Кецаль.

А почему не работает показатель увеличения ресурсов гвардии?

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

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

Изменено пользователем DrKhatz
Ссылка на комментарий

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

Я лично вот как делал: брал эвент на получение какой-нибудь боевой характеристики и потом редактировал его (подгонял так сказать) под другой трейт.

А вообще есть параметр:

weight_multiplier = {

days = 1

(дальше ниже уже идут модификаторы на шансы выпадения эвента)

С него начинает шанс выпадения боевого эвента после и во время битв.

Изменено пользователем Кастилиус
Ссылка на комментарий

Господа, подскажите, где определяется фон (Background) у событий (Eventов), не могу понять. Я просмотрел все и стандартные ивенты и различные из модов - всё облазил - не нашёл. Хочу поставить длинный фон, текст весь не влезает.

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

Захар Б

Помогите, пожалуйста! Когда я создал собственный мод со своими картинами они не отображаются. (Разрешение картин 450*150 и 24*24) Я пробовал добавить ванильный buttonstate.lua , но со равно не отображается! Подскажите

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

Габриэль

Странно, что никто ещё не ответил, но ладно, отвечу я.

В 26.08.2014 at 03:16, DrKhatz сказал:

Как сделать трейты привязанными к боевым действиям?

Через добавление on_actions. В папке common находите on_actions и дублируете себе в мод, теперь переименуйте текстовый файлик как-нибудь вроде "memod_on_actions", теперь откройте его и найдите там строку on_battle_won_leader, это значит, что эвент будет возникать, как только вы одержите победу возглавляя армию. и подставьте эвент, который хотите, чтобы выскакивал после битвы, например,

on_battle_won_leader = {
	events = {
			273
	}
}
или

on_battle_won_leader = {
	random_events = {
	10 = MyMod.101 # Это значит, что с вероятностью 10% выпадет этот эвент.
	}
}

Больше http://www.ckiiwiki.com/Event_modding#On_action_events

 

В 28.09.2014 at 03:03, Maks415 сказал:

 

Господа, подскажите, где определяется фон (Background) у событий (Eventов), не могу понять. Я просмотрел все и стандартные ивенты и различные из модов - всё облазил - не нашёл. Хочу поставить длинный фон, текст весь не влезает.

 

long_character_event если хотите сделать по-больше строк.

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

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

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

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

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

  Only 75 emoji are allowed.

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

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

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

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

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


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

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