Jump to content
Halford

[CoP] Ковыряемся в файлах

Recommended Posts

WizziGun    346
Posted (edited)

@Владислав Сущих, Если делать правильно, то делать через правки в xrGame.dll (мб могу ошибаться). Но по любому работать в студии надо. Примеры : Anomaly, DeadAer, Lex Addon (самый лучший вариант по скольку там копать меньше всего придётся.) Так же ВРОДЕ есть исходники, но у меня только собранный чистый движок этого самого Lex Addon + файлы в gamedata которые из за правок движка подверглись изменениям. Вот лови - link
Вот правки его :

Скрытый текст

Автор:                              Алексей Гончаров (Suhar_)
Модификация:                        Lex Addon

Изменённый движок Stalker COP, используемый в модификации Lex Addon
Состав архива:
Конечные файлы движка.
Минимальный набор ресурсов игры для запуска на чистом Зове Припяти.
Исходный код правок.
Краткое описание правок со ссылками на затронутые файлы и датами изменений.

Несколько слов о том, как ориентироваться по коду:
Для удобства поиска все внесённые изменения промаркированы и хотя бы немного, но прокомментированы.
Отличным тегом для поиска будет фраза "Lex Addon" или дата, когда было внесено изменение.

Используя данные правки, пожалуйста, не забывайте указывать источник.

Папки bin (Win 7) и bin (Win XP) содержат скомпилированные файлы движка, отличающиеся от оригинальных.
Почему их две? Потому что одни компилировались из-под Windows XP, другие - из-под Windows 7 соответственно.
Скорее всего, никакой разницы в их работе нет. Но на всякий случай пусть будут обе.
Справочно: в самом аддоне используются файлы, собранные в Win 7.

Четвёртый рендер (xrRender_R4.dll) имеет следующую особенность:
Для его работы юзеру необходимо иметь установленные пакеты DXSDK_Mar09 и DXSDK_Jun10.
Скачать пакеты можно по ссылкам ниже. Каждый пакет, в среднем, занимает по 550 Мб.
DXSDK_Mar09: https://www.microsoft.com/en-us/download/details.aspx?id=3035
DXSDK_Jun10: https://www.microsoft.com/en-ca/download/details.aspx?id=6812
Причину этого явления выяснить не удалось, так что если кто подскажет, в чём может быть дело - буду признателен.
Двиг собирался на Microsoft Visual Studio 2008 Professional Edition.
Возможно, при сборке движка на других машинах / в других студиях, проблема решится.
К слову, устанавливать пакеты не обязательно, но тогда в настройках видео тип рендера DirectX11 будет недоступен.
И да, источник ссылок - сайт компании Microsoft, так что качаем смело, не боясь подцепить какую-нибудь дрянь :)



 

Минимальный набор файлов для запуска оригинала ЗП с указанными правками находится в папке gamedata.
На их примере можно изучить способ описания новых параметров (особенно это касается конфигураций в .xml).


xrEngine.exe
1.    Изменено стартовое изображение.

2.    Добавлена возможность управлять FOV из меню настроек.
    Файлы: Xr_input.cpp, IInputReceiver.h, xr_ioc_cmd.cpp
        Директория xrGame: Actor.cpp
    Дата: 17.09.2018
    Необходимы правки в ui_mm_opt_16.xml и ui_mm_opt.xml
        На примере ui_mm_opt_16:
        Тег tab_gameplay, после подтега check_hud_draw добавить следующее:
        <cap_base_fov x="12" y="303" width="108" height="24">
            <text r="170" g="170" b="170" font="letterica16" align="r" vert_align="c">ui_mm_base_fov</text>
        </cap_base_fov>
        <track_base_fov x="140" y="307" width="188" height="16" step="1.00">
            <options_item entry="base_fov" group="mm_opt_gameplay"/>
        </track_base_fov>
    Необходимы правки скрипта ui_mm_opt_gameplay.script
        В function opt_gameplay:InitControls добавить инициализацию элементов:
            xml:InitStatic("tab_gameplay:cap_base_fov",                self)
            xml:InitTrackBar("tab_gameplay:track_base_fov",            self)
    Если в секции ГГ прописан параметр base_fov, то он будет использован приоритетно (настройка в меню работать не будет).
        Сделано для возможности ограничивать изменение угла обзора в сетевой игре, дабы избежать читерства.
        В конфиге ГГ для одиночной base_fov закомментирован, для сетевой игры base_fov = 55.
3.    Добавлена возможность управлять дальностью положениея рук относительно камеры.
    Файл xr_ioc_cmd.cpp.
    Дата 23.09.2018
    Необходимы правки в ui_mm_opt_16.xml и ui_mm_opt.xml
        На примере ui_mm_opt_16:
        Тег tab_gameplay, после подтега check_hud_draw добавить следующее:
        <cap_hud_fov x="12" y="273" width="108" height="24">
            <text r="170" g="170" b="170" font="letterica16" align="r" vert_align="c">ui_mm_hud_fov</text>
        </cap_hud_fov>
        <track_hud_fov x="140" y="277" width="188" height="16" step="0.01">
            <options_item entry="hud_fov" group="mm_opt_gameplay"/>
        </track_hud_fov>
    Необходимы правки скрипта ui_mm_opt_gameplay.script
        В function opt_gameplay:InitControls добавить инициализацию элементов:
            xml:InitStatic("tab_gameplay:cap_hud_fov",                self)
            xml:InitTrackBar("tab_gameplay:track_hud_fov",            self)
    Работает в т.ч. для сетевой игры.

4.    Расширение пула звуков.
    Предотвращает прерывание отыгрываемых звуков посредством того, что звуковой буффер не будет пытаться самоочищаться.
    Авторство: Роман Гильмутдинов (проект Pain of Misery)
    Дата: 14.11.2018
    Файл: xr_ioc_cmd.cpp
    Внимание! Кроме xrEngine.exe требуется рекомпиляция xrSound.dll


xrGame.dll
1.    Из секции бустеров производится считывание аргумента use_caption.
    Способ задания: в секции бустера добавить строку use_caption = [аргумент].
    Аргумент должен быть типа string - ссылается на строку, которая будет высвечиваться при вызове контекстного меню по нажатию правой клавиши мыши на бустере.
    По умолчанию движок будет устанавливать st_use ("использовать").
    Даёт возможность опционально настроить надписи в контекстном меню для новых типов бустеров (например, "активировать", "установить" и прочие).

