Каталог статей
Главная » Статьи » Статьи об игре Street Legal Racing: Redline » Статьи |
Редактирование OSD - что же всё-таки такое OSD?
Тутор написан RAXATом В связи с участившимися индивидуальными просьбами о выдаче кода OSD я решил создать этот туториал, он научит вас редактировать старый надоевший OSD. Начнём с того, что же всё-таки такое OSD? OSD расшифровывается как "On Screen Display", говоря по-русски, это информация, которая отображается на экране самым верхним слоем, в любой игре OSD элементами традиционно являются меню, окна, курсоры, интерфейсы и тд, иными словами, всё, что находится над рабочей областью. В нашем случае OSD элементы это, главным образом, спидометр, тахометр, индикатор пройденного пути, индикаторы ABS и ASR, индикаторы турбо и нос, индикатор повреждения. В SLRR весь код для OSD написан в исполняемом файле, поэтому основная панель OSD (LongOSDgauge) будет отображаться по умолчанию, в случае если игра не обнаружит данных OSD, введённых пользователем. Как менять OSD? Игра устроена таким образом, что запрос OSD данных идёт через кузов машины, т.е. чтобы поменять OSD на всех машинах в игре, нужно лезть в CFG файл кузова каждой машины и там прописывать полностью все строки создания OSD. В этом туториале я объясню принцип замены OSD на основе Baiern CoupeSport GTIII. Действовать будем пошагово. Шаг 1. Подготовка к работе Открываем файл cars\racers\Baiern_data\scripts\_main_CoupeSport_GT_III.cfg и помещаем курсор между строк: Code
Шаг 2. Добавление строк OSD В том месте, где мы поставили курсор мыши, мы вставляем следующее: Code
После добавления этих строк нужно понять какая строка и за что отвечает. Рассмотрим сначала описания строк: -> osd_gauge - приборная панель -> osd_spdpin - стрелка спидометра -> osd_rpmpin - стрелка тахометра -> osd_nospin - стрелка N2O -> osd_gear - индикатор текущей передачи трансмиссии -> osd_speed - индикатор скорости -> osd_rpm - индикатор оборотов двигателя -> osd_damage - индикатор повреждений машины -> osd_mileage - индикатор пройденного пути -> osd_nos - индикатор количества N2О -> osd_turbo - индикатор давления турбо -> osd_abs - датчик ABS -> osd_asr - датчик ASR -> osd_hbrake - датчик применения ручного тормоза -> osd_emergency - датчик разрушения двигателя Шаг 3. Настройка OSD элементов. Теперь, когда мы знаем какая строка что значит, мы должны разобраться в непонятных параметрах строк. ОЧЕНЬ ВАЖНО: если указать параметры неправильно или в неправильном порядке, элемент не отобразится на экране либо будет неподвижен! Приступим к расшифровке: - Элементы со специальными параметрами (т.е. параметры для них неприменимы для других элементов) Code
Code
Code
- Для всех остальных элементов примены следующие параметры: (на примере osd_gauge) Code
У вас сразу же возник вопрос, а откуда брать ID рендеров? В игре есть уже встроенные ID, они прописаны в файле cars.rpk. Ниже описаны все ID, которые я использовал в своём примере: Code
Напомню, что в данном случае в 4 регистре стоит цифра 2, эта цифра обозначает порядковый номер пути к файлу cars.rpk, который содержит метки с информацией о ресурсах. Во многих машинах путь имеет номер 2, однако некоторые моддеры меняют его порядковый номер, поэтому если вы видите нестанадртную машину, то рекомендуется проверить порядковый номер пути cars\ в RPK файле машины, считать его нужно сверху вниз, первая строка имеет порядковый номер 1. В моём примере есть скрытые элементы, если вы их не увидите, то вам надо заменить ID рендера с 0xFFFFFFFF на любой другой рабочий ID. Шаг 4. Добавление собственных ID рендеров. Добавлять свой OSD рендер в игру так же просто, как добавлять рендер ID для детали, однако у OSD рендеров есть свои особенности, рассмотрим каждую из них. - Статический OSD объект. -> Это обыкновенный рендер, без особых параметров, он не имеет динамики, таковым может являться рендер приборной панели (osd_gauge), он просто стоит на нижнем слое и никак не меняется. Внутри SCX файла для такого рендера может находиться любое количество объектов с любыми именами. Рендер будет иметь флаг flags 4.000. - OSD объект типа Slider. -> Это динамический рендер, работающий при помощи спрайтов, т.е. игра читает SCX файл, ищет в нём подобъекты (они и будут спрайтами) и "перелистывает" эти спрайты один за другим, создавая эффект анимации. К примеру, объект типа Slider это индикатор давления турбо, он состоит из 8 спрайтов-прямоугольников, каждый из которых описывает подобие анимации прогресс бара (прогресс бар это что-то типа полоски загрузки). Внутри SCX файла такого рендера должно быть более одного объекта с именами "a,b,c,d,e,f...", игра пролистывает каждый поимённо начиная с "a", назначая каждый последующий объект на новый спрайт, например объект с именем "d" будет показывать состояние среднего давления турбо. Такой рендер также будет иметь флаг flags 4.000. - OSD объект типа Switch. -> Это динамический рендер, также работающий при помощи спрайтов, однако, в отличие от объекта типа Slider, в этом рендере всего лишь 2 спрайта: один показывает активное состояние индикатора, другой - пассивное. Примером объекта типа Switch является индикатор ABS. Внутри SCX файла для этого рендера должно быть 2 спрайта с именами "a,b". В связи с особенностями этого типа OSD объектов, рендер вообще не будет иметь никаких флагов, если они у вас будут, их надо будет удалить. Таким образом, типичным примером OSD рендера в RPK будет вот такая метка: Code
Небольшие хитрости. В игре можно создавать как аналаговые, так и цифровые спидометры и тахометры. Например, для аналогового спидометра нужны элементы osd_speed (фон спидометра) и osd_spdpin(стрелка), тут можно сделать хитрость: создаём новую текстуру для osd_gauge, в которую будет включен фон для спидометра, скрываем стрелку через задание значения 0xFFFFFFFF вместо ID рендера, а в значение ID рендера для строки osd_speed пишем 0x00020058, это ID цифрового шрифта, таким образом у нас будет цифровой спидометр, который мы можем перемещать в любую точку экрана. Тоже самое можно сделать с osd_rpm, тогда мы сможем увидеть точные значения оборотов двигателя в любой момент времени. Ещё одна небольшая хитрость: масштабы рендеров можно менять через отдаление/приближение их по оси Z (третье число в XYZ координатах). В игре есть стрелка N2O (osd_nospin), я пробовал применять к ней различные параметры, но она почему-то по-прежнему стоит неподвижно, я думаю, есть способ заставить её двигаться. Наконец, длина и ширина OSD объектов в SCX объектов в максе задаётся в пикселях, один пиксель равен одному пикселю на экране в игре. Вот вроде бы и всё, теперь вы можете создавать свои OSD для любой машины! | |
Просмотров: 64758 | Комментарии: 1 | Рейтинг: 0.0/0 |
Всего комментариев: 1 | ||
| ||