Кецаль 666 14.10.2013, 16:20:22 Поделиться #1 14.10.2013, 16:20:22 Не помню уже где, когда и для кого я это писАл, но сохранил просто для себя. Сегодня, видимо, настал день, когда это стОит выложить отдельной темой. Весь текст ниже - копия моего сообщения на форуме где-то годичной давности. __________________________________________________________________ На форуме один из пользователей озаботился невозможностью добавить картинку к созданному им трейту персонажа. Сам я до этого особо не вникал в тему, дал пользователю общий совет, а через пару часов, узнав, что ничего не вышло, решил уделить этому вопросу внимание. После недолгих плясок с бубном добавить картинку к трейту у меня получилось. Да и ещё кое-что вышло. Решил расписать «технологию», вдруг кому пригодится. Хотел загнать всё под спойлер, но форум "бычит" Сразу поясню, что сделал всё в виде модификации, что и всем советую. Никаких конфликтов файлов. шаг №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крыть] Вроде всё. результат. осторожно - скриншотНажмите здесь! [Cкрыть] Уфф, а описывать всё это в сто раз дольше, чем сделать, однако. Дополнение: .dds-картинки легко редактируются бесплатным PaintNet от мелкософта. Все остальные файлы ( .txt, .gfx, csv) открывались и редактировались простым блокнотом. Дополнение 2: Введение своей ивентовой графики в игру не сложно, важно помнить - формат картинок должен соответствовать тому, что использует игра. ______________ С уважением, Кецаль. Изменено 11.08.2014, 08:10:32 пользователем Кастилиус Добавил необходимую информацию для отображения новых иконок 3 Цитата Ссылка на комментарий
Eliznort 1 03.11.2013, 18:46:40 Поделиться #2 03.11.2013, 18:46:40 Не нашла кнопку "поблагодарить".)) Скажу словами - спасибо большое! Изменено 04.11.2013, 04:58:14 пользователем Антипа Цитата Ссылка на комментарий
Кецаль 666 05.11.2013, 19:28:04 Автор Поделиться #3 05.11.2013, 19:28:04 Не нашла кнопку "поблагодарить".)) Скажу словами - спасибо большое! Главное - чтобы польза была (С) С уважением, Кецаль. Цитата Ссылка на комментарий
Огнезвезд 20 29.07.2014, 16:26:17 Поделиться #4 29.07.2014, 16:26:17 Главное - чтобы польза была (С)С уважением, Кецаль. А почему не работает показатель увеличения ресурсов гвардии? Цитата Ссылка на комментарий
DrKhatz 2 25.08.2014, 18:16:51 Поделиться #5 25.08.2014, 18:16:51 Некоторые трейты, например Викинг, даются за разграбления провинций. Другие, например всякие генеральские черты типа командира кавалерии, только после битв. Однако я не нахожу в ивентах каких-либо особых характеристик, указывающих на эти обстоятельства. Как сделать трейты привязанными к боевым действиям? Изменено 25.08.2014, 18:17:17 пользователем DrKhatz Цитата Ссылка на комментарий
Кастилиус 2,022 27.08.2014, 05:09:39 Поделиться #6 27.08.2014, 05:09:39 Некоторые трейты, например Викинг, даются за разграбления провинций. Другие, например всякие генеральские черты типа командира кавалерии, только после битв. Однако я не нахожу в ивентах каких-либо особых характеристик, указывающих на эти обстоятельства. Как сделать трейты привязанными к боевым действиям? Я лично вот как делал: брал эвент на получение какой-нибудь боевой характеристики и потом редактировал его (подгонял так сказать) под другой трейт. А вообще есть параметр: weight_multiplier = { days = 1 (дальше ниже уже идут модификаторы на шансы выпадения эвента) С него начинает шанс выпадения боевого эвента после и во время битв. Изменено 27.08.2014, 05:10:27 пользователем Кастилиус Цитата Ссылка на комментарий
Maks415 1 27.09.2014, 18:03:25 Поделиться #7 27.09.2014, 18:03:25 Господа, подскажите, где определяется фон (Background) у событий (Eventов), не могу понять. Я просмотрел все и стандартные ивенты и различные из модов - всё облазил - не нашёл. Хочу поставить длинный фон, текст весь не влезает. Цитата Ссылка на комментарий
Захар Б 2 08.11.2014, 10:16:32 Поделиться #8 08.11.2014, 10:16:32 Помогите, пожалуйста! Когда я создал собственный мод со своими картинами они не отображаются. (Разрешение картин 450*150 и 24*24) Я пробовал добавить ванильный buttonstate.lua , но со равно не отображается! Подскажите Цитата Ссылка на комментарий
Габриэль 73 05.10.2016, 20:04:21 Поделиться #9 05.10.2016, 20:04:21 Странно, что никто ещё не ответил, но ладно, отвечу я. В 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 если хотите сделать по-больше строк. Цитата Ссылка на комментарий
Рекомендованные сообщения
Присоединиться к обсуждению
Вы можете оставить комментарий уже сейчас, а зарегистрироваться позже! Если у вас уже есть аккаунт, войдите, чтобы оставить сообщение через него.