Меню сайта

Разделы каталога

Наш опрос

Какие разделы сайта заполнять в первую очередь?
Всего ответов: 1010

Статистика


Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Каталог статей

Главная » Статьи » Статьи об игре 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

steering -0.378 0.055 -0.343 0.000 -0.419 0.000 0.01 sphere 0.1
nocollision
render 0x0003001C

<ПОМЕСТИТЕ КУРСОР МЫШИ СЮДА>

seat -0.391 -0.340 0.080 0.000 0.410 0.000
pedals -0.391 -0.350 -0.700
cockpit_speed -0.448 0.120 -0.510 0.000 0.000 0.000 0x00020037 2.2 -0.009 -2.2 2.2
cockpit_rpm -0.328 0.120 -0.510 0.000 0.000 0.000 0x00020037 2.2 -0.0004 -2.2 2.2


Шаг 2. Добавление строк OSD
В том месте, где мы поставили курсор мыши, мы вставляем следующее:

Code

osd_gauge 0x0002F017 1.200 -0.790 0.000 0xFFFFFFFF %03.0f
osd_spdpin 0x0002F009 1.447 -0.700 0.0001 2.489 -0.0157134 -2.3 2.3
osd_rpmpin 0x0002F010 0.883 -1.126 0.0001 2.2 -0.0005 -2.3 2.3
osd_gear 0x00020058 0.460 0.807 0.0001 0xFFFF0000 N123456R
osd_speed 0x00020058 0.741 0.531 0.0001 0xFFFF0000 %03.0f

osd_damage 0x00020057 0.926 0.855 -0.0001
osd_mileage 0x00020058 0.705 0.760 -0.0001
osd_nos 0x0002005C 0.705 0.856 -0.0001
osd_turbo 0x0002005C 0.705 0.905 -0.0001

osd_abs 0xFFFFFFFF 0.000 0.000 0.000
osd_asr 0xFFFFFFFF 0.000 0.000 0.000
osd_hbrake 0xFFFFFFFF 0.000 0.000 0.000
osd_emergency 0xFFFFFFFF 0.000 0.000 0.000


После добавления этих строк нужно понять какая строка и за что отвечает. Рассмотрим сначала описания строк:

-> 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

//элемент
osd_spdpin 0x0002F009 1.447 -0.700 0.0001 2.489 -0.0157134 -2.3 2.3
osd_rpmpin 0x0002F010 0.883 -1.126 0.0001 2.2 -0.0005 -2.3 2.3

//параметры: (одни и те же для двух этих элементов)
ID рендера || координаты XYZ || параметр цены деления 1 || параметр цены деления 2 || max поворот стрелки слева || max поворот стрелки справа ||


Code

//элемент
osd_gear 0x00020058 0.460 0.807 0.0001 0xFFFF0000 N123456R

//параметры:
ID рендера || координаты XYZ || цвет в HTML формате || параметры коробки передач


Code

//элемент
osd_speed 0x00020058 0.741 0.531 0.0001 0xFFFF0000 %03.0f
osd_rpm 0x00020058 0.400 0.850 0.0001 0xFFFF0000 %03.0f

//параметры: (одни и те же для двух этих элементов)
ID рендера || координаты XYZ || цвет в HTML формате || начальное значение, если стоит цифровой спидометр/тахометр


- Для всех остальных элементов примены следующие параметры: (на примере osd_gauge)

Code

//элемент
osd_gauge 0x0002F017 1.200 -0.790 0.000 0xFFFFFFFF %03.0f

//параметры:
ID рендера || координаты XYZ || цвет в HTML формате || значение, если присутствуют числовые параметры


У вас сразу же возник вопрос, а откуда брать ID рендеров? В игре есть уже встроенные ID, они прописаны в файле cars.rpk. Ниже описаны все ID, которые я использовал в своём примере:

Code

Стандартные ID, их можно найти в cars.rpk:
0x00020058 //цифровой шрифт
0x00020057 //шрифт индикатора повреждений
0x0002005C //шрифт слайдера (N2О/турбо)
0xFFFFFFFF //пустой рендер, используйте его для того, чтобы скрыть OSD элемент, он не будет отображаться на экране

Собственные ID, их нужно настраивать самому:
0x0002F017 //круглая текстура приборной панели
0x0002F009 //текстура стрелки спидометра
0x0002F010 //текстура стрелки тахометра


Напомню, что в данном случае в 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

<FILE 00000026.res >
typeof 14
superid 0x00000031
typeid 0x00000058
alias lcdfont
isparentcompatible 1.00
</FILE>
<FILE 00000026.rsd >
mesh 0x0000005A
flags 4.000
texture 0x00000052
</FILE>


Небольшие хитрости.
В игре можно создавать как аналаговые, так и цифровые спидометры и тахометры. Например, для аналогового спидометра нужны элементы osd_speed (фон спидометра)

и osd_spdpin(стрелка), тут можно сделать хитрость: создаём новую текстуру для osd_gauge, в которую будет включен фон для спидометра, скрываем стрелку через задание значения 0xFFFFFFFF вместо ID рендера, а в значение ID рендера для строки osd_speed пишем 0x00020058, это ID цифрового шрифта, таким образом у нас будет цифровой спидометр, который мы можем перемещать в любую точку экрана. Тоже самое можно сделать с osd_rpm, тогда мы сможем увидеть точные значения оборотов двигателя в любой момент времени.

Ещё одна небольшая хитрость: масштабы рендеров можно менять через отдаление/приближение их по оси Z (третье число в XYZ координатах).

В игре есть стрелка N2O (osd_nospin), я пробовал применять к ней различные параметры, но она почему-то по-прежнему стоит неподвижно, я думаю, есть способ заставить её двигаться.

Наконец, длина и ширина OSD объектов в SCX объектов в максе задаётся в пикселях, один пиксель равен одному пикселю на экране в игре.

Вот вроде бы и всё, теперь вы можете создавать свои OSD для любой машины!
Категория: Статьи | Добавил: Ggremlinn (23.08.2011)
Просмотров: 64758 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 1
1 ohdgmvhlyog  
0
Alle Erfahrungen vom 7 Maerz 2003

gudde moien

Sie lieben den Körperkult?
Beste Schönheitsklinik
Niemand operiert besser Facelift
Warum also noch suchen?

Gehen Sie zur Femmestyle Webseite und bekommen Sie sämtliche Informationen über

http://www.femmestyle.eu/ - Bruststraffung Risiken
Ein super Tip von tortenfischpaifemmealledomains
sayônara

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Поиск