SoC. Техника в игре — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
(→Техника в игре) |
(оформление, орфография) |
||
(не показаны 4 промежуточных версий 4 участников) | |||
Строка 1: | Строка 1: | ||
==Техника в игре== | ==Техника в игре== | ||
+ | |||
Как известно из множества вырезанного из игры особо запомнился транспорт. | Как известно из множества вырезанного из игры особо запомнился транспорт. | ||
− | Сейчас мы вернём один | + | Сейчас мы вернём один «экземпляр» всем известную «Ниву». |
− | Для | + | Для «воскрешения» понадобится 2 файла: |
− | < | + | <br>'''gamedata/config/creatures/vechicles.ltx''' |
− | + | <br>''gamedata/spawns all.spawn''' | |
− | + | А также текстовый редактор и '''ACDC''', входящий в состав '''X-ray Game asset tools'''. | |
− | '''1.''' | + | '''1.''' Распакуем файл '''all.spawn''' при помощи программы от '''bardak''.' Как распаковывать написано в '''readme.txt''', поэтому описывать данный этап не буду. |
− | '''2.''' | + | '''2.''' Находим файл '''alife_l01_escape.ltx''' как видно там структура, что-то вроде этого: |
− | < | + | <ini>[0] |
; cse_abstract properties | ; cse_abstract properties | ||
section_name = breakable_object | section_name = breakable_object | ||
Строка 26: | Строка 27: | ||
; cse_alife_object_breakable properties | ; cse_alife_object_breakable properties | ||
− | health = 1</ | + | health = 1</ini> |
− | + | То есть очень простая… | |
− | '''3.''' | + | '''3.''' Заменять имеющееся не будем, а просто в самом конце напишем: |
− | < | + | <ini>[870] |
; cse_abstract properties | ; cse_abstract properties | ||
section_name = m_car | section_name = m_car | ||
Строка 48: | Строка 49: | ||
; cse_alife_object_breakable properties | ; cse_alife_object_breakable properties | ||
− | health = 1 </ | + | health = 1 </ini> |
− | + | Где ''niva'' - это секция в '''ltx'''-файле, которая будет использоваться для параметров объекта, | |
− | а | + | а ''visual_name'' - это расположение модели. |
− | + | ''health = 1'', следовательно, здоровье. | |
− | + | Разделы ''position'' и ''direction'' взяты с «долгоблуждающего» по сети файла '''all.spawn''', где автомобили находились прямо возле выхода от Сидоровича. | |
− | Для выбора других координат можно использовать команду консоли | + | Для выбора других координат можно использовать команду консоли ''rs_stats = 1''. |
− | После чего сохраняем изменения, компилируем all.spawn, | + | После чего сохраняем изменения, компилируем '''all.spawn''', помещаем его в '''gamedata\spawns'''. |
− | Теперь нам понадобится файл vechicles.ltx в gamedata/config/creatures | + | Теперь нам понадобится файл '''vechicles.ltx''' в '''gamedata/config/creatures''' |
− | + | Открываем его и дописываем там: | |
− | < | + | <ini>[niva] |
GroupControlSection = spawn_group | GroupControlSection = spawn_group | ||
$spawn = "vehicles\niva" | $spawn = "vehicles\niva" | ||
Строка 66: | Строка 67: | ||
ef_equipment_type = 3 | ef_equipment_type = 3 | ||
ph_mass = 100000 | ph_mass = 100000 | ||
− | script_binding = bind_physic_object.init </ | + | script_binding = bind_physic_object.init </ini> |
− | Всё, начинаем новую игру, после выхода от Сидоровича вы увидите Ниву, для того чтобы её завести | + | Всё, начинаем новую игру, после выхода от Сидоровича вы увидите Ниву, для того чтобы её завести наберите в консоли ''bind turn_engine kb''. По этому принципу можно заспавнить авто на любой локации. |
'''Еще один способ воскресить транспорт''' | '''Еще один способ воскресить транспорт''' | ||
Строка 73: | Строка 74: | ||
Все это хорошо, но есть еще один простой способ воскресить вырезанный из игры транспорт. | Все это хорошо, но есть еще один простой способ воскресить вырезанный из игры транспорт. | ||
Первое. | Первое. | ||
− | Для начала нам нужно файл '''vehicles.ltx''' (находится в creatures) внести в файл ''' | + | Для начала нам нужно файл '''vehicles.ltx''' (находится в creatures) внести в файл '''system.ltx.''' |
− | Вот так: | + | Вот так: |
<code> | <code> | ||
#include "creatures\vehicles.ltx" | #include "creatures\vehicles.ltx" | ||
</code> | </code> | ||
− | То есть добавить его в число прочих файлов (по крайней мере у меня он не был туда внесен), откуда игра будет брать | + | То есть добавить его в число прочих файлов (по крайней мере у меня он не был туда внесен), откуда игра будет брать |
необходимую информацию. | необходимую информацию. | ||
Строка 84: | Строка 85: | ||
Добавить в файл '''vehicles.ltx''' полный конфиг машины. Например уазика. | Добавить в файл '''vehicles.ltx''' полный конфиг машины. Например уазика. | ||
Вот готовый пример: | Вот готовый пример: | ||
− | < | + | <ini> |
[vehicle_uaz] | [vehicle_uaz] | ||
GroupControlSection = spawn_group | GroupControlSection = spawn_group | ||
Строка 103: | Строка 104: | ||
ph_skel_shot_up_factor = 0.25 | ph_skel_shot_up_factor = 0.25 | ||
ph_after_death_velocity_factor = 0.75 | ph_after_death_velocity_factor = 0.75 | ||
− | </ | + | </ini> |
− | Характеристики машин можно менять в файлах лежащих в '''models\vehicles'''. | + | Характеристики машин можно менять в файлах лежащих в '''models\vehicles'''. |
Третье. | Третье. | ||
Создать скриптовую функцию по спавну машины. | Создать скриптовую функцию по спавну машины. | ||
Мой пример: | Мой пример: | ||
− | < | + | <lua> |
function buy_uaz (position, total) | function buy_uaz (position, total) | ||
alife():create("vehicle_uaz",vector():set(-245.01445007324,-18.792783737183,-107.14138031006),12480,8) | alife():create("vehicle_uaz",vector():set(-245.01445007324,-18.792783737183,-107.14138031006),12480,8) | ||
end | end | ||
− | </ | + | </lua> |
− | Название | + | Название функции — ''buy_uaz'' — может быть любое. Саму функцию надо положить в какой-нибудь скриптовый файл в папке '''scripts'''. |
− | У меня она лежит в '''escape_dialog.script'''. | + | У меня она лежит в '''escape_dialog.script'''. |
Для того, чтобы можно было заводить машину не залезая в консоль открываем файл '''ui_keybinding''' (находится в '''config\ui''') | Для того, чтобы можно было заводить машину не залезая в консоль открываем файл '''ui_keybinding''' (находится в '''config\ui''') | ||
и вписываем туда в секцию | и вписываем туда в секцию | ||
− | < | + | <xml> |
<group name="kb_grp_common"> | <group name="kb_grp_common"> | ||
− | </ | + | </xml> |
это: | это: | ||
− | < | + | <xml> |
<command id="kb_cam_1" exe="cam_1"/> | <command id="kb_cam_1" exe="cam_1"/> | ||
<command id="kb_cam_2" exe="cam_2"/> | <command id="kb_cam_2" exe="cam_2"/> | ||
<command id="kb_cam_3" exe="cam_3"/> | <command id="kb_cam_3" exe="cam_3"/> | ||
<command id="kb_turn_engine" exe="turn_engine"/> | <command id="kb_turn_engine" exe="turn_engine"/> | ||
− | </ | + | </xml> |
− | Теперь у нас в меню управления можно назначить клавиши для | + | Теперь у нас в меню управления можно назначить клавиши для «завести двигатель» и переключение камеры на вид от 1, 2, 3 лица. |
Уазик появляется неподалеку от бункера Сидоровича после активации action '''escape_dialog.buy_uaz''' вставленного в диалог к NPC. | Уазик появляется неподалеку от бункера Сидоровича после активации action '''escape_dialog.buy_uaz''' вставленного в диалог к NPC. | ||
− | У меня уазик | + | У меня уазик «выдает» мой уникальный (то есть новый) торговец после диалога с ним. |
Вот конец моего диалога из файла '''dialogs_escape''': | Вот конец моего диалога из файла '''dialogs_escape''': | ||
− | < | + | <xml> |
<phrase id="8"> | <phrase id="8"> | ||
<text>escape_buy_uaz_8</text> | <text>escape_buy_uaz_8</text> | ||
Строка 148: | Строка 149: | ||
</phrase_list> | </phrase_list> | ||
</dialog> | </dialog> | ||
− | </ | + | </xml> |
− | Вот собственно и все. И никаких изменений в all.spawn. | + | Вот собственно и все. И никаких изменений в '''all.spawn'''. |
Текущая версия на 19:24, 3 августа 2013
Техника в игре
Как известно из множества вырезанного из игры особо запомнился транспорт.
Сейчас мы вернём один «экземпляр» всем известную «Ниву».
Для «воскрешения» понадобится 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.9341430664063 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 = 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_u_01.ogf ef_equipment_type = 3 ph_mass = 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\veh_uaz_u_01.ogf ef_equipment_type = 3 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.0 ph_skel_shot_up_factor = 0.25 ph_after_death_velocity_factor = 0.75
Характеристики машин можно менять в файлах лежащих в models\vehicles.
Третье. Создать скриптовую функцию по спавну машины. Мой пример:
function buy_uaz (position, total) alife():create("vehicle_uaz",vector():set(-245.01445007324,-18.792783737183,-107.14138031006),12480,8) end
Название функции — 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.
Дополнил erlik
Авторы
Статья создана: