Введение

 Что же такое мод?

Мод (сокр. от «модификация») — модификация или дополнение к компьютерной игре, написанное, как правило, сторонними разработчиками или любителями с помощью SDK, прилагающегося к игре или специальных, разработанных для модифицирования игр любительских программ. В отличие от адд-она, при его разработке часто радикально изменяет баланс сил (в стратегических играх) или набор оружия и возможности героя (в 3D-шутерах).

Мутатор — модификация игры, которая лишь частично изменяет игру. В отличие от модов, которые, как правило, нельзя совмещать (в игре одновременно может быть активно не более одного мода), в одной игре может быть одновременно включено несколько мутаторов.

Порядок, в котором применяются мутаторы, может быть важен. Например, если за мутатором «без снайперской винтовки» применяется мутатор «превратить всё оружие в снайперские винтовки», снайперские винтовки исчезают, а всё остальное оружие превращается в винтовки. Если же применить мутаторы в обратном порядке, исчезает всё оружие.

Подключение мутаторов существует лишь в некоторых играх. Например, они имеются в Unreal Tournament и в трилогии S.T.A.L.K.E.R.

В данное время для игр серии S.T.A.L.K.E.R. было написанно много интересных модов и мутаторов. Кстати, сама компания GSC только "ЗА" любительские моды, ведь с модами растёт и популярность к серии. И многие новички наверное то же хотели бы создать свои моды. Благо доступность многих сайтов позволяет новичкам освоиться в данном направлении. На мой взгляд самыми успешными являются 2 из них: сайт команды АМК и STALKER Inside.

Сегодня я расскажу как сделать свою первую мутацию, а может и свой первый мод.

Сразу хотелось бы сказать новичкам, чтобы стать настоящим мододелом, нужно большое терпение, усидчивость и руки из нужного места. Кстати, голова то же не помешает.




Итак, приступим. Создание модов можно разделить на несколько частей.
  1. Работа с конфигурационными файлами (далее просто конфигами)
  2. Работа со скриптами
  3. Работа с 3D моделями
  4. Работа с текстурами
  5. Работа со звуковыми файлами и видео
  6. Работа с all.spawn-ом

Сразу оговорюсь, если вы новичок, лучше всего начинать с конфигов и текстур.



Данная статья написана для новичков и заострять внимание на различных деталях я пока не буду.

Структура файлов

Теперь разберемся со структурой файлов и форматами.
  1. Все ресурсы игры запакованы в такие архивы gemedata.db*
  2. Если их распаковать специальной программой (Unpacker), то в папке с установленной игрой мы увидим папку gamedata.

Рассмотрим её структуру:
  • ai - искусственный интеллект (далее АИ)
  • anims – папка с разными экранными эффектами (в формате anm и ppe)
  • configs – папка со всеми игровыми конфигами
  • levels – уровни
  • meshes – 3D модели
  • scripts - скрипты
  • shaders – шейдеры (разные спец. эффекты)
  • sounds – звуки
  • spawns - спавн
  • textures – текстуры

Часть первая: Текстуры

  1. Все текстуры в игре используют формат DDS
  2. Открыть их можно через программу WTV
  3. А редактировать с помощью Paint.NET или Photoshop+плагин


Теперь давайте разберёмся со структурой папки

textures:
  • act – папка с текстурами сталкеров, монстров
  • artifact – текстуры артефактов
  • briks – кирпичные стены
  • controller – текстура удара контролёра
  • crete - бетон
  • decal – пыль, плакаты, надписи, мусор
  • detail – пыль, камни, осколки
  • door – текстуры дверей и люков
  • ed -  ******
  • editor - ******
  • floor – пол: бетон, линолеум
  • fx – разные мелочи
  • glas - жалюзи
  • glass - окна
  • glow – свет от солнца и ламп
  • grad – эффекты света
  • grnd – текстуры земли
  • internal – свет от фонарика
  • intro – загрузочные картинки локаций
  • item – игровые предметы: хлеб, колбаса, водка, детекторы, аптечки
  • lights – свет от солнца и ламп
  • map – текстуры карт
  • mtl – текстуры металла
  • outro – видео концовок игры
  • pfx – эффекты аномалий и артефактов (их свечение)
  • prop – текстуры плакатов, приборов, оборудования, бочек, балонов
  • roof - шифер
  • sign – плакаты
  • sky – текстуры неба
  • staff – фон
  • terrain – текстуры террейна
  • tile – керамическая плитка
  • trees - деревья
  • ui – текстуры иконок, и разных менюшек, пда
  • veh – текстуры автомобилей, вертолётов, вагонов
  • vine – текстуры плюща
  • wall – стены домов
  • water - вода
  • wind – текстуры окон
  • wm – текстуры крови и следов от пуль
  • wood – текстуры дерева
  • wpn – текстуры оружия

Часть вторая: Звуки

Все звуки игры имеют формат OGG

Редактировать советую с помощью AudaCity

Часть третья: 3D модели

Так как урок у нас для новичков, то я не буду рассказывать о 3D моделировании. Я расскажу как сделать "новую" модель и добавить ей новую текстуру.

