#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" ///Szerk:. Jucika
#define ACCESS_LEVEL ADMIN_CHAT
#define ADMIN_LISTEN ADMIN_CHAT
#define MAXRANKS 19
new message[192]
new strName[191]
new strText[191]
new sayText
new teamInfo
new maxPlayers
new PlayerRank[33]
new bool: g_bHud[ 33 ]
new Float:HUD_INTERVAL
new static color[10]
new ShowSyncHudMSG
new const RANKS[MAXRANKS][] =
{
"[«Újonc»]",
"[«Játékos»]",
"[«Királynő»]",
"[«Király»]",
"[«Élő Zombie»]",
"[«Csont hülye»]",
"[«Gladiátor»]",
"[«Manusz»]",
"[«Ătkozot»]",
"[«Vén ember»]",
"[«Focista»]",
"[«Hamupipőke»]",
"[«Kristály»]",
"[«Szarvas»]",
"[«Legendary»]",
"[«Füles bagoly»]",
"[«Porno szĂnĂ©sz»]",
"[«Védelmező»]",
"[«DSF Szerver Tag»]"
}
new const szamok[MAXRANKS-1] =
{
50,
100,
150,
200,
250,
300,
350,
400,
450,
500,
550,
600,
650,
700,
750,
800,
850,
900
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /rang", "hud")
register_clcmd("say rang", "hud")
register_clcmd( "say /rangok", "cmdRangs" );
register_clcmd( "say /hud", "cmdHud" );
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")
ShowSyncHudMSG = CreateHudSyncObj()
register_message (sayText, "avoid_duplicated")
}
public cmdRangs( iPlayerId )
{
static iLen = 0, sMotd[ 2048 ], iMotdLen = charsmax( sMotd );
iLen = formatex( sMotd, iMotdLen, "<meta charset=utf-8><style>table{color:#FFB000;} td,th{border:1px solid #666;text-align:center;}</style><body bgcolor=#000000><center><table width='400'><tr><th>Rang</th><th>Ölés</th><tr>" );
iLen += formatex( sMotd[ iLen ], iMotdLen - iLen, "<tr><td>%s</td><td>0</td><tr>", RANKS[ 0 ] );
for ( new i; i < MAXRANKS-1; ++i )
iLen += formatex( sMotd[ iLen ], iMotdLen - iLen, "<tr><td>%s</td><td>%d</td><tr>", RANKS[ i + 1 ], szamok[ i ] );
show_motd( iPlayerId, sMotd, "Rangrendszer infĂł" );
}
public cmdHud( iPlayerId )
{
ColorChat( iPlayerId, "^1A hud kijelző ^3%skapcsolva^1!", ( g_bHud[ iPlayerId ] ^= true ) ? "be" : "ki" );
if ( !g_bHud[ iPlayerId ] ) remove_task( iPlayerId );
else { if ( !task_exists( iPlayerId ) ) set_task( HUD_INTERVAL, "setDisplay", iPlayerId ); }
}
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)
}
}
public avoid_duplicated (msgId, msgDest, receiver)
{
return PLUGIN_HANDLED
}
public korUzenet()
{
ColorChat( 0, "^4[.:*DSF*:.]^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)
{
ColorChat( id, "^4Rangod: ^3%s ^1| ^4Ölések: ^3%d",RANKS[PlayerRank[id]], get_player_stats(id,0))
if(PlayerRank[id] == MAXRANKS-1)
{
ColorChat( id, "^4Mar elérted a legnagyobb ^4rangot.")
}
else
{
ColorChat( id, "^4következő rang: ^3%s ^1| ^4A következő ranghoz kell még: ^3%d",RANKS[PlayerRank[id]+1], szamok[PlayerRank[id]]-get_player_stats(id,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
static name[32]
name = get_player_name(id)
new isAlive, alive[32]
if (is_user_alive (id))
{
isAlive = 1
alive = ""
}
else
{
isAlive = 0
alive = "^1*Halott* "
}
getTeam(id)
if(get_user_flags(id)&ADMIN_CVAR) // G jog
{
formatex (strName, 191, "%s^4[«Tulajdonos»]^3%s^1» ^4%s^1:^2", alive, RANKS[PlayerRank[id]], name)
formatex (strText, 191, "^4%s", message)
}
else if(get_user_flags(id)&ADMIN_CFG) // H jog
{
formatex (strName, 191, "%s^4[«FőAdmin»]^3%s^1» ^4%s^1:^2", alive, RANKS[PlayerRank[id]], name)
formatex (strText, 191, "^4%s", message)
}
else if(get_user_flags(id)&ADMIN_MAP) // F jog
{
formatex (strName, 191, "%s^4[«Admin»]^3%s^1» ^3%s^1:^2", alive, RANKS[PlayerRank[id]], name)
formatex (strText, 191, "^4%s", message)
}
else if(get_user_flags(id)&ADMIN_MENU) // U jog
{
formatex (strName, 191, "%s^4[«Vip»]^3%s^1» ^3%s^1:^2", alive, RANKS[PlayerRank[id]], name)
formatex (strText, 191, "^4%s", message)
}
else if(get_user_flags(id)&ADMIN_USER) // Z jog (alapbĂłl minden player)
{
formatex (strName, 191, "%s^4[%s] ^3%s:",alive, RANKS[PlayerRank[id]], name)
formatex (strText, 191, "^1%s", message)
}
formatex (message, 191, "%s ^1%s", strName, strText)
sendMessage (color, isAlive)
return PLUGIN_HANDLED
}
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
static name[32]
name = get_player_name(id)
new isAlive, alive[32]
if (is_user_alive (id))
{
isAlive = 1
alive = "^1*Él*"
}
else
{
isAlive = 0
alive = "^1*Halott* "
}
getTeam(id)
if(get_user_flags(id)&ADMIN_CVAR) // G jog
{
formatex (strName, 191, "%s(%s)^4[«Tulajdonos»]^3%s^1» ^4%s^1:^2",alive , playerTeamName, RANKS[PlayerRank[id]], name)
formatex (strText, 191, "^4%s", message)
}
else if(get_user_flags(id)&ADMIN_CFG) // H jog
{
formatex (strName, 191, "%s(%s)^4[«FőAdmin»]^3%s^1» ^4%s^1:^2",alive , playerTeamName, RANKS[PlayerRank[id]], name)
formatex (strText, 191, "^4%s", message)
}
else if(get_user_flags(id)&ADMIN_MAP) // F jog
{
formatex (strName, 191, "%s(%s)^4[«Admin»]^3%s^1» ^3%s^1:^2",alive , playerTeamName, RANKS[PlayerRank[id]], name)
formatex (strText, 191, "^4%s", message)
}
else if(get_user_flags(id)&ADMIN_MENU) // U jog
{
formatex (strName, 191, "%s(%s)^4[«Vip»]^3%s^1» ^3%s:^1:^2",alive , playerTeamName, RANKS[PlayerRank[id]], name)
formatex (strText, 191, "^4%s", message)
}
else if(get_user_flags(id)&ADMIN_USER) // Z jog (alapbĂłl minden player)
{
formatex (strName, 191, "%s(%s)[%s] ^1%s:",alive ,playerTeamName, RANKS[PlayerRank[id]], name)
formatex (strText, 191, "^1%s", message)
}
formatex (message, 191, "%s ^1%s", strName, strText)
sendTeamMessage (color,isAlive, playerTeam)
return PLUGIN_HANDLED
}
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 ()
}
public client_putinserver(id)
{
if(get_cvar_num("sv_rankrendszer")==0)
{
return
}
if (get_cvar_num("sv_rankrendszer")==1)
{
g_bHud[ id ] = true;
set_task(HUD_INTERVAL, "setDisplay", id)
}
else
{
set_task(0.5, "remTask", id)
}
}
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
new kills = get_player_stats(id,0)
if(kills < 50)
{
PlayerRank[id] = 0
}
else if(kills >= 50 && kills < 100)
{
PlayerRank[id] = 1
}
else if(kills >= 100 && kills < 150)
{
PlayerRank[id] = 2
}
else if(kills >= 150 && kills < 200)
{
PlayerRank[id] = 3
}
else if(kills >= 200 && kills < 250)
{
PlayerRank[id] = 4
}
else if(kills >= 250 && kills < 300)
{
PlayerRank[id] = 5
}
else if(kills >= 300 && kills < 350)
{
PlayerRank[id] = 6
}
else if(kills >= 350 && kills < 400)
{
PlayerRank[id] = 7
}
else if(kills >= 400 && kills < 450)
{
PlayerRank[id] = 8
}
else if(kills >= 450 && kills < 500)
{
PlayerRank[id] = 9
}
else if(kills >= 500 && kills < 550)
{
PlayerRank[id] = 10
}
else if(kills >= 550 && kills < 600)
{
PlayerRank[id] = 11
}
else if(kills >= 600 && kills < 650)
{
PlayerRank[id] = 12
}
else if(kills >= 650 && kills < 700)
{
PlayerRank[id] = 13
}
else if(kills >= 700 && kills < 750)
{
PlayerRank[id] = 14
}
else if(kills >= 750 && kills < 800)
{
PlayerRank[id] = 15
}
else if(kills >= 800 && kills < 850)
{
PlayerRank[id] = 16
}
else if(kills >= 850 && kills < 900)
{
PlayerRank[id] = 17
}
else if(kills >= 900)
{
PlayerRank[id] = 18
}
set_hudmessage(142, 239, 39, 0.01, 0.20, 0, 6.0, 1.0, 0.0, 0.0, -1)
ShowSyncHudMsg(id, ShowSyncHudMSG, "", kills, RANKS[PlayerRank[id]])
set_task(HUD_INTERVAL, "setDisplay", id)
}
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();
}
}
}
}
stock get_player_stats(id, type)
{
new stats[8]
new bodyhits[8]
get_user_stats(id, stats, bodyhits);
return stats[type];
}
stock get_player_name(id)
{
static szName[32]
get_user_name(id,szName,31)
return szName
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
*/