Comprehensive Stopwatch & Countdown Timer

OBS Lua Comprehensive Stopwatch & Countdown Timer Relinked

TIMER PLUGIN

Version 5
Release 1 July 2023


The Script is a plugin written in the lua coding language which is designed specifically to be embedded in the Open Broadcaster Software application.

Completely customizable timer format & display

Stopwatch 4.gif


Stopwatch.gif


Feature Overview

This plugin is designed to be highly customizable and versatile, making it suitable for a wide range of scenarios and user preferences. Here are a some of the features this plugin have to offer.
  • Supports Duplication: The plugin can be duplicated and used to run multiple instances simultaneously.
  • Customizable Timer Format & Display: The timer format and display are completely customizable, allowing for various configurations.
  • Count Up: The plugin can count time upwards.
  • Count Down: The plugin can count time downwards.
  • Real-Time Count Inversion: The plugin can change the counter direction in real-time.
  • Countdown Components: The plugin supports counting down in days, hours, minutes, seconds, and milliseconds.
  • Specific Date & Time Countdown: The plugin supports counting down to a specific date and time.
  • Toggle Visibility of Split Seconds: Triggered by Hotkey or timestamp to show/hide the split seconds.
  • Events when Timer Expires: Provides powerful functionality.
  • Create a Stopwatch: Features to mark laps and intervals.
  • Start Timer from Specific Timestamp: The plugin can be started from a specific timestamp.
  • Autoload Last Saved Timestamp: The plugin can autoload the last saved timestamp on startup.
  • Cycle Through Source List: The plugin can cycle through a defined source list based on a timer.
  • Cycle Through Nested Sources: The plugin can cycle through sources that are placed in a defined group or nested scene based on a timer.
  • Cycle Through Scene List: The plugin can cycle through a defined scene list based on a timer.
  • Switch to Specific Scene when Timer Expires: The plugin can switch to a specific scene when the timer expires.
  • Play a Media Source at Specified Time: The plugin can play up to two media sources at a specified time.
  • Play a Media Source when Timer Expires: The plugin can play a media source when the timer expires.
  • Change Timer Text Color: The plugin can change the timer text color at a specified time and allows defining two color changes.
  • Enable Visibility on Another Text Source: The plugin can enable visibility on another text source at a specified time.
  • Start Recording at Specified Time: The plugin can start recording at a specified time.
  • Custom Message on Timer Expiry: The plugin can display a custom message when the timer expires.
  • Custom Timer Prefix/Suffix: The plugin allows defining a custom prefix or suffix for the timer.
  • Start Timer on Text Source Visibility: The plugin can start the timer when the Timer Text Source becomes visible.
  • Start Timer on Scene Activation: The plugin can start the timer when the scene with the Timer Text Source becomes active.
  • Export Script Settings: The plugin allows exporting script settings for backup or quick setup.
  • Import Script Settings: The plugin allows importing previously saved script settings.
  • Add/Subtract Seconds: The plugin can add or subtract seconds to/from the timer.
  • Assign Minute Unit Format: The plugin allows assigning a minute format to create a 90-minute timer or any length Minute timer.
  • Assign Hour Unit Format: The plugin allows assigning a hour format to override the default 24 hour timer to any length Hour timer.
  • Debug Logging: Create a local file for debugging issues.
  • Dedicated Buttons: Ability to split the 'Start' and 'Pause' button
  • Hotkey Support: The plugin supports hotkeys for starting, pausing, resetting, split-time, toggling milliseconds, changing time direction, and adding/subtracting time.
  • Disable Unwanted Features: Ability to completely remove unwanted features.

PLUGIN DESIGN OVERVIEW:


To ensure an optimal user experience, it's important to understand the distinction between two types of objectives some of the properties serve in the plugin UI: those that enhance the user experience and those that directly impact the core functionality and behaviour. Let's delve into these categories to help you navigate the plugin effortlessly.​

1687527880899.png


PROPERTIES FOR ENHANCING USER EXPERIENCE:

These properties focus on providing additional customization options and improving the overall usability of the plugin. While they don't directly affect the core functionality, they play a vital role in tailoring the plugin with a specific purpose.

Here's what you need to know:

The OBS Native UI interface can sometimes become cluttered when using plugins with complex configurability. To address this issue, this plugin has been designed to display or hide certain properties based on their relevance. It's important to understand that some properties, while relevant, are intentionally hidden to prevent an overwhelming amount of information. Therefore, it is crucial to carefully examine each property to determine if it reveals any extendable settings.​

