Difference between revisions of "sleep"

From Bohemia Interactive Community
Jump to navigation Jump to search
m
m (template:command argument fix)
 
(29 intermediate revisions by 13 users not shown)
Line 7: Line 7:
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| Suspend execution of [[Function]] or [[SQF_syntax|SQF]] [[Script]] for given time in seconds. |= 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 (Handle)|script]] executed by [[execVM]] or [[spawn]].
 +
<br><br>'''Notes'''
 +
* this command only guarantees that the code will be suspended "at least" the given amount of time, however it often is more and on occasion is a lot more if script [[Scheduler|scheduler]] is particular busy
 +
* this command will suspend the script indefinitely if game simulation is paused in SP. To avoid this, use [[uiSleep]]. |DESCRIPTION=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| '''sleep''' delay |= Syntax
+
| '''sleep''' delay |SYNTAX=
  
|p1= delay: [[Number]] |= Parameter 1
+
|p1= delay: [[Number]] of seconds |PARAMETER1=
  
| [[Nothing]] |= Return value
+
| [[Nothing]] |RETURNVALUE=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
 
   
 
   
|x1= <pre>sleep 0.5;</pre> |= Example 1
+
|x1= <code>[] [[spawn]] {[[sleep]] 5; [[hint]] "after 5 sec..."};</code> |EXAMPLE1=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| [[Control Structures]] |= See also
+
| [[uiSleep]], [[waitUntil]], [[canSuspend]], [[execVM]], [[spawn]], [[sleep vs uiSleep]], [[Control Structures]] |SEEALSO=
  
 
}}
 
}}
Line 27: Line 30:
 
<dl class="command_description">
 
<dl class="command_description">
 
<!-- Note Section BEGIN -->
 
<!-- Note Section BEGIN -->
<dd class="notedate">Posted on December 20, 2006 - 19:53</dd>
+
<dd class="notedate">Posted on December 20, 2006 - 19:53
<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>
+
<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</dd>
+
<dd class="notedate">Posted on February 12, 2007 - 20:16
<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: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]]'''</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>
+
<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</dd>
+
<dd class="notedate">Posted on July 16, 2007 - 00:13
<dt class="note">'''[[User:galatei|Galatei]]'''</dt><dd class="note">Use of '''sleep''' within compiled [[SQF]] scripts/[[function]]s is not possible in ArmA v1.08. It will return an error '''Generic error in expression''', whenever you try to [[call]] such [[function]]. In order to make use of delays like this, use [[exec]], [[execVM]], [[spawn]].</dd>
+
<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 -->
 
<!-- Note Section END -->
 
</dl>
 
</dl>
Line 40: Line 43:
 
[[Category:Scripting Commands|SLEEP]]
 
[[Category:Scripting Commands|SLEEP]]
 
[[Category:Scripting Commands ArmA|SLEEP]]
 
[[Category:Scripting Commands ArmA|SLEEP]]
 +
[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
 +
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
 +
[[Category:Scripting_Commands_Take_On_Helicopters|{{uc:{{PAGENAME}}}}]]
 +
 +
<!-- CONTINUE Notes -->
 +
<dl class="command_description">
 +
<dd class="notedate">Posted on July 12, 2014 - 13:41 (UTC)</dd>
 +
<dt class="note">'''[[User:SilentSpike|SilentSpike]]'''</dt>
 +
<dd class="note">
 +
Sleep will treat negative values as if they were 0. (Tested in Arma 3 v1.22)
 +
</dd>
 +
</dl>
 +
<!-- DISCONTINUE Notes -->
 +
 +
<!-- CONTINUE Notes -->
 +
<dl class="command_description">
 +
<dd class="notedate">Posted on October 18, 2014 - 21:24 (UTC)</dd>
 +
<dt class="note">[[User:AgentRevolution|AgentRevolution]]</dt>
 +
<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 -->

Latest revision as of 15:49, 7 April 2019

Introduced with Armed Assault version 1.00
  

Click on the images for descriptions

Introduced in

Game:
Armed Assault
Version:
1.00

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.

Notes
  • this command only guarantees that the code will be suspended "at least" the given amount of time, however it often is more and on occasion is a lot more if script scheduler is particular busy
  • this command will suspend the script indefinitely if game simulation is paused in SP. To avoid this, use uiSleep.

Syntax

Syntax:
sleep delay
Parameters:
delay: Number of seconds
Return Value:
Nothing

Examples

Example 1:
[] spawn {sleep 5; hint "after 5 sec..."};

Additional Information

Multiplayer:
-
See also:
uiSleepwaitUntilcanSuspendexecVMspawnsleep vs uiSleepControl Structures

Notes

Only post proven facts here. Report bugs on the feedback tracker. Use the talk page or the forums for discussions.
Add New Note | How To

Notes

Posted on December 20, 2006 - 19:53
CrashDome
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.
Posted on February 12, 2007 - 20:16
Kronzky
Sleep durations between .0005 and .02 will cause the same delay (roughly .02 seconds).
Delays of .0005 and less have no effect (ie, the sleep call will return immediately).
Sbsmac
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.
Posted on July 16, 2007 - 00:13
Inkompetent
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".

Bottom Section

Posted on July 12, 2014 - 13:41 (UTC)
SilentSpike
Sleep will treat negative values as if they were 0. (Tested in Arma 3 v1.22)
Posted on October 18, 2014 - 21:24 (UTC)
AgentRevolution
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.