Как сделать для игры сталкер
Создание сложных квестов
Итак, решили вы написать оригинальную миссию для игры. С чего начать? Бросаться писать скрипты? Приниматься за конструирование разветвленных диалогов? Или вообще все это отложить в сторону и сделать кое-какие наброски на бумаге. Первым делом, разумеется, нужно сделать кое-какие выкладки — подобрать действующих лиц, придумать крайне интересный и дух захватывающий сюжет, наконец, продумать, как будут выглядеть диалоги между NPC и будут ли они вообще фигурировать в игре. После этого уже можно приступать к чисто технической части — реализации задуманного.
Если кто-то подумал, что работать мы будем в редакторе уровней и по неосторожности его запустил, пусть покинет программу — она нам сегодня не пригодится. Писать миссии и диалоги для S.T.A.L.K.E.R. мы будем исключительно в «Блокноте». Нет, вовсе не оттого, что недолюбливаем официальный инструментарий, а лишь потому, что официальный модмейкерский набор пока не позволяет править ни одиночные карты, ни квесты.
Краткий брифинг проведен. Время действовать. Начнем, пожалуй, с написания разветвленных диалогов. Запустите «Блокнот» и подгрузите в него файл character_desc_escape.xml, который проживает в директории gamedata\\config\\gameplay\\ установленной игры (прим. — все архивы «Сталкера» должны быть «распечатаны»). Данный документ, по сути, содержит множество ссылок на определенные ветви диалогов, т.е. фактически служит лишь для объявления или инициализации разговорных блоков, но не более того. Давайте вживим в тело данного файла ссылку на новый диалог с торговцем — Сидоровичем (впрочем, никто не мешает вам создать новых персонажей, например канонического Ктулху, и закрепить за ними определенные диалоги). Для этого выполните следующие действия. Отыщите строку \escape_trader_done_blockpost_box\ (прим. — меню поиска в «Блокноте» активируется при помощи горячих клавиш Ctrl + F, если кто не знает)
и сразу же после нее (с новой строки) поместите следующую конструкцию:
\escape_trader_igromania\
Где escape_trader_igromania — название будущего диалога.
Инициализация произведена. Двигаемся дальше — приступаем к внедрению кода диалога в файл dialogs_escape.xml из каталога gamedata\\config\\gameplay\\ игры, в котором прописаны практически все игровые тексты в общем виде. Итак. Откройте «Блокнотом» файл dialogs_escape.xml и добавьте в конец документа — перед ключевым словом \ следующий блок:
\
\escape_dialog.trader_alredy_give_job\
\tutorial_end\
\
\
\escape_trader_ igromania0 \
\1\
\
\
\escape_ trader_ igromania1 \
\2\
\
\
\escape_ trader_ igromania2\
\3\
\
\
\escape_ trader_ igromania3 \
\
\
\
Давайте рассмотрим структуру данного диалога. В первой строке блока указывается название диалога, соответствующее определенной записи в файле character_desc_escape.xml. В нашем случае — это escape_trader_igromania. Последующие две строки отвечают за так называемое предварительное условие (precondition) и специальную информационную справку. Тег \ открывает огромный список фраз диалога, а \, соответственно, его замыкает. Между ними, как мы уже сказали, размещаются различные реплики в общем виде. Каждая новая запись состоит из трех ключевых строк, содержащих так называемые теги phrase id, text и next. В первой из них указывается специальный идентификационный номер, указывающий на номер реплики. Нумерация начинается с нуля. Т.е., скажем, для первой записи значение параметра phrase для второй — «1» и так далее. Во второй строке между тегами \ и \ содержится ключевое слово или «ключворд», которое представляет собой название строки — сам же текст вбивается в документ gamedata\\config\\text\\rus\\stable_dialogs_escape.xml.
Ну и, наконец, между тегами \ и \ помещается номер следующего узла или реплики. Таким образом, зная структуру диалогов, вы можете конструировать блоки, состоящие из 10, 100, 1000 записей. Лимит не установлен.
Полдела сделано. Осталось лишь насадить на сформированный каркас полноценные текстовые реплики NPC — не ключевые слова, не ссылки, а саму «начинку» в духе: «Эээй, Меченый. Водки, водки давай. И побыстрее там, сколько уже можно ждать». Первым делом откройте «Блокнотом» файл stable_dialogs_escape.xml из директории gamedata\\config\\text\\rus\\ с установленной игрой и внедрите в конец документа перед тегом \ следующую конструкцию:
\
\Слушай, Сидорович, есть у тебя какая-нибудь интересная работенка для меня? Что-нибудь экзотическое. Понимаешь, о чем я? Надоели убийства, надоели ограбления. Скукотища. \
\
\
\ Ну, Меченый, повеселил ты меня. Давно я такого бреда не слышал. Ну, иди, иди и найди снежного человека, поговори с Ктулху. \
\
\
\Ктулху, говоришь?! А может быть, он есть, на самом деле есть. Ты об этом не думал. Сейчас пойду его поищу, ведь должен же он существовать: в зоне про него тоже немало слышал!\
\
\
\Ну, иди, иди, только вот будь добр — прихвати для меня по пути несколько дельных вещиц — что найдешь: консервы, части местных животин, ценные артефакты. В долгу не останусь. \
\
Нетрудно заметить, что данный блок почти полностью копирует ранее написанный нами диалог в общем виде, с той лишь разницей, что между тегами \ и \ заключены уже не краткие названия строк на английском, а полноценные текстовые реплики на родном русском языке.
Диалог написан, а следовательно — первый этап работы по созданию новой миссии выполнен. Движемся дальше и приступаем к написанию самого задания. Вновь откройте текстовым редактором XML-документ dialogs_escape.xml из каталога gamedata\\config\\gameplay\\ с установленной игрой. Отыщите свой диалог (прим. — если вы действовали согласно нашей инструкции, то проживать он должен в конце документа). И после строки \escape_ trader_ igromania2\ поместите следующий код:
\igromania_quest\
Данная команда приведет к старту квеста с незатейливым названием igromania_quest после появления на экране третьей записи диалога (прим. — помните, что отсчет-то ведется с нуля, а не с 1?). Итак, что же мы имеем на данный момент? Диалог есть, ссылка на квест есть, самого квеста. нету. Надо срочно эту проблему решить. Что ж, приступим. Подгрузите в «Блокнот» файл tasks_escape.xml из каталога gamedata\\config\\gameplay\\ со «Сталкером» и вставьте в самое начало документа следующую конструкцию:
\
\Типично русский квест \
\
\Поговорить с Ктулху \
\ui_iconsTotal_storyline_eliminate_gunslinger \
\ igromania_quest_done\ \
\
\Раздобыть ценные артефакты и просто полезные в хозяйстве вещицы\
\green_location\
\ Escape_Tutorial_Artefact \
\igromania_quest_done \
\
\
\Встретиться со снежным человеком =)\
\blue_location\
\ Escape_stalker_from_raid\
\ igromania_quest_done\
\
\
Так, давайте посмотрим, что здесь к чему. Параметр, точнее говоря, тег с ключевым словом game_task id отвечает за идентификационный номер (правда, текстовый, а не цифровой) или название миссии. Между тегами \ \ проживает заголовок задания на русском, в нашем случае — Типично русский квест. Далее в пределах от элемента \ до \ содержится краткий текст квеста на чистейшем русском языке. Между тегами \ и \ задается определенный тип маркера или иконки, который будет отображаться на карте местности, в нашем примере — ui_iconsTotal_storyline_eliminate_gunslinger. В теле тега \ проживает ссылка на определенную запись в файле gamedata\\config\\gameplay\\info_l01escape.xml с текстом условия. Тег типа \ включает в себя информацию о графической подсказке на радаре, а \ — о квестовом объекте. Вот, в принципе, и все. Что? Зачем мы вживили в тело миссии несколько \-блоков? Все просто. Три части задания, три независимых группы — Поговорить с Ктулху, сгонять за артефактами и встретиться со снежным человеком.
С созданием квестовой основы покончено. Следующий шаг — обозначение целей и прописывание экранных подсказок. Передохнули, сил набрались? Тогда снова в бой! В очередной раз вооружитесь «Блокнотом». Откройте файл info_l01escape.xml из папки gamedata\\config\\gameplay\\ со S.T.A.L.K.E.R., отыщите в нем тег \ и после него поместите следующую незатейливую конструкцию:
\\
\
\igromania_quest \
\
\\
Если внимательно приглядеться, то несложно обнаружить, что в теле каждого тега типа info_portion id прописывается определенное условие, название которого было ранее задано в файле tasks_escape.xml. Между тегами \ и \ указывается название квеста, для которого обозначаются условия, в нашем случае — igromania_quest. Так, с прописыванием условий разобрались.
Что у нас там дальше по плану? Точно — экранные подсказки. Дабы организовать вывод текстовых подсказок, отображающихся на экране во время выполнения квеста, проделайте следующие действия.
Откройте файл string_table_tasks_escape.xml из директории gamedata\\config\\text\\rus\\ с игрой и скопируйте в начало или конец файла следующий текстовый блок:
\
\Поговори с Ктулху\
\
\
\Найди полезные предметы и артефакты \
\
\
\Встреться со снежным человеком \
\
Приведенная выше структура состоит из трех блоков, каждый из которых, в свою очередь, содержит ровно по три строки. В первой строке, которая начинается с «кейворда» string_id, указывается определенное идентификационное имя строки на английском (без пробелов), во второй — между тегами \ и \ — начинка, текст подсказки, ну и, наконец, в третьей — тег \, который закрывает блок подсказки.
Диалог написан, квест сконструирован, условия прописаны, подсказки обозначены. Казалось бы, самое время — протестировать свежеиспеченную миссию в игре. Но не тут-то было. Мы же с вами не реализовали саму возможность выполнить квест, т.е. фактически не прописали стартер задания в тело диалога. Давайте вернемся к правке диалога и устраним данное недоразумение. Итак. Во-первых, сделайте диалог нелинейным. Для этого первым делом создайте как можно большее число реплик, а затем прикрутите к нужным блокам несколько команд для перехода к новым записям, например:
\
\escape_trader_igromania_12\
\2\
\4\
\6\
\8\
Из этого примера отчетливо видно, что игрок может сам сделать выбор — к какому звену диалога перейти: 2,4, 6 или 8.
После этого встройте в тело конечных «разговорных» блоков ссылки для активации нужных игровых скриптов, скажем:
\
\escape_igromania_17\
\ igromania_quest_done \
\ artifacts_and_obj \
\give_gold \
\23\
\
Последние штрихи. Осталось лишь написать скрипты, ответственные за «выписку гонорара» игроку, а также передачу ценного предмета определенному NPC. Откройте файл gamedata\\scripts\\escape_dialog.script при помощи «Блокнота» и вживите перед ключевым словом Trader следующий функциональный блок, точнее говоря — два блока:
function give_gold(first_speaker, second_speaker)
dialogs.relocate_money(second_speaker, 84000, «in»)
end
Первая функция в приведенном примере отвечает за выдачу золотых игроку в сумме 84000, вторая — за изымание ценных артефактов и вещиц у Меченого.
Как сделать для игры сталкер
Крайне рекомендуется добавить руководство в «избранное» и следить за обновлениями!
Итак, с чего же начинается сталкерское модостроение? Естественно, с папки «gamedata», которая является основой любого любительского мода. Но простое создание данной папки в корне игры ничего не принесет, так как для модостроения нужны файлы, достать которые можно двумя путями: либо взять за основу любую другую модификацию, либо использовать файлы оригинальной игры. И, так как редактирование сторонней модификации будет скорее модификацией модификации, а не собственноручно созданным модом, то мы за основу модифицирования возьмем оригинальные файлы игры.
Поэтому специально для вас я выкладываю правильную версию архиватора, при помощи которой можно разархивировать файлы лицензионного Steam-издания S.T.A.L.K.E.R.: Тень Чернобыля. Скачать программу вы сможете по ссылке ниже:
Можете не беспокоиться, архив без вирусов. По сути, вы также можете распаковать пиратскую версию S.T.A.L.K.E.R.: Тень Чернобыля любым другим анпакером, благо, их достаточно много в интернете, но зачем тратить свое время и место на жестком диске, когда проще распаковать лицензию?
Стоит обратить внимание, данная программка тестировалась лишь на Steam-версии S.T.A.L.K.E.R.: Тень Чернобыля. Пиратские версии, а также версия игры для GOG не проходили тестирование.
Итак, когда вы скачаете архив, внутри него вас будет ждать лишь один файл. Эта и есть подходящая программка. Ее вы просто перетаскиваете из архива на рабочий стол и запускаете.
В этой же программе вы указываете путь к корневой папке со сталкером и от туда начинаете разархивировать файлы gamedata.
Вы просто выбираете нужный файл gamedata и нажимаете кнопку «открыть». Далее архиватор вам предложит выбрать место хранения файлов. Я рекомендую разархивировать файлы в отдельную папку на рабочем столе. Себе же для удобства я разархивировал каждую «геймдату» в отдельную папку. Зачем? Вы узнаете далее.
Для 90% любительских модификаций будет достаточно распакованного gamedata.db0.
Предположим, что вы не имеете никакого опыта в простейшем модостроении и еще не разобрались с файлами и папками. Для начала стоит разобраться с простейшими параметрами, которые бы вы, предположительно, хотели изменить в игре. Вот самая простая навигация для новичков лишь по одной папке Config.
Вот самые основные параметры, изменения которых помогут вам в создании простейших модификаций.
Для того, чтобы реализовать в игре модификацию, вам потребуется создать папку gamedata в корневой папке игры.
Далее, допустим, я хочу модифицировать главного героя, работая в файле actor.ltx.
Он расположен по пути config\creatures, соответственно, в папке gamedata я создаю папку config, с ней создаю папку creatures. В данную папку я закидываю файл actor.ltx. Но для корректной работы внесенных параметров в actor.ltx, необходимо их же продублировать в system.ltx. Файл system.ltx находится в папке config, соответственно, данный файл переноситься по пути корень/gamedata/config
После этого внесенные изменения сохраняются. Модифицированный сталкер можно будет запустить сразу, начав новую игру.
Таким образом, первая небольшая модификация занимает место всего в 33 КБ.
Как мы можем наблюдать, для создания модификаций совершенно не обязательно иметь полностью разархивированную папку gamedata в корень игры. Простейшие модификации требуют в папке gamedata только тех файлов, которые подвергаются изменению.
С другой стороны, создание модов требует комплексного подхода и знания взаимосвязей файлов игры. Даже для изменения параметров грузоподъемности ГГ необходимо знать о взаимосвязях того же actor.ltx и system.ltx.
Поэтому советую практиковаться, но перед этим изучать теорию сталкерского модостроения.
Как визуально улучшить картинку в игре? Как изменить (поменять) текстуры? При помощи каких программ работать с текстурами? На этот и все другие вопросы, связанные с текстурированием и визуализацией вы найдете ответы в текущей главе гайда по модостроению в сталкере ТЧ.
Я же предпочитаю работать в программе Photoshop CS6, потому что его инструментарий и работа со слоями мне ближе, чем функционал Paint.net.
Допустим, вы обзавелись одной из программ. Далее для работы с текстурами вам понадобится папка textures. Из предыдущих глав гайда вы уже должны понимать, где при разархивации будет находиться данная папка.
Сохраняете текстуры вы, естественно, в формате DDS. Если пользуетесь плагином для Photoshop, то советую оставлять в настройках Nvidia все как есть.
Как изменить имя главного героя игры (Меченого)?
В первой строке «lname_bandit_0» означает, что кличка свойственна бандитам из игры, а строка
означает, как не сложно догадаться, кличку. Изменяем, как обычно, то, что вписано между «
S.T.A.L.K.E.R.: Shadow of Chernobyl: Создание модификаций
Руководство по созданию модификаций S.T.A.L.K.E.R. для начинающих.
Структура файлов и папок:
Введение в моддинг:
Именно с папкой config придётся работать для редактирования многих параметров игры.
Любой файл в папке sounds можно заменить на другой, но при этом нужно сохранить все параметры звукового файла, который был использован в игре. Например, чтобы заменить музыку в приёмнике у Сидоровича, нужно файл sounds\scripts\magnitofon\magnitofon_2.ogg, заменить на любой другой.(У оригинального файла винамп мне выдал свойства:
Average bitrate : 60 kbps
Nominal bitrate : 80 kbps
Channels : 1
Sampling rate: 44100 Hz.
В дополнение к конфигам оружия:
Создание рандомного выбора муз. заставки главного меню:
При заходе на экран главного меня муз. заставка будет выбираться случайно из добавленных вами.
1. В директорию gamedata\sounds\music\ положить два канальных ogg-файла с нужной музыкой, например: my_music_l.ogg (левый канал) и my_music_r.ogg (правый канал)
2. В текстовом редакторе открыть файл gamedata\config\ui\ui_mm_main.xml, найти в нем строку:
3. В этом же файле найти строку:
music\wasteland2
и ниже нее выставить следующую строку:
music\my_music
4. Сохранить файл.
5. Если требуется вставить больше муз. заставок, то в параметре random укажите их количество.
NPC покупают оружие:
Создание новых веток диалога:
Создание новых веток диалога.
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
В свою очередь каждая ветка диалога также может ветвится.
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
Функция выглядит так:
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.
(Вообще как я понял в любой основной ветке любого диалога фраза будет основой из которой далее будет все вытекать)
escape_trader_talk_info_1
100
99
9995
В свою очередь 100, 99, 9995 это ссылки на фразы веточки растущие из фразы
.
3) Текст каждой фразы содержится уже в четвертом файле. Для диалога с Сидоровичем тексты лежат в файле
gamedata/config/text/rus/stable_dialogs_escape.xml
Есть несколько вопросов.
Эти строки содержат тексты для фраз и
Итого диалоги разложены по 4 а то и более файлам.
Ветки диалога могут быть цикличными.
Теперь пример практического применения того, о чем было сказано выше:
Добавим в диалог с Сидоровичем ветку своего собственного изготовления.
Меченый: Сидрыч а что это у тебя зеленые человечки, что по столу бегают, такие худые?
Сидорович: Чего.
Меченый: Ты их совсем, совсем не кормишь?
Сидорович: В следующий раз, как пойдешь в зону, бери-ка вместо водяры побольше антирада. А то мало что таким перегаром дышишь, уже до зеленых человечков долечился… Шутник.
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 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_dialog.trader_has_talk_info_w r и tutorial_end
(Можно было конечно прописать в скрипте еще одно условие для ветки, чтоб она появилась только один раз,
а потом больше не возникала. Но об этом как нибудь позже допишу.)
В итоге у нас получилась такая структура:
escape_dialog.trader_has_talk_info_w r
tutorial_end
Которую нужно вставить в любом месте между 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
После сохранения изменений, у вас все готово. Можно грузить игру и смотреть что получилось.
Объекты, которые можно перемещать:
В файле system.ltx в конце есть строка [ph_capture_visuals], после неё идёт список перетаскиваемых вещей. Например чтобы можно было таскать монстров, в конец добавляем:
//Monsters
monsters\mutant_boar\mutant_boar
monsters\krovosos\krovosos
monsters\kontroler\kontroler
monsters\dog\dog
monsters\flesh\flesh
monsters\dog\dog_cmn_1
monsters\flesh\flesh
monsters\poltergeist\poltergeist
monsters\pseudodog\pseudodog
monsters\snork\snork
monsters\burer\burer
monsters\chimera\chimera
monsters\cat\cat
monsters\zombi\zombi_1
monsters\rat\rat_1
monsters\tushkano\tushkano
Q: Как поставить мод?!
A: В архиве который вы скачали есть папка gamedata. Скопируйте/Переместите/Разархивируйте ее в Корневой каталог игры.
Пример: C:/Games/S.T.AL.K.E.R/gamedata
Q: Какие моды есть на данный момент?
A: Смотри тему
Q: Я открываю ссылку с модом, на той странице какие-то иероглефы не понятные.
A: Не верно ассоциируется действие с фалом. Поэтому укажем программе что делать вручную. Правый клик по ссылке с модом, пункт «Сохранить обьект как».
Q: Обязателно ли распаковывать файла gamedata.dbХ для установки мода? Что будет если я сначала устанавлю/распакую ЧТО-ТО а потом ТО-ТО?
А: Содержимое папки gamedata имееет приоритет перед аналогичными файлами лежащими в архиве, НО если какой-то файл отсутствует в папке gamedata, то игра возьмёт её из архива.
Если моды содержат одинаковые файлы то новый мод ЧАСТИЧНО затрёт предыдущий, что может привести к непредсказуемым последствиям.
Если у Вас установленны какие-то моды и вы распаковаваете файлы gamedata.dbX, то моды сотрутся ПОЛНОСТЬЮ.
Q: В каком архиве из gamedata.bd* лежит ТО-ТО?!
A: Разархивируй все. Т.к. люди не больные, что бы учить что и где там лежит.
Q: Чем открывать *.ltx, *.script файлы?!
A: Блокнотом или любым другим текстовым редактором.
Q: Нашел в ресурсах игры много не включенных в single обьектов, как мне их включить?!
A: Слишком большой обьем работы надо проделать, что бы ввести эти обьекты в игру. От Изменение конфигов самих обьектов, до изменения скриптов.В принципе реальизуется небольшой командой, достаточно проворлевых модостроителей. Возможно они вам помогут
Q: Где мне найти комманды модостроителей?!
A: Realism Mod Team
S.T.A.L.K.E.R. Inside
Что касается правки параметров,что и для чего надо
Q:Как изменить время респауна?
Уменьшить время спринта
cant_sprint_power_begin = 0.20;порог силы меньше которого актер неможет бежать в спринте
cant_sprint_power_end = 0.30 ;порог силы больше которого актер сможет бежать в спринте
Система областей поражения. Для свиньи она расположена в секции
Q:Как приделать к оружию оптику, глушитель, подствольник?:
A:В файле actor.ltx меняем параметр sprint_koef.
A:В файле 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 и более слотов под артефакты.
A:Для Windows XP в директории X:\Documents and Settings\All Users\ Общие документы \STALKER-SHOC
Для Windows Vista в директории X:\Users\Public\Documents\STALKER-SHOC
A:В файле 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
Они отвечают за вероятность попадания по вам при разных уровнях сложности.
A:Открываем файл gamedata\config\ui\ui_keybinding.xml. В нём находим строку
Таким образом в меню игры добавляются 4 новых опции, а именно: смена камеры и кнопка включения двигателя. Также можно добавлять сюда др. клавиши но при одном условии для этого надо знать консольные команды.
Сегодня мы создадим новую группировку. Назовем её, скажем, «Ветер». Не суть важно.
Практика
Базовый уровень
Также, изменим эту строку, добавив туда имя и номер группировки:
;названия группировок
communities = actor, 0, actor_dolg, 1, actor_freedom, 2, stalker, 5, monolith, 6, military, 7, killer, 8, ecolog, 9, dolg, 10,
freedom, 11, bandit, 12, zombied, 13, stranger, 14, trader, 15, arena_enemy, 16, wind, 18,
2. После этого в файле death_manager.script ищем строку local community_list и в скобках добавляем название своей группировки:
function init_drop_settings()
local community_list = < "stalker", "dolg", "freedom", "bandit", "military", "zombied", "ecolog", "killer", "monolith",
«arena_enemy», «actor_dolg», «wind» >
[wind]: stalker
bread = 0
kolbasa = 0
vodka = 0
energy_drink = 0.3
4. Если предусматривается респавн бойцов новой группировки, в se_respawn.script прописываем в local simMaxCount = < после строчек с зомбированными сталкерами строку:
wind_novice = 20, wind_regular = 20, wind_veteran = 20, wind_master = 6,
5. Чтобы при убийстве непися новой группировки игра не вылетала в xr_statistic.script,
после строки:
zombied_novice = 1, zombied_experienced = 2, zombied_veteran = 3, zombied_master = 4,
пишем
dark_stalker_novice = 1, dark_stalker_experienced = 2, dark_stalker_veteran = 3, dark_stalker_master = 4,
6. Ну а в character_desc_x.xml выбираем любого NPC (или группу) и меняем группировку на свою:
esc_wolf_name
ui_npc_u_stalker_neytral_balon_1
esc_wolf_bio
7. Чтобы у персонажа в графе «Группировка» отображалось не «wind», а «Ветер», зарегистрируем соответствующую строку в файле string_table_general.xml:
8. Существует возможность создать для нашей новой группировки места, где они будут ходить (*_terrain брать из m_stalker.ltx):
То есть, к примеру, существует секция:
[stalker_terrain]
255,000,255,255
008,001,255,255 ;Разрешено ходить по опасным местам на баре
012,001,255,255 ;Разрешено ходить по опасным местам на Милитари
Тогда можно создать новую, по аналогии:
[wind_terrain]
255,000,255,255
008,001,255,255 ;Разрешено ходить по опасным местам на баре
012,001,255,255 ;Разрешено ходить по опасным местам на Милитари
010,001,255,255 ;Разрешено ходить по опасным местам на янтаре
Здесь, очевидно, указаны координаты самого уровня. Для каждого уровня существует своя начальная координата.
Продвинутый уровень
Такой метод достаточно примитивен. Это не полноценная группировка. Нам нужны соответствующие диалоги, возможность получения квестов и вступления в группировку, уникальные NPC.
Квесты
Во-первых, пропишите в список диалогов персонажа следующие строки:
[что-нибудь]_dialog
[что-нибудь]_reward
Примеры названий: tm_trader_dialog, tm_wolf_dialog.
Внимание! Метод не проверен.
Этим мы добавили ему ветку диалога «Есть работа?», а также ветку для награды за квест/отказа от него. Теперь зарегистрируем в task_manager.ltx набор новых заданий.
[list]
[wind_find_item]
type = find_item
community = actor
text = [ссылка на текст с рассказом заказчика о задании]
description = [ссылка на текст с описанием задания]
parent = [имя NPC-заказчика]
target = scientific_outfit
reward_money = 5000
reward_reputation = +5
reward_rank = 4
reward_item = wpn_sig_m1
time = 86400
[wind_kill_stalker]
type = kill_stalker
community = actor
text = [ссылка на текст с рассказом заказчика о задании]
description = [ссылка на текст с описанием задания]
parent = [имя NPC-заказчика]
target = sim_stalker_master_master
reward_money = 4000
reward_reputation = +5
reward_rank = 9
reward_item = ammo_5.56x45_ap, ammo_5.56x45_ap, ammo_5.56x45_ap
time = 86400
Не забудьте прописать описания заданий в текстовые массивы. Подробнее о редактировании task_manager.ltx читайте в уроке, посвященном однотипным квестам.
Да, и зарегистрируйте сами ветки диалогов в файле dialogs.xml. Вот пример того, как это сделано для заданий «Долга»:
По аналогии делаем и с нашим «Ветром».
Вступление в группировку
Реализуем возможность вступления в группировку.
function actor_set_wind (actor, npc)
printf («ACTOR NOW IN WIND COMMUNITY»
if db.actor then
db.actor:set_character_community («actor_wind», 0, 0)
end
return true
end
После чего создадим диалог, и сделаем в нем фразу с action’ом вида actor_set_wind. Советую изучить урок, посвященный диалогам.