2014-08-04 12:12:15 +00:00
|
|
|
// 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 20:56:22 +00:00
|
|
|
|
2004-03-05 19:35:38 +00:00
|
|
|
#include <amxmodx>
|
2004-03-07 14:30:53 +00:00
|
|
|
#include <amxmisc>
|
2004-01-31 20:56:22 +00:00
|
|
|
|
2006-03-19 21:25:18 +00:00
|
|
|
new g_ResPtr
|
|
|
|
new g_HidePtr
|
2013-08-05 16:26:57 +00:00
|
|
|
new g_sv_visiblemaxplayers
|
2004-01-31 20:56:22 +00:00
|
|
|
|
2005-09-12 21:06:24 +00:00
|
|
|
public plugin_init()
|
|
|
|
{
|
|
|
|
register_plugin("Slots Reservation", AMXX_VERSION_STR, "AMXX Dev Team")
|
|
|
|
register_dictionary("adminslots.txt")
|
|
|
|
register_dictionary("common.txt")
|
2014-07-28 21:33:08 +00:00
|
|
|
g_ResPtr = register_cvar("amx_reservation", "0", FCVAR_PROTECTED)
|
2006-04-19 02:52:39 +00:00
|
|
|
g_HidePtr = register_cvar("amx_hideslots", "0")
|
2013-08-05 16:26:57 +00:00
|
|
|
g_sv_visiblemaxplayers = get_cvar_pointer("sv_visiblemaxplayers")
|
2006-02-27 09:22:03 +00:00
|
|
|
}
|
2004-03-27 22:13:41 +00:00
|
|
|
|
2006-02-27 09:22:03 +00:00
|
|
|
public plugin_cfg()
|
2006-09-01 01:40:37 +00:00
|
|
|
{
|
|
|
|
set_task(3.0, "MapLoaded")
|
|
|
|
}
|
|
|
|
|
|
|
|
public MapLoaded()
|
2006-02-27 09:22:03 +00:00
|
|
|
{
|
2013-08-05 16:26:57 +00:00
|
|
|
if (get_pcvar_num(g_HidePtr))
|
|
|
|
{
|
2014-07-20 10:56:59 +00:00
|
|
|
setVisibleSlots(get_playersnum(1), MaxClients - get_pcvar_num(g_ResPtr))
|
2013-08-05 16:26:57 +00:00
|
|
|
}
|
2004-08-03 20:11:16 +00:00
|
|
|
}
|
2004-01-31 20:56:22 +00:00
|
|
|
|
2006-03-19 21:25:18 +00:00
|
|
|
public client_authorized(id)
|
|
|
|
{
|
2005-09-12 21:06:24 +00:00
|
|
|
new players = get_playersnum(1)
|
2014-07-20 10:56:59 +00:00
|
|
|
new limit = MaxClients - get_pcvar_num(g_ResPtr)
|
2005-09-12 21:06:24 +00:00
|
|
|
|
2006-03-19 21:25:18 +00:00
|
|
|
if (access(id, ADMIN_RESERVATION) || (players <= limit))
|
2005-09-12 21:06:24 +00:00
|
|
|
{
|
2013-08-05 16:26:57 +00:00
|
|
|
if (get_pcvar_num(g_HidePtr))
|
|
|
|
setVisibleSlots(players, limit)
|
|
|
|
return
|
2005-09-12 21:06:24 +00:00
|
|
|
}
|
2006-02-27 09:22:03 +00:00
|
|
|
|
2013-08-05 16:26:57 +00:00
|
|
|
server_cmd("kick #%d ^"%L^"", get_user_userid(id), id, "DROPPED_RES")
|
2006-03-19 21:25:18 +00:00
|
|
|
}
|
|
|
|
|
2015-07-16 22:26:30 +00:00
|
|
|
public client_disconnected(id)
|
2006-03-19 21:25:18 +00:00
|
|
|
{
|
2013-08-05 16:26:57 +00:00
|
|
|
if (get_pcvar_num(g_HidePtr))
|
|
|
|
{
|
2014-07-20 10:56:59 +00:00
|
|
|
setVisibleSlots(get_playersnum(1) - 1, MaxClients - get_pcvar_num(g_ResPtr))
|
2013-08-05 16:26:57 +00:00
|
|
|
}
|
2006-03-19 21:25:18 +00:00
|
|
|
}
|
|
|
|
|
2013-08-05 16:26:57 +00:00
|
|
|
setVisibleSlots(players, limit)
|
2006-03-19 21:25:18 +00:00
|
|
|
{
|
|
|
|
new num = players + 1
|
|
|
|
|
2014-07-20 10:56:59 +00:00
|
|
|
if (players == MaxClients)
|
|
|
|
num = MaxClients
|
2006-03-19 21:25:18 +00:00
|
|
|
else if (players < limit)
|
|
|
|
num = limit
|
|
|
|
|
2013-08-05 16:26:57 +00:00
|
|
|
set_pcvar_num(g_sv_visiblemaxplayers, num)
|
2006-03-19 21:25:18 +00:00
|
|
|
}
|