PRO Mods - Forums
PRO Mods
Ваш ID: Guest
Recent messages\ Последние сообщения форума · Users list\ Список пользователей · Site search\ Поиск
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Форум » Main partition\ Главный раздел » Tutorials\ Туторы » Редактирование OSD (Инновации в массы!)
Редактирование OSD
RAXATДата: Четверг, 2007-07-26, 08:47:11 | Номер сообщения: 1
Legend
Группа: Master
Сообщений: 5209

Награды: 82

Положение: Offline

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

Напомню, что весь вышеописанный материал добыт лично мной путём многочисленных экспериментов, поэтому нигде на других сайтах вы эту информацию получить на данный момент не сможете, а если всё-таки сможете, то передайте лично от меня привет шустрым воришкам, которые умудрились быстрее остальных без моего согласия стащить этот драгоценный туториал с нашего сайта smile

RAXAT


Владелец сайта PROMODS.RU
Администратор сайта streetlegalmods.com (GOM-TEAM)
Разработчик Street Legal Racing: Redline v2.3.1
Skype: skype_raxat
PayPal: eversoft@bk.ru
E-mail: ceo@image-code.com
 
NIXДата: Четверг, 2007-07-26, 12:27:29 | Номер сообщения: 2
Флудер
Группа: Trusted Member
Сообщений: 700

Награды: 1

Положение: Offline

Отлично!
Будет время, обязательно поковыряю smile

пс. а что за датчик разр. двигателя? Вроде не было такого..

 
7AGLAR7Дата: Четверг, 2007-07-26, 12:45:14 | Номер сообщения: 3
Special Ed
Группа: Trusted Member
Сообщений: 730

Награды: 0

Положение: Offline

А разве в .ехе файл ненадо лезть?)
 
STANOK83Дата: Четверг, 2007-07-26, 15:53:13 | Номер сообщения: 4
ЧЕЛОВЕК-СТАНОК
Группа: Trusted Member
Сообщений: 590

Награды: 3

Положение: Offline

7AGLAR7, нет не надо
по этому тутору мона сделатьт для каждой тачки свои приборки как в TDU

Добавлено (2007-07-26, 15:52:39)
---------------------------------------------

Добавлено (2007-07-26, 15:53:13)
---------------------------------------------
извините за размер

 
fledДата: Четверг, 2007-07-26, 18:38:10 | Номер сообщения: 5
Группа: Удаленные









RAXAT,
в ОСД рендере
superid 0x00000031
это важно или нет???
 
RAXATДата: Четверг, 2007-07-26, 18:51:05 | Номер сообщения: 6
Legend
Группа: Master
Сообщений: 5209

Награды: 82

Положение: Offline

fled, нет, они все относятся к одному родителю системы 0x00010003 типа 14

Владелец сайта PROMODS.RU
Администратор сайта streetlegalmods.com (GOM-TEAM)
Разработчик Street Legal Racing: Redline v2.3.1
Skype: skype_raxat
PayPal: eversoft@bk.ru
E-mail: ceo@image-code.com
 
fledДата: Пятница, 2007-07-27, 10:57:08 | Номер сообщения: 7
Группа: Удаленные