Все модели в формате OGF. Их удобно просматривать с помощью OGFViewer

Давайте сделаем новую модель сталкеру на основе модели обычного нейтрала.

Нам потребуется:
  1. Hex Editor
  2. Paint.NET или Photoshop
  3. 3D-модель из директории meshes/actors/stalker_neutral/stalker_neutral_2.ogf
  4. Текстура textures/act/act_stalker_neutral_2.dds


Запускаем Paint.NET или Photoshop и редактируем текстуру по вкусу:


ДО                                                                   ПОСЛЕ

Сохраняем с новым именем в эту же папку.

ВАЖНО: если имя текстуры было 12 символов, оно и должно остаться 12 символами!!!

Пример:  act_stalker_neutral_2.dds стало act_stalker_neutral_n.dds



Открываем OGF модель с помощью Hex Editor-а, и видим такое окно:

Спойлер


Находим поиском такой текст: act_stalker_neutral_2

Спойлер

Это имя текстуры - переименовываем на наш текст  
Спойлер


Сохраняем. Всё. Осталось прописать нашу модель любому из сталкеров, например Бороде, но это мы научимся делать позже. Такой трюк с заменой текстуры можно проделать с любой моделью.

Часть четвёртая: Конфиги

Конфиги главная часть всего сталкера (не считая скриптов). Сами файлы имеют форматы xml и ltx. Мы будем открывать их блокнотом. Теперь разберёмся со структурой.



Папка configs:
  • сreatures – папка с конфигами НПС, группировок (НПС или NPC - сталкеры, монстры)
  • environment – папка с конфигами погодных эффектов
  • gameplay – второстепенные конфиги НПС, инфопорции, диалоги
  • misc – конфиги артефактов, предметов, еды, одежды, звуков, заданий
  • models – конфиги моделей
  • mp – мультиплеер
  • prefetch – неважно
  • scripts – логика НПС, мутантов, аномалий (НЕ ПУТАТЬ СО СКРИПТАМИ!)
  • text – русские тексты (диалоги, пункты меню, имена сталкеров и т.д.)
  • ui – конфиги положения иконок
  • weapons – конфиги оружия
  • weathers – конфиги погоды
  • zones – конфиги аномалий


FAQ

Вопрос: Как сделать главного героя бессмертным, бесконечно выносливым?

Ответ: Параметры, отвечающие за потерю НР находятся в файле gamedata/configs/creatures/actor.ltx, эти строки:
  • satiety_critical = 0.0 ; критическое значения сытости (в процентах от 0..1) когда здоровье начианает уменьшаться
  • radiation_health_v = 0.004 ; уменьшение здоровья при воздействии радиации
  • health_hit_part = 1.0 ; процент хита, уходящий на отнимание здоровья
  • power_hit_part = 0.1 ; процент хита, уходящий на отнимание силы
  • bleeding_v = 0.002 ;0.0005 ; потеря крови при номинальной ране в секунду
Cделайте их равными 0.0, и вы бессмертны.
  • wound_incarnation_v = 0.0001 ;0.003 ;скорость заживления раны
  • min_wound_size = 0.0256 ;минимальный размер раны, после которого она считается зажившей
  • psy_health_v = 0.001 ;скорость восстановления psy-здоровья
Увеличьте эти параметры в несколько раз

Для бесконечной выносливости обнулите эти параметры:
  • walk_power = 0.00001 ; умешьшение силы за секнду во время ходьбы без учета веса ноши
  • walk_weight_power = 0.00005 ; умешьшение силы за секнду во время ходьбы с учетом веса ноши, для максимального допустимого веса
Для увеличения высоты прыжка, измените этот параметр:
  • jump_speed = 6

Вопрос: Как изменить длину палочки прицела?

Ответ: в gamedataconfigssystem.ltx отредактировать эти строки:
[hud_cursor]
;все размерv в процентах от длинv экрана
  • cross_length = 0.015 ; длина "палочки" прицела
  • min_radius = 0.0 ; минимальнvй радиус прицела (при нулевой дисперсии)
  • max_radius = 1.0 ; максимальнvй радиус
  • radius_lerp_speed = 0.08 ; скорость интерполљции положений прицела
  • cross_color = 0.7,0.7,0.7,0.5 ; цвет прицела
  • disp_scale = 0.08 ; масштаб прицела (относительно радиан)

Вопрос: Как изменить параметры конкретного оружия?

Ответ: Параметры стволов заданы в конфигурационных файлах по адресу gamedata/configs/weapons
Возьмем, для примера, конфиг w_g36.ltx. Он делится на разделы:
  • Первый раздел
Здесь хранится общая информация о оружии - его класс, тип, ссылки на спавн и т.д. Нас интересуют следующие строки:
  • description = enc_weapons1_wpn-g36 - ссылка на string_id, из которого игра подгружает описание этого оружия.
  • ef_main_weapon_type = 2 - основной тип, к которому принадлежит оружие
  • ef_weapon_type = 6 - подтип, к которому принадлежит оружие
  • Второй раздел
