Источник: "Сборник по модостроению"
Ссылка на источник: http://gsc-mod.ucoz.ru/
1. Добавление звуков в игру Как правильно вставить свои звуки в игру: Во первых требуется звуковой редактор, можно любой ( я использую TotalAudioConverter). Нужно
перевести ваши mp3 файлы в WAV формат 44100Гц, Моно, 16 бит, желательно
сохранить в отдельную папку,(для последующих экспериментов). Почему сразу нельзя сохранить звук в формате ogg 44100Гц, Моно, 16 бит, в принципе можно,
вот только в комментах Ogg файла должны прописываться параметры
распространения звука по игровому миру. Именно по этой причине
собственные звуки в игре практически не слышно на определенных
расстояниях. Теперь нам понадобится X-Ray SDK – официальный пакет разработчика для игры S.T.A.L.K.E.R. Открываем меню Пуск/программы/X-Ray SDK жмём Map X-Drave для создания диска X. Заходим
на диск Х и в папку rawdata/sounds копируем наши файлы в формате Wav(
советую сразу переименовать файлы на те которые хотите заменить,
геммороя будет меньше, если что-то не получится) Потом запускаем
Level Editor, справа вверху находим меню Звуки (или Sounds, у кого
английская версия) жмём и выбираем Звуковой редактор Там увидим наши файлы, выбираем файл и изменяем следующие параметры: Quality -0,00 изменяет битрейт файла,игра поддерживает до 80Kбит/c (ставьте не больше 0,4) MinDist = 1.00 - расстояние, с которого звук начнет затухать (практически это и есть громкость звука) MaxDist = 300.0 - максимальное расстояние, на котором звук будет слышен ГГ MaxAIDist = 300.0 - максимальное расстояние, на котором звук будут слышать NPC BaseVolume = 1.0 - громкость Дальше надо выбрать к какому типу отнести звук: приведу только нужные Game Type: - undefined – неопределенный, на них NPC не реагируют - Weapon shooting – выстрел оружия - NPC dying - смерть NPC (Здесь значение MaxAIDist надо поставить поменьше,в игре стоит 40м, из-за этого нельзя втихую перебить тех-же бандитов не поднимая шума) - NPC injuring - ранение NPC - NPC talking - разговор NPC - Anomaly idle – звуки аномалий - World ambient - звуки окружающего мира Теперь жмём ОК и ждём пока закончится синхронизация. Если всё получилось правильно идём на диск Х в папку gamedata\sounds там забираем готовые ogg файлы и вставляем их в игру. Удачного модинга!
2. Новые диалоги Создание новых веток диалогов Теория
1) Списки веток диалогов содержатся в файлах вида gamedata/config/gameplay/character_desc_*.xml
Это, например:
character_desc_zombied.xml character_desc_stalker.xml character_desc_garbage.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>
В свою очередь каждая ветка диалога также может ветвится.
2) Ветвление диалогов прописывается уже в других файлах.
Например,
ветвление диалога с Сидоровичем содержится в файле
gamedata/config/gameplay/dialogs_escape.xml Возьмем оттуда, например,
ветвление escape_trader_jobs.
Ветвление имеет довольно большие масштабы, поэтому приведу только часть: <dialog id="escape_trader_talk_info"> <precondition>escape_dialog.trader_has_talk_info_wr</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_wr</precondition>
из ветки escape_trader_talk_info - это обращение к функции
trader_has_talk_info_wr, находящейся в файле скрипте
gamedata/scripts/escape_dialog.script
Функция выглядит так: function trader_has_talk_info_wr( trader, actor ) return true end
То
есть, судя по его структуре,
<precondition>escape_dialog.trader_has_talk_info_wr</precondition>
выполняется всегда, т.к. функция всегда возвращает истину и <dialog
id="escape_trader_talk_info"> пропускается в списк реплик.
Но для конкретной ветки может быть несколько precondition и других условий.
Далее,
<has_info>tutorial_end</has_info> - это еще одна проверка,
на этот раз на наличие у игрока так называемых infoportions, выдаваемы в
процессе ключевых диалогов. В данном случае это проверка на то,
закончена ли определенная стадия туториала, или нет. Т.е. ветка
допустится в список реплик если стадия туториала закончена.
Более детально мы это разберем в конце статьи.
А далее идут конкретные фразы, содержащие ссылки на вытекающие фразы, например: <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">
Итого диалоги разложены по трем, а то и более файлам.
Да кстати, путь по веткам может быть зацикленным, если того требует диалог. Например так: <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> <actor_dialog>escape_trader_letat_gusi</actor_dialog> </specific_character> …
Записываем изменения, с этим файлом пока всё.
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_wr</precondition>
и <has_info>tutorial_end</has_info>. Можно было, конечно,
прописать в скрипте еще одно условие для ветки, чтобы она появилась
только один раз, а потом больше не возникала. Но об этом как-нибудь
позже.
В итоге у нас получилась такая структура: <dialog id="escape_trader_letat_gusi"> <precondition>escape_dialog.trader_has_talk_info_wr</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.
После сохранения внесенных изменений с файлом 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. После сохранения
изменений, у нас все готово. Можно загружать игру и смотреть что
получилось. Дополнительно
Внимание! После патча 1.002 данный урок перестал работать. Причина - со вторым патчем несовместимо это условие: <precondition>escape_dialog.trader_has_talk_info_wr</precondition>
Дело в том, что во втором патче из файла escape_dialog.script была удалена функция: function trader_has_talk_info_wr( trader, actor ) return true end
Можно
либо записать эту функцию обратно в escape_dialog.script, либо
использовать другие более-менее подходящие условия, например: <precondition>escape_dialog.trader_alredy_give_job</precondition> _____________________________________________________ А сейчас небольшой мануал по модификации Shadow of Chernobyl-Далее материал взят не с http://gsc-mod.ucoz.ru/ Мануал по созданию модификаций для начинающих!
Если вы не знаете, как сделать невидимые аномалии, как изменить силу
оружия, как изменить носимый вес и пр., то вы пришли по адресу. В этой
статье мы рассмотрим структуру файлов и папок Сталкера, а также вы
сможете научиться создавать свои собственные модификации.
Вступление:Как вы наверно заметили, в папке с игрой содержатся несколько
файлов типа gamedata.dbN , где N – это число или буква. Это игровые
архивы, в которые запакованы все файлы конфигураций, видеоролики,
музыка, звуки, скрипты и прочее. Можно их править HEX-editor’ом, но
лучше скачать специальную утилитку STALKER_Data_Unpacker и распаковать в
отдельную папку(с именем gamedata, позже поймёте почему) их содержимое.
Вот после этого можно начать разгребать весь тот мусор, который вы
извлекли. Структура файлов и папок: Рассмотрим, что-же содержится в папке gamedata: Папка ai – в ней содержатся файлы типа *.efd, через которые очевидно управляется искусственный интеллект тех же npc например. Папка anims – здесь и так всё понятно, игровая анимация, а также эффекты камеры. Папка config содержит в себе многие игровые параметры, к ней мы ещё вернёмся. Папка levels – это игровые уровни, ака локации, на которые поделена игра (как карты в CS) Папка meshes – игровые модели, в формате .ogf Папка scripts – скрипты Папка shaders – шейдеры, для двух рендеров(DX8 и 9) Папка sounds – звуки и музыка, кот. используются в игре. Формат .ogg* Папка spawns – отвечает за самую ужасную вещь в игре – респаун противников и др. людей, животных. Папка textures – в ней содержаться текстуры домов, оружия, монстров и др. Формат - .dds(DirectDraw Surface Image) Файлы: game.graph, gamemtl.xr, lanims.xr, particles.xr, resource.h, senvironment.xr, shaders.xr, shaders_xrlc.xr, stalkergame.inf.
В звуках, кстати, можно найти много интересного, например: в папке
soundscar содержатся звуки машин(которых в игре нет), а
soundsmusicharmonica_1.ogg – файл губной гармошки. Ах да, чуть не забыл,
самый главный лол, это файл soundscartrabantnoise.ogg Введение в модинг:Именно с папкой config придётся работать для редактирования многих параметров игры. Но начнём сначала:
Перед тем, как начать редактирование файлов игры, нужно в каталог
Сталкера поместить ту самую папку gamedata, в которую были извлечены
игровые файлы. *Все файлы нам не понадобятся, поэтому можно
оставить только папки config, scripts(а конкретно файл
se_respawn*****ipt), textures, sounds, а всё остальное удалить(а можно и
не удалять) Также хочу заметить, что если распаковать все архивы .dbN в папку с игрой, то это может дать несколько дополнительных FPS.
Текстуры:В папке textures лежат файлы формата .dds, которые можно
открыть программой Nero PhotoSnap Viewer(входит в состав NERO7) например
или windows texture viewer (63кб), и там же отредактировать по вкусу.
Так, например, существует мод, уменьшающий размер PDA Меченого. Текстура
PDA находится по адресу texturesuiui_pda.dds. Скрипты:
se_respawn*****ipt – файл, отвечающий за респаун. Время респауна можно
уменьшить, путём небольших изменений в этом файле. Он открывается
обычным блокнотом(notepad). Ищем в нём строку idle_time:setHMSms( 0, 0, 0, math.random(self.idle_spawn_min, self.idle_spawn_max)*1000) и меняем её на idle_time:setHMSms( math.random(X, Y), 0, 0, math.random(self.idle_spawn_min, self.idle_spawn_max)*1000) где X и Y - числа, задают диапазон случайной переменной в часах отвечающей за респаун.
Звуки и музыка:Любой файл в папке sounds можно заменить на другой, но
при этом нужно сохранить все параметры звукового файла, который был
использован в игре. Например, чтобы заменить музыку в приёмнике у
Сидоровича, нужно файл soundsscriptsmagnitofonmagnitofon_2.ogg, заменить
на любой другой.(У оригинального файла винамп мне выдал свойства: Average bitrate : 60 kbps Nominal bitrate : 80 kbps Channels : 1 Sampling rate: 44100 Hz. Config/Weapons:
Параметры оружия вы можете найти в папке configweapons, файлы типа
w_ak74.ltx открываются тоже блокнотом. Разберём содержимое файла
например w_groza.ltx Во первых стоит обратить внимание на значение
пременной(буду их так называть) cost, это цена оружия, т.е. сколько
гроза будет стоить у продавца. Переменная weapon_class означает, к какому классу относится оружие, в данном случае - assault_rifle. ammo_limit – лимит боеприпасов(в игре по-моему не используется) ammo_mag_size – размер магазина. Можно поставить например 900, тогда о перезарядке можно совсем не вспоминать. ammo_class – класс патронов, используемых оружием. Здесь ammo_9x39_pab9, ammo_9x39_sp5, ammo_9x39_ap. hit_power – сила оружия. Чем больше, тем лучше silencer_hit_power - сила оружия, когда на него одет глушитель. misfire_probability - вероятность осечки при максимальном износе. condition_shot_dec - увеличение износа при каждом выстреле. visual – модель оружия. zoom_enabled - поддерживается ли оптика. Config/Сreatures: actor.ltx – параметры главного героя. В этой же папке находятся файлы с параметрами npc, монстров и пр. Рассмотрим некоторые переменные на примере actor.ltx visual – модель персонажа. max_walk_weight - максимальный вес, при достижении которого игрок перестает двигаться. pickup_info_radius – радиус от ГГ, в котром над предметами выводятся их названия. camera_height_factor – высота ГГ. По умолчанию стоит 0.85, но можно увеличить рост ГГ до 0.95 например. disp_base – разброс. Если уменьшать, то и разлёт уменьшается соответственно. wound_incarnation_v - скорость заживления раны. cant_sprint_power_begin - порог силы меньше которого актер не может бежать в спринте. hit_probability_gd_novice hit_probability_gd_stalker hit_probability_gd_veteran hit_probability_gd_master
Эти строчки отвечают за вероятность попадания по вам, при разных
уровнях сложности. Хотите чтобы враги стреляли не очень метко,
уменьшайте значения. Также в файле присутсвуют комментарии на русском языке, так что разобраться в остальных переменных не составит труда. Config/System.ltx: start_blood_size - размер раны чтоб начала капать кровь. stop_blood_size - размер раны чтоб кровь остановилась. max_weight – вес, с которым ГГ может бежать. Config/Misc.ltx: В дополнение к конфигам оружия: cвойства патронов находятся в файле weapons.ltx, а бронежилетов – в outfit.ltx. Свойства артефактов находятся в файле artefacts.ltx и файлах zone_ART.ltx, предметов – items. ltx, где ART – название артефакта(например zone_gravi.ltx). Параметры артефактов: health_restore_speed - скорость восстановления здоровья (0.0001 = 100%)
radiation_restore_speed - скорость накопления радиации (0.0004 = 4).
Если поставить отрицательное число, то артефакт будет ускорять выведение
радиации. idle_particles – если закоментить её символами «--« -,
то аномалия исчезнет. Чтобы отключить звуковое оповещение, то находим
строку visible_by_detector и меняем on на off. Иммунитеты: strike_immunity - удар. shock_immunity - электрошок. chemical_burn_immunity - химический ожог. telepatic_immunity - телепатия. radiation_immunity - радиация. wound_immunity - разрыв. explosion_immunity - взрыв. fire_wound_immunity - огнестрел. items.ltx: Параметры предметов:
В этом файле в квадратных скобках написан тот предмет, чьи параметры
идут ниже, за квадр. скобками. Например: [kolbasa]:identity_immunities. Параметры на примере колбасы: class – к какому классу принадлежит предмет. visual – модель. cost – цена. eat_health – сколько восстанавливает здоровья.(если будет 0, то колбаса лечить не будет.) eat_power - сколько восстанавливает силы. eat_radiation - сколько выводит/или добавляет радиации. (Насчёт этого не уверен, надо тестить.) inv_weight – вес предмета. Outfit.ltx: Параметры костюмов: actor_visual – модель костюма. inv_weight – вес костюма. cost – цена костюма. коэффициенты иммунитета самого костюма: burn_immunity см. коэффиц. ... fire_wound_immunity ; NO RESISTANCE burn_protection - коэффициент защиты от огня strike_protection - коэффициент защиты от пуль shock_protection - коэффициент защиты от молний wound_protection - коэффициент защиты от кровотечений (?) radiation_protection - коэффициент защиты от радиации telepatic_protection - коэффициент защиты от телепатии chemical_burn_protection - коэффициент защиты от хим. ожогов. explosion_protection - коэффициент защиты от взрыва fire_wound_protection - коэффициент защиты от кровотечений(от огня)
nightvision_sect – тип ночного видения(плохой/хороший). Если ПНВ нету,
то строку добавить, если его нужно убрать, строку закомментируйте(--).
Торговцы:Вещи, которые продают торговцы можно
отредактировать(добавить/убрать) в файлах с именем trade_YYY.ltx[.B],
где YYY[.B] – это имя торговца(например trade_barman.ltx[.B]) Итак, поехали:
Структура файла на самом деле очень проста, под зачком ; прописаны сами
предметы, а после него – комментарий(чтоб понятно было). Например
;Аммуниция. В квадратные скобки заключены([barman_generic_buy]), как бы сказать, "условия”. Лучше показать на примере:
В самом начале(практически) файла trade_barman.ltx идёт строка
содержания [barman_generic_buy], т.е. она означает, что ниже прописанные
предметы торговец может купить. Сами предметы например: ;Артефакты af_medusa = 1, 0.3 af_cristall_flower = 1, 0.3 af_night_star = 1, 0.3 af_vyvert = 1, 0.3 af_gravi = 1, 0.3 af_gold_fish = 1, 0.3 af_blood = 1, 0.3 af_mincer_meat = 1, 0.3 или ;ADDONS wpn_addon_scope = 0.7, 0.2 wpn_addon_scope_susat = 0.7, 0.2 Посмотрим какие ещё "условия” содержит этот файл и их значение: [supplies_start] - начальный ассортимент [supplies_after_darkvalley] - ассортимент, после выполнения квеста в тёмной долине [supplies_after_brain] - ассортимент, после "выжигателя мозгов” [barman_start_sell] - цены по которым торговец(бармен в данн. сл.) продает в начале [barman_after_darkvalley_sell] - аналогично [barman_after_brain_sell]
Итак: чтобы добавить предмет к торговцу, после строки [supplies_start],
находим интересующую нас категорию(а это может быть:
;Аммуниция/;Оружие/;Броники/;Медикаменты/;Еда и др.) и после всех
прописанных в данной категории предметов добавляем ещё одну строчку для
своего предмета(а именно название модели(т.к. оно совпадает с названием
самого предмета) и после знака = параметры(о них чуть ниже)). Ну я так и
знал что вы ничего не поймёте, поэтому пример: Чтобы добавить бармену винтовку Гаусса, находим строки после условия [supplies_start] - ;Оружие wpn_pb = 3, 0.6 wpn_walther = 3, 0.6 wpn_mp5 = 3, 0.6 wpn_ak74u = 3, 0.5 и внизу прописываем wpn_gauss = N, n.n *о значениях после знака = см. ниже. Все имена оружия, амуниции, снаряжения и т.п. можно найти в папках gamedatameshesequipments, gamedatameshesweapons, gamedatameshesfood. Заметьте, что wpn_gauss нужно писать без расширения .ogf Значения: После знака = у вальтера например стоит цифра 3, а после запятой – 0,6.
Первое, для гаусса у нас стоит N, это количество(в штуках) предметов.
Т.е. если поставить значение 999, то у бармена будет 999 гауссов. А второе: 1. В разделах supplies вторая цифра это вероятность появления данного предмета.
2. В разделе buy - первая цифра максимальная цена покупки, вторая
минимальная (зависит от отношения торговца к Меченному - рейтинг,
репутация)[Предположительно. – прим.] 3. Соответственно в разделах
sell - первая цифра минимальная цена продажи, вторая - максимальная
(точнее множитель на "истинную цену" предмета). Tnx GreyL. В итоге должно получиться: [supplies_start] ;Оружие wpn_pb = 3, 0.6 wpn_walther = 3, 0.6 wpn_mp5 = 3, 0.6 wpn_ak74u = 3, 0.5 wpn_gauss = 6, 0.6 И тогда у торговца мы получим ровно 6 винтовок Гаусса.
Создание рандомного выбора муз. заставки главного меню:При заходе на
экран главного меня муз. заставка будет выбираться случайно из
добавленных вами. 1. В директорию gamedatasoundsmusic положить два
канальных ogg-файла с нужной музыкой, например: my_music_l.ogg (левый
канал) и my_music_r.ogg (правый канал) 2. В текстовом редакторе открыть файл gamedataconfiguiui_mm_main.xml, найти в нем строку:
и заменить на:
3. В этом же файле найти строку: musicwasteland2 и ниже нее выставить следующую строку: musicmy_music 4. Сохранить файл. 5. Если требуется вставить больше муз. заставок, то в параметре random укажите их количество. Автор идеи - VM
NPS покупают оружие:Чтобы обычные сталкеры и др. npc могли покупать у
ГГ оружие, нужно править файл gamedataconfigmisctrade_generic.ltx. Его
структура точно такая же, как и у любого другого торговца. После строки [generic_buy] находим строку ;Оружие и после неё у каждого вида ставим зачения N и n.n. Можно например так: ;Оружие wpn_pm = 0.08, 0.12 wpn_pb ;NO TRADE wpn_fort = 0.08, 0.12 wpn_hpsa = 0.08, 0.12 wpn_beretta = 0.08, 0.12 wpn_walther = 0.08, 0.12 wpn_sig220 ;NO TRADE … … А чтобы у npc продавалось оружие, нужно проделать тоже самое, только после строки [generic_sell] Метод я проверял, вроде как работает.
Чтобы после покупки персонаж не выкидывал купленное оружие(а также
чтобы подбирал его с земли), в файле
gamedataconfigcreaturesm_stalker.ltx строку can_select_items = off
меняем на can_select_items = on и строку use_single_item_rule = on меняем на use_single_item_rule = off .
Транспорт:Транспорт в игре есть! Пока способ заспаунить его не известен
общественности, но тем не менее в сети появился файл all.spawn,
копируйте его в папку gamedataspawns. Мод предназначен только для
пропатченной версии игры(1.0001). После начала новой игры в первой
локации рядом с Сидоровичем появятся несколько машин, в т. ч. и Камаз.
Чтобы включить двигатель в консоли пишем bind turn_engine kb, закрываем
консоль, жмём кнопку b и наслаждаемся…. Рассмотрим параметры машин, конфиги находятся в папке gamedataconfigmodelsvehicles. [car_definition] – после строки идут коментарии на русском языке, перейдём сразу к следующему. … --Factory parameters of Engine -- - параметры двигателя(описание не претендует на совершенно точное) fuel_tank – вместимость бака. engine_power – мощность двигателя. hand_break_torque - сила торможения [damage_items] – повреждения частей машины back_left_wheel - заднее левое колесо back_right_wheel -заднее правое колесо front_left_wheel -переднее левое колесо front_right_wheel - переднее правое колесо left_door - левая дверь right_door - правая дверь [immunities] burn_immunity = 0.5 ;коэффициенты иммунитета strike_immunity = 0.1 shock_immunity = 0.0 wound_immunity = 0.01 radiation_immunity = 0.0 telepatic_immunity = 0.0 chemical_burn_immunity = 0.0 explosion_immunity = 0.4 fire_wound_immunity = 0.0005
P.S. Чтобы сделать вид от третьего лица, в файле user.ltx(ну если не
знаете где он находится, то специально для вас в Microsoft сделали поиск
в Windows) пишем после строки unbindall: bind cam_1 kF1 bind cam_2 kF2 bind cam_3 kF3 В игре жмём кнопки F1, F2 или F3 для смены вида. Очень нужно при езде на БТР Объекты, которые можно перемещать:
В файле system.ltx в конце есть строка [ph_capture_visuals], после неё
идёт список перетаскиваемых вещей. Например чтобы можно было таскать
монстров, в конец добавляем: //Monsters monstersmutant_boarmutant_boar monsterskrovososkrovosos monsterskontrolerkontroler monstersdogdog monstersfleshflesh monsters dogdog_cmn_1 monstersfleshflesh monsterspoltergeistpoltergeist monsterspseudodogpseudodog monsterssnorksnork monstersburerburer monste rschimerachimera monsterscatcat monsterszombizombi_1 monstersratrat_1 monsterstushkanotushkano
Как сделать так, чтоб не убиралось из рук оружие в некоторых
локациях?:В файле gamedatascriptssr_no_weapon*****ipt найти и
закомментировать (поставить перед ними --) строки bind_stalker.hide_weapon() bind_stalker.restore_weapon() и в файле zone_no_weapon*****ipt ищем строки hide_weapon() и заменяем их на restore_weapon() Способ подходит и для предыдущего файла.
Как приделать к оружию оптику, глушитель, подствольник?:Находим в файле
оружия строку ;addons и пишем после(без комментарие естественно(или
перед ними ставьте значения после знака = можно менять): ;addons scope_status = 2 0 - нет,1 - несъемный, 2 - можно ставить прицел silencer_status = 0 0 - нет,1 - несъемный, 2 - можно ставить глушитель grenade_launcher_status= 0 0 - нет,1 - несъемный, 2 - можно ставить подствольник zoom_enabled = true Вкл/выкл возможность зума scope_zoom_factor = 50 значение зума scope_name = wpn_addon_scope название прицепляемого прицела scope_x = 47 положение прицела на картинке, x scope_y = 0 положение прицела на картинке, y silencer_name = wpn_addon_silencer название глушителя silencer_x = 218 положение глушителя на картинке, x silencer_y = 9 положение глушителя на картинке, y grenade_launcher_name= wpn_addon_grenade_launcher название подствольника grenade_launcher_x = 126 положение подствольника на картинке, x grenade_launcher_y = 24 положение подствольника на картинке, y Как убрать/увеличить время для обычных квестов?: В файле gamedataconfigmisctask_manager.ltx найти и изменить все строки вида time = 86400 Чтобы совсем убрать лимит - просто закомментировать их (--) Как убрать intro-ролики в начале?: В свойствах ярлыка прописываем после пути к exe-шнику: -nointro Получиться должно что то вроде(это как у меня): "D:GamesS.T.A.L.K.E.R. Shadow of ChernobylbinXR_3DA.exe" -nointro Как включить motion blur?: В свойствах ярлыка прописываем после пути к exe-шнику: -mblur В файле user.ltx(можно и в консоли) параметру r2_mblur присваиваем значение например 0.15 Работает только на DirectX 9. Как увеличить время спринта?: В файле actor.ltx меняем параметр sprint_koef.
Как поменять кол-во жизни монстрам?:В файле m_*.ltx(где * - название
монстра, например m_controller.ltx; находится в папке
gamedataconfigcreatures) меняем параметр health Как повесить на пояс больше артефактов?: В файле system.ltx изменяем параметр max_belt с 5 на 10 (max_belt = 10) Ищем файл inventory_new.xml и в нём меняем cell_width = "60" cell_height="60" rows_num="1" cols_num="5"/> на 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 escape_trader_start_dialog escape_trader_talk_info escape_trader_jobs tm_trader_dialog tm_trader_reward escape_trader_done_blockpost_box< br> В свою очередь каждая ветка диалога также может ветвится. 2) Ветвление веток прописывается уже в других файлах. Например ветвление веток диалога с Сидоровичем содержится в файле gamedata/config/gameplay/dialogs_escape.xml Возьмем оттуда к примеру ветвление ветки escape_trader_jobs (ветвление веток обычно очень большое поэтому я приведу только часть): escape_dialog.trader_has_talk_info_w r tutorial_end
escape_trader_talk_info_1 100 99 9995 … … …
escape_trader_talk_info_0 1
Здесь … - это проверка выполнения условия. Ветка появится в диалоге, только если условие выполняется. Конкретно escape_dialog.trader_has_talk_info_w r
из ветки 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_ом т.е. с Сидоровичем. Т.е проверкой условия escape_dialog.trader_has_talk_info_w r проверяется с кем ведется диалог, и если диалог ведется с Сидоровичем в ветке по крайней мере этим условием пропускается в списк реплик. Но для конкретной ветки может быть несколько precondition и других условий. Далее tutorial_endЕсли
я верно понимаю, это так же своего рода проверка условия В данном
случае проверка на то закончена стадия tutorialа или нет. Т.е ветка
допустится в список реплик если стадия tutorialа закончена. А далее идут конкретные фразы содержащие ссылки на вытекающие фразы Фраза: escape_trader_talk_info_0 1 это основа ветки escape_trader_talk_info. (Вообще как я понял в любой основной ветке любого диалога фраза будет основой из которой далее будет все вытекать) 1 - это ссылка на вытекающую фразу : escape_trader_talk_info_1 100 99 9995 В свою очередь 100, 99, 9995 это ссылки на фразы веточки растущие из фразы . 3) Текст каждой фразы содержится уже в четвертом файле. Для диалога с Сидоровичем тексты лежат в файле gamedata/config/text/rus/stable_dialogs_escape.xml Есть несколько вопросов.
Спрашивай,
только я ведь всего не знаю. Сам понимаешь, сижу тут целыми днями, а
жизнь - она вся там, снаружи, в Зоне. Могу рассказать о Зоне вообще, а
немного могу о ближайших окрестностях, где сам ходил. Эти строки содержат тексты для фраз и Итого диалоги разложены по 4 а то и более файлам. Да кстати, путь по веткам может быть зацикленным если того требует диалог. Например так: … 1 2
… 11 12
… 1 - Это возврат к фразе 1. (зацикливание) 111 Теперь пример практического применения того, о чем было сказано выше: Добавим в диалог с Сидоровичем ветку своего собственного изготовления. Например такую: Меченый: Сидрыч а что это у тебя зеленые человечки, что по столу бегают, такие худые? Сидорович: Чего?!! Меченый: Ты их совсем, совсем не кормишь?
Сидорович: В следующий раз, как пойдешь в зону, бери-ка вместо водяры
побольше антирада. А то мало что таким перегаром дышишь, уже до зеленых
человечков долечился… Шутник. 1) В файле
gamedata/config/gameplay/character_desc_escape.xml в конце списка веток
для trader_а суем свою ветку с произвольным названием. (например escape_trader_letat_gusi Т.е у нас получится так …
… … … escape_trader_start_dialog escape_trader_talk_info escape_trader_jobs tm_trader_dialog tm_trader_reward escape_trader_done_blockpost_box< br> escape_trader_letat_gusi
… Записываем изменения и с файлом character_desc_escape.xml все. 2) Теперь берем файл gamedata/config/gameplay/dialogs_escape.xml Диалогу: Меченый: Сидрыч а что это у тебя зеленые человечки, что по столу бегают, такие худые? Сидорович: Чего?!! Меченый: Ты их совсем, совсем не кормишь?
Сидорович: В следующий раз, как пойдешь в зону, бери-ка вместо водяры
побольше антирада. А то мало что таким перегаром дышишь, уже до зеленых
человечков долечился… Шутник. Который мы хотим реализовать будет соответствовать такая структура: escape_trader_ letat_gusi_0 1
escape_trader_ letat_gusi_1 2
escape_trader_ letat_gusi_2 3
escape_trader_ letat_gusi_3 условия наличия ветки в диалоге можно взять из ветки Т.е берем условия escape_dialog.trader_has_talk_info_w r и tutorial_end (Можно было конечно прописать в скрипте еще одно условие для ветки, чтоб она появилась только один раз, а потом больше не возникала. Но об этом как нибудь позже допишу.) В итоге у нас получилась такая структура: escape_dialog.trader_has_talk_info_w r tutorial_end
escape_trader_letat_gusi_0 1
escape_trader_letat_gusi_1 2
escape_trader_letat_gusi_2 3
escape_trader_letat_gusi_3
Которую нужно вставить в любом месте между dialog id_шниками других веток в файле dialogs_escape.xml. Главное не промахнутся и засунуть именно между, а не внутрь одного из dialog id Все что находится между тегами и это внутенности конкретного dialog id Т.е совать наш
…. надо …
здесь
… но не здесь После сохранения внесенных изменений с файлом dialogs_escape.xml все. 3) Теперь вбиваем сами текстовички в файле gamedata/config/text/rus/stable_dialogs_escape.xml Т.е нам надо в файле stable_dialogs_escape.xml вставить такую конструкцию: Сидрыч а что это у тебя зеленые человечки, что по столу бегают, такие худые?
Чего?!!
Ты их совсем, совсем не кормишь?
В
следующий раз, как пойдешь в зону, бери-ка вместо водяры побольше
антирада. А то мало что таким перегаром дышишь, уже до зеленых
человечков долечился… Шутник. в любом месте между уже существующими string id
сюда
Но не внутрь одного из существующих string id
не сюда После сохранения изменений, у нас все готово. Можно грузить игру и смотреть что получилось. Оружие загораживает пол-экрана. Как это исправить?: В файле конфига выбранного оружия меняем osition = 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 ocuments and SettingsAll Users Общие документы STALKER-SHOC Для Windows Vista в директории X:UsersPublicDocumentsSTALKER-SHOC Как изменить силу врагов?: В файле gamedataconfigcreaturesactor.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 Они отвечают за вероятность попадания по вам при разных уровнях сложности.
Гармошка:Для возврата в игру губной гармошки, ищем в папке
gamedatascripts файл xr_kamp*****ipt и открываем его блокнотом. Далее
ищем строку -- играть на гармошке . Сам скрипт выглядит так: -- играть на гармошке -- if npc bject("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
|