Среда 2.7.2025 Время: Загрузка...


PDA
Гость



СТАЛКЕР!
Я всегда рад видеть
еще одну живую душу!
Но я незнаю кто ты?
Регистрация
Вход!

---

Список Сталкеров
Меню сайта
Категорий
Мир Зоны
Обновления
Обнавление
Обнавление
Обнавление
Обнавление
Обнавление
Обнавление
Время

Облако Тегов
Lost Alpha КРИ Priboi stori (История Прибоя) mod Sky4CE SkyGraphics Mod Алексей Калугин Сталкер Наше творчество Билд 1935 Мод Черноречье ЧАЭС TAKESHI Моды ЧН Зов Припяти stalker Украинская Локализация Clear Sky Shadow of Chernobyl Чистое Небо Аддоны Full Realism Mod S.T.A.L.K.E.R статьи Моды ТЧ книги Литература Float 32 Alpha Сlear Sky утилиты Вестник сталкера Зов Прияпти SRP Для мобильного интревью Страйкбол Сталкер 2 Валентпн Елтышев Тяжелая земля Pollux add-on S.T.A.L.K.E.R. Сердце Зоны Черноречье ТЧ FAQ pda Антон Большаков Патчи ЧН ЧН GSC kamaz интервью Тени Чернобыля Рассказы photoshop ABC mod Зона ЗП Видео EpoS Рецензии NoDVD музыка Читы системные требования Новый сюжет Андрей Левицкий Фотореалистичная Зона Call of Pripyat Чернобыль Мультиплеер Яворский Зона поражения В. Шалыгин НС5 AMK mod Эпицентр Удачи Билд 3120 Припять Набережные Челны Олег Яворский Интрвью Нам 1 год КамАЗ Карта Трейнер Фан-арт NLC X-Ray Engine Оружие Old Good Stalker Mod (OGSM) SolinX RealPlayer stalker-gsc AMK Роман Глушков Call of Pripayt Panoramic Mod Build Патчи ТЧ Игромания Gamedata Winter mod Прохождение игры Календарь Превью Dordex Studio Zenobian mod конкурсы Солянка Зона поражения 2 Сергей Григорович Патчи Clear sky Солянка от Wawka Скриншоты Буря на свалке Sanex (A-life) mod SDK Funny mod Deep Silver Аномалии Simbion mod Билд 1154 FSR Билд 1098 Обреченный город Андрей Ливадный Arsenal mod directx Faction Commander Oblivion Lost Dark Ukraine S.T.A.L.K.E.R. 2 chelny ЛКИ pda-версия Стругацкие Артефакты Naberezhnye Chelny





Главная » Статьи » Мои статьи

Мануал по созданию модификаций для Stalker T4 (для начинающих)
Вступление:
Как вы наверно заметили, в папке с игрой содержатся несколько файлов типа 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.

Введение в моддинг:
Именно с папкой config придётся работать для редактирования многих параметров игры.
Но начнём сначала:
Перед тем, как начать редактирование файлов игры, нужно в каталог Сталкера поместить ту самую папку gamedata, в которую были извлечены игровые файлы.
*Все файлы нам не понадобятся, поэтому можно оставить только папки config, scripts(а конкретно файл se_respawn*****ipt), textures, sounds, а всё остальное удалить(а можно и не удалять)
Также хочу заметить, что если распаковать все архивы .dbN в папку с игрой, то это может дать несколько дополнительных FPS.

Текстуры:
В папке textures лежат файлы формата .dds, которые можно открыть программой Adobe Photoshop с установленным DDS-плагином.
Плагин.
Скрин с корректными настройками.