Содержит модификаторы, которые даются к углу зрения/дальности обзора NPC, держащего это оружие в руках:
  • holder_range_modifier = 1.85 - во сколько раз увеличивается eye_range
  • holder_fov_modifier = 0.3 - во сколько раз увеличивается eye_fov
  • Третий раздел
Содержит данные о самом оружии, его некоторых характеристиках:
  • cost = 18000 - базовая цена (торговцы умножают её на некоторый коэффициент)
  • weapon_class = assault_rifle - класс оружия (здесь - штурмовая винтовка)
  • ammo_mag_size = 30 - размер магазина
  • ammo_class = ammo_5.56x45_ss190, ammo_5.56x45_ap - типы используемых патронов
  • grenade_class = ammo_m209 - тип используемых гранат
  • fire_modes = 1, -1 - режимы ведения огня
  • hand_dependence = 1 - засивимость о рук (?) - возможно, речь идет о качании ствола
  • single_handed = 0 - держится ли только в одной руке
  • slot = 2 - слот в инвентаре
  • animation_slot = 2 - вид анимации (для пистолета/для винтовки)
  • inv_name = wpn-g36 - ссылка на имя, отображаемое в инвентаре, тоже берется из string table, как и описание
  • inv_name_short = wpn-g36 - короткое имя; в данном случае используется то же самое
  • inv_weight = 3.6 - вес
  • inv_grid_width = 5 - координаты первого угла иконки по x
  • inv_grid_height = 2 - координаты первого угла иконки по y
  • inv_grid_x = 0 - координаты второго угла иконки по x
  • inv_grid_y = 10 - координаты второго угла иконки по y
  • Четвертый раздел
В четвертом разделе хранится информация о износе/отдаче оружия. Практически все параметры там снабжены комментариями, поэтому приведу лишь самые интересные:
  • cam_relax_speed = 5.7 - скорость возврата в исходное положение
  • cam_dispersion = 0.2 - увеличения угла (в градусах) с каждым выстрелом
  • fire_dispersion_condition_factor = 5 - увеличение дисперсии в процентах при максимальном износе
  • misfire_probability = 0.003 - вероятность осечки при максимальном износе
  • misfire_condition_k = 0.05 - порог (в данном случае - 5%), после которого оружие может заклинивать
  • condition_shot_dec = 0.0002 - увеличение износа при каждом выстреле
  • Пятый раздел
Здесь хранится множество параметров, из которых наиболее интересны эти:
  • PDM_disp_base = 3.0 - множитель, на который умножается базовая дисперсия оружия, когда ГГ (Главный Герой) стоит на месте в полный рост;
  • PDM_disp_vel_factor = 1.3 - множитель, на который умножается базовая дисперсия оружия, когда ГГ крутит оружием или бежит;
  • PDM_disp_accel_factor = 1.3 - множитель, на который умножается базовая дисперсия оружия, когда ГГ бежит в спринте;
  • PDM_crouch = 1.0 - множитель, на который умножается базовая дисперсия оружия, когда ГГ идет пригнувшись;
  • PDM_crouch_no_acc = 1.0 - множитель, на который умножается базовая дисперсия оружия, когда ГГ стоит на месте, пригнувшись;
  • hit_power = 0.50, 0.54, 0.57, 0.60 - сила выстрела
  • hit_impulse = 105 - импульс пули (сила, которую летящая пуля передает жертве, влияет на поведение ragdoll-тела)
  • hit_type = fire_wound - тип причиняемых повреждений, в данном случае - пулевые ранения (параметр в синглплеере ни на что не влияет)
  • fire_distance = 600 - максимальная дистанция для выстрела
  • bullet_speed = 925 - начальная скорость пули
  • hud = wpn_g36_hud - внешний вид оружия
  • Шестой раздел
  • position = -0.026, -0.132, 0.0 - позиция по отношению к игроку (?)
  • orientation = 0, 0, 0 - направление, в которое смотрит ствол (?)
  • Седьмой раздел
Содержит описания визуальной стороны оружия и некоторые другие параметры:
  • startup_ammo = 90 - как нетрудно догадаться, стартовое количество патронов (в синглплеере ни на что не влияет)
  • visual = weaponsg36wpn_g36.ogf - модель оружия, используемая NPC, а также игроком при виде от третьего лица
  • ph_mass = 4 - физическая масса, используемая при расчетах
  • scope_status = 1 - ситуация со съемным прицелом
  • silencer_status = 0 - ситуация со съемным глушителем
  • grenade_launcher_status = 0 - ситуация с подствольным гранатометом
Параметры:
  • 0 - нет, новый прикрепить нельзя
  • 1 - уже есть, несъемный
  • 2 - нет, но можно установить новый
  • zoom_enabled = true - есть ли зум (прицеливание)
  • scope_zoom_factor = 33.3 - какой зум дает прицеливание (здесь - 1.8х)
  • scope_texture = wpnwpn_crosshair_g36 - текстура прицельной сетки
  • shell_point = 0.15, 0.0, -0.05 - точка вылета гильз
  • shell_dir = 0.0, 1.0, 0.0
  • fire_point = -0.000000,0.062000,0.134000 - точка выстрела
  • fire_point2 = 0.30, 0.00, 0.05 - точка выстрела (2)
  • fire_bone = wpn_body
  • orientation = 0, 0, 0 - направление
  • position = 0, 0, 0 - позиция
  • visual = weapons/g36/wpn_g36_hud.ogf - модель, отображаемая у нас в руках



