Задался я как-то целью сделать в "СТАЛКЕРЕ"(версия 1.004) машины, юзабельность которых зависит от наличия в инвентаре ГГ конкретного предмета, а именно: ключей от данного транспорта. Спавн автотехники - пройденный этап,не буду заострять внимание,скажу лишь,что здесь привязал спавн машины к диалогу с коррумпированным майором на Кордоне.Файл dialogs_escape.xml,строки:  
Код
 <phrase id="11"> 
     esc_bridge_soldiers_start_11 
    <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_s 
 inv_weight                       = 0 
 inv_grid_width                    = 1 
 inv_grid_height                  = 1 
 inv_grid_x                    = 11 
 inv_grid_y                   = 23 
 cost                             = 0
 Прописал в файл config\creatures\vehicles.ltx ,в блоке"Нивы" строчку вида :  
Код
custom_data             = scripts\niva_data.ltx
 Ясно, после этого - создал сам файл config\scripts\niva_data.ltx, с содержимым :  
Код
[logic] 
 active = ph_car 
 [ph_car] 
 usable = {+actor_has_niva_key}
 Добавил в info_l01escape.xml требующуюся инфопорцию:  
Код
<info_portion id="actor_has_niva_key"></info_portion>
 А дальше интересно: активировать проверку наличия у ГГ ключей додумался так: внедрил в скрипт escape_tasks.script с опросом инфопорций свои строки:  
Код
function proceed() 
 local actor = db.actor 
 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     not has_alife_info("actor_has_niva_key") and 
 actor:object("niva_keys") ~= nil 
 then 
 actor:give_info_portion("actor_has_niva_key") 
       --news_manager.send_tip(db.actor, "find_keys_info") 
 end 
 if  actor:object("niva_keys")== nil then 
 actor:disable_info_portion("actor_has_niva_key") 
 end 
 ---------------------------------------------------- 
 .......и далее по оригиналу.
 (закомментил сообщение о находке ключей ,так как оно является нам каждый раз после любой ближайшей загрузки 
 уровня - не доработал:) 
 Получилось в итоге вот что: актёр нашёл(купил) ключи ,сел в машину и поехал, а потерял или выбросил (продал, пропил и т.д.) - внутрь не попасть, как ни пытайся. 
 В моём моде: На Кордоне у майора Кузнецова(под мостом) спавнится "Нива" и забытые на ящике с выпивкой - ключи от неё. ГГ платит подвыпившим военным за проход ,и тут же ,подобрав ключи, садится в машину и исчезает, оставив майора с товарищами в большом (сравнительно) убытке. 
 Второй вариант: Всё то же самое, только военные соображают быстро и открывают огонь на поражение, лишь только актёр садится в "Ниву". Хотя - если не тормозить - и тут успеваешь свинтить. 
 Сие реализовано так: 
 сама Нива спавнится мной прямо за мостом:  
Код
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
 в файле info_l01escape.xml акция "открыть огонь" привязана к сообщению Торговца об удачном пересечении ж\д насыпи(при условии, естественно, что герой взял чужие ключи):  
Код
<info_portion id="esc_find_railroad_passage_done"> - родная часть 
 <action>esc_modify.kill_thief</action> - добавлено 
 </info_portion>                        - родная часть
 , т. е. добавлена ссылка на несуществующий пока скрипт esc_modify и функцию в нём 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
 Логично вот что: если ГГ не взял ключи(или взял, но спохватился и выбросил), то в спину ему никто не стрельнет, однако и машину уже не угнать.