Danyas
Участник
- Сообщения
- 2,173
- Реакции
- 1,072
PHP:
#include <rankme>
public Plugin:myinfo = {
name = "RankMe Info",
author = "Danyas",
version = "1.1",
url = "http://hlmod.ru/forum/member.php?u=38940"
};
new Handle:g_hPrintType = INVALID_HANDLE;
new Handle:g_hHookType = INVALID_HANDLE;
new g_Type;
public OnPluginStart()
{
g_hPrintType = CreateConVar("sm_rankinfo_type", "2", "Display a message saying that your rank. 0 - disable 1 - chat 2 - hint 3 - center", FCVAR_PLUGIN, true, 0.0, true, 3.0);
g_hHookType = CreateConVar("sm_rankinfo_event", "1", "Display a message on event. 0 - player_death 1 - player_spawn 2 - round_start 3 - round_end [PLUGIN MUST BE RESTARTED AFTER EDIT!!!]", FCVAR_PLUGIN, true, 0.0, true, 3.0);
// if (g_hPrintType) HookConVarChange(g_hHookType, Rehook);
HookConVarChange(g_hPrintType, Rehook_msg);
new HookType = GetConVarInt(g_hHookType);
if (HookType == 0) HookEvent("player_death", Event_P);
else if (HookType == 1) HookEvent("player_spawn", Event_P);
else if (HookType == 2) HookEvent("round_start", Event_R);
else HookEvent("round_end", Event_R);
g_Type = GetConVarInt(g_hPrintType);
AutoExecConfig(true, "rankme_info");
}
public Rehook_msg(Handle:convar, const String:oldValue[], const String:newValue[])
{
g_Type = GetConVarInt(g_hPrintType);
}
/*
public Rehook(Handle:convar, const String:oldValue[], const String:newValue[])
{
if (StrEqual(oldValue, newValue)) return
else if (StrEqual(oldValue, "0")) UnhookEvent("player_death", Event)
else if (StrEqual(oldValue, "1")) UnhookEvent("player_spawn", Event)
else if (StrEqual(oldValue, "2")) UnhookEvent("round_start", Event)
else UnhookEvent("round_end", Event)
if (StrEqual(newValue, "0")) HookEvent("player_death", Event);
else if (StrEqual(newValue, "1")) HookEvent("player_spawn", Event);
else if (StrEqual(newValue, "2")) HookEvent("round_start", Event);
else HookEvent("round_end", Event);
}
*/
public Event_P(Handle: event , const String: name[] , bool: dontBroadcast)
{
if(g_Type != 0) RankMe_GetRank(GetClientOfUserId(GetEventInt(event,"userid")),RankCallback);
}
public Event_R(Handle: event , const String: name[] , bool: dontBroadcast)
{
if(g_Type != 0)
{
new count = 0;
for (new i = 1; i <= MaxClients; i++)
{
if(IsClientInGame(i) && !IsFakeClient(i))
{
count++;
RankMe_GetRank(i,RankCallback);
}
}
}
}
public RankCallback(client, rank, any:data)
{
if(IsClientInGame(client) && !IsFakeClient(client))
{
if(g_Type == 1)PrintToChat(client, "\x04[RankMe Info]\x01 %N занимает \x04%d\x01 место с \x04%d\x01 очк.",client,rank,RankMe_GetPoints(client));
else if(g_Type == 2)PrintHintText(client, "[RankMe Info]\n%N\n%d место\n%d очк.",client,rank,RankMe_GetPoints(client));
else PrintCenterText(client, "[RankMe Info]\n%N\n%d место\n%d очк.",client,rank,RankMe_GetPoints(client));
}
}
Буду рад варианту реализации закоменченой части кода :)
На сервере всё работает

