gamedata\configs\gameplay\character_desc_general.xml
Предметы пишутся в самой первой секции Actor
<supplies>
[spawn] \n
предмет1 \n
предмет2 \n
предмет3 = X \n
</supplies>
Заместо "предмет?" подставляете свое название предмета. Обратите внимание что предмет1 и предмет2 будут в единичном экземпляре, а предмет3 будет в количестве X штук.
Посчет денег:
Ниже есть строчка
<money min="2500" max="2500" infinitive="0"/>
Где:
min="2500" ------------- минимальное кол-во денег (2500)
max="2500" -------------- максимальное кол-во денег (2500)
infinitive="0" -------------- бесконечные деньги? (1 - да, 0 - нет)
P.S. Нужна новая игра
|
параметры оружия хранятся в этой папке: configs\weapons\
Наиболее важные параметры:
visual - внешний вид оружия
cost - базовая цена (торговцы умножают её на некоторый коэффициент)
inv_weight - вес
sprint_allowed - возможность спринта с этим оружием
ammo_mag_size - размер магазина
ammo_class - типы используемых патронов
grenade_launcher_status - подствольный гранатомет (0 - нет; 1 - есть, несъемный; 2 - есть возможность установить)
grenade_class - тип используемых подствольных гранат
silencer_status - съемный глушитель (0 - нет; 1 - есть, несъемный; 2 - есть возможность установить)
scope_status - съемный прицел (0 - нет; 1 - есть, несъемный; 2 - есть возможность установить)
zoom_enabled - зум (приближение)
scope_zoom_factor - величина зума
scope_texture - текстура прицельной сетки
rpm - скорострельность
hit_power - сила выстрела
fire_distance - максимальная дистанция для выстрела
cam_relax_speed - скорость возврата в исходное положение
misfire_condition_k - порог, после которого оружие может заклинивать
condition_shot_dec - увеличение износа при каждом выстреле
fire_modes - режимы стрельбы (-1 - очередью, 1 - одиночный, 2 - с отсечкой по 2 патрона)
|
gamedata\sounds\characters_voice\scenario\zaton (файлы Х_Х_base_megaphone_Х, по локациям).
Смотрим путь к нашим нелюбимым файлам - в файлах script_sound_имя локации в папке \configs\misc
В поиск по файлу лучше вводить "megaphone"
Например для script_sound_zaton:
[zat_a2_base_megaphone]
type = 3d
path = characters_voice\scenario\zaton\zat_a2_base_megaphone_
shuffle = rnd
idle = 10,15,100
Надо просто заменить файлы-раздражалки на пустые ogg файлы
|
4. Повышаем вероятность того что из команды сопроводителей по подземелью никто не умрет
Первый способ заключается в замене визуала, а следовательно и их свойств, своей команде, а также можно заменить их оружие.
Замена Визуала:
Открваем файл: \configs\gameplay\character_desc_underpass.xml
Первые 4 персонажа - наши.
У всех есть строка:
<visual> Путь к файлу </visual>
Заменяем ее на:
<visual>actors\stalker_monolith\stalker_monolith_4</visual>
Теперь все 4 персонажа одеты в монолитовский экзоскелет.
Замена оружия:
В том же файле у каждого персонажа есть секции <supplies>, в них перечислены вещи персонажей, так давайте изменим ихнее оружие.
Возьмем Вано, он самый первый.
Итак вот его вещи:
<supplies>
[spawn] \n
device_torch \n
wpn_binoc \n
wpn_wincheaster1300_m2 \n
ammo_12x70_buck \n
ammo_12x76_zhekan \n
wpn_beretta_m3 \n
ammo_9x19_fmj \n
detector_elite \n
#include "gameplay\character_food.xml"
#include "gameplay\character_drugs_4.xml"
</supplies>
Изменим ему основное оружие, снабдим его ПКМ и патронами Дум-Дум
<supplies>
[spawn] \n
device_torch \n
wpn_binoc \n
wpn_pkm \n
ammo_dumdum \n
wpn_beretta_m3 \n
ammo_9x19_fmj \n
detector_elite \n
#include "gameplay\character_food.xml"
#include "gameplay\character_drugs_4.xml"
</supplies>
C другими делать по аналогии.
ВАЖНО: Чтобы изменения вступили в силу, надо загрузиться до спуска в подземелья!!!
|
Второй способ заключается в изменении логики персонажей, мы сделаем их бессмертными.
С логикой посложнее, но ничего сложного нет.
Нам нужны 7 файлов, все они находятся в каталоге configs\scripts\underpass\
Это файлы: pas_b400_way.ltx, pas_b400_canalisation.ltx, pas_b400_downstairs.ltx, pas_b400_elevator.ltx, pas_b400_hall.ltx, pas_b400_track.ltx, pas_b400_tunnel.ltx
Почему так много файлов? А потому что каждый файл отвечает за определенный промежуток пути в подземке, и чтобы они стали бессмертными надо изменять их все.
Итак, приступим. От каждого файла нам понадобятся секции [logic@pas_b400_перс_*].
Наши персы это: vano, zulus, sokolow, wanderer
В их секции, после
prior = 200
добавляете
invulnerable = true
Чтобы персы были бессмертными - надо загружаться до их спавна, а это значит: загрузиться надо перед подземкой!
|
Нам понадобятся 2 файла: configs\system.ltx и configs\creatures\actor.ltx
Итак, открываем первый файл:
Изменяем там параметр max_weight
Второй файл:
Изменяем параметр max_walk_weight
|
Характеристики патронов хранятся в файле: configs\weapons\ammo\w_ammo.ltx
Наиболее интересные параметры:
visual - внешний вид
cost - стоимость одной коробки
box_size - количество патронов в одной коробке
inv_weight - вес одной коробки
k_dist - коэффициент дальности
k_disp - коэффициент кучности
k_hit - коэффициент убойности
impair - коэффициент износа ствола от пули
|
Файл: \configs\ui\map_spots_relations.xml
Строчки типа:
width="7" height="7"
Обычно, если хотят скрыть на миникарте кого-то ставят width="0" height="0"
Если я правильно понял вопрос замени нули на семёрки
|
В файле описывающем параметры квеста есть параметр target отвечающий за метку на карте
target = id НПС, на которого ставится метка, или target = {название_инфопоршня}, после которого метка будет ставиться на НПС, вроде так.
|
Открываем файл: configs\creatures\game_relations.ltx
Там есть таблица, где все группировки перечислены в шапке таблицы и в первом столбике. Выбрав нужную группировку в левом столбике прослеживай выбранную строчку до пересечения со столбиком интересующей группировки. В точке пересечения будет циферка отношений группировок: -5000 враги, 1000 и более друзья, -1000 и менее враги, 0 нейтралы.
вот таблица. выбираем бандитов (2 строчка) ведём пальцем до столбика долга -5000. Не любят долг. Выбираем строчку долг, ведём пальцем до столбика бандитов -5000. Нелюбовь взаимная.
[communities_relations]
; |actor|bandit| dolg|ecolog|freedom|killer| army|monolith|monster|stalker| zombied|
;============================================================
actor = 0, 0, 0, 0, 0, -1000, 0, -5000, -5000, 0, -5000
bandit = 0, 5000,-5000, 0, -5000, 0, -5000, -5000, -5000, -1000, -5000
dolg = 0, -5000, 5000, 0, -5000, 0, 0, -5000, -5000, 0, -5000
ecolog = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
freedom = 0, -5000,-5000, 0, 5000, 0, 0, -5000, -5000, 0, -5000
killer = -1000, 0, 0, 0, 0, 1000, -5000, -5000, -5000, 0, -5000
army = 0, -5000, 0, 0, 0, -5000, 1000, -5000, -5000, 0, -5000
monolith = -5000, -5000,-5000, 0, -5000, -5000, -5000, 1000, -5000, -5000, 1000
monster = -5000, -5000,-5000, 0, -5000, -5000, -5000, -5000, 0, -5000, -5000
stalker = 0, -1000, 0, 0, 0, 0, 0, -5000, -5000, 0, -5000
zombied = -5000, -5000,-5000, 0, -5000, -5000, -5000, 1000, -5000, -5000, 1000
|
Инфопоршни - это флаги, которые фиксируют ту или иную игровую ситуацию. Невыполненный квест, варианты диалогов, логика неписей, ограничение в действиях ГГ: всё это определяет комбинация инфопрошней. Да, можно создать глобальные переменные и в них заносить варианты управления событиями игры. Но ведь их надо сохранять в сейвах. А инфопоршни сохраняются прозрачно от скриптера! Плюс гибкая система управления: можно выставить инфопоршень, а можно его сбросить. Так можно многократно использовать один и тот же инфопоршень для однотипных задач.
|
Пример на FN2000
Файлы:
• | gamedata\configs\ui\inventory_upgrade.xml |
• | gamedata\configs\ui\inventory_upgrade_16.xml |
К примеру, нам не понравился апгрейд с прицелом ФН2000, делаем скрин веток апгрейда:

