IMIsle Modkit
Pages in this area

whitelist and reserved slots

Server

modkit.whitelist lets only listed players in. modkit.reserved keeps the last slots of the server free for listed players. Both are stored in data\whitelist.json under the server root and survive restarts.

Both checks run when the server first sees a player in the game, up to half a second after the join. A player who fails is kicked, playerRejected(player, reason) fires and playerConnected does not. Players from sv_admins always pass both checks.

Every function that takes a player accepts a player table or a Steam ID string.

modkit.whitelist.setEnabled, isEnabled

modkit.whitelist.setEnabled(enabled) switches whitelist mode. The setting is saved. modkit.whitelist.isEnabled() returns a boolean.

Players who are already on the server stay when you switch it on.

modkit.whitelist.setEnabled(true)

modkit.whitelist.add, remove, has, list

modkit.whitelist.add(player) returns true when the player was not listed before. modkit.whitelist.remove(player) returns true when the player was listed. modkit.whitelist.has(player) returns a boolean. modkit.whitelist.list() returns an array of Steam IDs.

modkit.commands.add("wl", function(admin, steamId)
  modkit.whitelist.add(steamId)
  admin:message(steamId .. " can join now")
end, true)

modkit.reserved.setSlots, getSlots

modkit.reserved.setSlots(count) keeps that many slots free. 0 switches it off. modkit.reserved.getSlots() returns the number.

The server size comes from sv_maxplayers in server.cfg. With 40 slots and 2 reserved, player number 39 and 40 must be on the reserved list. The plugin does not change the player limit of the game and kicks nobody to make room. It only keeps the last slots free.

modkit.reserved.setSlots(2)
modkit.reserved.add("76561198000000001")

modkit.reserved.add, remove, has, list

Same behaviour as the whitelist functions, for the reserved list.