amxmodx/plugins/adminslots.sma

78 lines
1.7 KiB
SourcePawn
Raw Normal View History

// vim: set ts=4 sw=4 tw=99 noet:
//
// AMX Mod X, based on AMX Mod by Aleksander Naszko ("OLO").
// Copyright (C) The AMX Mod X Development Team.
//
// This software is licensed under the GNU General Public License, version 3 or higher.
// Additional exceptions apply. For full license details, see LICENSE.txt or visit:
// https://alliedmods.net/amxmodx-license
//
// Slots Reservation Plugin
//
2004-01-31 23:56:22 +03:00
2004-03-05 22:35:38 +03:00
#include <amxmodx>
2004-03-07 17:30:53 +03:00
#include <amxmisc>
2004-01-31 23:56:22 +03:00
2006-03-20 00:25:18 +03:00
new g_ResPtr
new g_HidePtr
new g_sv_visiblemaxplayers
2004-01-31 23:56:22 +03:00
public plugin_init()
{
register_plugin("Slots Reservation", AMXX_VERSION_STR, "AMXX Dev Team")
register_dictionary("adminslots.txt")
register_dictionary("common.txt")
g_ResPtr = register_cvar("amx_reservation", "0", FCVAR_PROTECTED)
2006-04-19 06:52:39 +04:00
g_HidePtr = register_cvar("amx_hideslots", "0")
g_sv_visiblemaxplayers = get_cvar_pointer("sv_visiblemaxplayers")
2006-02-27 12:22:03 +03:00
}
2004-03-28 01:13:41 +03:00
2006-02-27 12:22:03 +03:00
public plugin_cfg()
{
set_task(3.0, "MapLoaded")
}
public MapLoaded()
2006-02-27 12:22:03 +03:00
{
if (get_pcvar_num(g_HidePtr))
{
2014-07-20 14:56:59 +04:00
setVisibleSlots(get_playersnum(1), MaxClients - get_pcvar_num(g_ResPtr))
}
}
2004-01-31 23:56:22 +03:00
2006-03-20 00:25:18 +03:00
public client_authorized(id)
{
new players = get_playersnum(1)
2014-07-20 14:56:59 +04:00
new limit = MaxClients - get_pcvar_num(g_ResPtr)
2006-03-20 00:25:18 +03:00
if (access(id, ADMIN_RESERVATION) || (players <= limit))
{
if (get_pcvar_num(g_HidePtr))
setVisibleSlots(players, limit)
return
}
2006-02-27 12:22:03 +03:00
server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "DROPPED_RES")
2006-03-20 00:25:18 +03:00
}
public client_disconnected(id)
2006-03-20 00:25:18 +03:00
{
if (get_pcvar_num(g_HidePtr))
{
2014-07-20 14:56:59 +04:00
setVisibleSlots(get_playersnum(1) - 1, MaxClients - get_pcvar_num(g_ResPtr))
}
2006-03-20 00:25:18 +03:00
}
setVisibleSlots(players, limit)
2006-03-20 00:25:18 +03:00
{
new num = players + 1
2014-07-20 14:56:59 +04:00
if (players == MaxClients)
num = MaxClients
2006-03-20 00:25:18 +03:00
else if (players < limit)
num = limit
set_pcvar_num(g_sv_visiblemaxplayers, num)
2006-03-20 00:25:18 +03:00
}