[LUA] OBS Studio Start/Stop Replay

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

C-подобный:
local obs = obslua
local ffi = require("ffi")

ffi.cdef[[
    bool Beep(uint32_t dwFreq, uint32_t dwDuration);
]]

local is_manual_reset = false
local hotkey_id = obs.OBS_INVALID_HOTKEY_ID

function restart_replay_buffer()
    obs.timer_remove(restart_replay_buffer)
    
    if not obs.obs_frontend_replay_buffer_active() then
        obs.obs_frontend_replay_buffer_start()
        ffi.C.Beep(800, 150)
    end
    
    is_manual_reset = false
end

function on_event(event)
    if event == obs.OBS_FRONTEND_EVENT_REPLAY_BUFFER_STOPPED then
        if is_manual_reset then
            obs.timer_add(restart_replay_buffer, 100)
        end
    end
end

function reset_trigger(pressed)
    if not pressed then return end

    if obs.obs_frontend_replay_buffer_active() then
        is_manual_reset = true
        ffi.C.Beep(300, 100)
        obs.obs_frontend_replay_buffer_stop()
    else
        obs.obs_frontend_replay_buffer_start()
        ffi.C.Beep(800, 150)
    end
end

function script_load(settings)
    obs.obs_frontend_add_event_callback(on_event)
    hotkey_id = obs.obs_hotkey_register_frontend("manual_replay_reset", "Сбросить буфер (без сохранения)", reset_trigger)
    
    local hotkey_save_array = obs.obs_data_get_array(settings, "manual_replay_reset")
    obs.obs_hotkey_load(hotkey_id, hotkey_save_array)
    obs.obs_data_array_release(hotkey_save_array)
end

function script_save(settings)
    local hotkey_save_array = obs.obs_hotkey_save(hotkey_id)
    obs.obs_data_set_array(settings, "manual_replay_reset", hotkey_save_array)
    obs.obs_data_array_release(hotkey_save_array)
end

function script_description()
    return "Сбрасывает буфер повтора горячей клавишей без записи файла на диск."
end
 
Назад
Сверху