Here are some Properties that will simplify or expand available properties:
1. Timer Settings
2. Marker Settings

1687767243269.png


PROPERTIES AFFECTING CORE FUNCTIONALITY AND BEHAVIOR:​

These properties directly impact how the plugin operates and can significantly influence its core functionality. Understanding and adjusting these settings will ensure the plugin behaves precisely as you intend.

Here's what you should consider:

The Plugin provide Timer focused functionality that can be configured for various scenarios.
The Plugin provides two modes, each with some unique features and some that overlap between the two modes.​

The Plugin modes are:
  • Count Up
  • Count Down
The plugin initializes with the Count Up mode as the default mode and with a Basic layout which expands to an Advanced layout.

The Basic layout hide additional properties that will only become available in the Advanced layout.

Switching between the Basic and Advanced layout has no impact on the features or any defined settings of the plugin, it only shows or hide properties in the Plugin Settings UI. This serves the purpose of removing clutter when only a simple layout is required. This solution was deployed because many of the features are not used by the average user and having it all displayed in a small area can be overwhelming. The downside is that it may create a sense that the settings are obscured or unintuitive.

Item​
PROPERTIES DESIGN​
Version​
Mode Available​
1​
  1. Timer Mode
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “Count Up”,
        2. “Count Down”.
      2. Use dynamic options: No,
      3. Default value: “Count Up”,
      4. On Change: “Hide or display relevant properties”.
0.2
2.0 (Expanded)​
Always
2​
  1. Layout
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “Basic”,
        2. “Advanced”,
      2. Use dynamic options: No,
      3. Default value: “Basic”,
      4. On Change: “Hide or display properties”.
2.0​
Always
3​
  1. Timer Settings
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “Hidden”,
        2. “Expanded”,
      2. Use dynamic options: No,
      3. Default value: “Hidden”,
      4. On Change: “Hide or display properties”.
4.2​
Always
4​
  1. Timer Source
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “Select”,
      2. Use dynamic options: Yes,
        1. List All available Names for Text Sources,
      3. Default value: “Select”,
      4. On Change: “”.
0.2​
Always
5​
  1. Count Down Type
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “Hours, Minutes, Seconds”,
        2. “Specific Date & Time”,
      2. Use dynamic options: No
      3. Default value: “Hours, Minutes, Seconds”,
      4. On Change: “Hide or display relevant properties”.
2.9​
Count Down
6​
  1. Day Text Format
    1. Type: Text input,
    2. Default value: “# Day”,
    3. On Change: “Updates Timer Display”.
2.9.1​
Count Down
7​
  1. Days Text Format
    1. Type: Text input,
    2. Default value: “ Days”,
    3. On Change: “Updates Timer Display”.
2.9.1​
Count Down
8​
  1. Month
    1. Type: Dropdown list,
      1. Available Static Options:
        1. "Select",
        2. " January",
        3. "February",
        4. "March"
        5. "April",
        6. "May",
        7. "June",
        8. "July",
        9. "August",
        10. "September",
        11. "October",
        12. "November",
        13. "December",
      2. Use dynamic options: No,
      3. Default value: “Select”,
      4. On Change: “Updates Timer Display”.
2.9​
Count Down
9​
  1. Year
    1. Type: Integer input,
    2. Default value: “2023”,
    3. On Change: “Updates Timer Display”.
2.9.1​
Count Down
10​
  1. Day
    1. Type: Integer input,
    2. Default value: “1”,
    3. On Change: “Updates Timer Display”.
2.9.1​
Count Down
11​
  1. Hours
    1. Type: Integer input,
    2. Default value: “0”,
    3. On Change: “Updates Timer Display”.
2.0​
Count Down
12​
  1. Minutes
    1. Type: Integer input,
    2. Default value: “0”,
    3. On Change: “Updates Timer Display”.
2.0​
Count Down
13​
  1. Seconds
    1. Type: Integer input,
    2. Default value: “0”,
    3. On Change: “Updates Timer Display”.
2.0​
Count Down
14​
  1. Timer Format
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “Display full format,
        2. “No leading zeros”,
        3. “No leading zeros, no split seconds”,
        4. “No split seconds”,
        5. “Custom”,
      2. Use dynamic options: No,
      3. Default value: “Display full format”,
      4. Conditional: If “Custom” is selected “Time Format” will be shown,
      5. On Change: “Hide or display relevant properties”.
