From 67708b83889c9a1a0b4cce565752fa38337ea476 Mon Sep 17 00:00:00 2001 From: Sergey Karmanov Date: Fri, 5 Feb 2021 02:04:29 +0300 Subject: [PATCH] Create realtime_clock.lua --- realtime_clock.lua | 73 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 realtime_clock.lua diff --git a/realtime_clock.lua b/realtime_clock.lua new file mode 100644 index 0000000..5f2da8b --- /dev/null +++ b/realtime_clock.lua @@ -0,0 +1,73 @@ +obs = obslua +source_name = "" +last_text = "" + +hotkey_id = obs.OBS_INVALID_HOTKEY_ID + +-- Function to set the time text +function set_time_text() + local time = os.date("*t") + local seconds = math.floor(time.sec) + local minutes = math.floor(time.min + seconds / 60.0) + local hours = math.floor(time.hour + (minutes * 60.0) / 3600.0) + local text = string.format("%02d:%02d:%02d", hours, minutes, seconds) + + if text ~= last_text then + local source = obs.obs_get_source_by_name(source_name) + if source ~= nil then + local settings = obs.obs_data_create() + obs.obs_data_set_string(settings, "text", text) + obs.obs_source_update(source, settings) + obs.obs_data_release(settings) + obs.obs_source_release(source) + end + end + + last_text = text +end + +function timer_callback() + set_time_text() +end + +function script_properties() + local props = obs.obs_properties_create() + local p = obs.obs_properties_add_list(props, "source", "Text Source", obs.OBS_COMBO_TYPE_EDITABLE, obs.OBS_COMBO_FORMAT_STRING) + local sources = obs.obs_enum_sources() + if sources ~= nil then + for _, source in ipairs(sources) do + source_id = obs.obs_source_get_unversioned_id(source) + if source_id == "text_gdiplus" or source_id == "text_ft2_source" then + local name = obs.obs_source_get_name(source) + obs.obs_property_list_add_string(p, name, name) + end + end + end + obs.source_list_release(sources) + + return props +end + +obs.obs_register_source(source_def) + +function script_description() + return "Sets a text source to act as a real time clock when the source is active.\n\nMade by serega404" +end + +-- A function named script_update will be called when settings are changed +function script_update(settings) + source_name = obs.obs_data_get_string(settings, "source") + enable_timer() +end + +function script_load(settings) + if source ~= nil then + enable_timer() + end +end + +function enable_timer() + print("Timer started") + set_time_text() + obs.timer_add(timer_callback, 1000) +end