Revision Difference
coroutine.create#514155
<function name="create" parent="coroutine" type="libraryfunc">⤶
<description>Creates a coroutine of the given function.</description>⤶
<realm>Shared and Menu</realm>⤶
<args>⤶
<arg name="func" type="function">The function for the coroutine to use</arg>⤶
</args>⤶
<rets>⤶
<ret name="" type="thread">coroutine</ret>⤶
</rets>⤶
</function>⤶
⤶
<example>⤶
<description>Display the location of each player in an endless loop, but only one player per frame.</description>⤶
<code>⤶
do⤶
local function displayer()⤶
local players⤶
while true do -- endless loop: you must guarantee that coroutine.yield() is always called!⤶
players = player.GetAll()⤶
if not next( players ) then -- empty table⤶
coroutine.yield() -- guarantee a pause in coroutine even with an empty table⤶
else⤶
for _, ply in pairs( players ) do⤶
coroutine.yield() -- We yield here so what you may do next will start immediatly when this for loop finishes.⤶
if IsValid( ply ) then -- The player ply may be disconnected now!⤶
print( ply:Nick(), "is located at", ply:GetPos() )⤶
end⤶
end⤶
⤶
end⤶
end⤶
end⤶
⤶
local co⤶
hook.Add( "Think", "DisplayPlayersLocation", function()⤶
if not co or not coroutine.resume( co ) then⤶
co = coroutine.create( displayer )⤶
coroutine.resume( co )⤶
end⤶
end )⤶
end⤶
</code>⤶
<outputfixedwidth>Fixed width</outputfixedwidth>⤶
<output>⤶
Custom Nickname is located at 10.102 59.04 -100.96⤶
SuperBoss is located at 55.85 1209.11 -100.96⤶
Custom Nickname is located at 11.126 51.92 -100.96⤶
...⤶
</output>⤶
⤶
</example>