3.0 (Expanded)
3.3 (Expanded)
4.8 (Expanded)
Always
15​
  1. Time Format
    1. Type: Text Input,
    2. Default value: “$T$D:$H:$M:$S,$F”,
    3. On Change: “Adjust timer display”.
    4. Support Instructions: Yes ( "{param}" )
4.8
5.6​
(Expanded)
Always
16​
  1. Toggle Milliseconds
    1. Type: Text Input,
    2. Default value: “”,
    3. On Change: “”.
3.9​
Count Down
17​
  1. Display
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “Show expired time stamp”,
        2. “Remove expired time stamp”,
      2. Use dynamic options: No,
      3. Default value: “Show expired time stamp”,
      4. On Change: “”.
3.9​
Count Down
deprecated 5.0​
18​
  1. Spit Source
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “Select”,
      2. “Use dynamic options: Yes”,
        1. List All available Names for Text Sources,
      3. Default value:” Select”,
      4. Conditional: If valid a Text Source is selected then “Split Type” will be shown,
      5. On Change: “Hide or display relevant properties”.
1.0​
Count Up
19​
  1. Split Type
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “Interval”,
        2. “Mark”,
        3. “Mark Interval”,
        4. “Interval Mark”,
      2. Default value: “Select”,
      3. On Change: “”.
1.0​
Count Up
20​
  1. Marker Settings
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “Hidden”,
        2. “Expanded”,
      2. Use dynamic options: No,
      3. Default value “Hidden”,
      4. On Change: “Hide or display relevant properties”.
4.2​
Always
21​
  1. Marker A Time
    1. Type: Editable list,
    2. On Change: “”.
2.0​
Always
22​
  1. Marker B Time
    1. Type: Editable list,
    2. On Change: “”.
2.0​
Always
23​
  1. Reset Marker A Text
    1. Type: Integer input,
    2. Default value: “3”,
    3. On Change: “”.
5.0​
Always
24​
  1. Reset Marker B Text
    1. Type: Integer input,
    2. Default value: “3”,
    3. On Change: “”.
5.0​
Always
25​
  1. Marker A Audio
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “None”,
        2. “Allow multiple selections”,
      2. Use dynamic options: Yes,
        1. List All available Names for Media Sources,
      3. Default value “None”,
      4. Conditional: "If 'Allow multiple selections' selected then 'Show/Hide Marker A Audio List' will be shown",
      5. On Change: “Show/Hide relevant properties”.
2.0​
Always
26​
  1. Marker A Audio List
    1. Type: Editable list,
    2. Use: Define Names for Media Sources,
    3. On Change: “”.
5.0​
Always
27​
  1. Marker B Audio
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “None”,
        2. “Allow multiple selections”,
      2. Use dynamic options: Yes,
        1. List All available Names for Media Sources,
      3. Default value “None”,
      4. Conditional: "If 'Allow multiple selections' selected then 'Show/Hide Marker B Audio List' will be shown",
      5. On Change: “Show/Hide relevant properties”.
2.0​
Always
28​
  1. Marker B Audio List
    1. Type: Editable list,
    2. Use: Define Names for Media Sources,
    3. On Change: “”.
5.0​
Always
29​
  1. Timer Expired Audio
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “None”,
      2. Use dynamic options: Yes,
      3. List All available Names for Media Sources,
      4. Default value “None”,
      5. On Change: “”.
4.2​
Count Down
30​
  1. Media Playback Limit
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “Enabled”,
        2. “Disabled”,
      2. Use dynamic options: No,
      3. Default value “Disabled”,
      4. On Change: “Show/Hide relevant properties and enable disable relevant features”.
2.0​
Always
31​
  1. Marker A Duration
    1. Type: Integer Slider,
    2. Default value: “5”,
    3. Conditional: Setting to 0 = disabled,
    4. On Change: “”.
2.0​
Always
32​
  1. Marker B Duration
    1. Type: Integer Slider,
    2. Default value: “5”,
    3. Conditional: Setting to 0 = disabled,
    4. On Change: “”.
2.0​
Always
33​
  1. End Audio Duration
    1. Type: Integer Slider,
    2. Default value: “5”,
    3. Conditional: Setting to 0 = disabled,
    4. On Change: “”.
