SoC. Авторазбор — S.T.A.L.K.E.R. Inside Wiki

SoC. Авторазбор

Материал из S.T.A.L.K.E.R. Inside Wiki

Версия от 10:01, 24 июня 2016; World Stalker (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Привет всем. Задался я как-то целью сделать в "СТАЛКЕРе" (версия 1.0004) машины, юзабельность которых зависит от наличия в инвентаре ГГ конкретного предмета, а именно ключей от данного транспорта. Спавн автотехники - пройденный этап, не буду заострять внимание, скажу лишь, что здесь привязал спавн машины к диалогу с коррумпированным майором на Кордоне. Открываем файл config\gameplay\dialogs_escape.xml, и находим строку:

 
<text>esc_bridge_soldiers_start_11</text>
 

и после неё добавляем:

 
<action>esc_modify.spawn_niva</action>
 

Выглядит будет так:

 
<phrase id="11">
<text>esc_bridge_soldiers_start_11</text>
<action>esc_modify.spawn_niva</action>
<next>12</next>
</phrase>
 

Прописывает ключи от Нивы в файлик config\misc\item.ltx таким образом:

 
;;;;;;;;;;;;--ключ от нивы--;;;;;;;;;;;;
[niva_keys]:identity_immunities
GroupControlSection	= spawn_group
discovery_dependency =
$spawn                          = "devices\quest_items\niva_keys"
class                           = II_ATTCH
cform                           = skeleton
visual                          = equipments\item_minipda.ogf ;иконка флешки
radius                          = 1
description                     = item_niva_key
inv_name                        = item_car_key
inv_name_short                  = item_car_key
inv_weight                      = 0
inv_grid_width                  = 1
inv_grid_height                 = 1
inv_grid_x                      = 11
inv_grid_y                      = 23
cost                            = 0
 

Пропишем русификацию названия и описания ключа от Нивы. В файле config\text\rus\string_table_enc_equipment.xml перед </string_table> напишем:

 
<string id="item_car_key">
<text>Ключ от Нивы</text>
</string>
<string id="item_niva_key">
<text>Ключ необходимый, чтоб открыть двери от автомобиля Нива</text>
</string>
 

Создаём файл config\creatures\vechicles.ltx, вписываем туда конфиг Нивы с пропиской логики:

 
[vehicle_niva]
GroupControlSection	= spawn_group
$spawn 			= "vehicles\veh_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			 		= 13000
script_binding      	= bind_physic_object.init
custom_data  = scripts\cars\niva_data.ltx ; путь до логики
 

Прописывает сам файл vechicles.ltx в начале файла system.ltx:

#include "creatures\vechicles.ltx"

После этого - создаём файл логики config\scripts\cars\niva_data.ltx, с содержимым:

 
[logic]
active = ph_car
 
[ph_car]
usable = {+actor_has_niva_key}
 

Добавил в config\gameplay\info_l01escape.xml требующуюся инфопорцию:

 
<info_portion id="actor_has_niva_key"></info_portion>
 

А дальше интересно - активировать проверку наличия у ГГ ключей додумался так: внедрил в скрипт scripts\escape_tasks.script с опросом инфопорций свои строки: Находим этот блок функции

 
if	not has_alife_info("tutorial_artefact_start") and
not has_alife_info("tutorial_artefact_gain") and 
actor:object("af_blood_tutorial") ~= nil 
then		
actor:give_info_portion("tutorial_artefact_gain")
end
 

Добавляем:

 
-----------------------moi_mod--------------------
if actor:object("niva_keys") ~= nil then
actor:give_info_portion("actor_has_niva_key")
elseif actor:object("niva_keys") == nil then 
actor:disable_info_portion("actor_has_niva_key")
return true
end
----------------------------------------------------
 


Получилось в итоге вот что: актёр нашёл (купил) ключи, сел в машину и поехал, а потерял или выбросил (продал, пропил и т.д.) - внутрь не попасть, как ни пытайся.

В моём моде: На Кордоне у майора Кузнецова(под мостом) спавнится "Нива" и забытые на ящике с выпивкой - ключи от неё. ГГ платит подвыпившим военным за проход, и тут же, подобрав ключи, садится в машину и исчезает, оставив майора со товарищи в большом (сравнительно) убытке. Второй вариант: Всё то же самое, только военные соображают быстро и открывают огонь на поражение, лишь только актёр садится в "Ниву". Хотя - если не тормозить - и тут успеваешь свинтить.

Сие реализовано так - cама Нива спавнится мной прямо за мостом. Создаём файл скрипта (scripts\esc_modify.script) и пишем в нём:

 
function spawn_niva()
alife():create("vehicle_niva", vector():set(58.205856,-2.393073,189.756988),345171,98)
-- ключи среди водки и закуски
alife():create("niva_keys", vector():set(61.393852,-0.143696695,154.954849),349686,97)
end 
 

В файле config\gameplay\info_l01escape.xml акция "открыть огонь" привязана к сообщению Торговца об удачном пересечении ж\д насыпи (при условии, естественно, что герой взял чужие ключи):

 
<info_portion id="esc_find_railroad_passage_done"> ;родная часть
<action>esc_modify.kill_thief</action> ;добавлено
</info_portion>                        ;родная часть
 

т. е. добавлена ссылка на скрипт esc_modify.script и функцию в нём kill_thief.

Пишем в файле (scripts\esc_modify.script) следующее:

 
function kill_thief()
if has_alife_info("actor_has_niva_key") then
db.actor:give_info_portion("esc_bridge_pass_fire")
end
end
 

Логично вот что: если ГГ не взял ключи (или взял, но спохватился и выбросил), то в спину ему никто не стрельнет, однако и машину уже не угнать.

Осталось последнее, прописать кнопку, чтоб завести движок Нивы. В файле config\ui\ui_keybinding.xml пишем в группе kb_grp_common следующее:

<command id="kb_turn_engine"				exe="turn_engine"/>

Выглядит будет так:

 
<group name="kb_grp_common">
<command id="kb_turn_engine"				exe="turn_engine"/>
<command id="kb_pause"						exe="pause"/>
<command id="kb_use"						exe="use"/>			
<command id="kb_screenshot"					exe="screenshot"/>
<command id="kb_quit"						exe="quit"/>
<command id="kb_console"					exe="console"/>
<command id="ui_mm_save_game"				exe="quick_save"/>
<command id="ui_mm_load_game"				exe="quick_load"/>
</group>
 

Теперь заходим в игру и назначаем клавишу, чтоб завести движок.

Вот и результат:

Ключ от нивы.jpeg

Авто Нива.jpeg

Файлы мода с отработанным примером по этому уроку : Скачать

Автор

Всем respect, ваш J.DLRN.

Привел статью в рабочее состояние - World_Stalker

Другие места
LANGUAGE