97 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			SourcePawn
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			SourcePawn
		
	
	
	
	
	
#pragma newdecls required
 | 
						|
 | 
						|
#include <sourcemod>
 | 
						|
#include <admingroups>
 | 
						|
 | 
						|
#define GameID "csgo-ze"
 | 
						|
 | 
						|
//----------------------------------------------------------------------------------------------------
 | 
						|
// Purpose:
 | 
						|
//----------------------------------------------------------------------------------------------------
 | 
						|
public Plugin myinfo =
 | 
						|
{
 | 
						|
	name         = "StatGroups",
 | 
						|
	author       = "zaCade (Original by Jenz)",
 | 
						|
	description  = "Grant sourcemod groups based on HLStats ranks",
 | 
						|
	version      = "1.2"
 | 
						|
};
 | 
						|
 | 
						|
//----------------------------------------------------------------------------------------------------
 | 
						|
// Purpose:
 | 
						|
//----------------------------------------------------------------------------------------------------
 | 
						|
public void OnAllPluginsLoaded()
 | 
						|
{
 | 
						|
	AdminGroups_CreateAdminGroup("Ranking-Top10");
 | 
						|
	AdminGroups_CreateAdminGroup("Ranking-Top20");
 | 
						|
	AdminGroups_CreateAdminGroup("Ranking-Top40");
 | 
						|
}
 | 
						|
 | 
						|
//----------------------------------------------------------------------------------------------------
 | 
						|
// Purpose:
 | 
						|
//----------------------------------------------------------------------------------------------------
 | 
						|
public void OnClientAuthorized(int client, const char[] sAuthID)
 | 
						|
{
 | 
						|
	int rank;
 | 
						|
	if ((rank = RetrieveStatRank(client)) == -1)
 | 
						|
		return;
 | 
						|
 | 
						|
	if (rank <= 10) AdminGroups_GrantAdminGroup(client, "Ranking-Top10");
 | 
						|
	if (rank <= 20) AdminGroups_GrantAdminGroup(client, "Ranking-Top20");
 | 
						|
	if (rank <= 40) AdminGroups_GrantAdminGroup(client, "Ranking-Top40");
 | 
						|
}
 | 
						|
 | 
						|
//----------------------------------------------------------------------------------------------------
 | 
						|
// Purpose:
 | 
						|
//----------------------------------------------------------------------------------------------------
 | 
						|
stock int RetrieveStatRank(int client)
 | 
						|
{
 | 
						|
	char sError[512];
 | 
						|
	char sQuery[512];
 | 
						|
 | 
						|
	if (!SQL_CheckConfig("stats"))
 | 
						|
	{
 | 
						|
		LogError("Could not find database config \"stats\".");
 | 
						|
		return -1;
 | 
						|
	}
 | 
						|
 | 
						|
	Database database;
 | 
						|
	if ((database = SQL_Connect("stats", true, sError, sizeof(sError))) == null)
 | 
						|
	{
 | 
						|
		LogError("Connection error: \"%s\".", sError);
 | 
						|
		delete database;
 | 
						|
		return -1;
 | 
						|
	}
 | 
						|
 | 
						|
	char sSteamID[32];
 | 
						|
	if (GetClientAuthId(client, AuthId_Steam2, sSteamID, sizeof(sSteamID)))
 | 
						|
		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);
 | 
						|
 | 
						|
	DBResultSet results;
 | 
						|
	if ((results = SQL_Query(database, sQuery)) == null)
 | 
						|
	{
 | 
						|
		delete database;
 | 
						|
		delete results;
 | 
						|
		return -1;
 | 
						|
	}
 | 
						|
 | 
						|
	if (!results.FetchRow())
 | 
						|
	{
 | 
						|
		delete database;
 | 
						|
		delete results;
 | 
						|
		return -1;
 | 
						|
	}
 | 
						|
 | 
						|
	int rank;
 | 
						|
	if ((rank = results.FetchInt(0)) == 0)
 | 
						|
	{
 | 
						|
		delete database;
 | 
						|
		delete results;
 | 
						|
		return -1;
 | 
						|
	}
 | 
						|
 | 
						|
	delete database;
 | 
						|
	delete results;
 | 
						|
	return rank;
 | 
						|
} |