Открываем файл inventory_upgrade и ищем строчку upgrade_scheme_fn2000
<template name="upgrade_scheme_fn2000">
<column>
<cell x="0" y="24" point_x="95" point_y="205"/>
<cell x="0" y="126" point_x="110" point_y="195"/>
<cell x="0" y="228" point_x="80" point_y="190"/>
<cell x="0" y="335" point_x="110" point_y="160"/>
</column>
<column>
<cell x="100" y="0" point_x="120" point_y="200"/>
<cell x="100" y="49" point_x="210" point_y="205"/>
<cell x="100" y="102" point_x="185" point_y="200"/>
<cell x="100" y="151" point_x="185" point_y="200"/>
<cell x="100" y="204" point_x="135" point_y="195"/>
<cell x="100" y="253" point_x="60" point_y="185"/>
<cell x="100" y="335" point_x="175" point_y="160"/>
</column>
<column>
<cell x="200" y="0" point_x="95" point_y="185"/>
<cell x="200" y="49" point_x="250" point_y="205"/>
<cell x="200" y="102" point_x="125" point_y="190"/>
<cell x="200" y="151" point_x="125" point_y="190"/>
<cell x="200" y="204" point_x="160" point_y="200"/>
<cell x="200" y="253" point_x="145" point_y="170"/>
<cell x="200" y="310" point_x="145" point_y="170"/>
<cell x="200" y="360" point_x="110" point_y="160"/>
</column>
</template>
|
Важно!
<column>
<cell x="0" y="24" point_x="95" point_y="205"/>
<cell x="0" y="126" point_x="110" point_y="195"/>
<cell x="0" y="228" point_x="80" point_y="190"/>
<cell x="0" y="335" point_x="110" point_y="160"/>
</column>
|
<column>
<cell x="100" y="0" point_x="120" point_y="200"/>
<cell x="100" y="49" point_x="210" point_y="205"/>
<cell x="100" y="102" point_x="185" point_y="200"/>
<cell x="100" y="151" point_x="185" point_y="200"/>
<cell x="100" y="204" point_x="135" point_y="195"/>
<cell x="100" y="253" point_x="60" point_y="185"/>
<cell x="100" y="335" point_x="175" point_y="160"/>
</column>
|
<column>
<cell x="200" y="0" point_x="95" point_y="185"/>
<cell x="200" y="49" point_x="250" point_y="205"/>
<cell x="200" y="102" point_x="125" point_y="190"/>
<cell x="200" y="151" point_x="125" point_y="190"/>
<cell x="200" y="204" point_x="160" point_y="200"/>
<cell x="200" y="253" point_x="145" point_y="170"/>
<cell x="200" y="310" point_x="145" point_y="170"/>
<cell x="200" y="360" point_x="110" point_y="160"/>
</column>
|
Итак, в качестве примера, я хотел удалить прицел, сравнимся ещё раз со скрином веток апгрейда ФН2000

