#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_HONVED 0
#define RANK_ORVEZETO 1
#define RANK_TIZEDES 2
#define RANK_SZAKASZV 3
#define RANK_ORMESTER 4
#define RANK_TORMESTER 5
#define RANK_FTORMESTER 6
#define RANK_ZASZLOS 7
#define RANK_TZASZLOS 8
#define RANK_FTZASZLOS 9
#define RANK_HADNAGY 10
#define RANK_FOHADNAGY 11
#define RANK_SZAZADOS 12
#define RANK_ORNAGY 13
#define RANK_ALEZREDES 14
#define RANK_EZREDES 15
#define RANK_DANDARTABORNOK 16
#define RANK_VEZERORNAGY 17
#define RANK_ALTABORNAGY 18
#define RANK_VEZEREZREDES 19
#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][] =
{
"Honvéd",
"Őrvezető",
"Tizedes",
"Szakaszvezető",
"Őrmester",
"Törzsőrmester",
"Főtörzsőrmester",
"Zászlós",
"Törzszászlós",
"Főtörzszászlós",
"Hadnagy",
"Főhadnagy",
"Százados",
"Őrnagy",
"Alezredes",
"Ezredes",
"Dandártábornok",
"Vezérőrnagy",
"Altábornagy",
"Vezérezredes"
}
#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,
20100
}
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, "^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éseid: ^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, "^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, "^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)
{
//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_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_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[TULAJ][%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_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_HONVED
}
else if(stats[0] >= 50 && stats[0] < 100)
{
PlayerRank[id] = RANK_ORVEZETO
}
else if(stats[0] >= 100 && stats[0] < 200)
{
PlayerRank[id] = RANK_TIZEDES
}
else if(stats[0] >= 200 && stats[0] < 300)
{
PlayerRank[id] = RANK_SZAKASZV
}
else if(stats[0] >= 300 && stats[0] < 450)
{
PlayerRank[id] = RANK_ORMESTER
}
else if(stats[0] >= 450 && stats[0] < 650)
{
PlayerRank[id] = RANK_TORMESTER
}
else if(stats[0] >= 650 && stats[0] < 800)
{
PlayerRank[id] = RANK_FTORMESTER
}
else if(stats[0] >= 800 && stats[0] < 1000)
{
PlayerRank[id] = RANK_ZASZLOS
}
else if(stats[0] >= 1000 && stats[0] < 1200)
{
PlayerRank[id] = RANK_TZASZLOS
}
else if(stats[0] >= 1200 && stats[0] < 1400)
{
PlayerRank[id] = RANK_FZASZLOS
}
else if(stats[0] >= 1400 && stats[0] < 1700)
{
PlayerRank[id] = RANK_HADNAGY
}
else if(stats[0] >= 1700 && stats[0] < 2000)
{
PlayerRank[id] = RANK_FOHADNAGY
}
else if(stats[0] >= 2000 && stats[0] < 2500)
{
PlayerRank[id] = RANK_SZAZADOS
}
else if(stats[0] >= 2500 && stats[0] < 3000)
{
PlayerRank[id] = RANK_ORNAGY
}
else if(stats[0] >= 3000 && stats[0] < 3600)
{
PlayerRank[id] = RANK_ALEZREDES
}
else if(stats[0] >= 3600 && stats[0] < 4500)
{
PlayerRank[id] = RANK_EZREDES
}
else if(stats[0] >= 4500 && stats[0] < 5500)
{
PlayerRank[id] = RANK_DANDARTABORNOK
}
else if(stats[0] >= 5500 && stats[0] < 20000)
{
PlayerRank[id] = RANK_VEZERORNAGY
}
else if(stats[0] >= 20000) && stats[0] < 20100)
{
PlayerRank[id] = RANK_ALTABORNAGY
else if(stats[0] >= 20100) && stats[0] < 20200)
PlayerRank[id] = RANK_VEZEREZREDES
}
set_hudmessage(142, 239, 39, 0.01, 0.20, 0, 6.0, 1.0, 0.0, 0.0, -1)
show_hudmessage(id, "^nÖléseid: %i ^nRangod: %s", stats[0], RANKS[PlayerRank[id]])
//show_hudmessage(id, "%s ^nÖléseid: %i ^nRangod: %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();
}
}
}
}