ЕДИНЫЙ ФОРУМ S.T.A.L.K.E.R. - МЕТРО 2033

Объявление

УВАЖАЕМЫЕ ПОСЕТИТЕЛИ ! РЕГИСТРИРУЙТЕСЬ И ЧУВСТВУЙТЕ СЕБЯ КАК ДОМА ( НЕ ЗАБЫВАЯ ПРО ОБЩИЕ ПРАВИЛА ) , ПРИСОЕДИНЯЙТЕСЬ !!! администратор единого форума ENIGMADAX .

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » ЕДИНЫЙ ФОРУМ S.T.A.L.K.E.R. - МЕТРО 2033 » МЕТОДЫ РЕДАКТИРОВАНИЯ ФАЙЛОВ СТАЛКЕР ТЧ : » МЕТОДЫ РЕДАКТИРОВАНИЯ ФАЙЛОВ СТАЛКЕР ТЕНЬ ЧЕРНОБЫЛЯ


МЕТОДЫ РЕДАКТИРОВАНИЯ ФАЙЛОВ СТАЛКЕР ТЕНЬ ЧЕРНОБЫЛЯ

Сообщений 1 страница 5 из 5

1

МАТЕРИАЛ БЫЛ СОБРАН ИСХОДЯ ИЗ ТЕМ РАЗЛИЧНЫХ ФОРУМОВ И ВЫШЕДШИХ МОДОВ .
----------------------------------------------------------------------------------------------------------------------------
МЕТОДЫ РЕДАКТИРОВАНИЯ ФАЙЛОВ СТАЛКЕР ТЕНЬ ЧЕРНОБЫЛЯ - 1 ЧАСТЬ .

=====================================================================
Структура файлов и папок:
Рассмотрим, что-же содержится в папке 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.
В звуках, кстати, можно найти много интересного, например: в папке sounds\car содержатся звуки машин(которых в игре нет), а sounds\music\harmonica_1.ogg – файл губной гармошки. Ах да, чуть не забыл, самый главный лол, это файл sounds\car\trabantnoise.ogg

========================================================================

Редактирование тайников:
Частота выпадения:
treasure_manager.script - редактируешь его получаешь частоту выпадание тайников - 65 меняй на что-нить допустим на 10...
Редактирование содержимого:
treasure_manager.ltx в «миске» и во 4 строчке прописываешь, что ты хочешь, получится должно получится примерно так :
[esc_secret_bridge_vagon]
target = 5000
name = esc_secret_0000_name
description = esc_secret_0000_descr
items = ammo_5.45x39_ap,190,medkit_army,6, wpn_addon_scope,wpn_ak74u_m1,stalker_m1,outfit_specnaz_m1, wpn_groza_m1,wpn_spas12_m1,wpn_lr300_m1,wpn_svd_m1,wpn_sig_m1,wpn_colt_m1,wpn_val_m1,wpn_rg6_m1,outf it_dolg_m1
==================================================================
Как поменять плату за проход под мостом на Кордоне:
gamedata.scripts.escape_dialog.script
Почти в самом конце функции has_soldiers_bribe и give_soldiers_bribe, увеличил 500 до 5000.
==================================================================
Устанавливаем высоту прыжка ГГ:
В файле actor.ltx в папке gamedataconfigcreatures, найди параметр jump_speed и задай ему нужную тебе величину, чем больше тем выше ГГ будет прыгать.
=================================================================
Как включить функцию "лечение едой":
В папке gamedata/config/misc находиш файл items.ltx в нем находиш секции [bread], [kolbasa], [conserva] и для каждой из них там есть параметр eat_health который нужно увеличить до нужных дебе значений. По дефолту для bread, eat_health = 0.05, для kolbasa 0.1 и для conserva 0.15
================================================================
Как вернуть свечение артефактов как в оригинальной игре?
мне для младшего брата надо, ибо замучал меня уже...Говорит, что не видит их
В файле artefacts.ltx во всех строках, начинающихся с
;particles
убрать ;
=================================================================

Поставить АМК мод на немецкую лицензионку реально.
Именно в этой последовательности:
1) ставим игру
2) ставим патч 1.4
3) ставим АМК мод
4) ставим АМК кумулятивный фикс
5) открываем папку gamedata, затем открываем файл localisation и меняем в строке rus -> eng
6) открываем папку configs -> text, копируем rus и переименовываем его в eng
==============================================================
длина "палочки" прицела
в файле system.ltx есть строка
cross_length = 0.005 ;длина "палочки" прицела (0.6 - 0.015)
файл находится gamedataconfig
=============================================================
Как добавлять свои "новости Зоны"? Я хочу их побольше сделать... Да и под дух Зоны приспособить.
PS Но и без того - они оживляют игру...
в папке с игрой, в gamedata scripts лежат:
amk_death_lists.script (от чего умер и где)
amk_names_lists.script (кто - имя)
amk_news_lists.script (место, время события, тело сообщения, добавочный мат)
amk_uniq_news_lists.script (уникальные новости)
любой из файлов открываешь блокнотом, правишь, сохраняешь.

========================================================
Броня:
в файле outfits.ltx находишь нужную броню и вписываешь эту строку.
sprint_allowed = false
sprint_allowed = true  - чтобы низя было бегать
Заходишь в папку gamedata_config_misc открываеш файл amk_mod_outfit.ltx
Ищеш в нем категорию [svoboda_yellow_exo_outfit_m1]:outfit_base
И ставиш перед вот этими строками точку с запятой, вот так:
;sprint_allowed = false
;additional_inventory_weight = 15
;additional_inventory_weight2 = 15 ; 40+
Подскажите, плз, как изменить у экзоскелета свободы ПНВ с зеленого на улучшенный, как у ССП99-М?
в папке gamedata-config-misc лежит файл amk_mod_outfits.ltx там находишь строчку: [svoboda_yellow_exo_outfit_m1]:outfit_base наже находишь еще одну строчку: nightvision_sect = effector_nightvision_bad и меняешь на:nightvision_sect = effector_nightvision_good

======================================================
Максимальный вес прописан в gamedata/config/creatures/actor.ltx строчка max_walk_weight
Отображение веса в инвентаре (выше этого значения нельзя бегать): gamedata/config/inventory_sect.ltx строчка max_weight

=====================================================
где находятся конфиги уникального оружия?
файл unique.ltx - там прописаны отличия от оригиналов. Там и правь.

Например береш Грозу 5.45

[wpn_groza_m1]:wpn_groza ;Гроза генерала Воронина
$spawn = "weaponsuniqwpn_groza_m1"
description = enc_weapons1_wpn-groza_m1
inv_name = wpn-groza_m1
inv_name_short = wpn-groza_m1
ammo_class = ammo_5.45x39_fmj, ammo_5.45x39_ap
condition_shot_dec = 0.00005
inv_grid_x = 5
inv_grid_y = 29

тебе надо изменить например емкость магазина тепер идешь в оригинал файл Грозы (не модификации) и копируесч оттуда параметр

ammo_mag_size = хх

теперь меняеш параметр как надо и копируеш его под параметры которые стоят для модификата Грозы все выглядит так

[wpn_groza_m1]:wpn_groza ;Гроза генерала Воронина
$spawn = "weaponsuniqwpn_groza_m1"
description = enc_weapons1_wpn-groza_m1
inv_name = wpn-groza_m1
inv_name_short = wpn-groza_m1
ammo_class = ammo_5.45x39_fmj, ammo_5.45x39_ap
condition_shot_dec = 0.00005
inv_grid_x = 5
inv_grid_y = 29
ammo_mag_size = хх
======================================================

Файл отвечающий за тайники называется treasure_manager.lt
Второй называется treasure_manager.script - отвечает за выдачу.
=====================================================

Ячейки под атрефакты тоже можно - я 16 штук делал. Делается просто - два файла менять всего надо, файл system.ltx, секция inventory, в АМК моде она вообще в отдельный файл вынесена - inventory_sect.ltx называется. Там всего пять строчек:

[inventory]
take_dist = 2
max_weight = 80
max_ruck = 56
max_belt = 6 //16
slots = 11

Надо на вот что изменить: (заметьте, за двойным слешем стоит 16 - это количество слотов под атрефакты хотели сделать сами разработчики игры, потом переделали на 5, а команда АМК - на шесть)

[inventory]
take_dist = 2
max_weight = 80
max_ruck = 56
max_belt = 16
slots = 11

Дальше надо изменить рисунок ячеек в инвентаре, штобы ячеек рисовалось не 6, а 16, по восемь в два ряда, типа как в АМК рисуется по три в два ряда. Делаем так: Берём файл inventory_new.xml, из папки gamedataconfigui, открываем его, находим секцию:

<dragdrop_belt x="786" y="118" width="156" height="104"
cell_width = "52" cell_height="52" rows_num="2" cols_num="3"/>

Это так в моде АМК. Красным выделил ряды и колонки. То есть у нас есть два ряда по три колонки. Делаем маленько по-другому:

<dragdrop_belt x="590" y="118" width="410" height="104"
cell_width = "52" cell_height="52" rows_num="2" cols_num="8"/>

Теперь рисоваться будет 16 ячеек, и в каждую можно артефакт засунуть.
======================================================================================

Ячейки под атрефакты тоже можно - я 10 штук делал. Делается просто - два файла менять всего надо, файл system.ltx, секция inventory, в АМК моде она вообще в отдельный файл вынесена - inventory_sect.ltx называется. Там всего пять строчек:

[inventory]
take_dist = 2
max_weight = 80
max_ruck = 56
max_belt = 6 //16
slots = 11

Надо на вот что изменить: (заметьте, за двойным слешем стоит 16 - это количество слотов под атрефакты хотели сделать сами разработчики игры, потом переделали на 5, а команда АМК - на шесть)

[inventory]
take_dist = 2
max_weight = 80
max_ruck = 56
max_belt = 10
slots = 11

Дальше надо изменить рисунок ячеек в инвентаре, штобы ячеек рисовалось не 6, а 10, по пять в два ряда, типа как в АМК рисуется по три в два ряда. Делаем так: Берём файл inventory_new.xml, из папки gamedataconfigui, открываем его, находим секцию:

<dragdrop_belt x="786" y="118" width="156" height="104"
cell_width = "52" cell_height="52" rows_num="2" cols_num="3"/>

Это так в моде АМК. Красным выделил ряды и колонки. То есть у нас есть два ряда по три колонки. Делаем маленько по-другому:

<dragdrop_belt x="733" y="118" width="410" height="104"
cell_width = "52" cell_height="52" rows_num="2" cols_num="5"/>

Все работает!!! проверено
=================================================================================

Структура файлов и папок:
Рассмотрим, что-же содержится в папке 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.
В звуках, кстати, можно найти много интересного, например: в папке sounds\car содержатся звуки машин(которых в игре нет), а sounds\music\harmonica_1.ogg – файл губной гармошки. Ах да, чуть не забыл, самый главный лол, это файл sounds\car\trabantnoise.ogg

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

Текстуры:
В папке textures лежат файлы формата .dds, которые можно открыть программой Nero PhotoSnap Viewer(входит в состав NERO7) например или windows texture viewer (63кб), и там же отредактировать по вкусу. Так, например, существует мод, уменьшающий размер PDA Меченого. Текстура PDA находится по адресу textures\ui\ui_pda.dds.

Скрипты:
se_respawn*****ipt – файл, отвечающий за респаун. Время респауна можно уменьшить, путём небольших изменений в этом файле. Он открывается обычным блокнотом(notepad). Ищем в нём строку
idle_time:setHMSms( 0, 0, 0, math.random(self.idle_spawn_min, self.idle_spawn_max)*1000)
и меняем её на
idle_time:setHMSms( math.random(X, Y), 0, 0, math.random(self.idle_spawn_min, self.idle_spawn_max)*1000)
где X и Y - числа, задают диапазон случайной переменной в часах отвечающей за респаун.

Звуки и музыка:
Любой файл в папке sounds можно заменить на другой, но при этом нужно сохранить все параметры звукового файла, который был использован в игре. Например, чтобы заменить музыку в приёмнике у Сидоровича, нужно файл 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.ltx:
В дополнение к конфигам оружия:
cвойства патронов находятся в файле weapons.ltx, а бронежилетов – в outfit.ltx.
Свойства артефактов находятся в файле artefacts.ltx и файлах zone_ART.ltx, предметов – items. ltx,
где ART – название артефакта(например zone_gravi.ltx).
Параметры артефактов:
health_restore_speed - скорость восстановления здоровья (0.0001 = +100%)
radiation_restore_speed - скорость накопления радиации (0.0004 = 4). Если поставить отрицательное число, то артефакт будет ускорять выведение радиации.
idle_particles – если закоментить её символами «--« -, то аномалия исчезнет. Чтобы отключить звуковое оповещение, то находим строку visible_by_detector и меняем on на off.
Иммунитеты:
strike_immunity - удар.
shock_immunity - электрошок.
chemical_burn_immunity - химический ожог.
telepatic_immunity - телепатия.
radiation_immunity - радиация.
wound_immunity - разрыв.
explosion_immunity - взрыв.
fire_wound_immunity - огнестрел.

items.ltx:
Параметры предметов:
В этом файле в квадратных скобках написан тот предмет, чьи параметры идут ниже, за квадр. скобками. Например: [kolbasa]:identity_immunities.
Параметры на примере колбасы:
class – к какому классу принадлежит предмет.
visual – модель.
cost – цена.
eat_health – сколько восстанавливает здоровья.(если будет 0, то колбаса лечить не будет.)
eat_power - сколько восстанавливает силы.
eat_radiation - сколько выводит/или добавляет радиации. (Насчёт этого не уверен, надо тестить.)
inv_weight – вес предмета.

