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