Кефир 1 059 Опубликовано 2 августа (изменено) Просим, спрашиваем, модифицируем самостоятельно — всё это здесь и по NLC Improved. ↓↓↓ Тема оригинального мода здесь: https://ap-pro.ru/forums/topic/12275-nlc-improved ↑↑↑ Основа, актуальный патч, некоторые разрешённые дополнения именно там. Все патчи для мода: Спойлер Таблица по планам в реализации: Если вы устанавливаете правки, то лишаетесь технической поддержки на официальном сервере в Discord. Спойлер Спавн-меню/Спавнер (для обновления от 28.09.2025): Спойлер А как установить? Закинуть папку mods в папку с игрой. Проверить работоспособность поможет красная надпись в главном меню. ———————————————— Необходимое окно открывается в главном меню на клавишу S. ———————————————— Источник: https://ap-pro.ru/forums/topic/12275-nlc-improved/?do=findComment&comment=472963 Спасибо пользователю alexey61rostov (https://ap-pro.ru/profile/177355-alexey61rostov) за публикацию! (самый точный источник взятого вы увидите в самом меню, спасибо его авторам!) Из своих изменений: Изменил путь до звука, чтобы при нажатии кнопки спавна была рабочая звуковая индикация произошедшего; Сменил клавишу активации для того, чтобы учесть все виды клавиатур. Сохранения где угодно (для обновления от 28.09.2025): Спойлер Я не знаю насколько это работоспособная штуковина на перспективу дальнейшего прохождения игры, но вот. ¯\_(ツ)_/¯ —————————————————————————————————————————————————————————————————————————— РЕКОМЕНДОВАНО НЕ СОХРАНЯТЬСЯ РЯДОМ С СИДОРОВИЧЕМ! ВЫСОК ШАНС ЕГО ИСЧЕЗНОВЕНИЯ! —————————————————————————————————————————————————————————————————————————— 1. А как установить? Закинуть папку mods в папку с игрой. Проверить работоспособность поможет красная надпись в главном меню. ———————————————— А как сделать самому, если я не хлеб с лицом Сенко-сан? 0) Ссылка на распаковщик: https://github.com/mcmilk/7-Zip-zstd/releases/download/v24.09-v1.5.7-R1/7z24.09-zstd-x64.exe Это другая версия 7-Zip, которая может распаковать игровые архивы в этом моде. ———————————————— 1) gamedata/scripts/binders/bind_monster.script Найдите конец файла и добавьте на пустых строчках: bind_monster.misc = {force_offline = function() end} Это исправит исчезновение Сидоровича при загрузке сохранения, сделанного рядом с ним. Подсказал: ap-pro.ru/profile/2634-av661194 (Напомнил, что подсказывал ещё в 2023, но у автора правок деменция: ap-pro.ru/profile/16073-gomes) ———————————————— 2) gamedata/scripts/ogse/ogse_campfire.script Найдите: function check_near_en_flame() if not (_G.flag_can_save and is_actor_alive()) then return end local kamp = get_nearest_active_campfire(db.actor:position(), 10) local obj = kamp and kamp.object if obj and obj:position():distance_to_sqr(db.actor:position()) < DIST_TO_ACTOR then return true end end и замените весь этот текст на: function check_near_en_flame() return (_G.flag_can_save and is_actor_alive()) end ———————————————— 3) Запакуйте файлы любой удобной версией программы в формат xdb. Например, этой: https://disk.yandex.ru/d/qOTsRufrY8ShJw В архиве инструкция по использованию находится в файле read_soc_mp.txt. Затем переименуйте готовый файл и переместите его в папку mods в папке с игрой (если таковой не имеется, то создайте её вручную). ———————————————— Таким образом активируется возможность сохранения через пронумерованные быстрые сохранения (user_quicksave_*, где * — цифра/число), сохранения через отдельные варианты с указанием дня, времени и локации (День *. **-**. названиелокации, где * — номер дня, **-** — игровое время) и через специальное меню в главном меню при загруженной игре. Быстрое открытие рюкзака (для обновления от 28.09.2025): Спойлер 1. А как установить? Закинуть папку mods в папку с игрой. Проверить работоспособность поможет красная надпись в главном меню. ———————————————— 2. В архиве лежит адаптация и для HD-интерфейса. Как ей воспользоваться? Состав бутерброда должен получиться таким: 1) Основной мод; 2) Адд-он на HD-интерфейс; 3) Данная правка для чистой версии; 4) Адаптация для HD-интерфейса. ——————————————————————————————————————————— А как сделать самому, если я не хлеб с лицом Сенко-сан? 0) Ссылка на распаковщик: https://github.com/mcmilk/7-Zip-zstd/releases/download/v24.09-v1.5.7-R1/7z24.09-zstd-x64.exe Это другая версия 7-Zip, которая может распаковать игровые архивы в этом моде. ———————————————— 1) gamedata/scripts/ui/ui_cheat_inv_buttons.script Найдите: --полное открытие рюкзака (долго ковыряется) level.disable_input() --обездвиживаю ГГ vergas_lib.s_play("rykzack\\rykzack_open_long",1) schedule.add("show_full_rucksack", "inv_buttons_use.open_inventory(4)", 4000) razgruzka.open_inventory() -- подготовить инвентарь с скрытием избыточных предметов и замените строчки vergas_lib.s_play("rykzack\\rykzack_open_long",1) schedule.add("show_full_rucksack", "inv_buttons_use.open_inventory(4)", 4000) на: vergas_lib.s_play("rykzack\\rykzack_open_short",1) schedule.add("show_full_rucksack", "inv_buttons_use.open_inventory(4)", 4) ———————————————— 2) gamedata/sounds/rykzack/rykzack_open_short.ogg Данный файл из архива должен быть по пути выше, иначе при открытии рюкзака будет слышен звук по умолчанию. ———————————————— 3) Запакуйте файлы любой удобной версией программы в формат xdb. Например, этой: https://disk.yandex.ru/d/qOTsRufrY8ShJw В архиве инструкция по использованию находится в файле read_soc_mp.txt. Затем переименуйте готовый файл и переместите его в папку mods в папке с игрой (если таковой не имеется, то создайте её вручную). ———————————————— Таким образом активируется возможность быстрее открыть рюкзак. Увеличенный объём ящика (для обновления от 28.09.2025): Спойлер ПРИ БОЛЬШОМ КОЛИЧЕСТВЕ ПРЕДМЕТОВ В ЯЩИКЕ ИГРА НАЧИНАЕТ СЪЕДАТЬ ОПЕРАТИВНУЮ ПАМЯТЬ! ——————————————————————————————————————————— 1. А как установить? Закинуть папку mods в папку с игрой. Проверить работоспособность поможет красная надпись в главном меню. ———————————————— А как сделать самому, если я не хлеб с лицом Сенко-сан? 0) Ссылка на распаковщик: https://github.com/mcmilk/7-Zip-zstd/releases/download/v24.09-v1.5.7-R1/7z24.09-zstd-x64.exe Это другая версия 7-Zip, которая может распаковать игровые архивы в этом моде. ———————————————— 1) gamedata/scripts/binders/bind_physic_object.script Найдите: function generic_physics_binder:reinit() object_binder.reinit(self) db.storage[self.object:id()] = {} self.st = db.storage[self.object:id()] local sec, name = self.object:section(), self.object:name() if sec_confirm(sec, name) == true then self.object:set_callback(callback.on_inv_box_item_take, self.on_inv_box_item_take_callback, self) self.object:set_callback(callback.on_inv_box_item_drop, self.on_inv_box_item_drop_callback, self) self.pos = self.object:position() self.st["max_weight"] = 50 if is_paid_box(self.object:name()) then local add_weight = 50 * math.floor(db.actor:character_rank() / 300) self.st["max_weight"] = 200 + add_weight end end и замените строчки self.st["max_weight"] = 50 if is_paid_box(self.object:name()) then local add_weight = 50 * math.floor(db.actor:character_rank() / 300) self.st["max_weight"] = 200 + add_weight на: self.st["max_weight"] = 999999 if is_paid_box(self.object:name()) then local add_weight = 999999 self.st["max_weight"] = add_weight ———————————————— 2) gamedata/scripts/binders/bind_physic_object.script Найдите: function set_counter(id, rem) local box = id and client_obj(id) if box and not rem then if is_paid_box(box:name()) then local add_weight = 50 * math.floor(db.actor:character_rank() / 300) db.storage[id]["max_weight"] = 200 + add_weight end end и замените строчки local add_weight = 50 * math.floor(db.actor:character_rank() / 300) db.storage[id]["max_weight"] = 200 + add_weight на: local add_weight = 999999 db.storage[id]["max_weight"] = add_weight ———————————————— 3) Запакуйте файлы любой удобной версией программы в формат xdb. Например, этой: https://disk.yandex.ru/d/qOTsRufrY8ShJw В архиве инструкция по использованию находится в файле read_soc_mp.txt. Затем переименуйте готовый файл и переместите его в папку mods в папке с игрой (если таковой не имеется, то создайте её вручную). ———————————————— Таким образом активируется возможность класть больше предметов что в обычные ящики, что в платные. Увеличенные шансы выпадения частей мутантов (для обновления от 28.09.2025): Спойлер Если что-то не устраивает, то снизу будет, насколько это возможно, всё подробно расписано. ———————————————— Изменения относительно оригинальных файлов: • Кровосос (все вариации): — 0.25 → 0.7; • Кабан (все вариации): — 0.2 → 0.7; • Бюрер (все вариации): — 0.2 → 0.8; • Кот (все вариации): — 0.2 → 0.7; • Химера (все вариации): — 0.2 → 1; • Контролёр (все вариации): — 0.7 → 1; • Слепой пёс (все вариации): — 0.2 → 0.7; • Плоть (все вариации): — 0.2 → 0.8; • Псевдогигант (все вариации, кроме квестовых): — 0.75 → 1; • Полтергейст (все вариации): — 0.2 → 1; • Псевдособака (все вариации): — 0.2 → 0.8; • Псевдособака_френд (?): — 0.2 → 0.8; • Снорк: — 0.2 → 0.8; • Тушкан (все вариации, кроме квестовых): — 0.2 → 0.7; • Зомби (все вариации): — 0.25 → 0.75; ———————————————— 1. А как установить? Закинуть папку mods в папку с игрой. Проверить работоспособность поможет красная надпись в главном меню. ——————————————————————————————————————————— А как сделать самому, если я не хлеб с лицом Сенко-сан? 0) Ссылка на распаковщик: https://github.com/mcmilk/7-Zip-zstd/releases/download/v24.09-v1.5.7-R1/7z24.09-zstd-x64.exe Это другая версия 7-Zip, которая может распаковать игровые архивы в этом моде. ———————————————— Список мутантов: 1) m_bloodsucker.ltx — кровососы; 2) m_boar.ltx — кабаны; 3) m_burer.ltx — бюреры; 3) m_cat.ltx — коты; 4) m_chimera.ltx — химеры; 5) m_controller.ltx — контролёры; 6) m_dog.ltx — слепые псы; 7) m_flesh.ltx — плоти; 8) m_giant.ltx — псевдогиганты; 9) m_poltergeist.ltx — полтергейсты; 10) m_pseudodog.ltx — псевдособаки; 11) m_pseudodogfrend.ltx — какие-то другие псевдособаки (?); 12) m_snork.ltx — снорки; 13) m_tushkano.ltx — тушканы; 14) m_zombie.ltx — зомби; ———————————————— 1) gamedata/config/creatures/m_***.ltx (любой файл из названных в списке выше) Через поиск по файлу найдите параметр: Spawn_Inventory_Item_Probability и замените число после знака «=» на любое от 0 до 1 (после точки рекомендую писать только три числа, т.е. десятые, сотые и тысячные). ———————————————— 2) Уточнения: • Если вы делаете редактуру сами, а не используете готовые файлы, то помните, что в одном файле может быть несколько секций мутантов, и у каждой есть своё значение вышеизложенного параметра, поэтому редактируйте файлы с должным вниманием. • Если вы делаете редактуру сами, а не используете готовые файлы, то помните, что в некоторых файлах присутствуют секции с вышеизложенным параметром где значение равно нулю. Рекомендую оставить их как есть и лишний раз не редактировать. ———————————————— 3) Запакуйте файлы любой удобной версией программы в формат xdb. Например, этой: https://disk.yandex.ru/d/qOTsRufrY8ShJw В архиве инструкция по использованию находится в файле read_soc_mp.txt. Затем переименуйте готовый файл и переместите его в папку mods в папке с игрой (если таковой не имеется, то создайте её вручную). ———————————————— Таким образом активируется увеличенный шанс выпадения частей мутантов. Отключение порчи частей мутантов (для обновления от 28.09.2025): Спойлер 1. А как установить? Закинуть папку mods в папку с игрой. Проверить работоспособность поможет красная надпись в главном меню. ———————————————— А как сделать самому, если я не хлеб с лицом Сенко-сан? 0) Ссылка на распаковщик: https://github.com/mcmilk/7-Zip-zstd/releases/download/v24.09-v1.5.7-R1/7z24.09-zstd-x64.exe Это другая версия 7-Zip, которая может распаковать игровые архивы в этом моде. ———————————————— 1) gamedata/scripts/sak/sak.script Через поиск по файлу найдите: local new_cond=0.10 local iitem = obj:get_inventory_item() local iicond = iitem and iitem.item_condition local cond = iicond or data.condition if strpos(nname,"green_kolbasa") then new_cond=0.02 elseif strpos(nname,"kolbasa") then new_cond=0.08 elseif strpos(nname,"mutant_chimera_kogot") then new_cond=0.01 elseif strpos(nname,"mutant_krovosos_jaw") then new_cond=0.08 elseif strpos(nname,"mutant_poltergeist_glas") then new_cond=0.05 elseif strpos(nname,"mutant_hand_kontroler") then new_cond=0.05 elseif strpos(nname,"mutant_psevdogigant_hand") then new_cond=0.05 elseif strpos(nname,"mutant_e_chimera_kidney") then new_cond=0.035 elseif strpos(nname,"mutant_boar_leg") then new_cond=0.025 elseif strpos(nname,"mutant_zombie_hand") then new_cond=0.07 elseif strpos(nname,"mutant_fracture_spleen") then new_cond=0.45 end и замените весь этот текст на: local new_cond=0.0 local iitem = obj:get_inventory_item() local iicond = iitem and iitem.item_condition local cond = iicond or data.condition if strpos(nname,"green_kolbasa") then new_cond=0.0 elseif strpos(nname,"kolbasa") then new_cond=0.0 elseif strpos(nname,"mutant_chimera_kogot") then new_cond=0.0 elseif strpos(nname,"mutant_krovosos_jaw") then new_cond=0.0 elseif strpos(nname,"mutant_poltergeist_glas") then new_cond=0.0 elseif strpos(nname,"mutant_hand_kontroler") then new_cond=0.0 elseif strpos(nname,"mutant_psevdogigant_hand") then new_cond=0.0 elseif strpos(nname,"mutant_e_chimera_kidney") then new_cond=0.0 elseif strpos(nname,"mutant_boar_leg") then new_cond=0.0 elseif strpos(nname,"mutant_zombie_hand") then new_cond=0.0 elseif strpos(nname,"mutant_fracture_spleen") then new_cond=0.0 end ———————————————— 2) Запакуйте файлы любой удобной версией программы в формат xdb. Например, этой: https://disk.yandex.ru/d/qOTsRufrY8ShJw В архиве инструкция по использованию находится в файле read_soc_mp.txt. Затем переименуйте готовый файл и переместите его в папку mods в папке с игрой (если таковой не имеется, то создайте её вручную). ———————————————— Таким образом отключается порча частей мутантов. Отключение порчи артефактов (для обновления от 28.09.2025): Спойлер 1. А как установить? Закинуть папку mods в папку с игрой. Проверить работоспособность поможет красная надпись в главном меню. ———————————————— А как сделать самому, если я не хлеб с лицом Сенко-сан? 0) Ссылка на распаковщик: https://github.com/mcmilk/7-Zip-zstd/releases/download/v24.09-v1.5.7-R1/7z24.09-zstd-x64.exe Это другая версия 7-Zip, которая может распаковать игровые архивы в этом моде. ———————————————— 1) gamedata/scripts/arts/arc_arts.script Через поиск по файлу найдите: local damage = 0.002 if strposx( section, "_buliz" ) then damage = 0.0025 elseif strposx( section, "dummy_" ) then damage = 0.01 elseif strposx( section, "dyn1", -1 ) then damage = 0.005 elseif strposx( section, "dyn2", -1 ) then damage = 0.0025 elseif strposx( section, "dyn3", -1 ) then damage = 0.001 elseif strposx( section, "dyn4", -1 ) then damage = 0.0005 и замените весь этот текст на: local damage = 0.000 if strposx( section, "_buliz" ) then damage = 0.00 elseif strposx( section, "dummy_" ) then damage = 0.0 elseif strposx( section, "dyn1", -1 ) then damage = 0.00 elseif strposx( section, "dyn2", -1 ) then damage = 0.00 elseif strposx( section, "dyn3", -1 ) then damage = 0.00 elseif strposx( section, "dyn4", -1 ) then damage = 0.000 ———————————————— 2) gamedata/scripts/sak/black_tip.script Через поиск по файлу найдите: if not is_gg_away then -- log2("black_tip.discharge: setting low coef, someone is nearby") coef = tonumber(coef) * 0.3 else -- log2("black_tip.discharge: setting high coef, noone is nearby") end for i, id in ipairs (list) do local cv = params.add_condition(id, -0.004 * tonumber(coef)) -- обработка вредной ЧМ, удаление лишних копий и замените весь этот текст на: if not is_gg_away then -- log2("black_tip.discharge: setting low coef, someone is nearby") coef = tonumber(coef) * 1 else -- log2("black_tip.discharge: setting high coef, noone is nearby") end for i, id in ipairs (list) do local cv = params.add_condition(id, -1.5 * tonumber(coef)) -- обработка вредной ЧМ, удаление лишних копий За правку выражаю свою благодарность пользователю walet (https://ap-pro.ru/profile/45301-walet/)! ———————————————— 3) Запакуйте файлы любой удобной версией программы в формат xdb. Например, этой: https://disk.yandex.ru/d/qOTsRufrY8ShJw В архиве инструкция по использованию находится в файле read_soc_mp.txt. Затем переименуйте готовый файл и переместите его в папку mods в папке с игрой (если таковой не имеется, то создайте её вручную). ———————————————— Таким образом отключается порча артефактов. Спойлер Пока что нечего тестировать... Спойлер ПДА Крота через клавишу в главном меню (для обновления от 28.09.2025): Спойлер Файл по ссылке необходимо переместить в папку mods (если таковой нет, то создать её). Зайдите в игру, загрузите нужное сохранение; После загрузки сохранения выйдите в главное меню и нажмите F1; Затем зайдите обратно в игру и проверьте инвентарь — в нём должно появиться два таких ПДА. Один оставьте, другой утилизируйте любым удобным вам способом. Возвращение возможности абузить снотворное перед сном (для обновления от 28.09.2025): Спойлер Файл по ссылке необходимо переместить в папку mods (если таковой нет, то создать её). Источник Возвращение возможности использования 2D КПК в Лесной Чаще (для обновления от 28.09.2025): Спойлер Файл по ссылке необходимо переместить в папку mods (если таковой нет, то создать её). Источник Уменьшенное время на реализацию действий у НПС (для обновления от 28.09.2025): Спойлер Файл по ссылке необходимо переместить в папку mods (если таковой нет, то создать её). Зарядка ПДА: 5 минут Вскрытие капсул: 15 минут Источник Изменено Понедельник в 17:20 пользователем Кефир 8 5 1 2 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Новис 60 Опубликовано 3 сентября Подскажите как убрать загрезнения противогаза и поломку его. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Tyrob 6 388 Опубликовано 3 сентября В 01.09.2025 в 23:07, Кефир сказал: Всё должно работать, кроме частей монстров. Что это значит , кроме частей монстра ? Не будут выпадать . Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Кефир 1 059 Опубликовано 3 сентября 1 час назад, Tyrob сказал: Что это значит , кроме частей монстра ? Не будут выпадать . Правка «Увеличенный шанс выпадения частей мутантов» не будет работать для новой версии мода от 31.08.2025. Если всё ещё непонятно, то отпишите. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Tyrob 6 388 Опубликовано 3 сентября 15 минут назад, Кефир сказал: Правка «Увеличенный шанс выпадения частей мутантов» не будет работать для новой версии мода от 31.08.2025. Если всё ещё непонятно, то отпишите. Всё понял Спасибо за разъяснения . Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vedinov.2023 0 Опубликовано 4 сентября Всем привет. Подскажите кто шарит, где можно поправить, чтобы Сидор покупал любой хлам и не только? А то одно покупает а другое нет. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
sexys 163 Опубликовано 4 сентября vedinov.2023 нигде 1 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
slavomir777 12 Опубликовано 4 сентября 2 часа назад, vedinov.2023 сказал: Всем привет. Подскажите кто шарит, где можно поправить, чтобы Сидор покупал любой хлам и не только? А то одно покупает а другое нет. gamedata\config\misc\shop_sidor 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Кефир 1 059 Опубликовано 5 сентября Правки адаптированы под последнее обновление. К повторному скачиванию и переустановке подлежит: Отключение порчи частей мутантов. 1 1 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zub2608 17 Опубликовано 5 сентября (изменено) Увеличение количества спичек в коробке. Путь: gamedata\scripts\binders\bind_physic_object, ищем local max_cnt_use = 5 -- кол-во спичек в коробке. Меняем на нужную цифру. Далее путь: gamedata\scripts\ui\ui_inv_descr, ищем total_matches = total_matches + (5 - cnt) в обоих файлах цифры должны совпадать. Изменено 8 сентября пользователем zub2608 1 1 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
vedinov.2023 0 Опубликовано 5 сентября 2 часа назад, zub2608 сказал: В файле, vergas_masks.script Если не сложно, можно конкретней какие строки. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zub2608 17 Опубликовано 5 сентября (изменено) 15 минут назад, vedinov.2023 сказал: Если не сложно, можно конкретней какие строки. Скрипт менять надо, у меня есть готовый файл но я его ещё не тестил, ещё костюма нет с маской. Увеличил время до четырёх часов на загрязнение и урон по маске снизил в три раза. Спойлер --[[ ƒинамический худ v 4 Vergas © NLC-6.0 имитаци¤ дыхани¤ и расчет зума © AMK ]]-- function attach(sm) sm:subscribe({signal = "on_update", fun = this.update_zoom}) sm:subscribe({signal = "on_update", fun = this.mask_update}) sm:subscribe({signal = "on_actor_before_hit", fun = this.on_actor_before_hit}) -- sm:subscribe({signal = "on_update", fun = this.add_time_dirt_phase}) end local wnd_mask_osnova = nil local wnd_mask local mask_old = "?" local armor_old = "?" local flag_dirt = false local flag_add_dirt = false local flag_blurs = false local flag_zoom = false local mask_on_off local flag_exet_show local tbl_condition local blurs = nil local blurval = 0 local blurlt = 0 local blurcyctime = 0 local blurlastphase = 0 local sch_panel_1 = 0 local sch_panel_2 = 0 local tip_brth = { ["?"] = "wht", ["hud_gas"] = "gas", ["hud_sci"] = "scn", ["hud_mer"] = "gas", ["hud_exo"] = "mil", ["hud_mil"] = "mil", } tip_breath = "wht" local pre_mask = {} function get_mask_config(sect) if pre_mask[sect] == nil then pre_mask[sect] = vergas_lib.set_pr_from_config_str("list_masks", sect) end return pre_mask[sect] end function no_astma_protection() return not mask_on_off end function set_mask_on_off_flag(param) mask_on_off = param end function mask_update() ogse_signals.get_mgr():reschedule(500) effects_control() local mask local armor flag_add_dirt = false if not db.actor then return end if flag_dirt then return end if wnd_mask_osnova == nil then init_mask() end if db.actor.health <= 0 then if mask_old~= "?" then wnd_mask_osnova:SetWndPos(-2000,-2000) mask_old = "?" flag_blurs = false end return end mask, armor = mask_definition() if mask == "?" and mask_old == "?" then return end if armor == "?" and armor_old == "?" then return end if mask~= "?" and armor == armor_old then if mask_on_off == false and mask_old~= "?" then flag_blurs = false if wnd_mask~= nil then wnd_mask:Show(false) flag_blurs=false -- не знаю пока, но по моему именно из-за отсутстви¤ здесь этого влага == 0 по¤вл¤етс¤ запотевание без маски. end mask_old = "?" tip_breath = tip_brth["?"] return elseif mask_on_off == true then if mask_old == "?" or mask_old~= mask then set_mask(mask) wnd_mask:Show(true) flag_blurs = true tip_breath = tip_brth[string.sub(mask,1,7)] end end end if armor == "?" and armor_old~= "?" then if mask_old~= "?" then wnd_mask:Show(false) mask_on_off = false flag_blurs = false mask_old = "?" end armor_old = "?" return end if armor~= armor_old then if mask_old~= "?" then wnd_mask:Show(false) mask_on_off = false flag_blurs = false mask_old = "?" if mask~= "?" then set_mask(mask) end end armor_old = armor return end if armor == armor_old then flag_add_dirt = true end end local ec_flag = "ec_flag" function effects_control() if ec_flag ~= flag_blurs then local flag = flag_blurs and "on" or "off" cmd("r2_visor_refl_control", flag) cmd("r2_rain_drops_control", flag) ec_flag = flag_blurs -- log2("effects_control: %s", tostring(flag)) end end -- local time_upd_d = 360000 / sys_ini:r_float("alife", "time_factor") function add_time_dirt_phase() -- “аймер срабатывает каждые 30Ц40 секунд timers.start_timer("vergas_m_dirt", 0, 0, lua_random(30, 40), "vergas_masks.add_time_dirt_phase()") if mask_on_off == true and flag_add_dirt == true then local armor_custom = set_get_armor_custom(2) local tbl_custom = vergas_lib.str_explode("|", armor_custom, true) if (type(tonumber(tbl_custom[2])) == "number") and tonumber(tbl_custom[2]) < 6 then local tm_dirt = tonumber(tbl_custom[3]) or 0 -- ƒл¤ всех масок одинаково: ~4 часа до первой стадии local base_dirt = 420 if tm_dirt < base_dirt then tm_dirt = tm_dirt + 1 else tbl_custom[2] = tostring(tonumber(tbl_custom[2]) + 1) mask = string.sub(mask, 1, string.len(mask) - 1) .. tbl_custom[2] set_mask(mask) tm_dirt = 0 end set_get_armor_custom(1, tbl_custom[1].."|"..tbl_custom[2].."|"..tm_dirt) end end end function init_mask() local mask local armor if (not blurs) or get_hud():GetCustomStatic("hud_blur1") == nil then blurs = {} -- wprintf(' initalizing mask blur from:\n~C0A %s ~C07', debug.traceback(2, ' ')) for i = 1,4 do get_hud():AddCustomStatic("hud_blur"..i) blurs= get_hud():GetCustomStatic("hud_blur"..i):wnd() --blurs:SetWidth(0) end set_blurs(false) end get_hud():AddCustomStatic("dynamic_hud",true) wnd_mask_osnova = get_hud():GetCustomStatic("dynamic_hud"):wnd() wnd_mask = CUIStatic() wnd_mask:SetAutoDelete(true) wnd_mask:SetStretchTexture(true) wnd_mask_osnova:AttachChild(wnd_mask) wnd_mask:Init(0,0,1024,768) wnd_mask:SetOriginalRect(0,0,1024,768) -- wnd_mask:InitTexture("hud_logo_0_0") if tbl_condition == nil then tbl_condition = {} local i for i = 1, 5 do table.insert(tbl_condition,vergas_lib.set_pr_from_config("list_parameters","condition_"..tostring(i))) end end mask, armor = mask_definition() if mask ~= "?" then mask_on_off = get_value("var_mask_on_off", false) remove_value("var_mask_on_off") if mask_on_off then tip_breath = tip_brth[string.sub(mask,1,7)] or "wht" -- Manool: нужно сразу определ¤ть тип звука, при загрузке, например set_mask(mask) flag_blurs = true else wnd_mask:Show(false) mask_old = "?" end else mask_old = "?" end armor_old = armor if mask_on_off == nil then mask_on_off = false endend function set_mask(mask) if wnd_mask then wnd_mask:InitTexture("verg\\masks\\"..mask) end -- texman.swap_mask(mask) mask_old = mask -- texman.swap_mask(mask)end function mask_condition() local armor = db.actor:item_in_slot(6) if armor then -- local obj = armor:get_outfit() local cval = armor:condition() -- if obj then -- cval = obj:condition_ex(1) -- only mask/head damage -- end local cd, mask_cond = set_get_armor_custom(2) return mask_cond end return -1end function mask_definition() local mask = "?" local cond local n_phase local combez local armor = db.actor:item_in_slot(6) if armor then combez = armor:section() -- local cval = mask_condition() local armor_custom, cval = set_get_armor_custom(2) cond = set_hud_textur(cval) if armor_custom == "" then local ms = get_mask_config(combez) if ms~= "?" then armor_custom = ms.."|" mask = ms mask = mask..cond if tonumber(string.sub(cond, 2,2)) == 1 then n_phase = 1 armor_custom = armor_custom.."1|"..(lua_random(1,6)) else n_phase = lua_random(1,6) armor_custom = armor_custom..n_phase.."|"..(lua_random(1,6)) end mask = mask.."_"..n_phase else mask = "?" armor_custom = "none|none|none" end set_get_armor_custom(1,armor_custom) else local tbl_custom = vergas_lib.str_explode("|",armor_custom,true) if tbl_custom and tbl_custom[1]~= "none" then mask = tbl_custom[1]..cond.."_"..tbl_custom[2] else mask = "?" end end else mask, combez, tip_breath = "?", "?", tip_brth["?"] end return mask,combezend function allcore_mask_is_on() local mask, armor = mask_definition() if mask_on_off and mask ~= "?" then return true end return falseend -- Manool: переделано на spawn_ini, чтобы удобнее было другие-- данные записывать в костюм-- + состо¤ние маски отдельно в кастомдатеfunction set_get_armor_custom(mode, armor_custom) local armor = db.actor:get_current_outfit() if not armor then return end local sobj = g_sim:object(armor:id()) if mode == 2 then local custom, cond = "", 100 local ini = sobj:spawn_ini() if ini and ini:section_exist("mask") then local st1 = get_string("mask", "t1", nil, ini) local st2 = get_string("mask", "t2", nil, ini) local st3 = get_string("mask", "t3", nil, ini) cond = get_u32("mask", "t4", 100, ini) if st1 and st2 and st3 then custom = st1 .. "|" .. st2 .. "|" .. st3 end end return custom, cond / 100 elseif mode == 1 then local tbl_custom = vergas_lib.str_explode("|", armor_custom, true) local ini = sobj:spawn_ini() ini.readonly = false ini:w_string("mask", "t1", tostring(tbl_custom[1])) ini:w_string("mask", "t2", tostring(tbl_custom[2])) ini:w_string("mask", "t3", tostring(tbl_custom[3])) sobj:save_spawn_ini() endend function is_headshot(bone_id) -- ключицы и выше return (bone_id and bone_id > 10 and bone_id < 18)end local function actor_hit_target(hd) local outfit, who, hit_type, hit_power = db.actor:get_current_outfit(), hd.who_id, hd.hit_type, hd.power -- wprintf("[~T]. #DBG: ~C0F actor_hit_target(%d, %d, %d, %.3f)~C07", outfit and outfit:name() or "nil", who, hit_type, hit_power) local obj = (who > 0) and (who < 65535) and client_obj(who) if obj then local rval = lua_random() * 100 local name = obj:name() local clid = obj:clsid() -- wprintf(" outfit_name =~C0E %s~C07, hit_source =~C0F %s~C07, hit_power =~C0D %.3f~C07 ", outfit and outfit:name() or "nil", name, hit_power) -- Sn: все кости смещены на -1 относительно оригинала -- “ушкан или "buzz" Ч бьЄт по нижней половине тела if (clid == CLID_TUSHKANO or strpos(name, "buzz")) then hd.bone_id = lua_random(0, 8) end -- ровосос Ч чаще по голове if (clid == CLID_BLOODSUCKER) then if rval > 33 then hd.bone_id = lua_random(9, 17) -- голова/туловище else hd.bone_id = 13 -- часто по голове end end -- абан Ч 50% по ногам, 50% по туловищу if (clid == CLID_BOAR) then if rval > 50 then hd.bone_id = lua_random(0, 8) else hd.bone_id = lua_random(9, 11) end end -- Ћайтова¤ реакци¤ на попадание в голову: только звук боли if hd.bone_id > 11 and hd.bone_id < 18 and hd.power >= 0.2 then local snd_obj = xr_sound.get_safe_sound_object([[actor\pain_3]]) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) end endend function on_actor_before_hit(obj, hd) actor_hit_target(hd) -- Manool: это вызывать ѕ≈–≈ƒ хитом по маске! local ht = hd.hit_type if ht == hit.telepatic or ht == hit.radiation then return end local out = is_headshot(hd.bone_id) and (get_flag_mask() == true) and db.actor:get_current_outfit()if out then -- Коэффициент прочности маски: 0.3 = в 3,3 раза медленнее ломается local mask_damage_scale = 0.3 set_mask_condition(out:id(), -hd.power * mask_damage_scale)endend function set_default_cd(id) local armor = client_obj(id) if armor then local sec = armor:section() local ms = get_mask_config(sec) if ms~= "?" then local sobj = server_obj(armor:id()) if sobj then local ini = sobj:spawn_ini() ini.readonly = false local rnd = lua_random(1,6) ini:w_string("mask", "t1", tostring(ms)) ini:w_string("mask", "t2", tostring(1)) ini:w_string("mask", "t3", tostring(rnd)) sobj:save_spawn_ini() end end endend function set_mask_condition(id, cond, force_mode) if type(id) ~= 'number' then id = tonumber(id) cond = tonumber(cond) if force_mode then force_mode = tonumber(force_mode) end end local sobj = id and server_obj(id) local ini = sobj and sobj:spawn_ini() if not ini then return end local curr = ini:section_exist("mask") and get_u32("mask", "t4", 100, ini) or 100 curr = curr + cond if curr < 0 then curr = 0 end -- normalize if curr > 100 then curr = 100 end ini.readonly = false if force_mode then ini:w_u32("mask", "t4", cond) else ini:w_u32("mask", "t4", curr) end sobj:save_spawn_ini()end function get_mask_condition(id) local sobj = id and server_obj(id) local ini = sobj and sobj:spawn_ini() return ini and ini:section_exist("mask") and get_u32("mask", "t4", 100, ini) or 100end function set_hud_textur(condition) local m_s -- ∆Єстко задаЄм пороги пр¤мо в коде -- «начени¤ в дол¤х (1.0 = 100%) local cond1 = 0.85 -- _1 Ч чиста¤ local cond2 = 0.65 -- _2 Ч лЄгкие царапины local cond3 = 0.45 -- _3 Ч заметные повреждени¤ local cond4 = 0.35 -- _4 Ч сильные царапины/гр¤зь local cond5 = 0.30 -- _5 Ч трещины начинаютс¤ if condition > cond1 then m_s = "_1" elseif condition > cond2 then m_s = "_2" elseif condition > cond3 then m_s = "_3" elseif condition > cond4 then m_s = "_4" elseif condition > cond5 then m_s = "_5" else m_s = "_6" end return m_sendfunction get_flag_mask() return mask_on_offend function on_off_mask() local out = db.actor:get_current_outfit() local ms = out and get_mask_config(out:section()) or "?" if ms == "?" then return end sak.actor_hide_weapon() local timeout = 50 --schedule.add("off_eye", "vergas_masks.on_off_mask_eye()", 1500) if mask_on_off == false then local mask, armor = mask_definition() if mask ~= "?" then tip_breath = tip_brth[string.sub(mask,1,7)] local sound = "device\\masks\\"..tip_breath.."_on" snd_obj = xr_sound.get_safe_sound_object(sound) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 0.5) timeout = 2000 end end schedule.add("off_mask", "vergas_masks.on_off_mask_end()", timeout) flag_blurs = falseendfunction on_off_mask_eye() level.add_pp_effector("black_q.ppe", 1237, false)endfunction on_off_mask_end() local timeout = 50 if mask_on_off then -- выключение маски mask_on_off = false local sound = "device\\masks\\"..tip_breath.."_off" snd_obj = xr_sound.get_safe_sound_object(sound) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1) timeout = 1300 nvd_params.off_pnv() else mask_on_off = true end schedule.add("off_mask_end", "sak.restore_weap()", timeout) flag_blurs = false end function save_mask_on_off() set_value("var_mask_on_off", mask_on_off)end function update_zoom() ogse_signals.get_mgr():reschedule(53) if mask_on_off then local act = get_actor_obj() if act and act:is_zoom_aiming_mode() then if flag_zoom then return else mask_zoom_stretchy(true) end else if flag_zoom then mask_zoom_stretchy(false) else return end end endend --[=[]]local d_fov = 67.49function update_zoom() ogse_signals.get_mgr():reschedule(53) if mask_on_off then local fov_n = device().fov local dlt = d_fov-fov_n if dlt>0.1 then d_fov = fov_n if flag_zoom then return else mask_zoom_stretchy(true) end elseif dlt<-0.1 then d_fov = fov_n if flag_zoom then mask_zoom_stretchy(false) else return end end endend--]=]function mask_zoom_stretchy(param) if param then local wpn = db.actor:active_item() if not wpn then return end if wpn:is_binoculars() then wnd_mask:Init(-512,-384-192,2048,1536+384) elseif wpn:is_weapon_magazined() then wnd_mask:Init(-512,-32,1536,800) end flag_blurs = false flag_zoom = true else wnd_mask:Init(0,0,1024,768) flag_blurs = true flag_zoom = false endend function update_blurs() set_blurs(flag_blurs)end function set_blurs(enabled) local rect = set_zoom_stretchy_rect() if not blurs then return end if not enabled then for i = 1,4 do if blurs then blurs:SetWidth(0) end end return end local power = db.actor.power local period = 1.0+power^2 -- текуща¤ частота дыхани¤ от 30 до 120 циклов в минуту local expirt = 0.3 local breathpower = 3 local delta = (time_global()-blurlt)/1000 local phase = (time_global()-blurcyctime)/1000 blurlt = time_global() if phase>period then phase = phase%period blurcyctime = blurlt-phase*1000 end if blurlastphase>phase then blurlastphase = 0 end local blurdelta = delta*-0.7 if blurlastphase<expirt and phase<expirt then blurdelta = blurdelta+(phase-blurlastphase)*breathpower elseif blurlastphase<expirt then blurdelta = blurdelta+(expirt-blurlastphase)*breathpower end blurlastphase = phase blurval = blurval+blurdelta if blurval>0.999 then blurval = 0.999 elseif blurval<0 then blurval = 0 end local tm = math.floor(blurval*3) local tmn = (tm+1) local v = blurval*3-math.floor(blurval*3) v = 1-v local v1 = 1-v if tm~= 0 then blurs[tm]:SetColor(GetARGB(v*255,255,255,255)) end if tmn~= 0 then blurs[tmn]:SetColor(GetARGB(v1*255,255,255,255)) end for i = 1,4 do if i == tm or i == tmn then blurs:SetWndRect(rect.x,rect.y,rect.w,rect.h) else blurs:SetWndRect(rect.x,rect.y,0,0) end endend local con_fov = get_console():get_float("fov") or 67.5function set_zoom_stretchy_rect() local zoom = con_fov/device().fov zoom = (zoom-1)*1.5+1 if zoom<1.001 then zoom = 1.001 end local stretchy = 0.75/(math.floor(device().aspect_ratio*1000)/1000) if stretchy<1 then stretchy = 1 end local rect = {x = -768*zoom+768,y = (-512*zoom+512)*stretchy-(stretchy-1)*300,w = 1024*zoom,h = 768*zoom*stretchy} return rectend function set_flag_dirt(param) flag_dirt = paramendfunction replace_dirt_phase() local armor = db.actor:item_in_slot(6) if armor then local armor_custom = set_get_armor_custom(2) if armor_custom ~= "none|none|none" then mask_clearing() local t = vergas_lib.str_explode("|",armor_custom,true) local number_dirt_phase = tonumber(t[2]) number_dirt_phase = number_dirt_phase - lua_random(2) if number_dirt_phase < 1 then number_dirt_phase = 1 end armor_custom = t[1].."|"..tostring(number_dirt_phase).."|0" set_get_armor_custom(1,armor_custom) else vergas_lib.s_play("device\\masks\\water_flask",5) end else vergas_lib.s_play("device\\masks\\water_flask",5) endend function mask_clearing() vergas_lib.s_play("device\\masks\\mask_"..lua_random(1,5),1) schedule.add("clean_end", "vergas_masks.mask_clean_end()", 1500) end function mask_clean_end() level.add_pp_effector("black_off_slowly.ppe", 2121, false) schedule.add("cleaned_end", "vergas_masks.mask_cleaned_end()", 4000) schedule.add("flask_end", "sak.restore_weap()", 9000) end function mask_cleaned_end() used_items.set_get_flag_use_gadget(1,true) flag_dirt = false mask_old = "?" end function fill_flask() local i,j,k local flag_fill = false local portions_of_water = vergas_lib.set_pr_from_config("flask_army","portions_of_water") level.disable_input() bind_stalker.hide_weapon() for i,k in pairs(sak_inventory.rucksack) do if i == "flask_army" or i == "flask_army_on_belt" then for j = 1, table.getn(k) do local d_custom = tonumber(vergas_flask.set_get_flask_custom(2,k[j])) --if d_custom ~= portions_of_water then vergas_flask.set_get_flask_custom(1,k[j],tostring(portions_of_water)) vergas_flask.replace_flask_weight(k[j],tostring(portions_of_water)) flag_fill = true --end end end end if flag_fill then vergas_lib.s_play([[ambient\waterflow]],1) timers.start_timer("fill_timer",14,"vergas_masks.end_fill_timer()") --запускаю таймер sak.send_tip(game.translate_string("fill_flask_1"),game.translate_string("fill_flask_2"), 1, 10, "g_g", "sak", "sky_blue") else sak.send_tip(game.translate_string("fill_flask_3"),game.translate_string("fill_flask_4"), 1, 10, "g_g", "sak", "red") vergas_lib.s_play([[device\masks\water_no]],1) bind_stalker.restore_weapon() level.enable_input() endend function end_fill_timer() bind_stalker.restore_weapon() vergas_lib.s_play([[device\masks\water_ok]],1) level.enable_input()end Изменено 5 сентября пользователем zub2608 1 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zub2608 17 Опубликовано 6 сентября Кому надо увеличить шанс на разведения костра смотрим файл, gamedata\scripts\binders\bind_physic_object Спойлер local rnd = 40 -- базовый шанс разжечь костёр, if black_tip.have_black_tip() then rnd = 30 если у игрока есть "чёрная метка", шанс снижается до 30%. rnd = rnd - (10 + (level.rain_factor() * 10)) -- если идёт дождь шанс уменьшается на 10% rnd = rnd + 8 -- если игрок находится под землёй, шанс увеличивается. на 8% правим как вам надо, незабываем сказать спасибо мелочь но приятно. 1 1 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
TimSoier 25 Опубликовано 6 сентября (изменено) 6 часов назад, zub2608 сказал: Кому надо увеличить шанс на разведения костра смотрим файл, gamedata\scripts\binders\bind_physic_object инструкция (Скрыть контент) !!! Спасибо !!! мелочь но приятно.....👌 Изменено 6 сентября пользователем TimSoier 2 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Awolf51 0 Опубликовано 7 сентября (изменено) У кого-нибудь на последней версии работает спавнер? Я уже и файлом в папку "mods", и геймдатой пробовал, ни один из вариантов не работает (другие правки при этом работают (остальные правки удалял перед попыткой заставить работать спавнер)) Я тупой, скачал спавнер из сообщения alexey61rostov, а не по ссылке из оп-поста. Всё работает. Изменено 7 сентября пользователем Awolf51 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Кефир 1 059 Опубликовано 7 сентября Правки не требуют обновления, к повторному скачиванию ничего не подлежит. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zub2608 17 Опубликовано 8 сентября (изменено) Укреплённая маска: тестил на обновление от 06.09 для папки mods ссылка: https://disk.yandex.ru/d/X8ki5hxGMYqOdQ Не упакованная gamedata: ссылка: https://disk.yandex.ru/d/eGr-ZiN-_nkM1g Спойлер Снизил урон по маске примерно в четыре раза, убрал запотевание маски, все костюмы с противогазами маски должны медленней загрязнятся, примерно полная грязь должна наступить через четыре часа, кто хочет увеличить время до полной грязи меняйте цифры в строке в оригинале, lua_random(4, 8) на допустим lua_random(140, 160) очень долго будет чистой. Снизил порог для появления трещин, теперь когда маска повреждена на 60% появляются царапины, трещины появятся если маска повреждена на 70% Убрал шатание камеры при попадание в голову, меченый не роняет оружие на землю крепко держит в руках. Порционные мед препараты: все аптечки на две порции, кошачий глаз и таблетки снотворного на 10 порций, все порционные предметы имеют % строку состояния, тестил на обновление от 06.09 снизил эффект после применения мед препаратов, теперь после применения мед препаратов эффект длится пять секунд, в оригинале эффект длился на протяжение действия мед препаратов упакованная для папки mods ссылка: https://disk.yandex.ru/d/BeztURXdF79I4w не упакованная gamedata ссылка: https://disk.yandex.ru/d/j8jft5wGKz-ukg Спойлер Переместил аптечки с файла allcore_hide в файл vergas_medical_elastic в скрипте логику не менял только добавил блок для антирада и аптечек. Старую ссылку на порционные мед препараты удалил так как гг отказывался в маске применять аптечку и просил снять маску, такое поведение было обусловлено тем что аптечки я поместил allcore_hide в функцию food_data и поэтому игра считала что это еда и гг просил снять маску, теперь всё работает корректно. Кто скачал прошлый файл удалите его и замените этим. в файле items снижен вес для всех предметов, кому это не нужно правьте на своё усмотрение но строка eat_portions_num должна остаться как в скаченом файле, порции привязаны через скрипт говорим спасибо мелочь но приятно 😊 Изменено 14 сентября пользователем zub2608 3 1 3 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
twohands 0 Опубликовано 8 сентября zub2608 спасибо большое тебе ! Но правка на медикаменты не знаю почему конфликтует с пнв патч последний от 06 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zub2608 17 Опубликовано 8 сентября (изменено) в файле items от 06.09 Спойлер для антирада, eat_portions_num = 2 для всех аптечек eat_portions_num = 2 для таблеток eat_portions_num = 10 и сохрани с заменой, должно помочь, наверно в обновление правили файл items/ Изменено 8 сентября пользователем zub2608 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
twohands 0 Опубликовано 8 сентября (изменено) zub2608 у меня упакованная версия я не распоковывал кидал уде готовый так что отредактировать не могу Изменено 8 сентября пользователем twohands Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zub2608 17 Опубликовано 8 сентября twohands Ок завтра упакую Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zub2608 17 Опубликовано 9 сентября (изменено) twohands Порционные мед препараты от 06.09 ссылка: https://disk.yandex.ru/d/FDlS3VYkafFGuA попробуй, отпишись потом норм или нет, у меня нет ещё пнв 🤣 Изменено 9 сентября пользователем zub2608 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
twohands 0 Опубликовано 9 сентября Благодарю сегодня вечером чекну) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Новис 60 Опубликовано 10 сентября В 08.09.2025 в 17:28, zub2608 сказал: Укреплённая маска: тестил на обновление от 31.08 для папки mods ссылка: https://disk.yandex.ru/d/X8ki5hxGMYqOdQ Не упакованная gamedata: ссылка: https://disk.yandex.ru/d/eGr-ZiN-_nkM1g описание (Показать контент) Снизил урон по маске примерно в четыре раза, убрал запотевание маски, все костюмы с противогазами маски должны медленней загрязнятся, примерно полная грязь должна наступить через четыре часа, кто хочет увеличить время до полной грязи меняйте цифры в строке в оригинале, lua_random(4, 8) на допустим lua_random(140, 160) очень долго будет чистой. Снизил порог для появления трещин, теперь когда маска повреждена на 60% появляются царапины, трещины появятся если маска повреждена на 70% Убрал шатание камеры при попадание в голову, меченый не роняет оружие на землю крепко держит в руках. Порционные мед препараты: все аптечки на две порции, кошачий глаз и таблетки снотворного на 10 порций, все порционные предметы имеют % строку состояния, тестил на обновление от 31.08 снизил эффект после применения мед препаратов, теперь после применения мед препаратов эффект длится пять секунд, в оригинале эффект длился на протяжение действия мед препаратов упакованная для папки mods ссылка: https://disk.yandex.ru/d/BeztURXdF79I4w не упакованная gamedata ссылка: https://disk.yandex.ru/d/j8jft5wGKz-ukg описание (Показать контент) Переместил аптечки с файла allcore_hide в файл vergas_medical_elastic в скрипте логику не менял только добавил блок для антирада и аптечек. Старую ссылку на порционные мед препараты удалил так как гг отказывался в маске применять аптечку и просил снять маску, такое поведение было обусловлено тем что аптечки я поместил allcore_hide в функцию food_data и поэтому игра считала что это еда и гг просил снять маску, теперь всё работает корректно. Кто скачал прошлый файл удалите его и замените этим. в файле items снижен вес для всех предметов, кому это не нужно правьте на своё усмотрение но строка eat_portions_num должна остаться как в скаченом файле, порции привязаны через скрипт говорим спасибо мелочь но приятно 😊 Всё равно этот грёб.. противогаз загрезняется.Можно конкретно где на загрезнения править где на укрепления маски? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
zub2608 17 Опубликовано 10 сентября Новис Читай описание, там нет слов что грязь отключена и есть как увеличить время до загрязнения, если и это тебе не помагает ищи строчку local base_dirt = 24 и ставь какое хочешь время, для каждого костюма с маской их там три вида. Для укрепления маски ищи функцию function on_actor_before_hit(obj, hd) и правь как твоей душе угодно что бы ГРЁБА не случалось. Если у тебя установлены правки которые затрагивают файл vergas_masks то надо сделать слияние что бы правка работала. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
sza9788@gmail.com 0 Опубликовано 11 сентября В 03.08.2025 в 15:09, Кефир сказал: Читает... и не даёт сохраняться. Такой вот античит. Кефир доброго! Что-бы распакованная геймдата нормально работала надо удалить папку со скриптами и всё будет ок. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты