S.T.A.L.K.E.R. всегда ассоциировался с множеством возможностей, неопределенностью сюжета, игра дает вам ощущение свободы и безграничности ваших действий... Лост Альфа - мод без границ!
Новый сюжет о том, что было в начале игры. Как ученые пытались разгадать «загадку зоны» и куда же делась первая группа ученых с отрядом военных. Зона стала обрастать слухами, а правду узнаете лишь вы!
Вы прошли всю игру, но Вам хочется еще? Этот мод покажет вам, что произошло после окончания основного сюжета Чистого Неба, что будет с героями и куда вас затянет жажда познания Зоны!
Очередной мод, пройдя который, вы узнаете много нового про Зону и почему Стрелок так рвался к центру, что его тянуло туда, и как он умудрялся выживать в самых трудных испытаниях...
Теперь каждый ваш шаг будет влиять на исход боя, концовка игры представляет себе дерево и по какой из ветвей развития пойти, решать Вам. Вам придется думать над каждым своим шагом...
Вам надоело искать спрятанные вещи? Проходить сложные квесты? Или вы просто хотите себя почувствовать "повелителем зоны"? Тогда этот мод для вас, он открывает вам доступ ко всем предметам игры!
Учебник "Мануал по созданию модификаций (Ч.2)" для игры S.T.A.L.K.E.R.
Учебник "Мануал по созданию модификаций (Ч.2)" для игры S.T.A.L.K.E.R.
В файле gamedata\config\misc\task_manager.ltx найти и изменить все строки вида time = 86400
Чтобы совсем убрать лимит - просто закомментировать их (--) Как убрать intro-ролики в начале?: В свойствах ярлыка прописываем после пути к exe-шнику: -nointro Получиться должно что то вроде(это как у меня): "D:\Games\S.T.A.L.K.E.R. Shadow of Chernobyl\bin\XR_3DA.exe" -nointro
Как включить motion blur?: В свойствах ярлыка прописываем после пути к exe-шнику: -mblur В файле user.ltx(можно и в консоли) параметру r2_mblur присваиваем значение например 0.15 Работает только на DirectX 9.
Как увеличить время спринта?: В файле actor.ltx меняем параметр sprint_koef.
Как поменять кол-во жизни монстрам?: В файле m_*.ltx(где * - название монстра, например m_controller.ltx; находится в папке gamedata\config\creatures) меняем параметр health
Как повесить на пояс больше артефактов?: В файле system.ltx изменяем параметр max_belt с 5 на 10 (max_belt = 10)
что соответствует 10 артефактам. При желании поправив соответствующим образом файлы system.ltx и inventory_new.xml можно получить 12,14,16 и более слотов под артефакты.
Создание новых веток диалога: 1) Списки веток диалогов содержатся в файлах вида gamedata/config/gameplay/character_desc_*.xml
Это например: character_desc_zombied.xml character_desc_stalker.xml character_desc_g arbage.xml итд.
Файлы character_desc_*.xml можно сравнить со стволом дерева диалогов. В них перечисляется названия прикрепляемых веток диалогов
Например вот список веток диалога с Сидоровичем взятый из файла character_desc_escape.xml
<start_dialog>escape_trader_start_dialog</start_dialog> <actor_dialog>escape_trader_talk_info</actor_dialog> <actor_dialog>escape_trader_jobs</actor_dialog> <actor_dialog>tm_trader_dialog</actor_dialog> <actor_dialog>tm_trader_reward</actor_dialog> <actor_dialog>escape_trader_done_blockpost_box</actor_dialog>< br> В свою очередь каждая ветка диалога также может ветвится.
2) Ветвление веток прописывается уже в других файлах. Например ветвление веток диалога с Сидоровичем содержится в файле gamedata/config/gameplay/dialogs_escape.xml Возьмем оттуда к примеру ветвление ветки escape_trader_jobs (ветвление веток обычно очень большое поэтому я приведу только часть):
Здесь <precondition>…</precondition> - это проверка выполнения условия. Ветка появится в диалоге, только если условие выполняется. Конкретно <precondition>escape_dialog.trader_has_talk_info_w r</precondition> из ветки escape_trader_talk_info есть обращение к функции trader_has_talk_info_wr находящейся в файле скрипте gamedata/scripts/escape_dialog*****ipt
Функция выглядит так: function trader_has_talk_info_wr( trader, actor ) return true end
Насколько понимаю она возвращает true только в случае если мы разговариваем с trader_ом т.е. с Сидоровичем. Т.е проверкой условия <precondition>escape_dialog.trader_has_talk_info_w r</precondition> проверяется с кем ведется диалог, и если диалог ведется с Сидоровичем в ветке <dialog id="escape_trader_talk_info"> по крайней мере этим условием пропускается в списк реплик. Но для конкретной ветки может быть несколько precondition и других условий.
Далее <has_info>tutorial_end</has_info>Если я верно понимаю, это так же своего рода проверка условия В данном случае проверка на то закончена стадия tutorialа или нет. Т.е ветка допустится в список реплик если стадия tutorialа закончена.
А далее идут конкретные фразы содержащие ссылки на вытекающие фразы
это основа ветки escape_trader_talk_info. (Вообще как я понял в любой основной ветке любого диалога фраза <phrase id="0"> будет основой из которой далее будет все вытекать)
<next>1</next> - это ссылка на вытекающую фразу <phrase id="1"> :
В свою очередь <next>100</next>, <next>99</next>, <next>9995</next> это ссылки на фразы веточки растущие из фразы <phrase id="1">.
3) Текст каждой фразы содержится уже в четвертом файле. Для диалога с Сидоровичем тексты лежат в файле gamedata/config/text/rus/stable_dialogs_escape.xml
<string id="escape_trader_talk_info_0"> <text>Есть несколько вопросов.</text> </string> <string id="escape_trader_talk_info_1"> <text>Спрашивай, только я ведь всего не знаю. Сам понимаешь, сижу тут целыми днями, а жизнь - она вся там, снаружи, в Зоне. Могу рассказать о Зоне вообще, а немного могу о ближайших окрестностях, где сам ходил.</text> </string>
Эти строки содержат тексты для фраз <phrase id="0"> и <phrase id="1">
Итого диалоги разложены по 4 а то и более файлам.
Да кстати, путь по веткам может быть зацикленным если того требует диалог. Например так: <phrase id="0"> <text>…</text> <next>1</next> <next>2</next> </phrase> <phrase id="1"> <text>…</text> <next>11</next> <next>12</next> </phrase> <phrase id="11"> <text>…</text> <next>1</next> - Это возврат к фразе 1. (зацикливание) <next>111</next> </phrase>
Теперь пример практического применения того, о чем было сказано выше: Добавим в диалог с Сидоровичем ветку своего собственного изготовления.
Например такую: Меченый: Сидрыч а что это у тебя зеленые человечки, что по столу бегают, такие худые? Сидорович: Чего?!! Меченый: Ты их совсем, совсем не кормишь? Сидорович: В следующий раз, как пойдешь в зону, бери-ка вместо водяры побольше антирада. А то мало что таким перегаром дышишь, уже до зеленых человечков долечился… Шутник.
1) В файле gamedata/config/gameplay/character_desc_escape.xml в конце списка веток для trader_а суем свою ветку с произвольным названием. (например <actor_dialog>escape_trader_letat_gusi</actor_dialog>)
Т.е у нас получится так … <specific_character id="escape_trader" no_random = "1"> … … … <start_dialog>escape_trader_start_dialog</start_dialog> <actor_dialog>escape_trader_talk_info</actor_dialog> <actor_dialog>escape_trader_jobs</actor_dialog> <actor_dialog>tm_trader_dialog</actor_dialog> <actor_dialog>tm_trader_reward</actor_dialog> <actor_dialog>escape_trader_done_blockpost_box</actor_dialog>< br> <actor_dialog>escape_trader_letat_gusi</actor_dialog> </specific_character> … Записываем изменения и с файлом character_desc_escape.xml все.
2) Теперь берем файл gamedata/config/gameplay/dialogs_escape.xml
Диалогу: Меченый: Сидрыч а что это у тебя зеленые человечки, что по столу бегают, такие худые? Сидорович: Чего?!! Меченый: Ты их совсем, совсем не кормишь? Сидорович: В следующий раз, как пойдешь в зону, бери-ка вместо водяры побольше антирада. А то мало что таким перегаром дышишь, уже до зеленых человечков долечился… Шутник.
Который мы хотим реализовать будет соответствовать такая структура: <phrase id="0"> <text>escape_trader_ letat_gusi_0</text> <next>1</next> </phrase> <phrase id="1"> <text>escape_trader_ letat_gusi_1</text> <next>2</next> </phrase> <phrase id="2"> <text> escape_trader_ letat_gusi_2</text> <next>3</next> </phrase> <phrase id="3"> <text> escape_trader_ letat_gusi_3</text> </phrase>
условия наличия ветки в диалоге можно взять из ветки <dialog id="escape_trader_talk_info"> Т.е берем условия <precondition>escape_dialog.trader_has_talk_info_w r</precondition > и <has_info>tutorial_end</has_info> (Можно было конечно прописать в скрипте еще одно условие для ветки, чтоб она появилась только один раз, а потом больше не возникала. Но об этом как нибудь позже допишу.)
В итоге у нас получилась такая структура: <dialog id="escape_trader_letat_gusi"> <precondition>escape_dialog.trader_has_talk_info_w r</precondition > <has_info>tutorial_end</has_info> <phrase_list> <phrase id="0"> <text>escape_trader_letat_gusi_0</text> <next>1</next> </phrase> <phrase id="1"> <text>escape_trader_letat_gusi_1</text> <next>2</next> </phrase> <phrase id="2"> <text> escape_trader_letat_gusi_2</text> <next>3</next> </phrase> <phrase id="3"> <text> escape_trader_letat_gusi_3</text> </phrase> </phrase_list> </dialog>
Которую нужно вставить в любом месте между dialog id_шниками других веток в файле dialogs_escape.xml. Главное не промахнутся и засунуть именно между, а не внутрь одного из dialog id Все что находится между тегами <dialog id="***"> и </dialog> это внутенности конкретного dialog id Т.е совать наш <dialog id="escape_trader_letat_gusi"> …. </dialog>
После сохранения внесенных изменений с файлом dialogs_escape.xml все.
3) Теперь вбиваем сами текстовички в файле gamedata/config/text/rus/stable_dialogs_escape.xml
Т.е нам надо в файле stable_dialogs_escape.xml вставить такую конструкцию:
<string id="escape_trader_letat_gusi_0"> <text>Сидрыч а что это у тебя зеленые человечки, что по столу бегают, такие худые?</text> </string> <string id="escape_trader_letat_gusi_1"> <text>Чего?!!</text> </string> <string id="escape_trader_letat_gusi_2"> <text>Ты их совсем, совсем не кормишь?</text> </string> <string id="escape_trader_letat_gusi_3"> <text>В следующий раз, как пойдешь в зону, бери-ка вместо водяры побольше антирада. А то мало что таким перегаром дышишь, уже до зеленых человечков долечился… Шутник.</text> </string>
в любом месте между уже существующими string id
<string id="*** "> </string> сюда <string id="*** "> </string>
Но не внутрь одного из существующих string id <string id="*** "> не сюда </string>
После сохранения изменений, у нас все готово. Можно грузить игру и смотреть что получилось.
Оружие загораживает пол-экрана. Как это исправить?: В файле конфига выбранного оружия меняем: position = 0, -0.075, 0 ; было 0,0,0 zoom_offset = -0.112400,0.091800,-0.115000 ; было -0.112400,0.016800,-0.115000 Где найти файл user.ltx?: Для Windows XP в директории X:\Documents and Settings\All Users\ Общие документы \STALKER-SHOC Для Windows Vista в директории X:\Users\Public\Documents\STALKER-SHOC
Как изменить силу врагов?: В файле gamedata\config\creatures\actor.ltx найти строки hit_probability_gd_novice = 0.20 hit_probability_gd_stalker = 0.30 hit_probability_gd_veteran = 0.40 hit_probability_gd_master = 0.50 Они отвечают за вероятность попадания по вам при разных уровнях сложности.
Гармошка: Для возврата в игру губной гармошки, ищем в папке gamedata\scripts файл xr_kamp*****ipt и открываем его блокнотом. Далее ищем строку -- играть на гармошке . Сам скрипт выглядит так: -- играть на гармошке -- if npcbject("harmonica_a") then -- self.npc[npc_id].states["play_harmonica"] = true -- self.npc[npc_id].states["wait_harmonica"] = true -- self.kamp_states["pre_harmonica"] = true -- self.kamp_states["harmonica"] = true -- self.kamp_states["post_harmonica"] = true -- else self.npc[npc_id].states["play_harmonica"] = false self.npc[npc_id].states["wait_harmonica"] = false self.kamp_states["pre_harmonica"] = false self.kamp_states["harmonica"] = false self.kamp_states["post_harmonica"] = false
-- end
В данном случае знак -- означает, что строки скрипта игра не использует, а просто пропускает их, переходя к следующей части. Значит нужно убрать знак – из тех строк, которые нам нужны.
Должно получится:
-- играть на гармошке
if npcbject("harmonica_a") then self.npc[npc_id].states["play_harmonica"] = true self.npc[npc_id].states["wait_harmonica"] = true self.kamp_states["pre_harmonica"] = true self.kamp_states["harmonica"] = true self.kamp_states["post_harmonica"] = true else self.npc[npc_id].states["play_harmonica"] = false self.npc[npc_id].states["wait_harmonica"] = false self.kamp_states["pre_harmonica"] = false self.kamp_states["harmonica"] = false self.kamp_states["post_harmonica"] = false end Всё, теперь можете запускать игру и наслаждаться.*
Как менять скорострельность и удобность оружия?: В папке gamedata/config/weapons в файлах конфигурации оружия ищи
control_inertion_factor
чем меньше параметр - тем выше удобство. и rpm - скорострельность.
Как положить оружие в другой слот?: В папке gamedata/config/weapons в файлах конфигурации оружия ищи SLOT и меняй на 1 (вместо ножа) или 2 (пистолетный слот)
Добавление новых опций в меню игры?: Открываем файл gamedata\config\ui\ui_keybinding.xml. В нём находим строку <group name="kb_grp_common"> и после неё пишем: <command id="kt_turn_engine" exe="turn_engine"/> <command id="kb_cam_1" exe="cam_1"/> <command id="kb_cam_2" exe="cam_2"/> <command id="kb_cam_3" exe="cam_3"/> Таким образом в меню игры добавляются 4 новых опции, а именно: смена камеры и кнопка включения двигателя. Также можно добавлять сюда др. клавиши(если знать консольные команды)
Скрипты дверей: Покажу вам на примере, как открыть дверь в саркофаге без дешифра) мы просто сделаем дверь открытой по умолчанию, этот трюк можно использовать в любом направлении, в том числе и для новых квестов Идём в gamedata\config\scripts и ищем скрипт нужной двери или объекта, нам нужна дверь в саркофаге и это sar_door.ltx Вот вам скрипт с моими комментариями, мои комментарии после символа ;, в вашем скрипте они не нужны, так что удалите их если будете копировать отсюда...
[logic] ;Основное действие active = ph_door@locked ; При нажатии кнопки "Действия" выполняется скрипт [ph_door@locked]
[ph_door@locked] ; То что выполняется сейчас locked = true ; Закрыто на замок, значение правда ("Закрыто", при нажатии на кнопку действия ничего не произойдёт) closed = true ; Прикрыта, правда ("Прикрыта", при нажатии на кнопку действия дверь октроется) tip_open = tip_door_coded ; Всплывающая подсказка "Дверь закодирована" on_info = {=actor_has_decoder} ph_door@coded ; При нажатии на кнопку действия идёт проверка есть ли декодер
[ph_door@coded] ; Если есть декодер то... locked = true ;Закрыто, правда closed = true ;Прикрыто, правда tip_open = tip_door_decode ; Всплывающая подсказка "Декодировать" on_info = {!actor_has_decoder} ph_door@locked on_use = ph_door@decoding %+sar_access_decoding% ; При начале декодирования, пошёл процесс декодирования и выполняется скрипт sar_access_decoding
[ph_door@decoding] ; В процессе декодирования locked = true closed = true tip_open = tip_door_decoding on_info = {+sar_finish_decoding} ph_door@unlocked ; Завершение скрипта sar_finish_decoding и выполнение ph_door@unlocked
[ph_door@unlocked] ; Дверь разкодирована и открыта locked = false closed = false show_tips = false
Если мы хотим увидеть правдивые концовки, но мы уже в саркофаге и у нас нет дешифра, то мы просто можем изменить везде locked = false на true closed = false на true И в зависимости что вам надо и где можете менять и изменять, тут всё предельно просто и понятно...