91 lines
1.9 KiB
Plaintext
91 lines
1.9 KiB
Plaintext
|
#include amxmodx
|
|||
|
#include amxmisc
|
|||
|
#define MAX_PLAYERS 32
|
|||
|
new g_iHeadcount, g_timing, g_iTic_quota, g_iTic_sleep, g_iTic;
|
|||
|
|
|||
|
/*
|
|||
|
* Experimental for any OS but Linux gets the higher numbers with pingboost.
|
|||
|
* DO NOT put sys_ticrate anywhere as a parameter on the server launch code.
|
|||
|
*/
|
|||
|
|
|||
|
public plugin_init()
|
|||
|
|
|||
|
{
|
|||
|
register_plugin("Variable sys_ticrate", "A", ".sρiηX҉.");
|
|||
|
|
|||
|
g_timing = register_cvar("sys_timing", "1"); //0|1 disables|enables plugin.
|
|||
|
g_iTic_sleep = register_cvar("sys_sleep", "32"); //Tic hibernation rate.
|
|||
|
g_iTic_quota = register_cvar("sys_quota", "312"); //Tic rate quota.
|
|||
|
g_iTic = get_cvar_pointer("sys_ticrate"); //Base tic rate. Only used to launch server with.
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
public client_putinserver(id)
|
|||
|
|
|||
|
{
|
|||
|
if (get_pcvar_num(g_timing) == 1)
|
|||
|
{
|
|||
|
new iAlloted_Tic;
|
|||
|
|
|||
|
if( is_user_connected(id) && (!is_user_bot(id)) && (iPlayers() >= 1) ) {
|
|||
|
|
|||
|
iAlloted_Tic = (iPlayers() * get_pcvar_num(g_iTic_quota) )
|
|||
|
|
|||
|
set_pcvar_num(g_iTic,iAlloted_Tic)
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
*
|
|||
|
* name: client_disconnect(id) or client_disconnected(id)
|
|||
|
* @param depends on what flavor of amxx you use.
|
|||
|
* @return triggers Sys_ticrate adjustments when players leave.
|
|||
|
*
|
|||
|
*/
|
|||
|
|
|||
|
#if AMXX_VERSION_NUM < 183;
|
|||
|
|
|||
|
public client_disconnect(id)
|
|||
|
|
|||
|
#else
|
|||
|
|
|||
|
public client_disconnected(id)
|
|||
|
|
|||
|
#endif
|
|||
|
{
|
|||
|
if (get_pcvar_num(g_timing) == 1){
|
|||
|
if (iPlayers() < 2){
|
|||
|
set_pcvar_num(g_iTic,get_pcvar_num(g_iTic_sleep));
|
|||
|
}
|
|||
|
else client_putinserver(id);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
/*
|
|||
|
*
|
|||
|
* name: stock iPlayers()
|
|||
|
* @param depends on what flavor of amxx you use.
|
|||
|
* @return total number of humans on multi-player.
|
|||
|
*
|
|||
|
*/
|
|||
|
|
|||
|
stock iPlayers()
|
|||
|
|
|||
|
{
|
|||
|
#if AMXX_VERSION_NUM == 182;
|
|||
|
new players[ MAX_PLAYERS ],pNum
|
|||
|
get_players(players,pNum,"ch")
|
|||
|
g_iHeadcount = pNum;
|
|||
|
|
|||
|
#else
|
|||
|
|
|||
|
g_iHeadcount = get_playersnum_ex(GetPlayersFlags:GetPlayers_ExcludeBots)
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
return g_iHeadcount
|
|||
|
}
|