2.    Костюмы с интегрированным шлемом теперь поддерживают установку инфракрасного сканера.
    Способ задания: в секции костюма добавить строку nearest_enemies_show_dist = [аргумент].
    Аргумент должен быть задан числом (обычно это число от 1 до 50) по аналогии этого же параметра у шлемов.
    Число задаёт дальность, на которой сканер будет фиксировать цели.
    Считывание распространяется в т.ч. на апгрейды.

3.    Добавлена возможность ругулировки регенерации выносливости и коэффицента снижения запаса сил у шлемов.
    Способ задания регенерации выносливости: устанавливается параметром power_restore_speed = [число]; записывается в секцию шлема.
    Число отражает количество сил, которое будет восстановлено за один апдейт. За одну секунду движок проивзодит 10 апдейтов.
    По умолчанию движок устанавливает 0.
    При наличии апгрейдов с данным свойством учёт производится путём алгебраического сложения базового (из секции) и дополнительного значений.
    ----
    Способ задания коэффицента снижения запаса сил: устанавливается параметром power_loss = [число]; записывается в секцию шлема.
    Число отображает коэффициент замедления рагенерации сил при ношении данного шлема (этот алгоритм также справедлив и для костюмов).
    Регенерация сил уменьшается в указанное количество раз.
    По умолчанию движок устанавливает 1.00.
    Считывание распространяется в т.ч. на апгрейды.
    При наличии апгрейдов с данным свойством учёт производится путём алгебраического сложения базового (из секции) и дополнительного значений.

4.    Добавлена возможность запрещения перемещения бустеров в ячейки быстрого доступа.
    Сделано с целью предотвращения попыток вставки в ячейки крупных (более чем 1х1) бустеров, что вызывало вылет.
    Способ задания: в секции бустера добавить строку can_switch_to_fast_slot = [аргумент].
    Аргумент должен быть типа bool - разрешено (true) или запрещено (false) перетаскивать бустер в слот быстрого использования.
    По умолчанию движок будет выставлять true.
    Добавлен фильтр, запрещающий подсветку ячеек быстрого доступа при наведении курсора на такие бустеры.
    
5.    Сетевая игра: clear_start_bonus начисляется при каждом респауне игрока, а не только при отсутсвии закупки каких-либо предметов в закупке.
    
6.    Восстановлена функция вывода оранжевых иконок, характерезующих состояние активных предметов/параметров ГГ или степень опасности.
    Например, кровотечение: зеленая-слабое кровотечение, желтая-среднее, оранжевая-сильное, красная-критическое.
    Все необходимые ссылки на текстуры имеются в оригинальных xml Зова Припяти (ничего прописывать не нужно).
    
7.    Расширено количество иконок интенсивности кровотечения и радиационного заражения
    по степеням с трёх (зелёный, желтый, красный) до четырёх (+оранжевый) при открытом инвентаре.
    Внимание! Необходимы дополнительные ссылки на текстуры в файле ui_actor_hint_wnd.xml (см. примеры)
    <texture id="ui_inGame2_bleeding_inv_orange"     x="635" y="933" width="45" height="45" />
    <texture id="ui_inGame2_radiation_inv_orange"     x="681" y="933" width="45" height="45" />
    Требуемые значки имеются в оригинальных текстурах Зова Припяти (ничего рисовать не нужно).
    
8.    Оптимизирован метод расчёта длины индикаторов защиты (электрозащита, химзазита и прочие) в меню инвентаря ГГ.
    Длина каждого индикатора вычисляется как суммарная текущая защита / максимально возможная защита.
    Суммарная защита = защита шлема в слоте + защита костюма в слоте + бонус артефактов на поясе + бонус от работающих бустеров.
    Максимально возможная защита берётся из файла actor.ltx параметр [тип урона]_zone_max_power (radio_zone_max_power, например).
    Все параметры учитываются индивидуально для каждого типа повреждений.
    Незначительно изменён алгоритм отображения индикатора брони у шлемов.
    Длина показателя индикатора рассчитывается исходя из максимально возможного значения для конкретного типа повреждений.
    
9.    Добавлено чтение параметра hit_fraction_actor в апгрейдах у шлемов.
    Способ задания: hit_fraction_actor = [число]; записывается в секцию свойств апгрейда.
    Число отображает коэффициент уменьшения урона в случае непробития брони (только огнестрельные повреждения).
    Урон обратнопропорционален указанному числу.
    Учёт производится путём алгебраического сложения базового (из секции шлема) и дополнительного (из апгрейдов) значений.
    Подробно о способе учёта параметра читать в пункте 17.

10. Максимальное количество слотов под артефакты расширено с 5 до 10.
    Способ задания не отличается от оригинала: artefact_count = [целое число от 0 до 10]; записывается в секциях костюмов и апгрейдов.
    Внимание! Требуются правки файлов actor_menu.xml и actor_menu_16.xml (см. примеры)
    В тегах dragdrop_belt установить значение rows_num="2"
    Для запуска этого будет достаточно, однако для корректной работы нужна полноценная настройка координат.
    Пример настройки actor_menu.xml:
    <dragdrop_belt x="360" y="471" width="300" height="150"
        cell_width="41" cell_height="41" rows_num="2" cols_num="5"
        cell_sp_x="24" cell_sp_y="12" a="0"/>
    Пример настройки actor_menu_16.xml:
    <dragdrop_belt x="390" y="471" width="240" height="150"
        cell_width="33" cell_height="41" rows_num="2" cols_num="5"
        cell_sp_x="19" cell_sp_y="12" a="0"/>

12. Добавлено 3 свойства для артефактов и костюмов: живучесть, скорость прыжка, скорость передвижения.
    Новые параметры могут быть как позитивными, так и негативными. Добавлены фильтры, предовращающие запись в результирующие
    переменные характеристик актора отрицательные значения.
    Внимание! Требуются правки файлов af_params.xml и af_params_16.xml (см. примеры)
    Необходимо описать теги additional_max_health, additional_jump_speed, additional_walk_accel по типу уже существующих свойств.

13. Расширен список отображаемых свойств для бустеров.
    Внимание! Требуются правки файлов booster_params.xml и booster_params_16.xml (см. примеры)
    Имя тега                    Параметр в конфиге            Тип бонуса
    boost_health                eat_health                     мнгновенное лечение
    boost_wounds_heal            wounds_heal_perc            мнгновенное заживление ран
    boost_radiation                eat_radiation                мнгновенное снижение дозы радиации
    boost_power                    eat_power                    мнгновенное пополнение запаса сил
    boost_alcohol                eat_alcohol                    опьянение
    boost_psy_health            eat_psy_health                учёт движком не предусмотрен; использовать скриптами по необходимости
    boost_psy_health_restore    boost_psy_health_restore    учёт движком не предусмотрен; использовать скриптами по необходимости
    boost_sleep_factor_add        actor_sleep_factor_add        учёт движком не предусмотрен; использовать скриптами по необходимости

