#include <amxmodx>
#include <amxmisc>
#include <reapi>
#include <lambda_core>
#include <fun>
#define PLUGIN_NAME "[.:HGS:.] HUD Rank Info"
#define PLUGIN_AUTHOR "Glaster"
#define PLUGIN_VERSION "1.5"
#define TS_TASK_ID 123321
#define F_UPDATE_TIME 1.0
#define F_HOLD_TIME 12.0
new g_iHudSyncObj;
new szHudText[256];
new iUserRank[32]
new uStats[32][8];
new uBodyhits[32][8];
new fEff[32];
new fAcc[32];
new iRankMax = -1;
enum _:USER_STATS
{
STATS_KILLS,
STATS_DEATHS,
STATS_HEADSHOTS,
STATS_TEAMKILLS,
STATS_SHOTS,
STATS_HITS,
STATS_DAMAGE,
STATS_END
}
public client_putinserver(id){
iUserRank[id] = lc_get_user_stats(id, uStats[id], uBodyhits[id]);
fEff[id] = effec(uStats[id]);
fAcc[id] = accuracy(uStats[id]);
}
public client_disconnected(id){
new iEmpty[8]
uStats[id] = iEmpty
fEff[id] = 0.0
fAcc[id] = 0.0
}
public plugin_init() {
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
g_iHudSyncObj = CreateHudSyncObj();
set_task(F_UPDATE_TIME, "ShowScoreHud", TS_TASK_ID, .flags = "b");
}
public ShowScoreHud(id) {
if (iRankMax == -1){
iRankMax = lc_get_statsnum()
}
set_hudmessage(255, 255, 0, 0.01, 0.74, .holdtime = F_HOLD_TIME, .effects=0, .fadeouttime=0, .fadeintime=0);
for(new iPlayer = 1; iPlayer <= MaxClients; iPlayer++)
if(is_user_connected(iPlayer) && is_user_alive(iPlayer) && !is_user_bot(iPlayer)){
formatex(szHudText, charsmax(szHudText), "Your rank is %d of %d with %d kills and %d deaths^nEff: %.2f | Acc: %.2f", iUserRank[iPlayer], iRankMax, uStats[iPlayer][STATS_KILLS], uStats[iPlayer][STATS_DEATHS], fEff[iPlayer], fAcc[iPlayer])
ShowSyncHudMsg(iPlayer, g_iHudSyncObj, szHudText);
}
}
Float:effec(stats[8])
{
if(!stats[STATS_KILLS])
return (0.0)
return (100.0 * float(stats[STATS_KILLS]) / float(stats[STATS_KILLS] + stats[STATS_DEATHS]))
}
Float:accuracy(stats[8])
{
if(!stats[STATS_SHOTS])
return (0.0)
return (100.0 * float(stats[STATS_HITS]) / float(stats[STATS_SHOTS]))
}