#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <csstats>
// fegyvermenu2.2.amxx
#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_FZASZLOS 10
#define RANK_HADNAGY 11
#define RANK_FOHADNAGY 12
#define RANK_SZAZADOS 13
#define RANK_ORNAGY 14
#define RANK_ALEZREDES 15
#define RANK_EZREDES 16
#define RANK_DANDARTABORNOK 17
#define RANK_VEZERORNAGY 18
#define RANK_ALTABORNAGY 19
#define RANK_VEZEREZREDES 20
#define MAXRANKS 20
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 II",
"Silver IV",
"Silver Elite",
"Silver Elite Master",
"Gold Nova I",
"Gold Nova III",
"Gold Nova Master",
"Master Guardian I",
"Master Guardian II",
"Master Guardian Elite",
"Distinguished Master Guardian",
"Legendary Eagle",
"Legendary Eagle Master",
"Supreme Master First Class",
"The Global Elite",
"Kimaxoltad a szintedet.",
"Altábornagy",
"Vezérezredes"
}
#define size 20
new const szamok[size] =
{
50, // SILVER
100, // SILVER
150, // SILVER
250, // SILVER
350, // SILVER
450, // SILVER
600, // GOLD
800, // GOLD
1000, // GOLD
1200, // Master
1700, // Master
1900, // Master
2500, // Master
3000, // Legendary
4000, // Legendary
5000, // Supreme
7000, // Gloabl Elite
99995,
99998,
99999
}
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_IMMUNITY)
{
//get_user_team (id, color, 9)
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_LEVEL_B)
{
getTeam(id)
format (strName, 191, "%s^4[Főadmin][%s] ^3%s:", alive, RANKS[PlayerRank[id]], name)
format (strText, 191, "^4%s", message)
}
else if(get_user_flags(id)& ADMIN_LEVEL_C)
{
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 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] < 150)
{
PlayerRank[id] = RANK_TIZEDES
}
else if(stats[0] >= 200 && stats[0] < 250)
{
PlayerRank[id] = RANK_SZAKASZV
}
else if(stats[0] >= 300 && stats[0] < 350)
{
PlayerRank[id] = RANK_ORMESTER
}
else if(stats[0] >= 450 && stats[0] < 450)
{
PlayerRank[id] = RANK_TORMESTER
}
else if(stats[0] >= 650 && stats[0] < 600)
{
PlayerRank[id] = RANK_FTORMESTER
}
else if(stats[0] >= 800 && stats[0] < 800)
{
PlayerRank[id] = RANK_ZASZLOS
}
else if(stats[0] >= 1000 && stats[0] < 1000)
{
PlayerRank[id] = RANK_TZASZLOS
}
else if(stats[0] >= 1200 && stats[0] < 1200)
{
PlayerRank[id] = RANK_FZASZLOS
}
else if(stats[0] >= 1400 && stats[0] < 1700)
{
PlayerRank[id] = RANK_HADNAGY
}
else if(stats[0] >= 1700 && stats[0] < 1900)
{
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] < 4000)
{
PlayerRank[id] = RANK_ALEZREDES
}
else if(stats[0] >= 3600 && stats[0] < 5000)
{
PlayerRank[id] = RANK_EZREDES
}
else if(stats[0] >= 4500 && stats[0] < 7000)
{
PlayerRank[id] = RANK_DANDARTABORNOK
}
else if(stats[0] >= 5500 && stats[0] < 99995)
{
PlayerRank[id] = RANK_VEZERORNAGY
}
else if(stats[0] >= 20000 && stats[0] < 99998)
{
PlayerRank[id] = RANK_ALTABORNAGY
}
else if(stats[0] >= 20100 && stats[0] < 99999)
{
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();
}
}
}
}