14.    Исправлен делитель восстановления выносливости ГГ с 0.5 на 1.0 (для удобства калибровки).
    Увеличен предел коэффициента падения сил с 1 до 10

15.    Добавлено чтение параметра fire_wound_protection у костюмов и шлемов.
    О способе учёта параметра читать в пункте 17.
    Добавлены фильтры для вычисления урона от eHitTypeWound и eHitTypeFireWound, запрещающие нанесение отрицательного урона (создавался эффект лечения).
    
16.    Переделан алгоритм расчёта хитов НПС:
    Хиты от аномалий и физических воздействий (все, кроме огнестрела fire_wound)
    hit = base_hit * npc_immunity * npc_rank_immunity
    npc_immunity - родные иммунитеты НПС (берутся из секций файла immunities.ltx)
    npc_rank_immunity - иммунитет в зависимости от ранга
    npc_rank_immunity = immunities_novice_k - (immunities_experienced_k - immunities_novice_k)*(rank/rank_max)
    immunities_novice_k, immunities_experienced_k пределы коэффицентов для минимального и максимального ранга берутся из файла game_relations (секция ranks_properties)
    rank - текущий ранг НПС (не должен превышать rank_max; если превысит, то всё, что выше, учитываться не будет)
    rank_max - предельный ранг (устанавливается в движке и равен 100)
    ----------
    Алгоритм вычисления хита для огнестрела.
    Если armor_pierce > bone_armor, то броня пробита
    delta_pierce = (armor_pierce - bone_armor)/armor_pierce
    если delta_pierce < hit_fraction, то delta_pierce = hit_fraction
    hit = base_hit * delta_pierce / bone_protection * npc_immunity * npc_rank_immunity
    Если armor_pierce < или = bone_armor, то броня НЕ пробита
    hit = base_hit * hit_fraction * npc_immunity * npc_rank_immunity
    
17.    Переделан алгоритм расчёта хитов ГГ:
    Первоначально происходит учёт защит от костюмов и шлемов
    Огнестрел (fire_wound):
        Вычисление показателя защиты кости по которой попали
        bone_armor - броня кости с учётом состояния костюма/шлема
        base_bone_armor - базовый показатель брони; второе значение из конфига damages.ltx для соответствующей кости
        condition - состояние костюма/шлема
        bone_armor = base_bone_armor * condition
        ap - показатель пробития пули
        ----------
        Если ap>bone_armor, то броня пробита
        hit_fraction_actor - показатель защищённости кости костюма/шлема с учётом состояния
        base_hit_fraction_actor - базовый показатель защищённости кости костюма/шлема (берётся из его секции; строка "hit_fraction_actor")
        hit_fraction_actor = - (1 - base_hit_fraction_actor) * condition + 1
        d_hit_power - степень пробития брони
        d_hit_power = (ap - bone_armor) / ap;
        Если d_hit_power<hit_fraction_actor, то устанавливаем d_hit_power = hit_fraction_actor
        bone_protection - уязвимость кости; первое значение из конфига damages.ltx для соответствующей кости
        Учитываем степень пробития
        hit = hit * d_hit_power
        Учитываем урон по уязвимым частям тела
        hit = hit / bone_protection
        ----------
        Если ap<=bone_armor, то броня НЕ пробита
        Уменьшаем урон пропорционально защищённости костюма/шлема
        hit = hit * hit_fraction_actor
        Учитываем урон по уязвимым частям тела
        hit = hit + hit * (1 / bone_protection - 1) * 0.05;
        ----------
        Учитываем снижение урона от огнестрела у данного бронекостюма/шлема (если есть)
        hit = hit - fire_wound_protection * condition
    ----------
    Прочие воздействия:
    protect - защита костюма/шлема от данного типа урона
    Если protect<0, то устанавливаем protect = 0
    75% урона принимают на себя обычные абсорбы
    hit1 = (hit - protect) * 0.75
    25% урона блокируется общей защищённостью костюма/шлема
    hit2 = hit * hit_fraction_actor * 0.25
    У костюмов с замкнутой системой дыхания (cyclic_air_breath = true) для химического воздействия и радиации hit2 = 0
    hit = hit1 + hit2
    ----------
    Если итоговый hit<0, то устанавливаем hit = 0
    ----------
    Далее учитываются остальные параметры
    artefacts_protection - суммарная защита от всех артефактов на поясе по данному типу хита
    boost_protection - защита активных бустеров по данному типу хита
    boost_immunity - иммунитет активных бустеров  по данному типу хита
    actor_immunity - иммунитет персонажа по данному типу хита (зависит от сложности)
    hit = hit - artefacts_protection
    hit = hit - boost_protection
    hit = hit * actor_immunity * (1 - boost_immunity)
    ----------
    Если итоговый hit<0, то устанавливаем hit = 0

18.    Дополнен алгоритм чтения параметров размера иконки апгрейда:
    Опционально в ячейке cell можно указать линейные размеры (width и height) её области.
    Данные параметры содержатся в файлах конигурации сетки апгрейдов inventory_upgrade.xml, inventory_upgrade16.xml
    ----------
    Расширено максимальное число отображаемых свойств для одного апгрейда с 3 до 20.

20.    Расширено максимальное количество видов патронов, отображаемое в свойствах оружия с двух до шести.
    Внимание! Необходимо дополнение файлов actor_menu_item.xml, actor_menu_item16.xml (см. примеры)
    Тег wpn_params дополнить static_ammo_type3, static_ammo_type4, static_ammo_type5 и static_ammo_type6 по образу static_ammo_type1
    Дата последних изменений: 7.08.2018
    Изменены файлы UIWpnParams.cpp, UIWpnParams.h, UIItemInfo.cpp, UIItemInfo.h
    Пример настройки actor_menu_item.xml:
        <static_ammo_type3 x="25" y="170" width="80" height="40" />
        <static_ammo_type4 x="130" y="170" width="80" height="40" />
        <static_ammo_type5 x="22" y="223" width="80" height="40" />
        <static_ammo_type6 x="104" y="223" width="80" height="40" />
    Пример настройки actor_menu_item16.xml:
        <static_ammo_type3 x="22" y="170" width="80" height="40" />
        <static_ammo_type4 x="104" y="170" width="80" height="40" />
        <static_ammo_type5 x="25" y="223" width="80" height="40" />
        <static_ammo_type6 x="130" y="223" width="80" height="40" />
    