Всё в порядке
<template name="upgrade_scheme_fn2000">
<column>
<cell x="0" y="24" point_x="95" point_y="205"/>
<cell x="0" y="126" point_x="110" point_y="195"/>
<cell x="0" y="228" point_x="80" point_y="190"/>
<cell x="-9999999990" y="335" point_x="110" point_y="160"/>
</column>
<column>
<cell x="100" y="0" point_x="120" point_y="200"/>
<cell x="100" y="49" point_x="210" point_y="205"/>
<cell x="100" y="102" point_x="185" point_y="200"/>
<cell x="100" y="151" point_x="185" point_y="200"/>
<cell x="100" y="204" point_x="135" point_y="195"/>
<cell x="100" y="253" point_x="60" point_y="185"/>
<cell x="-999999999100" y="335" point_x="175" point_y="160"/>
</column>
<column>
<cell x="200" y="0" point_x="95" point_y="185"/>
<cell x="200" y="49" point_x="250" point_y="205"/>
<cell x="200" y="102" point_x="125" point_y="190"/>
<cell x="200" y="151" point_x="125" point_y="190"/>
<cell x="200" y="204" point_x="160" point_y="200"/>
<cell x="200" y="253" point_x="145" point_y="170"/>
<cell x="-999999999200" y="310" point_x="145" point_y="170"/>
<cell x="-999999999200" y="360" point_x="110" point_y="160"/>
</column>
</template>
|
Что собственно мы сделали? Убрали с глаз долой апгрейд прицела, тоже самое делаем в файле inventory_upgrade_16
Ах да, чуть не забыл. Вот скрин получившегося меню апгрейда