4.2​
Count Down
34​
  1. Normal Colour
    1. Type: Colour Select,
    2. Default value: “#ffffff”,
    3. On Change: “”.
2.0​
Always
35​
  1. Marker A Colour
    1. Type: Colour Select,
    2. Default value: “#edf340”,
    3. On Change: “”.
2.0​
Always
36​
  1. Marker B Colour
    1. Type: Colour Select,
    2. Default value: “#5a0505”,
    3. On Change: “”.
2.0​
Always
37​
  1. Marker Notes
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “Enabled”,
        2. “Disabled”,
      2. Use dynamic options: No,
      3. Default value “Disabled”,
      4. On Change: “Hide or display relevant properties”.
3.2​
Always
38​
  1. Marker A Note Source
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “Select”,
      2. Use dynamic options: Yes,
        1. List All available Names for Text Sources,
        2. List All available Names for Group Sources, (all nested text sources will be used)
      3. Default value “Select”,
      4. On Change: “”.
3.2​
Always
39​
  1. Marker B Note Source
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “Select”,
      2. Use dynamic options: Yes,
        1. List All available Names for Text Sources,
        2. List All available Names for Group Sources, (all nested text sources will be used)
      3. Default value “Select”,
      4. On Change: “”.
3.2​
Always
40​
  1. Marker A Note
    1. Type: Text Input,
    2. Default value: “”,
    3. On Change: “”.
3.2​
Always
41​
  1. Marker B Note
    1. Type: Text Input,
    2. Default value: “”,
    3. On Change: “”.
3.2​
Always
42
  1. Hide Marker A Note
    1. Type: Integer Slider,
    2. Default value: “3”,
    3. Conditional: Setting to 0 = disabled,
    4. On Change: “”.
5.0​
Always
43
  1. Hide Marker B Note
    1. Type: Integer Slider,
    2. Default value: “3”,
    3. Conditional: Setting to 0 = disabled,
    4. On Change: “”.
5.0​
Always
44​
  1. Auto Recording
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “Disabled”,
        2. “Timer Start”,
        3. “Timer Expires”,
        4. “Timer Visible”,
        5. “Marker A Time”,
        6. “Marker B Time”,
      2. Use dynamic options: No,
      3. Default value “No”,
      4. On Change: “”.
2.0​
Always
45​
  1. Timer Prefix
    1. Type: Text Input,
    2. Default value: “”,
    3. On Change: “Update Timer prefix display”.
    4. Support Instructions: Yes ( "{param,param}" )
2.4​
Always
46​
  1. Timer Suffix
    1. Type: Text Input,
    2. Default value: “”,
    3. On Change: “Update Timer suffix display”.
    4. Support Instructions: Yes ( "{param,param}" )
3.0​
Always
47​
  1. Active Source
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “Select”,
      2. Use dynamic options: Yes,
        1. List All available Names for Text Sources,
      3. Default value “Select”,
      4. On Change: “”.
2.8​
Count Down
48​
  1. Timer Expire Event
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “Select”,
        2. “TIMER END TEXT”,
        3. “Source List”,
        4. “Scene List”,
        5. “Auto List”,
      2. Use dynamic options: No,
      3. Default value “Select”,
      4. Conditional: Expands features when timer expires, selected feature dependent,
      5. On Change: “Show/Hide relevant properties and enable disable relevant features”.
2.8
5.1 (Expanded)​
Count Down
49​
  1. Auto List
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “Select”,
      2. Use dynamic options: Yes,
        1. List All available Names for Group Sources, (all nested text sources will be used)
      3. Default value “Select”,
      4. On Change: “”.
5.1​
Count Down
50​
  1. Timer Expired Text
    1. Type: Text Input,
    2. Default value: “”,
    3. On Change: “Update Timer suffix display”.
2.0​
Count Down
51​
  1. Cycle List
    1. Type: Editable list,
      1. Use: Define Names for Sources,
      2. Conditional: “Will only allow the appropriate types, will disregard others”
      3. On Change: “”.
2.8​
Count Down
52​
  1. Cycle Direction
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “Ascending”,
        2. “Descending”,
      2. Use dynamic options: No,
      3. Default value “Ascending”,
      4. Conditional: ””,
      5. On Change: “”.
