f0.gg-kreedzsrv/amxmodx/scripting/sys_timing.sma
2021-07-25 14:20:46 +02:00

91 lines
1.9 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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
}