obs = obslua hotkey_id = obs.OBS_INVALID_HOTKEY_ID is_clear_replay_on_save = true is_start_replay_on_hotkey = true is_clear_replay = false ---------------------------------------------------------- function restart_replay_buffer() if obs.obs_frontend_replay_buffer_active() then is_clear_replay = true obs.obs_frontend_replay_buffer_stop() elseif is_start_replay_on_hotkey then obs.obs_frontend_replay_buffer_start() end end function on_event(event, data) if is_clear_replay and event == obs.OBS_FRONTEND_EVENT_REPLAY_BUFFER_STOPPED then obs.timer_add(obs.obs_frontend_replay_buffer_start, 1) elseif is_clear_replay and event == obs.OBS_FRONTEND_EVENT_REPLAY_BUFFER_STARTING then obs.timer_remove(obs.obs_frontend_replay_buffer_start) is_clear_replay = false elseif is_clear_replay_on_save and event == obs.OBS_FRONTEND_EVENT_REPLAY_BUFFER_SAVED then restart_replay_buffer() end end function on_hotkey(pressed) if pressed then restart_replay_buffer() end end ---------------------------------------------------------- -- A function named script_update will be called when settings are changed function script_update(settings) is_clear_replay_on_save = obs.obs_data_get_bool(settings, "restart_replay_buffer.is_clear_replay_on_save") is_start_replay_on_hotkey = obs.obs_data_get_bool(settings, "restart_replay_buffer.is_start_replay_on_hotkey") end -- Called to retrieve a description string to be displayed to the user in the Scripts window function script_description() return "Adds \"Restart Replay Buffer\" hotkey to settings. When triggered, restarts the Replay Buffer." end function script_properties() local props = obs.obs_properties_create() obs.obs_properties_add_bool(props, "restart_replay_buffer.is_start_replay_on_hotkey", "Hotkey also starts Replay Buffer if off.") obs.obs_properties_add_bool(props, "restart_replay_buffer.is_clear_replay_on_save", "\"Save Replay\" also restarts Replay Buffer.") return props end function script_defaults(settings) obs.obs_data_set_default_bool(settings, "restart_replay_buffer.is_clear_replay_on_save", true) obs.obs_data_set_default_bool(settings, "restart_replay_buffer.is_start_replay_on_hotkey", true) is_clear_replay_on_save = true is_start_replay_on_hotkey = true end -- A function named script_load will be called on startup function script_load(settings) obs.obs_frontend_add_event_callback(on_event) hotkey_id = obs.obs_hotkey_register_frontend("restart_replay_buffer.trigger", "Restart Replay Buffer", on_hotkey) local hotkey_save_array = obs.obs_data_get_array(settings, "restart_replay_buffer.trigger") obs.obs_hotkey_load(hotkey_id, hotkey_save_array) obs.obs_data_array_release(hotkey_save_array) end -- A function named script_save will be called when the script is saved -- -- NOTE: This function is usually used for saving extra data (such as in this -- case, a hotkey's save data). Settings set via the properties are saved -- automatically. function script_save(settings) local hotkey_save_array = obs.obs_hotkey_save(hotkey_id) obs.obs_data_set_array(settings, "restart_replay_buffer.trigger", hotkey_save_array) obs.obs_data_array_release(hotkey_save_array) end