RAXAT,
у меня не отображается рендер приборной панели(((
после того как изменил КФГ все элементы ОСД поменяли свое положение(с этим проблем небыло)
а вот рендер никак не хочет отображаться((
 
mihonДата: Пятница, 2007-07-27, 13:39:16 | Номер сообщения: 8
+MECHANIC+
Группа: Site Member
Сообщений: 1520

Награды: 18

Положение: Offline

На систему закиси азота и давления турбо лучше тож зделать приборки))

 
RAXATДата: Пятница, 2007-07-27, 13:43:30 | Номер сообщения: 9
Legend
Группа: Master
Сообщений: 5209

Награды: 82

Положение: Offline

fled, положение в ноль поставь и проверь параметры

mihon, без стрелок только разве что. со стрелками страшновато получается в 8 спрайтов


Владелец сайта PROMODS.RU
Администратор сайта streetlegalmods.com (GOM-TEAM)
Разработчик Street Legal Racing: Redline v2.3.1
Skype: skype_raxat
PayPal: eversoft@bk.ru
E-mail: ceo@image-code.com
 
FuzzyДата: Суббота, 2007-07-28, 02:46:43 | Номер сообщения: 10
СварЩег
Группа: Trusted Member
Сообщений: 804

Награды: 3

Положение: Offline

RAXAT, может я чтото опустил, но можно ли именно цифровые значения двичать (зилйонку ету)?
 
RAXATДата: Суббота, 2007-07-28, 03:13:46 | Номер сообщения: 11
Legend
Группа: Master
Сообщений: 5209

Награды: 82

Положение: Offline

Fuzzy, конечно можно. ставим цифровой шрифт и меняем координаты

Владелец сайта PROMODS.RU
Администратор сайта streetlegalmods.com (GOM-TEAM)
Разработчик Street Legal Racing: Redline v2.3.1
Skype: skype_raxat
PayPal: eversoft@bk.ru
E-mail: ceo@image-code.com
 
OSAДата: Воскресенье, 2007-07-29, 11:07:05 | Номер сообщения: 12
Experienced SLRR modder
Группа: Trusted Member
Сообщений: 562

Награды: 0

Положение: Offline

Quote (RAXAT)
-> osd_nospin - стрелка N2O

Значит можно сделать аналоговый датчик закиси азота?

Сори, прочитал дальше и все понял))



Сперва подумай...


Post edited by OSA - Воскресенье, 2007-07-29, 11:14:34
 
PunkGuyДата: Воскресенье, 2007-07-29, 11:49:53 | Номер сообщения: 13
Фан клуб Toretto
Группа: Trusted Member
Сообщений: 671

Награды: 3

Положение: Offline

OSA тебе же сказали нет! стрелка не работает!
 
Antony666Дата: Понедельник, 2007-07-30, 09:39:41 | Номер сообщения: 14
Team member
Группа: Trusted Member
Сообщений: 650

Награды: 1

Положение: Offline

Quote (PunkGuy)
OSA тебе же сказали нет! стрелка не работает!

если стрелка не работает то почему для нее есть команда? Значит можно заставить ее работать

 
PunkGuyДата: Понедельник, 2007-07-30, 10:37:09 | Номер сообщения: 15
Фан клуб Toretto
Группа: Trusted Member
Сообщений: 671

Награды: 3

Положение: Offline

Antony666 значит она также не доделана как и многое в этой игре! как видишь инвиктус вообще это не стали в игру сувать..
 
Antony666Дата: Понедельник, 2007-07-30, 11:57:37 | Номер сообщения: 16
Team member
Группа: Trusted Member
Сообщений: 650

Награды: 1

Положение: Offline

Quote (PunkGuy)
Antony666 значит она также не доделана как и многое в этой игре!

Но это не значит что ее нельзя доделать wink

 
RAXATДата: Понедельник, 2007-07-30, 12:01:53 | Номер сообщения: 17
Legend
Группа: Master
Сообщений: 5209

Награды: 82

Положение: Offline

Antony666, она просто стоит на месте. причин для того, чтобы стрелка OSD стояла на месте немного, как правило, это просто неправильные параметры. Возможно, в дино неправильно реализовано использование NOS, т.к. стрелка берёт данные из дино.

Добавлено (2007-07-30, 12:01:53)
---------------------------------------------
кстате даже дино в игре недоделан smile


Владелец сайта PROMODS.RU
Администратор сайта streetlegalmods.com (GOM-TEAM)
Разработчик Street Legal Racing: Redline v2.3.1
Skype: skype_raxat
PayPal: eversoft@bk.ru
E-mail: ceo@image-code.com
 
PunkGuyДата: Понедельник, 2007-07-30, 20:29:25 | Номер сообщения: 18
Фан клуб Toretto
Группа: Trusted Member
Сообщений: 671

Награды: 3

Положение: Offline

Antony666 к сожелению ты не прав.. все это сделано в ехе юю а исходников нету.. еслиб были то это было возможно.. в нашем случае только сделать с нуля..
 
OSAДата: Вторник, 2007-07-31, 03:19:40 | Номер сообщения: 19
Experienced SLRR modder
Группа: Trusted Member
Сообщений: 562

Награды: 0

Положение: Offline

Quote (PunkGuy)
OSA тебе же сказали нет! стрелка не работает!

А я сказал, что уже это прочитал!!!



Сперва подумай...
 
Antony666Дата: Среда, 2007-08-29, 01:14:09 | Номер сообщения: 20
Team member
Группа: Trusted Member
Сообщений: 650

Награды: 1

Положение: Offline

Quote (RAXAT)
Элементы со специальными параметрами (т.е. параметры для них неприменимы для других элементов)

Code

//элементosd_spdpin0x0002F009 1.447 -0.700 0.0001 2.489 -0.0157134-2.3 2.3osd_rpmpin0x0002F010 0.883 -1.126 0.0001 2.2 -0.0005-2.3 2.3

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

А как точно вычислить "параметр цены деления 1 || параметр цены деления 2"?? очень нужно. но не могу разобраться

 
PunkGuyДата: Среда, 2007-08-29, 01:27:44 | Номер сообщения: 21
Фан клуб Toretto
Группа: Trusted Member
Сообщений: 671

Награды: 3

Положение: Offline

как правило есл текстура снята с настоящего тахометра то все подходит идиально со стоковыми значениями..
 
Victor-TurboДата: Среда, 2007-09-05, 16:50:28 | Номер сообщения: 22
Regular
Группа: Trusted Member
Сообщений: 140

Награды: 0

Положение: Offline

STANOK83, кини свои припор на вагене плиз!!!!!! Сорри за офф

Добавлено (2007-09-05, 16:50:28)
---------------------------------------------
чет не подучается!!!


 
PunkGuyДата: Среда, 2007-09-05, 17:12:49 | Номер сообщения: 23
Фан клуб Toretto
Группа: Trusted Member
Сообщений: 671

Награды: 3

Положение: Offline

а ты сделал мешь наложил на него текстуру прописал все это в rpk и не напутал коды в cfg ?? если все делать правильно все получается!
 
Victor-TurboДата: Среда, 2007-09-05, 17:22:14 | Номер сообщения: 24
Regular
Группа: Trusted Member
Сообщений: 140

Награды: 0

Положение: Offline

PunkGuy, чет я перепутал я с рпк саввем не работал!!! кините мне для вагена ето плиззз сорри за офф

 
PunkGuyДата: Среда, 2007-09-05, 17:33:04 | Номер сообщения: 25
Фан клуб Toretto
Группа: Trusted Member
Сообщений: 671

Награды: 3

Положение: Offline

много просишь... кому и почему надо тебе кидать..ю вся инфа есть.. делай сам...
 
Victor-TurboДата: Среда, 2007-09-05, 17:38:27 | Номер сообщения: 26
Regular
Группа: Trusted Member
Сообщений: 140

Награды: 0

Положение: Offline

PunkGuy, я делаю но штото не так!!!!!у меня ваше даски приборов нет!!!

 
PunkGuyДата: Среда, 2007-09-05, 17:58:48 | Номер сообщения: 27
Фан клуб Toretto
Группа: Trusted Member
Сообщений: 671

Награды: 3

Положение: Offline

поверь ничего сверх есттественного в этом нету. .просто ты вызываеь тахометр которого не существует)0 сначало его надо сделать..
 
Victor-TurboДата: Среда, 2007-09-05, 18:43:34 | Номер сообщения: 28
Regular
Группа: Trusted Member
Сообщений: 140

Награды: 0

Положение: Offline

PunkGuy, вод я дурень!!!!!!!!!!!!!!!!!!!!!!!!

 
fledДата: Понедельник, 2007-10-29, 13:04:08 | Номер сообщения: 29
Группа: Удаленные









Начал делать свой ОСД...но вот с ссылками в РПК есть траблы....когда ставлю flags 4.000 игра вылетает..
если оставить flags 8.000 то не отображаются текстуры((
 
PunkGuyДата: Понедельник, 2007-10-29, 15:06:57 | Номер сообщения: 30
Фан клуб Toretto
Группа: Trusted Member
Сообщений: 671

Награды: 3

Положение: Offline

fled, с флагами никаких секретов. все как и раньше.. для текстуры один для меша другой.. роджительские супир ид по томуже принципу.. никаких приколов тут нету.. так что пробуй должно выйти.
 
Форум » Main partition\ Главный раздел » Tutorials\ Туторы » Редактирование OSD (Инновации в массы!)
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:
Copyright PRO Mods 2005© All rights reserved