#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#pragma semicolon 1
#define RED 64
#define GREEN 64
#define BLUE 64
#define ECHOCMD
#define FLAG ADMIN_BAN
#define PLUGIN "SpecList by HENRI(_)LLOYD"
#define VERSION "3.0"
#define AUTHOR "HENRI(_)LLOYD"
new g_fps[33];
new maxplayers;
new gOnOff;
new HudObj;
#define is_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define add_bit(%1,%2) (%1 |= (1 << (%2 & 31)))
#define remove_bit(%1,%2) (%1 &= ~(1 << (%2 & 31)))
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say /speclist", "cmdSpecList");
register_clcmd("say_team /speclist", "cmdSpecList");
register_clcmd("engsay_speclist", "cmdSpecList");
register_forward(FM_PlayerPreThink, "client_think");
maxplayers = get_maxplayers();
HudObj = CreateHudSyncObj();
return set_task(1.0, "tskShowSpec", _, _, _, "b");
}
public cmdSpecList(id)
{
is_bit(gOnOff, id) ? remove_bit(gOnOff, id) : add_bit(gOnOff, id);
#if defined ECHOCMD
return PLUGIN_CONTINUE;
#else
return PLUGIN_HANDLED;
#endif
}
public tskShowSpec()
{
static szHud[512];
static szName[32];
for(new i = 1; i <= maxplayers; i++)
{
new sendto;
if(!is_user_alive(i))
{
continue;
}
new ping;
new loss ;
get_user_ping(i, ping, loss);
get_user_name(i, szName, 31);
new ip[32];
get_user_ip(i, ip, 31, 1);
new len = formatex(szHud, 511, "NOMBRE: %s^nDINERO: %d | VIDA: %d^nPING: %i | FPS: %d^n^nESPECTADORES:^n", szName, cs_get_user_money(i), get_user_health(i), ping, g_fps[i]);
for(new dead = 1; dead <= maxplayers; dead++)
{
if(!is_user_connected(dead) || is_user_alive(dead) || is_user_bot(dead) || is_user_hltv(dead))
{
continue;
}
if(pev(dead, pev_iuser2) == i)
{
if(!(get_user_flags(dead) & FLAG))
{
get_user_name(dead, szName, 31);
len += formatex(szHud, max(0, 511 - len), "%s^n", szName);
}
if(is_bit(gOnOff, dead))
{
add_bit(sendto, dead);
}
}
}
if(sendto)
{
for(new id = 1; id <= maxplayers; id++)
{
if(is_bit(sendto, id))
{
set_hudmessage(RED, GREEN, BLUE, 0.75, 0.15, 0, 0.0, 1.1, 0.0, 0.0, -1);
ShowSyncHudMsg(id, HudObj, szHud);
}
}
}
}
return arrayset(g_fps, 0, 33);
}
public client_think(id)
{
g_fps[id]++;
return FMRES_IGNORED;
}
public client_connect(id)
{
return add_bit(gOnOff, id);
}