5.1 (Expanded)​
Count Down
53​
  1. Timer Manipulation
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “Hidden”,
        2. “Expanded”,
        3. “Disabled”,
      2. Use dynamic options: No,
      3. Default value “Disabled”,
      4. Conditional: Expands features,
      5. On Change: “Show/Hide relevant properties and enable disable relevant features”.

4.7​
Always
54​
  1. Add Seconds
    1. Type: Group,
    2. Name: Add seconds to timer,
      1. Group Item Name: Set 1,
      2. Type: Integer Input,
      3. Default value: “5”,
      4. Step: “15”,
      5. On Change: “”,
      6. Hotkey Available: Yes, must be assigned.
    3. Group Item Name: Set 2,
      1. Type: Integer Input,
      2. Default value: “15”,
      3. Step: “15”,
      4. On Change: “”,
      5. Hotkey Available: Yes, must be assigned.
    4. Group Item Name: Set 3,
      1. Type: Integer Input,
      2. Default value: “30”,
      3. Step: “15”,
      4. On Change: “”,
      5. Hotkey Available: Yes, must be assigned.
    5. Group Item Name: Limit,
      1. Type: Integer Input,
      2. Default value: “0”,
      3. Step: “1”,
      4. Conditional: Setting 0 = infinite,
      5. On Change: “”,
    6. Group Item Name: Used,
      1. Type: Integer Input,
      2. Default value: “0”,
      3. Step: “1”,
      4. On Change: “”,
    7. Group Item Name: Limit Note,
      1. Type: Dropdown list,
        1. Available Static Options:
          1. “Select”,
        2. Use dynamic options: Yes,
          1. List All available Names for Text Sources,
      2. Default value: “Select”,
      3. On Change: “”,
    8. Group Item Name: Refresh,
    9. Type: Button,
    10. On Click: “Refresh Properties”.
4.5
4.7 (Expanded)​
Always
55​
  1. Subtract Seconds
    1. Type: Group,
    2. Name: Subtract seconds from timer,
    3. Group Item Name: Set 1,
      1. Type: Integer Input,
      2. Default value: “5”,
      3. Step: “15”,
      4. On Change: “”,
      5. Hotkey Available: Yes, must be assigned.
    4. Group Item Name: Set 2,
      1. Type: Integer Input,
      2. Default value: “15”,
      3. Step: “15”,
      4. On Change: “”,
      5. Hotkey Available: Yes, must be assigned.
    5. Group Item Name: Set 3,
      1. Type: Integer Input,
      2. Default value: “30”,
      3. Step: “15”,
      4. On Change: “”,
      5. Hotkey Available: Yes, must be assigned.
    6. Group Item Name: Limit,
      1. Type: Integer Input,
      2. Default value: “0”,
      3. Step: “1”,
      4. Conditional: Setting 0 = infinite,
      5. On Change: “”,
    7. Group Item Name: Used,
      1. Type: Integer Input,
      2. Default value: “0”,
      3. Step: “1”,
      4. On Change: “”,
    8. Group Item Name: Limit Note,
      1. Type: Dropdown list,
        1. Available Static Options:
          1. “Select”,
        2. Use dynamic options: Yes,
          1. List All available Names for Text Sources,
        3. Default value: “Select”,
        4. On Change: “”,
    9. Group Item Name: Refresh,
      1. Type: Button,
      2. On Click: “Refresh Properties”.
4.5
4.7 (Expanded)​
Always
56​
  1. Manually set timer
    1. Type: Group,
    2. Group Item Name: HH,
      1. Type: Integer input,
      2. Default value: “0”,
      3. On Change: “”,
    3. Group Item Name: MM,
      1. Type: Integer input,
      2. Default value: ”0”,
      3. On Change: “”,
    4. Group Item Name: SS,
      1. Type: Integer input,
      2. Default value: ”0”,
      3. On Change: “”,
    5. Group Item Name: FF,
      1. Type: Integer input,
      2. Default value: ”0”,
      3. On Change: “”,
    6. Group Item Name: Autoload,
      1. Type: checkbox,
      2. Default value: unchecked,
      3. On Change: “”,
    7. Group Item Name: Set,
      1. Type: Button,
      2. On Click: “Apply settings to Timer”.
3.5​
Count Up
57​
  1. Start Timer
    1. Type: Button,
    2. On Click: “Activate Timer”.
    3. Hotkey Available: Yes, must be assigned.
    4. Available via Opt-In (see Split Start Pause Button)