Outfit.ltx:
Параметры костюмов:
actor_visual – модель костюма.
inv_weight – вес костюма.
cost – цена костюма.
коэффициенты иммунитета самого костюма:
burn_immunity см. коэффиц.
...
fire_wound_immunity
; NO RESISTANCE
burn_protection - коэффициент защиты от огня
strike_protection - коэффициент защиты от пуль
shock_protection - коэффициент защиты от молний
wound_protection - коэффициент защиты от кровотечений (?)
radiation_protection - коэффициент защиты от радиации
telepatic_protection - коэффициент защиты от телепатии
chemical_burn_protection - коэффициент защиты от хим. ожогов.
explosion_protection - коэффициент защиты от взрыва
fire_wound_protection - коэффициент защиты от кровотечений(от огня)
nightvision_sect – тип ночного видения(плохой/хороший). Если ПНВ нету, то строку добавить, если его нужно убрать, строку закомментируйте(--).
=========================================================================================
Торговцы:
Вещи, которые продают торговцы можно отредактировать(добавить/убрать) в файлах с именем [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 вторая цифра это вероятность появления данного предмета.
2. В разделе buy - первая цифра максимальная цена покупки, вторая минимальная (зависит от отношения торговца к Меченному - рейтинг, репутация)[Предположительно. – прим.]
3. Соответственно в разделах sell - первая цифра минимальная цена продажи, вторая - максимальная (точнее множитель на "истинную цену" предмета). Tnx GreyL.
В итоге должно получиться:
[supplies_start]
;Оружие
wpn_pb = 3, 0.6
wpn_walther = 3, 0.6
wpn_mp5 = 3, 0.6
wpn_ak74u = 3, 0.5
wpn_gauss = 6, 0.6
И тогда у торговца мы получим ровно 6 винтовок Гаусса.

Создание рандомного выбора муз. заставки главного меню:
При заходе на экран главного меня муз. заставка будет выбираться случайно из добавленных вами.
1. В директорию 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 .
===============================================================================================
Транспорт:
Транспорт в игре есть! Пока способ заспаунить его не известен общественности, но тем не менее в сети появился файл all.spawn, копируйте его в папку gamedata\spawns. Мод предназначен только для пропатченной версии игры(1.0001). После начала новой игры в первой локации рядом с Сидоровичем появятся несколько машин, в т. ч. и Камаз. Чтобы включить двигатель в консоли пишем [b]bind turn_engine kb[b], закрываем консоль, жмём кнопку b и наслаждаемся….
Рассмотрим параметры машин, конфиги находятся в папке gamedata\config\models\vehicles.
[car_definition] – после строки идут коментарии на русском языке, перейдём сразу к следующему.

--Factory parameters of Engine -- - параметры двигателя(описание не претендует на совершенно точное)
fuel_tank – вместимость бака.
engine_power – мощность двигателя.
hand_break_torque - сила торможения
[damage_items] – повреждения частей машины
back_left_wheel - заднее левое колесо
back_right_wheel -заднее правое колесо
front_left_wheel -переднее левое колесо
front_right_wheel - переднее правое колесо
left_door - левая дверь
right_door - правая дверь
[immunities]
burn_immunity = 0.5 ;коэффициенты иммунитета
strike_immunity = 0.1
shock_immunity = 0.0
wound_immunity = 0.01
radiation_immunity = 0.0
telepatic_immunity = 0.0
chemical_burn_immunity = 0.0
explosion_immunity = 0.4
fire_wound_immunity = 0.0005
P.S. Чтобы сделать вид от третьего лица, в файле user.ltx(ну если не знаете где он находится, то специально для вас в Microsoft сделали поиск в Windows) пишем после строки unbindall:
bind cam_1 kF1
bind cam_2 kF2
bind cam_3 kF3
В игре жмём кнопки F1, F2 или F3 для смены вида.
Очень нужно при езде на БТР
=============================================================================
Объекты, которые можно перемещать:
В файле system.ltx в конце есть строка [ph_capture_visuals], после неё идёт список перетаскиваемых вещей. Например чтобы можно было таскать монстров, в конец добавляем:
//Monsters
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
==========================================================================

Новое оружие мы будем делать на базе оригинальных конфигурационных файлов. Создадим АК101 на базе конфигов АК74.
Свойства оружия

Скопируем файл из папки:

gamedata\config\ak74.ltx

Назовем его ak101.ltx.

Отредактируем свойства по своему усмотрению (но лучше - в соответствии с достоверной информацией о характеристиках оружия, т.к. АК101 - всё-таки оружие реально существующее). Редактирование конфигов оружия подробно описано в отдельном уроке. В данном случае конфиг был составлен таким образом:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[wpn_ak101]:identity_immunities
GroupControlSection    = spawn_group
discovery_dependency =
$spawn              = "weapons\ak-101" ; name and section in level editor
$npc        = on       
$prefetch         = 8
scheduled        = off               ;[] option for ALife Simulator
cform                = skeleton
class                = WP_AK74    ; class of the weapon that corresponding to CPP class
min_radius          = 30        ; [] for AI
max_radius          = 100        ; [] for AI
description        = enc_weapons1_wpn-ak101

ef_main_weapon_type    = 2
ef_weapon_type    = 6

;-----------------------------------------------------------------------------------
holder_range_modifier = 1.0           ; во сколько раз увеличивается eye_range
holder_fov_modifier    = 0.7              ; во сколько раз увеличивается eye_fov
;-----------------------------------------------------------------------------------

cost        = 2;4000       
weapon_class    = assault_rifle   

ammo_limit        = 210       
ammo_elapsed    = 30       

ammo_mag_size    = 30       
fire_modes        = 1, -1

ammo_class        = ammo_5.56x45_ss190, ammo_5.56x45_ap   
grenade_class    = ammo_vog-25, ammo_vog-25p   
launch_speed    = 0

hand_dependence    = 1               
single_handed    = 0

slot         = 2               
animation_slot    = 2               
inv_name         = wpn-ak101               
inv_name_short    = wpn-ak101
inv_weight    = 3.3               

inv_grid_width    = 5
inv_grid_height    = 2     
inv_grid_x        = 11 
inv_grid_y        = 29

kill_msg_x    = 0
kill_msg_y    = 28
kill_msg_width    = 84
kill_msg_height    = 28

;-----------------------------------------------------------------------------------
;params of weapon recoil

fire_dispersion_base    = 0.15;0.2   
control_inertion_factor    = 1.1f;1.25f

;отдача
cam_relax_speed             =6;5;3.5; 0.15   
cam_dispersion              = 0.1;0.15   
cam_dispersion_inc    = 0.2;0.3   
cam_dispertion_frac    = 0.8;0.9   
cam_max_angle        = 10.0     
cam_max_angle_horz    = 20.0   
cam_step_angle_horz    = 1.1;1   

fire_dispersion_condition_factor = 5.7;5     
misfire_probability     = 0.0055;0.003
misfire_condition_k    = 0.06;0.05
condition_shot_dec     = 0.00035;0.0001
;-----------------------------------------------------------------------------------

fire_point                 =  0,0.216,0.638   
fire_point2                =  0,0.216,0.730   

flame_particles        = weapons\generic_weapon05
smoke_particles        = weapons\generic_shoot_00
grenade_flame_particles    = weapons\generic_weapon01

shell_point         = 0,0.216,0.174       
shell_particles     = weapons\generic_shells

PDM_disp_base         = 1.0
PDM_disp_vel_factor     = 1.3
PDM_disp_accel_factor     = 1.3
PDM_crouch         = 1.0
PDM_crouch_no_acc     = 1.0

; ttc
hit_power                = 0.36, 0.4, 0.43, 0.46   
hit_impulse         = 140   
hit_type         = fire_wound
fire_distance            = 1700   
bullet_speed        = 1000   
rpm                      = 750   

use_aim_bullet        = true   
time_to_aim        = 1.0

;params when silencer is attached
;similar to corresponding params without prefix silencer_

silencer_hit_power        = 0.38
silencer_hit_impulse = 120
silencer_fire_distance    = 250
silencer_bullet_speed = 600

hud                      = wpn_ak101_hud       

position                  = -0.026,-0.172,0   
orientation              = 0,0,0           

;--STRAP PARAMETERS-----------------------------------------------------------------
strap_position             = -0.16,-0.40,0.15   
strap_orientation          = -10,-5,10       
strap_bone0        = bip01_spine2
strap_bone1        = bip01_spine1

visual                     = weapons\ak-101\wpn_ak101   

light_color        = 0.6,0.5,0.3       
light_range        = 5           
light_var_color        = 0.05           
light_var_range        = 0.5
light_time         = 0.2           

ph_mass            = 5           

;addons
scope_status        = 2           
silencer_status        = 2           
grenade_launcher_status    = 0;2           

zoom_enabled        = true           
scope_zoom_factor     = 50           

scope_name         = wpn_addon_scope   
scope_x         = 42           
scope_y         = 3
silencer_name          = wpn_addon_silencer   
silencer_x         = 218           
silencer_y         = 13       
grenade_launcher_name     = wpn_addon_grenade_launcher
grenade_launcher_x     = 116           
grenade_launcher_y     = 23

;sounds (name of the sound, volume (0.0 - 1.0), delay (sec))
snd_draw        = weapons\ak74_draw
snd_holster        = weapons\generic_holster
snd_shoot        = weapons\ak74_shot_0
snd_shoot1        = weapons\ak74_shot_1
snd_shoot2        = weapons\ak74_shot_2
snd_shoot3        = weapons\ak74_shot_3   
snd_empty        = weapons\gen_empty, 0.5
snd_reload        = weapons\ak74_reload, 0.7, 0.35
snd_shoot_grenade    = weapons\gen_grenshoot
snd_reload_grenade    = weapons\gen_grenload, 1.0, 0.8
snd_switch        = weapons\groza_switch, 1.0, 0.5

;params when silencer is attached
;similar to corresponding params without prefix silencer_

;silencer_flame_particles = weapons\generic_weapon01
silencer_smoke_particles = weapons\generic_shoot_00

snd_silncer_shot    = weapons\w_ak74_shot1

silencer_light_color    = 0.6,0.5,0.3
silencer_light_range    = 0.01
silencer_light_var_color = 0.05
silencer_light_var_range = 0.5
silencer_light_time     = 0.2

;-----------------------------------------------------------------------------
;-- HUD DESCRIPTION
;-----------------------------------------------------------------------------

[wpn_ak101_hud]
allow_inertion        = true

;similar to corresponding params in weapon section but for 1st person view

shell_point        = -0.065000,0.000000,-0.045000
shell_dir          = 0.0, 1.0, 0.0

fire_point                = 0.09,0.020,-0.06
fire_point2              = 0.30, 0.00, 0.05
fire_bone                = wpn_body

orientation              = 0, 0, 0   
position                = 0, 0, 0.05
visual                  = weapons\ak-101\wpn_ak101_hud

grenade_bone            = wpn_grenade

; animation names

anim_idle        = idle
anim_idle_aim        = idle_aim
anim_reload        = reload
anim_draw        = draw_wo_gl
anim_holster        = holster_wo_gl
anim_shoot        = shoot
   
; animation names
; attached grenade launcher [GRENADE fire mode]
anim_idle_g        = idle_grenade
anim_idle_g_aim        = idle_g_aim
anim_reload_g        = reload_grenade
anim_shoot_g        = shoot_grenade
anim_switch_grenade_on    = switch_grenade
anim_switch_grenade_off    = switch_grenade_off
anim_draw_g        = draw_grenade_mode
anim_holster_g        = holster_grenade_mode

; attached grenade launcher [NORMAL fire mode]
anim_idle_gl        = idle_w_gl
anim_idle_gl_aim    = idle_w_gl_aim
anim_reload_gl        = reload_w_gl
anim_draw_gl        = draw_w_gl
anim_holster_gl        = holster_w_gl
anim_shoot_gl        = shoot_w_gl
anim_idle_sprint    = idle_sprint

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;HUD offset in zoom mode (to all)
;(use CONSOLE: hud_adjust_mode 0,1,2, then keys WSADQE and P to show current value in console)

zoom_offset    = -0.112400,0.016800,-0.115000
zoom_rotate_x    = 0.000200
zoom_rotate_y    = 0.017500

zoom_hide_crosshair = true           

; same as above, but for attached grenade launcher for
; in NORMAL shoot mode

grenade_normal_zoom_offset    = -0.112500,0.014000,0.000000
grenade_normal_zoom_rotate_x    = -0.000900
grenade_normal_zoom_rotate_y    = 0.017200

; same as above, but for attached grenade launcher for
; in GRENADE mode

grenade_zoom_offset    = -0.039600,-0.433100,0.000000
grenade_zoom_rotate_x    = -0.538700
grenade_zoom_rotate_y    = -0.033800
Регистрация

Итак, с характеристиками разобрались. Теперь зарегистрируем оружие в файле weapons.ltx. Для этого пропишем в него строку следующего вида:
#include "w_ak101.ltx"

Также, необходимо прописать модели, используемые для отображения оружия, в prefetch.ltx:
[...]
weapons\abakan\wpn_abakan
weapons\abakan\wpn_abakan_hud
weapons\ak-101\wpn_ak101
weapons\ak-101\wpn_ak101_hud
weapons\ak74\wpn_ak74
weapons\ak74\wpn_ak74_hud
[...]

Так же не забудте в файле mp_ranks.ltx прописать после available_items (которое внизу) прописать название своего оружия. Это предотвратит вылет при убийстве ГГ.
Добавление в игру

Осталось добавить оружие в игру.

Выдайте его некоторым NPC , расширьте ассортимент торговцев.

===============================================================================================

вращение камеры при попаданиях - рандомный баг на статике
правится выставлением cam_inert > 0 в user.tlx
===============================================================================================
стартовые рублики ГГ зашиты в allspawn-e. Проще всего в первом квесте Волка (gamedata/config/misck/task_manager.ltx строку найдешь сам) прописать нужную тебе сумму в вознаграждения
===============================================================================================

люди кто знает коды к дверям на локации радар,а то мне известен только один-около снайпера (после останоки)1287975
342089 - если не ошибаюсь к двери, что в подземельи Х10, где Главный выжигатель отключается
================================================================================================

Если при этом постоянно растет уровень радиации (особенно когда снят костюм) и остаются кровоподтеки на стенах, когда стоишь возле них, после смерти ГГ камера периодически подёргивается -- то это остаточная радиация.
Проявляется при нахождении в "блокирующих" зонах повышенной радиации (на границах уровней и т.п.) и переходе после этого на другой уровень (и, возможно, еще какого-то "удачного" стечения обстоятельств).
Такое было у меня с АМК 1.3.1.
По утверждениям знающих людей - баг оригинала. Очень часто проявлялся на "чистой" игре при переходе со Свалки на Агропром и со Свалки на Кордон.
На оф. форуме много по этому поводу написано, большинство предложений - начать игру заново.

По памяти могу описать где-то почерпнутое решение, которое мне помогло:
1) извлечь из архивов gamedata.*** файл xr_detector.script (он не использовался в АМК 1.3.1, поэтому в папке gamedata с модом его нет) - в данном файле в том числе описаны процедуры сохранения и загрузки уровня радиации, полученной при нахождении в этих "блокирующих" зонах;
2) изменить процедуру загрузки ранее сохраненного уровня радиации так, чтобы этот уровень заражения не загружался (закомментить несколько строк);
3) измененный файл поместить в нужное место папки gamedata;
4) загрузить сохраненную игру - при этом уровень радиации не загружается, далее всё должно быть нормально.
При этом уровень обычной радиации нормально сохраняется-загружается. Если теперь сохранить игру и вернуть оригинальное содержимое файла xr_detector.script, то остаточной радиации уже не будет. По крайней мере, до следующего "удачного" стечения обстоятельств.
=============================================================================================

Отключение дождя очень помогает.
/ config / weathers
В каждом файле этой папки, название которого начинается с “weather” изменить значение параметра “rain_density” на
0.0. (Файлы открываются блокнотом.)
===============================================================================================
Народ, не подскажите? Для выключения теней через ярлык игры в пути есть какая-нибудь команда? Допустим -noshadows.
не допустим , а так и есть.
-noshadows - Disables shadows from dynamic light sources (excluding the Sun). May improve FPS
===============================================================================================
Вопрос: Как включить в игре Bloom?

Ответ: Через консоль - r2_ls_bloom_fast on
===============================================================================================
Вопрос: Как мне посмотреть FPS в игре?

Ответ: Через консоль,командой rs_stats on (верхняя строка).
===============================================================================================

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

Открываете файл: 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 для того артефакта, который хочу активировать.

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

prefetch_mp.ltx лежит в gamedata\config, а файл mp_ranks.ltx в gamedata\config\mp
===============================================================================================================
как выброс во фриплее отключить

STALKER-gamedata-config-blowout.ltx
прописать в файле blowout.ltx :
[blowout_period]
enabled = 0
time = 1800.0
shift = 180.0
===============================================================================================================

А какие значения должны быть, для стрельбы трассерами, хотя бы через один
Папка weapons ltx.
найди строку time_step =1; 33 и убери единицу с точкой запятой и будет тебе счастье wink.gif
Больше ничего менять не надо.
================================================================================================================
как отключить дрожание оптики в АМК 1.4?

gamedata\config\misc\effectors.ltx

[zoom_inertion_effector]
camera_move_epsilon = 0.03
disp_min = 0.0
speed_min = 0.001
zoom_aim_disp_k = 0.18
zoom_aim_speed_k = 0.00
delta_time = 1350

замени на

[zoom_inertion_effector]
camera_move_epsilon = 0.03
disp_min = 0.00
speed_min = 0.000
zoom_aim_disp_k = 0.0
zoom_aim_speed_k = 0.00
delta_time = 2000
================================================================================================================

Не парься с декодером - секретную дверь на ЧАЭС можно и так открыть:
1.Подойди к двери вплотную со стороны петель под углом где-то 45 градусов.
2.Берёшь в руки ствол подлиннее,желательно СВД и пихаешь между петлями.
3.Нажимаешь в инвентаре "выбросить оружие".
Попыток этак с 10 дверь открывается настолько,что можно протиснуться вовнутрь,а винтовочку
забираем уже с той стороны.Таким методом я открывал без кода эту дверь и закрытый сейф на базе
монолита в Припяти (в оригинальной игре и в моде 1.3.1, но думаю,ничего не изменилось). Но хочу
предупредить - может и зашибить дверью, иногда наглухо (поэтому больше не пользуюсь, в случае смерти ГГ я
теперь всегда начинаю игру заново).
=================================================================================================================

В файле amk_mod.script ищи строчки вида(там есть такие для каждого модификата):

af_start_transform_timer(af_start_transform(70,25,af_sect,"af_spirit_1"), pos ,0,4,0,"Душа")

70 - вероятность удачной трансмутации;
25 - вероятность вырождения (правь по желанию).

0,4,0 - время трансмутации дней, часов, минут

=================================================================================================================
Как сделать ночь темнее?

Если очень хочется - поступи проще: набери в консоли r2_sun_lumscale_amb n, где n - величина амбиентной освещённости. В моём дефолтном конфиге этот параметр равен 0.5. Попробуй другие значения в диапазоне, скажем 0.6...0.8. Правда, и днём станет немного посветлее... В общем, найди устраивающий лично тебя компромисс.
==================================================================================================================

Для "уникального экзоскелета" и некоторых других уникальных комбинезонов не работает интерактивный худ. Забыли или так и было задумано? Подскажите пожалуйста, как в "домашних условиях" включить для таких комбинезонов интерактивный худ?
Все просто. Всего то нужно дописать outfit_exo_m1="hud_exo" в amk_mod.script в котором все комбинезоны, для которых применяется интерактивный худ, перечисляются через запятую с указанием текстуры худа. А в unique_items я только actor_visual = actors\killer\stalker_ki_exoskeleton добавил для этого экзоскелете, что бы при включении камеры от третьего лица, он выглядел как экзоскелет наемников, без этих красных "габаритных огней". Теперь он шарового цвета, примерно как комбинезоны наемников. Правда иконки в полный рост для экзоскелета наемников нет... ну да и хрен с ней. По аналогии можно исправить и другие комбинезоны для которых не прописан худ.
====================================================================================================================

На Радаре от выброса можно укрыться в 3 местах:
1. Бункер в тупике (в конце ответвления от основной дороги, там иногда еще появляется нычка "Тайник группы отчаянных").
2. Помещение за дверью с кодовым замком в начале непонятной бетонной конструкции, идущей вдоль дороги (там на балкончике "монолитный" снайпер стоит, код где-то на форуме всплывал).
3. Вход в Х-10 (в саму лабу заходить не надо, достаточно нырнуть в тоннель).
=====================================================================================================================
Подскажите, какой файл отвечает за изображение в телевизоре?
\gamedata\textures\fx\fx_stalker_001.dds - fx_stalker_030.dds
=====================================================================================================================

В этой статье я расскажу как создавать новые предметы:

Для начал находим файл items.ltx, находящийся в папке config/misc/, и копируем какой-нибудь предмет, я, например, взял:
[bread]:identity_immunities
GroupControlSection = spawn_group
discovery_dependency =
$spawn = "food and drugs\bread"
;$prefetch = 32
class = II_FOOD
cform = skeleton
visual = weapons\bred\bred.ogf
description = enc_equipment_food_bread1

inv_name = Bread
inv_name_short = Bread
inv_weight = 0.3 ;0.2

inv_grid_width = 1
inv_grid_height = 1
inv_grid_x = 11
inv_grid_y = 9
cost = 20

attach_angle_offset = -0.287979, 1.560923, 1.544060
attach_position_offset = 0.096910, -0.013594, 0.107925
attach_bone_name = bip01_r_hand
auto_attach = false

// should be deleted after update
bone_name = bip01_r_hand
position_offset = 0.0,0.0,0.0
angle_offset = 1.570790,1.570790,3.92699

; eatable item
eat_health = 0.05
eat_satiety = 0.2
eat_power = 0
eat_radiation = 0
wounds_heal_perc = 0
eat_portions_num = -1

; food item
slot = 4
animation_slot = 4

;hud item
hud = wpn_vodka_hud

Вставляем его копию в конец, меняем название:

[bread]

На:

[test]

А также:
inv_name = Bread
inv_name_short = Bread

На:
inv_name = test
inv_name_short = test

И description = enc_equipment_food_bread1 на description = enc_equipment_food_bread1_test

И, также, "по желанию":

eat_health = 0.05 eat_satiety = 0.2 eat_power = 0 eat_radiation = 0 wounds_heal_perc = 0 eat_portions_num = -1

Всё, в item.ltx работа закончена, теперь переходим к редактированию описания, открываем string_table_enc_equipment "Блокнотом". Что мы там видим: все описания и названия прописаны по тегам:

<string id="название из inv_name"> <text>Название в игре</text> </string>

И:

<string id="описание из description"> <text>Описание в игре</text> </string>

Пишем:

<string id="test"> <text>Тестовый предмет</text> </string>

И:

<string id="enc_equipment_food_bread1_test">

<text>Тестовый предмет, разработанный в сверхсекретных лабораториях Зоны </text>

</string>

Сохраняем... Все! Основная работа завершена! Теперь добавим предмет торговцам, например, Сидоровичу.

Открываем trader_trader из папки config/misc (работа с ним подробно описана в этой статье), прописываем:

test = 0.3, 0.5

В секции:

[trader_generic_buy]

И далее в:

[supplies_start]

test = 10, 1

В [supplies_after_fabric]

test = 10, 1

В [trader_start_sell]

И в:

[trader_after_fabric_sell]

test = 1. 3

Сохраняем, запускаем игру, торгуем с Сидоровичем и видим у него два вида хлеба: один из них - наш 
=============================================================================================================
Пример некоторых значений в конфиге костюма (за прмер взят читерно-доработанный костюм Призрака)
[outfit_stalker_m1]:stalker_outfit ;Комбинезон призрачного сталкера      - название костюма
$spawn        = "outfit\uniq\outfit_stalker_m1"
inv_name        = stalker_outfit_name_m1
inv_name_short        = stalker_outfit_name_m1
description        = stalker_outfit_description_m1
health_restore_speed                    = 0.0                          - скорость востановления здоровья ( при значении "-" будет убывать)
radiation_restore_speed                 = -0.001                       - Скорость убывания радиации 
satiety_restore_speed                   = 0.0                          - Голод ( значение "-" увеличит время между приемами пищи)
power_restore_speed                     = 0.0009                       - Скорость востановления бодрости 
bleeding_restore_speed                  = 0.0                    - Скорость остановки кровотечения (при значении "-" будет останавливать)
inv_grid_x        = 16
inv_grid_y            = 24
additional_inventory_weight    = 60              - + к переносимому весу ГГ
additional_inventory_weight2         = 60              - максимальное значение переносимого веса
nightvision_sect    = effector_nightvision_good - тип ПНВ ( гоод - синий. бад - зеленый)
burn_protection          = 0.1            - защита от Ожога
strike_protection          = 0.2            - Удара
shock_protection     = 0.3            - Электрошока
wound_protection    = 0.4            - Разрыва
radiation_protection     = 0.5            - Радиации
telepatic_protection     = 0.6            - Телепатии
chemical_burn_protection     = 0.7            - Химического ожога
explosion_protection     = 0.8            - Взрыва
fire_wound_protection      = 0.9            - Пулестойкость
burn_immunity        = 0.001          - Износостойкость к выше перечисленному (значение "0.0" - вечный костюм)
strike_immunity        = 0.001
shock_immunity        = 0.001
wound_immunity        = 0.001
radiation_immunity    = 0.00
telepatic_immunity    = 0.00
chemical_burn_immunity         = 0.001
explosion_immunity    = 0.001
==============================================================================
Как править скорость голода у ГГ?

