added support for spray hiding multiple people automatic on connection

This commit is contained in:
jenz 2022-06-06 23:41:31 +02:00
parent 16edc14753
commit ad3af6e817

View File

@ -84,7 +84,7 @@ public Plugin myinfo =
name = "Spray Manager",
description = "A plugin to help manage player sprays.",
author = "Obus",
version = "2.1.0",
version = "2.1.1",
url = ""
}
@ -246,6 +246,38 @@ public void CvarQueryFinished_SprayLifeTime(QueryCookie cookie, int client, ConV
g_iClientSprayLifetime[client] = iVal <= 0 ? 1 : iVal > 1000 ? 1000 : iVal;
}
public void select_sprays_to_hide(Handle hParent, Handle hChild, const char[] err, any client)
{
if (!IsValidClient(client))
return;
if (hChild == null)
{
LogError("failed selecting hidden sprays (%s)", err);
return;
}
while (SQL_FetchRow(hChild))
{
char sAuthID[32];
SQL_FetchString(hChild, 0, sAuthID, sizeof(sAuthID));
for (int i = 1; i <= MaxClients; i++)
{
if (!IsValidClient(i) || IsFakeClient(i))
continue;
char sAuthID_target[32];
GetClientAuthId(i, AuthId_Steam2, sAuthID_target, sizeof(sAuthID_target), false);
if (StrEqual(sAuthID, sAuthID_target))
{
g_bHasSprayHidden[client][i] = true;
PaintWorldDecalToOne(g_iHiddenDecalIndex, g_vecSprayOrigin[i], client);
g_bSkipDecalHook = true;
SprayClientDecalToOne(i, client, 0, ACTUAL_NULL_VECTOR);
g_bSkipDecalHook = false;
}
}
}
}
public void OnClientPostAdminCheck(int client)
{
if (g_hDatabase != null)
@ -255,6 +287,13 @@ public void OnClientPostAdminCheck(int client)
UpdatePlayerInfo(client);
UpdateSprayHashInfo(client);
UpdateNSFWInfo(client);
char sAuthID[32];
GetClientAuthId(client, AuthId_Steam2, sAuthID, sizeof(sAuthID), false);
char sQuery[512];
Format(sQuery, sizeof(sQuery), "SELECT `steamidtarget` FROM `sprayhidemanage` WHERE `steamidhider` = '%s';", sAuthID);
SQL_TQuery(g_hDatabase, select_sprays_to_hide, sQuery, client, DBPrio_High);
}
if (g_cvarSendSpraysToConnectingClients.BoolValue)
@ -1620,7 +1659,16 @@ public Action Command_HideSpray(int client, int argc)
return Plugin_Handled;
g_bHasSprayHidden[client][iTarget] = true;
PrintToChat(client, "\x01\x04[SprayManager]\x01 You have hidden \x04%N\x01's spray.", iTarget);
PrintToChat(client, "\x01\x04[SprayManager]\x01 You have hidden \x04%N\x01's spray.", iTarget); //'
char sAuthID[32];
char sAuthID_target[32];
GetClientAuthId(client, AuthId_Steam2, sAuthID, sizeof(sAuthID), false);
GetClientAuthId(iTarget, AuthId_Steam2, sAuthID_target, sizeof(sAuthID_target), false);
char sQuery[512];
Format(sQuery, sizeof(sQuery), "INSERT IGNORE INTO `sprayhidemanage` (`steamidhider`, `steamidtarget`) VALUES ('%s', '%s');", sAuthID, sAuthID_target);
SQL_TQuery(g_hDatabase, DummyCallback, sQuery);
PaintWorldDecalToOne(g_iHiddenDecalIndex, g_vecSprayOrigin[iTarget], client);
g_bSkipDecalHook = true;
@ -1640,7 +1688,17 @@ public Action Command_HideSpray(int client, int argc)
continue;
g_bHasSprayHidden[client][i] = true;
PrintToChat(client, "\x01\x04[SprayManager]\x01 You have hidden \x04%N\x01's spray.", i);
PrintToChat(client, "\x01\x04[SprayManager]\x01 You have hidden \x04%N\x01's spray.", i); //'
char sAuthID[32];
char sAuthID_target[32];
GetClientAuthId(client, AuthId_Steam2, sAuthID, sizeof(sAuthID), false);
GetClientAuthId(i, AuthId_Steam2, sAuthID_target, sizeof(sAuthID_target), false);
char sQuery[512];
Format(sQuery, sizeof(sQuery), "INSERT IGNORE INTO `sprayhidemanage` (`steamidhider`, `steamidtarget`) VALUES ('%s', '%s');", sAuthID, i);
SQL_TQuery(g_hDatabase, DummyCallback, sQuery);
PaintWorldDecalToOne(g_iHiddenDecalIndex, g_vecSprayOrigin[i], client);
g_bSkipDecalHook = true;
@ -1675,7 +1733,16 @@ public Action Command_UnhideSpray(int client, int argc)
return Plugin_Handled;
g_bHasSprayHidden[client][iTarget] = false;
PrintToChat(client, "\x01\x04[SprayManager]\x01 You have unhidden \x04%N\x01's spray.", iTarget);
PrintToChat(client, "\x01\x04[SprayManager]\x01 You have unhidden \x04%N\x01's spray.", iTarget); // '
char sAuthID[32];
char sAuthID_target[32];
GetClientAuthId(client, AuthId_Steam2, sAuthID, sizeof(sAuthID), false);
GetClientAuthId(iTarget, AuthId_Steam2, sAuthID_target, sizeof(sAuthID_target), false);
char sQuery[512];
Format(sQuery, sizeof(sQuery), "DELETE FROM `sprayhidemanage` WHERE `steamidhider` = '%s' and `steamidtarget` = '%s';", sAuthID, sAuthID_target);
SQL_TQuery(g_hDatabase, DummyCallback, sQuery);
PaintWorldDecalToOne(g_iTransparentDecalIndex, g_vecSprayOrigin[iTarget], client);
@ -1703,7 +1770,16 @@ public Action Command_UnhideSpray(int client, int argc)
continue;
g_bHasSprayHidden[client][i] = false;
PrintToChat(client, "\x01\x04[SprayManager]\x01 You have unhidden \x04%N\x01's spray.", i);
PrintToChat(client, "\x01\x04[SprayManager]\x01 You have unhidden \x04%N\x01's spray.", i); //'
char sAuthID[32];
char sAuthID_target[32];
GetClientAuthId(client, AuthId_Steam2, sAuthID, sizeof(sAuthID), false);
GetClientAuthId(i, AuthId_Steam2, sAuthID_target, sizeof(sAuthID_target), false);
char sQuery[512];
Format(sQuery, sizeof(sQuery), "DELETE FROM `sprayhidemanage` WHERE `steamidhider` = '%s' and `steamidtarget` = '%s';", sAuthID, sAuthID_target);
SQL_TQuery(g_hDatabase, DummyCallback, sQuery);
PaintWorldDecalToOne(g_iTransparentDecalIndex, g_vecSprayOrigin[i], client);
@ -2429,6 +2505,7 @@ public void OnSQLConnected(Handle hParent, Handle hChild, const char[] err, any
SQL_TQuery(g_hDatabase, OnSQLTableCreated, "CREATE TABLE IF NOT EXISTS `spraymanager` (`steamid` VARCHAR(32) NOT NULL, `name` VARCHAR(32) NOT NULL, `unbantime` INT, `issuersteamid` VARCHAR(32), `issuername` VARCHAR(32) NOT NULL, `issuedtime` INT, `issuedreason` VARCHAR(64) NOT NULL, PRIMARY KEY(steamid)) CHARACTER SET utf8 COLLATE utf8_general_ci;");
SQL_TQuery(g_hDatabase, OnSQLSprayBlacklistCreated, "CREATE TABLE IF NOT EXISTS `sprayblacklist` (`sprayhash` VARCHAR(16) NOT NULL, `sprayer` VARCHAR(32) NOT NULL, `sprayersteamid` VARCHAR(32), PRIMARY KEY(sprayhash)) CHARACTER SET utf8 COLLATE utf8_general_ci;");
SQL_TQuery(g_hDatabase, OnSQLNSFWListCreated, "CREATE TABLE IF NOT EXISTS `spraynsfwlist` (`sprayhash` VARCHAR(16) NOT NULL, `sprayersteamid` VARCHAR(32), `setbyadmin` TINYINT, PRIMARY KEY(sprayhash)) CHARACTER SET utf8 COLLATE utf8_general_ci");
SQL_TQuery(g_hDatabase, DummyCallback, "CREATE TABLE IF NOT EXISTS `sprayhidemanage` (`steamidhider` varchar(32), `steamidtarget` varchar(32), PRIMARY KEY (`steamidhider`, `steamidtarget`))");
g_bSQLite = false;
}
@ -2437,6 +2514,7 @@ public void OnSQLConnected(Handle hParent, Handle hChild, const char[] err, any
SQL_TQuery(g_hDatabase, OnSQLTableCreated, "CREATE TABLE IF NOT EXISTS `spraymanager` (`steamid` TEXT NOT NULL, `name` TEXT DEFAULT 'unknown', `unbantime` INTEGER, `issuersteamid` TEXT, `issuername` TEXT DEFAULT 'unknown', `issuedtime` INTEGER NOT NULL, `issuedreason` TEXT DEFAULT 'none', PRIMARY KEY(steamid));");
SQL_TQuery(g_hDatabase, OnSQLSprayBlacklistCreated, "CREATE TABLE IF NOT EXISTS `sprayblacklist` (`sprayhash` TEXT NOT NULL, `sprayer` TEXT DEFAULT 'unknown', `sprayersteamid` TEXT, PRIMARY KEY(sprayhash));");
SQL_TQuery(g_hDatabase, OnSQLNSFWListCreated, "CREATE TABLE IF NOT EXISTS `spraynsfwlist` (`sprayhash` TEXT NOT NULL, `sprayersteamid` TEXT, `setbyadmin` INTEGER, PRIMARY KEY(sprayhash));");
SQL_TQuery(g_hDatabase, DummyCallback, "CREATE TABLE IF NOT EXISTS `sprayhidemanage` (`steamidhider` TEXT, `steamidtarget` TEXT, PRIMARY KEY (`steamidhider`, `steamidtarget`))");
g_bSQLite = true;
}