#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <csstats>
#include <colorchat>
#pragma tabsize 0
#define PLUGIN "Rankrendszer (HUD + prefix)"
#define VERSION "1.5"
#define AUTHOR "6lmasok,qKKKJ;>, RaZ_HU"
#define ACCESS_LEVEL ADMIN_CHAT
#define ADMIN_LISTEN ADMIN_CHAT
#define RANK_SILVER 0
#define RANK_SILVER2 1
#define RANK_SILVER3 2
#define RANK_SILVER4 3
#define RANK_SILVERE 4
#define RANK_SILVEREM 5
#define RANK_NOVA 6
#define RANK_NOVA2 7
#define RANK_NOVA3 8
#define RANK_NOVAM 9
#define RANK_AK 10
#define RANK_AK2 11
#define RANK_DAK 12
#define RANK_SHERIFF 13
#define RANK_SAS 14
#define RANK_SASM 15
#define RANK_SUPREME 16
#define RANK_GLOBAL 17
#define RANK_UBER 18
#define MAXRANKS 19
new message[192]
new strName[191]
new strText[191]
new sayText
new teamInfo
new maxPlayers
new PlayerRank[33]
new Float:HUD_INTERVAL
new static color[10]
new const RANKS[MAXRANKS][] =
{
"Silver I",
"Silver II",
"Silver III",
"Silver IV",
"Silver Elite",
"Silver Elite Mester",
"Arany Nova I",
"Arany Nova II",
"Arany Nova III",
"Arany Nova Mester",
"AK",
"Koszorús AK",
"Dupla AK",
"Sheriff",
"Sas",
"Sas Mester",
"Supreme",
"Global Elite",
"Veterán"
}
#define size 18
new const szamok[size] =
{
50,
100,
200,
300,
450,
650,
800,
1000,
1200,
1400,
1700,
2000,
2500,
3000,
3600,
4500,
5500,
20000
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /rang", "hud")
register_clcmd("say rang", "hud")
register_clcmd ("say", "hook_say")
register_clcmd ("say_team", "hook_teamsay")
register_cvar("sv_rankrendszer","1") // A plugin be- illetve kikapcsolása
register_cvar("sv_rankrendszer_HUD","0") // A HUD-ra való kijelzés be- illetve kikapcsolása
sethudtime()
sayText = get_user_msgid ("SayText")
teamInfo = get_user_msgid ("TeamInfo")
maxPlayers = get_maxplayers()
set_task(160.0, "korUzenet", 0, _, _, "b")
register_message (sayText, "avoid_duplicated")
}
public sethudtime()
{
new refreshtime = register_cvar("sv_rankrendszer_HUDtime","0.9") // A HUD-ra való kijelzés frissítési ideje másodpercben
if (refreshtime == 0.9)
{
HUD_INTERVAL = 0.9
}
else if (refreshtime != 0.9)
{
HUD_INTERVAL = get_pcvar_float(refreshtime)
}
return PLUGIN_CONTINUE
}
public avoid_duplicated (msgId, msgDest, receiver)
{
return PLUGIN_HANDLED
}
public korUzenet()
{
ColorChat( 0, GREEN, "^3Írd be ^4/rang ^3vagy ^4rang ^3hogy megnézd hány ölés kell a következő ranghoz.")
return PLUGIN_HANDLED;
}
public hud(id)
{
new stats[8]
new bodyhits[8]
get_user_stats(id, stats, bodyhits)
ColorChat( id, GREEN, "^4Rangod: ^3%s ^1| ^4Ölések: ^3%d",RANKS[PlayerRank[id]], stats[0])
if(PlayerRank[id] == MAXRANKS-1)
{
//client_print(id, print_chat, "^4Rangod: ^3%s ^1| ^4Öléseid: ^3%d ^n^4A következő szinthez kell még: ^3%d",RANKS[PlayerRank[id]], stats[0],szamok[PlayerRank[id]]-stats[0])
ColorChat( id, GREEN, "^4Már elérted a legnagyobb ^4rangot.")
}
else
{
//client_print(id, print_chat, "^4Rangod: ^3%s ^1| ^4Öléseid: ^3%d ^n^4Már elérted a legnagyobb rangot.",RANKS[PlayerRank[id]], stats[0])
ColorChat( id, GREEN, "^4Következő rang: ^3%s ^1| ^4A következő szinthez kell még: ^3%d",RANKS[PlayerRank[id]+1], szamok[PlayerRank[id]]-stats[0])
}
}
public hook_say(id)
{
read_args (message, 191)
remove_quotes (message)
if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, "")) // Ignores Admin Hud Messages, Admin Slash commands,
return PLUGIN_CONTINUE
new name[32]
get_user_name (id, name, 31)
new isAlive, alive[32]
if (is_user_alive (id))
{
isAlive = 1
alive = "^1"
}
else
{
isAlive = 0
alive = "^1*HALOTT* "
}
//static color[10]
if(get_user_flags(id)&ADMIN_CVAR)
{
getTeam(id)
format (strName, 191, "%s^4[TULAJDONOS][%s] ^3%s:", alive, RANKS[PlayerRank[id]], name)
format (strText, 191, "^4%s", message)
}
else if(get_user_flags(id)&ADMIN_MAP)
{
getTeam(id)
format (strName, 191, "%s^4[ADMIN][%s] ^3%s:", alive, RANKS[PlayerRank[id]], name)
format (strText, 191, "^4%s", message)
}
else if(get_user_flags(id)&ADMIN_MENU)
{
getTeam(id)
format (strName, 191, "%s^4[VIP][%s] ^3%s:", alive, RANKS[PlayerRank[id]], name)
format (strText, 191, "^4%s", message)
}
else if(get_user_flags(id)&ADMIN_RCON)
{
getTeam(id)
format (strName, 191, "%s^4[KONFIGOS][%s] ^3%s:", alive, RANKS[PlayerRank[id]], name)
format (strText, 191, "^4%s", message)
}
else if(get_user_flags(id)&ADMIN_USER)
{
getTeam(id)
format (strName, 191, "%s^4[%s] ^3%s:",alive, RANKS[PlayerRank[id]], name)
format (strText, 191, "^1%s", message)
}
format (message, 191, "%s ^1%s", strName, strText)
sendMessage (color, isAlive)
return PLUGIN_CONTINUE
}
public hook_teamsay(id)
{
new playerTeam = get_user_team(id)
new playerTeamName[19]
switch (playerTeam)
{
case 1:
copy (playerTeamName, 11, "Terrorista")
case 2:
copy (playerTeamName, 18, "Anti-Terrorista")
default:
copy (playerTeamName, 9, "Néző")
}
read_args (message, 191)
remove_quotes (message)
if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, ""))
return PLUGIN_CONTINUE
new isAlive, alive[32]
if (is_user_alive (id))
{
isAlive = 1
alive = "^1"
}
else
{
isAlive = 0
alive = "^1*HALOTT* "
}
new name[32]
get_user_name (id, name, 31)
//static color[10]
if(get_user_flags(id)&ADMIN_CVAR)
{
//get_user_team (id, color, 9)
getTeam(id)
format (strName, 191, "%s(%s)^4[TULAJDONOS][%s] ^3%s:",alive , playerTeamName, RANKS[PlayerRank[id]], name)
format (strText, 191, "^4%s", message)
}
else if(get_user_flags(id)&ADMIN_MAP)
{
getTeam(id)
format (strName, 191, "%s(%s)^4[ADMIN][%s] ^3%s:",alive , playerTeamName, RANKS[PlayerRank[id]], name)
format (strText, 191, "^4%s", message)
}
else if(get_user_flags(id)&ADMIN_MENU)
{
getTeam(id)
format (strName, 191, "%s(%s)^4[VIP][%s] ^3%s:",alive , playerTeamName, RANKS[PlayerRank[id]], name)
format (strText, 191, "^4%s", message)
}
else if(get_user_flags(id)&ADMIN_RCON)
{
getTeam(id)
format (strName, 191, "%s(%s)^4[KONFIGOS][%s] ^3%s:",alive , playerTeamName, RANKS[PlayerRank[id]], name)
format (strText, 191, "^4%s", message)
}
else if(get_user_flags(id) & ADMIN_USER)
{
getTeam(id)
format (strName, 191, "%s(%s)^4[%s] ^3%s:",alive ,playerTeamName, RANKS[PlayerRank[id]], name)
format (strText, 191, "^1%s", message)
}
format (message, 191, "%s ^1%s", strName, strText)
sendTeamMessage (color,isAlive, playerTeam)
return PLUGIN_CONTINUE
}
public sendMessage (color[], alive)
{
new teamName[10]
for (new player = 1; player < maxPlayers; player++)
{
if (!is_user_connected(player))
continue
if((alive && is_user_alive(player)) || (!alive && !is_user_alive(player)) || (get_user_flags(player) && ADMIN_LISTEN))
{
get_user_team (player, teamName, 9)
changeTeamInfo (player, color)
writeMessage (player, message)
changeTeamInfo (player, teamName)
}
}
}
public sendTeamMessage (color[], alive, playerTeam)
{
new teamName[10]
for (new player = 1; player < maxPlayers; player++)
{
if (!is_user_connected(player))
continue
if (get_user_team(player) == playerTeam || get_user_flags(player) & ADMIN_LISTEN)
{
if (alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_user_flags(player) & ADMIN_LISTEN)
{
get_user_team (player, teamName, 9)
changeTeamInfo (player, color)
writeMessage (player, message)
changeTeamInfo (player, teamName)
}
}
}
}
public changeTeamInfo (player, team[])
{
message_begin (MSG_ONE, teamInfo, _, player)
write_byte (player)
write_string (team)
message_end()
}
public writeMessage (player, message[])
{
message_begin (MSG_ONE, sayText, {0, 0, 0}, player)
write_byte (player)
write_string (message)
message_end ()
}
stock bool:is_user_steam(id)
{
static dp_pointer;
if (dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id);
server_exec();
return (get_pcvar_num(dp_pointer) == 2) ? true : false;
}
return false;
}
public client_putinserver(id)
{
if(get_cvar_num("sv_rankrendszer")==0)
{
return PLUGIN_HANDLED
}
else if (get_cvar_num("sv_rankrendszer")==1 && get_cvar_num("sv_rankrendszer_HUD")==1)
{
set_task(HUD_INTERVAL, "setDisplay", id)
}
else
{
set_task(0.5, "remTask", id)
}
return PLUGIN_CONTINUE
}
public remTask(id)
{
remove_task(id, 0)
}
public getTeam(id)
{
get_user_team (id, color, 9)
}
public setDisplay(id)
{
if(!is_user_connected(id))
return PLUGIN_CONTINUE
new stats[8]
new bodyhits[8]
get_user_stats(id, stats, bodyhits)
if(stats[0] < 50)
{
PlayerRank[id] = RANK_SILVER
}
else if(stats[0] >= 50 && stats[0] < 100)
{
PlayerRank[id] = RANK_SILVER2
}
else if(stats[0] >= 100 && stats[0] < 200)
{
PlayerRank[id] = RANK_SILVER3
}
else if(stats[0] >= 200 && stats[0] < 300)
{
PlayerRank[id] = RANK_SILVER4
}
else if(stats[0] >= 300 && stats[0] < 450)
{
PlayerRank[id] = RANK_SILVERE
}
else if(stats[0] >= 450 && stats[0] < 650)
{
PlayerRank[id] = RANK_SILVEREM
}
else if(stats[0] >= 650 && stats[0] < 800)
{
PlayerRank[id] = RANK_NOVA
}
else if(stats[0] >= 800 && stats[0] < 1000)
{
PlayerRank[id] = RANK_NOVA2
}
else if(stats[0] >= 1000 && stats[0] < 1200)
{
PlayerRank[id] = RANK_NOVA3
}
else if(stats[0] >= 1200 && stats[0] < 1400)
{
PlayerRank[id] = RANK_NOVAM
}
else if(stats[0] >= 1400 && stats[0] < 1700)
{
PlayerRank[id] = RANK_AK
}
else if(stats[0] >= 1700 && stats[0] < 2000)
{
PlayerRank[id] = RANK_AK2
}
else if(stats[0] >= 2000 && stats[0] < 2500)
{
PlayerRank[id] = RANK_DAK
}
else if(stats[0] >= 2500 && stats[0] < 3000)
{
PlayerRank[id] = RANK_SHERIFF
}
else if(stats[0] >= 3000 && stats[0] < 3600)
{
PlayerRank[id] = RANK_SAS
}
else if(stats[0] >= 3600 && stats[0] < 4500)
{
PlayerRank[id] = RANK_SASM
}
else if(stats[0] >= 4500 && stats[0] < 5500)
{
PlayerRank[id] = RANK_SUPREME
}
else if(stats[0] >= 5500 && stats[0] < 20000)
{
PlayerRank[id] = RANK_GLOBAL
}
else if(stats[0] >= 20000)
{
PlayerRank[id] = RANK_UBER
}
set_hudmessage(random(255),random(255),random(255), 0.0, 0.19, 0, 6.0, 12.0)
show_hudmessage(id, "^nÖléseid: %i ^nRang: %s", stats[0], RANKS[PlayerRank[id]])
//show_hudmessage(id, "%s ^nÖléseid: %i ^nRang: %s", name, stats[0], RANKS[PlayerRank[id]])
set_task(HUD_INTERVAL, "setDisplay", id)
return PLUGIN_CONTINUE
}
stock colorchat(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^4"); // Green Color
replace_all(msg, 190, "!y", "^1"); // Default Color
replace_all(msg, 190, "!t", "^3"); // Team Color
if (id) players[0] = id; else get_players(players, count, "ch");
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}