В файле actor.ltx ищи строку:

satiety_v = ;скорость уменьшения сытости со временем

там же рядом и некоторые другие параметры, связанные с сытостью.
=============================================================================
А где менять цвет трассеров? Хочу попробовать аля "Star Wars"

В секции tracers_color_table
Коды в формате RGB нужно подбирать.
Стандартные трассеры:
color_0 = 1.0, 0.54, 0.0 ; yellow
color_1 = 1.0, 1.0, 1.0 ; white
color_2 = 1.0, 0.1, 0.0 ; red
color_3 = 0.3, 1.0, 0.3 ; green
color_4 = 0.0, 0.0, 0.1 ; blue

В файле weapon.ltx замени на это и будут зелёные трассеры.
[tracers_color_table] ;color_table
color_0 = 0.0, 1.1, 0.1 ; yellow
color_1 = 1.0, 1.0, 1.0 ; white
color_2 = 1.0, 0.1, 0.0 ; red
color_3 = 0.3, 1.0, 0.3 ; green
color_4 = 0.0, 0.0, 0.1 ; blue

====================================================================================

Конфиг Петрухи gamedata/config/gameplay/charecter_esc_desc.xml, Петруха называется esc_ranger
====================================================================================

Вопросы: что бы "переодеть" НПС редактируем эту строку в его конфиге: <visual>actors\novice\green_stalker_8</visual> ?
И что-бы изменить иконку ОДЕТОГО костюма в инвентаре - какую строку надо исправить в конфиге костюма?
1. Да.
2. Иконка меняется здесь: <icon>ui_npc_u_stalker_neytral_balon_1</icon>

\config\gameplay\character_desc_[название локации].xml

Каждый из них разбит на секции - по одной на NPC. Используются следующие параметры:
<name>...</name> - Имя (ссылка на строку в текстовом массиве).
<icon>ui_npc_...</icon> - Иконка для диалогов/торговли.
<bio>..._bio</bio> - Биография (в игре не используется).
<class>...</class> - Класс (лучше не трогать).Imp 12:46, 12 августа 2007 (EEST)Нужно для того что-бы автоматические респавнеры могли спавнить немного разных персонажей. То есть например в игре есть описание восьми (кажеться может и больше) разных новичков и что бы при автоматическом респавне не получалась куча братьев-близнецов, респавнер настраивается на класс персонажей и спавнит случайным образом разных персонажей одного класса.
<community>...</community> - Группировка.
<rank>...</rank> - Ранг.
<reputation>...</reputation> - Репутация.
<money min="..." max="..." infinitive="..."/> - Количество денег (infinitive="1" - бесконечные деньги).
<snd_config>...</snd_config> - Набор звуков.
<crouch_type>-1</crouch_type> - Тип приседания. Лучше не трогать.
<visual>actors\...</visual> - Внешность. Влияет как на внешний вид костюма, так и на его свойства. Укажите здесь экзоскелет - и персонаж действительно в нем окажется: как по внешности, так и по свойствам.
<supplies>...</supplies> - Предметы, находящиеся у него в инвентаре. Некоторые из них в игре не отображаются, поэтому не удивляйтесь присутствию здесь предметов вроде рации или фонарика.
===============================================================================================================
Как изменить артефакты?
В файле \gamedata\config\misc\artefacts.ltx находим нужный артефакт, смотрим его характеристики и меняем

health_restore_speed скорость восстановления здоровья 0.0001 = +100%
radiation_restore_speed скорость накопления радиации 0.0004 = 4 если поставить отрицательное число будет ускорять выведение радиации

иммунитеты например 0.7 = +30% 0.2 = +80% больше единицы пойдет наоборот в минус 1.3 это -30%

strike_immunity - удар
shock_immunity - электрошок
chemical_burn_immunity - химический ожог
telepatic_immunity - телепатия
radiation_immunity - радиация
wound_immunity - разрыв
explosion_immunity - взрыв
fire_wound_immunity - огнестрел
===============================================================================================================
Как сделать возможность, чтоб к примеру ногу кабана можно было сожрать? 
Открываем файл gamedata\config\misc\monster_items.ltx

Находим секцию [mutant_boar_leg]
И меняем параметр class = II_ATTCH на class = II_FOOD

Нога съедается на раз, но эффект 0, поэтому добавляем

eat_health = 1.0
eat_satiety = 0
eat_power = 0
eat_radiation = 0.3
wounds_heal_perc = 0
eat_alcohol = 0
eat_portions_num = -1

Теперь нога лечит как аптечка ученых, но из-за нее повышаться радиация .

0

2

МЕТОДЫ РЕДАКТИРОВАНИЯ ФАЙЛОВ СТАЛКЕР ТЕНЬ ЧЕРНОБЫЛЯ - 2ЧАСТЬ .
-------------------------------------------------------------------------------------------------------------------
Как убрать фонарик?
Что-бы убрать фонарик, открываем файл gamedata\config\misc\items.ltx
Находим секцию [device_torch]:identity_immunities

Меняем строчку
slot = 9
на
slot = 1

Тепер фонарик располагается в слоте пистолета, убираем его в рюкзак и все.

health_restore_speed - прирост к скорости восстановления здоровья
radiation_restore_speed - прирост скорость вывода радиации
satiety_restore_speed - прирост к голоду
power_restore_speed - прирост к выносливости
bleeding_restore_speed - прирост к скорости остановки кровотечений
======================================================================================================================
Где описание боевого чейзера?
описание – в stable_table_enc_zone.xml
================================================================================

Вот я хочу сократить время "жизни" трупа. Неохота их самому утилизировать. И нагрузка на комп лишняя, обсчитай-ка их всех

\gamedata\config\creatures
monsters.ltx
stalkers.ltx

corpse_remove_game_time_interval = xx ; in hours
stay_after_death_time_interval = xx ; in hours

вместо 'xx' сколько в часах будет валятся труп,для квестовых нпс не действует
======================================================================================

Подскажите пожалуйста, как увеличить время между респавном нпс ? А то при установке АМК 1.4 вроде выбираю 24-32 часа, а неписи спавнятся гораздо чаще, как в оригинале. В 1.3.1 всё работало корректно.

gamedata\scripts\se_respawn.script
idle_time:setHMSms( 0, 0, 0, math.random(self.idle_spawn_min, self.idle_spawn_max)*1000)
исправить на
idle_time:setHMSms( math.random(Первое число, Второе число), 0, 0, math.random(self.idle_spawn_min, self.idle_spawn_max)*1000)
где первое и второе числа задают диапазон случайной переменной в часах отвечающей за респаун.
=======================================================================================

Создание нового артефакта
Материал из Mod Wiki.

Сегодня мы на примере научимся созданию новых артефактов. Создадим, например, артефакт под названием "Ромашка".

Статья написана по материалам Hunter Mod.
Создание конфига

Заходим в папку gamedata\config\misc и открываем файл artefacts.ltx.
И находим, например, артефакт "Медуза":

[af_medusa]:af_base
GroupControlSection = spawn_group
$spawn        = "artifacts\moscito medusa"

$prefetch     = 64
cform        = skeleton
class        = ARTEFACT

visual        = physics\anomaly\artefact_blackdrip.ogf 
description    = enc_zone_artifact_af-medusa
inv_name    = af-medusa
inv_name_short    =
inv_weight    = 0.5

inv_grid_x    = 9
inv_grid_y    = 4

cost        = 1000

jump_height    = .5

particles    = anomaly2\artefact\artefact_gravi

lights_enabled = false

;скорости увеличения (уменьшения)
health_restore_speed    = 0.0   
radiation_restore_speed    = 0.0005
satiety_restore_speed    = 0.0
power_restore_speed    = 0.0
bleeding_restore_speed    = 0.0
hit_absorbation_sect    = af_medusa_absorbation

artefact_activation_seq    = af_activation_bold

[af_medusa_absorbation]
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  = 0.98

В этой секции задаются параметры артефакта, начиная от внешнего вида и заканчивая коэффициентами различных эффектов вроде вывода радиации. Сделаем копию секции, принадлежающей "Медузе", и заменим её название с af_medusa на af_romashka.

Должно выйти примерно вот так:

[af_romashka]:af_base
GroupControlSection = spawn_group
$spawn        = "artifacts\moscito romashka"

$prefetch     = 64
cform        = skeleton
class        = ARTEFACT

visual        = physics\anomaly\artefact_blackdrip.ogf 
description    = enc_zone_artifact_af-romashka
inv_name    = af-romashka
inv_name_short    =
inv_weight    = 0.5

inv_grid_x    = 9
inv_grid_y    = 4

cost        = 1000

jump_height    = .5

particles    = anomaly2\artefact\artefact_gravi

lights_enabled = false

;скорости увеличения (уменьшения)
health_restore_speed    = 0.0   
radiation_restore_speed    = 0.0005
satiety_restore_speed    = 0.0
power_restore_speed    = 0.0
bleeding_restore_speed    = 0.0
hit_absorbation_sect    = af_romashka_absorbation

artefact_activation_seq    = af_activation_bold

[af_romashka_absorbation]
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  = 0.98

Назначение некоторых параметров, влияющих на одевшего артефакт:

    * health_restore_speed - прирост к скорости восстановления здоровья
    * radiation_restore_speed - прирост скорость вывода радиации
    * satiety_restore_speed - прирост к голоду
    * power_restore_speed - прирост к выносливости
    * bleeding_restore_speed - прирост к скорости остановки кровотечений

Создание описания и имени артефакта

Заходим в gamedata\config\text\rus и открываем файл string_table_enc_zone.xml. Добавим туда строку с названием артефакта.

<string id="af-romashka">
    <text>"Ромашка"</text>
</string>

Теперь у артефакта есть имя, но одного его недостаточно. Нужно сделать описание.
Поэтому добавим и его.

<string id="enc_zone_artifact_af-romaska">
    <text>Очень странный артефакт. Впервые появился в Зоне где-то в 2011 году, но толку от него - ноль. Ученые
                      не обнаружили никакого влияния артефакта на организм носителя.</text>
</string>

Все, поздравляю, вы только что создали свой первый артефакт! 
===========================================================================================================================

Где находятся имена НПС для генерации?

Для тех кто хочет слегка покапаться ручками
Секции:
string id="lname_bandit_хх - бандиты
string id="lname_captain_хх - капитаны
string id="lname_lieutenant_хх - лейтенанты
string id="lname_private_хх - рядовые
string id="lname_science_хх - учёные
string id="lname_sergeant_хх - сержанты
string id="lname_stalker_хх - сталкеры
string id="Osoznanie" - О-сознание

=========================================================================================================================
Но всё таки - как сделать ночи светлее самому ? Мне они всё ещё докучают (хоть и не так как раньше)

Если очень хочется - поступи проще: набери в консоли r2_sun_lumscale_amb n, где n - величина амбиентной освещённости. В моём дефолтном конфиге этот параметр равен 0.5. Попробуй другие значения в диапазоне, скажем 0.6...0.8. Правда, и днём станет немного посветлее... В общем, найди устраивающий лично тебя компромисс.
Ну и не забывай о настройке монитора.
===========================================================================================================================

В игре вызываешь консоль, пишешь r2_gloss_factor n, где вместо n - любое число в диапазоне от 1 до 10 (кажется). Больше значение - больше блеск поверхностей.
Но это не совсем то, что тебе (и многим) хотелось бы. К сожалению, кафель останется матовым, просто на ряде поверхностей можно усилить эффект "маслянистого" блеска. С высокими значениями r2_gloss_factor асфальт, например, выглядит мокрым, как при дожде. Выглядит броско. Однако переусердствовать не стоит, значения выше 5 - перебор, как по-моему... В общем, хоть какое-то, половинчатое решение...

Если очень хочется - поступи проще: набери в консоли r2_sun_lumscale_amb n, где n - величина амбиентной освещённости. В моём дефолтном конфиге этот параметр равен 0.5. Попробуй другие значения в диапазоне, скажем 0.6...0.8. Правда, и днём станет немного посветлее... В общем, найди устраивающий лично тебя компромисс.
Ну и не забывай о настройке монитора.
==========================================================================================================================
Советы харкорщика

В actor.ltx поменял
satiety_v = 0.000005 на 0.000025
теперь есть нужно почаще, раз в 4-6 часов, соответственно батоны не лишний вес в рюкзаке, порой и за кусок хлеба дратся прийдется:)

satiety_health_v = 0.0001 на 0.00001
Ну от чего так быстро восстанавливается здоровье? Теперь "кровь камня" будет приносить побольше пользы, а здоровье само по себе будет восстанавливатся довольно медленно.

bleeding_v = 0.0005 на 0.0025
wound_incarnation_v = 0.003 на 0.001
min_wound_size = 0.0256 на 0.005

Теперь без бинтов - никуды!
======================================================================================================================
Извиняюсь, совсем забыл спросить, как восстановить отметки врагов и пр. в бинокле?
gamedata\config\weapons\w_binoc.ltx, находим строку vision_present = false, меняем на vision_present = true. Все
======================================================================================================================
как называется текстура прицела 4dot??
wpn_crosshair_4-Dot-N
======================================================================================================================
Краткое руководство охотника. ИМХО.
1. Тушкан, Слепой пес, Псевдособака, Кошка, Кабан - элементарно - дробовик, пистолет - резко в сторону и бьем в бок. Окромя тушканов  Если много - гренами или с возвышения.
2. Псевдогигант - дробовик, 9Х39, РГ-6, подствольник. Можно гренами. Не бегаем. С возвышения и подпрыгиваем во время топота.
3. Химеры (обе) - все стреляющее пулями  Бьем в область голов. Уход с линии атаки - вбок. ЭлектроХимеру близко не подпускать
4. Кровосос - ножом по голове. Подствольником куда угодно. Снайперкой - в голову. И конечно гренами.
5. Контролер - снайперка, подствольник, грены. Этого с растояния
6. Зомби - только в голову + контрольный выстрел.
7. Плоть - в морду чем угодно что стреляет. Темненьких плотей так же, но они гораздо живучей. Грены и выстрелы для подствольника считаю пустой тратой боеприпасов.
8. Бюрер - Чем угодно. Главное вовремя его заметить. Важно! Грены лучше не кидать
9. Полтергейсты (оба) - стреляем и все Хоть из ПМа.
10. Человеки - чем угодно и как угодно... Но осторожненько
11.Снорк - ножом в присяди... или... просто расстреливаем. Уход с линии атаки - вбок.
З.Ы. Хуже большой стаи темных плотей или большой стаи тушканов еще врага не встретил. Плоть резать с ножа пробовал - упарился.
======================================================================================================================

Кто подскажет. В конфиге оружия строка " time_to_aim = 1.0" за что отвечает?

Время, которое нужно чтобы прицелиться.
=======================================================================================================================

Правильно ли я понимаю, что награда за квесты прописана в
E:\gamedata\config\misc\task_manager.ltx
?
Если да, то где посмотреть награду за квесты Скряги, Макса и Кэпа? В указаннном файле я этих данных не нашёл...

В файле task_manager.ltx прописаны ныграды за однотипные квесты в ветке диалогов с квестовыми персонажами и торговцами: "Мне нужна работа, есть что на примете?" Это такие квесты как: принести предмет, найти артефакт, зачистить территорию от монстров, убить сталкера, защитить лагерь (например, в ангаре на Свалке).

Награды за квесты Скряги, Макса и Кэпа пожно посмотреть, и соответственно, поправить в файле dialogs_military.script.
Так, например, строка с наградой Макса выглядит так:
function send_desert_eagle (actor, npc)
dialogs.relocate_item_section(npc, "wpn_desert_eagle", "in")
end
=========================================================================================================================

Это самое подробное описание файла user.ltxкоторое я пока видел:

bind [action, key] - Назначение клавиш управления. ( В игре - через настройки управления ). Чтобы увидеть полный список, необходимо выполнить команду bind_list. Назначая клавиши, нужно иметь ввиду, что любая назначаемая клавиша должна иметь префикс k.

cam_inert [0.0 - 1.0] - Управление инерцией камеры. Проще говоря, насколько камера при движении будет раскачиваться. Для нормальной игры необходимо ставить 0.0, иначе будете чувствовать дискомфорт.

g_always_run [on,off] - Включение/Выключение опции "Бег" по умолчанию.

Параметры настройки с r1_ или r2_ приставками воспринимаются движком игры при определённых настройках игры.
Начинающиеся с r1_ работают только при 'Статическом Освещении' (DX8 ).
Начинающиеся с r2_ работают только при 'Динамическом Освещении Объектов'или' Полном Динамическом Освещении' (DX9).

r1_dlights [on,off] - Включение/Выключение поддержки динамического освещения в режиме 'Статическое Освещение' (DX8 ). Так как в этом режиме единственный источник динамического освещения - ваш фонарик, то отключение этой функции его отключит. Соответственно и наоборот.

r1_dlights_clip [10.000 - 150.000] - Проще говоря, это выбор дальности свечения фонарика.

r1_glows_per_frame [2 - 32] - Количество источников света для эффекта отражения от поверхностей. Визуальное изменение качества невелико.

r1_lmodel_lerp [0.000 - 0.333] - Управление линейной интерполяцией модели освещения. Увеличение немного украшает текстуры, например, вид оружия.

r1_ssa_lod_a [16.000 - 96.000] - Управляет общим уровнем детализации (LOD) для мира игры. Чем выше значение, тем больше видимость деталей объектов на расстоянии, но за счёт снижения FPS.

r1_ssa_lod_b [16.000 - 64.000] - То же, что и предыдущий параметр, но для определённых типов объектов.

r1_tf_mipbias [-3.000 - 3.000] - Управляет чёткостью удалённых текстур. При уменьшении параметра - выше чёткость и ниже производительность. При увеличении - выше размытость текстур и выше производительность. Учитывая, что ползунок АФ в настройках игры атрофирован, получается, это главный способ управления фильтрацией текстур, и, следовательно, чёткостью и ясностью удалённых текстур.

r2_gi [on,off] - Включение/Выключение режима Глобальное Освещение. Это режим более реалистичного освещения, где отражение от поверхностей объектов освещает другие объекты. Включение - сильно просаживает FPS, но для сильных машин это небольшая проблема.

r2_gi_clip [0.000,0.100] - Расстояние эффекта Глобального Освещения.

r2_gi_depth [1,5] - Управляет глубиной тени Глобального Освещения.

r2_gi_photons [8 256] - Количество источников света Глобального Освещения.

r2_gi_refl [0.001,0.990] - Рефлекция Глобального Освещения.

r2_gloss_factor [0.000,10.000] - определяет "глянцевитость" поверхностей (пример: при увеличении до 10 - ярко выраженный эффект "мокрого асфальта" под ногами ).

