obs = obslua local wait_time = 7200 -- Wait 2 hours before checks local idle_time = 120 -- Wait for any input in the last 2 minutes function script_description() return "Automatically restarts the replay buffer when IDLE" end function script_load() ffi = require("ffi") ffi.cdef[[ void start_hook(void); void stop_hook(void); int last_time_input_received(void); ]] monitor = ffi.load(script_path() .. "monitor.dll") obs.timer_add(check_restart, wait_time * 1000) end function script_unload() obs.timer_remove(check_restart) obs.timer_remove(check_idle) end function check_restart() monitor.start_hook() obs.timer_add(check_idle, idle_time * 1000) end function check_idle() local current_time = os.time() local last_input_time = monitor.last_time_input_received() if current_time - last_input_time >= wait_time then monitor.stop_hook() obs.timer_remove(check_idle) restart_replay_buffer() end end function restart_replay_buffer() obs.obs_frontend_replay_buffer_stop() obs.timer_add(start_replay_buffer, 2000) end function start_replay_buffer() obs.timer_remove(start_replay_buffer) obs.obs_frontend_replay_buffer_start() end