-
Notifications
You must be signed in to change notification settings - Fork 30
Машины
- Восстановлен базовый функционал машин из SoC
- Исправлены полёты в воздухе при спавне
- Исправлены переходы по локациям
- Добавлен класс
SCRPTCAR
из 1.5.10
class = SCRPTCAR
- Поддержка
Story ID
(для классаSCRPTCAR
):
story_id = aiw_closed
Позиция настраивается в секции car_definition
. Есть несколько режимов:
- Через кость (оригинал)
driver_place = seat_left
- Без указания. Берётся root кость (оригинал)
- Через прямое указание позиций (Lost Alpha)
driver_position = 10,10,10 ; Позиция
driver_direction = 1,0,1 ; Направление камеры
Машина поддерживает приборную панель. Для этого в конфигурации модели машины необходимо создать секцию dashboard
[dashboard]
rpm_bone = rpm_strelka ; Кость тахометра
fuel_bone = fuel_strelka ; Кость датчика уровня топлива
speed_bone = speed_strelka ; Кость спидометра
rpm_angle = 5.0, -180.0, -240.0, 5.0 ; [NET Online] zero_rpm, max_rpm, min_angle, max_angle
fuel_angle = 5.0, -180.0, -240.0, 5. ; [NET Online] zero_fuel, max_fuel, min_angle, max_angle
speed_angle = 15.0, -133.0, -250.0, 15.0 ; [NET Online] 0 km/h, 100 km/h, min_angle, max_angle
Для корректного вращения или движения кости, необходимо настроить bind_rotation
Сейчас доступны для настройки rpm_*
, fuel_*
, speed_*
*_bone = bone_name
*_angle = zero_value, max_value, min_angle, max_angle
Для удобства углы подбираются так-же через bind_rotation
Инструкция по настройке
Для настройки zero_value
подбираем значение при котором стрелочка датчика указывает на ноль. Для настройки max_value
(для стрелок тахометра и датчика топлива это значение задаётся в конфиге, поэтому вы сами выбираете какое значение максимальное, для спидометра это значение фиксированное - 100 км/ч) подбираем необходимое значение.
Для настройки пределов счётчика необходимо подобрать крайнее левое и крайнее правое положение стрелок и записать в порядке возрастания в конфиг.
Данная система позволяет устанавливать скриптовые коллбеки на Use() по названию кости. Для этого нужно зарегистрировать список костей и функций в car_definition
; Custom usable
usable_bones = back_wheel, left_door
usable_bones_callback = test_car.fuel_test, test_car.block_left_door
Пример скрипта:
function fuel_test(obj_car)
obj_car.fuel = 10
return false -- Передаём дальнейшее управление движку
end
function block_left_door(obj_car)
return true -- Блокируем дальнейшую обработку Use() события для движка
end
- Текстовая подсказка
<string id="car_use">
<text>Использовать ($$ACTION_USE$$)</text>
</string>
Подробнее о новых скриптовых экспортах можно прочесть тут.
- configs/ui/car_panel.xml <-- XML Описание окна
- configs/ui/textures_descr/ui_car_panel.xml <-- Регистрация иконок на текстуре
- textures/ui/car_panel.dds <-- Текстура с иконками
Нажми на меня
<?xml version='1.0' encoding="UTF-8"?>
<w>
<car_panel x="0" y="0" width="1024" height="768"> <!-- Само окно -->
<car_static x="840" y="525" width="175" height="100" stretch="1"> <!-- Задний фон -->
<texture>ui_car_panel_back</texture>
</car_static>
<car_health_progress_bar x="45" y="12" width="114" height="12" horz="1" min="0" max="1" pos="0"> <!-- Индикатор здоровья -->
<progress stretch="1">
<texture r="194" g="8" b="8" a="200">ui_inGame2_inventory_progress_bar</texture>
</progress>
</car_health_progress_bar>
<car_fuel_progress_bar x="45" y="30" width="114" height="12" horz="1" min="0" max="100" pos="0"> <!-- Индикатор топлива -->
<progress stretch="1">
<texture r="8" g="122" b="122" a="200">ui_inGame2_inventory_progress_bar</texture>
</progress>
</car_fuel_progress_bar>
<car_engine_lamp> <!-- Индикатор двигателя -->
<on x="26" y="47" width="16" height="16" stretch="1">
<texture r="122" g="122" b="8">ui_car_panel_engine</texture>
</on>
<off x="26" y="47" width="16" height="16" stretch="1">
<texture a="120">ui_car_panel_engine</texture>
</off>
</car_engine_lamp>
<car_light_lamp> <!-- Индикатор фар -->
<on x="44" y="47" width="14" height="12" stretch="1">
<texture r="122" g="122" b="8">ui_car_panel_light</texture>
</on>
<off x="44" y="47" width="14" height="12" stretch="1">
<texture>ui_car_panel_light</texture>
</off>
</car_light_lamp>
<car_speed_mode x="30" y="77" width="16" height="16" stretch="1"> <!-- Индикатор текущей передачи -->
<text font="font_graffiti" />
</car_speed_mode>
</car_panel>
</w>
В userdata конфиге нужно указать название кости в секции car_definition
trunk_bone = back_wheel
<string id="car_trunk_use">
<text>Открыть багажник ($$ACTION_USE$$)</text>
</string>
Данный функционал является опциональным. Для активации нужно прописать следующие строки в основной конфиг автомобиля:
name = "niva" ; Имя авто (Имеется поддержка секций из text)
icon = ui_npc_monster_pseudodog ; иконка авто