r2_aa [on,off] - Единственная форма AA, возможная для игры. Это не то же самое, что ползунок Сглаживания в игре, и не реальная форма Сглаживания. Это не уменьшает фактическую зубчатость контуров; это маскирует их, замыливая экран за счет некоторого FPS - вы можете получить почти такой же эффект (без снижения FPS), управляя монитором ЖИДКОКРИСТАЛЛИЧЕСКОГО МОНИТОРА в неродном разрешении, например.

r2_aa_kernel [0.300 - 0.700] - Качество сглаживания. (Выше значение - качественнее сглаживание). Хотя, значение 0.300 - наиболее разумное сочетание эффекта АА с ненапрягающим блуром.

r2_aa_break [0.000000 - 1.000000,0.000000 - 1.000000,0.000000 -1.000000] - Расстояние, на котором работает эффект АА. Чем больше - тем дальше. Но, так как изменения на векторной основе, то установка их всех на иаксимум - не обязательно гарантирует лучший результат.
(Например r2_aa_break 0.000000,1.000000,0.000000 дает острые близкие образы и стертые образы на расстоянии).

r2_aa_weight [0.000000 - 1.000000,0.000000 - 1.000000,0.000000 - 1.000000] - Обеспечивает более точный контроль над силой эффекта размывания изображения. Чем выше значение, тем большее размывание изображения будет осуществлено, но, опять же, изменения - на основе вектора.

r2_allow_r1_lights [on,off] - Включение/Выключение дублирующих динамических источников света, т.е. увеличивает существующее освещение с освещением DX8. (Включение приводит к значительному понижению fps вблизи костров, фонарей, но значительно увеличивает bloom эфеект и освещенность в целом).

r2_ls_bloom_fast [on,off] - Включение/Выключение эффекта легкой размытости и дополнительного отраженного свечения объектов (bloom).

r2_ls_bloom_kernel_b [0.010 - 1.000] - Качество эффекта bloom. Чем выше, тем больше.

r2_ls_bloom_kernel_g [1.000 - 7.000]

r2_ls_bloom_kernel_scale [0.500 - 2.000]

r2_ls_bloom_speed [0.000 - 100.000]

Три вышеуказанные настройки относятся к качеству эффекта bloom. Но визуально - никак. Может быть, на топовом видео что-нибудь и будет видно.

r2_ls_bloom_threshold [0.000 - 1.000] - Управляет уровнем эффекта освещения при включенном bloom. Чем выше значение, тем меньше яркость эффекта. И наоборот.

r2_mblur [0.000 - 1.000] - Эффект смазанности при быстром движении. Чем выше значение, тем больше размытость изображения, например, при повороте.

r2_parallax_h [0.000 - 0.500] - Является настройкой parallax mapping, отвечающего за псевдо-рельефность некоторых поверхностей в игре (таких, как каменистая земля, кирпичная стена и т.п.). Чем выше, тем эффект глубины рельефа больше.

r2_slight_fade [0.020 - 2.000] - корректировка освещенности от динамических источников света (увеличение повышает освещенность).

r2_ssa_lod_a [16.000 - 96.000] - Управляет общим уровнем детализации (LOD) для мира игры, чем выше значение, тем больше видимость деталей объектов на расстоянии, но за счёт снижения FPS.

r2_ssa_lod_b [32.000 - 64.000] - То же, что и предыдущий параметр, но для определённых типов объектов.

r2_sun [on,off] - Включение/Выключение солнца как источника света.

r2_sun_details [on/off] - Включение/Выключение теней от травы (как, возможно, и от др. мелких объектов).

r2_sun_lumscale [-1.000 - 3.000] - Коэффициент освещенности от солнечного света. (Яркость света солнца).

r2_sun_lumscale_amb [0.000 - 3.000] - Коэффициент солнечной ambient-освещенности (фоновой освещенности). Увеличение улучшает качество картинки, не увеличивая прямой свет от солнца.

r2_sun_depth_far_bias [-0.500 - 0.500]

r2_sun_depth_far_scale [0.500 - 1.500]

r2_sun_depth_near_bias [-0.500 - 0.500]

r2_sun_depth_near_scale [0.500 - 1.500]

Эти параметры настройки, по существу, управляют уровнем деталей теней, брошенных от солнца, и границами световых и теневых областей.

r2_tf_mipbias [-3.000 - 3.000] - Управляет чёткостью удалённых текстур. При уменьшении параметра - выше чёткость и ниже производительность. При увеличении - выше размытость текстур и выше производительность. Учитывая, что ползунок АФ в настройках игры атрофирован, получается, что это главный способ управления фильтрацией текстур, и, следовательно, чёткостью и ясностью удалённых текстур.

r2_tonemap [on,off] - Включение/Выключение Tone Mapping. Это поможет улучшать HDR, используемого в игре, уменьшая контрасты и выдвигая на первый план детали по мере необходимости, чтобы держать изображение более реалистичным.

r2_tonemap_lowlum [0.000 - 1.000] - Управляет эффектом Tone Mapping на более темных областях. Чем выше это значение, тем темнее эффект HDR.

r2_tonemap_middlegray [0.000 - 2.000] - Имеет самое значимое воздействие на эффект HDR. Например, при значении 1.200 - HDR в СТАЛКЕРЕ больше походит на HDR Обливиона.

r2_sun_near_border "1" можно "0.9" - Убирает теневые артефакты (треугольники по краям экрана)

r2_sun_focus "on" или "1" - тени будут нормально отображаться в дали.

rs_stats [on,off] - Включение/Выключение диапазона статистики игры, включая FPS.

snd_cache_size [4 - 32] - Управление размером звукового кэша. Лучше выставить максимум - поможет избежать возможных "заиканий".

vid_mode [WxH] - Управляет разрешением монитора.
============================================================================================================
Как увеличить радиус загрузки локации?

stalker\gamedata\config\alife.ltx
switch_distance = 650;
Можно и больше поставить...

===============================================================================================================
Возможно ли добавить в "новости" новые тексты, или только переделать те что есть?

Ответ:
Цитата
Вот навскидочку файлы:
amk_news_lists.script
amk_uniq_news_lists.script
amk_modders.script
но в каком-то(каких-то?) файлах новости не для оффлайн - A-Life, а чисто для атмосферы. Может быть вспомнил не все файлы.
===============================================================================================================
Доброй ночи всем,у меня возник маленький вопрос.
Как сделать сетку в русофицированном фотошопе,для того что бы прописать иконку.
Прошу описать пошагово.
На старом сайте было,теперь приходится задавать вопрос заново.

Чтобы включить её отображение, зайдите в меню:

Редактирование -> Установки -> Направляющие, сетка и фрагменты

И установите в нем следующие значения:

Линия через каждые: 50
Единицы измерения: пиксели
Внутреннее деление на: 1
После чего выберите пункт:

