Сповіщення
Очистити все

SoC. Техніка у грі


Ранг:
Майстер
Роль:
Гість
Записи:
752
Приєднався:
2 роки тому
 

Техніка у грі

Як відомо з безлічі вирізаної з гри особливо запам'ятався транспорт. Зараз ми повернемо один «примірник» усім відому «Ниву». Для «воскресіння» знадобиться 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 .


   
Цитата