nominations_extended: added time based restrictions for non-VIPs
This commit is contained in:
parent
a61c1fa0c6
commit
3c19b91972
@ -75,6 +75,11 @@ Handle g_Cvar_MarkCustomMaps = INVALID_HANDLE;
|
|||||||
Handle g_Cvar_NominateDelay = INVALID_HANDLE;
|
Handle g_Cvar_NominateDelay = INVALID_HANDLE;
|
||||||
Handle g_Cvar_InitialDelay = INVALID_HANDLE;
|
Handle g_Cvar_InitialDelay = INVALID_HANDLE;
|
||||||
|
|
||||||
|
// VIP Nomination Convars
|
||||||
|
Handle g_Cvar_VIPTimeframe = INVALID_HANDLE;
|
||||||
|
Handle g_Cvar_VIPTimeframeMinTime = INVALID_HANDLE;
|
||||||
|
Handle g_Cvar_VIPTimeframeMaxTime = INVALID_HANDLE;
|
||||||
|
|
||||||
int g_Player_NominationDelay[MAXPLAYERS+1];
|
int g_Player_NominationDelay[MAXPLAYERS+1];
|
||||||
int g_NominationDelay;
|
int g_NominationDelay;
|
||||||
|
|
||||||
@ -94,6 +99,10 @@ public void OnPluginStart()
|
|||||||
g_Cvar_InitialDelay = CreateConVar("sm_nominate_initialdelay", "60.0", "Time in seconds before first Nomination can be made", 0, true, 0.00);
|
g_Cvar_InitialDelay = CreateConVar("sm_nominate_initialdelay", "60.0", "Time in seconds before first Nomination can be made", 0, true, 0.00);
|
||||||
g_Cvar_NominateDelay = CreateConVar("sm_nominate_delay", "3.0", "Delay between nominations", 0, true, 0.00, true, 60.00);
|
g_Cvar_NominateDelay = CreateConVar("sm_nominate_delay", "3.0", "Delay between nominations", 0, true, 0.00, true, 60.00);
|
||||||
|
|
||||||
|
g_Cvar_VIPTimeframe = CreateConVar("sm_nominate_vip_timeframe", "1", "Specifies if the should be a timeframe where only VIPs can nominate maps", 0, true, 0.00, true, 1.0);
|
||||||
|
g_Cvar_VIPTimeframeMinTime = CreateConVar("sm_nominate_vip_timeframe_mintime", "1800", "Start of the timeframe where only VIPs can nominate maps (Format: HHMM)", 0, true, 0000.00, true, 2359.0);
|
||||||
|
g_Cvar_VIPTimeframeMaxTime = CreateConVar("sm_nominate_vip_timeframe_maxtime", "2200", "End of the timeframe where only VIPs can nominate maps (Format: HHMM)", 0, true, 0000.00, true, 2359.0);
|
||||||
|
|
||||||
RegConsoleCmd("say", Command_Say);
|
RegConsoleCmd("say", Command_Say);
|
||||||
RegConsoleCmd("say_team", Command_Say);
|
RegConsoleCmd("say_team", Command_Say);
|
||||||
|
|
||||||
@ -863,8 +872,21 @@ public int Handler_MapSelectMenu(Menu menu, MenuAction action, int param1, int p
|
|||||||
|
|
||||||
stock bool IsNominateAllowed(int client)
|
stock bool IsNominateAllowed(int client)
|
||||||
{
|
{
|
||||||
if(BaseComm_IsClientGagged(client))
|
if (BaseComm_IsClientGagged(client))
|
||||||
|
{
|
||||||
|
CReplyToCommand(client, "[NE] You are not allowed to nominate maps while you are gagged.");
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!CheckCommandAccess(client, "sm_tag", ADMFLAG_CUSTOM1))
|
||||||
|
{
|
||||||
|
int VIPTimeRestriction = GetVIPTimeRestriction();
|
||||||
|
if(VIPTimeRestriction)
|
||||||
|
{
|
||||||
|
CReplyToCommand(client, "[NE] During peak hours only VIPs are allowed to nominate maps. Wait for %d hours and %d minutes or buy VIP at Unloze.com to nominate maps again.", RoundToFloor(float(VIPTimeRestriction / 60)), VIPTimeRestriction % 60);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CanNominateResult result = CanNominate();
|
CanNominateResult result = CanNominate();
|
||||||
|
|
||||||
@ -1104,3 +1126,36 @@ public int Native_RemoveMapsFromNominationPool(Handle plugin, int numArgs)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stock int GetVIPTimeRestriction()
|
||||||
|
{
|
||||||
|
if (!GetConVarBool(g_Cvar_VIPTimeframe))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
char sTime[8];
|
||||||
|
FormatTime(sTime, sizeof(sTime), "%H%M");
|
||||||
|
|
||||||
|
int CurTime = StringToInt(sTime);
|
||||||
|
int MinTime = GetConVarInt(g_Cvar_VIPTimeframeMinTime);
|
||||||
|
int MaxTime = GetConVarInt(g_Cvar_VIPTimeframeMaxTime);
|
||||||
|
|
||||||
|
//Wrap around.
|
||||||
|
CurTime = (CurTime <= MinTime) ? CurTime + 2400 : CurTime;
|
||||||
|
MaxTime = (MaxTime <= MinTime) ? MaxTime + 2400 : MaxTime;
|
||||||
|
|
||||||
|
if ((MinTime <= CurTime <= MaxTime))
|
||||||
|
{
|
||||||
|
//Wrap around.
|
||||||
|
MinTime = (MinTime <= CurTime) ? MinTime + 2400 : MinTime;
|
||||||
|
MinTime = (MinTime <= MaxTime) ? MinTime + 2400 : MinTime;
|
||||||
|
|
||||||
|
// Convert our 'time' to minutes.
|
||||||
|
CurTime = (RoundToFloor(float(CurTime / 100)) * 60) + (CurTime % 100);
|
||||||
|
MinTime = (RoundToFloor(float(MinTime / 100)) * 60) + (MinTime % 100);
|
||||||
|
MaxTime = (RoundToFloor(float(MaxTime / 100)) * 60) + (MaxTime % 100);
|
||||||
|
|
||||||
|
return MaxTime - CurTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user