added play time requirement for being allowed to spray

This commit is contained in:
jenz 2025-06-09 20:31:34 +02:00
parent cf58c745d2
commit 3ec612167d

View File

@ -5,6 +5,9 @@
#include <clientprefs>
#include <cstrike>
//add some hour requirement for being allowed to spray
#include <unloze_playtime>
#undef REQUIRE_PLUGIN
#include <adminmenu>
#define REQUIRE_PLUGIN
@ -35,6 +38,7 @@ ConVar g_cvarUseProximityCheck = null;
ConVar g_cvarSendSpraysToConnectingClients = null;
ConVar g_cvarUsePersistentSprays = null;
ConVar g_cvarMaxSprayLifetime = null;
ConVar g_cvarHourRequirement = null;
int g_iNSFWDecalIndex;
int g_iHiddenDecalIndex;
@ -49,6 +53,7 @@ bool g_bGotBlacklist;
bool g_bGotNSFWList;
bool g_bFullyConnected;
bool g_bSkipDecalHook;
bool g_bFullFillHourRequirement[MAXPLAYERS + 1] = {false,...};
char g_sBanIssuer[MAXPLAYERS + 1][64];
char g_sBanIssuerSID[MAXPLAYERS + 1][32];
@ -56,6 +61,7 @@ char g_sBanReason[MAXPLAYERS + 1][32];
char g_sSprayHash[MAXPLAYERS + 1][16];
char g_csSID[MAXPLAYERS + 1][65];
int g_iClientHoursNotFullFilled[MAXPLAYERS + 1];
int g_iClientToClientSprayLifetime[MAXPLAYERS + 1][MAXPLAYERS + 1];
int g_iClientSprayLifetime[MAXPLAYERS + 1] = { 2, ... };
int g_iSprayLifetime[MAXPLAYERS + 1];
@ -85,7 +91,7 @@ public Plugin myinfo =
{
name = "Spray Manager",
description = "A plugin to help manage player sprays.",
author = "Obus",
author = "Obus blabla",
version = "2.1.1",
url = ""
}
@ -156,6 +162,8 @@ public void OnPluginStart()
g_cvarMaxSprayLifetime = CreateConVar("sm_spraymanager_maxspraylifetime", "2", "If not using persistent sprays, remove sprays after their global lifetime (in rounds) exceeds this number");
g_cvarHourRequirement = CreateConVar("sm_spraymanager_hour_requirement", "5", "Using the unloze play time plugin to set a minimum amount of hours for allowing players access to spraying.");
AutoExecConfig(true, "plugin.SprayManager");
g_hTraceTimer = CreateTimer(0.25, Timer_PerformPlayerTraces, _, TIMER_REPEAT);
@ -330,6 +338,12 @@ public void OnClientPostAdminCheck(int client)
UpdateHideSprays();
}
public void GetPlayerHoursServer(int client, int hours)
{
g_iClientHoursNotFullFilled[client] = hours;
g_bFullFillHourRequirement[client] = g_iClientHoursNotFullFilled[client] > g_cvarHourRequirement.IntValue ? true : false;
}
public void update_client_online(int client, int is_online)
{
if (!g_hDatabase)
@ -363,7 +377,7 @@ public void OnClientDisconnect(int client)
update_client_online(client, 0);
}
ClearPlayerInfo(client);
UpdateHideSprays();
}
@ -2150,7 +2164,7 @@ public Action Command_ForceSFW(int client, int argc)
return Plugin_Handled;
AdminForceSpraySFW(iTarget);
PrintToChat(client, "\x01\x04[SprayManager]\x01 Marked \x04%N\x01's spray as SFW.", iTarget);
PrintToChat(client, "\x01\x04[SprayManager]\x01 Marked \x04%N\x01 spray as SFW.", iTarget);
return Plugin_Handled;
}
@ -2165,7 +2179,7 @@ public Action Command_ForceSFW(int client, int argc)
continue;
AdminForceSpraySFW(i);
PrintToChat(client, "\x01\x04[SprayManager]\x01 Marked \x04%N\x01's spray as SFW.", i);
PrintToChat(client, "\x01\x04[SprayManager]\x01 Marked \x04%N\x01s spray as SFW.", i);
return Plugin_Handled;
}
@ -2260,6 +2274,13 @@ public Action HookDecal(const char[] sTEName, const int[] iClients, int iNumClie
return Plugin_Handled;
}
//check for an arbitrary amount of hours before allowing spraying
if (!g_bFullFillHourRequirement[client])
{
PrintToChat(client, "\x01\x04[SprayManager]\x01 You cannot spray because you dont have enough play time yet. (\x04%i/\x04%i\x01 hours)", g_iClientHoursNotFullFilled[client], g_cvarHourRequirement.IntValue);
return Plugin_Handled;
}
if (g_fNextSprayTime[client] > GetGameTime())
return Plugin_Handled;
@ -3306,6 +3327,8 @@ stock void ClearPlayerInfo(int client)
g_SprayAABB[client] = view_as<float>({ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }); //???
g_bHasNSFWSpray[client] = false;
g_bMarkedNSFWByAdmin[client] = false;
g_bFullFillHourRequirement[client] = false;
g_iClientHoursNotFullFilled[client] = 0;
}
stock void UpdateClientToClientSprayLifeTime(int client, int iLifeTime)