Изменение описаний

Описания оружия хранятся в файле: ...S.T.A.L.K.E.R/gamedata/configs/text/rus/string_table_enc_weapons.xml

В нем хранятся строки с названиями и описаниями, на которые ссылаются конфиги оружия. Например, тот же G36 ссылается сюда:

[...]

Штурмовая винтовка немецкого производства, представляющая собой первоклассный образец
современного оружия - лёгкого, надёжного и эргономичного.n Боеприпасы:n обычный 5,56x45 мм
SS109,n бронебойный 5,56x45 мм АР.
[...]

ГП37
[...]Меняя их содержимое, мы меняем описания/названия данного оружия.



Вопрос: Как изменить параметры конкретного боеприпаса?

Ответ: Параметры амуниции заданы в файле по адресу gamedata/configs/weapons/weapons.ltx

например:

  • visual = weapons/ammo/ammo_556x45_ss190.ogf - модель коробки с патронами
  • description = enc_weapons1_ammo_ammo-5.56x45-ss190 - ссылка на string_id, из которого игра подгружает описание этого типа патронов
  • cost = 320 - стоимость одной коробки
  • box_size = 30 - количество патронов в одной коробке
  • inv_name = ammo-5.56x45-ss190 - ссылка на string_id, содержащий имя для инвентаря
  • inv_name_short = ammo-5.56x45-ss190_s - ссылка на string_id, содержащий краткое имя для инвентаря
  • inv_weight = 0.33 - вес
  • inv_grid_width = 2 - координаты первого угла иконки по x
  • inv_grid_height = 1 - координаты первого угла иконки по y
  • inv_grid_x = 14 - координаты второго угла иконки по x
  • inv_grid_y = 11 - координаты второго угла иконки по y
  • k_dist = 1 - коэффициент дальности, сама дальность - в стволе, тупо расстояние.
  • k_disp = 2.5 - кучность, завязана с кучностью в стволе
  • k_hit = 1 - убойность, завязана с убойностью в стволе
  • k_impulse = 1 - чисто наскока эффектно ногами непись дрыгнет во время кердыка
  • k_pierce = 1 - коэффициент наскока испорится броня при попадании
  • impair = 1 - коэффициент износа ствола от пули
  • buck_shot = 1 - кол-во составляющих в пуле (напр картечь - 4, пуля - 1)
  • tracer = on - является ли патрон трассирующим (on/off)
  • wm_size = 0.05 - визуальный размер дырки на стене от пули


Вопрос: Как редактировать торговцев, торговлю с обычными сталкерами?


Ответ: Все настройки, связанные с ассортиментом торговцев в игре, находятся в файлах gamedata/configs/misc/trade_***.ltx Для всех остальных сталкеров - gamedata/configs/misc/trade_generic.ltx

Структура файла
  • Секция [trader_generic_buy]
Эта секция описывает какие товары торговец будет покупать.

Название предмета = минимальная цена покупки, максимальная цена покупки

Например:

wpn_vintorez = 0.5, 0.7 - Это значит что торговец купит оружие от 50% полной его стоимости до 70%, т.е. если Винторез стоит 1000, то торговец купит его в диапазоне от 500 до 700 рублей. Диапазон зависит от отношения торговца к Меченому - чем лучше, тем дороже купит.

  • Секция [supplies_start]
Эта секция описывает какие товары у торговца будут вначале.
Название предмета = количество, вероятность появления

Например:

bandage = 5, 1 - Это значит что у торговеца всегда будут 5 бинтов, с 100 процентной вероятностью появления в магазине.
bandage = 5, 0.6 - А тут уже вероятность появления 60%. Т.е. бинты не всегда будут.

  • Секция [supplies_after_***]
Тоже самое, что в секции [supplies_start], но после выполнения квестов торговца.

  • Секция [trader_start_sell]
Эта секция описывает за какую цену торговец будет продавать.

Название предмета = минимальная цена продажи, максимальная цена продажи

Например:

wpn_vintorez = 1, 2 - Это значит что торговец продаст оружие от 100% полной его стоимости до 200%, т.е. если Винторез стоит 1000, то торговец продаст его в диапазоне от 1000 до 2000 рублей. Диапазон зависит от отношения торговца к Меченому - чем лучше, тем дешевле продаст

  • Секция [trader_after_***_sell]
Тоже самое, что в секции [trader_start_sell], но после выполнения квестов торговца.

деньги торговцев правятся в character_desc_название локации.xml.

Например, в character_desc_escape.xml такая строка: (если infinitive="1" - бесконечные деньги)

Вопрос: Как редактировать костюмы?

Ответ: Итак, секции с параметрами находятся в файле configs/misc/outfit.ltx

Рассмотрим, например, параметры классического костюма сталкера.

