PDA

Просмотр полной версии : Создание самоперекрасок. Вагоны со скриптом типа RZDCargo4



TRam_
30.06.2010, 13:00
Пора открывать новое поколение вагонных скриптов. В данном случае, TRam_ таки дорвался до библиотек (неких
объектов, позволяющих локализовать обработку информации в одном месте, т.е. выполняющих функции супертриггеров
и главных контроллеров, но невидимых). Начну с первой части, то есть для самой крупной фитчи данного скрипта -
системы самоперекрасок. Создана она была ещё varz'ом, в 2007 году на локомотивах ТГМ23 и ТЭП10, но была преспокойно
забыта. В данном случае из неё было убрано всё, что только можно - в памяти список перекрасок не хранится,
количество методов класса ZSkinControler (точнее, теперь ZSkinControler2) урезано до двух, и т.п.

Часть первая. Создание самоперекраски.

Итак, вы поработали с текстурами вагона, и у вас получилось несколько файлов. Из них нам необходимы
(в вагоне 11-7038, скрипт rzdcargovehicle4.gs)

1) соответствующая эффекту skin1 из mesh-table вагона (в оригинале - меши default, текстура textureosnova.texture, графический файл текстуры textureosnova.tga)
2) соответствующая эффекту skin1_d из mesh-table вагона (в оригинале -меши door, текстура doors.texture, графический файл текстуры doors.tga)
3) соответствующая эффектам wheel1 и bogey1 из mesh-table тележки (оригинальная тележка модели 18-100, меши default и extra соответственно, текстура 18-100_1.texture,
графический файл 18-100_1.jpg)

То есть именно для вагона 11-7038_№1 нам потребуются не изменённые или перекрашенные файлы textureosnova.tga
doors.tga и 18-100_1.jpg .

Начнём с того, что определим маску перекраски. Маска - это некое слово, по которому перекраски будут фильтроваться
(чтобы перекраска одного типа вагонов не оказалась на другом типе вагонов).

Заходим в раздел string-table конфига вагона, и видим

{
priority "Приоритет "
no_products "Пустой "
doors_open "Открыть двери"
doors_closed "Закрыть двери"
doors_all "Для всего состава"
skin "Текстура"
rand_skin "Случайная текстура"
texture_mask "11-7038_texture_t1"
}

В данном случае нам необходим последний тег - texture_mask. Именно он задаёт маску самоперекрасок.
То есть 11-7038_texture_t1 и есть маска перекрасок к данному вагону.

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

Она состоит из двух куидов - html-asset'а с настройками самоперекраски и texture-group'а собственно с текстурами.
Вы спросите "зачем так сложно?" Ответ прост - аурановцы не придусмотрели возможности получения отфильтрованоого
списка куидов категории texture-group, только список куидов категории html-asset. Поэтому куид категории html-asset
выполняет роль ссылки на основной куид с текстурами самоперекраски.

Как проще всего создать куиды самоперекрасок? Открыть для редактирования 2 куида (категорий html-asset и texture-group),
а затем скопировать их из папки editing директории trainz, например, на рабочий стол. Затем прописываете им свои куиды
(в первую очередь). Это может быть как <kuid2:Ваш ID разработчика:ID дополнения:версия>, так и <kuid:Ваш ID разработчика:ID дополнения>,
без разницы. Советую (хотя это и не обязательно) нумеровать эти 2 дополения подряд идущими идиентификаторами дополнений.

Приступим к настройке html-asset'а. В первую очередь (после прописывания в него куида), напротив тега 0 раздела
kuid-table прописываем куид texture-group'а. В одной из моих самоперекрасок это выглядит так

kuid-table
{
0 <kuid2:400260:9010001:1>
}

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

То есть username (имя) для перекраски вагона 11-7038 с маской 11-7038_texture_t1 может быть:

11-7038_texture_t1 green 78389383
11-7038_texture_t1by_Vladik_fioletovyi
11-7038_texture_t1_extra repaint 644434333

И не может быть

11-7038_texture_t2
violet_11-7038_texture_t1
87373232 11-7038_texture_t1
11-7038_t1

Если вы пропишите неверное имя, то ваша самоперекраска просто не найдётся. Замечу, что наличие 2х самоперекрасок
с одним и тем же именем никак не скажется на работе системы ZSkinControler - она воспринимает куиды, не имена.
Данное имя будет показываться только котент-мененжером, так что единственный критерий, который там настоятельно
рекомендую включать - ЦВЕТ вагона, остальное (кроме маски, естественно) придумывайте по своему усмотрению.

Далее... Указываем в разделе string-table напротив тега description то имя, которое будет показыватсья в браузере
при выборе самоперекраски.

Тут у вас полная свобода в выборе - называйте как и чем угодно :) (совпадающие имена также влиять не будут).