21.    Визуализированы слоты ножа и бинокля.
    В слот ножа может быть установлен не только нож, но и пистолет.
    На пистолет в слоте ножа, так же как и в остальных слотах, можно установить обвесы (если предусмотрено конфигурацией).
    Предметы из слота ножа и слота бинокля могут быть выброшены нажатием соответствующей клавиши (по умолчанию клавиша "g").
    Нож может быть помещён в стандартные слоты оружия.
    Корректно настроены навигации при перемещении предметов в новые слоты.
    Для работы необходимы правки инвентаря xml + текстуры.
    См. примеры файлов actor_menu.xml, actor_menu_16.xml
    ----------
    К классам бинокля, ножа и глушителя привязана проверка, которая запрещает отображение станадартных свойств оружия у этих предметов.
    Предметы класса бинокля и ножа в инвентаре не будут иметь индикатор состояния.

22.    Добавлена регулировка fov из конфига. Это значение регулирует положение камеры относительно рук.
    Способ задания: base_fov = [значение]; в ЗП по умолчанию = 55.0
    Внимание! Параметр обязательно должен быть прописан в секции actor файла actor.ltx

23.    Добавлен параметр k_speed. Этот параметр влияет на начальную скорость пули при использовании данного типа патронов.
    Начальная скорость пули при выстреле = bullet_speed * k_speed * bullet_speed_k
    bullet_speed - начальная скорость пули (параметр оружия)
    k_speed - коэффициент изменения начальной скорости при использовании данного типа патронов
    bullet_speed_k - коэффициент изменения начальной скорости при надетом глушителе, если он есть
    Способ задания: k_speed = [значение]; прописывается в секциях патронов по типу остальных коэффициентов (k_disp, k_hit и др.)
    При k_speed=1.00 влияние на скорость оказываться не будет; k_speed>1.00 - увеличение; k_speed<1.00 - уменьшение скорости
    Внимание! Параметр обязательно должен быть прописан в каждой секции всех видов патронов (или же в родительской секции).

24.    Добавлен параметр k_angle. Этот параметр влияет на отдачу при стрельбе данным типом патронов
    Угол отдачи будет домножен на значение k_angle.
    Способ задания: k_angle = [значение]; прописывается в секциях патронов по типу остальных коэффициентов (k_disp, k_hit и др.)
    При k_angle=1.00 влияние на отдачу оказываться не будет; k_angle>1.00 - увеличение; k_angle<1.00 - уменьшение угла отдачи
    Внимание! Параметр обязательно должен быть прописан в каждой секции всех видов патронов (или же в родительской секции).

25.    Добавлена возможность управления отображением основных индикаторов худа.
    Движок при наличии определённых infoportion'ов будет убирать соответствующие индикаторы.
    "blocked_hud_minimap_info" - инфопоршн блокировки миникарты и индикаторов заметности/издаваемого шума.
    "blocked_hud_quick_slots_info" - инфопоршн блокировки показа слотов быстрого доступа.
    "blocked_hud_indicators_info" - инфопоршн блокировки показа индикаторов используемых бустеров, радиационной опасности и пр.
    "blocked_hud_right_down_pannel_info" - инфопоршн блокировки показа нижней правой панели.
    Для блокировки объекта необходимо выдать соответствующий инфопоршн (например, скриптом).
    Для разблокировки объекта необходимо забрать соответствующий инфопоршн.

26.    Добавлен скриптовый метод перебора предметов на поясе.
    Применяется аналогично методу iterate_inventorу; вызывается для клиенского объекта;
    Использование в скрипте на примере перебора предметов на поясе ГГ:
    local function test_func(npc, item)
        -- Здесь npc - клиентский объект, у которого перебираем предметы на поясе; item - клиентский объект предмета на поясе
        printf(item:section())
    end
    db.actor:iterate_belt(test_func, db.actor)
    Изменены файлы script_game_object_script3.cpp, script_game_object_inventory_owner.cpp, script_game_object.h

27.    Расширен алгоритм отображения количества патронов в правой панели.
    Поскольку изначально алгоритм был рассчитан только на два типа патронов,
    при использовании оружия с 3 и более подерживаемыми типами, счётчики работали некооректно.
    Изменены файлы WeaponMagazined.cpp, WeaponMagazinedWGrenade.cpp

28. Чтение новых свойств у костюмов при апгрейдах:
    actor_visual - визуал ГГ в костюме
    player_hud_section - руки
    helmet_avaliable - блокировка слота шлема
        Внимание! Если идёт изменение параметра helmet_avaliable на false костюма, находящегося в слоте, и при этом слот шлема не пуст,
        то переброс шлема в инвентарь осуществится некорректно. Все необходимые действия проивзодятся, однако визуально шлем остаётся в слоте до момента
        перезапуска меню инвентаря.
        Проблема, по сути, безобидная, но глаз режет. К сожалению, решить/обойти не удалось; принудительный апдейт и прочие методы не помогли.
        Альтернативный метод: после применения данного типа апгрейда закрывать инвентарь скриптом (чтобы обновить отображение; это решает проблему).
    Изменены файлы CustomOutfit.cpp, CustomOutfit.h
    ----------
    Имзенён алгоритм чтение параметра hit_power при апгрейдах оружия.
    Ранее параметр считывался из конфига и заново записывался (new_hit_power = upgrade_hit_power)
    Теперь учёт осуществляется путём сложения (new_hit_power = old_hit_power + upgrade_hit_power)
    Изменён файл WeaponUpgrade.cpp

29. Расширен список иконок тайников и важных объектов для фильтров на карте КПК.
    treasure_blue, treasure_red, treasure_yellow, treasure_violet - тайники;
    explosive_mark - важные объекты;
    Изменён файл UITaskWnd.cpp

30.    Добавлена подсветка слотов на поясе для любых предметов, имеющих параметр belt = true.
    Ранее подсветка осуществлялась только для класса артефактов.
    Изменён файл UIActorMenu.cpp

31.    Введён опциональный порядок вывода значения параметра свойств артефактов и бустеров.
    Возможен вывод 0, 1, 2 или 3 знаков после запятой.
    Способ задания: в файлах af_params.xml, af_params_16.xml, booster_params.xml, booster_params_16.xml
    в теге конкретного параметра указать accuracy="x" (подтег value).
    x - число знаков после запятой, которое необходимо отобразить.
    Данный параметр не является обязательным. Его отсутствие не приведёт к ошибкам/вылетам. По умолчанию движок будет устанавливать 0 знаков после запятой.
    Пример:
    <additional_weight x="0" y="0" width="257" height="20" >
        <caption x="0" y="0" width="257" height="20" complex_mode="0">
            <texture>ui_am_propery_carry_weight_blue</texture>
            <text color="ui_3" font="letterica16" vert_align="c" x="22" y="0"/>
        </caption>
        <texture_minus>ui_am_propery_carry_weight_red</texture_minus>
        <value x="160" y="0" width="30" height="20" magnitude="1" unit_str="st_kg" accuracy="2">
            <text font="letterica16" vert_align="c"/>
        </value>
    </additional_weight>
    Изменены файлы ui_af_params.cpp, ui_af_params.h