5.1​
Always
conditional
58​
  • Start / Pause Timer
    1. Type: Button,
    2. On Click: “Activate / Stop Timer ”.
    3. Hotkey Available: Yes, must be assigned.
    4. Can be dedicated Pause only via Opt-In (see Split Start Pause Button)
5.1 (Expanded)​
Always
59​
  1. Split Time
    1. Type: Button,
    2. On Click: “Split Timer”.
    3. Hotkey Available: Yes, must be assigned.
1.0​
Count Up
60​
  1. Hide/Show Milliseconds
    1. Type: Button,
    2. On Click: “Toggle visibility for timer split seconds”.
    3. Hotkey Available: Yes, must be assigned.
3.9​
Count Down
61​
  1. Count Down/Count Up Direction Change
    1. Type: Button,
    2. On Click: “Toggle timer direction (positive/negative)”.
    3. Hotkey Available: Yes, must be assigned.
4.4​
Count Up
62​
  1. Reset Timer
    1. Type: Button.
    2. On Click: “Reset Timer to initial position”.
    3. Hotkey Available: Yes, must be assigned.
0.2​
Always
63​
  1. Set timer manually.
    1. Type: Checkbox,
    2. Default value: unchecked,
    3. On Click: “Display UI to adjust timer manually”.
3.2​
Count Up
64​
  1. Start Timer on Source Visible
    1. Type: Checkbox,
    2. Default value: unchecked,
    3. On Click: “Display Checkbox option to reset timer”.
2.0​
Always
65​
  1. Reset Timer on Source Visible
    1. Type: Checkbox,
    2. Default value: unchecked,
    3. On Click: “”.
2.0​
Always
66​
  1. Start Timer on Scene Active
    1. Type: Checkbox,
    2. Default value: unchecked,
    3. On Click: “Display Checkbox option to reset timer”.
3.8​
Always
67​
  1. Reset Timer on Scene Active
    1. Type: Checkbox,
    2. Default value: unchecked,
    3. On Click: “”.
4.6​
Always
68​
  1. Active Source Force Visibility
    1. Type: Checkbox,
    2. Default value: unchecked,
    3. On Click: “”.
3.9​
Count Down
69​
  1. Disable Script
    1. Type: Checkbox,
    2. Default value: unchecked,
    3. On Click: “Prevent Core Functions to execute”.
0.2​
Always
70​
  1. Enable Timer Direction
    1. Type: Checkbox,
    2. Default value: unchecked,
    3. On Click: “”.
4.4​
Count Up
71​
  1. Prevent Negative Time Value
    1. Type: Checkbox,
    2. Default value: unchecked,
    3. On Click: “”.
4.4​
Count Up
72​
  1. Backup Mode
    1. Type: Checkbox,
    2. Default value: unchecked,
    3. On Click: “Display Backup Mechanisms”.
3.3​
Always
73​
  1. Enable debug logging.
    1. Type: Checkbox,
    2. Default value: unchecked,
    3. On Click: “”.
5.0​
Always
74​
  1. Split Start Pause Button.
    1. Type: Checkbox,
    2. Default value: unchecked,
    3. On Click: “”.
5.1​
Always
75​
  1. Backup Folder
    1. Type: Checkbox,
    2. Default value: unchecked,
    3. On Click: “Reveal additional backup properties”.
3.3​
Always
76​
  1. Load Settings
    1. Type: Dropdown list,
      1. Available Static Options:
        1. “No Files Selected” OR “Auto Import [ select file ]” (Conditional),
      2. Use dynamic options: Yes,
        1. List Names of all available files that are valid in directory,
      3. Conditional: If valid files are available in select directory path,
      4. On Select: “(when valid filename is selected) Import and apply all property settings from the selected file”,
      5. Default value: “No Files Selected”.
3.3​
Always
77​
  1. Export Settings
    1. Mode Displayed: Always,
    2. Type: Button,
    3. On Click: “Export current property settings to ‘json’ file”.