Ну, настройка куида html-asset на этом завершена (если вы не забыли о kuid-table), можете его сразу установить,
а можете подождать пока настроим texture-group, и устанавливать их одновременно.

Настройка его очень проста - заменяем содержащиеся там текстуры на наши, прописываем своё username (хорошо, если оно
будет отличаться от html-asset'а только дополнительной буквой в конце - легче в котент-мененжере будет искать).

И, если вы не забыли вписать свой куид, настройки нашей самоперекраски на этом завершена. Можете устанавливать в игру
и искать свою новую перекраску по тому имени, которое вы прописали у тега description html-asset'а.

Gomer
30.06.2010, 19:51
Я так понимаю что на один вагон или локомотив может быть хоть 3, хоть 10 самоперекрасок??

TRam_
30.06.2010, 22:58
Я так понимаю что на один вагонна локомотивы это не действует


может быть хоть 3, хоть 10 самоперекрасок??сколько душе угодно. Главное - чтобы у куидов-ссылок были правильные маски :).

Добавлено через 2 часа 39 минут
Часть 2. Возможности rzdcargovehicle4.gs.

В настоящей версии реализованы следующие фитчи, которые гарантировано должны работать на среднем компьютере при числе вагонов более 1000, не влияя на производительность. (Проверить это можно только в редакторе, так как в режиме «машинист» выполняется расчёт дефолтной физики, требующей значительно большее число ресурсов).

Как уже сказано, скрипты используют две скриптовые библиотеки (являющиеся отдельными дополнениями со своими куидами), являюющиеся статическими объектами (т.е. при запуске возникает только один объект библиотеки каждого типа), что позволяет локализовать обработку периодических и апериодических событий в двух местах. Кроме того, вагоны имеют индивидуальную систему браузеров и настроек (самой известной из которых является самоперекраска), поскольку настройка, как правило, выполняется в редакторе, не требующем высокого fps для комфортного создания сессий, как режим машинист.

Библиотека sa3-library отвечает за обработку апериодического события сцепки/расцепки. Работает она по принципу, некогда подсказанному agmike’ом – вне зависимости от того, какой вагон был сцеплен/расцеплен, перепроверяет все вагоны на нахождение в голове/хвосте/середине состава. Для связи с вагоном создан надкласс VehWithSa3 для класса вагона RZDCargo4, содержащий необходимые публичные процедуры для установки «анимированной»(меняемой) сцепки (и хвостового диска), а также инициализатор собственно библиотеки.

Библиотека reflection library отвечает за 2 периодических события:

1) смена времени суток и погоды, требующая периодической смены текстуры отражения от обода колеса (чтобы ночью колпары не светились, а в дождь не давали контрастного отражения)
2) изменение давления ТЦ, требующее периодического изменения направления анимации штоков и рычагов тормозной системы (при давлении более 0.7 атм – на торможение, при давлении менее 0.7 атм – на отпуск)

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

Ссылки на библиотеки текстур обода прописаны в куид-тейбле библиотеке. У данного типа тележек (уже давно-давно ворованных, и дважды переделывавшихся) – текстура отражения обода и текстура отражения гребня. (кстати, текстуры ясного дня сделаны развёрткой отражения соответствующих частей колеса с реальной фотографии). Вызов данной библиотеки выполняется из скрипта rzdcargovehicle4.gs .

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

Кроме того, скрипт rzdcargovehicle4.gs оборудован функцией открывания дверей по клику в настройках/в браузере view details, и системой самоперекрасок. Первое в пояснении не нуждается (хотя следует отметить, что при открытии и закрытии дверей воспроизводится звук door.wav , который в других дополнениях рекомендуется заменять пустым. Иначе желающие поиграться с галочкой в редакторе получат ошибку).

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

При желании данные 2 скрипта (rzdcargovehicle4.gs и rzdcargovehicle4a.gs) можно менять без каких-либо последствий для созданных с вашими вагонами сессий (менять, естественно, ).

Обращаю внимание ! При сохранении сессии вагон запоминает свою текстуру, так что рандом будет только при нажатии соответствующей кнопки в настройках, либо, если вагон оборудован rzdcargovehicle4a.gs, при постановке на карту. При загрузке карты, если у вас установлена перекраска, сохранённая вагоном в сессии, она будет установлена сразу, без поиска. Если же у вас этой перекраски нет, то, в случае оборудования скриптом rzdcargovehicle4a.gs, вагону присвоится рандомная перекраска, а если rzdcargovehicle4.gs – останется дефолтная текстура.

