Перейти к содержанию
Кефир

Правочная по NLC Improved

Рекомендуемые сообщения

 

banner-pravki-nlc-improved.png

Просим, спрашиваем, модифицируем самостоятельно — всё это здесь и по NLC Improved.

↓↓↓

Тема оригинального мода здесь
https://ap-pro.ru/forums/topic/12275-nlc-improved

↑↑↑

Основа, актуальный патч, некоторые разрешённые дополнения именно там.

Все патчи мода (Google Drive)


Таблица по планам в реализации:  image.png

Если вы устанавливаете правки, то лишаетесь технической поддержки на официальном сервере в Discord.


Спойлер

Спавн-меню/Спавнер (для обновления от 31.08.2025):

Спойлер

aYXLbZ2.png


А как установить?

      Закинуть папку mods в папку с игрой. Проверить работоспособность поможет красная надпись в главном меню.

————————————————
Необходимое окно открывается в главном меню на клавишу S.
————————————————

Источник: https://ap-pro.ru/forums/topic/12275-nlc-improved/?do=findComment&comment=472963
Спасибо пользователю alexey61rostov (https://ap-pro.ru/profile/177355-alexey61rostov) за публикацию!
(самый точный источник взятого вы увидите в самом меню, спасибо его авторам!)

Из своих изменений:

  • Изменил путь до звука, чтобы при нажатии кнопки спавна была рабочая звуковая индикация произошедшего;
  • Сменил клавишу активации для того, чтобы учесть все виды клавиатур.

Сохранения где угодно (для обновления от 31.08.2025):

Спойлер

aYXLbZ2.png


Я не знаю насколько это работоспособная штуковина на перспективу дальнейшего прохождения игры, но вот. ¯\_(ツ)_/¯

——————————————————————————————————————————————————————————————————————————

                 РЕКОМЕНДОВАНО НЕ СОХРАНЯТЬСЯ РЯДОМ С СИДОРОВИЧЕМ! ВЫСОК ШАНС ЕГО ИСЧЕЗНОВЕНИЯ!

——————————————————————————————————————————————————————————————————————————

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_*, где * — цифра/число), сохранения через отдельные варианты с указанием дня, времени и локации (День *. **-**. названиелокации, где * — номер дня, **-** — игровое время) и через специальное меню в главном меню при загруженной игре.

Быстрое открытие рюкзака (для обновления от 31.08.2025):

Спойлер

aYXLbZ2.png


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 в папке с игрой (если таковой не имеется, то создайте её вручную).

————————————————

Таким образом активируется возможность быстрее открыть рюкзак.

Увеличенный объём ящика (для обновления от 31.08.2025):

Спойлер

aYXLbZ2.png


ПРИ БОЛЬШОМ КОЛИЧЕСТВЕ ПРЕДМЕТОВ В ЯЩИКЕ ИГРА НАЧИНАЕТ СЪЕДАТЬ ОПЕРАТИВНУЮ ПАМЯТЬ!

———————————————————————————————————————————

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 в папке с игрой (если таковой не имеется, то создайте её вручную).

————————————————

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

Увеличенный шанс выпадения частей мутантов (для обновления от 31.08.2025):

Спойлер

aYXLbZ2.png


Если что-то не устраивает, то снизу будет, насколько это возможно, всё подробно расписано.

————————————————

Изменения относительно оригинальных файлов:

• Кровосос (все вариации):
   — 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 в папке с игрой (если таковой не имеется, то создайте её вручную).

————————————————

Таким образом активируется увеличенный шанс выпадения частей мутантов.

Отключение порчи частей мутантов (для обновления от 31.08.2025):

Спойлер

aYXLbZ2.png


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 в папке с игрой (если таковой не имеется, то создайте её вручную).

————————————————

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

Отключение порчи артефактов (для обновления от 31.08.2025):

Спойлер

aYXLbZ2.png


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 в папке с игрой (если таковой не имеется, то создайте её вручную).

————————————————

Таким образом отключается порча артефактов.

 


Спойлер

Пока что нечего тестировать...

Спойлер

ПДА Крота через клавишу в главном меню:

Спойлер

aYXLbZ2.png


Файл по ссылке необходимо переместить в папку mods (если таковой нет, то создать её).

  1. Зайдите в игру, загрузите нужное сохранение;
  2. После загрузки сохранения выйдите в главное меню и нажмите F1;
  3. Затем зайдите обратно в игру и проверьте инвентарь — в нём должно появиться два таких ПДА. Один оставьте, другой утилизируйте любым удобным вам способом.

Возвращение возможности абузить снотворное перед сном:

Спойлер

aYXLbZ2.png


Файл по ссылке необходимо переместить в папку mods (если таковой нет, то создать её).


Источник

Возвращение возможности использования 2D КПК в Лесной Чаще (для обновления от 14.08.2025):

Спойлер

aYXLbZ2.png


Файл по ссылке необходимо переместить в папку mods (если таковой нет, то создать её).


Источник

Уменьшенное время на реализацию действий у НПС:

Спойлер

aYXLbZ2.png


