线程处理
最后更新于
最后更新于
When using timers or infinite statements such as while(true)
or wait
it is important to use thread
before the function in order to prevent crashes or freezes.
thread
?The thread
term is used to tell squirrel to run the following function separately from the rest of the game, while in a simple scripts code is run sequentially(line 1,2,3 etc) if a line of code would last forever or need to function in parallel to normal gameplay, such as a wait
command, it is important to use thread
or the game will get stuck processing that line indefinitely and will not move to the next lines, causing crashes or freezes.
thread
?Using thread is fairly simple, if we have a function called delayannouncement
that chooses one player as "it" 10 seconds after spawning we cannot use this function on its own, instead calling it with a thread by simply calling
thread delayannouncement()
The same applies to a while(true)
function, for example almostover
a function that checks every 5 seconds to see if the game has 2 or less minutes left and announces it if so.
thread almostover()
Example Script |
---|
First, lets add our callback to the gamemodes core function.
Then lets define the function matchstart and have it simply thread our two important functions.
This script waits 10 seconds, picks a player and announces that player as "it" however being it
currently does nothing, we will define that later.
This function will now repeat endlessly, waiting 5 seconds before each repeat. make sure to add a return
or break
statement to prevent the message looping every 5 seconds after, unless you want that
You have now created and threaded both functions.
lets try implement both of our scripts from the previous 2 sections, as well as a callback to trigger the script.