SoC. Авторазбор — различия между версиями — S.T.A.L.K.E.R. Inside Wiki

SoC. Авторазбор — различия между версиями

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

Перейти к: навигация, поиск
(Автор)
(qlxUHjBwCQmisGnXGsi)
Строка 1: Строка 1:
'''Всем привет.'''
+
comment1,
 
+
Задался я как-то целью сделать в "СТАЛКЕРе" (версия 1.004) машины, юзабельность которых
+
зависит от наличия в инвентаре ГГ конкретного предмета, а именно ключей от данного транспорта.
+
Спавн автотехники - пройденный этап,не буду заострять внимание,скажу лишь,что здесь привязал спавн машины к диалогу с коррумпированным майором на Кордоне. Файл '''dialogs_escape.xml''', строки:
+
 
+
<xml>
+
  <phrase id="11">
+
  esc_bridge_soldiers_start_11
+
  <action>esc_modify.spawn_niva</action> - моя добавка
+
  <next>12</next>
+
  </phrase>
+
</xml>
+
 
+
Прописал Ниву, прописал в файлик '''config\misc\item.ltx''' ключи от неё таким образом:
+
 
+
<pre>
+
;;;;;;;;;;;;--ключи от нивы--;;;;;;;;;;;;
+
[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
+
</pre>
+
 
+
Прописал в файл '''config\creatures\vehicles.ltx''',в блоке"Нивы" строчку вида:
+
 
+
<pre>
+
custom_data            = scripts\niva_data.ltx.
+
</pre>
+
 
+
Ясно, после этого - создал сам файл '''config\scripts\niva_data.ltx''', с содержимым:
+
 
+
<pre>
+
[logic]
+
active = ph_car
+
[ph_car]
+
usable = {+actor_has_niva_key}
+
</pre>
+
 
+
Добавил в '''info_l01escape.xml''' требующуюся инфопорцию:
+
 
+
<xml>
+
<info_portion id="actor_has_niva_key"></info_portion>
+
</xml>
+
 
+
А дальше интересно - активировать проверку наличия у ГГ ключей додумался так: внедрил в скрипт '''escape_tasks.script''' с опросом
+
инфопорций свои строки:
+
 
+
<lua>
+
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
+
----------------------------------------------------
+
.......и далее по оригиналу.
+
</lua>
+
 
+
(закомментил сообщение о находке ключей, так как оно является нам каждый раз после любой ближайшей загрузки уровня - не доработал:)
+
<br>Получилось в итоге вот что: актёр нашёл (купил) ключи, сел в машину и поехал, а потерял или выбросил (продал, пропил и т.д.) - внутрь не попасть, как ни пытайся.
+
 
+
В моём моде:
+
На Кордоне у майора Кузнецова(под мостом) спавнится "Нива" и забытые на ящике с выпивкой - ключи от неё. ГГ платит подвыпившим военным за проход, и тут же, подобрав ключи, садится в машину и исчезает, оставив майора со товарищи в большом (сравнительно) убытке.
+
Второй вариант:
+
Всё то же самое, только военные соображают быстро и открывают огонь на поражение, лишь только актёр садится в "Ниву". Хотя - если не тормозить - и тут успеваешь свинтить.
+
 
+
Сие реализовано так - cама Нива спавнится мной прямо за мостом:
+
 
+
<lua>
+
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
+
</lua>
+
 
+
В файле '''info_l01escape.xml''' акция "открыть огонь" привязана к сообщению Торговца об удачном пересечении ж\д насыпи (при условии, естественно, что герой взял чужие ключи):
+
 
+
<xml>
+
<info_portion id="esc_find_railroad_passage_done"> - родная часть
+
<action>esc_modify.kill_thief</action> - добавлено
+
</info_portion>                        - родная часть
+
</xml>
+
 
+
т. е. добавлена ссылка на несуществующий пока скрипт '''esc_modify''' и функцию в нём ''kill_thief''.
+
 
+
Скриптовая часть ('''scripts\esc_modify.script'''):
+
 
+
<lua>
+
function kill_thief()
+
if has_alife_info("actor_has_niva_key") then
+
db.actor:give_info_portion("esc_bridge_pass_fire")
+
end
+
end
+
</lua>
+
 
+
Логично вот что: если ГГ не взял ключи (или взял, но спохватился и выбросил), то в спину ему никто не стрельнет, однако и машину уже не угнать.
+
 
+
Времени тестировать особо нет.Прошу прощения за сырость исполнения, учитывая практически отсутствующие навыки программинга. Всё - благодаря статьям именитых моддеров на '''S.T.A.L.K.E.R Inside Wiki'''.
+
 
+
A1jsho  <a href="http://ammaawmmszhz.com/">ammaawmmszhz</a>, [url=http://dazjeqmuciqz.com/]dazjeqmuciqz[/url], [link=http://tjathnstanjz.com/]tjathnstanjz[/link], http://mhckxzqahpcs.com/
+

Версия 10:59, 20 мая 2011

comment1,

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