Собственно всё просто. Начало новой игры не требуется.
|
В файле configs\creatures\actor.ltx, параметр jump_speed
|
параметр cost в файлах:
configs\misc\outfit.ltx -- бронежилеты
\configs\misc\outfit_upgrades\... -- файлы с апгрейдами
|
используем прекондишены:
<рrесоnditiоn>actor_has_item(ПРЕДМЕТ)</рrесоnditiоn> -- на единичный экземпляр
<рrесоnditiоn>actor_has_item_count(ПРЕДМЕТ:ЧИСЛО)</рrесоnditiоn> -- на ЧИСЛО экземпляров
|
Защитные секции в configs\creatures\m_stalker.ltx
Чем меньше значение, тем меньше урон получает перец. Вот Стрелок:
[stalker_immunities_strelok]
burn_immunity = 0.0
strike_immunity = 0.0
shock_immunity = 0.0
wound_immunity = 0.0
radiation_immunity = 0.0
telepatic_immunity = 1.0
chemical_burn_immunity = 0.0
explosion_immunity = 0.0
fire_wound_immunity = 0.0
wound_2_immunity = 0.0
В этом же файле каждой группе сталкеров присваивается своя секция иммунитета.
Но есть исключения.Например, когда отряд полез в тоннель на Припять, ему заменили все коэффициенты.
|
В файлах configs\weathers\...
изменить параметр:
rain_density
чем выше число, тем больше вероятностья дождя. (значение должно быть до 1.0)
|
configs\creatures\m_stalker.ltx
eye_fov - угол зрения
eye_range - дальность зрения
смотреть для каждой группы персов
|
в секцию прицела добавить строки:
секции прицелов лежат в файле: configs\weapons\addons\w_scopes.ltx
scope_alive_detector = scope_detector (это автозахват)
scope_nightvision = scope_contrast (это контрастность)
|
файл configs\misc\tm_jupiter.ltx
секция [jup_b218_actor_outfit]
строка
actor_has_item(scientific_outfit) ---- ГГ должен иметь(костюм)
PS: Данный способ не проверен, а у меня есть другой
|
Файл: \configs\ui\ui_mm_main.xml
|
В конфиге бинокля:
vis_frame_speed = 0 ; скорость, с которой наводится рамка на цель
vis_frame_color = 0.0,0.0,0.0,0.0 ; цвет рамки RGBA (A) Не учитывается
found_snd = $no_sound
catch_snd = $no_sound
|
в файле configs\ui\zone_map.xml
<static_counter x="0.94" y="0.5" width="18" height="17" alignment="c">
<text_static width="18" height="17">
<text align="c" font="graffiti19" color="ui_0"/>
</text_static>
</static_counter>
|
В конфиге оружия добавить (изменить) параметр
scope_dynamic_zoom = on
|
gamedata\configs\text\rus\st_dialogs_zaton.xml -- Фразы которые он говорит
gamedata\scripts\dialogs_zaton.script -- Функции на проверку\передачу денег
|
force_min = 10 ;минимальная сила броска
force_const = 20 ; стандартная сила броска (метры)
force_max = 20 ; максимальная сила броска (в метрах)
force_grow_speed = 10 ; скорость набора силы броска (метры в секунду)
|
В файле : gamedata\configs\misc\squad_descr.ltx покоятся описания квадов, вам нужны исключительно эти строки, в каждой секции сквада.
Сталкеры:
npc_in_squad = 1, 1 (количество нпс в скваде)
как видите, было "2, 3", ставьте "1, 1" и будут у вас сталкеры-одиночки.
Мутанты:
Далее, если хотите увеличить популяцию монстров, в логику смартов лучше не лезть, а сразу записывать здесь 4, 6 и т.д
Две цифры 2, 3 означают минимум, максимум, поэтому сначала ставите меньшее, за ним большее.
НО: не ставте только одну цифру, и 0, 0 я еще не проверил .
Так же можно изменить иконку отображения командира на карте на обычную точку, и вуаля ТЧ, одиночки и все говорят. Но это не касается квестовых, а тех лучше не трогать.
Чтобы сквады приобрели новую конфигурацию необходима новая игра!
|
1) В файле: gamedata\configs\ui\textures_descr\ui_common.xml правим
<texture id="ui_minimap_squad_leader" x="751" y="816" width="5" height="5" />
2) В файле:\gamedata\configs\ui\map_spots.xml (map_spots_16.xml - широкоформатник)
ищем строки:
<!-- Отряды -->
<alife_presentation_squad_friend>
Делаем как показано :
У друзей точки лидеров будут точками, а не звездочек.
<alife_presentation_squad_friend_spot_mini x="0" y="0" width="5" height="5" alignment="c" stretch="1" location_level="10" scale_min="3.0" scale_max="5.1" scale="0">
<texture r="0" g="255" b="0">ui_minimap_squad_leader</texture>
</alife_presentation_squad_friend_spot_mini>
У нейтралов также точки + меняем цвет.
<alife_presentation_squad_neutral_spot_mini x="0" y="0" width="5" height="5" alignment="c" stretch="1" location_level="10" scale_min="3.0" scale_max="5.1" scale="0">
<texture r="255" g="200" b="0">ui_minimap_squad_leader</texture>
</alife_presentation_squad_neutral_spot_mini>
|
Папка: gamedata\configs\ui файл scopes и scopes_16 (редактировать и там, и там)
Открываем scopes и добавляем строчки:
<wpn_crosshair_PRIMER x="0" y="0" width="1024" height="768">
<auto_static x="0" y="0" width="1024" height="768" stretch="1">
<texture>wpn_crosshair_PRIMER</texture>
</auto_static>
</wpn_crosshair_PRIMER>
В файле scopes_16 "почти" тоже самое:
<wpn_crosshair_PRIMER x="0" y="0" width="1024" height="768">
<auto_static x="85" y="0" width="854" height="768" stretch="1">
<texture>wpn_crosshair_PRIMER</texture>
</auto_static>
<auto_static x="0" y="0" width="86" height="768" stretch="1">
<texture>wpn_crosshair_add_l</texture>
</auto_static>
<auto_static x="939" y="0" width="85" height="768" stretch="1">
<texture>wpn_crosshair_add_r</texture>
</auto_static>
</wpn_crosshair_PRIMER>
Обратите внимание: width="1024" height="768" <- это разрешение экрана, поставьте своё разрешение так, чтобы текстура прицела была круглая. Бывают случаи, что текстура в углу экрана и стрелять теоретически приходится от бедра.
Далее открываем файл gamedata\configs\ui\textures_descr\ui_ingame и добавляем следующее:
<file name="wpn\wpn_crosshair_PRIMER">
<texture id="wpn_crosshair_PRIMER" x="0" y="0" width="1024" height="1024" />
</file>
Тут, обратите внимание: width="1024" height="1024" <- разрешение текстуры, не изменять!
Добавляем текстуру нового прицела в файл gamedata\textures\wpn\wpn_crosshair_PRIMER.dds
В конфиге оружия можно сделать как один прицел:
scope_texture = wpn_crosshair_PRIMER
и удалить строчки:
"У Калашей, Абакана, Вала, Грозы":
scopes_sect = scope_..., scope_x2.7_..., scope_live_detector_..., scope_night_...
[scope_...]
scope_name = wpn_addon_scope
scope_x = 47 ; offset in inventory icon
scope_y = 0
[scope_x2.7_...]
scope_name = wpn_addon_scope_x2.7
scope_x = 47 ; offset in inventory icon
scope_y = 0
[scope_live_detector_...]
scope_name = wpn_addon_scope_detector
scope_x = 47 ; offset in inventory icon
scope_y = 0
[scope_night_...]
scope_name = wpn_addon_scope_night
scope_x = 47 ; offset in inventory icon
scope_y = 0
"Для LR300, Отбойника и... кажется всё":
scopes_sect = scope_susat_..., scope_susat_x1.6_..., scope_susat_custom_..., scope_susat_dusk_..., scope_susat_night_...
[scope_susat_...]
scope_name = wpn_addon_scope_susat
scope_x = 75
scope_y = -5
[scope_susat_x1.6_...]
scope_name = wpn_addon_scope_susat_x1.6
scope_x = 75
scope_y = -5
[scope_susat_custom_...]
scope_name = wpn_addon_scope_susat_custom
scope_x = 75
scope_y = -5
[scope_susat_dusk_...]
scope_name = wpn_addon_scope_susat_dusk
scope_x = 75
scope_y = -5
[scope_susat_night_...]
scope_name = wpn_addon_scope_susat_night
scope_x = 75
scope_y = -5
|
Вычистить в файле configs\zonez\zone_teleport.ltx все партиклы и саунды
|
Описываем секции приветствий в файле gamedata\configs\misc\script_sound_zaton.ltx
[list_script_sound_zaton]
;------------------------
zat_privet_man_greeting
zat_privet_man_farewell
;--------ниже добавим секции--------
[zat_privet_man_greeting]
type = npc
path = scenario\zaton\zat_privet_man_greeting_ ;---где находятся зв.файлы
shuffle = rnd
idle = 0,0,100
[zat_privet_man_farewell]
type = npc
path = scenario\zaton\zat_privet_man_farewell_
shuffle = rnd
idle = 1,1,100
В папку gamedata\sounds\characters_voice\scenario\zaton\ поместить звуковые файлы zat_privet_man_greeting_1, zat_privet_man_greeting_2 (3 - сколько хочешь)
zat_privet_man_farewell_1 (2 -...)
|
Редактируемые файлы:
configs\misc\items.ltx - описание и настройка секции предмета
dynamics\devices\dev_имяпредмета\dev_имяпредмета.ogf - модель предмета, путь прописан в описании секции в строке visual
textures\папка\имяпредмета.dds - текстура, путь прописан в модели
textures\ui\ui_icon_equipment.dds - иконка в инвентаре, размеры и местонахождение в описании секции строки inv_grid_xxx
configs\text\rus\st_items_equipment.xml - описание предмета и название, сцылки в описании секции строки description,inv_name,inv_name_short
1. dynamics\devices\dev_имяпредмета\dev_имяпредмета.ogf
Модель скопировать и переименовать. Например, возьмем консерву и назовем ее yad.ogf
Открываем yad.ogf hex-редактором и ищем там строку models\model
Строка перед ней - путь к текстуре, в модели консервы указан общий файл для еды item\item_food
Переименовываем эту строку в item\item_yad_, сохраняем изменения
2. textures\папка\имяпредмета.dds
Теперь берем из ресурсов игры файл item_food.dds и переименовываем в item_yad_.dds
Изменяем текстуру и сохраняем
3. configs\text\rus\st_items_equipment.xml
Открываем файл, в самом начале (после строки string_table) вставляем свои описания, примерно так (без моих комментариев):
<string id="st_yad"> <!--заголовок описания, в кавычках пишите что угодно, но потом это нужно будет указать в items.ltx в строке inv_name именно этот id -->
<text>Яд</text>
</string>
<string id="st_yiad_descr"> <!-- само описание предмета, указать в items.ltx в строке decription -->
<text>Яд обычный, производство ООО "Душегуб". Состав неизвестен, но что-то шибко гадкое. Противопоказний нет. Срок годности не ограничен.</text>
</string>
4. textures\ui\ui_icon_equipment.ddsЮ
Открываете файл, настраивате сетку, ищете пустое место, рисуете там свою иконку, запоминаете положение в сетке, сохраняете файл
5. Теперь собираем все в кучу
открываем configs\misc\items.ltx
находим нужную секцию - [conserva]:booster
выделяем ее полностью и копируем ниже
переименовываем новую секцию в [yad]:booster
подставляем:
visual - имя нашего файла модели
description - id описания предмета из st_items_equipment.xml
inv_name - id заголовка описания из st_items_equipment.xml
inv_name_short - id заголовка описания из st_items_equipment.xml
inv_grid_x - положение иконки в файле textures\ui\ui_icon_equipment.dds
inv_grid_y - положение иконки в файле textures\ui\ui_icon_equipment.dds
потом настраиваем параметры по вкусу, вот мой яд
boost_time = 0.0 время действия в секундах, только для boost-параметров (хотя не проверял, но логично)
eat_satiety = 0 насыщение
eat_power = -3 влияние на актора
и при желании меняем use_sound - звук при использовании предмета
сохраняем файл
6. напоследок грузим через configs\gameplay\character_desc_general.xml новенькие консервы в инвентарь актору
...
yad = 5 \n
...
запускаем игру, кормим актора ядом и убеждаемся что он теряет силы при этом.
p.s. игра пользует одну текстуру на всю консерву, по этому с одной стороны надписи будут зеркальными; в принципе, надписи лучше вообще не делать
|
В файле gamedata\configs\ui\game_tutorials.xml
Найди там секции intro_logo и intro_game, замени их пустышками:
<intro_logo>
<global_wnd width="1024" height="768">
</global_wnd>
<item>
<main_wnd>
</main_wnd>
</item>
</intro_logo>
<intro_game>
<global_wnd width="1024" height="768">
</global_wnd>
<item>
<main_wnd>
</main_wnd>
</item>
</intro_game>
|
За HUD рук отвечает эта строчка в конфиге бронежилета:
player_hud_section = actor_hud_06
Все HUD-ы хранятся в файле actor.ltx
Секции вида:
[actor_hud_05]:actor_hud
visual = ; путь до модели HUD-а
|
В файле gamedata\configs\ui\maingame.xml найти <quick_slot0
и изменить в тегах quick_slot0...quick_slot3 и quick_slot0_text...quick_slot3_text положения по x, например, можно поставить x="4000"
|
Для изменения этого недоразумения необходимо в секции костюма поправить строчку actor_visual
В значение необходимо указать путь до OGF модели сталкера относительно папки meshes
|
В папке configs\creatures\ Лежат конфиги всех монстров. За количество жизней отвечает параметр:
Health = 400 (тут 400 единиц здоровья)
Стоит заметить, что в одном файле хранятся профили на разных монстров одного и того же вида... (boar_weak - слабый кабан, boar_normal - обычный кабан -- Эти два профиля хранятся в одном файле m_boar.ltx)
|
Нужно созданную фракцию внести в файлы:
_g.script
в список: squad_community_by_behaviour = { ...
sound_theme.script
в присвоение переменной: local avail_communities = parse_names ...
Вот тут прописывается возможность произнесения фраз группировкой в принципе!
squad_behaviours.ltx
создать секцию: [<Имя группировки>]:default_behaviour
В файлы death_manager.script, death_items_by_communities.ltx вносить группировку не обязательно но для разнообразия можно.
И это только начальные настройки, группировка сразу не заговорит, нужно будет определить звуковые темы для нее.
Если НПС обладает своей индивидуальной логикой то разговор нужно прописывать в ней. Например так:
on_info=%=play_sound(<Имя звуковой схемы>)%
Звуковые схемы для всех НПС прописаны здесь: script_sound.ltx, script_sound_<Имя локации>.ltx, script_sound_music_and_stories.ltx
Стоит обратить внимание что некоторые звуковые схемы привязаны к своим группировкам и ссылаются на разные папки со звуковыми файлами.
Разбор 1 схемы:
[state_1]
type = npc|actor|3d
actor_stereo = true|false
npc_prefix = true|false
path = states\idle\idle_
shuffle = rnd|seq|loop
idle = 3,5,100 ;min,max,rnd
Где:
state_1 - имя звуковой схемы.
type - тип источника (npc - НПС, actor - ГГ, 3d - другие объекты).
actor_stereo - стерео режим звука для ГГ.
npc_prefix - использовать или нет часть пути к звуковому файлу из идентификатора НПС.
path - часть пути относительно npc_prefix или папки sounds и часть имени файла.
shuffle - принцип выбора номера файла (rnd - случайно, seq - последовательный перебор без возврата к началу, loop - последовательный перебор с возвратом к началу)
idle = 7,10,100 - минимальная, максимальная пауза в сек до проигрывания следующего звука, 100 - параметр для генератора случайных чисел всегда 100
Также есть:
avail_communities - разрешенная группировка
is_combat_sound - является ли звук звуком боя
group_snd - не совсем понятно, видимо будет ли звук слышать другие НПС
Путь к звуковому файлу и имя файла определяется относительно папки sounds следующим образом:
<snd_config> + <path> + <Номер файла>,
где snd_config из параметров НПС в разделе specific_character файлов character_desc_*.xml.
Включать или не включать первое слагаемое зависит от параметра npc_prefix.
|
Описание уникльных (и квестовых предметов) в том числе КПК в этом файле configs\misc\quest_items.ltx
Например КПК Таченко:
[jup_b46_duty_founder_pda]:device_pda
$spawn = "quest_items\jup_b46_duty_founder_pda"
visual = dynamics\devices\dev_pda\dev_pda.ogf
description = st_jup_b46_duty_founder_pda_desc
inv_name = st_jup_b46_duty_founder_pda_name
inv_name_short = st_jup_b46_duty_founder_pda_name
can_trade = false
cost = 20
quest_item = true
story_id = jup_b46_duty_founder_pda
Проигрывание звука при подборе реализуется в скрипте квеста например так:
on_info = {=actor_has_item(jup_b46_duty_founder_pda)} %=play_sound(jup_b46_duty_founder_pda_diary)%
|
Папка configs\text\rus\
Файлы:
• | st_characters.xml - уникальные имена (такие как Борода, Сыч, Дегтярев...) |
• | st_generate_fnames.xml - генерируемые имена |
• | st_generate_snames.xml - генерируемые прозвища |
|
В SGM запрещение использования гранат сводится к простому изъятию их у НПС, при помощи специального скрипта.
Для чистой ЗП можно применить аналогичный метод: убрать гранаты из стартового инвентаря всех НПС (файлы character_desc_*.xml) и запретить в скрипте xr_corpse_detection.script НПС их подбирать
|
scope_alive_detector = scope_detector - детектор целей
scope_dynamic_zoom = on - динамический зум
|
в файле m_controller.ltx секция [m_controller_attack_effector] параметры поворота камеры:
; camera effects
ce_time = 0.45 ;time
ce_amplitude = -15.0
ce_period_number = 1.5 ;2.0
ce_power = 1.5 ;0.7 ; power
|
Параметры:
Particle_Invisible = anomaly2\bloodsucker_shield
Particles_Invisible_Tracks = monsters\bloodsucker_step
Particles_Invisible_Tracks_Freq = 70;100
Invisibility_BlinkTime = 300
Invisibility_BlinkMicroInterval = 30
Invisibility_EnergySpeed = 0.05
full_visibility_radius = 4 ;5
partial_visibility_radius = 7 ;10
no_visibility_radius = 10 ;15
visibility_state_change_min_delay = 1000 ; ms
Интересные параметры full_visibility_radius, partial_visibility_radius, no_visibility_radius соответственно: радиус полной видимости, радиус частичной видимости, и радиус полной невидимости. В режиме частичной невидимости играются партикли из параметра Particle_Invisible выбирая который можно добиваться разных эффектов во время частичной невидимости.
|
В файлах \configs\scripts\[Location]\smart\*.ltx хранятся параметры смартов, в которых:
max_population - это максимальное число отрядов которое помещается на смарте.
spawn_num - число спавнов
|
wpn_lr300 = 1, silencer, scope \n
|
1. Ищешь имя предмета, которое отображается в игре, в файлах из папки configs\text\rus. (Советую использовать Notepad++ и функцию "поиск по файлам" ([ctrl]+[shift]+[f]))
Например: Комбинезон «СЕВА»
Находишь в файле st_items_outfit.xml
Смотришь на соседние строки:
<string id="scientific_outfit_name">
<text>Комбинезон «СЕВА»</text>
</string>
Отсюда нам нужна строчка из кавычек, тут scientific_outfit_name.
2. Ищем найденную строчку в файлах из папок:
configs\misc\ --- для брони и всеразличных предметов
configs\weapons\ --- для оружия, патрон, аддонов
Находим в файле configs\misc\outfit.ltx
...
[scientific_outfit]:outfit_base
GroupControlSection = spawn_group
.....
inv_name = scientific_outfit_name
inv_name_short = scientific_outfit_name
....
Идем от строки inv_name вверх, до первого [СЛОВО], тут scientific_outfit
Scientific_Outfit и будет искомой секцией
|
В <supplies> [spawn] \n </supplies> пишешь предмет и он при спавне у НПС в инвентаре
Также, необходимо добавить по аналогии предмет в секцию keep_items файла death_generic.ltx, для того чтобы игра не подчищала это
|
В файле game_levels_music.ltx описаны дневные и ночные треки
|
destroy_time = 1800 ; Время детонации 1.8 секунды
blast = 3.0 ; Урон наносимый фугасным воздействием
blast_r = 8 ; радиус фугасного воздействия
blast_impulse = 550 ; Сила удара от фугаса
frags = 300 ; Количество осколков
frags_r = 25 ; Радиус разлета осколков
frag_hit = 3.50; Урон от осколка
frag_hit_impulse = 300 ; Сила удара от осколков
fragment_speed = 500 ; Скорость осколков
|
k_dist (коефф дистанции выстрела)
k_disp (коефф дисперсии выстрела)
k_hit (коефф убойной силы выстрела)
k_impulse (коефф импульса пули)
k_pierce (коефф пробоваемость/бронебойность )
k_ap ( ... )
impair (износ оружия)
buck_shot (количество элемонтов пули)
tracer (трассер)
wm_size (размер пулевого отверстия)
k_air_resistance (сопротивление воздуха)
|
В файле configs\creatures\actor.ltx находим вот это (xxxxx- это уровень сложности на каком ты играешь, например master)
[actor_immunities_gd_xxxxx]
burn_immunity = 1.0 - термозащита
strike_immunity = 1.0 - защита от удара
shock_immunity = 1.0 - элктрозащита
wound_immunity = 1.0 - кровотечение
radiation_immunity = 1.0 - радиозащита
telepatic_immunity = 1.0 - псизащита
chemical_burn_immunity = 1.0 - химзащита
explosion_immunity = 1.0 - защита от взрывов
fire_wound_immunity = 1.0 - пулестойкость
0 - это неуязвимость от данного типа повреждений
1 - защита отсутсвует
|
В файле configs\text\rus\ui_st_loadscreen.xml
Строки <string id="ls_tip_*"> для синглплеера
Строки <string id="ls_mp_tip_*"> для мультиплеера.
|
В XML-файлах описателях UI есть аттрибуты r,g,b - это и есть значение цвета в RGB формате
Если аттрибуты отсутвуют, их можно добавить и они применяться к тексту
|
За худ рук отвечает строка player_hud_section в конфиге костюма
Сами секции описаны в файле actor.ltx (секции вида actor_hud_*)
|
Участвуют след. параметры:
1. hit_power - мощность ствола из файлов параметров стволов
2. k_hit - мощность пули из weapons.ltx для каждого типа патронов
3. k_ap - способность пули пробивать защиту (куртки, броники и т.п)
4. Секции [body_damage_*] и [head_damage_*] из damages.ltx с набором
параметров bip01_* - определяет прочность защиты на каждой части тела (второй параметр).
Далее эти параметры я обозначу как Bd и Hd.
5. hit_fraction из damages.ltx для каждого типа защиты определяет прочность защиты.
Надо упомянуть что параметры броников неписей определяются из файла damages.ltx,
а не из outfit.ltx (этот файл чисто для ГГ).
6. Секция [stalker_damage] из m_stalker.ltx с набором параметров bip01_* - определяет фактор
уменьшения здоровья при попадании в соответсвующую часть тела (первый параметр).
Далее этот параметр я обозначу как Sd.
Далее я опишу алгоритм по которому происходит вычисление повреждений.
Алгоритм был получен опытным путем при стрельбе по неписи в упор и не претендует на истину в последней инстанции.
Контроль количества повреждений производился через hit_callback функцию скрипта.
1. Здоровье неписи лежит в диапазоне от 0 до 100%.
2. Если пуля не бронебойная (k_ap = 0) то урон здоровью вычисляется как:
hit_power * k_hit * hit_fraction * Sd * 100
Полученное число вычитается из здоровья неписи и при достижении <=0 - непись убита.
Т.е. учитывается только фактор защиты в целом без учета степени защиты на разных частях тела.
3. Если пуля бронебойная (k_ap > 0), то ее фактор повреждения зависит от того пробила пуля защиту или нет.
Если пуля не пробила защиту ( k_ap <= Bd(Hd) ) то повреждения считаются как в п.2.
Если пуля пробила защиту ( k_ap > Bd(Hd) ) то повреждения считаются как:
Вычисляется 2 числа и берется большее:
hit_fraction * Sd * 100
и
hit_power * k_hit * F * Sd * 100 где F = (k_ap-Bd)/k_ap или F = (k_ap-Hd)/k_ap
Интересно что урон здоровью в случае пробития брони бронебойной пулей никак не меньше чем фактор ослабления пули броней (hit_fraction * Sd * 100).
И еще о k_ap. Было замечено странное поведение алгоритма расчета урона при значении этого коэффициента выше 0.75.
Пуля наносит как бы двойное повреждение. Одно как бронибойная пробивая защиту, и другое - как не бронибойная пуля.
В результате совокупный урон неписю может составляеть больше чем 2 * hit_power * k_hit * 100.
Скорее всего глюк в игре. Получается, например, при k_ap = 0.75 непись получает 70% урона, а при k_ap = 0.76 - безуслованя смерть.
К тому же этот эффект пропадает, например, при определенных сочетаниях hit_power * k_hit >= 1 и k_ap > 2.2
Так что лучше k_ap ограничить максимум 0.75
Теперь что касаемо пробивания препятствий:
Похоже что параметр k_pierce не используется вообще (наверное пришел из ТЧ). За пробиваемость препятствий отвечает также k_ap.
Вот некоторые его значения:
>0.34 - пробивает тонкие фанерки (двери и т.п.)
>1.0 - пробивает листовой металл
>1.5 - пробивает деревянные брусья и стены деревянных домов
Ну а гаусска с ее k_ap=15 шьет все.
Ты-ы-ыкс, вот мы добрались и до стрельбы неписей по ГГ. Алгоритм тот же самый.
В качестве hit_fraction выступает hit_fraction_actor из outfit.ltx для каждого костюмчика. Повреждения по частям тела расписаны опять же в
damages.ltx в секциях [actor_damage_N]. Ссылки на секции повреждений в параметрах bones_koeff_protection из outfit.ltx для каждого костюма.
Параметр fire_wound_protection не используется.
В инвентаре пулестойкость костюма отображается на основе второго значения из bip01_spine параметра из соответсвующей секции в damages.ltx.
|
За кровотечение у НПС отвечают эти параметры (m_stalker.ltx):
;открытые раны
bleeding_v = 0.01 ;потеря крови при номинальной ране в секунду
wound_incarnation_v = 0.0001 ;крутизна кривой заживления (какой процент раны останется после заживления в игровую секунду)
min_wound_size = 0.01 ;минимальный размер раны при кторой идет кровопотеря
За пятна крови отвечают эти параметры (system.ltx):
[bloody_marks]
wallmarks = wm\wm_blood_1,wm\wm_blood_2,wm\wm_blood_3
dist = 1.0 ;2.4 ;(м) max расстољние отлета крови
max_size = 0.6 ;0.3 ;(м)радиус пљтна при хите силой nominal hit по большому объекту (по маленькому *0.5)
min_size = 0.1 ;(м)минимальнvй радиус пљтна
nominal_hit = 0.1 ;величина номинального хита, при котором разлетаетсљ максимум крови (max_size)
;капли крови
blood_drops = wm\wm_blood_drop_1,wm\wm_blood_drop_2,wm\wm_blood_drop_3,wm\wm_blood_drop_4
start_blood_size = 0.1 ;размер ранv чтоб начала капать кровь
stop_blood_size = 0.005 ;размер ранv чтоб кровь остановилась (должно бvть меньше start_blood_size)
blood_drop_time = 0.1 ;OBSOLETE
blood_drop_time_min = 0.3 ;
blood_drop_time_max = 2.0 ;
blood_drop_size = 0.5 ;размер капли (м) крови, котораљ упала
Стоит помнить, что пулевые ранения дают очень маленький размер ран, поэтому вызвать кровотечение довольно сложно, другое дело нож или раны нанесенные мутантом
|
ph_box0_center = 0.0, 0.9, 0.0
ph_box0_size = 0.35, 0.9, 0.35
ph_box1_center = 0.0, 0.75, 0.0
ph_box1_size = 0.35, 0.75, 0.35
ph_box2_center = 0.0, 0.6, 0.0
ph_box2_size = 0.35, 0.6, 0.35
0 - Коробка ГГ в полный рост
1 - Коробка ГГ в присяде (Ctrl)
2 - Коробка ГГ в глубоком присяде (Ctrl+Shift)
_center - это смещение пивота, _size - размер коробки, все они идут по координатам X,Y,Z
|
Положение оружия в руках меняется в конфиге ствола, точнее в его худ-секции. За это отвечает 4 параметра:
hands_position
hands_orientation
; Для широкоформатов
hands_position_16x9
hands_orientation_16x9
Поможет в настройке положения утилита от Sin!: Weapon Configurator
Как использовать - читаем в Readme
|
#include "ui\<Имя файла>.xml"
В одном из существующих файлов, следует оговориться что, когда инклюд прописывается внутри определенного тега (например xml), то в созданном файле нужно создавать секции исходя из тега xml
|
|