Просмотр -> Показать -> Сетку ( Ctrl+' )
==================================================================================================================

Для тех, кто всё-таки хочет получить рецепты МБГ и эл. дикобраз:
в файле \gamedata\config\gameplay\dialogs_yantar.xml ищем строку

<give_info>info_amk_recipt_tears_fire</give_info>

и под неё добавляем ещё две:

<give_info>info_amk_recipt_tears_fire</give_info>
<give_info>info_amk_recipt_electra_dikoobraz</give_info>
<give_info>info_amk_recipt_giant_small_brother</give_info>

Теперь за квест "костюм призрака" у Сахарова получаем сразу три рецепта:
слезы огня
эл. дикобраз
младший брат гиганта

Квест "костюм призрака" взят для примера
==================================================================================================================
Кто нибуть занет где записаны конфиги дымовой гранаты? Очень хочется покапатся.

w_f1.ltx

[grenade_gd-05]:grenade_f1
===================================================================================================================

Изменение патронов

Параметры патронов хранятся в файле:

...\S.T.A.L.K.E.R\gamedata\config\weapons\weapons.ltx

Найдем, например, раздел, отвечающий за патроны к тому же G36 (о них мы узнали из параметра ammo_class), и разберем, что означает каждый параметр:

    * 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 - визуальный размер дырки на стене от пу

==========================================================================================================

Какие файлы и как надо изменить что бы можно было не ставить NLS мне он не нравится и ставите его не собираюсь но нужна сайга ак-47 и миниган.... Подскажите пожалуйста как этого достич

Значит так. У тебя есть отдельно аддон АК-47, отдельно Сайга, так?
- Самое сложное тут совместить файл textures\ui\ui_icons_equipment.dds, его можно редактировать Photoshop'ом, с установленным плагином DDS. Твоя задача сделать такую версию этого файла, чтобы иконки всех трех стволов присутствовали.
- Второй шаг, положить файлы оружия типа w_m_134.ltx в папку config\weapons, и прописать ссылки на них в файл config\weapons\weapons.ltx (не забыть что АК-47 добавляет новые патроны, их надо добавить в этот файл)
- В файлах оружия прописаны координаты иконки в ui_icons_equipment, начинаются вроде на inv_, надо их учесть если передвигал иконки в том файле
- Затем нужно открыть config\mp\mp_ranks.ltx, найти там чтото типа [rank1], [rank2], несколько таких секций, в каждой есть длинная строка-список оружия, нужно туда добавить названия секций трех стволов.
- Обязательно надо совместить магазины (в примочке к аддону Сяка есть спец. квестовые события для получения этих стволов), для этого надо прописывать новые стволы в файлах config\misc\shop_*\*_supply.ltx и \*_trade.ltx
- Наконец засунуть по своим папкам все ресурсные файлы оружия (звуки в sounds\weapons, текстуры в textures\wpn\, модели в meshes\)
=========================================================================================================================================

Создание игровых часов на худе:

Открываешь скрипт bind_stalker, находишь функцию actor_binder:update(delta), в ней (где-нибудь в конце) прописываешь show_time(). Далее копируешь этот код в конец файла:
function show_time()
local hud = get_hud()
local cs = hud:GetCustomStatic("hud_show_time")
if cs == nil then
hud:AddCustomStatic("hud_show_time", true)
cs = hud:GetCustomStatic("hud_show_time")
end
local time_h = level.get_time_hours()
local time_m = level.get_time_minutes()
local msg = string.format("Время: %d.%d\\n", time_h, time_m)
if cs ~= nil then
cs:wnd():SetText(msg)
end
end

Потом лезешь по этому адресу: *\gamedata\config\ui\ui_custom_msgs.xml, и вставляешь этот код:
<hud_show_time x="180" y="10" width="600" height="100" complex_mode="1">
<text font="letterica18" r="240" g="217" b="182" a="255" align="l"/>
</hud_show_time>

Если есть желание, можешь текст передвинуть или надпись поменять

для кого критично отображение времени:

Надо в файле bind_stalker.script вместо этого:

function show_time()
local hud = get_hud()
local cs = hud:GetCustomStatic("hud_show_time")
if cs == nil then
hud:AddCustomStatic("hud_show_time", true)
cs = hud:GetCustomStatic("hud_show_time")
end
local time_h = level.get_time_hours()
local time_m = level.get_time_minutes()
local msg = string.format("Время: %d.%d\\n", time_h, time_m)
if cs ~= nil then
cs:wnd():SetText(msg)
end
end
написать это:

function show_time()
local hud = get_hud()
local cs = hud:GetCustomStatic("hud_show_time")
if cs == nil then
hud:AddCustomStatic("hud_show_time", true)
cs = hud:GetCustomStatic("hud_show_time")
end
local time_h = level.get_time_hours()
local time_m = level.get_time_minutes()
local msg
if time_m >= 10 then
msg = string.format("Время: %d.%d\\n", time_h, time_m)
else
msg = string.format("Время: %d.0%d\\n", time_h, time_m)
end
if cs ~= nil then
cs:wnd():SetText(msg)
end
end
Аналогично можно сделать, чтобы и часы отображались двузначной цифрой (с нулём впереди).

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

====================================================

Вопрос: Вот если я новый костюм в игру ввожу - то куда текстуры и модели ложить понятно. Где пишем конфиг и описание тоже ясно. А вот куда еще прописываем кроме продажи\квеста\спавна? В какие файлы? Помоги. Спасибо.

текстуры прописываем в \gamedata\textures\textures.ltx

В \gamedata\config\prefetch.ltx прописываем OGF-ы (без расширения файла)

========================================================================================

гемдата\скриптс\amk_uniq_news_lists - атмосферные новости

========================================================================================

=================================================================
КПК, бинокль и куртка - в all.spawn. Спальник - в одном из скриптов.
=================================================================

И вот - переход на АС и вылет. Неизлечимый. (object 'khutor_zone2': section 'sr_idle1': field 'on_npc_in_zone': there is no object with story_id '719'). Эта же ошибка была, когда после отключения выжигателя хотел вернуться на АС, поэтому тогда сразу на Припять пошёл. Так накрылся фриплей. Чего же делать?
[/i

Смотри в шапку про ошибки. Там про этот вылет упоминается, однако без решения.
Я боролся с этой напастью так
В логовском файле (та папка, где сейвы к игре) в самом низу прописывается fatal error. В последней строке ссылка на файл g_script. И указывается строка с командой, которая вызывает вылет. Заходишь через блокнот в этот файл в корневой папке script (сохранив данную версию куда-нибудь) и вырезаешь все несколько строк с командой про крэш. Сохранился. Запустил игру с автосейва. Вылет. Опять открываешь лог. Там будет ссылка (скорее всего ) на файл xr_logic. Повторяешь аналогичную операцию, как и с предыдущим. Запускаешь игру с автосейва. У меня загрузились склады. Я все сделал на них. Потом перешел на бар. Сохранился. вышел. Сохранил измененные скриптовые файлы и вернул сохраненные начальные версии. Опять загрузился и пошел дальше. Ну а каждый раз заходя на склады менял скриповые файлы. Это так по-слесарски. Хотя наверное есть и другие способы бороться с этой ошибкой.

============================================

=Кстати, а есть возможность поставить рандомный интервал между Выбросами? А то по часам элементарно засекается, за недельку привыкаешь.

Код
[blowout_period]

enabled         = 1.0
time            = 1440.0;время между выбросами
shift           = 180.0;максимальное отклонение выброса от времени

Просто шифт ставишь больше - и у тебя фактически рандомный выброс будет.

===============================================================================================

Подскажите, какие файлы отвечают за наполнение редких тайников в АМК?

gamedata\scripts\treasure_manager.script
массив rare_list
===============================================================

В папке gamedata\config\creatures лежат файлы m_*.ltx для каждого монстра.
В этих файлах есть по три секции типа weak, normal и strong. В каждой из этих секций есть подсекция которая отвечает за иммунитет монстра данного типа, к примеру вот:
[bloodsucker_immunities_weak]
....
fire_wound_immunity = 0.18 - так вот чем больше значение этого параметра, тем легче убить мутанта из огнестрельного оружия.

Эти значания есть коэффициенты на которые множиться урон нанесенный данному обьекту. Тоесть можно ставить и больше чем единица.
Health не трож, так как от нее толку очень мало.
Еще есть один способ ослабить монстров, это изменить им damage. Вот например damage кровососа:
[m_bloodsucker_damage]
;bone_name = <hit_scale>,-1,<wound_scale>
;<hit_scale> - коэфф. изменения хита (уменьшения здоровья)
;<wound_scale> - коэфф. изменения величины открытой раны

default = 0.5, -1, 0.5
bip01_spine = 0.5, -1, 0.5
bip01_spine1 = 0.5, -1, 1.0
bip01_spine2 = 0.5, -1, 1.0
bip01_spine3 = 0.5, -1, 1.0
....
Чем больше здесь первый параметр тем уязвимее это место у данного мутанта.

=========================================================================================

Как на существо с определённым ID повесить метку на миникарте? Задолбали контролёры с их вылетом...

с определенным ID или определенные классы монстров?

вот какая функция есть в se_monster.script - но она отмечает ВСЕХ монстров? если же поставить условие на определенный класс - то можно видеть только тех кого нужно.

function se_monster:on_register()
cse_alife_monster_base.on_register( self )

--'self:fill_exclusives()

--' Нарисовать мапспот с собой
if self:alive() and sim_statistic.show_monster_spot == true then
local community, rank = sim_statistic.getNpcType(self)
level.map_add_object_spot_ser(self.id, "alife_presentation_monstr", self:name().." "..community)
end
end
--------------------
function se_monster:on_unregister()
cse_alife_monster_base.on_unregister( self )

--' Убрать мапспот с собой
if sim_statistic.show_monster_spot == true then
local community, rank = sim_statistic.getNpcType(self)
level.map_remove_object_spot(self.id, "alife_presentation_monstr")
end

smart_terrain.unregister_npc(self)
end
--------------------
function se_monster:on_death(killer)
cse_alife_monster_base.on_death(self, killer)

--' Убрать мапспот с собой
if sim_statistic.show_monster_spot == true then
local community, rank = sim_statistic.getNpcType(self)
level.map_remove_object_spot(self.id, "alife_presentation_monstr")
end
end

================================================================================================

А ты уверен, что там именно шейдер заменен, а не использован эффект выжигателя, когда к нему подходишь? Кто-то предлагал таким способом делать черно-белый ПНВ.

Эффект выжигатея заменяющий шейдер плохого ПНВ в Priboj Stori

Файл
"c:\Program Files\GSC World Publishing\S.T.A.L.K.E.R\gamedata\config\misc\postprocess.ltx"

Замени все в секции на:

[effector_nightvision_bad]
pp_eff_name = psy_antenna.ppe
self.base_amplitude = color(0.2,0.15,0.0)
pp_eff_cyclic = 1
blur = 5
gray = 0 ;.9
noise = 0 ;.5
noise_scale = 0
noise_color = 0.535, 0.493, 0.389, 0
self.gray_color = 0.535, 0.493, 0.389
self.base_color = 0.535, 0.493, 0.389

Мне тоже кажется более юзабельным!
============================================================================

извиняюсь за тупость но что именно отвечает за расположение оружия? smile.gif
А то что то много там position...

w_xxx.ltx
[wpn_xxx_hud]
orientation = x,x,x
position = x,x,x

===========================================================================

Как параметр ef_weapon_type влияет на способ ведения стрельбы?

5 - стрелять по пистолетному - быстрои и почти не целясь
6 - как из автомата (очередями)
7 - прицелиться и выстрелить одиночным
8 - ОЧЕНЬ долго целиться и выстрелить (снайпер)
про 9 не помню....

====================================================================================================

Спасибо, и если можно подскажите что менять ?
Нашёл в alife.ltx. такие строчки
time_factor = 10; 1; ;396.0;скорость для демонстрации смены дня и ночи
...
Как я понимаю надо начинать новую игру ?

Все правильно - если поменять time_factor на 5 - время будет идти в два раза медленнее. Больше ничего менять кажется не надо. Новую игру начинать не обязательно - скорость времени изменится если поспать.

==================================================================================================

Наполение редких тайников настраивается скриптом treasure_manager.script

=============================================================

В каком файле правиться стартовый набор меченого? который Сидорович выдает?

\gamedata\scripts\escape_dialog.script надеюсь ты найдёшь где там что кому отдаёт.
функция transfer_deneg выдаёт после квеста ночная звезда... Когда отдал, ему.
функция give_weapon_from_trader это когда перед выдачой квеста дает.
==============================================================
Вопрос ко всем: Как изменить "фамильное" ружье? Хочу сменить обрез на Тоз.

all.spawn
========================================================================
Что означают цифры через запятую написанные в конфиге оружия в строке урона?
это всего навсего повреждение для различных уровней сложности игры

Это так только для ГГ (первая - мастер, вторая - ветеран, ...)
Но ещё первая цифра, независимо от уровнях сложности, определяет урон, наносимый НПС.
========================================================================

Новые боеприпасы
Обязательно ли новые боеприпасы нужно прописывать в:
1. _g.script (и для чего это делается?)
2. death_generic.ltx (и для чего это делается?)
3. death_items_by_levels.ltx (и для чего это делается?)
4. death_items_count.ltx (и для чего это делается?)

1. _g.script
Используется в двух местах.
function object_type(obj) - функция не рабочая, там кривые clsid.
ammo_section = {} - объявляет глобальный массив, который может использоваться из различных скриптов (например, treasure_manager)
2. death_generic.ltx
Для оригинала. Для задания зависимости типа выпадающих патрон от оружия в слотах.
3. death_items_by_levels.ltx
Для оригинала. Возможность появления вещи в инвентаре npc в зависимости от местности.
4. death_items_count.ltx
Для оригинала. Колличество патрон в инвентаре npc в зависимости от уровня сложности.

Есть ещё файлы ph_box_xxx.ltx
Там тоже фигурируют патроны. Это лут для разбиваемых ящиков.

======================================================================================
Вопрос: bones_koeff_protection = gilet_antigas_damage - как работает эта строка в конфиге костюма (принцип или действие оной)?

Каждый костюм ГГ (и вижуал непися) помимо иммунитетов имеет защиту различных участков тела. Защита задаётся в виде различных коэффициентов повреждения для различных костей модели. Если повреждение наносится в конкретную кость, то производится учёт соответствующих коэффициентов. Приведённая вами строка указывает на секцию в damages.ltx, в которой и заданы такие коэффициенты.

===========================================================================================

Я так понимаю, что в чистом амк не получиться поколдавать с инвентарем трупов?
Код
gamedata/config/misc/
death_generic.ltx
death_items_by_communities.ltx
death_items_by_levels.ltx
death_items_count.ltx

Смотри, правь, и будет счастья.

=======================================================

Кто знает какой параметр отвечает за размер перекрестия оружия, к примеру мне надо увеличить крестик прицел не уменьшая разброс определенного ствола

В файле \gamedata\config\system.ltx ищещь такие строки:
[hud_cursor]
;все размеры в процентах от длины экрана
cross_length = 0.01 ;длина "палочки" прицела
min_radius = 0.0 ;минимальный радиус прицела (при нулевой дисперсии)
max_radius = 1.0 ;максимальный радиус
radius_lerp_speed = 0.08 ;скорость интерполяции положений прицела
cross_color = 240,217,182,255 ;цвет прицела
disp_scale = 0.08 ;масштаб прицела (относительно радиан)

=====================================================================================================

Например, спавн тушканов в лагере новичков, на дороге напротив костра:

Код
amk.spawn_item("m_tushkano_e",vector():set(-206,-20.5,-145),61,46567)
amk.spawn_item("m_tushkano_normal",vector():set(-206,-20.5,-145),61,46567)
amk.spawn_item("tushkano_normal",vector():set(-206,-20.5,-145),61,46567)
-- или
alife():create("m_tushkano_e",vector():set(-206,-20.5,-145),46567,61)
alife():create("m_tushkano_normal",vector():set(-206,-20.5,-145),46567,61)
alife():create("tushkano_normal",vector():set(-206,-20.5,-145),46567,61)

Во-первых, обратите внимание, что амк-шной функции spawn_item сначала ставится гейм_вертекс, а потом левел_вертекс (61,46567),
а если напрямую использовать глобальную функцию alife(), то наоборот (46567,61).
Аналогично, если вы будете привязывать координаты к координатам актора.

Во-вторых, спавн монстров происходит, когда от актора до места спавна 50 метров и больше. То есть, если спавните рядом с актором, то надо отойти от этого места на 50 метров и монстры появятся или спавнить сразу на расстоянии. Если спавн происходит за расстоянием а-лайфа или вообще на другой локации, то монстры будут в офлайне, пока актор не приблизится к ним на расстояние а-лайфа.
=========================================================================================
А как уже имеющемуся НПС заспавнить что-то в инвентарь. Это реально?

Пожалуйста. Спавн Сига и патронов в инвентарь Волка:

Код
local npc,obj
    for i=0,65534 do -- перебираем онлайн-объекты
        npc = level.object_by_id(i)
        if npc and npc:name() == "esc_wolf" then -- если объект(непись) существует
                                                  -- и его имя такое-то
            obj = alife():object(npc:id()) -- определяем его по id
        end
    end
    alife():create("wpn_sig550", -- ну, и спавним предметы, какие надо...
    obj.position,
    obj.m_level_vertex_id,
    obj.m_game_vertex_id,
    obj.id) -- ему в инвентарь
    alife():create_ammo("ammo_5.56x45_ss190", -- патроны, какие надо...
    obj.position,
    obj.m_level_vertex_id,
    obj.m_game_vertex_id,
    obj.id, -- ему в инвентарь
    30)

Если непись был только что заспавнен, то ещё легче - перебор делать не надо, сразу получаем его как объект, а по id его определяем сдедующим образом:
obj = alife():object(npc.id)
Если известен story_id - тоже перебирать не надо.

PS у меня не получается таким образом заспавнить более одной пачки патронов, чтобы было больше, надо ещё раз писать полностью: alife():create_ammo и т.д.
==========================================================================================

А как сделать чтобы метку на волка поставить? А лучше не на Волка а какого-нибудь обычного непися? И еще, если я хочу привязать свой спаун к заходу на локацию, например зашел гг на локацию кордон и чтобы нужные мне неписи спавнились каждый раз при заходе на кордон. Где мне нужно создать инфопоршень?

По поводу метки... Получить Волка как объект (npc - см. моё предыдущее сообщение) и поставить на него метку:
level.map_add_object_spot_ser(npc.id, "blue_location","Волк")
или
level_tasks.add_location(npc.id, "blue_location","Волк")

treasure - Иконка тайника
green_location - Зеленая стандартная пометка квестов
blue_location - Кружок с человечком
crlc_big - Большой круг типа где-то тут...
crlc_mdl - Средний круг
crlc_small - Маленький круг
alife_presentation_monstr - Большая белая точка
===================================================================================================
По поводу спавна...
При загрузке уровня происходит спавн актёра и перевод его в онлайн, вызывается function actor_binder:net_spawn(data) (файл bind_stalker), соответственно, поместить сюда вызов вашей функции спавна, в которой перед спавном предмета проверять имя локации:
if level == "l01_escape" then
...
таким образом при каждом заходе будет спавн.
==================================================================================================
Кто-рибудь ответьте пожалуйста на вопрос: если перевооружить NPC на всей локации, при респавне новые NPC тоже будут с новым оружием или нет?

Нет. Для этого надо править ...\S.T.A.L.K.E.R\gamedata\config\gameplay\character_desc_simulation.xml
Из него берутся респаунившиеся неписи.
В АМК этот файл не используется, надо брать из .db архива.
=================================================================================================
Как сделать что-бы у мертвых NPC с новым оружием в инвентаре были и новые патроны. Подскажи пожалуйста где ковырять?

В папке misc, такие файлы:

death_generic.ltx - привязывается оружие к патронам (разобраться не сложно);
death_items_by_communities.ltx - вероятность заспаунить предметы или нет (можно расписать у каждой группировки). В секции [stalker] указываются дефолтные значения;
death_items_by_levels.ltx - указывается возможность появления в инвентаре предметов в зависимости от локации (т.е. можно запретить появление определённых предметов на конкретной локации вне зависимости от группировки;
death_items_count.ltx - указывается количество (от и до) предметов в зависимости от уровня сложности.

Все файлы для игры на чистом АМК надо извлекать из db архива либо смотреть самую первую версия Weapons Pack, а в NLC часть из них уже есть.
=================================================================================
народ обьясните плиз как сделать тушканов нейтральными, ато я видел один такой пост но там толком нечего не обьясняется smile.gif

Посмотри в самом конце файла ...S.T.A.L.K.E.R\gamedata\config\creatures\game_relations.ltx

Там найдёшь таблицу отношений монстров к неписям (human) и ГГ (actor).
Таблица построена по принципу координат x и y. Сводишь по "осям координат" нужного тебе монстра (тушканы самые последние в списке) и , например, ГГ (он самый первый в списке) и выставляешь нужную цифру. Сейчас там стоит "-1" (см. первую цифру в строке tushkano), а ты выстави "0". И тушканы будут нейтральны к ГГ.

------------добавлено-----------------
PS Забыл ещё один момент. Желательно в строке actor, самую последнюю цифру - "-1" тоже заменить на "0". Это, по идее наоборот, отношение ГГ к тушканам.
=====================================================================================

Если подразумевается вероятность выпадения тайников, то в treasure_manager.script
rarets = 90 (чем меньше значение, тем чаще вападают тайники)

======================================================================================
Да и еще. Как поменять размер текста, отображающего время?

В файле ui_custom_msgs.xml, где ты вставляешь объявление поля для написания времени, типа:
<hud_show_time ......
есть объявление шрифта, типа
<text font="letterica18"

если вместо него проставить
<text font="graffiti32"
будут большие цифры с шрифтом типа граффити (похоже у тебя именно это и стоит),
а если
<text font="graffiti22"
то тоже будет граффити, но поменьше.

0

3

МЕТОДЫ РЕДАКТИРОВАНИЯ ФАЙЛОВ СТАЛКЕР ТЕНЬ ЧЕРНОБЫЛЯ - 3ЧАСТЬ .
---------------------------------------------------------------------------------------------------------------------------
Вопрос;
Люди помогите, скачал мод. Решил перевооружить военных на кордоне автоматом ак47 и патронами под него. вместо ак74.
Все работает, но у убитых нпс нет патронов при обыске. Читал сообщения, там описывалось что надо править какие та скрипты. Какие я так и не узнал... Пробывал переделать ак47 под оригинальные патроны от ак74 которые присутствуют в игре. И раздав калаши вновь, патроны я так и не увидел... Так какие же скрипты за это отвечают, и почему у нпс всеравно не спавнятся обычные патроны под ак74, в файлах я поменял тока сам автомат а не патроны?

death_generic.ltx - привязывается оружие к патронам (разобраться не сложно);
death_items_by_communities.ltx - вероятность заспаунить предметы или нет (можно расписать у каждой группировки). В секции [stalker] указываются дефолтные значения;
death_items_by_levels.ltx - указывается возможность появления в инвентаре предметов в зависимости от локации (т.е. можно запретить появление определённых предметов на конкретной локации вне зависимости от группировки;
death_items_count.ltx - указывается количество (от и до) предметов в зависимости от уровня сложности.

======================================================================

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

bullet_hit_power_k = 0.8
bullet_speed_k = 0.8
fire_dispersion_base_k = 1.25
cam_dispersion_k = 0.8

Так же в конфигурации оружия (абакан), есть такие строки:

silencer_hit_power = 0.42
silencer_hit_impulse = 120
silencer_fire_distance = 600
silencer_bullet_speed = 310

Как разобраться какой параметр, когда применяются?

Мои предположения:

при silencer_status = 0 (глушитель поставить нельзя)
ни один параметр не учитывается

при silencer_status = 1 (глушитель интегрирован)
берутся данные из конфига оружия (silencer_hit_power, silencer_hit_impulse, silencer_fire_distance, silencer_bullet_speed)

при silencer_status = 2 (глушителя нет, но поставить можно)
беруться данные из конфига аддон "глушитель" (bullet_hit_power_k, bullet_speed_k, fire_dispersion_base_k, cam_dispersion_k)

В случае silencer_status = 1, данные представлены сразу в готовом виде и тупо заменяют соответствующие данные оружия

В случае silencer_status = 2, данные оружия нужно множить на коэффициент указанный в аддоне "глушитель".

======================================================================

Где изменяется время продолжительности выброса?

в amk_mod вот эти строчки

amk.g_start_timer("blowout",0,0,3,1)

amk.g_start_timer("blowout",0,0,3,2)

amk.g_start_timer("blowout",0,0,3,3)

amk.g_start_timer("blowout",0,0,3,4)
=======================================================================

Где есть максимальный обьем рюкзака?
Если хочешь отключить фичу то зайди в файл amk_utils.script, найди там переменную RestrictionStock и задай ей значение 0.
.........................................................................
там не написано что надо дроп_итемы комментить, там вот что написано:

убрать из amk_utils.script вызовы двух функций:

restriction_stock.restriction_of_stock(obj)
restriction_stock.restriction_of_stock(item)

Если у тебя стоит патч 2, то еще проще:
открываешь тот же amk_utils.script, в начале находишь вот это:
RestrictionStock = 1
и меняешь на это:
RestrictionStock = nil

и фсе smile.gif

=============================================================================

Раздал военным ПКМ, а они ими что-то не очень хотят пользоваться - стреляют одиночными хоть ты тресни. И так крутил конфиг оружия, и так - не хотят. Тут вспомнил как kwendy крутил параметры weapon_min_queue_size_far и weapon_max_queue_size_far. Незадача, если этот параметр выкрутить в m_stalker.ltx, то все НПС будут стрелять как сумасшедшие. Рискнул засунуть эти параметры в конфиг ПКМ'а в следующем виде:

weapon_min_queue_size_far = 15
weapon_max_queue_size_far = 15
weapon_min_queue_interval_far = 500
weapon_max_queue_interval_far = 700

weapon_min_queue_size_medium = 30
weapon_max_queue_size_medium = 30
weapon_min_queue_interval_medium = 400
weapon_max_queue_interval_medium = 600

weapon_min_queue_size_close = 100
weapon_max_queue_size_close = 100
weapon_min_queue_interval_close = 300
weapon_max_queue_interval_close = 500

Опа! Военные стали из ПКМ шмалять именно с такими настройками - на дальних дистанциях очередями по 15, на средних - по 30, а на близких весь цинк в 100 патронов расстреливать за раз. При этом на других сталкеров этот параметр не влияет - они стреляют так как прописано в m_stalker.ltx

Так что таким способом можно задавать логику использования каждого оружия на разных дистанциях.
Для Сайга-12С и остальных гладкостволок себе просписал:
Угу, перед секцией отвечающей за HUD всунул.

weapon_min_queue_size_far = 1
weapon_max_queue_size_far = 2
weapon_min_queue_interval_far = 500
weapon_max_queue_interval_far = 700

weapon_min_queue_size_medium = 2
weapon_max_queue_size_medium = 4
weapon_min_queue_interval_medium = 400
weapon_max_queue_interval_medium = 600

weapon_min_queue_size_close = 4
weapon_max_queue_size_close = 8
weapon_min_queue_interval_close = 300
weapon_max_queue_interval_close = 500

=======================================================================
1. Заходим в папку gamedata/config/creatures
2. Открываем конфиг монстра, например m_pseudodog.ltx
3. Находим строку Spawn_Inventory_Item_Probability
4. Ставим значение = 1
Все! Теперь у измененного монстра всегда будут появляться запчасти.
Запчасти будут появляться только у вновь заспавненых монстров, а у тех которые были до изменения значения вероятность останется старой. Если хотите чтобы 100% вероятность была сразу, начните новую игру.

===========================================================================
Как отключить ограничение обьема в инвентаре?
Если у тебя АМК+два патча открываешь тот же amk_utils.script, в начале находишь вот это:
RestrictionStock = 1
и меняешь на это:
RestrictionStock = nil
=============================================================================
Решил все же написать. Надоели вылеты из-за указанной выше строки (проблемы с вылетом 1121), а так как уже не раз говорилось, что она сделана для диагностики, то я плюнул и отключил эту функцию - пусть что-то там не работает, а игра не вылетает - всё равно оно не работает, а грузить игру опять надо.

В результате всю субботу пробегал в игру, не раз заходил на Припять, вот в воскресенья с обеда и до вечера бегаю опять же по Припяти (выполняю задания Болотного Доктора и Сяка) и... ни одного вылета, ни одной испорченной записи. Все записи сделанные на Припяти, после Припяти, переходы с Припяти работают. Есть только вылеты без лога после непрерывной игры 1-2 часа, но после загрузки с последнего сделанного сохранения - ручного или быстрого - неважно, игра спокойно продолжается. Скорее это косячит мой NoDVD.

По-этому рассказываю, что я сделал - пробуйте, может и вам поможет:

1. находим файл _g.script
2. делаем его копию, на всякий случай, копируем его с именем _g.script.BAK
3. открываем его на редактирование и находим строку "function abort(fmt, ...)"
4. Видим пере собой строки:

function abort(fmt, ...)
local reason = (...==nil and fmt) or string.format(fmt, ...)
-- assert("ERROR: " .. reason)
get_console():execute("load ~~~ " .. reason) get_console():execute("flush")
string.format("%s")
end

5. изменяем их следующим образом:

function abort(fmt, ...)
-- local reason = (...==nil and fmt) or string.format(fmt, ...)
-- assert("ERROR: " .. reason)
-- get_console():execute("load ~~~ " .. reason)
-- get_console():execute("flush")
-- string.format("%s")
end

6. сохраняем и пробуем играть.

================================================================================

Если кому интересно, нашел решение проблемы с вылетом 1121 на милитари, где парой строчек выше стояло
! Cannot find saved game ~~~ object 'khutor_zone': section 'sr_idle1': field 'on_npc_in_zone': there is no object with story_id '710'

Вылет происходит, если на милитари уничтожено тело (например, в аномалии) Павлика (предателя свободы).
Чтоб не вылетало, надо подредактировать файл сохранения (обычно *_autosave.sav) в любом hex-редакторе.
Ищем там текст 710, затем из всех найденных смотрим тот, рядом с которым стоит sr_idle1 , on_npc_d или нечто подобное, и это 710 заменяем на 500.
Пробуем играть. Если снова вылет, но уже с 709, то делаем то же самое, но уже для 709.
У меня пошло, вроде без глюков.
================================================================================

Где изменить выдаваемые Сидоровичем в начале игры предметы?

\gamedata\scripts\escape_dialog.script с помощью Блокнота.

Ищешь строки:

function give_weapon_to_actor (trader, actor)
if not has_alife_info("kvest_art_started") then
dialogs.relocate_item_section(trader, "wpn_pm", "in")
dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in")
dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in")
dialogs.relocate_item_section(trader, "wpn_knife", "in")
else

Заменяешь то, что помечено красным на нужное тебе оружие (wpn) и патроны (ammo).
P.S. Эти строки отвечают за то, какое оружие выдает ВОЛК в самом первом квесте на спасение Шустрого (я просто квест на арт у Сидора не брал никогда, потому и менял только здесь).

Если же ты берешь квест на арт у Сидора, то меняй в том же файле в этих строках:

function give_weapon_from_trader(trader, actor)
dialogs.relocate_item_section(trader, "wpn_pm", "in")
dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in")
dialogs.relocate_item_section(trader, "wpn_knife", "in")
--dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in")
end
========================================================================================
Оружие в первом слоте уступают по убойной силе оружию во втором слоте.
Если использовать первый слот для детектора, то можно использовать одну ячейку пояса для арта.
Для установки детекторов в 1-й слот: (везде)
gamedata\config\misc\items.ltx
Изменить в разделе "devices"
Для простого детектора
строка 631
;slot = 3
на
slot = 1
аналогично для других детекторов.
Теперь детектор можно носить как в первом слоте, так и на поясе.
=========================================================================================

В каких файлах, что нужно прописать, чтобы добавить нового торговца, например на Кордон?

Совсем нового? Или существующему НПС добавить функцию торговли? Первое через спавн и всем, что с этим связано. Второе, через файл гулага, к которому прописан НПС. Вот, для примера как прописать торговлю повару на базе свободы. Берем файл gulag_mil_freedom1.ltx, находим секцию повара и пишем:
[logic@mil_freedom_cook]
active = walker1@mil_freedom_cook
actor_dialogs = dialogs@mil_freedom_cook
trade = misc\trade_povar.ltx
on_death = on_death@mil_freedom_cook

Дальше создаешь файл trade_povar.ltx похожий на trade_generic.ltx

=======================================================================================

Как отключить излучатели в х16 и х10 с начала игры?

Ищем в оригинальной gamadata инфопоршни, которые выдаются при отключении x-16 и нахождении документов в х-18. Все инфопоршни находятся в файлах info_..... (те которые тебе нужны находятся скорей всего в файлах либо
info_l08yantar, либо info_l06dark_valley_u, либо info_l06yantar точнее не скажу потому как сам не искал эти инфопоршни). Находишь нужные инфопоршни и вставляешь в диалог например Сидору вот так :

phrase id="199">
<text>escape_trader_start_dialog_199</text>
<action>escape_dialog.give_weapon_to_actor</action>
<action>escape_dialog.give_knife_to_actor</action>
<give_info>esc_trader_direct</give_info>
<give_info>tutorial_wounded_start</give_info>
<next>1999</next>

где вместо esc_trader_direct вставляешь свой инфопоршень. Все после разговора с Сидором у тебя
автоматом засчитывается отключение х-16 и и х-18.(да может быть такое что например за х-16 отвечает несколько инфопоршней - 1)Принести доки Призрака бармену и 2) отключить пси-установку тогда тебе надо будет искать уже 2 инфопоршня и опять же вставлять оба в диалог Сидору. Надеюсь понятно?

=============================================================================================

Как настройть спавн артефактов?

Смотри файлы zone_.....
Вот из файла zone_gravi

[zone_gravi_zone_weak]:zone_gravi_zone
$spawn = "zones\gravi_zone_weak"
hit_impulse_scale = 0.1
effective_radius = 0.7

BirthProbability = 0.2 это вероятность появления
artefacts = af_vyvert,0.8, af_gravi, 0.2, af_gold_fish, 0.0 это вероятность того какой артефакт появиться.

===============================================================================================

Спавн персонального НПС (типа Волка)

1) Создаем профиль твоего непися аналогично тому же Волку или Лукашу в одном из файлов character_desc_.... вообщем в том где ты хочешь чтобы непись спавнилась. Для примера вот:
<!---------------------------dan---------------------->
<specific_character id="esc_dan" team_default = "1">
<name>Дэн</name>
<icon>ui_npc_u_actor</icon>
<map_icon x="0" y="0"></map_icon>
<bio>sim_stalker_novice_bio</bio>

<class>esc_dan</class>
<community>trader</community> <terrain_sect>stalker_terrain</terrain_sect>
<money min="100000" max="110000" infinitive="1"></money>

<rank>259</rank>
<reputation>100</reputation>

<visual>actors\svoboda\stalker_sv_exoskeleton</visual>
<snd_config>characters_voice\human_02\bandit\</snd_config>
<crouch_type>0</crouch_type>

<supplies>
[spawn] \n
wpn_groza \n
ammo_9x39_ap \n
wpn_spas12 \n
ammo_12x70_buck \n
bar_tiran_pda \n
#include "gameplay\character_food.xml" \n
#include "gameplay\character_drugs.xml"
</supplies>

#include "gameplay\character_criticals_6.xml"

<actor_dialog>informator_pda_give</actor_dialog>
<actor_dialog>prinesi_hvost</actor_dialog>
<start_dialog>hello_dialog</start_dialog>
#include "gameplay\character_dialogs.xml"

</specific_character>

2) Дальше прописываем его в файле npc_profile вот так:
<character id="esc_provodnik">
<class>esc_provodnik</class>
</character>
<character id="esc_dan">
<class>esc_dan</class>
</character>
3)прописываем его в файле spawn_sections вот так:
[esc_dan]:stalker
$spawn = "respawn\esc_dan"
character_profile = esc_dan
spec_rank = veteran
community = trader

