sleep: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (updated note)
m (Some wiki formatting)
 
(50 intermediate revisions by 6 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 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]].
|game3= arma2oa
<br><br>Note that this command will suspend the script indefinitely if game simulation is paused in SP. To avoid this, use [[uiSleep]]. |= Description
|version3= 1.50
____________________________________________________________________________________________


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


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


| [[Nothing]] |= Return value
|gr1= Program Flow
____________________________________________________________________________________________
 
|x1= <code>[] [[spawn]] {[[sleep]] 5; [[hint]] "after 5 sec..."};</code> |= Example 1
____________________________________________________________________________________________


| [[uiSleep]], [[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= [[uiSleep]] [[waitUntil]] [[canSuspend]] [[execVM]] [[spawn]] [[sleep vs uiSleep]] [[Control Structures]]
}}
}}


<h3 style="display:none">Notes</h3>
{{Note
<dl class="command_description">
|user= CrashDome
<!-- Note Section BEGIN -->
|timestamp= 20061220205300
<dd class="notedate">Posted on December 20, 2006 - 19:53
|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.
<dt class="note">'''[[User:CrashDome|CrashDome]]'''<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 class="notedate">Posted on February 12, 2007 - 20:16
<dt class="note">'''[[User:Kronzky|Kronzky]]'''<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).
<dt class="note">'''[[User:Sbsmac|Sbsmac]]'''<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 class="notedate">Posted on July 16, 2007 - 00:13
<dt class="note">'''[[User:Inkompetent|Inkompetent]]'''<dd class="note">For scripts called by the [[Armed_Assault:_EventHandlers_List#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".
<!-- Note Section END -->
</dl>


<h3 style="display:none">Bottom Section</h3>
{{Note
[[Category:Scripting Commands|SLEEP]]
|user= Kronzky
[[Category:Scripting Commands ArmA|SLEEP]]
|timestamp= 20070212201600
[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
|text= Sleep durations between .0005 and .02 will cause the same delay (roughly .02 seconds).<br>
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
Delays of .0005 and less have '''no''' effect (i.e, the sleep call will return immediately).
[[Category:Scripting_Commands_Take_On_Helicopters|{{uc:{{PAGENAME}}}}]]
}}


<!-- CONTINUE Notes -->
{{Note
<dl class="command_description">
|user= Sbsmac
<dd class="notedate">Posted on July 12, 2014 - 13:41 (UTC)</dd>
|timestamp= 20070213223200
<dt class="note">'''[[User:SilentSpike|SilentSpike]]'''</dt>
|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.
<dd class="note">
Sleep causes the script/function to be suspended until at least the specified time has elapsed.
Sleep will treat negative values as if they were 0. (Tested in Arma 3 v1.22)
To wait for the next frame, or give other scripts a chance to run, use Sleep 0.001.  
</dd>
}}
</dl>
<!-- DISCONTINUE Notes -->


<!-- CONTINUE Notes -->
{{Note
<dl class="command_description">
|user= Inkompetent
<dd class="notedate">Posted on October 18, 2014 - 21:24 (UTC)</dd>
|timestamp= 20070616001300
<dt class="note">[[User:AgentRevolution|AgentRevolution]]</dt>
|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".
<dd class="note">
}}
For server scripts, if you are creating "while true" timers, it is best to use [[uiSleep]] instead, as the sleep from that command is not slowed down by simulation / server lag, so the timers will execute at intervals that are much closer to real time, even under heavy lag.
</dd>
</dl>
<!-- DISCONTINUE Notes -->
 
<!-- CONTINUE Notes -->
<dl class="command_description">
<dd class="notedate">Posted on May 29, 2015 - 02:59 (UTC)</dd>
<dt class="note">[[User:Waffle SS.|Waffle SS.]]</dt>
<dd class="note">
The '''sleep''' command will be ignored on JIP. This affects code/functions called from init.sqf or object initialization. It will simply ignore the command and continue through the code. Even if the function uses [[spawn]] to create a new process.
</dd>
</dl>
<!-- DISCONTINUE Notes -->

Latest revision as of 17:28, 5 April 2022

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:
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".