Перейти к контенту

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


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

@ASSASIN64 поскольку файл bind_stalker.script у тебя модифицирован относительно оригинала, очевидно, что правки, предложенные для оригинала, надо применять не в лоб, а учитывая имеющиеся модификации, с умом.

В данном случае, если не ошибаюсь, функция должна стать такой:

function actor_binder:take_item_from_box(box, item)
    -- здесь переделываем исходную функцию так, чтобы не выходить из неё, если нет story_id (иначе на "обычных" ящиках не сработает)
    local story_id = box:story_id()
    if story_id ~= nil then
        -- здесь вместо оригинального treasure_manager (вызывает вылет) вставляем строку из модифицированного файла
        self.am:call( "on_take_from_box", box, item, sim:object( item:id() ) )
    end

    -- проверяем, что контейнер, из которого брали предметы, стал пустым
    if box:is_inv_box_empty() then
        -- получаем активное окно и закрываем его
        local inv = level.main_input_receiver()
        if inv ~= nil then
            level.start_stop_menu(inv)
        end
    end
end

 

  • Полезно 2

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

Ссылка на комментарий
1 час назад, Kirgudu сказал:

В данном случае, если не ошибаюсь, функция должна стать такой:

Работает, вылета нет., спасибо!

 

Одно "но": работает только с ящиком.

При шмоне трупа окошко не закрывается...

Изменено пользователем ASSASIN64
Ссылка на комментарий
12 часов назад, ASSASIN64 сказал:

При шмоне трупа окошко не закрывается...

А вот здесь сложнее, по крайней мере в оригинале. Модифицированные и расширенные движки, возможно, содержат нужный функционал, но это коллегам по цеху виднее, я не в курсе.

В оригинале отсутствует коллбэк на взятие предмета из контейнеров, отличных от инвентарных ящиков, в том числе из трупов. Можно завязаться на событие callback.on_item_take, но оно не передаёт сведения об источнике предмета, а значит мы не можем сразу проверить, пуст исходный контейнер или ещё содержит в себе что-то.
Получается, что необходимо при открытии любого контейнера (не ящика) предварительно запоминать, какой именно объект открыт. Для трупов монстров это можно сделать, например, в модуле bind_monster.script по событию callback.use_object, для трупов сталкеров аналогичные действия, скорее всего, можно произвести в модуле xr_motivator.script по такому же событию.
Что-то такое в голове вырисовывается, хотя не исключаю, что есть способ проще.
В любом случае это уже простор для самостоятельных дополнительных изысканий.

  • Полезно 4

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

Ссылка на комментарий
11 часов назад, Kirgudu сказал:

А вот здесь сложнее,

Как то совсем просто делалось, именно через таймер... Вот не помню вообще, для какого мода, где обсуждали, но правочка заработала сразу и прижилась, как родная, будто там и была всегда. Если вспомню - обязательно сюда выложу.

  • Спасибо 1
Ссылка на комментарий

Всем привет!
Ребят, возник такой вопрос: где и как исправить формулу расчёта точности стрельбы НПС в зависимости от ранга?!
Пояснение: вопрос возник после просмотра видео. В нём рассказывается об этом недочёте в игре (Таймкод для видео: 10:47) но не дается подсказок, касающихся исправления этого недочёта.
Заранее благодарю за ваши ответы!

Странная штука - Жизнь. Она продолжается, даже когда превращается в выживание.

Ссылка на комментарий
19 часов назад, Kirgudu сказал:

А вот здесь сложнее...

В любом случае это уже простор для самостоятельных дополнительных изысканий.

Нашёл. В ОП2.2 делалось, в файле key_handlers.script

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

-- автозакрытие окна "взять все"
    ["car_body_take_all"]={
        func=function()
            if game_is_running() then
                timer("run", 0.1, "level.start_stop_menu(level.main_input_receiver(), true)")
            end
        end
    }

Как и куда это приживить в Радиофобии 3 - понятия не имею. Поможите, люди добрые!

Автор правки dotvet

Ссылка на комментарий

OGSR.

@ASSASIN64 , ориентируйся на примеры использования вызовов для добавленных в движок коллбэков на работу с клавишами:

	self.object:set_callback(callback.on_key_press, self.on_key, self)			-- нажатие клавиши
	self.object:set_callback(callback.on_key_release, self.on_key_free, self)		-- отпускание клавиши
	self.object:set_callback(callback.on_key_hold, self.on_key_hold, self)		-- удержание клавиши

И вот туда свой таймер.

  • Полезно 1
Ссылка на комментарий
10 часов назад, Капрал Хикс сказал:

@Anikot , в движке.

А можно как - нибудь поменять предел ранга НПС в конфигах или же в скриптах с 1000 до 100 дабы НПС не могли поднимать свой ранг выше 100?!
Или всё это так или иначе задаётся в движке игры?

Странная штука - Жизнь. Она продолжается, даже когда превращается в выживание.

Ссылка на комментарий

@Anikot , теоретически (я думал о таком костыле) можно в конфигах порезать всем ранг, поделив на 10 и посмотреть как будет расти меткость. А вот повышение ранга НПС явно в движке, вряд ли получится ограничение задать без него. Знающие пусть поправят...

Upd. с костылём выше значения рангов тоже менять придётся в скриптах.

Изменено пользователем Капрал Хикс
  • Спасибо 1
  • Полезно 1
Ссылка на комментарий

Братцы! Подскажите, как можно (и можно ли вообще), увеличить радиус каста пламени у огненных полтергеев? спасибо!)

God save Hatsune Miku!

Ссылка на комментарий

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

Ссылка на комментарий

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

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...