4) Создаем свой скриптовый файл и в нем пишем функцию спавна вот такую:

function esc_shustryi()
local obj = alife():create("esc_dan",vector():set(112.3336,-7.41105,-42.5093),413823,124)
local params=amk.read_stalker_params(obj)
params.custom="[logic]\nactive=walker\n[walker]\npath_walk = esc_dan_walk1\npath_look = esc_dan_look1\ncombat_ignore_cond=always"
params.sid=481520
amk.write_stalker_params(params,obj)
end

esc_shustryi название нашей функции

local params=amk.read_stalker_params(obj)
params.sid=481520
amk.write_stalker_params(params,obj) при помощи этой функции(кстати она работает только в amk) присваиваем неписю номер

path_walk = esc_dan_walk1 это путь твоего непися

path_look = esc_dan_look1 это точка(точки) куда будет смотреть твой непись

И walk и look могут состоять как из одной точки так и из множества точек
5) Де компелируем all.spawn и ишем соответствующий файл way_.... ( в примере это way_l01_escape) и пропишем ему путь и look вот так :
[esc_dan_walk1]
points = p0,p1,p2
p0:name = wp00|a=run
p0:position = -8.28458690643311,2.47888994216919,61.6851959228516
p0:game_vertex_id = 88
p0:level_vertex_id = 268486

p1:name = wp01|a=hide
p1:position = -87.5448226928711,-4.86890649795532,-76.5067977905273
p1:game_vertex_id = 75
p1:level_vertex_id = 177755

p2:name = wp02|a=sneak
p2:position = -13.3662910461426,0.638113260269165,259.589599609375
p2:game_vertex_id = 184
p2:level_vertex_id = 263975

[esc_dan_look1]
points = p0,p1,p2
p0:name = wp00
p0:position = 5.22266483306885,2.47839999198914,61.6714706420898
p0:game_vertex_id = 89
p0:level_vertex_id = 281623

p1:name = wp01
p1:position = -160.825149536133,-30.1117496490479,-359.227966308594
p1:game_vertex_id = 31
p1:level_vertex_id = 88416

p2:name = wp02
p2:position = 164.339752197266,-8.24007034301758,-12.4323778152466
p2:game_vertex_id = 137
p2:level_vertex_id = 468145

как ты видешь здесь путь и look состоят из 3 точек(минимум по одной)Теперь твоя непись будет ходить и смотреть по прописанным тобой точкам. Компелируем all.spawn и начинаем(обязательно новую игру)
Свою функцию спавна вставляем в нужный тебе диалог и после разговора непись твоя спавниться.

<phrase id="111">
<text>escape_shustryi_start_111</text>
<action>new_spawn.esc_shustryi</action>
<next>1111</next>
</phrase>
<phrase id="11">
<text>escape_shustryi_start_11</text>
<next>111</next>
</phrase>
new_spawn - название файла(скриптового)
esc_shustryi -название функции

==================================================================================================

Как сделать так, чтобы при прицеливании (оптики нет) приближения не происходило?

Cтрока в конфиге оружия:
scope_zoom_factor = 80 ; степень приближения худа при прицеливании - чем больше значение - тем меньше зум.

=====================================================================================================

И еще вопрос обьясните подробно плз как включить подсветку артов?

Открываешь artefacts.ltx из S.T.A.L.K.E.R\gamedata\config\misc
Ищешь артефакт и меняешь параметры (если нет, добавляешь):
;подсветка арта
lights_enabled = true(false) (включено(отключено))
trail_light_color = х, х, х (R,G,B.)
trail_light_range = х (радиус свечения)
=====================================================================================================

Как сделать в описании цветные строки? :какие команды?

Править в любом текстовом редакторе. Как видите, можно просто открыть чей-нибудь код и сделать по аналогии:

Код
   
<string id="bandit_outfit_description">
   <text>%c[255,1,255,255]Удар:%c[255,1,255,1] ... Электрошок:%c[255,1,255,1] +5%\n%c[default]
   Традиционная одежда бандита...</text>
</string>

%c[255,1,255,255] - последние три цифры - цвет в системе RGB, первая - прозрачность (если не ошибаюсь).
%c[default] - понятно, цвет по умолчанию.

==========================================================================================

Может кто-нибудь сказать как сделать бессмертие? Какой параметр в каком файле нужно подправить.

В папке gamedata\config\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 - ГГ будет бессмертным. Можно не все менять, тогда можно сделать, например, что ГГ будет пуленепробиваемым, но будет дохнуть в аномалиях и т. п.
==========================================================================================

Открываем ...\S.T.A.L.K.E.R\gamedata\scripts\escape_dialog.script, и ищем такую функцию (строку):

function give_weapon_from_trader(trader, actor)
dialogs.relocate_item_section(trader, "wpn_pm", "in")
dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in")
dialogs.relocate_item_section(trader, "wpn_knife", "in")
--dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in")
end

После выделенной строки вставляем такую конструкцию:
dialogs.relocate_money(trader, здесь указываем необходиму сумму денег, "in")
dialogs.relocate_item_section(trader, "wpn_spas12", "in")

Должно получиться примерно так:
function give_weapon_from_trader(trader, actor)
dialogs.relocate_item_section(trader, "wpn_pm", "in")
dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in")
dialogs.relocate_item_section(trader, "wpn_knife", "in")
--dialogs.relocate_item_section(trader, "ammo_9x18_fmj", "in")
dialogs.relocate_money(trader, 10000, "in")
dialogs.relocate_item_section(trader, "wpn_spas12", "in")
end

В итоге, после взятия у Сидоровича квеста на "Ночную звезду", в самом начале, ГГ будет выдано 10000 рублей и СПАС-12.
=====================================================================================================================

Не могу найти где и как изменить скорость автовпгрейда в АИ паке.
Подскажите плиз.

в файле xrs_armor.script параметр:
local upgrade_delta = 720

когда время шло 1:10 (в АМК 1.4) 720 соответствовало 3 игровым суткам, в 1.4.1 это будет 6 суток.
======================================================================================================================

Убрать ты их не сможешь а вот убрать им эффект Электры можно. Короче иди в gamedata/scripts/bind_monster и ищи там

amk.on_monster_hit(obj, amount, local_direction, who, bone_index)

if obj:section()=="electro_chimera" and time_global()>(self.charge_time or 0)+3000 then
amk_particle.amk_particle({particle="anomaly2\\electra2_blast",pos=obj:bone_position("bip01_spine"),sound="anomaly\\electra_blast1"})
local dist = db.actor:position():distance_to(obj:bone_position("bip01_spine"))
if dist < 20 then
local h = hit()
h.impulse = 0
h.draftsman = db.actor
h.direction = vector():set(0,0,0)
h:bone("bip01_spine")
h.power = 1/dist
h.type = hit.strike
db.actor:hit(h)
h.power = 15/dist
h.type = hit.shock
db.actor:hit(h)
end
self.charge_time=time_global()
end

Измени это так.

amk.on_monster_hit(obj, amount, local_direction, who, bone_index)

if obj:section()=="electro_chimera" and time_global()>(self.charge_time or 0)+3000 then
amk_particle.amk_particle({particle="anomaly2\\electra2_blast",pos=obj:bone_position("bip01_spine"),sound="anomaly\\electra_blast1"})
local dist = db.actor:position():distance_to(obj:bone_position("bip01_spine"))
if dist < 20 then
local h = hit()
h.impulse = 0
h.draftsman = db.actor
h.direction = vector():set(0,0,0)
h:bone("bip01_spine")
h.power = 0/dist
h.type = hit.strike
db.actor:hit(h)
h.power = 0/dist
h.type = hit.shock
db.actor:hit(h)
end
self.charge_time=time_global()
end

=============================================================================================
2) Как экзоскелету увеличить защиту головы? С одного выстрела ПБ в голову, челы в экзоскелетах валяться!

Найдешь, и мне расскажешь. Пока могу только рассказать, что имеет отношение к защите головы у экзосеклета:

outfit.ltx -> bones_koeff_protection = exo_helmet_damage

damages.ltx -> [exo_helmet_damage]:body_exo_damage,head_helmet_damage

[head_helmet_damage]
bip01_neck = 1.0, 0.2
bip01_head = 1.0, 0.2
eyelid_1 = 1.0, 0.2
eye_left = 1.0, 0.2
eye_right = 1.0, 0.2
jaw_1 = 1.0, 0.2
============================================================================================

да и еще, пока не забыл, тестировал СИМБИОН так там Зеленый военный ПНВ отлично сделан, безо всяких там двоений и искажений... Скажите какой файл за это отвечает?

1.) Загляни в папочку gamedata\anims нет-ли там файликов типа nightvision_bad.ppe или похожих. Это файлики постэффектов, они отвечают за обработку изображения для эффектов типа радиации, пнв, ранений, выбросов и т.д.
2.) Загляни в самый конец файла gamedata\config\misc\postprocess.ltx, что там прописано в секции [effector_nightvision_bad] и т.д. Там пишется имя файла постпроцесса из п.1, отвечающего за ПНВ, всего в АМК пока что прописано три постпроцесса ПНВ, задействовано из них вроде-бы только два.
3.) Попробуй заменить в [effector_nightvision_bad] pp_eff_name = nightvision_bad.ppe на pp_eff_name = nightvision.ppe, этот постпроцесс в игре присутствует и нигде не применяется, возможно его прменили в Симбиане. Это зеленый ПНВ с неплохой видимостью и без двоения.

..............................................

\gamedata\config\misk\postprocess.ltx

Находишь строчки:

[effector_nightvision_bad]
pp_eff_name = nightvision_bad.ppe

И меняешь на:

[effector_nightvision_bad]
pp_eff_name = nightvision_good.ppe

....................................................

2. А нельзя поковырять конфиг самого ПНВ? Например, сделать его четким, но уменьшить дальность видимости...

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

1. в файле \gamedata\config\misc\postprocess.ltx в конце в секции Postprocess изменяем nightvision_bad.ppe на nightvision.ppe
ПНВ остается зеленым и довольно паршивым, но хотя-бы не двоится в глазах

или

2. там же секцию
[effector_nightvision_bad]
pp_eff_name = nightvision_bad.ppe
pp_eff_cyclic = 1

заменяем на
[effector_nightvision_bad]
pp_eff_name = psy_antenna.ppe
self.base_amplitude = color(0.2,0.15,0.0)
pp_eff_cyclic = 1
blur = 5
gray = 0
noise = 0
noise_scale = 0
noise_color = 0.535, 0.493, 0.389, 0
self.gray_color = 0.535, 0.493, 0.389
self.base_color = 0.535, 0.493, 0.389

ПНВ становится гораздо симпатичнее.

Вообще на данный момент без супер-напряга можно включить в игру 4 вида уже готовых ПНВ: абсолютно никакой с косоглазием, плохонький без косоглазия, желтый среднего качества и голубой цифровой. Пси ПНВ я еще не пробовал.

Дальность видимости уменьшить нельзя, также нельзя сделать "настоящий" тепловизор, только светоусилитель. Ну, насколько я пока понял.

[Добавлено]
Попробовал ПНВ из секции
[effector_nightvision_psy]
pp_eff_name = psy_antenna.ppe
pp_eff_cyclic = 1
, симпатично и удобно, правда на ПНВ не очень похоже. Хотя в принципе можно подключать как пятый вид ПНВ.
.........................................................................................

юди. Никто не подскажет как создать новый эффектор ПНВ? Пока я дошел до связи между

На тебе черно-белый ПНВ на эффекте как от пси-антен.

[effector_nightvision_blackwhite]
pp_eff_name = psy_antenna.ppe
self.base_amplitude = color(0.2,0.15,0.0)
pp_eff_cyclic = 1
blur = 5
gray = 0
noise = 0
noise_scale = 0
noise_color = 0.535, 0.493, 0.389, 0
self.gray_color = 0.535, 0.493, 0.389
self.base_color = 0.535, 0.493, 0.389

noise_color = 0.535, 0.493, 0.389, 0 ; цвет шума
self.gray_color = 0.535, 0.493, 0.389 ; цвет добавленного оттенка - вобщем делает пнв подсвеченным например синим
;( как effector_nightvision_good ) или зеленым (effector_nightvision_bad)
self.base_color = 0.535, 0.493, 0.389 ;изменение цвета окружающей среды, по старой технологии РГБ притушить одни цвета и сделать более яркими другие.

==================================================================================================

Как добавить худ маски для костюма?

Открываем файл амк_мод.скриптс и добавляем строку (смотрим пример ниже):

        exo_outfit="hud_exo",
        outfit_exo_m1="hud_exo",               <<<< для примера добавил худ маски экзоскелета для модифицированного экзоскелета.
killer_gaz_outfit_m1="hud_merc",

==================================================================================================

Как приписать еде свойство приближения сна? ( я хочу чтобы через 3 минуты после употребления ГГ засыпал)

В AMK_MOD найди такую строчку:

--'elseif (section=="medkit" or section=="medkit_army" or section=="medkit_scientic") then
--' stype="med"

а под ней допиши:

elseif (section=="conserva" or section=="kolbasa" or section=="bread") then
stype="food"

теперь сьешь 4 консервы или 4 хлеба(можно например 2 хлеба и 2 колбасы) можно будет поспать(как раньше с аптечками).

=========================================================================================================

...некорректно(очень жирно) отображаются текстуры колючей проволоки на заборах...

удали shaders.xr в геймдате
===========================================================================================================

Преодолел свою лень, поискал в распакованной игре ... и нашел "магическое слово" ...
В конфиге любого патрона надо написать tracer_color_ID = 0 или другое значение в соответствии с таблицей цветов ...
И будут трассеры разных цветов для разных патронов ... laugh.gif

P.S. По умолчанию в игре tracer_color_ID = 0 ...
... естественно таблицу можно разнообразить ... добавить пару, тройку выразительных цветов ...

В добавление к сказанному ... после включения трассеров у боеприпасов для более гибкой конфигурации можно выключать трассеры в конфигах оружия ... сразу после ammo_class = ... пишем строку tracers = off ...
Пример применения: включим трассеры у Пара патронов (ammo_9x19) в weapons.ltx ... Затем у всех пистолетов использующих этот патрон и у МР5 с глушителем впишем соотв. строку (см. выше) ... и тогда только обычный МР5 будет стрелять трассерами ...
Я у себя также запретил трассеры у всех снайперских модификаций ... АН-94, Sig550, LR300 и у модификаций с встроенными глушителями ...
Перейти в начало страницыСообщить о сообщении

============================================================================================================

1.спавн в трупах лута:
death_items_by_communities.ltx
death_items_by_levels.ltx
death_items_count.ltx

2. спавн неписей
spawn_sections.ltx

=================================================================================================================
по уже наверное 10й просьбе "убрать эфект при обыске зомби" в Мародер моде решил полазить в скрипте и нашел вот это:

открыть файл xr_motivator.script:
найти в нём строчку
sak.zombie_checkup()
и поставить перед ней два дефиса.

==================================================================================================================

Сталкеры дайте мне строчки для часов в левый верхний угол с фоном - пожайлуста.

Лови в правый верхний:
1.\gamedata\scripts\sak.script изменяешь формат (убираешь слово "время")
839: if time_m >= 10 then
840: msg = string.format("%d:%d\n", time_h, time_m)
841: else
842: msg = string.format("%d:0%d\n", time_h, time_m)
843: end

