Difference between revisions of "Lua:createTimer"
Jump to navigation
Jump to search
Mr millchick (talk | contribs) (Created page with "Category:Lua '''function''' createTimer(''owner'' OPTIONAL, ''enabled'' OPTIONAL) : '''Timer''' '''function''' createTimer(''interval'', ''callback'', ''...'' OPTIONAL) :...") |
m (Added related function template.) |
||
| (2 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
[[Category:Lua]] | [[Category:Lua]] | ||
| − | '''function''' createTimer(''owner'' | + | {{CodeBox|'''function''' createTimer(''owner'', ''enabled'') ''':''' Timer}} |
| + | {{CodeBox|'''function''' createTimer(''interval'', ''callback'', ''...'') ''':''' Timer}} | ||
| − | + | Creates a [[Lua:Class:Timer|Timer]] object. | |
| − | + | This function has two calling modes. The first mode creates a persistent timer that keeps running until it is disabled or destroyed. The second mode creates a one-shot timer that executes a callback once and then destroys itself. | |
| − | + | ===Function Parameters=== | |
| − | + | ====Persistent Timer==== | |
| + | {{CodeBox|'''function''' createTimer(''owner'', ''enabled'') ''':''' Timer}} | ||
| − | + | {|width="85%" cellpadding="10%" cellspacing="0" border="0" | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | {|width="85%" cellpadding="10 | ||
!align="left"|Parameter | !align="left"|Parameter | ||
!align="left"|Type | !align="left"|Type | ||
| − | !style="width: 80%;" align="left"|Description | + | !style="width: 80%;background-color:white;" align="left"|Description |
|- | |- | ||
|owner | |owner | ||
| − | |Component or nil | + | |Component or nil (optional) |
| − | | | + | |The owner of the timer. When the owner is destroyed, the timer is destroyed too. Pass nil or omit this parameter for a standalone timer. |
|- | |- | ||
|enabled | |enabled | ||
| − | | | + | |Boolean (optional) |
| − | | | + | |If true, the timer starts enabled. If false, the timer is created disabled. |
|} | |} | ||
| − | === | + | ====One-Shot Timer==== |
| + | {{CodeBox|'''function''' createTimer(''interval'', ''callback'', ''...'') ''':''' Timer}} | ||
| − | {|width="85%" cellpadding="10 | + | {|width="85%" cellpadding="10%" cellspacing="0" border="0" |
!align="left"|Parameter | !align="left"|Parameter | ||
!align="left"|Type | !align="left"|Type | ||
| − | !style="width: 80%;" align="left"|Description | + | !style="width: 80%;background-color:white;" align="left"|Description |
|- | |- | ||
|interval | |interval | ||
| − | | | + | |Integer |
| − | | | + | |The delay in milliseconds before the callback is executed. |
|- | |- | ||
|callback | |callback | ||
| − | | | + | |Function |
| − | | | + | |The function to execute when the timer fires. |
|- | |- | ||
|... | |... | ||
| − | | | + | |Any (optional) |
| − | | | + | |Additional arguments that are passed to the callback function. |
|} | |} | ||
| + | ===Returns=== | ||
| + | Timer — The created [[Lua:Class:Timer|Timer]] object. | ||
| − | == | + | ===Calling Modes=== |
| − | + | {|width="85%" cellpadding="10%" cellspacing="0" border="0" | |
| − | === | + | !align="left"|Mode |
| − | + | !align="left"|Syntax | |
| − | + | !style="width: 80%;background-color:white;" align="left"|Description | |
| − | + | |- | |
| − | + | |Persistent Timer | |
| − | + | |createTimer(owner, enabled) | |
| − | + | |Creates a timer that fires repeatedly until it is disabled or destroyed. | |
| − | + | |- | |
| − | + | |One-Shot Timer | |
| − | + | |createTimer(interval, callback, ...) | |
| − | + | |Creates a timer that fires once, executes the callback, and then destroys itself. | |
| − | + | |} | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | ===Persistent Timer Example=== | |
| − | + | <syntaxhighlight lang="lua" line> | |
| − | + | local timer = createTimer(nil, false) | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | timer.Interval = 1000 | |
| − | + | timer.OnTimer = function(sender) | |
| − | + | print("Tick: " .. os.date("%H:%M:%S")) | |
| − | + | end | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | timer.Enabled = true | |
| − | + | </syntaxhighlight> | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | ===Timer With Owner Example=== | ||
| + | <syntaxhighlight lang="lua" line> | ||
| + | local form = createForm() | ||
| + | form.Caption = "Timer Example" | ||
| − | === | + | local timer = createTimer(form) |
| + | timer.Interval = 500 | ||
| + | timer.OnTimer = function(sender) | ||
| + | form.Caption = "Time: " .. os.date("%H:%M:%S") | ||
| + | end | ||
| − | + | form.show() | |
| − | + | </syntaxhighlight> | |
| − | |||
| − | |||
| − | + | ===Stopping A Persistent Timer=== | |
| − | + | <syntaxhighlight lang="lua" line> | |
| − | + | local timer = createTimer() | |
| − | + | timer.Interval = 1000 | |
| − | |||
| − | |||
| − | |||
| − | + | local count = 0 | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | timer.OnTimer = function(sender) | |
| − | + | count = count + 1 | |
| − | + | print("Count: " .. count) | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | if count >= 10 then | |
| − | + | sender.Enabled = false | |
| − | + | sender.destroy() | |
| − | + | end | |
| − | + | end | |
| − | + | </syntaxhighlight> | |
| − | |||
| + | ===One-Shot Timer Example=== | ||
| + | <syntaxhighlight lang="lua" line> | ||
| + | createTimer(2000, function() | ||
| + | print("Executed after 2 seconds") | ||
| + | end) | ||
| + | </syntaxhighlight> | ||
| − | === | + | ===One-Shot Timer With Parameters=== |
| + | <syntaxhighlight lang="lua" line> | ||
| + | local name = "Player" | ||
| + | local health = 100 | ||
| − | + | createTimer(1500, function(playerName, hp) | |
| − | + | print(playerName .. " health: " .. hp) | |
| − | + | end, name, health) | |
| − | + | </syntaxhighlight> | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | ===Delayed Form Update Example=== | |
| − | + | <syntaxhighlight lang="lua" line> | |
| − | + | local form = createForm() | |
| − | + | form.Caption = "Loading..." | |
| − | + | form.show() | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | createTimer(2000, function() | |
| − | + | form.Caption = "Ready!" | |
| − | + | end) | |
| − | + | </syntaxhighlight> | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | ===Notes=== | |
| − | + | * The interval is specified in milliseconds. | |
| − | + | * A value of 1000 means one second. | |
| − | + | * Persistent timers keep firing until disabled or destroyed. | |
| − | + | * One-shot timers destroy themselves after the callback has executed. | |
| − | + | * Do not manually destroy a one-shot timer after it has fired. | |
| − | + | * Use an owner such as a form or getMainForm() when the timer should be cleaned up automatically. | |
| − | + | * Timer callbacks execute in Cheat Engine's main thread. | |
| − | + | * Timer accuracy depends on system load and the operating system timer resolution. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | ===Common Mistakes=== | ||
| + | ====Destroying One-Shot Timers==== | ||
| + | One-shot timers destroy themselves automatically after firing. Usually, you should create them and let them run. | ||
| − | = | + | <syntaxhighlight lang="lua" line> |
| + | createTimer(1000, function() | ||
| + | print("This one-shot timer destroys itself") | ||
| + | end) | ||
| + | </syntaxhighlight> | ||
| − | + | ====Forgetting To Destroy Persistent Timers==== | |
| − | + | Persistent timers should either have an owner or be destroyed manually when no longer needed. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| + | <syntaxhighlight lang="lua" line> | ||
| + | local timer = createTimer(getMainForm()) | ||
| − | + | timer.Interval = 1000 | |
| − | + | timer.OnTimer = function(sender) | |
| − | + | print("This timer is owned by the main form") | |
| − | + | end | |
| − | + | </syntaxhighlight> | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
{{LuaSeeAlso}} | {{LuaSeeAlso}} | ||
| − | + | {{Creation}} | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Latest revision as of 23:55, 26 June 2026
Creates a Timer object.
This function has two calling modes. The first mode creates a persistent timer that keeps running until it is disabled or destroyed. The second mode creates a one-shot timer that executes a callback once and then destroys itself.
Contents
Function Parameters[edit]
Persistent Timer[edit]
| Parameter | Type | Description |
|---|---|---|
| owner | Component or nil (optional) | The owner of the timer. When the owner is destroyed, the timer is destroyed too. Pass nil or omit this parameter for a standalone timer. |
| enabled | Boolean (optional) | If true, the timer starts enabled. If false, the timer is created disabled. |
One-Shot Timer[edit]
| Parameter | Type | Description |
|---|---|---|
| interval | Integer | The delay in milliseconds before the callback is executed. |
| callback | Function | The function to execute when the timer fires. |
| ... | Any (optional) | Additional arguments that are passed to the callback function. |
Returns[edit]
Timer — The created Timer object.
Calling Modes[edit]
| Mode | Syntax | Description |
|---|---|---|
| Persistent Timer | createTimer(owner, enabled) | Creates a timer that fires repeatedly until it is disabled or destroyed. |
| One-Shot Timer | createTimer(interval, callback, ...) | Creates a timer that fires once, executes the callback, and then destroys itself. |
Persistent Timer Example[edit]
1 local timer = createTimer(nil, false)
2
3 timer.Interval = 1000
4 timer.OnTimer = function(sender)
5 print("Tick: " .. os.date("%H:%M:%S"))
6 end
7
8 timer.Enabled = true
Timer With Owner Example[edit]
1 local form = createForm()
2 form.Caption = "Timer Example"
3
4 local timer = createTimer(form)
5 timer.Interval = 500
6 timer.OnTimer = function(sender)
7 form.Caption = "Time: " .. os.date("%H:%M:%S")
8 end
9
10 form.show()
Stopping A Persistent Timer[edit]
1 local timer = createTimer()
2 timer.Interval = 1000
3
4 local count = 0
5
6 timer.OnTimer = function(sender)
7 count = count + 1
8 print("Count: " .. count)
9
10 if count >= 10 then
11 sender.Enabled = false
12 sender.destroy()
13 end
14 end
One-Shot Timer Example[edit]
1 createTimer(2000, function()
2 print("Executed after 2 seconds")
3 end)
One-Shot Timer With Parameters[edit]
1 local name = "Player"
2 local health = 100
3
4 createTimer(1500, function(playerName, hp)
5 print(playerName .. " health: " .. hp)
6 end, name, health)
Delayed Form Update Example[edit]
1 local form = createForm()
2 form.Caption = "Loading..."
3 form.show()
4
5 createTimer(2000, function()
6 form.Caption = "Ready!"
7 end)
Notes[edit]
- The interval is specified in milliseconds.
- A value of 1000 means one second.
- Persistent timers keep firing until disabled or destroyed.
- One-shot timers destroy themselves after the callback has executed.
- Do not manually destroy a one-shot timer after it has fired.
- Use an owner such as a form or getMainForm() when the timer should be cleaned up automatically.
- Timer callbacks execute in Cheat Engine's main thread.
- Timer accuracy depends on system load and the operating system timer resolution.
Common Mistakes[edit]
Destroying One-Shot Timers[edit]
One-shot timers destroy themselves automatically after firing. Usually, you should create them and let them run.
1 createTimer(1000, function()
2 print("This one-shot timer destroys itself")
3 end)
Forgetting To Destroy Persistent Timers[edit]
Persistent timers should either have an owner or be destroyed manually when no longer needed.
1 local timer = createTimer(getMainForm())
2
3 timer.Interval = 1000
4 timer.OnTimer = function(sender)
5 print("This timer is owned by the main form")
6 end