Файл по ссылке необходимо переместить в папку mods (если таковой нет, то создать её).


  • Зарядка ПДА: 5 минут
  • Вскрытие капсул: 15 минут

Источник

 

 

Изменено пользователем Кефир
  • Лайк 8
  • Мастер! 3
  • Хабар 2
  • Клоун 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Подскажите как убрать загрезнения противогаза и поломку его.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
В 01.09.2025 в 23:07, Кефир сказал:

Всё должно работать, кроме частей монстров.

Что это значит , кроме частей монстра ? Не будут выпадать . 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
1 час назад, Tyrob сказал:

Что это значит , кроме частей монстра ? Не будут выпадать . 

Правка «Увеличенный шанс выпадения частей мутантов» не будет работать для новой версии мода от 31.08.2025.

Если всё ещё непонятно, то отпишите.

  • Хабар 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
15 минут назад, Кефир сказал:

Правка «Увеличенный шанс выпадения частей мутантов» не будет работать для новой версии мода от 31.08.2025.

Если всё ещё непонятно, то отпишите.

Всё понял Спасибо за разъяснения  .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Всем привет. Подскажите кто шарит, где можно поправить, чтобы Сидор покупал любой хлам и не только? А то одно покупает а другое нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

vedinov.2023 нигде

  • Пост еще тот... 1
  • Хабар 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
2 часа назад, vedinov.2023 сказал:

Всем привет. Подскажите кто шарит, где можно поправить, чтобы Сидор покупал любой хлам и не только? А то одно покупает а другое нет.

gamedata\config\misc\shop_sidor

  • Жму руку 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

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

  • Отключение порчи частей мутантов.
  • Лайк 1
  • Сталкерский лайк 1
  • Спасибо 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Увеличение количества спичек в коробке.  Путь: gamedata\scripts\binders\bind_physic_object,  ищем local max_cnt_use = 5 -- кол-во спичек в коробке. Меняем на нужную цифру.
Далее путь: gamedata\scripts\ui\ui_inv_descr, ищем total_matches = total_matches + (5 - cnt) в обоих файлах цифры должны совпадать.


Дополнено 20 минуты спустя
В 03.09.2025 в 10:23, Новис сказал:

Подскажите как убрать загрезнения противогаза и поломку его.

В файле, vergas_masks.script


Дополнено 2 минуты спустя

Все аптечки на две порции включая антирад, кошачий глаз и снотворное на 10 порций.

Ссылка: https://disk.yandex.ru/d/mWGf0TwF_JPzqw

Скачанный файл поместить в папку mods

Спойлер

Аптечки  кошачий глаз и снотворное реализованы через папку, scripts файл, allcore_hide там же пытался реализовать антирад у меня не получилось, пришлось реализовать через, scripts\vergas\vergas_medical_elastic, важно антирад который был до правки в рюкзаке не будет работать на две порции пока не появится новый, остальное у меня подхватилось.

Снижен до пяти секунд эффект после применения  мед препаратов, в оригинале эффект был привязан на всё время лечения медикаментов, реализовано в файле, vergas_medical_elastic.

В папке, config\misc\items  снижен вес у всех предметов, если кому это не надо, правьте как вам надо, но что бы порционность работала, в секции [antirad]:identity_immunities должна бы строка,  max_uses    = 2   а так же для всех аптечек ,  eat_portions_num  = 2  и соответственно для таблеток  eat_portions_num    = 10

 

 

 

Изменено пользователем zub2608
  • Мастер! 1
  • Спасибо 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
2 часа назад, zub2608 сказал:

В файле, vergas_masks.script

Если не сложно, можно конкретней какие строки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
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
    end
end

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 -1
end


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,combez
end

function allcore_mask_is_on()
    local mask, armor = mask_definition()
    if mask_on_off and mask ~= "?" then return true end
    return false
end

-- 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()
    end
end

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
    end
end

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)
end
end


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
    end
end

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 100
end

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_s
end
function get_flag_mask()
    return mask_on_off
end

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 = false
end
function on_off_mask_eye()
    level.add_pp_effector("black_q.ppe", 1237, false)
end
function 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
    end
end

--[=[]]
local d_fov = 67.49
function 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
    end
end
--]=]
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
    end
end

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    
    end
end

local con_fov = get_console():get_float("fov") or 67.5
function 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 rect
end

function set_flag_dirt(param)
    flag_dirt = param
end
function 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)
    end
end

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()
    end
end

function end_fill_timer()
    bind_stalker.restore_weapon()
    vergas_lib.s_play([[device\masks\water_ok]],1)
    level.enable_input()
end
 

Изменено пользователем zub2608
  • Мастер! 1
  • Спасибо 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Кому надо увеличить шанс на разведения костра смотрим файл, 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
6 часов назад, zub2608 сказал:

Кому надо увеличить шанс на разведения костра смотрим файл, gamedata\scripts\binders\bind_physic_object

  инструкция (Скрыть контент)

 

 

!!! Спасибо !!!  мелочь но приятно.....👌

2016944991_.thumb.jpg.f74d7609a15426819fa60c3800447172.jpg

Изменено пользователем TimSoier
  • Спасибо 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   1 пользователь онлайн