Скрипты:
se_respawn.sсript – файл, отвечающий за респаун. Время респауна можно уменьшить, путём небольших изменений в этом файле. Он открывается обычным блокнотом(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 можно заменить на другой, но при этом нужно сохранить все параметры звукового файла, который был использован в игре. Например, чтобы заменить музыку в приёмнике у Сидоровича, нужно файл sounds\scripts\magnitofon\magnitofon_2.ogg, заменить на любой другой.(У оригинального файла винамп мне выдал свойства: 
Average bitrate : 60 kbps
Nominal bitrate : 80 kbps
Channels : 1
Sampling rate: 44100 Hz.

Config/Weapons:
Параметры оружия вы можете найти в папке config\weapons, файлы типа w_ak74.ltx открываются тоже блокнотом. Разберём содержимое файла например w_groza.ltx
Во первых стоит обратить внимание на значение пременной(буду их так называть) cost, это цена оружия, т.е. сколько гроза будет стоить у продавца.
Переменная weapon_class означает, к какому классу относится оружие, в данном случае - assault_rifle.
ammo_limit – лимит боеприпасов(в игре не используется)
ammo_mag_size – размер магазина. Можно поставить например 900, тогда о перезарядке можно совсем не вспоминать.
ammo_class – класс патронов, используемых оружием. Здесь [/b]ammo_9x39_pab9[/b], 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:
В дополнение к конфигам оружия:
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 – тип ночного видения(плохой/хороший). Если ПНВ нету, то строку добавить, если его нужно убрать, строку закомментируйте(--).

Торговцы:
Вещи, которые продают торговцы можно отредактировать(добавить/убрать) в файлах с именем [b]trade_YYY.ltx[.B], где [b]YYY[.B] – это имя торговца(например [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
*о значениях после знака = см. ниже.
Все имена оружия, амуниции, снаряжения и т.п. можно найти в папках gamedata\meshes\equipments, 
gamedata\meshes\weapons, gamedata\meshes\food.
Заметьте, что wpn_gauss нужно писать без расширения .ogf
Значения:
После знака = у вальтера например стоит цифра 3, а после запятой – 0,6.
Первое, для гаусса у нас стоит N, это количество(в штуках) предметов. Т.е. если поставить значение 999, то у бармена будет 999 гауссов.
А второе:
1. В разделах supplies вторая цифра это вероятность появления данного предмета (от 0.1 до 1).
2. В разделе buy - первая цифра максимальная цена покупки, вторая минимальная (зависит от отношения торговца к Меченному - рейтинг, репутация)[Предположительно. – прим.]
3. Соответственно в разделах sell - первая цифра минимальная цена продажи, вторая - максимальная (точнее множитель на "истинную цену" предмета).
В итоге должно получиться:
[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, 1
И тогда у торговца мы получим ровно 6 винтовок Гаусса.

Создание рандомного выбора муз. заставки главного меню:
При заходе на экран главного меня муз. заставка будет выбираться случайно из добавленных вами.
1. В директорию gamedata\sounds\music\ положить два канальных ogg-файла с нужной музыкой, например: my_music_l.ogg (левый канал) и my_music_r.ogg (правый канал)
2. В текстовом редакторе открыть файл gamedata\config\ui\ui_mm_main.xml, найти в нем строку:
<menu_sound random="0" >
и заменить на:
<menu_sound random="1" >
3. В этом же файле найти строку:
<menu_music>music\wasteland2</menu_music>
и ниже нее выставить следующую строку:
<menu_music>music\my_music</menu_music>
4. Сохранить файл.
5. Если требуется вставить больше муз. заставок, то в параметре random укажите их количество. 
Автор идеи - VM

NPC покупают оружие:
Чтобы обычные сталкеры и др. npc могли покупать у ГГ оружие, нужно править файл gamedata\config\misc\trade_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] 
Метод я проверял, вроде как работает.
Чтобы после покупки персонаж не выкидывал купленное оружие(а также чтобы подбирал его с земли), в файле gamedata\config\creatures\m_stalker.ltx строку can_select_items = off меняем на can_select_items = on
и строку use_single_item_rule = on меняем на use_single_item_rule = off .

Объекты, которые можно перемещать:
В файле 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

Как сделать так, чтоб не убиралось из рук оружие в некоторых локациях?:
В файле gamedata\scripts\sr_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

КАК ИЗМЕНИТЬ НОСИМЫЙ ВЕС?
В файле \gamedata\config\creatures\actor.ltx находим переменную max_item_mass – это максимальный вес при достижении которго игрок перестает двигаться
max_walk_weight - максимальный вес, до достижения которого можно передвигаться
В файле \gamedata\config\ system.ltx изменяем переменную max_weight – это вес который игрок несет не напрягаясь.
Как убрать/увеличить время для обычных квестов?:
В файле 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@lockedon_use = ph_door@decoding %+sar_access_decoding% ; При начале декодирования, пошёл процесс декодирования и выполняется скрипт sar_access_decoding[ph_door@decoding] ; В процессе декодированияlocked = trueclosed = truetip_open = tip_door_decodingon_info = {+sar_finish_decoding} ph_door@unlocked ; Завершение скрипта sar_finish_decoding и выполнение ph_door@unlocked[ph_door@unlocked] ; Дверь разкодирована и открытаlocked = falseclosed = falseshow_tips = falseЕсли мы хотим увидеть правдивые концовки, но мы уже в саркофаге и у нас нет дешифра, то мы просто можем изменить вездеlocked = false на trueclosed = false на trueИ в зависимости что вам надо и где можете менять и изменять, тут всё предельно просто и понятно...
Категория: Мои статьи | Добавил: bauka (20.04.2009)
Просмотров: 4099 | Комментарии: 10 | Рейтинг: 5.0/1 |
Всего комментариев: 1
1 Angelinah  
0
Good afternoon
[1 - Disorders such as erectile dysfunction (ED) and female sexual dysfunction are... http://top.natural-ed.com/cialas/site_map.html - http://top.natural-ed.com/cillis/site_map.html
Goodluck!!!
____________________________
http://top.natural-ed.com/vigra/site_map.html - how to buy online :)

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]








200


Опрос
Ждете ли вы новый аддон "Зов Припяти"?
Всего ответов: 16
Поиск
Блокпост
Друзья сайта
TOP'ы
Погода
Наш Баннер

sralker.ucoz.org

[ Код Кнопки]
Google


design by zork studio Сделать бесплатный сайт с uCoz