Garry's Mod Wiki

player.Iterator

Description

Returns a Stateless Iterator for all players on the server. Intended for use in Generic For Loops.
See ents.Iterator for a similar function for all entities.

Internally, this function uses cached values that exist entirely within lua, as opposed to player.GetAll, which is a C++ function. Because switching from lua to C++ (and vice versa) incurs a performance cost, this function will be somewhat more efficient than player.GetAll.

The GM:OnEntityCreated and GM:EntityRemoved hooks are used internally to invalidate this function's cache. Using this function inside those hooks is not guaranteed to use an up-to-date cache because hooks are currently executed in an arbitrary order.
An error being thrown inside the GM:OnEntityCreated or GM:EntityRemoved hooks is likely to break this function. Make it certain that no addons are causing any errors in those hooks.

Returns

1 function
The Iterator Function from ipairs
2 table
Table of all existing Players. This is a cached copy of player.GetAll
This table is intended to be read-only.

Modifying the return table will affect all subsequent calls to this function until the cache is refreshed, replacing all of your player.GetAll usages may come with unintended side effects because of this.

Example of bad code:

-- NEVER DO THIS!!! local scan_ents = select(2, player.Iterator()) table.Add(scan_ents, ents.FindByClass("ttt_decoy"))
3 number
The starting index for the table of players.
This is always 0 and is returned for the benefit of Generic For Loops

Example

Example usage of this function.

for _, ply in player.Iterator() do print( ply ) end
Output: Prints out all players to the console.