Форум Trainsim  

Вернуться   Форум Trainsim > Auran TrainZ > TrainZ - Подвижной состав

Ответ
 
Опции темы Опции просмотра
Старый 01.07.2010, 02:47   #1
TRam_
Матёрый пользователь
 
Аватар для TRam_
 
Регистрация: 18.02.2008
Сообщений: 8,703
Вы сказали Спасибо: 1,424
Поблагодарили 2,366 раз(а) в 1,319 сообщениях
TRam_ стоит на развилке (репутация по умолчанию)
По умолчанию Универсальный вагоннный скрипт обр. 2010


Пора открывать новое поколение вагонных скриптов. В данном случае, 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'а.



Часть вторая. Возможности 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, иначе у особо любопытных может появляться ошибка при настройке вагона..

Да, работать скрипт будет не так быстро, как урезанные его части, но... Пилить на части тоже надо уметь - не всем это доступно.
TRam_ вне форума   Ответить с цитированием
Старый 01.01.2007, 12:00  
Яndex
Спонсор
 
 
Регистрация: 01.01.2007
Сообщения: 500


Реклама показывается изредка по случайному принципу
По умолчанию РЕКЛАМА

 
Старый 02.07.2010, 20:14   #2
genesis
Матёрый пользователь
 
Регистрация: 31.07.2007
Адрес: Ульяновск
Сообщений: 2,570
Вы сказали Спасибо: 245
Поблагодарили 175 раз(а) в 76 сообщениях
genesis стоит на развилке (репутация по умолчанию)
Отправить сообщение для genesis с помощью ICQ Отправить сообщение для genesis с помощью Skype™
По умолчанию

А что никто не пишет, по-моему отлично.

Но учитывая тормоза при запросах к ТАД при загрузке перекрасок хочу посоветовать загрузку ассетов этих перекрасок сделать ленивой.
genesis вне форума   Ответить с цитированием
Старый 02.07.2010, 20:50   #3
TRam_
Матёрый пользователь
 
Аватар для TRam_
 
Регистрация: 18.02.2008
Сообщений: 8,703
Вы сказали Спасибо: 1,424
Поблагодарили 2,366 раз(а) в 1,319 сообщениях
TRam_ стоит на развилке (репутация по умолчанию)
По умолчанию

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

Сейчас буду тестить систему в 2006 трейнзе, и писать мануал по установке скрипта на типичные трейнзовские вагоны
TRam_ вне форума   Ответить с цитированием
Старый 03.07.2010, 05:03   #4
Gregory_777
Тестер
 
Аватар для Gregory_777
 
Регистрация: 03.12.2007
Адрес: Москва
Сообщений: 3,668
Вы сказали Спасибо: 880
Поблагодарили 3,815 раз(а) в 874 сообщениях
Gregory_777 хороший собеседник
Отправить сообщение для Gregory_777 с помощью ICQ
По умолчанию

TRam_, ты маньяк
__________________
Gregory_777 вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 12:00. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim
TopList Нажми для появления дома Trainsim на карте Intermap
Что это?