[stalker_outfit]:outfit_base ; название секции костюма. именно к нему игра будет обращаться. outfit_base -
базовая (наследуемая) секция (изменять строго не рекомендуется).

  • visual = equipmentsstalker_suit ; модель, используемая для сложенного костюма, лежащего на земле.
  • actor_visual = actorsherostalker_hood.ogf ; модель, используемая для игрока, когда на нем надет костюм.
  • inv_name = stalker_outfit_name ; название в инвентаре.
  • inv_name_short = stalker_outfit_name ; название в инвентаре (в принципе, можно здесь продублировать значение предыдущего параметра - так чаще всего и делают).
  • description = stalker_outfit_description ; ссылка на текстовую строку
  • с описанием.
  • inv_weight = 5.0 ; вес.

; далее идут параметры иконки в инвентаре.

inv_grid_width = 2
inv_grid_height = 3
inv_grid_x = 6
inv_grid_y = 15
full_icon_name = npc_icon_stalker_outfit ; название иконки.

cost = 15000 ; базовая цена (см. примечание 2).
full_scale_icon = 14,11 ; иконка сталкера в костюме в полный рост (отображается в инвентаре справа).
nightvision_sect = effector_nightvision_bad ; тип ПНВ ("плохой" - зеленый, "хороший" - синий).

; ниже идут параметры защиты владельца от различных типов воздействий,
обеспечиваемые костюмом.
  • burn_protection = 0.5 ; защита от воздействия огня (костры, аномалия "Жарка" и т.д.).
  • strike_protection = 0.5 ; защита от ударов (наносятся мутантами, например, псевдогигантом).
  • shock_protection = 0.5 ; защита от поражения электричеством.
  • wound_protection = 0.4 ; защита от ранений (наносятся мутантами, например, собаками, кровососами и т.д.).
  • radiation_protection = 0.5 ; защита от радиации.
  • telepatic_protection = 0.0 ; защита от пси-воздействия (например, присутствие контроллера серьезно влияет на psy_health).
  • chemical_burn_protection = 0.5 ; защита от химического воздействия.
  • explosion_protection = 0.3 ; защита от взрывов/осколков.
  • fire_wound_protection = 0.3 ; защита от огнестрельного оружия (наиболее важный параметр для большинства костюмов).
  • power_loss = 0.87
  • bones_koeff_protection = gilet_antigas_damage

[sect_stalker_outfit_immunities] ; коэффициенты иммунитета самого костюма, то есть - то, насколько сильно он сам подвержен повреждениям от различных типов воздействий. по значениям каждого типа - см. выше.
  • burn_immunity = 0.03
  • strike_immunity = 0.01
  • shock_immunity = 0.03
  • wound_immunity = 0.015
  • radiation_immunity = 0.00
  • telepatic_immunity = 0.00
  • chemical_burn_immunity = 0.03
  • explosion_immunity = 0.03
  • fire_wound_immunity = 0.01


Вопрос: Как сделать так, чтобы стволы не убирались сами?

Ответ: Изменить эти строки в файле gamedata/scripts/sr_no_weapon.script

function action_no_weapon:zone_enter()
self.state = state_inside
bind_stalker.restore_weapon(self.object:id())
end
function action_no_weapon:zone_leave()
self.state = state_outside
bind_stalker.restore_weapon(self.object:id())
end



Вопрос: Как реализовать качание прицела?

Ответ: Конфиги, отвечающие за эту особенность, в файле gamedata/configs/misc/effectors.ltx:

[zoom_inertion_effector]
  • camera_move_epsilon = 0.03 ;разница между двумя векторами направления камера, когда считается что камера двинулась
  • disp_min = 0.01
  • speed_min = 0.00001
  • zoom_aim_disp_k = 1.0 ; коэффициенты соотношения полной дисперсии стрельбы
  • zoom_aim_speed_k = 0.0025 ; и покачивания прицела
  • delta_time = 3000 ; время через которое эффектор меняет направление движения (в милисекундах)


Вопрос: Как "изменить" рост главного героя?

Ответ: В файле gamedata/configs/creatures/actor.ltx поменять параметр camera_height_factor = 0.92



Вопрос: Где лежат конфиги артефактов?

Ответ: Все артефакты описаны в файле gamedata/configs/misc/artefacts.ltx




Вопрос: Как восстановить активацию артефактов?

Ответ: Распишу по пунктам как добавить например к "огненому шару" аномалию Жарка...

Открываете файл: gamedata/config/misc/artefacts.ltx

И там в самом начале файла такая секция:

;Артефакты, которые при активизации создают аномальные зоны

;формат: {секция_артефакта} = {секция_зоны},Radius,Power

[artefact_spawn_zones]

af_medusa = zone_mosquito_bald_weak, 2.0, 30.0

Обозначает что артефакт af_medusa при активации создаст аномальную зону zone_mosquito_bald_weak с радиусом 2 метра и мощностью 30 (возможно влияет и на время жизни аномалии)

Кончается этот список по идее строчкой: mp_af_electra_flash = zone_witches_galantine, 3, 50.0

и сразу после неё пишете: af_fireball = zone_zharka_static, 3, 30.0

