sleep: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Removed erroneous note.....sleep does work in 1.08, you cannot use it with SQS and you must launch with execVM.)
No edit summary
 
(70 intermediate revisions by 15 users not shown)
Line 1: Line 1:
{{Command|= Comments
{{RV|type=command
____________________________________________________________________________________________


| arma |= Game name
|game1= arma1
|version1= 1.00


|1.00|= Game version
|game2= arma2
____________________________________________________________________________________________
|version2= 1.00


| Suspend execution of [[Function]] or [[SQF_syntax|SQF]] [[Script]] for given time in seconds. |= Description
|game3= arma2oa
____________________________________________________________________________________________
|version3= 1.50


| '''sleep''' delay |= Syntax
|game4= tkoh
|version4= 1.00


|p1= delay: [[Number]] |= Parameter 1
|game5= arma3
|version5= 0.50


| [[Nothing]] |= Return value
|gr1= Program Flow
____________________________________________________________________________________________
 
|x1= <pre>sleep 0.5;</pre> |= Example 1
____________________________________________________________________________________________


| [[Control Structures]] |= See also
|descr= Suspends code execution for given [[time]] in seconds. The sleep precision is given by a framerate, the delay given is the minimal delay expected. Must be called inside of a context which is interruptible, i.e. a [[Script Handle|script]] executed by [[execVM]] or [[spawn]].
{{Feature | Informative |
* this command will suspend the code for '''''at least''''' the given amount of time, and can be way more if the [[Scheduler|script scheduler]] is busy.
* this command will suspend the script as the game gets paused in single player (and will resume with it). To avoid this, use [[uiSleep]].
}}
 
|s1= [[sleep]] delay
 
|p1= delay: [[Number]] - in seconds. Negative values will not be considered.
 
|r1= [[Nothing]]
 
|x1= <sqf>
0 spawn {
sleep 5;
hint "after (at least) 5 seconds...";
};
</sqf>
 
|x2= <sqf>
sleep 5 + random 10; // incorrect - will only sleep for 5 seconds, as it will be interpreted as (sleep 5) (+(random 10))
sleep (5 + random 10); // correct
</sqf>
 
|seealso= [[time]] [[uiSleep]] [[waitUntil]] [[canSuspend]] [[execVM]] [[spawn]] [[sleep vs uiSleep]] [[Control Structures]]
}}
 
{{Note
|user= CrashDome
|timestamp= 20061220205300
|text= Sleep suspends both SQF functions and SQF scripts. In functions, the calling script is still in suspension due to waiting for a return from the [[call]] command. The game engine will continue, however. See [[Function]] for more detail.
}}


{{Note
|user= Kronzky
|timestamp= 20070212201600
|text= Sleep durations between .0005 and .02 will cause the same delay (roughly .02 seconds).<br>
Delays of .0005 and less have '''no''' effect (i.e, the sleep call will return immediately).
}}
}}


<h3 style="display:none">Notes</h3>
{{Note
<dl class="command_description">
|user= Sbsmac
<!-- Note Section BEGIN -->
|timestamp= 20070213223200
<dd class="notedate">Posted on December 20, 2006 - 19:53</dd>
|text= The comment above is a little misleading. The game engine appears to work by processing frames and then checking to see whether scripts are available to execute.
<dt class="note">'''[[User:CrashDome|CrashDome]]'''</dt><dd class="note">Sleep suspends both SQF functions and SQF scripts. In functions, the calling script is still in suspension due to waiting for a return from the [[call]] command. The game engine will continue, however. See [[Function]] for more detail.</dd>
Sleep causes the script/function to be suspended until at least the specified time has elapsed.
<dd class="notedate">Posted on February 12, 2007 - 20:16</dd>
To wait for the next frame, or give other scripts a chance to run, use Sleep 0.001.  
<dt class="note">'''[[User:Kronzky|Kronzky]]'''</dt><dd class="note">Sleep durations between .0005 and .02 will cause the same delay (roughly .02 seconds).<br>Delays of .0005 and less have '''no''' effect (ie, the sleep call will return immediately).</dd>
}}
<dt class="note">'''[[User:Sbsmac|Sbsmac]]'''</dt><dd class="note">The comment above is a little misleading. The game engine appears to work by processing frames and then checking to see whether scripts are available to execute. Sleep causes the script/function to be suspended until at least the specified time has elapsed. To wait for the next frame, or give other scripts a chance to run, use Sleep 0.001. </dd>
<dd class="notedate">Posted on July 16, 2007 - 00:13</dd>
<!-- Note Section END -->
</dl>


<h3 style="display:none">Bottom Section</h3>
{{Note
[[Category:Scripting Commands|SLEEP]]
|user= Inkompetent
[[Category:Scripting Commands ArmA|SLEEP]]
|timestamp= 20070616001300
|text= For scripts called by the [[Arma 3: Event Handlers#Init|Init Event Handler]] the first sleep command will suspend the script at the briefing screen at the start of a mission. The script will continue after the briefing screen, when actually "in game".
}}

Latest revision as of 18:40, 26 December 2024

Hover & click on the images for description

Description

Description:
Suspends code execution for given time in seconds. The sleep precision is given by a framerate, the delay given is the minimal delay expected. Must be called inside of a context which is interruptible, i.e. a script executed by execVM or spawn.
  • this command will suspend the code for at least the given amount of time, and can be way more if the script scheduler is busy.
  • this command will suspend the script as the game gets paused in single player (and will resume with it). To avoid this, use uiSleep.
Groups:
Program Flow

Syntax

Syntax:
sleep delay
Parameters:
delay: Number - in seconds. Negative values will not be considered.
Return Value:
Nothing

Examples

Example 1:
0 spawn { sleep 5; hint "after (at least) 5 seconds..."; };
Example 2:
sleep 5 + random 10; // incorrect - will only sleep for 5 seconds, as it will be interpreted as (sleep 5) (+(random 10)) sleep (5 + random 10); // correct

Additional Information

See also:
time uiSleep waitUntil canSuspend execVM spawn sleep vs uiSleep Control Structures

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note
CrashDome - c
Posted on Dec 20, 2006 - 20:53 (UTC)
Sleep suspends both SQF functions and SQF scripts. In functions, the calling script is still in suspension due to waiting for a return from the call command. The game engine will continue, however. See Function for more detail.
Kronzky - c
Posted on Feb 12, 2007 - 20:16 (UTC)
Sleep durations between .0005 and .02 will cause the same delay (roughly .02 seconds).
Delays of .0005 and less have no effect (i.e, the sleep call will return immediately).
Sbsmac - c
Posted on Feb 13, 2007 - 22:32 (UTC)
The comment above is a little misleading. The game engine appears to work by processing frames and then checking to see whether scripts are available to execute. Sleep causes the script/function to be suspended until at least the specified time has elapsed. To wait for the next frame, or give other scripts a chance to run, use Sleep 0.001.
Inkompetent - c
Posted on Jun 16, 2007 - 00:13 (UTC)
For scripts called by the Init Event Handler the first sleep command will suspend the script at the briefing screen at the start of a mission. The script will continue after the briefing screen, when actually "in game".