00080. Тюнинг транспорта, работа с компонентами тюнинга

Тюнинг транспорта, работа с компонентами тюнинга|Этот урок будет посвящен тюннингу, используя скриптинг.|wmysterio|wmysterio||||Одним из главных нововведений в ГТА стал тюнинг транспорта. В первую очередь обращаю Ваше внимание на том, что не все автомобили могут быть тюнингированы и, к тому-же, некоторый тюнинг доступный только конкретной машине. Спойлер, колёса, бампера и т.п являются компонентами автомобиля. Количество таких компонентов зависит от автомобиля, что "прокачивается". В этом уроке мы попробуем тюнингировать #ELEGY.

Первое, что нужно сделать - узнать какие компоненты доступны для тюнинга. Для этого откроем файл "carmods.dat" любым текстовым редактором и ищем строку, которая начинается с ELEGY:

elegy, exh_a_l, exh_c_l, fbmp_a_l, fbmp_c_l, nto_b_l, nto_b_s, nto_b_tw, rbmp_a_l, rbmp_c_l, rf_a_l, rf_c_l, spl_a_l_b, spl_c_l_b, wg_l_a_l, wg_l_c_l

Каждой запятоц выделено компонент, доступный для тюнинга. Во многих случаях компоненты начинаются с одного префикса:

**nto**_b_l **nto**_b_s **nto**_b_tw

В таких случаях можно выбрать только один компонент из этих префиксов ( думаю вы видели, что можно выбрать только один тип нитро ). Для Вас ( чтобы Вы не парились какой префикс что значит ) я сделал таблицу некоторых префиксов, которые обозначают компонент:

ПрефиксОписание

exh

Выхлопная труба

fbmp

Передний бампер ( **f**orward **b**u**mp**er )

nto

Нитро ( **n**i**t**r**o** )

rbmp

Задний бампер

spl

Спойлер

Существуют и другие компоненты, но Вы уже сами протестируете их. Я только привел пример этих префиксов. Суть этой информации в том, что бы не делать ошибок при загрузке компонентов. Мне иногда приходят письма об этих компонентах и как же удивляются адресанты когда я им отвечаю, что "нельзя загружать два одинаковых компонента", хотя как они пишут: "Эти компоненты находятся в списке". Отвечаю наперёд: можно использовать только один компонент из одинаковых префиксов.

Это теория. Советую вам обратить большое внимание на это, так как это поможет вам миновать ошибки. Перейдём к опкодам:

06E9: load_car_component #rbmp_c_l // загрузить компонент
06EA: car_component #rbmp_c_l available // проверка "Загрузился ли компонент?"
06E7: 1@ = add_car_component #rbmp_c_l to_car 0@ // устанавливает компонент транспорту

Здесь: 1@ - в эту переменную будет записан компонент #rbmp_c_l - модель загруженного компонента 0@ - наш автомобиль

Как только компонент прицеплен к машине, можем смело очищать память игры от загруженной модели компонента:

06EB: release_car_component #rbmp_c_l

Наш скрипт будет примерно таким:

{$CLEO}
0000:

:1
thread '1'
wait 0
06E9: load_car_component #rbmp_c_l
model.Load(#ELEGY)
038B: load_requested_models

:1_1
wait 0
if AND
06EA: car_component #rbmp_c_l available
model.Available(#ELEGY)
jf @1_1
0@ = car.Create(#ELEGY, 2493.1716, -1667.1075, 12.3437)
car.Angle(0@) = 178.0475
model.Destroy(#ELEGY)
06E7: 1@ = add_car_component #rbmp_c_l to_car 0@
06EB: release_car_component #rbmp_c_l
0A93: end_custom_thread

Результат нашего тюнинга:

Как видим, задний бампер успешно поставлен!

Кроме загрузки компонентов, возможно давать автомобилю некоторые примочки. Рассмотрим несколько опкодов из этой категории ( компонентов загружать не нужно ):

09E9: car 0@ add_single_nitro // установить одноразовый нитроускоритель
07FF: set_car 0@ hydraulics 1 // установить гидравлику
0216: enable_taxi 0@ light 1 // включает или выключает значок "Такси" на машине ( только для машин такси )
0572: enable_taxi_nitros 1 // опкод включает нитро во всех такси

Есть ещё проверка "Машина имеет гидравлику?":

0803: car 0@ have_hydraulics

Одпокы для работы с покраской:

06ED: set_car 0@ paintjob 2
0988: get_car 0@ paintjob 1@

Опкод установит/получит тачке необходимую покраску ( они ещё называются винилы ).

Здесь: 0@ - машина 2 - номер винила. Диапазон винил: от 0 до 2. Если поставить число больше или меньше, то покраска не поставится. Тоже самое касается автомобилей, которые не поддерживают перекраски винил 1@ - в эту переменную будет занесен номер текущей покраски опкодоа 06ED

Опкоды, для работы с цветом машины:

0229: set_car 0@ primary_color_to 11 secondary_color_to 0 // задать основные цвета
03F3: get_car 0@ primary_color_to 1@ secondary_color_to 2@ // получить основные цвета

Так же существуют и такие странные опкоды:

0A11: set_car 0@ tertiary_color_to 11 quaternary_color_to 0 // задать вторичные цвета
0A12: get_car 0@ tertiary_color_to 1@ quaternary_color_to 2@ // получить вторичные цвета

Это как бы 3-й и 4-й цвет ( используется не некоторых автомобилях ). Также мы можем задать номерной знак автомобилю опкодом:

0674: set_car_model #ELEGY numberplate "AA_TELL"

Здесь: #ELEGY - модель транспорта. Использовать опкод нужно перед созданием машины "AA_TELL" - текст номерного знака. Не всегда работает и обычно меняются только задние номера

Ну и напоследок давайте прокачаем наш ELEGY:

{$CLEO}
0000:

:1
thread '1'
wait 0
06E9: load_car_component #rbmp_c_l
06E9: load_car_component #spl_a_l_b
model.Load(#ELEGY)
038B: load_requested_models

:1_1
wait 0
if AND
06EA: car_component #rbmp_c_l available
06EA: car_component #spl_a_l_b available 
model.Available(#ELEGY)
jf @1_1
0@ = car.Create(#ELEGY, 2493.1716, -1667.1075, 12.3437)
car.Angle(0@) = 178.0475
model.Destroy(#ELEGY)

06E7: 1@ = add_car_component #rbmp_c_l to_car 0@
06E7: 2@ = add_car_component #spl_a_l_b to_car 0@ 
06EB: release_car_component #rbmp_c_l
06EB: release_car_component #spl_a_l_b 
 
09E9: car 0@ add_single_nitro
07FF: set_car 0@ hydraulics 1
06ED: set_car 0@ paintjob 1 

0A93: end_custom_thread

Результат:

На этом урок окончен. =)|2567|1|0|56885858png500300400240``\|90309845png500300400240``||tjuning_transporta_rabota_s_komponentami|1499755417

Last updated