OLD. Создание кода новой ливреи - George-VB/xussrset GitHub Wiki

ОПИСАНИЕ НА ЭТОЙ СТРАНИЦЕ УСТАРЕЛО

Здесь мы рассмотрим как добавить ливрею

Код ПС находится в файлах: "название серии".pnml. Любое вносимое вам изменение создавать в ветках, а не главным коммитом. Чтобы добавить ливрею, сначала нужно ее нарисовать. Далее как вы нарисовали ливрею, приступаем к кодированию. Сначала вам необходимо вписать ливрею в файл с ливреями, чтобы она могла отобразится в игре (название ливреи должно быть без модели ПС к которому вы ее делали, т.е просто название ливреи), так же не забываем сделать запись в языковых файлах в русском и английском вариантах (все эти действия необходимы, если вы создали новую ливрею, которая до этого не использовалась в игре, если хотите добавить на определенный пс, уже существующую ливрею, которая уже используется на другом пс, сразу можете приступать к написанию кода для самого пс)

Рассмотрим как добавить вашу ливрею

Сначала необходимо создать константу для вашей ливреи, на момент написания вики их 116, далее список может пополнятся. Переходим по следующему пути: xussrset/src/code-templates-lv.pnml

В первом блоке как раз будут константы В конце блока прописываем константу для вашей новой ливреи следующим образом: #define LV_НАЗВАНИЕ_ЛИВРЕИ (Все названия нужно писать на английском и БОЛЬШИМИ БУКВАМИ, все пробелы заполняем нижним подчеркиванием, в названии их быть не должно, если название слишком длинное сокращаем его) После этого переходим к livery_subtemplate, в конце прописываем следующую строчку: livery_subtemplate(name, , basename, LV_НАЗВАНИЕ_ЛИВРЕИ , НАЗВАНИЕ_ЛИВРЕИ , НАЗВАНИЕ_ЛИВРЕИ_LONG (Если вы сокращали название ливреи, пропишите _LONG) , 2015 (год с которого доступна ливрея), str1, str2, str3, str4, str5, str6, str7, str8, str9, str10, str11, str12, str13, str14, str15, str16, str17, str18, str19, str20, str21, str22, str23, str24, str25, str26, str27, str28, str29, str30) После того как вы прописали это строчку, переходим к блоку с названиями ливрей, в конце этого блока необходимо прописать следующую строчку: LV_НАЗВАНИЕ_ЛИВРЕИ: name##cargo_subtype_text##LV_НАЗВАНИЕ_ЛИВРЕИ;

После этого переходим к блоку с рефитами (он последний), в конце этого блока прописываем следующую строчку: STR_REFIT_НАЗВАНИЕ_ЛИВРЕИ Если это необходимо (к примеру опять же вы сокращали название ливреи) прописываем: STR_REFIT_НАЗВАНИЕ_ЛИВРЕИ_LONG.

После того как вы вписали свою ливрею в файл с ливреями, делаем записи в языковых файлах. Находятся они в корне, в папке lang. Запись делаем на русском и английском. Записи с ливреями записываются в строки с liveries, обратите что ливреи делятся на типы, записываем вашу ливрею в нужный вам тип следующим образом: STR_REFIT_НАЗВАНИЕ_ЛИВРЕИ :, Название ливреи (русский вариант, в английском, собственно пишем на английском НЕ ТРАНСЛИТОМ)

После записи ливреи во все нужные файлы (если ливрея новая), приступаем к самому коду. Будем рассматривать на примере ЭД2Т.

Начинаем редактировать код. ВНИМАНИЕ, ВСЕ ЧТО ВЫ РЕДАКТИРУЕТЕ И ПРИВНОСИТЕ В КОД НЕОБХОДИМО ДЕЛАТЬ ЧЕРЕЗ ВЕТКИ, ЧТОБЫ В СЛУЧАЕ ЧЕГО ДРУГИЕ КОДЕРЫ СМОГЛИ ОБНАРУЖИТЬ ВАШИ ОШИБКИ И ИСПРАВИТЬ ИХ. Первый блок: #define IMAGEFILE "src/emu/ed2t_h-part1.png" purchase_sprites(ed2t_h, 0, 0) MU_head_sprites(13, ed2t_h_v1_mu, 32, 40) MU_head_sprites(13, ed2t_h_v2_mu, 32, 308) MU_head_sprites(13, ed2t_h_v3_mu, 32, 576) MU_head_sprites(13, ed2t_h_v4_mu, 32, 844) #undef IMAGEFILE #define IMAGEFILE "src/emu/ed2t_h-part2.png" MU_head_sprites(13, ed2t_h_v5_mu, 32, 40) #undef IMAGEFILE #define IMAGEFILE "src/emu/ed2t_m-part1.png" purchase_sprites(ed2t_m, 0, 0) EMU_motor1_sprites(13, ed2t_m_v1_mu, 32, 40) EMU_motor1_sprites(13, ed2t_m_v2_mu, 32, 308) EMU_motor1_sprites(13, ed2t_m_v3_mu, 32, 576) EMU_motor1_sprites(13, ed2t_m_v4_mu, 32, 844) #undef IMAGEFILE #define IMAGEFILE "src/emu/ed2t_m-part2.png" EMU_motor1_sprites(13, ed2t_m_v5_mu, 32, 40) #undef IMAGEFILE #define IMAGEFILE "src/emu/ed2t_c-part1.png" purchase_sprites(ed2t_c, 0, 0) MU_car_sprites(13, ed2t_c_v1_mu, 32, 40) MU_car_sprites(13, ed2t_c_v2_mu, 32, 308) MU_car_sprites(13, ed2t_c_v3_mu, 32, 576) MU_car_sprites(13, ed2t_c_v4_mu, 32, 844) #undef IMAGEFILE #define IMAGEFILE "src/emu/ed2t_c-part2.png" MU_car_sprites(13, ed2t_c_v5_mu, 32, 40) #undef IMAGEFILE

