#pragma newdecls required
Database hDatabase = null;
public Plugin myinfo =
{
name = "HLStatsX: TOP Announcer",
author = "Danyas"
}
// Если эта функция вызывается каждый рестарт карты,
// то блок OnMapStart можно удалить. Меня глючит.
public void OnPluginStart ( )
{
Database.Connect ( GotDatabase, "hlstats" );
}
public void OnMapStart ( )
{
if ( hDatabase == null )
{
Database.Connect ( GotDatabase, "hlstats" );
}
}
public void OnMapEnd ( )
{
delete hDatabase;
}
public void GotDatabase ( Database db, const char[] error, any data )
{
if ( hDatabase != null )
{
delete db;
return;
}
hDatabase = db;
if ( hDatabase == null )
{
LogError ( "Database failure: %s", error );
return;
}
}
public void OnClientPostAdminCheck ( int client )
{
if ( client == 0 )
{
return;
}
char steamid [ 32 ], query [ 512 ];
GetClientAuthId ( client, AuthId_Engine, steamid, sizeof( steamid ) );
Format ( query, sizeof( query ), "SELECT COUNT(*) AS rank FROM hlstats_Players WHERE hlstats_Players.game = 'v34' AND hideranking = 0 AND skill > (SELECT skill from hlstats_Players JOIN hlstats_PlayerUniqueIds ON hlstats_Players.playerId = hlstats_PlayerUniqueIds.playerId WHERE uniqueID = MID('%s', 9) AND hlstats_PlayerUniqueIds.game = 'v34') -1", steamid );
if ( !hDatabase )
{
Database.Connect ( GotDatabase, "hlstats" );
}
// DBPrio_High наверное можно убрать. Мне просто хотелось подлиннее строчку.
hDatabase.Query ( T_CheckTop10, query, client, DBPrio_High );
}
public void T_CheckTop10 ( Database db, DBResultSet rs, const char[] error, any client )
{
if ( !IsClientConnected ( client ) || IsFakeClient( client ) )
{
return;
}
if ( rs == null )
{
LogError ( "Query failed! %s", error );
return;
}
if ( rs.FetchRow ( ) )
{
int pid = rs.FetchInt ( 0 );
if ( pid > 0 )
{
if(5 < pid < 11) PrintToChatAll("\x04[HLStatsX:CE]\x03 ТОП-10\x01 Игрок \x03%N\x01 подключен.",client);
else if(3 < pid < 6) PrintToChatAll("\x04[HLStatsX:CE]\x03 ТОП-5\x01 Игрок \x03%N\x01 подключен.", client);
else if(1 < pid < 4) PrintToChatAll("\x04[HLStatsX:CE]\x03 ТОП-3\x01 Игрок \x03%N\x01 подключен.", client);
else if(0 < pid < 2) PrintToChatAll("\x04[HLStatsX:CE]\x03 ТОП-1\x01 Игрок \x03%N\x01 подключен.", client);
}
}
}