В принципе можно прописать там не статик а zone_zharka_weak незнаю что из них правильнее использовать... статик работает тоже.В той-же папке есть файл zone_zharka, где описаны свойства зон _weak, _average, _strong( слабая, средняя, сильная), а также зона zone_zharka_static.

После этого у вас игра станет вылетать с ошибкой про невозможность обнаружить последовательность описывающую анимацию активации аномалии.

А это всё там же в начале файла чуть ниже того где вы добавили новый артефакт в список есть такие строчки:

  • [af_activation_gravi]

;----------------------------------------------------------------------------------------------------------------------------------------

;format:                        time(sec),    sound_name,                 light_R,G,B,      light_range,        particle_name,                        af_animation_name

;----------------------------------------------------------------------------------------------------------------------------------------

starting                    =    5.0,        anomalygravi_idle00,    0.5, 1.0, 1.5,      5.0,            "anomaly2artefact_gravi_blast_start",    "idle"

flying                        =    2.0,        anomalygravi_idle01,    0.8, 1.0, 1.2,      3.0,            "anomaly2artefactartefact_gravi",                "idle"

idle_before_spawning        =    5.0,        anomalygravi_blowout5,    1.0, 1.0, 1,        0.0,            "anomaly2artefact_gravi_blast_finished",    "idle"              

spawning                    =    1,          anomalygravity_entrance,    0.9, 1.1, 1.01,      0.0,        "",        "idle"


Что как раз и описывает анимацию..



По-хорошему надо написать свою анимацию к жарке но это честно говоря не обязательно... потому что нам сейчас важна не красота а работоспособность.... Так вот... из заголовка "[af_activation_gravi]" берем название последовательности af_activation_gravi и ищем сам артефакт af_fireball (кто уже забыл зачем, мы на него собирались вешать новую активацию)

Найдете что-то вроде:

  • [af_fireball]:af_base

GroupControlSection    = spawn_group

$spawn             = "artifactszharka fireball"

$npc            = on                ; option for Level Editor

;$prefetch         = 3

cform           = skeleton

class           = ARTEFACT

visual                = physicsanomalyartefact_fire.ogf

description            = enc_zone_artifact_af-fireball

inv_name            = af-fireball

И где-нибудь тут добавляете строчку: artefact_activation_seq = af_activation_gravi



И на этом всё. Прописываем в artefacts.ltx в блоке [af_base]:identity_immunities вместо ;slot=10 вот это: slot=1. Насколько я знаю, знак ; зоначает, что строка закомментирована(неактивна) У себя я прописывал slot=1 между строчками inv_name = af-electra-moonlight inv_name_short = inv_weight = 0.05 slot = 1 inv_grid_x = 10 inv_grid_y = 10 для того артефакта, который хочу активировать.

В игре берем артефакт в первый слот и активируем.

Часть пятая: Скрипты

В данной части я не буду рассказывать как писать скрипты с нуля. Мы только изучим самый важный из них, на первое время достаточно.
  1. Все скрипты в сталкере написаны на языке программирования Lua. Имеют формат *.script
  2. И их можно открыть обычным блокнотом.
  3. Все скрипты которые мы напишем, будут работать через основной скрипт bind_stalker.script

Как заспавнить (создать, добавить на локу) оружие, предмет, еду и т.д.?

Открываем файл bind_stalker.script и в нём ищем такие строки (ищем с помощью «Ctrl+F»)



            pda.fill_sleep_zones()

            end



И между ними пишем:

            my_spawn.spawn()



Всё это выглядит как:

            pda.fill_sleep_zones()

            my_spawn.spawn()

            end
 

Теперь создаём в папке gamedata/scripts/ файл с именем my_spawn.script (Не путать расширение spawn и scripts. В первом случае это функция в скрипте, во втором формат файла) И в нём пишем
 
function spawn()

            alife():create("NAME",vector():set(X,Y,Z),L_V,G_V)

end
 

Где NAME – имя объекта который спавним (wpn_ak74, medkit, vodka, kolbasa, stalker_outfit и т.д.)

X,Y,Z – координаты

L_V, G_V – левел и гейм вертекс



Всё, заходим в игру, бежим в нужное место и видим наш предмет.
 

Удачи. Продолжение следует…