32.    Для класса key_bindings добавлено дополнительное свойство kACTIVE_JOBS,
    позволяющее отследить в скриптах нажатие на клавишу, привязанную к вызову КПК.
    Изменён файл key_binding_registrator_script.cpp
    ----------
    Для класса CUIGameCustom добавлен дополнительный метод ShowPdaMenu,    позволяющий открыть окно КПК из скрипта.
    Изменён файл UIGameCustom_script.cpp
    ------------------------------------------------------------------------------------------------------------------------
    ------------------------------------------------------------------------------------------------------------------------
    По нажатии клавиши вызова КПК (по умолчанию клавиша "p"), движок будет обращаться к скриптовой функции _g.need_run_script_pda(),
        чтобы выполнять проверку на необходимость запуска скриптового КПК.
        Если функция возвратит true, то будет запускать скриптовый КПК; если false - движковый.
        Если данная функция в скрипте отсутствует, будет запущен движковый КПК.
    Запуск скриптового КПК будет производиться через функцию _g.run_script_pda().
        Если функция не прописана - запускается движковый.
    ----------
    В основное окно КПК добавлена кнопка "switch_button" (название тега в pda.xml).
        При нажатии на кнопку будет запущена скриптовая функция _g.pda_action_switch (если таковая имеется) и запустить скриптовый КПК
    ----------
    Функция _g.can_run_script_pda() вызывается для проверки на необходимость отображения кнопки switch_button.
        Если функция вовзратит true, то кнопка будет отображена; false - будет скрыта.
    ----------
    Совокупность данных правок позволяет расширить стандартный КПК путём добавления скриптовых интерфейсов.
    Изменены файлы: UIGameSP.cpp, xrgame_dll_detach.cpp, alife_simulator.cpp, UIPdaWnd.cpp, UIPdaWnd.h
    Дата последних изменений: 14-15.08.2018

33.    Исправлена ошибка оригинала, при которой прицелы с регулируемым увеличением давали зум бесконечной кратности.
    Добавлено сохранение настроенной кратности для регулируемых прицелов и биноклей в пределах одной игровой сессии.
    Изменены файлы Weapon.cpp, WeaponBinoculars.cpp
    Дата последних изменений: 24.10.2018

34.    Добавлена возможность включать/отключать ПНВ, встроенный в прицел или бинокль, нажатием забинденной клавиши.
    Изменёны файлы Weapon.cpp, ActorInput.cpp, Torch.cpp, Torch.h
    Дата изменений: 23.04.2017 (апдейт 24.10.2018)

35.    Исправлен недочёт с неверным отображением индикатора заметности в момент загрузки сохранения.
    Изменён файл UIMotionIcon.cpp

36.    Исправлено направление ведения огня в режиме камеры от третьего лица.
    Дата последних изменений: 22.06.2018
    Код частично заимствован у проекта X-Ray Oxygen.
    Изменены файлы: ActorCameras.cpp, Actor_Weapon.cpp, Actor.cpp, cameralook.h, script_game_object_inventory_owner.cpp

37.    Переделаны алгоритмы отображения информации у костюмов и шлемов.
        Теперь в описании будут отображаться все основные необходимые игроку характеристики, такие как количество контейнеров под артефакты,
        поддержка ПНВ и прочее.
        Параметр "Броня" будет отображаться не в виде ползунка, а в виде числового значения.
        Для удобства отслеживания, отдельно выведен параметр защиты головы.
    Необходимы правки следующих конфигов xml:
        actor_menu_item_16.xml, actor_menu_item.xml
        Поскольку изменений достаточно много, здесь они не приведены; ознакомиться с ними можно в приложенных файлах.
    В файле postprocess.ltx в секциях ПНВ необходимо указать параметр nightvision_level, который позволит отображать и сравнивать ПНВ.
    Число интерпретируется как номер поколения.
    Пример:
        Секция ПНВ второго поколения, соответственно параметр nightvision_level    = 2
        [effector_nightvision_2]
        pp_eff_name         = nightvision_2.ppe
        pp_eff_cyclic         = 1
        pp_eff_overlap         = false
        nightvision_level    = 2
    Если данный параметр не вписать, то алгоритм отображения свойств посчитает, что на данном предмете ПНВ не установлен.
    Дата последних изменений: 5.08.2018
    Изменены файлы: UIOutfitInfo.cpp, UIOutfitInfo.h

38.    Добавлена возможность скрывать свойства улучшений в окне описания предметов (оружия/защита).
    Прописывается в секциях файла upgrades_properties.ltx
    Пример:
        Рассмотрена секция свойства заживления ран из Lex Addon
        Параметр attach_to_describe = false говорит о запрещении показа этого свойства у содержащих его костюмов
        Это значит, что при наведении курсора на такой костюм, данное свойство в списке апгрейдов отображено не будет
        Однако в описании улучшения (в меню у техника) всё остаётся как и прежде
        Если данный параметр установить true или же не вписывать вообще, то свойство будет отображаться
        [prop_restore_bleeding]
        name    = st_prop_restore_bleeding
        icon    = ui_am_propery_bleeding_blue
        functor    = inventory_upgrades.property_functor_d
        params    = fire_wound_immunity, cost
        attach_to_describe = false
    Применяется в связке с новой системой отображения свойств, дабы избежать дублирования уже описанных параметров
    Дата последних изменений: 5.08.2018
    Изменены файлы: UIInvUpgradeProperty.h, UIInvUpgradeProperty.cpp, inventory_upgrade_property.h, inventory_upgrade_property.cpp

39.    В окно описания предметов добавлен статик количества улучшений.
    Отображается только если количество улучшений больше нуля.
    Дата последних изменений: 1.08.2018
    Изменены файлы: UIItemInfo.cpp, UIItemInfo.h
    Необходимы следующие правки конфигов xml:
        actor_menu_item.xml:
            <static_upgrades_count x="80" y="40" width="144" height="16">
                <text align="r" font="letterica18" r="210" g="210" b="210"/>
            </static_upgrades_count>
        actor_menu_item_16.xml
            <static_upgrades_count x="136" y="40" width="144" height="16">
                <text align="r" font="letterica18" r="210" g="210" b="210"/>
            </static_upgrades_count>
    Добавляется после тега static_weight