2. \gamedata\config\ui\ui_custom_msgs.xml изменяешь hud
144: <hud_show_time x="852" y="15" width="157" height="67">
145: <text x="-30" y="23it" font="graffiti32" r="238" g="155" b="23" a="255" align="r"/>
146: <texture>ui_hud_frame_clock</texture>
147: </hud_show_time>

ps под левый верхний измени координаты х,у

А если эту секцию вот так сделать:
if time_m >= 10 then
if time_h>= 10 then
msg = string.format("%d:%d\n", time_h, time_m)
else
msg = string.format("0%d:%d\n", time_h, time_m)
end
else
if time_h>= 10 then
msg = string.format("%d:0%d\n", time_h, time_m)
else
msg = string.format("0%d:0%d\n", time_h, time_m)
end
end

то и количество часов будет отображаться в формате "24" (0 впереди)

function show_time()
        local hud = get_hud()
        local cs = hud:GetCustomStatic("hud_show_time")
        if cs == nil then
                hud:AddCustomStatic("hud_show_time", true)
                cs = hud:GetCustomStatic("hud_show_time")
        end
        local time_h = level.get_time_hours()
        local time_m = level.get_time_minutes()
        local msg
        msg = string.format("%02d:%02d\\n", time_h, time_m)
        if cs ~= nil then cs:wnd():SetText(msg) end
end

===========================================================================================
Создание статей в ПДА.

<info_portion id="price_sidor">
          <article>price_sidor</article>
     </info_portion>

инфопошен "price_sidor" - дается в диалоге он добавляет вызов артикля:
артикль price_sidor
артикль описывается в storyline_info_sak_way (или в другом стори лайн...):

<article article_type="journal" id="price_sidor" name="Сидорович предлагает" group="enc_price">
<text>price_sidor_text</text>
    </article>
ну а сам текст в стрингах...

Т.е . я например создаю  info_hunter_way.xml - и в нем пишу инфопошен
в стори лайт пишем артикль и текст
Еще где что писать?

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

Пример вызова дай (например для прайса)...

диалог сидора: dialogs_trading.xml
<dialog id="trade_dialog_sidor">
          <phrase_list>
               <phrase id="0">
                <text>trade_dialog_sidor_0</text>
                    <next>1</next>
            </phrase>
               <phrase id="1">
                <text>trade_dialog_sidor_1</text>
                    <give_info>price_sidor</give_info> вот этот инфопоршен...
                    <next>2</next>
                    <next>3</next>
                    <next>4</next>
                    <next>5</next>
            </phrase>

====================================================================================
Возвращение ограничения рюкзака по кол-ву.

1. Взять файл restriction_stock.script из первого патча для АМК и заменить им существующий.
2. В файле amk_utils.script заменить
это:
--Callback на взятия предмета в инвентарь гг из ящика
function actor_item_from_box(box, item)

end

--Callback на взятие предмета в инвентарь гг
function actor_item_take(obj)
    if obj ~= nil and RestrictionStock ~= nil then
        restriction_stock.restriction_of_stock(obj,0)
    end
end

--Callback на потерю предмета из инвенаря гг
function actor_item_drop(obj)
    if obj ~= nil and RestrictionStock ~= nil then
        restriction_stock.restriction_of_stock(obj,1)
    end
end

на это:

--Callback на взятия предмета в инвентарь гг из ящика
function actor_item_from_box(box, item)
    if item ~= nil then
        restriction_stock.restriction_of_stock(item)
    end
end

--Callback на взятие предмета в инвентарь гг
function actor_item_take(obj)
    if obj ~= nil then
        restriction_stock.restriction_of_stock(obj)
    end
end

--Callback на потерю предмета из инвенаря гг
function actor_item_drop(obj)

end

======================================================================================
Редактирование функции объема рюкзака:

В функцию function restriction_of_stock(_obj) в таблицу _table надо добавить новые предметы также через запятую и в кавычках. Например, новый броник надо добавлять в _outfits, артефакты в _artefacts, для оружия там несколько вложенных таблиц - по имени и содержанию вложенной таблицы понятно, что и куда добавлять.

A как добавить новые классы обьема знаешь?
На данный момент мы имеем такие варианты:
4 объема оружия
2 объема брони
Плюс объем аптечек
А я хочу пистолеты-пулеметы в отдельный класс вынести и броню поделить на три класса.

1. Добавляешь через запятую ещё одну вложенную таблицу, например:
_weapons_C6 = {"оружие_раз","оружие_два","оружие_три"}

2. Добавляешь ещё одно условие в парсинге ниже:

elseif kk == "_weapons_C6" and count>2 then
amk.send_tip("Не многовато ли стволов, рембо?",nil,nil,5)
amk.drop_item(actor,_obj)
status = 1
break

здесь count>2 определяет, больше какого числа предметов будет срабатывать ограничение для этой группы.

Вот, собственно, и всё. По аналогии сделай и для остальных групп предметов.

А ка сделать разные обьемы для разных костюмов?

1. Добавляешь через запятую вложенные таблицы по числу новых групп, например:
_outfits_1 = {"костюм_раз"},
_outfits_2 = {"костюм_два"},
_outfits_3 = {"костюм_три"}

2. Добавляешь столько же условий в парсинге ниже:

elseif kk == "_outfits_1" and count>2 then
amk.send_tip("Для этого костюма в рюкзаке нет места",nil,nil,5)
amk.drop_item(actor,_obj)
status = 1
break
elseif kk == "_outfits_2" and count>2 then
amk.send_tip("Для этого костюма в рюкзаке нет места",nil,nil,5)
amk.drop_item(actor,_obj)
status = 1
break
elseif kk == "_outfits_3" and count>2 then
amk.send_tip("Для этого костюма в рюкзаке нет места",nil,nil,5)
amk.drop_item(actor,_obj)
status = 1
break

Как сделать у разных костюмов разный  обьем рюкзака?

В restriction_stock.script из второго патча есть такие строки (мы же договорились делать на его основе?):

В самом начале файла:

Код
InvMax = 100
-- это как раз максимальный объём
далее:

Код
local OutfitSlot = db.actor:item_in_slot(6)
if OutfitSlot ~= nil then
    IdOutfit = OutfitSlot:id()
end

попробуй сюда добавить следующее:

Код
local OutfitSlot = db.actor:item_in_slot(6)
if OutfitSlot ~= nil then
    IdOutfit = OutfitSlot:id()
    if string.find(OutfitSlot:name(),"имя_секции_костюма_1") then
        InvMax = 120
    elseif string.find(OutfitSlot:name(),"имя_секции_костюма_2") then
        InvMax = 150
    elseif string.find(OutfitSlot:name(),"имя_секции_костюма_3") then
        InvMax = 190
    end
end

соответственно, для каждого костюма нужно прописать своё значение.

======================================================================================

Как привязать разный объем рюкзака к разным костюмам?

Элементарно, Ватсон....
Проверкой костюма.

db.actor:item_in_slot(6) -- это костюм, его слот. Проверить можно например так:
function outfit_check()
local wear_outfit = db.actor:item_in_slot(6)
if wear_outfit then
if wear_outfit:section()=="exo_outfit" then
-- Тут берёшь и увеличиваешь переменную объёма
end
end
end

Собственно, вся функция!
Да так же будет выглядеть, только проверок несколько подряд.
Код
if wear_outfit:section()=="exo_outfit" then
    InvMax = 150
end
if wear_outfit:section()=="novice_outfit" then
    InvMax = 50
end
if wear_outfit:section()=="bandit_outfit" then
    InvMax = 55
end
if wear_outfit:section()=="monolit_outfit" then
    InvMax = 80
end

И таких проверок можно сколько угодно. Названия брони, в смысле section, посмотри в файле gamedata/config/misc/outfit.ltx. И ещё не забудь, что в файле unique_items.ltx содержатся некоторые уникальные виды брони - например, экзоскелет модифицированный называется "outfit_exo_m1", можно ему назначить такой же объём как и обычному, а можно изменить wink.gif

Но даже если использовать section(), то всё же лучше сделать так:

Код
local OutfitSlot = db.actor:item_in_slot(6)
    if OutfitSlot ~= nil then
        IdOutfit = OutfitSlot:id()
                if OutfitSlot:section()=="exo_outfit" then
                   InvMax = 150
                 end
                 end

или так:

Код
local OutfitSlot = db.actor:item_in_slot(6)
    if OutfitSlot ~= nil then
        IdOutfit = OutfitSlot:id()
                local sect = OutfitSlot:section()
                if sect=="exo_outfit" then
                   InvMax = 150
                 end
                 end

так как вставлять функцию внутри функции здесь совершенно бессмысленно, да и зачем объявлять ещё одну совершенно идентичную локальную переменную...

================================================================================================

А как сделать видимыми те штуки (аномалии) которые хим.ожог делают?

gamedata\config\misc\zone_sakbuzz.ltx удалить точку с запятой
;idle_particles
;blowout_particles

===================================================================================================

Люди, вопрос относительно АМК 1.4.1
скажите а какой файл нужно редактировать дабы изменить свойства аптечек , а конкретнее, их влияние на желание меченного спать? в items.ltx ниче подходящего методом тыка не обнаружил.
p.s.
пардон если уже спрашивали, ткните носом unsure.gif

во-первых, в файле amk_mod.script надо раскомментировать строки:

Код
   
    --'elseif (section=="medkit" or section=="medkit_army" or section=="medkit_scientic") then
    --'    stype="med"

то есть сделать так:

Код
   
    elseif (section=="medkit" or section=="medkit_army" or section=="medkit_scientic") then
        stype="med"

затем в этом же файле раскомметировать функцию:

Код
   
--[[
function test_for_need_sleep_med(oid)
    if alife():object(oid)==nil then
        amk.save_variable("gg_need_sleep",amk.load_variable("gg_need_sleep",0)+5)
        test_sleep_pp()
    end
end
]]--

то есть сделать так:

Код
   
function test_for_need_sleep_med(oid)
    if alife():object(oid)==nil then
        amk.save_variable("gg_need_sleep",amk.load_variable("gg_need_sleep",0)+5)
        test_sleep_pp()
    end
end

наконец, в файле amk.script раскомментировать следующее:

Код
   
--[[
if select_string=="sleep_med" then
    mod_call("test_for_need_sleep_med",params_string)
  end
]]--

то есть сделать так:

Код
   
if select_string=="sleep_med" then
    mod_call("test_for_need_sleep_med",params_string)
  end

============================================================================================
Есть вопрос: в каких файлах и какие параметры (и на какие) надо менять, чтобы стало больше "раненных" сталкеров (те к-ые орут дай аптечку). И раз уж на то пошло расскажите про damage.ltx
Фу ты блин... писал уже окаца, сорри smile.gif

Попробуй в файле xr_wounded.script изменить это:

Код
   
    def.hp_state      = "10|"..state.."@help_heavy"
    def.hp_state_see    = "10|"..state.."@help_heavy"

на это:

Код
   
    def.hp_state      = "50|"..state.."@help_heavy"
    def.hp_state_see    = "50|"..state.."@help_heavy"

========================================================================================

Как отключить выброс на ЧАЭС?

В принципе, можно сделать так, как в NLC сделал Мастер Сяк. Функция, которая переписывает кастом_дата рестриктора выглядит так:

Код
function switch_timer_stancia_cheat()
    for a=2000,2100,1 do
        local obj=alife():object(a)
        if (obj and obj.name and obj:name() == "aes_space_restrictor_timer") then
        local params=get_restrictor_data(obj)
        params.custom="[logic]\ncfg = scripts\\aes\\aes_space_timer_cheat.ltx"
        set_restrictor_data(params,obj)
        end
    end
end

В файле логики (scripts\aes\aes_space_timer_cheat.ltx) написать:

Код
[logic]
active = sr_idle

[sr_idle]
on_info = {+aes_actor_road} nil

теперь надо как-то вызвать эту функцию (switch_timer_stancia_cheat()). Это можно сделать или в диалоге или вообще сделать вызов через главное меню - уж читить, так читить smile.gif

ps: если будете все это ставить на NLC, то надо будет делать чуточку по-другому - отключить сяковский таймер вообще, или просто подменить его нашим.

==========================================================================================

тут созрел один вопрос. как с помощью скрипта заспавнить МЕРТВОГО нпс? так со спавном знаком.

Заспавнить живого и прописать ему через нет_пакеты здоровье ноль. Примерно так:

Код
    local obj=amk.spawn_item("yan_ecolog_respawn_2",vector():set(187.84,5.18,-360.68),938,386349)
    local tbl = amk.read_stalker_params(obj)
    tbl.health = 0
    tbl.updhealth = 0
    amk.write_stalker_params(tbl, obj)

Цитата(DeadMaus @ 22.7.2008, 14:14) *
Что мне делать с вот этим файлом или за что он отвечает [dolg_outfit]:outfit_base
если всё у меня назыв.
К примеру вот $spawn = "outfit\clearsky_outfit"

Лучше написать так:

[clearsky_outfit]:outfit_base
$spawn = "outfit\dolg_outfit"

0

4

Теория

В скриптах есть одна единственная функция, отвечающая за спавн объектов:

alife():create(section,position,levelvertex,gamevertex)

Строго говоря, их две: create create_ammo но различия между ними не существенны. Imp 22:45, 23 июля 2007 (EEST)

Первый параметр - секция в конфигурациях, описывающая объект, например "bolt","med_kit" - это простые секции, простых объектов а есть объекты, которые переходят в онлайн/оффлайн, это неписи, монстры и так далее, например mil_killer_respawn_2 - спавнится снайпер группировки киллеров.

С позицией, думаю объяснять не надо, только существует нюанс - высота это Y, а не Z. Задать позицию можно такой конструкцией vector():set(x,y,z), где x, y и z - координаты точки на уровне, где спавним объект.

Дальше сложнее, так как сам толком сформулировать не могу.

Начнем от простого к сложному. На каждом уровне много объектов, все объекты состоят из полигонов, у каждого полигона есть вершины – вертексы.

Именно они и должны здесь указываться, зачем - не особо понимаю, скорее всего для точного позиционирования объекта. Например, можно получить вертекс ближайший к актору - db.actor:level_vertex()

Дальше идет гораздо более интересный параметр game_vertex, это почти то же самое, что и level_vertex, но (!) это глобальные величины! Если level_vertex считается для уровня, то game_vertex - для всей игры, и нужен он для того, чтобы указать на какой карте спавнить объект (более вразумительного объяснения я не нашел).

Соответственно, чтобы заспавнить что-нибудь на другой карте, достаточно указать game_vertex в четвертом параметре Например:

db.actor:game_vertex()

Итак, чтобы, например, заспавнить болт под ногами актора, пишем:

alife():create("bolt",db.actor():position(),1,db.actor:game_verte())

Почему 1, а не level_vertex? Проверено - разницы особой нет, какой level_vertex, хотя в некоторых случаях надо прописывать валидный вертекс, а то предмет может просто заспавнится не там, где планировалось... Но по большей части все проходит нормально и с единицей. (Игнорирование level_vertex может приводить к проваливанию произведенных предметов/персонажей под землю.) А вот game_vertex решает все - он указывает на каком уровне спавнить предмет, поэтому его надо указывать. Теоретически можно просто найти для каждого уровня по одному game_vertex'у и использовать их в скриптах. На самом деле game_vertex показывает какой фрагмент карты используется (вся карта разбита на кусочки имеющие сквозную нумерацию по всем уровням и game_vertex выбирает нужный) соответсвенно неправильное использование черевато....

Кроме того - есть еще один параметр - ID объекта, если указать ID NPC или актора - то предмет заспавнится у него в инвентаре.

Пример (спавним артефакт Медуза в инвентаре у актора):

alife():create("af_medusa", db.actor():position(), 1, db.actor:game_vertex(), db.actor:id())

Функция спавна возвращает серверный объект, то есть ни NPC, ни монстра ни что-либо еще.

Серверный обьект позволяет свеже созданного NPC или тайник затарить разными рулезами/артефактами. Например, вот так создадим перед входом к Сидоровичу долговца и засунем в него пачку патронов:

local obj
local a = vector() -- Задаем тип переменной
local dir = db.actor:direction()

a.x = -243.61 -- координата X
a.y = -19.52 -- высота Y
a.z = -127.17 -- координата Z

obj = alife():create("bar_dolg_respawn_3",a,13193,8,65535)
alife():create_ammo("ammo_9x18_fmj",
obj.position,
obj.m_level_vertex_id,
obj.m_game_vertex_id,
obj.id,
20) -- число патронов

Кстати, create_ammo - практически тоже самое, что и create, разница в том, что create_ammo предназначена специально для спавна патронов и позволяет создавать неполные пачки патронов. Возможно есть еще какие-то отличия. Стоит учесть, что сами авторы игры спавнят патроны исключительно через create_ammo. Imp 22:38, 23 июля 2007 (EEST)

Просто минимальный набор - координаты, ID, секция,а из него (серверного объекта) обычно нужен только ID, так как по ID можно получить этот самый серверный объект:

(alife():object(id))

Его можно использовать, чтобы поставить метку, например, но я его лично использую для других целей - спавн сложных объектов, конкретно – NPC.

Например надо решить следующую задачу - надо создать наемника, сменить ему группировку и изменить его инвентарь, ну и в нагрузку - сделать другом для игрока.

В определенный момент заспавненый объект переходит онлайн, в этот момент вызывается callback - net_spawn.

Что мы делаем? Сверяем ID онлайн объекта с сохраненным ID!

Если они совпадают, например так:

if obj:id()==saved_id then ...

Важно то, что у серверного объекта ID - это параметр, а у онлайнового объекта ID получается с помощью функции. Это важно, а то можно прогореть.

Итак, мы поймали нашего киллера по ID.

Далее все очень просто - вызываем команды для спавна гаусса и патронов к нему в инвентаре NPC (см. выше), меняем группировку специальной функцией, и делаем его другом.

Зачем такие сложности? Просто в оффлайне NPC как бы не существует, есть только косвенное упоминание о нем, и, плюс, все эти функции работают именно с объектом типа "NPC", а не с серверными объектами.
Практика (часть 1)

1. Чтобы не повторяться в описании создания нового квеста, просто изучите статью по созданию квестов от Fr3nzy – лучшей статьи на эту тему я просто не видел :) Мы просто свяжем все воедино и научимся спавнить объекты из скрипта.

Небольшое отступление:

Почему предпочтительнее делать спавн скриптом, а не через тот же xrSpawner? Программа xrSpawner, при всех своих достоинствах, обладает одним недостатком, а именно – она делает спавн через файл all.spawn, что приводит к:

    * Невозможности совместить два мода, такой спавн использующих
    * Необходимости каждый раз начинать новую игру

При спавне через скрипт ситуация иная: в подавляющем большинстве случаев, ранее сохраненные игры будут работать, что не может не радовать :)

Итак, определимся с квестом.

Задача: после разговора с Сидоровичем спавним зомби на территории фабрики в первой локации. Для того, чтобы не повредить оригинальный сюжет игры, задание будет выдаваться после прохождения квеста с флешкой Шустрого, так как появись там зомби одновременно с бандитами и Шустрым... я думаю, исход боя предрешен :)

Реализация: Постараюсь описать все действия максимально подробно, буквально по шагам. Первым делом запустите игру :)

В консоли введите команду:

rs_stats on или rs_stats 1