Учтите! Поиск самоперекрасок не оптимизирован, так что если вы скачали сессию, но не скачали самоперекрасок, а вагоны оборудованы скриптом rzdcargovehicle4a.gs, возможно зависание после загрузки на длительное время. В этом случае СОВЕТУЮ поставить без смены куида вагона скрипт rzdcargovehicle4.gs , затем вручную рандомить перекраски вагонов. Когда будут указаны перекраски для большинства вагонов, можете прописать rzdcargovehicle4a.gs обратно в вагон.

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

Текстуры, которые она меняет, описаны в части 1, (повторю, текстура основная, текстура дополнительная, и текстура тележки), но, поскольку трейнзу всё равно как называется текстура, и к какой меши она относится, сообщаю:

Эффект смены основной текстуры - skin1 (ставится текстура 0 библиотеки)
Эффект смены дополнительной текстуры - skin1_d (ставится текстура 1 библиотеки)
Первый эффект смены текстуры тележки - wheel1 (ставится текстура 2 библиотеки)
Второй эффект смены текстуры тележки - bogey1 (ставится текстура 2 библиотеки)

В какой бы смеши они не находились, скрипт обязан найти и менять их.

Библиотека текстур отражения работает с

Эффект смены текстуры1 (отражение от колеса) - reflection-texture1 (ставится из первой библиотеки)
Эффект смены текстуры2 (отражение от гребня) - reflection-texture2 (ставится из второй библиотеки)


В библиотеках отражения –

0 – ясно
1- ночь
2- пасмурно

Кроме того, она работает с анимацией ТЦ

Мешь - tyagi
Далее, скрипт поддерживает анимированную мешь двери(люка)

Мешь – door

А также воспроизводит при этом звук door.wav, который должен лежать в директории вагона.

И последнее – скрипт поддерживает смену аттачентментов псеводоанимированных сцепок вагона:

Эффект привязки передней сцепки - front_disk
Эффект привязки задней сцепки - back_disk
Эффект привязки диска хвоста поезда (огней хвоста поезда, единой мешью) спереди - front_disk
сзади - back_disk


А теперь сообщаю – ДАЖЕ ЕСЛИ ВАШ ВАГОН НЕ ОБОРУДОВАН НИ ОДНИМ ИЗ ВЫШЕ ПЕРЕЧИСЛЕННЫХ ЭФФЕТКОВ, СКРИПТ ВСЁ РАВНО БУДЕТ РАБОТАТЬ КОРРЕКТОНО !

Аурановцы сделали неплохой контроль функций, так что если в вашем вагоне надо сделать только самоперекраску, либо только ТЦ, либо сделать вагон, не использующий тележки с заменяемыми текстурами, не имющую хвостовых огней, тяг ТЦ и двери , но имеющий самоперекраски и анимсцепки, МОЖНО ИСПОЛЬЗОВАТЬ ЭТОТ СКРИПТ.

Единственное что – не забывайте добавлять звук-путышку door.wav, иначе у особо любопытных может появляться ошибка при настройке вагона..

Да, работать скрипт будет не так быстро, как урезанные его части, но... Пилить на части тоже надо уметь :) - не всем это доступно.

А простой алгоритм установки, наверно, в следующей части...

Добавлено через 2 часа 43 минуты

В какой бы смеши они не находились, скрипт обязан найти и менять их.В какой бы меши они не находились, скрипт обязан найти и менять их.

antikiller_bm
04.07.2010, 15:46
Многа букаф...
Даешь краткий алгоритм установки...
Мне вот, допустим, надо просто одну текстуру поменять... и с другим названием

FlasH
04.07.2010, 16:10
Создана она была ещё varz'ом, в 2007 году на локомотивах ТГМ23 и ТЭП10, но была преспокойно забыта.

При всём уважении к varz'y, но изначально всё же эта идея появилась ещё в 2006 году на трамваях от vran'a =)

Ну а в целом за возобновление этого начинания - огромный плюс!

TRam_
09.07.2010, 23:42
Часть 3. Установка скрипта самоперекрасок на вагон


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


В данном случае за пример взят изотермический вагон Midinighter’a (лежит на trainz.ru). Он оборудован анимсцепкой, больше в нём никакого функционала нет.

Итак, устанавливаем и открываем для редактирования в explorer один из вагонов пака, а также его тележку.
http://s54.radikal.ru/i143/1007/41/c172d29647c2t.jpg (http://radikal.ru/F/s54.radikal.ru/i143/1007/41/c172d29647c2.jpg.html)
Кроме того, открываем для редактирования также вагон-донор.
http://s41.radikal.ru/i092/1007/ed/80a9dbcee95ft.jpg (http://radikal.ru/F/s41.radikal.ru/i092/1007/ed/80a9dbcee95f.jpg.html)
Начнём с того, что удалим старый скрипт вагона, и вставим новый (содержащийся в трёх файлах), а также файл звука.
http://i079.radikal.ru/1007/8d/6db3421d9099t.jpg (http://radikal.ru/F/i079.radikal.ru/1007/8d/6db3421d9099.jpg.html)
Копируем разделы string-table и kuid-table (при этом строки sa3-coupled и sa3-uncoupled оставляем неизменёнными)
http://i061.radikal.ru/1007/f5/fd6b6e759edft.jpg (http://radikal.ru/F/i061.radikal.ru/1007/f5/fd6b6e759edf.jpg.html)