40.    Дополнены алгоритмы отображения информации у оружия.
    Добавлено 2 ползунка: отдача и настильность.
    Необходимы правки следующих конфигов xml:
        actor_menu_item_16.xml, actor_menu_item.xml
            Добавить теги:
            static_bullet_speed, static_recoil - иконки
            cap_bullet_speed, cap_recoil - заголовки
            progress_bullet_speed, progress_recoil - ползунки
    Дата последних изменений: 7.08.2018
    Изменены файлы: IUWpnParams.cpp, UIWpnParams.cpp, UIWpnParams.h
        В скрипте ui_wpn_params.script добавить функции GetBulletSpeed и GetRecoil (вычисление параметров для ползунков)

41.    Для костюмов добавлен параметр замкнутой системы дыхания (ЗСД) cyclic_air_breath типа bool.
    Учитывается при вычислении урона, наносимого радиацией и химическим ожогом
        (костюмы с таким параметром полностью блокируют вторую часть урона (см. алгоритм расчета))
    Способ задания: в секции нужного костюма прописать параметр cyclic_air_breath = значение (true - ЗСД иметтся; false - отсутствует)
        Параметр, кроме того, может быть задан через секции апгрейдов.
    Дата изменений: 10.08.2018
    Изменены файлы: CustomOutfit.h, CustomOutfit.cpp

42.    Фикс инициатора взрыва гранаты. Исправляет краш логики в некоторых случаях.
    Автор правки: NanoBot-AMK
    Дата последних изменений: 19.08.2018
    Изменены файлы: script_game_object2.cpp

43.    Исправление Death callback
    Автор правки: Alundaio
    Дата последних изменений: 19.08.2018
    Изменены файлы: DestroyablePhysicsObject.cpp

44.    Включена возможность воздействия аномалий на НПС (в зависимости от настроек конфига)
        Для работы необходима секция следующего вида в системном дереве конфигов:
        [npc_additional_engine_options]
        anomaly_can_damage_stalker            = true        ; Параметр типа bool
            Внимание! Включение опции в некоторых случаях может повлечь нарушения в работе логики НПС.
            В частности, замечены глюки с наемниками при квесте дяьдки Яра на Юпитере. Предположительно, после прохождения ими радиоактивного участка.
            Возможно, необходимо заменить движковую схему поведения на некую скриптовую.
        В прикреплённой gamedata секция прописана в system.ltx
    Автор идеи: Shredder, доработано: Suhar_
    Дата последних изменений: 19.08.2018
    Изменены файлы: space_restrictor.cpp

45.    Обход вылета из-за конфилкта наличия положительного здоровья у погибших НПС при попытке запроса нет-пакета.
        Иногда возникали ситуации, когда чувак вроде как умер, но по каким-то причинам его здоровье на уровне движка остается положительным.
        При запросе на чтение нет-пакета этого чувака происходит вылет, с руганью на строку
        !(get_health() > 0.0f && get_killer_id() != u16(-1))) файла xrServer_Objects_ALife_Monsters.cpp
        Это означает, что у чувака поле killer_id заполнено (то есть имеется тот или то, что нанесло смертельный хит), !=u16(-1)
        В это же время get_health()>0.0f показывает, что здоровье у чувака вроде как еще есть.
        Попытка получения величины здоровья и его изменение в сторону нуля через скрипт не помогает, т.к. скрипт считает, что здоровье трупа и без того =-1.
            В данной правке при обнаружении положительного значения здоровья у погибшего НПС это значение принудительно устанавливается -1.
    Файл: xrServerEntities\xrServer_Objects_ALife_Monsters.cpp
    Дата: 25.09.2018

46.    Добавлен скриптовый метод add_upgrade для установки апгрейда по клиентскому объекту.
    item:add_upgrade(upgrade_section)
        item - клиентский объект
        upgrade_section - секция апгрейда, который хотим установить
    Метод содержит фильтр, исключающий возможность установки уже существующего апгрейда.
    Однако при попытке установить апгрейд, для которого нужны некие предыдущие улучшения (родительские), отсутствующие на момент обращения к методу,
        получим вылет со ссылкой на устанавливаемый апгрейд и недостающий родительский.
    Дата: 8.10.2018
    Затронуты файлы: inventory_item.h, inventory_item_upgrade.cpp, inventory_upgrade_manager.cpp, inventory_upgrade_manager.h, script_game_object.cpp, script_game_object.h, script_game_object_script2.cpp

47.    Добавлен скриптовый метод upgrade_exist для проверки, установлен ли на предмете апгрейд, по клиентскому объекту.
    result = item:upgrade_exist(upgrade_section)
        result - возвращает логический тип данных (true - установлен, false - не установлен)
        item - клиентский объект
        upgrade_section - секция запрашиваемого
    Дата: 8.10.2018
    Затронуты файлы: script_game_object_script2.cpp, script_game_object.cpp, script_game_object.h

48.    Правка направлеия света фонарика в режиме от 3 лица
    Файлы: Torch.cpp, Actor.h
    Дата: 2.11.2018

49.    Корректировка генерации случайных величин при обновлении ассортимента у торговца
    Конструкция CPU::QPC() при последовательном вызове метода process в течении очень короткого промежутка времени выдаёт значения,
    которые мало отличаются от предыдущих;
    это приводит к тому, что в ассортименте при малой вероятности может долго не быть определённых наименований,
    а затем они появляются все одним разом.
    Использован другой способ получения случайных чисел.
    Дата: 14.11.2018
    Файл: purchase_list.cpp

50.    Дополнительные скриптовые методы клиентского объекта для работы с аддонами
    object:detach_scope()                    - Отсоединить прицел
    object:get_scope_name()                    - Получить название установленного прицела
    object:detach_grenade_launcher()        - Отсоединить подствольник
    object:get_grenade_launcher_name()        - Получить название установленного подствольника
    object:detach_silencer                    - Отсоединить глушитель
    object:get_silencer_name                - Получить название установленного глушителя
    object:attach_addon(addon_id)            - Присоединить аддон (addon_id - айди объекта)
    Дата: 18.11.2018
    Файлы: script_game_object_script2.cpp, script_game_object.h, script_game_object.cpp

51.    Предметам разрешено иметь отрицательную массу.
    Файлы: Inventory.cpp, inventory_item.cpp, ui\UIActorMenuTrade.cpp
    Дата: 29.11.2018
    