Тем самым мы включаем вывод информации на экран. Далее вводим еще одну команду:

demo_record 1

И «летим» на фабрику. Нам нужно выбрать место для спавна объектов и данный режим как нельзя лучше подходит для реализации задуманного. Помещаем камеру в точке предполагаемого спавна и записываем координаты - у меня получились 115, -6, -16.

Для выхода из режима demo_record нажимаем Esc, в консоли пишем rs_stats off или rs_stats 0 (убираем вывод информации).

Другой способ получения тех же сведений - прийти в нужное место и запустить там скрипт, который выдаст все нужные координаты. Я пользуюсь следующим скриптом (вызываю общеизвестным способом, через main_menu):

function main_menu:main_cheat_f3()
-- Выдадим сообщение о нашем местоположении
local text
local vid
local gvid
local a = vector() -- Тип переменной
local text

a = db.actor:position() -- Наше положение в координатах
vid = db.actor:level_vertex_id()
gvid = db.actor:game_vertex_id()
text = "Позиция:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid
news_manager.send_tip(db.actor, text, nil, nil, 30000)
end

В результате не нужно эксперементировать мы сразу получаем все, в том числе и level_vertex и game_vertex. Imp 22:38, 23 июля 2007 (EEST)

Выходим из игры, идем в папку с установленной игрой и создаем каталог gamedata (предполагается, что «лепим» свой «мод» на «чистую» игру, без установленных модов, и имеем распакованные ресурсы игры в папке, скажем, gamedata source).

В папке gamedata создаем папку config, а в ней - папку creatures. Скопируем из оригинальной папки файл m_zombie.ltx и откроем его на редактирование.

В файлах игры присутствуют 5 моделей гражданских зомби:

файлы zombi_1.ogf, zombi_1_ghost.ogf, zombi_2.ogf, zombi_trup.ogf, zombi_trup_2.ogf

Вернем в игру их всех :)

Уже имеются секции:

[zombie_weak]:m_zombie_e, [zombie_normal]:m_zombie_e, [zombie_strong]:m_zombie_e и [zombie_immortal]:zombie_strong.

Два последних типа используют одну и ту же модель zombi_trup.ogf, хм... непорядок, исправляем. Последняя секция выглядит теперь так:

[zombie_immortal]:zombie_strong
$spawn = "monsters\zombies\zombie_immortal"
visual = monsters\zombi\zombi_trup_2
panic_threshold = 0.05

Добавим пятую модель.

Для этого в конце файла создадим секцию:

[zombie_ghost]:zombie_strong

Это означает, что наш пятый зомби наследует все параметры zombie_strong, мы добавим лишь визуальное представление.

Пишем дальше:

$spawn = "monsters\zombies\zombie_ghost"
visual = monsters\zombi\zombi_1_ghost

Все. Сохраняем изменения и закрываем файл.

2. Пишем скрипт спавна. В папке gamedata создаем новую папку scripts, в ней создаем новый текстовый документ и называем его esc_zombie.script.

Отступление третье:

При написании статьи использовался оригинальный скрипт zombie_story.script из horror-mod’а. Концепция спавна перенесена практически без изменений, поэтому на авторство этого способа спавна я никоим образом не претендую :)

Итак, открываем наш пустой файл на редактирование, первой строкой объявляем переменную, в которой хранятся наши зомби:

local zombie_types = {"zombie_weak", "zombie_normal", "zombie_strong", "zombie_immortal", "zombie_ghost"}

Далее пишем функцию:

function spawn_zombies( position, total )
local zombie_index -- тип зомби из массива zombie_types
local new_pos, x_offset, z_offset -- объявляем переменные
for zombie_index=1, total do -- крутим цикл столько раз, сколько
задает переменная total
x_offset = math.random(5) -- случайное (рандомное) x от 1 до 5
z_offset = math.random(5) -- случайное (рандомное) z от 1 до 5
new_pos = position -- передаем координаты в функцию
new_pos.x = new_pos.x + x_offset -- прибавляем к указанной нами
координате x полученное выше рандомное x
new_pos.z = new_pos.z + z_offset -- прибавляем к указанной нами
координате z полученное выше рандомное z
-- Ниже, собственно и вызывается функция спавна случайного типа зомби
zombie_types[math.random(5)] привязанного к нашим координатам
alife():create(zombie_types[math.random(5)],new_pos,db.actor:level_vertex_id(),db.actor:game_vertex_id())
end
end

И последнее:

function zomby_story_1( actor, npc )
-- десять зомби на фабрике (Кордон)
local spawn_point = vector():set( 115, -6, -16 ) -- здесь указываем координаты,
выбранные нами для спавна, когда «летали» камерой :)
spawn_zombies( spawn_point, 10 ) -- собственно вызов предыдущей функции
с передачей ей координат и количества объектов
end

Все. Сохраняем и закрываем файл.

Продолжаем разговор :)

Для того, чтобы игра не вылетала после того, как мы добавили новый тип монстров, их нужно добавить в файл xr_statistic.script. Итак, скопируем этот файл из папки игры scripts в нашу папку к файлу esc_zombie.script и откроем на редактирование.

Добавим в local killCountProps к монстрам строчку:

zombie_weak = 1, zombie_normal = 2, zombie_strong = 3

В local sect_alias строчку:

zombie_weak = "zombie_weak", zombie_normal = "zombie_normal", zombie_strong = "zombie_strong"

А ниже в monster_classes строчку:

[clsid.zombie_s ] = "zombie"

В функцию getNpcType(npc) добавляем конструкцию:

elseif npc:character_community() == "zombie" then
community = "zombie"

Сохраняем изменения и закрываем файл.

Все будет работать на ура, пока мы не попробуем обыскать убитого зомби. Как только мы это сделаем, игра вылетит с примерно такой ошибкой.

Expression  : fatal error
Function  : CInifile::r_string
File  : D:\xray-svn\xrCore\Xr_ini.cpp
Line  : 351
Description  : <no expression>
Arguments  : Can't find variable icon in [zombie_weak]

Все верно – игра не знает какую иконку нам показывать для зомби. Иконки монстров хранятся в файле ui_npc_monster.dds. Здесь есть два варианта:

    * Если дружите с Фотошопом, отредактировать этот файл (нарисовать, добавить иконки);
    * Взять готовый из любого мода, естественно, с разрешения авторов мода. Сейчас мы пропустим данный аспект и присвоим нашим зомби иконки контролера :)

Вернемся к файлу m_zombie.ltx и в секцию [m_zombie_e]:monster_base впишем параметр

icon = ui_npc_monster_kontroler

Все. Вылетов не будет.

3. Тема данной статьи не предусматривает подробного описания того, как сделать новый диалог. В начале статьи я упомянул источник, где можно найти исчерпывающую информацию по созданию диалогов, могу также привести в пример статью по созданию диалогов от BAC9-FLCL.

Нам нужно просто проверить работоспособность скриптового спавна, поэтому я приведу просто собственно сам измененный диалог из файла dialogs_escape.xml:

<dialog id="escape_trader_talk_info">
………
<phrase id="999">
<text>escape_trader_talk_info_999</text>
<next>7770</next>
<next>9991</next>
<next>9992</next>
<next>9993</next>
<next>9994</next>
<next>9995</next>
<next>9996</next>
</phrase>
<phrase id="9992">
<text>escape_trader_talk_info_9992</text>
<next>99922</next>
</phrase>
<phrase id="99922">
<text>escape_trader_talk_info_99922</text>
<next>9996</next>
<next>9995</next>
</phrase>
<phrase id="9993">
<text>escape_trader_talk_info_9993</text>
<next>99933</next>
</phrase>
<phrase id="9995">
<text>escape_trader_talk_info_9995</text>
</phrase>
<phrase id="3121">
<text>escape_trader_talk_info_3121</text>
<next>9996</next>
<next>9995</next>
</phrase>
<phrase id="3131">
<text>escape_trader_talk_info_3131</text>
<next>9996</next>
<next>9995</next>
</phrase>
<phrase id="41">
<text>escape_trader_talk_info_41</text>
<next>9996</next>
<next>9995</next>
</phrase>
<!------Наш диалог: Начало------->
<phrase id="7770">
<text>escape_trader_talk_info_7770</text>
<next>7771</next>
</phrase>
<phrase id="7771">
<text>escape_trader_talk_info_7771</text>
<next>7772</next>
<next>7773</next>
</phrase>
<phrase id="7772">
<text>escape_trader_talk_info_7772</text>
<next>7777</next>
</phrase>
<phrase id="7773">
<text>escape_trader_talk_info_7773</text>
<next>7779</next>
</phrase>
<phrase id="7779">
<text>escape_trader_talk_info_7779</text>
<next>9996</next>
<next>9995</next>
</phrase>
<phrase id="7777">
<text>escape_trader_talk_info_7777</text>
<action>esc_zombie.zombie_story_1</action>
<next>9996</next>
<next>9995</next>
</phrase>
<!------Наш диалог: Конец------->
<phrase id="51">
<text>escape_trader_talk_info_51</text>
<next>9996</next>
<next>9995</next>
</phrase>
……
</dialog>

И также связанный с ним файл stable_dialogs_escape.xml. В самом начале файла пишем следующее:

<string id="escape_trader_talk_info_7770">
<text>Происшествий никаких не было?</text>
</string>
<string id="escape_trader_talk_info_7771">
<text>Да знаешь... Вроде как тихо все у нас. Хотя, вот, вспомнил! Говорили мне
на днях, что на фабрике, ну, там, где бандюки околачиваются постоянно, видели какиих-то то ли
людей, то ли призраков... Мало ли что спьяну почудится - я и сказал этим паникерам, мол,
закусывать надо! Хех, блин, алкаши...</text>
</string>
<string id="escape_trader_talk_info_7772">
<text>Дык мне по любому мимо фабрики топать - заодно и посмотрю на этих
"людей-призраков".</text>
</string>
<string id="escape_trader_talk_info_7773">
<text>Да я как-то не собирался в ту сторону...</text>
</string>
<string id="escape_trader_talk_info_7779">
<text>Ну, смотри сам, все равно будь осторожен.</text>
</string>
<string id="escape_trader_talk_info_7777">
<text>Ага. Сходи, проветрись. Потом зайдешь, расскажешь, что там и как.</text>
</string>
<string id="esc_bridge_soldiers_start_11">
<text>Здесь проход воспрещён, сталкер.</text>
</string>

Все. Можно запускать игру, идти на Кордон, после разговороа с Сидоровичем, в зависимости от выбранного Меченным решения, бежим на фабрику и … смотрим сами :)

Готовые файлы примера
Spawn Lib

Домашнее задание - вернуть в игру 6-ой тип гражданского зомби :)

Продолжение следует…
Практика (часть 2)

4. Сегодня мы закончим с зомби в полном объеме – добавим их описания в энциклопедию, добавим иконки, и разберемся с «домашним заданием»:) Думаю, что внимательно изучив эту статью, вы сами сможете через скриптовые функции восстановить любого персонажа, не вошедшего в финальный релиз игры. Если у кого хватит времени и желания, те могут даже написать что-то типа «Ночи живых мертвецов» :) - серию квестов, связанную своим собственным сюжетом. Итак, «домашнее задание» - добавляем в игру шестого зомби.

    * Создаем в папке gamedata папку meshes, в ней папку monsters, а там – папку zombi. В папке meshes хранятся модели персонажей, объектов, окружения, присутствующих в игре. Как я уже говорил выше, в игре представлено 5 моделей гражданских зомби, а вот текстур – 6. Также немного смутила нумерация моделей – 1, 2, 4... А где третий? Наверное, сбежал :)

    * Скопируем из папки с оригинальными файлами игры в созданную нами папку zombi файл zombi_2.ogf и переименуем его в zombi_3.ogf. Откроем файл нашей новой модели любым HexEditor’ом, я использую BiEd (Binary Editor 1.00). Так как данная статья рассчитана не только на «продвинутых юзеров», но и на «обычных чайников», которые, тем не менее, хотят «что-нить замутить» и при этом не сильно «парить моск», я не буду рассказывать здесь про адресацию, двухбайтовую запись и т.д., я просто наглядно покажу, где что поправить :)

Файл модели до редактирования

Файл модели после редактирования

На скринах видно, что мы просто изменили для этой модели путь к текстуре. Все. Без использования 3D-редакторов и затраты кучи времени на обработку модели в них, мы получили абсолютно новую (на внешний вид) модель. :)

5. Теперь пропишем нашего нового зомби во все файлы, которые мы создали ранее. В файл m_zombie.ltx в самый конец добавляем секцию:

[zombie_old]:zombie_normal
$spawn = "monsters\zombies\zombie_old"
visual = monsters\zombi\zombi_3

в файле esc_zombie.script изменяем массив в первой строке:

local zombie_types = {"zombie_weak", "zombie_normal", "zombie_strong", "zombie_immortal",
"zombie_old", "zombie_ghost"}

В функции spawn_zombies изменяем строку спавна:

alife():create(zombie_types[math.random(6)],new_pos,
db.actor:level_vertex_id(),db.actor:game_vertex_id())

в функции zombie_story_1 меняем число объектов на кратное 6-ти (необязательно):

spawn_zombies( spawn_point, 12 )

Всё. Сохраняем и закрываем.

6. Копируем в папку gamedata\config\gameplay\ файл encyclopedia_mutants.xml, добавляем описание зомби в энциклопедию:

<!-------------------------------- Zombieg ----------------------------->

<article id="mutant_zombieg_general" name="Zombieg" group="Mutants">
<texture>ui_npc_monster_zombieg</texture>
<text>enc_mutant_zombieg_general</text>
</article>

И в связанный с ним файл string_table_enc_mutants.xml в папке gamedata\config\text\rus\ добавляем:

<string id="Zombie">
<text>Зомби, гражданский</text>
</string>
<string id="Zombieg">
<text>Зомби-призрак, гражданский</text>
</string>
<string id="enc_mutant_zombieg_general">
<text>Зомби-привидение отличается от обычного зомби лишь тем, что
воздействие Выжигателя мозгов полностью разрушило не только структуру личности, но и
тело, поэтому зомби-призрак несколько более живуч по сравнению с обычным зомби.</text>
</string>
<string id="enc_mutant_zombie_general">
<text>Воздействие Выжигателя мозгов полностью разрушает структуру личности,
оставляя только телесную оболочку.\n\n Побродив немного по Зоне, лишённые разума тела
начинают превращаться в настоящих зомби. Из рефлексов у них остаются лишь самые примитивные,
оружие и экипировка скоро приходят в негодность. В результате зомби становятся собой ни чем
иным, как медлительными полутрупами, которых наличествуют лишь два эффективных раздражителя:
еда и сон. Зомби совершенно неразборчивы в выборе пищи и питья, поэтому их тела буквально
пропитаны радиацией и токсинами. Как правило, эти существа бесцельно бродят по Зоне или,
словно трупы, валяются внутри заброшенных построек. Однако, лишь только зомби почует близкое
присутствие живого человека, он сразу же пытается атаковать. Умудрённые опытом сталкеры
стараются обходить эти неуклюжие опустошённые оболочки.</text>
</string>

Копируем сюда же файл stable_statistic_caption.xml и изменяем в нем 3 строчки:

<string id="zombie_normal">
<text>зомбированный, гражданский</text>
</string>
<string id="zombie_strong">
<text>зомби-призрак, гражданский</text>
</string>
<string id="zombie_weak">
<text>зомби, гражданский</text>
</string>

Сохраняем и закрываем.

7. И последнее – добавим иконки. Скажу сразу, воспользовался готовым файлом, уже содержащим иконки зомби и других «восстановленных монстров» (спасибо Fr3nzy). Поэтому просто скопируйте файл ui_npc_monster.dds из архива в папку gamedata\textures\ui\, а файл ui_npc_monster.xml – в папку gamedata\config\ui\. Если вы хотите сделать собственные - прочитайте урок по изменению текстур.

Вкратце, что описывает файл ui_npc_monster.xml: в нем задаются координаты иконок, расположенных в файле ui_npc_monster.dds, применительно к каждому типу монстров в игре.

Заключительный штрих. Откройте файл m_zombie.ltx и в первой секции замените строку

icon = ui_npc_monster_kontroler

На:

icon = ui_npc_monster_zombie

В секцию [zombie_ghost] добавьте строку:

icon = ui_npc_monster_zombieg

Сохраняйте изменения. Всё.

Вот готовые файлы примера. Удачи и спасибо за внимание :)
Спавн NPC

Эта часть статьи написана Arhet и создана на примере того, как в SRP Mod были созданы NPC группировки "Грех".

Задействуем файлы:

    * gamedata\config\gameplay\character_desc_escape.xml
    * gamedata\config\gameplay\npc_profile.ltx
    * gamedata\config\creatures\spawn_sections.ltx

Начнем с character_desc_escape.xml. Описание что значит каждая строка писать не буду, так как все до меня уже сделано.

Тут создадим нового персонажа:

<specific_character id="esc_dark_stalker_1" team_default = "1">
<name>GENERATE_NAME_bandit</name>
<icon>ui_npc_dark_1</icon>
<map_icon x="0" y="0"></map_icon>
<bio>sim_stalker_novice_bio</bio>

<class>esc_dark_stalker_01</class> - вот тут наш новый класс кстати.
<community>dark_stalker</community> <terrain_sect>stalker_terrain</terrain_sect>
<money min="200" max="600" infinitive="0"></money>

<rank>198</rank>
<reputation>-24</reputation>

<visual>actors\dark_stalker\dark_stalker_1</visual>
<snd_config>characters_voice\human_01\monolith\</snd_config>
<crouch_type>-1</crouch_type>
<panic_treshold>0</panic_treshold>
<supplies>
[spawn] \n
wpn_dark_colt1911 \n
ammo_11.43x23_hydro \n
#include "gameplay\character_items.xml" \n
#include "gameplay\character_drugs.xml" \n
#include "gameplay\character_food.xml"
</supplies>

#include "gameplay\character_criticals_3.xml"

<start_dialog>dm_hello_dialog</start_dialog>
<actor_dialog>dm_cool_info_dialog</actor_dialog>
</specific_character>

Впишем наш код после какого-нибудь </specific_character>

Теперь идем в npc_profile.xml и туда вгоняем:

<character id="esc_dark_stalker_1">
<class>esc_dark_stalker_01</class>
<specific_character>esc_dark_stalker_1</specific_character>
</character>

Теперь надо заняться spawn_sections.ltx. Скрипт будет «брать NPC» как раз из этого файла. Пишем туда:

    * [esc_dark_stalker_1]:stalker – имя секции для скрипта..
    * $spawn = "respawn\esc_dark_stalker_1"
    * character_profile = esc_dark_stalker_1 – ссылка на описание нашего NPC
    * spec_rank = regular – спец ранг
    * community = dark_stalker – группировка.

Теперь берем любой скрипт спавна NPC, вгоняем туда имя секции из spawn_sections.ltx и ву-а-ля.

0

5

А как сделать что бы в баре 100 рентген можно оружие было доставать :)

0


Вы здесь » ЕДИНЫЙ ФОРУМ S.T.A.L.K.E.R. - МЕТРО 2033 » МЕТОДЫ РЕДАКТИРОВАНИЯ ФАЙЛОВ СТАЛКЕР ТЧ : » МЕТОДЫ РЕДАКТИРОВАНИЯ ФАЙЛОВ СТАЛКЕР ТЕНЬ ЧЕРНОБЫЛЯ