#pragma semicolon 1
#include <sourcemod>
#include <rankme>
public Plugin:myinfo =
{
name = "Rankme Spectate",
author = "wS (World-Source.Ru)",
version = "1.5.2"
};
new g_Rank[MAXPLAYERS + 1];
new g_LastTarget[MAXPLAYERS + 1], g_LastTargetScore[MAXPLAYERS + 1];
new bool:g_bTest;
new stats[STATS_NAMES];
public OnPluginStart()
{
CreateTimer(0.7, g_hTimer_CallBack, _, TIMER_REPEAT);
new Handle:cvar = CreateConVar("rankme_spectate_test", "0", "1 = показать ранк после входа (тест). 0 = нет.");
g_bTest = GetConVarBool(cvar); HookConVarChange(cvar, cvar_changed);
}
public cvar_changed(Handle:cvar, const String:OldValue[], const String:NewValue[])
{
g_bTest = StringToInt(NewValue) == 1;
}
public OnClientConnected(client)
{
g_Rank[client] = 0;
g_LastTarget[client] = 0;
g_LastTargetScore[client] = 0;
}
public OnClientDisconnect(client)
{
g_Rank[client] = 0;
}
public Action:RankMe_OnPlayerLoaded(client)
{
RankMe_GetRank(client, RankConnectCallback);
return Plugin_Continue;
}
public RankConnectCallback(client, rank, any:data)
{
g_Rank[client] = rank;
if (g_bTest) PrintToChat(client, "RankMe: Ваш ранк на сервере: %d", rank);
}
public Action:g_hTimer_CallBack(Handle:timer)
{
decl target, i;
for (i = 1; i <= MaxClients; i++)
{
if (IsClientInGame(i) && !IsPlayerAlive(i))
{
target = GetEntPropEnt(i, Prop_Send, "m_hObserverTarget");
if (target > 0 && target <= MaxClients && IsClientInGame(target))
{
if (g_LastTarget[i] != target)
{
g_LastTarget[i] = target;
RankMe_GetStats(target, stats[SCORE]);
g_LastTargetScore[i] = stats[SCORE];
}
if (g_bTest)
PrintToConsole(i, "RankMe: Вы наблюдаете за: %d", target);
PrintHintText(i, "%N\nРанг: %d \nОчки: %d", target, g_Rank[target], g_LastTargetScore[i]);
}
}
}
return Plugin_Continue;
}