Техніка у грі
Як відомо з безлічі вирізаної з гри особливо запам'ятався транспорт. Зараз ми повернемо один «примірник» усім відому «Ниву». Для «воскресіння» знадобиться 2 файли:
gamedata/config/creatures/vechicles.ltx
gamedata/spawns all.spawn' А також текстовий редактор і ACDC , що входить до складу X-ray Game asset tools . ' 1. Розпакуємо файл all.spawn за допомогою програми від bardak .' Як розпаковувати написано в readme.txt тому описувати даний етап не буду.
2. Знаходимо файл alife_l01_escape.ltx як видно там структура, щось на зразок цього:
[ 0 ] ; cse_abstract properties section_name = breakable_object name = meshes \ brkbl # 0 .ogf position = − 79.4930877685547 , -3.16186141967773 , -76.93414306684 , -1.45571649074554 , -0.267672836780548 ; cse_alife_object properties game_vertex_id = 0 distance = 0 level_vertex_id = 594270 object_flags = 0xffffffba ; cse_visual properties visual_name = meshes\brkbl# 0 ; cse_alife_object_breakable properties health = 1
Тобто дуже проста…
3. Замінювати те, що є, не будемо, а просто в самому кінці напишемо:
[ 870 ] ; cse_abstract properties section_name = m_car name = niva position = -239 , 8912 , -19 , 43 , -123 , 0998 direction = 0.581841766834259 , -1.45571649074554 , -0.267672836780548 ; cse_alife_object properties game_vertex_id = 0 distance = 0 level_vertex_id = 594270 object_flags = 0xffffffba ; cse_visual properties visual_name = physics\vehicles\niva\veh_niva_u_01 ; cse_alife_object_breakable properties health = 1
Де niva - це секція в ltx -файлі, яка використовуватиметься для параметрів об'єкта, а visual_name - це розташування моделі. health = 1 , отже, здоров'я. Розділи position і direction взяті з «довгоблукаючого» по мережі файлу all.spawn , де автомобілі знаходилися біля виходу від Сидоровича. Для вибору інших координат можна використовувати команду консолі rs_stats=1 . Після чого зберігаємо зміни, компілюємо all.spawn , поміщаємо його в gamedata \ spawns . Тепер нам знадобиться файл vechicles.ltx у gamedata/config/creatures Відкриваємо його та дописуємо там:
[ niva ] GroupControlSection = spawn_group $ spawn = "vehicles\niva" class = SCRPTCAR cform = skeleton visual = physics \ vehicles \niva\veh_niva_u_01.ogf actor_visual = physics\vehicles\niva \ veh_niva_ 100000 script_binding = bind_physic_object.init
Все, починаємо нову гру, після виходу від Сидоровича ви побачите Ниву, щоб її завести наберіть в консолі bind turn_engine kb . За цим принципом можна спати авто на будь-якій локації.
Ще один спосіб воскресити транспорт
Все це добре, але є ще один простий спосіб воскресити вирізаний із гри транспорт. Перше. Для початку нам потрібно файл vehicles.ltx (перебуває в creatures) внести у файл system.ltx. Ось так:
#include "creatures\vehicles.ltx"
Тобто додати його до інших файлів (принаймні в мене він не був туди внесений), звідки гра брати необхідну інформацію.
Друге. Додати файл vehicles.ltx повний конфіг машини. Наприклад, уазика. Ось готовий приклад:
[ vehicle_uaz ] GroupControlSection = spawn_group $ spawn = "vehicles\vehicle_uaz" class= SCRPTCAR cform = skeleton visual = physics \ vehicles\uaz\veh_uaz_u_01.ogf actor_visual = physics \vehicles\uaz\uaz ph_mass = 99000 script_binding = bind_physic_object.init ph_skeleton_airr_lin_factor = 2.0 ph_skeleton_airr_ang_factor = 0.0 ph_skeleton_hinger_factor1 = 1.0 ph_skeleton_ddelay = 15.0 ph_skel_fatal_impulse_factor = 12. death_velocity_factor = 0.75 _ _ _
Характеристики машин можна змінювати у файлах, що лежать у models\vehicles .
Третє. Створити скриптову функцію по спавну машини. Мій приклад:
function buy_uaz ( position , total ) alife ( ) : create ( " vehicle_uaz " , vector ( ) : set ( -245.01445007324 , -18.792783737183 , -107.1413803108 )
Назва функції – buy_uaz – може бути будь-яка. Саму функцію треба покласти в якийсь скриптовий файл у папці scripts . У мене вона лежить в escape_dialog.script .
Для того, щоб можна було заводити машину, не залазячи в консоль, відкриваємо файл ui_keybinding (знаходиться в config\ui ) і вписуємо туди в секцію
<group name = "kb_grp_common" >
це:
<command id = "kb_cam_1" exe = "cam_1" /> <command id = "kb_cam_2" exe = "cam_2" /> <command id = "kb_cam_3" exe = "cam_3" /> <command id = "kb_turn_engine" exe = "turn_engine" />
Тепер у нас у меню управління можна призначити клавіші для «завести двигун» та перемикання камери на вигляд від 1, 2, 3 особи.
Уазик з'являється неподалік бункера Сидоровича після активації action escape_dialog.buy_uaz вставленого в діалог до NPC. У мене уазик «видає» мій унікальний (тобто новий) продавець після діалогу з ним. Ось кінець мого діалогу із файлу dialogs_escape :
<phrase id = "8" > <text > escape_buy_uaz_8 </text > <action > escape_dialog.buy_uaz </action > <next > 9 </next > </phrase > <phrase id = "9" > <text > escape_buy_uaz_9 </text > </phrase > </phrase_list > </dialog >
Ось, власне, і все. І жодних змін у all.spawn .