#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <csstats>
#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][] =
{
"Őrvezető|Lvl.1",
"Tizedes|Lvl.2",
"Szakaszvezető|Lvl.3",
"Őrmester|Lvl.4",
"Törzsőrmester|Lvl.5",
"Főtörzsőrmester|Lvl.6",
"Zászlós|Lvl.7",
"Törzszászlós|Lvl.8",
"Főtörzszászlós|Lvl.9",
"Alhadnagy|Lvl.10",
"Hadnagy|Lvl.11",
"Főhadnagy|Lvl.12",
"Százados|Lvl.13",
"Őrnagy|Lvl.14",
"Alezredes|Lvl.15",
"Ezredes|Lvl.16",
"Dandártábornok|Lvl.17",
"Vezérőrnagy|Lvl.18",
"Vezérezredes|Lvl.19"
}
#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","1") // 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, "^4[-|MNK|-]^1Írd be ^4/rang ^1vagy ^4rang ^1hogy 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, "^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ések: ^3%d ^n^4A következő szinthez kell még: ^3%d",RANKS[PlayerRank[id]], stats[0],szamok[PlayerRank[id]]-stats[0])
ColorChat( id, "^4Már elérted a legnagyobb ^4rangot.")
}
else
{
//client_print(id, print_chat, "^4Rangod: ^3%s ^1| ^4Ölések: ^3%d ^n^4Már elérted a legnagyobb rangot.",RANKS[PlayerRank[id]], stats[0])
ColorChat( id, "^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_RCON)
{
//get_user_team (id, color, 9)
getTeam(id)
format (strName, 191, "%s^4[Tulaj][%s] ^3%s:", alive, RANKS[PlayerRank[id]], name)
format (strText, 191, "^4%s", message)
}
else if(get_user_flags(id)&ADMIN_LEVEL_H)
{
getTeam(id)
format (strName, 191, "%s^4[Configos][%s] ^3%s:", alive, RANKS[PlayerRank[id]], name)
format (strText, 191, "^4%s", message)
}
else if(get_user_flags(id)&ADMIN_BAN)
{
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_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_RCON)
{
//get_user_team (id, color, 9)
getTeam(id)
format (strName, 191, "%s(%s)^4[Tulaj][%s] ^3%s:",alive , playerTeamName, RANKS[PlayerRank[id]], name)
format (strText, 191, "^4%s", message)
}
else if(get_user_flags(id)&ADMIN_LEVEL_H)
{
getTeam(id)
format (strName, 191, "%s(%s)^4[Configos][%s] ^3%s:",alive , playerTeamName, RANKS[PlayerRank[id]], name)
format (strText, 191, "^4%s", message)
}
else if(get_user_flags(id)&ADMIN_BAN)
{
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_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(142, 239, 39, 0.01, 0.20, 1, 6.0, 1.0, 0.0, 0.0, -1)
show_hudmessage(id, "^nÖléseid: %i ^nRang: %s", stats[0], RANKS[PlayerRank[id]])
//show_hudmessage(id, "%s ^nÖlések: %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();
}
}
}
}