3.3​
Always
78​
  1. Disable Features
    1. Type: Group,
    2. Name: Split Seconds Toggle,
      1. Group Item
      2. Type: Checkbox,
      3. Default value: checked,
      4. On Click: “”.
    3. Name: Timer Time Split/Lap,
      1. Group Item
      2. Type: Checkbox,
      3. Default value: checked,
      4. On Click: “”
    4. Name: Marker Settings,
      1. Group Item
      2. Type: Checkbox,
      3. Default value: checked,
      4. On Click: “”.
    5. Name: Text Color [Normal],
      1. Group Item
      2. Type: Checkbox,
      3. Default value: checked,
      4. On Click: “”.
    6. Name: Text Color [Marker A],
      1. Group Item
      2. Type: Checkbox,
      3. Default value: checked,
      4. On Click: “”.
    7. Name: Text Color [Marker B],
      1. Group Item
      2. Type: Checkbox,
      3. Default value: checked,
      4. On Click: “”.
    8. Name: Recording,
      1. Group Item
      2. Type: Checkbox,
      3. Default value: checked,
      4. On Click: “”.
    9. Name: Timer Text Prefix,
      1. Group Item
      2. Type: Checkbox,
      3. Default value: checked,
      4. On Click: “”.
    10. Name: Timer Text Suffix,
      1. Group Item
      2. Type: Checkbox,
      3. Default value: checked,
      4. On Click: “”.
    11. Name: Timer Manipulation,
      1. Group Item
      2. Type: Checkbox,
      3. Default value: checked,
      4. On Click: “”.
    12. Name: Debugging,
      1. Group Item
      2. Type: Checkbox,
      3. Default value: checked,
      4. On Click: “”.
      5. Name: Backup,
        1. Group Item
        2. Type: Checkbox,
        3. Default value: checked,
        4. On Click: “”.
5.1​
Always

  1. Video tutorial: Download and install the Script
  2. Getting started with a basic Count Up timer
  3. Exploring advanced features for a Count Up timer.
  4. Getting started with a basic Count Down timer
  5. Exploring advanced features for a Count Down timer [Tutorial Coming Soon]
  6. Exploring advanced features for any timer mode [Tutorial Coming Soon]
Author
GrumpyDog
Downloads
76,195
Views
101,272
First release
Last update
Rating
4.72 star(s) 18 ratings

More resources from GrumpyDog

Latest updates

  1. Relinked

    Relinked
  2. Version 5.9

    Thank you @RobertWilliams, @rez1coder and @goods0ul for your valuable feedback and help on the...
  3. Version 5.8

    Thank you Sweboy for your valuable feedback and help on the bugs and issues related to this...

Latest reviews

Incredibly flexible plugin. Does everything I could want and more.
This plugin is great, My original intention was to track Zone Time for 3 different Areas during my e-sports broadcasts.

The only QoL feature that would make this perfect for me would be to have a designated 'Pause Timer' hotkey.
That way I can pause the other timers while I start the other one.

There's already designated hotkeys for 'Start' & 'Reset' but there isn't one for specifically 'Pause'
GrumpyDog
GrumpyDog
Pretty sure there is. There is a feature to "Split Pause / Start" allowing for a dedicated "Start" and "Pause" hotkey.
Very powerful script. The Split Time triggering and tracking has been a god send when tweaking my advance scene switcher macros to next level. TY.
You left no stone unturned. Amazing script with all the features anyone could hope for :)
Amazing program! I just want to know how to access the "Autoload Last Saved Timestamp" in version 5.8! I'm doing a charity stream for a total of 30 hours, so I'd like to be able to resume the count up to the 30-hour goal when I start my stream the next time, instead of manually having to adjust it every stream, since I'll be streaming multiple days in a row.
Hi

Great script so far. 5 stars if you could add more timers. Need 2 extra timers with separate count and connect to textbox in obs.

Streaming handball and want to have a timer for xx:xx tíme since last goal, for both teams, and the main counter free for other things.
GrumpyDog
GrumpyDog
Then you owe me another star because it is already possible. Simply duplicate the Script and give it a unique name and add it in the script index with the first one. You can add several scripts if your system can support it. Check the Main Description page, it includes some links for video tutorials.
Thanks for this easy-to-customize stopwatch! Also nice are the comprehensive YouTube tuts on installation and settings.
GrumpyDog
GrumpyDog
Thank you. Planning to do more vids on this in the future.
Amazing work ! Many great features ..
GrumpyDog
GrumpyDog
Thank you for the feedback (:
Best timer out there with a lot of features.
If you can add the feature to count up infinite hour instead of only 24, that would be nice!
GrumpyDog
GrumpyDog
Available from version 5.6.
Best timer out there! Includes * a LOT * of options. Developer responds to issues quickly. Amazing!
GrumpyDog
GrumpyDog
Thank you!
Top