52.    Костюмы и шлемы даже при полном износе дают небольшую защиту (10% от максимума)
    Файлы: ActorHelmet.cpp, CustomOutfit.cpp, ui\UIActorStateInfo.cpp, ui\UIOutfitInfo.cpp
    Дата 7.12.2018


xrRender_R1.dll
xrRender_R2.dll
xrRender_R3.dll
xrRender_R4.dll
xrParticles.dll
1.    16.09.2018 Незначительно переработан алгоритм получения данных о выставляемой плотности травы.
    Доступно полное отключение показа травы при настройках (крайнее левое положение ползунка).
    Директория Layers\xrRender\
    Файлы: DetailManager_Decompress.cpp, xrRender_console.cpp

2.    16.09.2018 Увеличена дальность отрисовки травы.
    Директория Layers\xrRender\
    Файл DetailManager.h

 

 

 

 

Товарищи, у меня тут вопрос возник по поводу space_restr.
Вообщем, что надо :
Актёр заходит в рестриктор №1, тем временем логика (on_actor_inside) даёт сигнал для одноразового проигрывания заданного партикла в рестриктор №2
Раньше нигде такого не встречал. Может кто видел что то подобное в модах? Есть у кого идеи как такое сделать можно?

Edited by WizziGun
  • Like 1
  • Полезно 1

- Пролетарии всех стран, соединяйтесь!

 

Share this post


Link to post
Share on other sites
rnm_016    51

Не знаю, поднимался такой вопрос или нет, но все же.
В ТЧ, когда зомбированные находились в атакующем или другом состоянии, они про себя обычно что-то говорили (там, мочии, и все в этом роде).
Вопрос состоит в том, как вернуть подобную озвучку зомбированным в Зов Припяти? Звуки они издают только когда по ним наносишь какой либо урон.
Озвучки смерти так же нет.
m_stalker_zombied.ltx копал, звуки с ТЧ докидывал, не помогает.


FWR mod
Обитаю здесь и здесь

Так же известен, как: ~<Red>~

Где то на компе лежит куча стволов, и весьма хороших, фишка в том, буду ли я выкладывать их еще

:)

Share this post


Link to post
Share on other sites
Jurok    1,855

@rnm_016, открываем xr_combat_zombied.script. Находим строку 49 и убираем «--». В строке 54 добавляем аналогичное воспроизведение звука. Будет выглядеть так:

 

Скрытый текст



function action_zombie_shoot:initialize()
	action_base.initialize( self )

--	self.object:set_node_evaluator      ()
--	self.object:set_path_evaluator      ()
	self.object:set_desired_direction   ()
	self.object:set_detail_path_type    ( move.line )
	self.last_state = nil
	local be  = self.object:best_enemy()
	self.enemy_last_seen_pos = be:position()
	self.enemy_last_seen_vid = be:level_vertex_id()
	self.last_vid   = nil
	self.valid_path = false
	self.turn_time  = 0
	self.st.cur_act = act_shoot

	xr_sound.set_sound_play(self.object:id(), "fight_enemy") -- воспроизведение звука
end

function action_zombie_shoot:set_state( state, be, pos )
	self.t.look_object = be

	if be then
		self.t.look_position = self.enemy_last_seen_pos
	else
		self.t.look_position = pos
	end

	state_mgr.set_state( self.object, state, nil, nil, self.t )

	self.last_state = state

	xr_sound.set_sound_play(self.object:id(), "fight_attack") -- воспроизведение звука
end

 

 

  • Like 2
  • Полезно 2

Share this post


Link to post
Share on other sites
rnm_016    51
Posted (edited)

@Jurok, вроде как получилось, правда пришлось еще строчку добавить (со скрипта версии ТЧ)
Но в какой моменте у них идет обработка смерти я так и не понял

 

function action_zombie_shoot:initialize()
    action_base.initialize( self )

--    self.object:set_node_evaluator      ()
--    self.object:set_path_evaluator      ()
    self.object:set_desired_direction   ()
    self.object:set_detail_path_type    ( move.line )
    self.last_state = nil
    local be  = self.object:best_enemy()
    self.enemy_last_seen_pos = be:position()
    self.enemy_last_seen_vid = be:level_vertex_id()
    self.last_vid   = nil
    self.valid_path = false
    self.turn_time  = 0
    self.st.cur_act = act_shoot

    xr_sound.set_sound_play(self.object:id(), "fight_enemy")
    xr_sound.set_sound_play(self.object:id(), "zombied_fight_attack")
end

function action_zombie_shoot:set_state( state, be, pos )
    self.t.look_object = be

    if be then
        self.t.look_position = self.enemy_last_seen_pos
    else
        self.t.look_position = pos
    end

    state_mgr.set_state( self.object, state, nil, nil, self.t )

    self.last_state = state
    xr_sound.set_sound_play(self.object:id(), "fight_attack")
end

 

 

Edited by rnm_016
  • Полезно 1

FWR mod
Обитаю здесь и здесь

Так же известен, как: ~<Red>~

Где то на компе лежит куча стволов, и весьма хороших, фишка в том, буду ли я выкладывать их еще

:)

Share this post


Link to post
Share on other sites
Jurok    1,855
Posted (edited)

@rnm_016, интересует воспроизведение предсмертных реплик? Не проверял, но возможно (!) это реализуемо в xr_motivator.script (в death_callback).
Добавляем проверку на принадлежность к группировке. Если убиенный состоит в группировке «зомбированные» - воспроизводим звук.

 

 

Edited by Jurok

Share this post


Link to post
Share on other sites
h0N0r    135
В 08.01.2020 в 21:30, WizziGun сказал:

Товарищи, у меня тут вопрос возник по поводу space_restr.
Вообщем, что надо :
Актёр заходит в рестриктор №1, тем временем логика (on_actor_inside) даёт сигнал для одноразового проигрывания заданного партикла в рестриктор №2
Раньше нигде такого не встречал. Может кто видел что то подобное в модах? Есть у кого идеи как такое сделать можно?

Скрытый текст

Только для партиклов не имеющих явное направление, типа сферы и т.п. Логика для 1-го рестриктора (допустим c именем cat_sr_particle1), второй можно удалить:


[logic]
active = sr_idle@start

[sr_idle@start]
on_info = {=actor_in_zone(cat_sr_particle1)} sr_particle@play

[sr_particle@play]
name = anomaly2\anomaly_spatial_bubble_rupture
path = way_point ; точка пути на месте 2-го рестриктора
mode = 2
looped = false
; 10 sec
on_game_timer = 100 | sr_idle@end

[sr_idle@end]

 

Если партикл имеет направление, типа пара из труб, то нужно такую логику:


[sr_particle@play]
name = industrial_particles\effects\exhaust_workshop_1_small
path = cam_name.anm ; камэффект на месте 2-го рестриктора
mode = 1
looped = false
; 10 sec
on_game_timer = 100 | sr_idle@end

 

и создать камэффект - в сдк поставить камеру и настроить дирекцию (вот так https://funkyimg.com/i/31fn3.jpg),
включить motionable, затем autokey, после нажать на +К, и вписать в поле current frame: 0.1, и наконец сделать экспорт.

 

  • Thanks 1

Share this post


Link to post
Share on other sites
WizziGun    346

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


- Пролетарии всех стран, соединяйтесь!

 

Share this post


Link to post
Share on other sites
MotaRin    4

Как сделать чтобы был доступен определенный апгрейд на определенной броне у техников? Пишет что "Техник не делает такую модификацию", как исправить?

Share this post


Link to post
Share on other sites
FrostGreen    1
В 19.01.2020 в 06:05, MotaRin сказал:

Как сделать чтобы был доступен определенный апгрейд на определенной броне у техников? Пишет что "Техник не делает такую модификацию", как исправить?

Вам нужен файл stalkers_upgrade_info.ltx, путь-->configs\misc\stalkers_upgrade_info.ltx

Например:

"up_sect_thirde_specops_outfit = false ;{!upgrade_hint_kardan(3)} false, true" -Кардан не делает такую модификацию (контейнеры для артефактов) для Берил 5М

"up_sect_thirde_specops_outfit = {!upgrade_hint_kardan(3)} false, true" -Кардан делает модификацию,но нужны инструменты для калибровки.

"up_sect_thirde_specops_outfit = true" -Кардан делает модификацию без использования инструментов,но нужны будут предыдущие модификации.

И сами апгрейды брони и шлемов.

configs\misc\outfit_upgrades

 

Edited by FrostGreen
  • Thanks 1

Share this post


Link to post
Share on other sites
Serewan Ozr    0

Шлема и костюмы защищают то, что прописаны в bones_koeff_protection, а список костей в damages. Возник вопрос по областям защиты. Защищает те области, что привязаны к костям у той модели, которую сейчас использует актор или есть какая-то спец. модель для этого?

Share this post


Link to post
Share on other sites
hp416    0

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

Share this post


Link to post
Share on other sites

Делаю в Зов Припяти "time_factor = 1" в файле "alife.ltx"  и после этого все катсцены воспроизводятся с задержкой в секунд 10-15 до начала и после завершения. Перерыл все, до чего смог дотянуться. Но так и не смог исправить эту проблему. Есть ли решение этого вопроса?

Share this post


Link to post
Share on other sites
Space.Marine    280
17 часов назад, Олексій Новіков сказал:

"time_factor = 1"

Таймеры. Такие таймеры. Скажу больше, даже со значение 6-7 почти всегда в конце "ломаются" вертолёты...

Edited by Space.Marine

Share this post


Link to post
Share on other sites
Jurok    1,855

@hp416

Чтобы изменить количество людей в отряде, необходимо отредактировать файл: gamedata/configs/misc/squad_descr.ltx

Находим строки: npc_in_squad = 2, 3

Первая цифра - минимальное количество NPC в отряде, вторая - максимальное количество.

 

Количество отрядов указано в конфигах смарт-террейнов. Находятся здесь:

gamedata/configs/scripts/zaton/smart

gamedata/configs/scripts/jupiter/smart

gamedata/configs/scripts/pripyat/smart

 

max_population - количество отрядов, которое может принять смарт. Определяет для скольких симуляционных отрядов в смарте найдётся работа.

spawn_num - количество отрядов, которое будет респаунится в данном смарте.

  • Полезно 1

Share this post


Link to post
Share on other sites
hp416    0

@Jurok, с этим и так все понятно. Я про общее кол-во NPS в симуляции. Я походу с CS перепутал, там была такая возможность.

Share this post


Link to post
Share on other sites
Dm1tro    0

Здравствуйте,_обитатели этого форума!!!

Хотел бы у вас спросить,_насчет того как очистить сталкер от ненужных файлов оставленных еще разрабами?

только что, Dm1tro сказал:

 

 

Вы меня не правильно поняли.Мне нужно руководтсвто о том какие файлы можно удалять а какие нет.

Edited by W.A.S.P.
правописание
Добавлено  W.A.S.P.,

Очищай. Тебе этого никто не запрещает.

Share this post


Link to post
Share on other sites
Akello    158
3 часа назад, Dm1tro сказал:

как очистить сталкер от ненужных файлов оставленных еще разрабами?

А какие файлы там могут быть ненужными? 

Добавлено  W.A.S.P.,

Изучите "Правила цитирования". https://www.amk-team.ru/forum/topic/13514-obyavleniya/

Устное предупреждение.


%C0%EA%E5%EB%EB%EE.gif

Share this post


Link to post
Share on other sites
Dm1tro    0

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

Share this post


Link to post
Share on other sites
Jurok    1,855

@Dm1tro, если не считать мусорные конфиги и скрипты (которые, по сути, ни на что не влияют), неиспользуемых моделей, текстур и звуков в ЗП относительно мало.

 

Самое основное, что всплывает в памяти:

Скрытый текст

Неиспользуемые модели:

gamedata/meshes/actors/stalker_lesnik/stalker_lesnik_1.ogf

gamedata/meshes/actors/stalker_nebo/stalker_nebo_1.ogf

gamedata/meshes/actors/stalker_nebo/stalker_nebo_2.ogf

gamedata/meshes/actors/stalker_nebo/stalker_nebo_3.ogf

gamedata/meshes/actors/stalker_trader/stalker_trader_1.ogf

 

Неиспользуемые текстуры (и бампы к ним):

gamedata/textures/act/act_stalker_trader_1.dds

gamedata/textures/act/act_face_holod.dds

gamedata/textures/act/act_face_kalancha.dds

gamedata/textures/act/act_face_lebedev.dds

gamedata/textures/act/act_stalker_lesnik_1.dds

gamedata/textures/act/act_trupik.dds

 

Неиспользуемая музыка:

gamedata/sounds/music/limansk.ogg

gamedata/sounds/music/hospital.ogg

gamedata/sounds/music/marsh_1.ogg

gamedata/sounds/music/marsh_2.ogg

gamedata/sounds/music/marsh_night.ogg

 

Но даже если вычистить абсолютно всё лишнее и перепаковать игровые архивы, польза от этого весьма сомнительна. Разве что для успокоения внутреннего перфекциониста.

 

Edited by Jurok
  • Согласен 1
  • Полезно 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


AMK-Team.ru

×
×
  • Create New...