{"name":"sleep","operator":null,"title":"sleep","type":"command","url":"https://community.bistudio.com/wiki/sleep","revid":370495,"updated":"2024-12-26T17:40:41Z","groups":["Program Flow"],"status":"ok","replaced_by":[],"games":[{"game":"arma1","name":"Armed Assault","version":"1.00"},{"game":"arma2","name":"Arma 2","version":"1.00"},{"game":"arma2oa","name":"Arma 2: Operation Arrowhead","version":"1.50"},{"game":"tkoh","name":"Take On Helicopters","version":"1.00"},{"game":"arma3","name":"Arma 3","version":"0.50"}],"since":{"game":"arma1","name":"Armed Assault","version":"1.00"},"arma3_since":"0.50","branch":null,"locality":{"argument":null,"effect":null,"server_exec":false},"exec":null,"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.\n\n> [!NOTE]\n> - 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.\n> - this command will suspend the script as the game gets paused in single player (and will resume with it). To avoid this, use uiSleep.","syntaxes":[{"syntax":"sleep delay","since":null,"effect":null,"exec":null,"params":[{"name":"delay","type":"Number","optional":false,"default":null,"description":"in seconds. Negative values will not be considered.","types":["Number"],"since":null,"text":"delay: Number - in seconds. Negative values will not be considered."}],"returns":{"type":"Nothing","types":["Nothing"],"description":null,"text":"Nothing"},"form":"unary","operator":null,"left":null,"right":{"text":"delay","types":["Number"]}}],"examples":[{"text":"```sqf\n0 spawn {\n    sleep 5;\n    hint \"after (at least) 5 seconds...\";\n};\n```","code":["0 spawn {\n\tsleep 5;\n\thint \"after (at least) 5 seconds...\";\n};"]},{"text":"```sqf\nsleep 5 + random 10;    // incorrect - will only sleep for 5 seconds, as it will be interpreted as (sleep 5) (+(random 10))\nsleep (5 + random 10);    // correct\n```","code":["sleep 5 + random 10;\t// incorrect - will only sleep for 5 seconds, as it will be interpreted as (sleep 5) (+(random 10))\nsleep (5 + random 10);\t// correct"]}],"multiplayer":null,"problems":null,"aliases":[],"see_also":["time","uiSleep","waitUntil","canSuspend","execVM","spawn","sleep vs uiSleep","Control Structures"],"notes":[{"user":"CrashDome","date":"2006-12-20T20:53:00Z","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."},{"user":"Kronzky","date":"2007-02-12T20:16:00Z","text":"Sleep durations between .0005 and .02 will cause the same delay (roughly .02 seconds).\n\nDelays of .0005 and less have **no** effect (i.e, the sleep call will return immediately)."},{"user":"Sbsmac","date":"2007-02-13T22:32:00Z","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.\nSleep causes the script/function to be suspended until at least the specified time has elapsed.\nTo wait for the next frame, or give other scripts a chance to run, use Sleep 0.001."},{"user":"Inkompetent","date":"2007-06-16T00:13:00Z","text":"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\"."}],"categories":[]}