Далее… Проверяем, чтобы аттачентменты анимсцепок имели имена front_couple и back_couple, и копируем эффект смены текстуры. Обращаю внимание, что дополнительной текстуры у вагона не предусмотрено, её прописывать не надо.
http://s04.radikal.ru/i177/1007/df/abd38a0f858dt.jpg (http://radikal.ru/F/s04.radikal.ru/i177/1007/df/abd38a0f858d.jpg.html)

Теперь надо указать texture.txt файл той текстуры, которую будем менять.
http://s46.radikal.ru/i113/1007/8e/4cffd853d452t.jpg (http://radikal.ru/F/s46.radikal.ru/i113/1007/8e/4cffd853d452.jpg.html)

Прописываем свой куид и вписываем нашу маску. (Обращаю внимание - при выкладке дополнения лучше сообщать о маске - чтобы для одной и той же развёртки текстур небыло разных наборов перекрасок)
http://s41.radikal.ru/i091/1007/15/146d97820257t.jpg (http://radikal.ru/F/s41.radikal.ru/i091/1007/15/146d97820257.jpg.html)

Если хотите, можете поставить тележки от вагона-донора, если не хотите, то прописывайте в тележках эффект смены текстуры (основной и отражения), как в тележке вагона-донора. И свой куид. Естественно, указывайте оригинальные texture.txt файлы
http://s002.radikal.ru/i200/1007/62/f7e1dc98e866t.jpg (http://radikal.ru/F/s002.radikal.ru/i200/1007/62/f7e1dc98e866.jpg.html)

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

Так как у нас вагон не оборудован дверями, заменяем звук на "пустой", и в string-table заменяем надписи о дверях на пробелы. Кроме того, меняем строки script и class как у вагона – донора. (не забываем о рзаличиях между RZDCargo4 и RZDCargo4a )
http://s02.radikal.ru/i175/1007/41/5e1fa7e6bc35t.jpg (http://radikal.ru/F/s02.radikal.ru/i175/1007/41/5e1fa7e6bc35.jpg.html)

А теперь, сделав revert to original вагона-донора, делаем import content папки editing
http://s004.radikal.ru/i208/1007/3d/d9a111dabea4t.jpg (http://radikal.ru/F/s004.radikal.ru/i208/1007/3d/d9a111dabea4.jpg.html)
Устанавливаем импортированные куиды, остальным делаем revert to original. Вагон готов.

А теперь перейдём к созданию самоперекраски (для корректной работы скрипта RZDCargo4a необходима хотя бы одна самоперекраска ).
В текстовом виде это было изложено в части 1, теперь несколько скринов.

Как уже говорил, открываем для редактирования 2 куида самоперекраски-донора.
В html-asset вписываем имя, начинающееся с маски, и куиды

http://s45.radikal.ru/i109/1007/52/61b044ed00abt.jpg (http://radikal.ru/F/s45.radikal.ru/i109/1007/52/61b044ed00ab.jpg.html)

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

Primary=black.bmp

И создаём чёрный рисунок black.bmp размером 16x16 пикселей. Не забываем прописать тот куид, который указали в kuid-table html-asset'а.
http://s006.radikal.ru/i213/1007/fa/b7694c2464c0t.jpg (http://radikal.ru/F/s006.radikal.ru/i213/1007/fa/b7694c2464c0.jpg.html)

Импортируем перекраску и устанавливаем. Всё, теперь можно "клепать самоперекраски" с выбранной вами маской и своим куидом сколько душе угодно (главное-чтобы авторы материала потом не наехали :) )
http://i057.radikal.ru/1007/71/b3d75583cfe7t.jpg (http://radikal.ru/F/i057.radikal.ru/1007/71/b3d75583cfe7.jpg.html)

Добавлено через 9 минут
PS всё-таки varn не самоперекраски делал, а сменные меши кузовов для трамваев. Это позволяет сделать только одну-единственную библиотеку на каждый трамвай. varz же предложил алгоритм поиска куидов библиотек с текстурами, и именно в этом состоит идея самоперекрасок (а библиотеки текстур известны ещё со стрелок Лешего...)

Добавлено через 51 минуту
Да, и всем, кто будет этим пользоваться, советую ознакомиться - https://forum.trainzup.net/showthread.php?t=653 . Учтите, чем меньше куидов одного и того же вагона с разными масками будет, тем больше самоперекрасок на каждый вагон будет приходиться :)



New