| Как убрать/увеличить время для обычных квестов?: В файле 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)
Ищем файл inventory_new.xml и в нём меняем
<dragdrop_belt x="645" y="136" width="410" height="60" cell_width = "60" cell_height="60" rows_num="1" cols_num="5"/>
на
<dragdrop_belt x="590" y="118" width="410" height="104" cell_width = "52" cell_height="52" rows_num="2" cols_num="5"/>
что соответствует 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 (ветвление веток обычно очень большое поэтому я приведу только часть):
<dialog id="escape_trader_talk_info"> <precondition>escape_dialog.trader_has_talk_info_w r</precondition > <has_info>tutorial_end</has_info> <phrase_list> <phrase id="1"> <text>escape_trader_talk_info_1</text> <next>100</next> <next>99</next> <next>9995</next> </phrase>
… … … <phrase id="0"> <text>escape_trader_talk_info_0</text> <next>1</next> </phrase> </phrase_list> </dialog>
Здесь <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а закончена.
А далее идут конкретные фразы содержащие ссылки на вытекающие фразы
Фраза:
<phrase id="0"> <text>escape_trader_talk_info_0</text> <next>1</next> </phrase>
это основа ветки escape_trader_talk_info. (Вообще как я понял в любой основной ветке любого диалога фраза <phrase id="0"> будет основой из которой далее будет все вытекать)
<next>1</next> - это ссылка на вытекающую фразу <phrase id="1"> :
<phrase id="1"> <text>escape_trader_talk_info_1</text> <next>100</next> <next>99</next> <next>9995</next> </phrase>
В свою очередь <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>
надо
<dialog id="*** "> … </dialog> здесь <dialog id="*** "> … </dialog>
но
<dialog id="*** "> не здесь </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 И в зависимости что вам надо и где можете менять и изменять, тут всё предельно просто и понятно...
|