нужно добавить еще один блок к нему, с вашей ливреей. Внимание в одном файле с ливреей, может быть несколько ливрей, поэтому если вы в одном файле нарисовали несколько ливрей, для каждой из них нужно указать координату, как мы видим из примера. Должно получится: #define IMAGEFILE "src/emu/ed2t_h-part1.png" purchase_sprites(ed2t_h, 0, 0) MU_head_sprites(13, ed2t_h_v1_mu, 32, 40) MU_head_sprites(13, ed2t_h_v2_mu, 32, 308) MU_head_sprites(13, ed2t_h_v3_mu, 32, 576) MU_head_sprites(13, ed2t_h_v4_mu, 32, 844) #undef IMAGEFILE #define IMAGEFILE "src/emu/ed2t_h-part2.png" MU_head_sprites(13, ed2t_h_v5_mu, 32, 40) #undef IMAGEFILE #define IMAGEFILE "src/emu/ed2t_m-part1.png" purchase_sprites(ed2t_m, 0, 0) EMU_motor1_sprites(13, ed2t_m_v1_mu, 32, 40) EMU_motor1_sprites(13, ed2t_m_v2_mu, 32, 308) EMU_motor1_sprites(13, ed2t_m_v3_mu, 32, 576) EMU_motor1_sprites(13, ed2t_m_v4_mu, 32, 844) #undef IMAGEFILE #define IMAGEFILE "src/emu/ed2t_m-part2.png" EMU_motor1_sprites(13, ed2t_m_v5_mu, 32, 40) #undef IMAGEFILE #define IMAGEFILE "src/emu/ed2t_c-part1.png" purchase_sprites(ed2t_c, 0, 0) MU_car_sprites(13, ed2t_c_v1_mu, 32, 40) MU_car_sprites(13, ed2t_c_v2_mu, 32, 308) MU_car_sprites(13, ed2t_c_v3_mu, 32, 576) MU_car_sprites(13, ed2t_c_v4_mu, 32, 844) #undef IMAGEFILE #define IMAGEFILE "src/emu/ed2t_c-part2.png" MU_car_sprites(13, ed2t_c_v5_mu, 32, 40) #undef IMAGEFILE #define IMAGEFILE "src/emu/файл вашей ливрии.png MU_car_sprites(13, ed2t_с_v6_mu, 32, 40) (если есть еще ливреи в файле, указываем координату 32, ... координату можно посмотреть в самом графическом редакторе) #undef IMAGEFILE

Данную конструкцию: #define IMAGEFILE "src/emu/файл вашей ливрии.png MU_car_sprites(13, ed2t_h_v6_mu, 32, 40) #undef IMAGEFILE Необходимо прописать для каждого из вагонов, который вы окрасили (h, m, c)

Далее в данный блок: MU_head_direction_template(ed2t_h_v1, ed2t_h) MU_head_direction_template(ed2t_h_v2, ed2t_h) MU_head_direction_template(ed2t_h_v3, ed2t_h) MU_head_direction_template(ed2t_h_v4, ed2t_h) MU_head_direction_template(ed2t_h_v5, ed2t_h) Добавить строчку: MU_head_direction_template(ed2t_h_v6, ed2t_h) Точно так же необходимо сделать и с остальными двумя типами вагонов.

Далее еще один блок: switch (FEAT_TRAINS, SELF, ed2t_m_direction_right, cargo_subtype) { 0: ed2t_m_v2_direction_right; LV_RAL6002: ed2t_m_v1_direction_right; LV_OCTOBER_RAILWAY: ed2t_m_v3_direction_right; LV_MOSCOW_RAILWAY: ed2t_m_v4_direction_right; LV_UKRAINIAN_RAILWAY: ed2t_m_v5_direction_right; align_13_sprites; } После строчки LV_UKRAINIAN_RAILWAY: ed2t_m_v5_direction_right; необходимо добавить следующую строчку LV_НАЗВАНИЕ_ЛИВРЕИ (Название ливреи обязательно должна прописываться БОЛЬШИМИ буквами): ed2t_m_v6_derection_right; Точно так же необходимо прописать для всех трех типов вагонов, так же не забываем прописать и для левого направления.

В следующей строке: livery_template(ed2t, FACTORY, LV_RAL6002, LV_OCTOBER_RAILWAY, LV_MOSCOW_RAILWAY, LV_UKRAINIAN_RAILWAY, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) после названия последней ливреи, вы должны вписать свою, должно получится так: livery_template(ed2t, FACTORY, LV_RAL6002, LV_OCTOBER_RAILWAY, LV_MOSCOW_RAILWAY, LV_UKRAINIAN_RAILWAY, LV_НАЗВАНИЕ_ЛИВРЕИ, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0).

После этого можно подтверждать добавление новой ливреи