|
|
Строка 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/
| + | |