Skip to content

Commit b71a040

Browse files
Corrected some SfTimer docs for SF
1 parent f05a910 commit b71a040

4 files changed

Lines changed: 45 additions & 23 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
The elapsed time computed by this command isn't affected by the Sftimer's current status. you might notice that the returned elapsed time value is still changing from time to time despite the SfTimer is currently paused.

sa/docs/SF_GET_TIMER_TIME_LEFT.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
The time left computed by this command isn't affected by the Sftimer's current status. you might notice that the returned time left value is still changing from time to time despite the SfTimer is currently paused.

sa/sa.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60872,7 +60872,7 @@
6087260872
"id": "0B43",
6087360873
"name": "SF_COMMAND_RETURN",
6087460874
"num_params": 0,
60875-
"short_desc": "Marks the end of a console command's callback or a chat command's callback. Used as its returning statement",
60875+
"short_desc": "Marks the end of a command callback. Used as its returning statement",
6087660876
"attrs": {
6087760877
"is_static": true
6087860878
},
@@ -68372,7 +68372,7 @@
6837268372
},
6837368373
"class": "SfTimer",
6837468374
"member": "Reset",
68375-
"short_desc": "Resets the SfTimer's countdown interval"
68375+
"short_desc": "Resets the expiration time of the SfTimer, restarting the trigger countdown"
6837668376
},
6837768377
{
6837868378
"input": [

sa/snippets/SAMPFUNCS/0C74.txt

Lines changed: 41 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
// This example demonstrates the entire SfTimer Class usage
2-
{$USE CLEO}
2+
{$CLEO}
33
{$USE SAMPFUNCS}
44
{$USE debug}
5+
{$USE bitwise}
56
NOP
67

78
Debugger.Enable()
@@ -12,9 +13,16 @@ int refIterations = 0
1213
//
1314

1415
// initialize SfTimers
15-
SfTimer enablerTimerObj // global SfTimer definition, to be used later
16-
SfTimer.Create(3500, @UnreferencedTimerCallback_DoSomething, 0) // don't retrieve the SfTimer handle, let's call it "UnrefTimer"
17-
SfTimer myTimerObj = SfTimer.Create(5000, @ReferencedTimerCallback_DoSomething) // myTimerObj now contains the handle of this newly created SfTimer
16+
SfTimer enablerTimerObj = 0 // 0 = undefined SfTimer, to be used later
17+
if not SfTimer.Create(2000, @UnreferencedTimerCallback_DoSomething, 0) // don't retrieve the SfTimer handle, let's call it "UnrefTimer"
18+
then Debugger.Trace("Failed to Create Unreferenced SfTimer")
19+
end
20+
SfTimer myTimerObj
21+
if not myTimerObj = SfTimer.Create(5000, @ReferencedTimerCallback_DoSomething) // myTimerObj now contains the handle of this newly created SfTimer
22+
then
23+
myTimerObj = 0 // 0 = undefined SfTimer
24+
Debugger.Trace("Failed to Create myTimerObj")
25+
end
1826
//
1927

2028
while true
@@ -31,31 +39,43 @@ while true
3139
end
3240

3341
:ReferencedTimerCallback_Enabler
34-
enablerTimerObj.Delete() // delete this temporary oneshot timer
35-
36-
float newInterval = Math.RandomFloatInRange(4000, 7000)
37-
var newInterval:int
38-
newInterval =# newInterval
39-
int elapsedTime = myTimerObj.GetElapsedTime()
40-
int timeLeft = myTimerObj.GetTimeLeft()
41-
Debugger.Trace("elapsedTime=%d timeLeft=%d", elapsedTime, timeLeft)
42-
myTimerObj.SetInteval(newInterval) // update myTimerObj's interval
43-
myTimerObj.Reset() // reset myTimerObj's interval
44-
myTimerObj.SetStatus(true) // resume myTimerObj
4542
Debugger.Trace("myTimerObj resumed")
46-
SF_COMMAND_RETURN // end of callback
43+
if enablerTimerObj <> 0 // SfTimer is defined
44+
then
45+
if not enablerTimerObj.Delete() // delete this temporary oneshot timer
46+
then Debugger.Trace("Failed to Delete enablerTimerObj")
47+
end
48+
else Debugger.Trace("myTimerObj is Undefined")
49+
end
50+
enablerTimerObj = 0 // 0 = undefined SfTimer
51+
int newInterval = Math.RandomIntInRange(4000, 7000)
52+
myTimerObj.Reset() // the timeStamp variable sometimes overshootof reset myTimerObj's interval
53+
myTimerObj.SetInterval(newInterval) // update myTimerObj's interval
54+
myTimerObj.Reset() // reset myTimerObj's interval again
55+
if not myTimerObj.SetStatus(true) // resume myTimerObj
56+
then Debugger.Trace("Failed to Resume myTimerObj")
57+
end
58+
Sf.CmdRet() // end of callback
4759

4860
:ReferencedTimerCallback_DoSomething
4961
refIterations++
5062
Debugger.Trace("Callback of myTimerObj with ID %X triggered %u times", myTimerObj, refIterations)
51-
if refIterations >= 5
63+
int isResumed = refIterations % 5
64+
if isResumed == false
5265
then
53-
enablerTimerObj = SfTimer.Create(3000, @ReferencedTimerCallback_Enabler) // temporarily create a oneshot timer
54-
Debugger.Trace("myTimerObj Paused for 3 seconds")
66+
if not myTimerObj.SetStatus(false) // pause myTimerObj
67+
then Debugger.Trace("Failed to Pause myTimerObj")
68+
end
69+
if not enablerTimerObj = SfTimer.Create(7000, @ReferencedTimerCallback_Enabler) // temporarily create a oneshot timer
70+
then
71+
myTimerObj = 0 // 0 = undefined SfTimer
72+
Debugger.Trace("Failed to Create enablerTimerObj")
73+
end
74+
Debugger.Trace("myTimerObj Paused for 7 seconds")
5575
end
56-
SF_COMMAND_RETURN // end of callback
76+
Sf.CmdRet() // end of callback
5777

5878
:UnreferencedTimerCallback_DoSomething
5979
unrefIterations++
6080
Debugger.Trace("UnrefTimer's Callback triggered %u times", unrefIterations)
61-
SF_COMMAND_RETURN // end of callback
81+
Sf.CmdRet() // end of callback

0 commit comments

Comments
 (0)