P.S.: Некоторые туторы я брал с сайта PG, на авторство не претендую. Я лишь подправил ошибки.
Нравится22
Комментарии (44)
  • 8
    bogdan.dm
    Ты думаешь чайники и новички станут это читать?
  • 0
    niko.zvt
    Делая я это не только по своему замыслу, но и по замыслу Arnej
  • 0
    Рашшерх
    Как-то шрифт маловат и большей части картинок нету.
  • 4
    многабукаф, ниасилиль :(
  • 3
    Metal Messiah
    А можно, поподробнее про шкурки и модели?
  • 2
    niko.zvt
    подробно это в какой степени. точнее о чём?
  • 3
    Metal Messiah
    А, всё, не надо. Просто картинок не было, когда спрашивал.
  • 0
    [Pasap]
    Молодец! Что ещё сказать?
  • 1
    гуууд,(29.05.11 23:24)ДА Я ПРОЧИТАЛ ВСЁ!!! ДА Я ЧАЙНИК И МНЕ ПО}{` ЛАЗИЮ ПОКА В КОНФИГАХ НУ НИЧо научусь!
  • 0
    [Pasap]
    Ссылки на WTV нету...
    прошу перезалить
  • 3
    Тефтелина
    Что тут сложного, я вот все прочитал и не ною, хороший гайд +10
  • 3
    А какой фаил отвечает за инвентарь ГГ в начале игры?
  • 1
    niko.zvt
    gamedata\configs\character_desc_general.xml
  • 0
    дядяСаша
    Молодец, я уже не новичок, но много информации новой, а новичкам я считаю это самая лучшая обзорная статья. А я когда начинал перебрал их все какие нашел. Все "глупые" вопросы "начинающих", отпадут сами собой.
    Могу только добавить что есть такой текстовый редактор мало известный (это последняя версия) pspad455b2417 чуть более слабый notepad++
    Его ценность: он не требует установки ни лицензии, работает даже с флешки. А свойства - всё что читали для всех текстовых редакторов он всё делает, даже работает как нех-редактор, макросы у него изумительно работают, (главное удобство пользования). Особенно это нужно когда конфиги оружия редактируешь, если его много(у меня в моде например 160 единиц). Нотепад++ в этом отстаёт сильно.
    а "весит" pspad455b2417 - в распакованом виде 25 мб.

    За статью + 100000000000000!!
  • 0
    спасибо очень полезная инфа особенно по поводу роста гг ато немогу пройти под некоторыми трубами в присядку теперь знаю как уменишьть рост ура +10000
  • 0
    кто-нибудь смотрел папку fx в textures? Там начиная с fx_stalker_028.dds есть кое-какие картинки но в игре их нет.
  • 0
    niko.zvt
    вообще-то эти картинки должны были использоваться в ТЧ, они проигрывались на ТV в баре, но позже их заменили бегущим сталкером. Но удалять не стали.
  • 0
    Тфу блеать про машины не написанно
  • 0
    я прочетал и очень благодарен
  • 0
    здоровски спасибо
  • 0
    Хорошая статья.
  • 0
    Как сделать чтобы ГГ держал оружие дальше от себя. Чтобы его (оружие из 2 слота) было видно полностью.
  • 0
    где конфиг отвечающий за величину-прозрачность-место и т.д. радара? подскажите плз, а то скачал солянку, а там радар мелкий, ни числа неписей, ни времени, ни компаса, охота все вернуть на место(
  • 0
    у меня паинтом не получаеться открыть тектуры
  • 0
    niko.zvt
    Используй Paint.NET а не обычный Paint
  • 0
    Grand-_-97
    Спаун через скрипт.... хм а чем вам не угодил Алл спавн .???распоковывай и создовай чё надо .... Не проще ??
  • 0
    Хорошая статья, мне пригодилась, сложновато по форме немного, но кому надо тот поймет
  • 0
    Народ! Подскажите, как сделать качание взгляда меньше, а то некоторые моды так качают, как с перепоя...
  • 0
    SPOSIBO!!!!!!+10
  • 0
    ребят я вас прошу кто может напишите мне пожалуйста содержимое файла charakter_desc_general от обычного зп очень надо! заранее спс
  • 0
    такая проблема, когда редактирую текстуры в фотошопе через плагин DDS от nvidia, то при сохранении в DDS теряется качество текстуры(расплывается все)
  • 0
    Спасибо материал довольно полезен
  • 0
    niko.zvt
    DedylI9
    Это связанно с настройками DDS формата. Выставь вместо DTX 1 - DTX 5
  • 0
    Как поменять музыку в главном меню?
  • 0
    пытаюсь совместить два мода, работа со скриптами, в файле bind_stalker.script под строкой pda.fill_sleep_zones() от первого мода условие:
    if rx_ai then rx_ai.actor_update() end
    а от второго:
    if dinamic_hud then
    dinamic_hud.update()
    end
    как их можно правильно совместить? прописать условия подряд через and не вышло, по этому я задублировал pda.fill_sleep_zones() и под каждым прописал отдельно условия, после этого игра стала нормально загружаться и работать, но, так как я ничего не смыслю в скриптах, то подозреваю, что такой способ может привести к их некорректной работе. подскажите, как можно правильно решить эту проблему? спасибо.
  • 0
    спасибо попробую что нибудь сделать
  • 0
    Приветствую всех. Ситуация такая: скачал я Кал оф Чернобыль, поиграл, понравилось. Но есть одна проблема, а именно количество патронов в инвентаре у нпс. Ну, к примеру, не будет же элитный свободовец бегать по милитари с одним полным магазином и еще 5 патронами в рюкзаке. Я бы даже не обратил на сие внимание, если бы в каком-то моде(а может и не в одном) не видел бы фикса на это малопатроние у нпс'ов. Просто писать в конфиги каждому сталкеру по паре тройке магазинов в инвентарь будет глупо, ибо там кто с чем только не ходит, те же свободовцы бегают и с 5.7х28 и 5.56, кто-то, например, вообще с дробовиками. Как написать что-то, что могло бы это изменить, я не знаю, посему буду очень благодарен, если кто-то подскажет, что да как надо сделать, желательно подробно(я тот еще чайник(разбираюсь только в конфигах и то на уровне новичка, даже до "сталкера" не дотягиваю))
  • 1
    Хочется побольше о скриптах, побольше идей и шаблонов для функций. Буду с нетерпением ждать.
  • 1
    Всё очень наглядно и хорошо написано, здесь всё, чему я учился 2 года.
  • 0
    TheCrazyCat
    gamedata/configs/gameplay/character_desc_general
  • 0
    Интересует вопрос - скачал мод, где помимо прочего был добавлен научный кост. долга в качестве возможного для похода в Припять. Также были восстановлены в игру (и в продажу остальные научные и другие косты). В связи с вышеперечисленным вознамерился добавить ради ЛОРа и другие косты за замкнутым циклом в качестве возможных для похода по Путепроводу. В файле tm_jupiter по адресу gamedata/scripts/misc нашел собсно, квест, нашел строку с двумя костами вида:
    condlist_0 = {=actor_has_item(scientific_outfit)} complete
    condlist_1 = {=actor_has_item(dolg_scientific_outfit)} complete
    и добавил строчки
    condlist_1 = {=actor_has_item(svoboda_scientific_outfit)} complete
    condlist_1 = {=actor_has_item(ecolog_outfit)} complete
    condlist_1 = {=actor_has_item(monolith_scientific_outfit)} complete
    При запуске сейва, все прописанные косты стали выдавать при помещении в инвентарь спам:
    "Путь в Припять. Найти костюм с замкн. циклом: Выполнено"
    "Путь в Припять. Найти костюм с замкн. циклом: Обновлено"
    И так до бесконечности или пока кост не будет убран.
    Если оставлять в tm_jupiter только первые два - scientific_outfit и dolg_scientific_outfit - при покупке любого из них квест корректно завершается и можно идти в Припять; из чего был сделан вывод, что требуемые для этого квеста косты прописаны где-то еще. Просьба подсказать файл и адрес его расположения.

    UPD1: Уф, разобрался.
    В файле jup_b218_logic (gamedata/configs/scripts/jupiter) в разделе Игрок строчки:
    on_info10 = {+jup_a9_tech_way_info -jup_b218_actor_outfit_task !actor_has_item(scientific_outfit)} %=give_task(jup_b218_actor_outfit) +jup_b218_actor_outfit_task%
    on_info11 = {+jup_a9_tech_way_info -jup_b218_actor_outfit_task !actor_has_item(scientific_outfit)} %=give_task(jup_b218_actor_outfit) +jup_b218_actor_outfit_task%
    Для добавления любой нужной броньки после !actor_has_item(scientific_outfit) добавляем аналогичную строчку !actor_has_item(xxxxx), где xxxxx - название брони (подсмотреть в папке trade или файле outfit). Получаем строку вида:
    on_info10 = {+jup_a9_tech_way_info -jup_b218_actor_outfit_task !actor_has_item(scientific_outfit) !actor_has_item(xxxxx)} %=give_task(jup_b218_actor_outfit) +jup_b218_actor_outfit_task%
    Тоже самое со строчкой on_info11

    Теперь в tm_jupiter добавляем вот сюда строчку с названием коста, который хотете добавить:
    condlist_0 = {=actor_has_item(scientific_outfit)} complete
    condlist_1 = {=actor_has_item(dolg_scientific_outfit) =actor_has_item(xxxxx)} complete
    Теперь добавленный вами кост может быть использован для похода в Припять.

    UPD2: А вот Зулус, гад такой, не пускает - не считает добавленный кост нужным. Проблема сохраняется
  • 0
    shabalin.vadim45
    А хотите ли вы, чтобы у вас и "Долг", и " Свобода" были друзьями? Тогда следуйте этой тактике:
    1. КПК Моргана даём "Свободе".
    2. "Монолит" присоединяем к "Свободе".
    3. Про Флинта-Сороку говорим "Долгу".
    4. КПК Таченко даём "Долгу"
    После этого и "Долг", и "Свобода" будут нейтральными. После выполняем все задания Зверобоя. После получения достижения "Охотник на мутантов", все станут друзьями.
  • 0
    где найти коренную папку gamedata
  • 0
    В trade_generic нет секции supplies_start. Можно, конечно, добавить - и тогда сталкеры будут продавать то, что там пропишешь. Но сами они окажутся безоружными (или возьмут самое лучшее из прописанного там оружия), а игра будет вылетать после каждого убийства сталкера.
    Вероятно, их товар генерируется как-то с учётом их снаряжения, а в файле trade_generic прописаны лишь ценовые рамки и возможность купли тех или иных предметов.

    NoopsDoops
    За десять лет этот вопрос уже обсудили во всех возможных подробностях. В папке с игрой. Если игра чистая или лицензионная, и её там нет - то скачать S.T.A.L.K.E.R. UE и распаковать самому.
B
i
u
Спойлер