7RG
Участник
- Сообщения
- 44
- Реакции
- 13
Здравствуйте , кто поможет с плагином
Он выводит статистику игрока за кем наблюдаешь , нужно еще выводить живому человеку кто в игре
vk.com/cs_7rg
Он выводит статистику игрока за кем наблюдаешь , нужно еще выводить живому человеку кто в игре
vk.com/cs_7rg
[OS][LVL]ShowStatsV34:
#include <lvl_ranks>
#include <clientmod>
#include <clientmod/multicolors>
#pragma semicolon 1
#pragma newdecls required
public Plugin myinfo =
{
name = "[OS] [LVL] Show Stats V34",
author = "KiKiEEKi ( DS: kikieeki | vk.com/kikieeki )",
version = "( PRIVATE 1.0.1 )"
};
StringMap g_hRankExpList;
bool g_bShowStats[MAXPLAYERS+1];
float g_fGameTime[MAXPLAYERS+1][2];
int g_iCountPlayers;
float g_fHudPos[2] = {0.87, 0.73}; //Положения HUD (X, Y)
char g_sRank[][32] = {
"Калибровка",
"Silver I",
"Silver II",
"Silver III",
"Silver IV",
"Silver Elite",
"Silver Elite M",
"Gold Nova I",
"Gold Nova II",
"Gold Nova III",
"Gold Nova Master",
"Кaлaш",
"≪Кaлaш≫",
"2 кaлaшa",
"Звeздa",
"Бepкyт",
"≪Бepкyт≫",
"Cупpим",
"Глoбaл"
};
public void OnPluginStart()
{
g_hRankExpList = new StringMap();
LoadTranslations("lr_core_ranks.phrases.txt");
HookEvent("round_start", Event_RoundStart, EventHookMode_PostNoCopy);
RegConsoleCmd("sm_hudstat", Cmd_HudStat);
}
Action Cmd_HudStat(int iClient, int iArgs)
{
g_bShowStats[iClient] = !g_bShowStats[iClient];
return Plugin_Handled;
}
public void Event_RoundStart(Event hEvent, const char[] sEvName, bool bDontBroadcast)
{
g_iCountPlayers = LR_GetCountPlayers();
}
public void OnMapStart()
{
for(int i = 1; i <= MaxClients; ++i) g_fGameTime[i][0] = g_fGameTime[i][1] = 0.0;
g_hRankExpList.Clear();
char sPath[256]; //PLATFORM_MAX_PATH - применяется в буферах под путь файла. Константа равна 256.
BuildPath(Path_SM, sPath, sizeof(sPath), "configs/levels_ranks/settings_ranks.ini");
KeyValues hKV = new KeyValues("LR_Settings");
if(!hKV.ImportFromFile(sPath)) SetFailState("[OS] file is not found (%s)", sPath);
int iExp;
char sRank[16];
if(hKV.JumpToKey("Ranks", false))
{
if(hKV.GotoFirstSubKey())
{
do
{
hKV.GetSectionName(sRank, sizeof(sRank));
iExp = hKV.GetNum("value_0");
g_hRankExpList.SetValue(sRank, iExp);
}
while(hKV.GotoNextKey());
}
}
delete hKV;
g_iCountPlayers = LR_GetCountPlayers();
}
public void OnClientPostAdminCheck(int iClient)
{
g_bShowStats[iClient] = true;
}
//Таймер в сурсмоде уебещный, работает через жопу и поэтому сделал так!!!
public Action OnPlayerRunCmd(int iClient, int& iButtons)
{
if(g_bShowStats[iClient] && !IsPlayerAlive(iClient))
{
g_fGameTime[iClient][0] = GetGameTime();
if(g_fGameTime[iClient][0] >= g_fGameTime[iClient][1])
{
g_fGameTime[iClient][1] = g_fGameTime[iClient][0] + 2.0;
OSShowStats(iClient);
}
}
return Plugin_Continue;
}
#define SPECMODE_NONE 0
#define SPECMODE_FIRSTPERSON 3 //От 1 лица
#define SPECMODE_3RDPERSON 4 //От 3 лица
#define SPECMODE_3RDPERSON2 6 //От 3+ лица
#define SPECMODE_FREELOOK 7 //Свободный полет
void OSShowStats(int iClient)
{
//Клиент наблюдает за каким-то одним человеком
int m_iObserverMode = GetEntProp(iClient, Prop_Send, "m_iObserverMode");
if(m_iObserverMode == 3 || m_iObserverMode == 4 || m_iObserverMode == 6)
{
int iTarget;
char sTarget[32];
//Выясните, на кого смотрит клиент.
if((iTarget = GetEntPropEnt(iClient, Prop_Send, "m_hObserverTarget")) > 0 && !IsFakeClient(iTarget))
{
FormatEx(sTarget, sizeof(sTarget), "%N", iTarget);
int iRank = LR_GetClientInfo(iTarget, ST_RANK);
int iExp;
int iKills = LR_GetClientInfo(iTarget, ST_KILLS);
int iDeaths = LR_GetClientInfo(iTarget, ST_DEATHS);
char sRank[2][64];
char sBuffer[256];
int iTime = (LR_GetClientInfo(iTarget, ST_PLAYTIME) / 60) / 60;
//FormatEx(sRank[0], sizeof(sRank[]), "rank_%i", iRank);
//FormatEx(sRank[1], sizeof(sRank[]), "%t (%i/18)", sRank[0], iRank);
FormatEx(sRank[1], sizeof(sRank[]), "%s (%i/18)", g_sRank[iRank], iRank);
FormatEx(sRank[0], sizeof(sRank[]), "rank_%i", iRank + 1 >= 18 ? iRank : iRank + 1);
g_hRankExpList.GetValue(sRank[0], iExp);
if(CM_GetClientModAuth(iClient) == CM_Auth_ClientMod)
{
FormatEx(sBuffer, sizeof(sBuffer), "{crimson}%s\n{uncommon}TOP: {white}[%i/%i]\n{uncommon}Oчки: {white}[%i/%i]\n{uncommon}Убийcтвa: {white}[%i]\n{uncommon}Cмepти: {white}[%i]\n{uncommon}KDR: {white}[%.2f]\n{uncommon}HS: {white}[%i]\n{green}Oнлaйн: [%i ч.]",
sRank[1],
LR_GetClientInfo(iTarget, ST_PLACEINTOP),
g_iCountPlayers,
LR_GetClientInfo(iTarget, ST_EXP),
iExp,
iKills,
iDeaths,
float(iKills) / float(iDeaths),
LR_GetClientInfo(iTarget, ST_HEADSHOTS),
iTime);
//SetHudTextParams(g_fHudPos[0], g_fHudPos[1], 2.1, 255, 255, 255, 255, 0, 0.0, 0.0, 0.0);
//CFormatHudText(sBuffer, sizeof(sBuffer), "%s", sBuffer);
//ShowHudText(iClient, 4, "%s", sBuffer);
CM_PrintBigHudMsgBg(iClient, 4, g_fHudPos[0], g_fHudPos[1], 1.0, 1.0, 1.0, {0, 0, 0, 120}, 0.50, sBuffer);
}
else {
FormatEx(sBuffer, sizeof(sBuffer), "%s\nTOP: [%i/%i]\nОчки: [%i/%i]\nУбийства: [%i]\nСмерти: [%i]\nKDR [%.2f]\nHS: [%i]\nОнлайн: [%i ч.]",
sRank[1],
LR_GetClientInfo(iTarget, ST_PLACEINTOP),
g_iCountPlayers,
LR_GetClientInfo(iTarget, ST_EXP),
iExp,
iKills,
iDeaths,
float(iKills) / float(iDeaths),
LR_GetClientInfo(iTarget, ST_HEADSHOTS),
iTime);
PrintHintText(iClient, "%s", sBuffer);
}
}
}
}