added feature so that all restrictions are removed if less than a certain amount of clients are considered active
This commit is contained in:
parent
8c0bfb037b
commit
5ab55caec8
@ -53,6 +53,7 @@
|
||||
#include <PlayerManager>
|
||||
#include <nominations_extended>
|
||||
#include <rockthevote_extended>
|
||||
#include <AFKManager>
|
||||
|
||||
#pragma semicolon 1
|
||||
#pragma newdecls required
|
||||
@ -139,6 +140,8 @@ bool g_ChangeMapAtRoundEnd;
|
||||
bool g_ChangeMapInProgress;
|
||||
bool g_HasIntermissionStarted = false;
|
||||
int g_mapFileSerial = -1;
|
||||
int g_iPlayerCount_excludeSpec;
|
||||
int g_iPlayerAFKTime;
|
||||
|
||||
|
||||
int g_NominateCount = 0;
|
||||
@ -285,6 +288,17 @@ public void OnPluginStart()
|
||||
g_Cvar_DontChange = CreateConVar("mce_dontchange", "1", "Specifies if a 'Don't Change option should be added to early votes", _, true, 0.0);
|
||||
g_Cvar_VoteDuration = CreateConVar("mce_voteduration", "20", "Specifies how long the mapvote should be available for.", _, true, 5.0);
|
||||
|
||||
|
||||
ConVar cvar1;
|
||||
HookConVarChange((cvar1 = CreateConVar("sm_active_players_required", "15", "Amount of players required to be considered active before any restrictions are enabled at all.")), Cvar_playerExcludeSpec);
|
||||
g_iPlayerCount_excludeSpec = cvar1.IntValue;
|
||||
delete cvar1;
|
||||
|
||||
ConVar cvar;
|
||||
HookConVarChange((cvar = CreateConVar("sm_mapchooser_afk_time", "120", "Time in seconds until a player is considered as AFK and therefore excluded from player average")), Cvar_playerAFKTime);
|
||||
g_iPlayerAFKTime = cvar.IntValue;
|
||||
delete cvar;
|
||||
|
||||
// MapChooser Extended cvars
|
||||
CreateConVar("mce_version", MCE_VERSION, "MapChooser Extended Version", FCVAR_SPONLY|FCVAR_NOTIFY|FCVAR_DONTRECORD);
|
||||
|
||||
@ -413,6 +427,16 @@ public void OnPluginStart()
|
||||
InternalRestoreMapCooldowns();
|
||||
}
|
||||
|
||||
public void Cvar_playerExcludeSpec(ConVar convar, const char[] oldValue, const char[] newValue)
|
||||
{
|
||||
g_iPlayerCount_excludeSpec = convar.IntValue;
|
||||
}
|
||||
|
||||
public void Cvar_playerAFKTime(ConVar convar, const char[] oldValue, const char[] newValue)
|
||||
{
|
||||
g_iPlayerAFKTime = convar.IntValue;
|
||||
}
|
||||
|
||||
public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max)
|
||||
{
|
||||
if(LibraryExists("mapchooser"))
|
||||
@ -2987,26 +3011,40 @@ stock int InternalGetMapPlayerRestriction(const char[] map)
|
||||
|
||||
stock bool InternalAreRestrictionsActive()
|
||||
{
|
||||
if (!GetConVarBool(g_Cvar_NoRestrictionTimeframeEnable))
|
||||
return true;
|
||||
if (!GetConVarBool(g_Cvar_NoRestrictionTimeframeEnable))
|
||||
return true;
|
||||
|
||||
char sTime[8];
|
||||
FormatTime(sTime, sizeof(sTime), "%H%M");
|
||||
char sTime[8];
|
||||
FormatTime(sTime, sizeof(sTime), "%H%M");
|
||||
|
||||
int CurTime = StringToInt(sTime);
|
||||
int MinTime = GetConVarInt(g_Cvar_NoRestrictionTimeframeMinTime);
|
||||
int MaxTime = GetConVarInt(g_Cvar_NoRestrictionTimeframeMaxTime);
|
||||
int CurTime = StringToInt(sTime);
|
||||
int MinTime = GetConVarInt(g_Cvar_NoRestrictionTimeframeMinTime);
|
||||
int MaxTime = GetConVarInt(g_Cvar_NoRestrictionTimeframeMaxTime);
|
||||
|
||||
//Wrap around.
|
||||
CurTime = (CurTime <= MinTime) ? CurTime + 2400 : CurTime;
|
||||
MaxTime = (MaxTime <= MinTime) ? MaxTime + 2400 : MaxTime;
|
||||
//Wrap around.
|
||||
CurTime = (CurTime <= MinTime) ? CurTime + 2400 : CurTime;
|
||||
MaxTime = (MaxTime <= MinTime) ? MaxTime + 2400 : MaxTime;
|
||||
|
||||
if ((MinTime <= CurTime <= MaxTime))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if ((MinTime <= CurTime <= MaxTime))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
int AcitvePlayerCount = 0;
|
||||
for (int i = 0; i < MaxClients; i++)
|
||||
{
|
||||
if (IsValidClient(i) && !IsFakeClient(i) && !IsClientSourceTV(i) && !is_bot_player[i] && GetClientIdleTime(i) < g_iPlayerAFKTime)
|
||||
{
|
||||
AcitvePlayerCount++;
|
||||
}
|
||||
}
|
||||
|
||||
if (AcitvePlayerCount <= g_iPlayerCount_excludeSpec)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
stock int FindIntInArray(int[] array, int size, int value)
|
||||
|
Loading…
Reference in New Issue
Block a user