StatGroups: Convert to AdminGroups plugin.
This commit is contained in:
parent
a7207969ec
commit
5e5dfffb94
@ -1,16 +1,9 @@
|
|||||||
#pragma newdecls required
|
#pragma newdecls required
|
||||||
|
|
||||||
#include <sourcemod>
|
#include <sourcemod>
|
||||||
|
#include <admingroups>
|
||||||
|
|
||||||
#define GAMEID "csgo-ze"
|
#define GameID "csgo-ze"
|
||||||
|
|
||||||
/* BOOLS */
|
|
||||||
bool G_bPreAdminChecked[MAXPLAYERS+1];
|
|
||||||
bool G_bResponseFailed[MAXPLAYERS+1];
|
|
||||||
bool G_bResponsePassed[MAXPLAYERS+1];
|
|
||||||
|
|
||||||
/* INTERGERS */
|
|
||||||
int iRank[MAXPLAYERS+1] = {-1, ...};
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
// Purpose:
|
// Purpose:
|
||||||
@ -26,59 +19,11 @@ public Plugin myinfo =
|
|||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
// Purpose:
|
// Purpose:
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
public void OnRebuildAdminCache(AdminCachePart part)
|
public void OnAllPluginsLoaded()
|
||||||
{
|
{
|
||||||
if (part == AdminCache_Overrides)
|
AdminGroups_CreateAdminGroup("Ranking-Top10");
|
||||||
return;
|
AdminGroups_CreateAdminGroup("Ranking-Top20");
|
||||||
|
AdminGroups_CreateAdminGroup("Ranking-Top40");
|
||||||
if (part == AdminCache_Groups)
|
|
||||||
{
|
|
||||||
CreateAdminGroup("Ranking-Top10");
|
|
||||||
CreateAdminGroup("Ranking-Top20");
|
|
||||||
CreateAdminGroup("Ranking-Top40");
|
|
||||||
}
|
|
||||||
|
|
||||||
CreateTimer(1.0, OnRebuildAdminCachePost, INVALID_HANDLE, TIMER_FLAG_NO_MAPCHANGE);
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
|
||||||
// Purpose:
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
|
||||||
public Action OnRebuildAdminCachePost(Handle hTimer)
|
|
||||||
{
|
|
||||||
for (int client = 1; client <= MaxClients; client++)
|
|
||||||
{
|
|
||||||
if (!G_bResponsePassed[client] || !G_bPreAdminChecked[client])
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (iRank[client] <= 10) ApplyAdminGroup(client, "Ranking-Top10");
|
|
||||||
if (iRank[client] <= 20) ApplyAdminGroup(client, "Ranking-Top20");
|
|
||||||
if (iRank[client] <= 40) ApplyAdminGroup(client, "Ranking-Top40");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
|
||||||
// Purpose:
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
|
||||||
public void OnClientConnected(int client)
|
|
||||||
{
|
|
||||||
G_bPreAdminChecked[client] = false;
|
|
||||||
G_bResponseFailed[client] = false;
|
|
||||||
G_bResponsePassed[client] = false;
|
|
||||||
|
|
||||||
iRank[client] = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
|
||||||
// Purpose:
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
|
||||||
public void OnClientDisconnect(int client)
|
|
||||||
{
|
|
||||||
G_bPreAdminChecked[client] = false;
|
|
||||||
G_bResponseFailed[client] = false;
|
|
||||||
G_bResponsePassed[client] = false;
|
|
||||||
|
|
||||||
iRank[client] = -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
@ -86,82 +31,11 @@ public void OnClientDisconnect(int client)
|
|||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
public void OnClientAuthorized(int client, const char[] sAuthID)
|
public void OnClientAuthorized(int client, const char[] sAuthID)
|
||||||
{
|
{
|
||||||
if ((iRank[client] = RetrieveStatRank(client)) != -1)
|
int rank = RetrieveStatRank(client);
|
||||||
G_bResponsePassed[client] = true;
|
|
||||||
else
|
if (rank <= 10) AdminGroups_GrantAdminGroup(client, "Ranking-Top10");
|
||||||
G_bResponseFailed[client] = true;
|
if (rank <= 20) AdminGroups_GrantAdminGroup(client, "Ranking-Top20");
|
||||||
}
|
if (rank <= 40) AdminGroups_GrantAdminGroup(client, "Ranking-Top40");
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
|
||||||
// Purpose:
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
|
||||||
public Action OnClientPreAdminCheck(int client)
|
|
||||||
{
|
|
||||||
G_bPreAdminChecked[client] = true;
|
|
||||||
|
|
||||||
if (G_bResponsePassed[client] || G_bResponseFailed[client])
|
|
||||||
return Plugin_Continue;
|
|
||||||
|
|
||||||
RunAdminCacheChecks(client);
|
|
||||||
return Plugin_Handled;
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
|
||||||
// Purpose:
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
|
||||||
public void OnClientPostAdminFilter(int client)
|
|
||||||
{
|
|
||||||
if (!G_bResponsePassed[client])
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (iRank[client] <= 10) ApplyAdminGroup(client, "Ranking-Top10");
|
|
||||||
if (iRank[client] <= 20) ApplyAdminGroup(client, "Ranking-Top20");
|
|
||||||
if (iRank[client] <= 40) ApplyAdminGroup(client, "Ranking-Top40");
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
|
||||||
// Purpose:
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
|
||||||
stock void CreateAdminGroup(const char[] group)
|
|
||||||
{
|
|
||||||
GroupId GrpID;
|
|
||||||
|
|
||||||
if ((GrpID = FindAdmGroup(group)) == INVALID_GROUP_ID)
|
|
||||||
{
|
|
||||||
LogMessage("Creating new admin group %s", group);
|
|
||||||
|
|
||||||
GrpID = CreateAdmGroup(group);
|
|
||||||
GrpID.ImmunityLevel = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
|
||||||
// Purpose:
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
|
||||||
stock void ApplyAdminGroup(int client, const char[] group)
|
|
||||||
{
|
|
||||||
AdminId AdmID;
|
|
||||||
GroupId GrpID;
|
|
||||||
|
|
||||||
if ((AdmID = GetUserAdmin(client)) == INVALID_ADMIN_ID)
|
|
||||||
{
|
|
||||||
LogMessage("Creating new admin for %L", client);
|
|
||||||
|
|
||||||
AdmID = CreateAdmin();
|
|
||||||
SetUserAdmin(client, AdmID, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((GrpID = FindAdmGroup(group)) != INVALID_GROUP_ID)
|
|
||||||
{
|
|
||||||
if (AdminInheritGroup(AdmID, GrpID))
|
|
||||||
{
|
|
||||||
LogMessage("%L added to group %s", client, group);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
LogMessage("%L group not found %s", client, group);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
@ -190,7 +64,7 @@ stock int RetrieveStatRank(int client)
|
|||||||
if (GetClientAuthId(client, AuthId_Steam2, sSteamID, sizeof(sSteamID)))
|
if (GetClientAuthId(client, AuthId_Steam2, sSteamID, sizeof(sSteamID)))
|
||||||
strcopy(sSteamID, sizeof(sSteamID), sSteamID[8]);
|
strcopy(sSteamID, sizeof(sSteamID), sSteamID[8]);
|
||||||
|
|
||||||
SQL_FormatQuery(database, sQuery, sizeof(sQuery), "SELECT COUNT(*) AS rank FROM hlstats_Players WHERE hlstats_Players.game = '%s' AND hideranking = 0 AND skill > (SELECT skill FROM hlstats_Players JOIN hlstats_PlayerUniqueIds ON hlstats_Players.playerId = hlstats_PlayerUniqueIds.playerId WHERE hlstats_PlayerUniqueIds.game = '%s' AND uniqueId = '%s')", GAMEID, GAMEID, sSteamID);
|
SQL_FormatQuery(database, sQuery, sizeof(sQuery), "SELECT COUNT(*) AS rank FROM hlstats_Players WHERE hlstats_Players.game = '%s' AND hideranking = 0 AND skill > (SELECT skill FROM hlstats_Players JOIN hlstats_PlayerUniqueIds ON hlstats_Players.playerId = hlstats_PlayerUniqueIds.playerId WHERE hlstats_PlayerUniqueIds.game = '%s' AND uniqueId = '%s')", GameID, GameID, sSteamID);
|
||||||
|
|
||||||
DBResultSet results;
|
DBResultSet results;
|
||||||
if ((results = SQL_Query(database, sQuery)) == null)
|
if ((results = SQL_Query(database, sQuery)) == null)
|
||||||
|
Loading…
Reference in New Issue
Block a user