/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <nvault>

#define PLUGIN "BSR"
#define VERSION "1.01"
#define AUTHOR "Benix"


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
 
#define ACCESS_LEVEL ADMIN_CHAT
#define ADMIN_LISTEN ADMIN_CHAT
 
new message[192]
new g_vault
new olesek[33]
new szint[33]
 
new strName[191]
new strText[191]
new alive[11]
new sayText
new teamInfo
new maxPlayers
 
#define ASD 17
 
new const szamok[ASD] = {
20,
50,
130,
260,
400,
580,
750,
900,
1200,
1400,
1700,
2000,
2500,
3100,
3700,
4500,
5500
 
}
 
new const rangok[ASD+1][] = {
"Kiütö 1",
"Kiütö 2",
"Kiütö 3",
"Kiütö 4",
"Kinai 1",
"Kinai Elite Mester",
"Drogos 1",
"Drogos 2",
"Drogos 3",
"Drogos Monster ",
"Assasin 1",
"Assasin 2",
"Dupla Kinai",
"Seriff",
"Rabló",
"Rabló Mester",
"Superman",
"Isten Elite"
 
}
 
public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("say /rang", "hud")
	register_clcmd ("say", "hook_say")
	register_clcmd ("say_team", "hook_teamsay")
	register_event("DeathMsg", "halal", "a")
	g_vault = nvault_open("namerang")
	sayText = get_user_msgid ("SayText")
	teamInfo = get_user_msgid ("TeamInfo")
	maxPlayers = get_maxplayers()
 
	set_task(180.0, "KorUzenet", 0, _, _, "b")
 
	register_message (sayText, "avoid_duplicated")
}
public avoid_duplicated (msgId, msgDest, receiver)
{
    return PLUGIN_HANDLED
}
public KorUzenet()
{ 
	client_print(0, print_chat, "Ird be /rang hogy megnezd meg mennyi oles kell a kovetkezo prefixhez (by:[F]orce*)")
	return PLUGIN_HANDLED;
}
public hud(id)
{
	if(szint[id] != ASD+1)
	{
		client_print(id, print_chat, "Rangod: %s | Olesek: %d | Kell meg: %d",rangok[szint[id]], olesek[id],szamok[szint[id]]-olesek[id] )
	}
	else
	{
		client_print(id, print_chat, "Rangod: %s | Olesek: %d | Kell meg: 0",rangok[szint[id]], olesek[id])
	}
 
}
 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
 
    if (is_user_alive (id))
    {
    isAlive = 1
    alive = ""
    }
    else
    {
    isAlive = 0
    alive = "^1*HALOTT* "
    }
 
    static color[10]
 
    if(get_user_flags(id)&ADMIN_CVAR)
    {
    get_user_team (id, color, 9)
 
    format (strName, 191, "%s^4[TULAJ][%s] ^3%s:", alive, rangok[szint[id]], name)
 
    format (strText, 191, "^4%s", message)
    } 	
 
    else if(get_user_flags(id)&ADMIN_MAP)
    {
    get_user_team (id, color, 9)
 
    format (strName, 191, "%s^4[ADMIN][%s] ^3%s:", alive, rangok[szint[id]], name)
 
    format (strText, 191, "^4%s", message)
    }      
 
    else if(get_user_flags(id)&ADMIN_MENU)
{
    get_user_team (id, color, 9)
 
    format (strName, 191, "%s^4[VIP][%s] ^3%s:", alive, rangok[szint[id]], name)
 
    format (strText, 191, "^4%s", message)
}
 
 
    else if(get_user_flags(id)&ADMIN_USER)
    {
    get_user_team (id, color, 9)
 
    format (strName, 191, "%s^4[%s] ^3%s:",alive, rangok[szint[id]], name)
 
    format (strText, 191, "%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, "Nezo")
    }
 
    read_args (message, 191)
    remove_quotes (message)
 
    if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, "")) 
 
    return PLUGIN_CONTINUE
 
    new isAlive
 
    if (is_user_alive (id))
    {
    isAlive = 1
    alive = ""
    }
    else
    {
    isAlive = 0
    alive = "^1*HALOTT* "
    }
 
    new name[32]
    get_user_name (id, name, 31)
 
    static color[10]
 
    if(get_user_flags(id)&ADMIN_LEVEL_G)
    {
    get_user_team (id, color, 9)
 
    format (strName, 191, "%s(%s)^4[TULAJ][%s] ^3%s:",alive , playerTeamName, rangok[szint[id]], name)
 
    format (strText, 191, "^4%s", message)
    } 	
 
    else if(get_user_flags(id)&ADMIN_LEVEL_B)
    {
    get_user_team (id, color, 9)
 
    format (strName, 191, "%s(%s)^4[ADMIN][%s] ^3%s:",alive , playerTeamName, rangok[szint[id]], name)
 
    format (strText, 191, "^4%s", message)
    }      
 
    else if(get_user_flags(id)&ADMIN_KICK)
{
    get_user_team (id, color, 9)
 
    format (strName, 191, "%s(%s)^4[VIP][%s] ^3%s:",alive , playerTeamName, rangok[szint[id]], name)
 
    format (strText, 191, "^4%s", message)
}
 
 
    else if(get_user_flags(id)&ADMIN_USER)
    {
    get_user_team (id, color, 9)
 
    format (strName, 191, "%s(%s)^4[%s] ^3%s:",alive ,playerTeamName, rangok[szint[id]], name)
 
    format (strText, 191, "%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 halal()
{
	new killer = read_data(1)
	new victim = read_data(2)
 
	if(killer != victim)
		olesek[killer]++
 
	while(olesek[killer] >= szamok[szint[killer]])
	{
		szint[killer]++
	}
}
public Mentes(id)
{
	new name[32]
	get_user_name(id, name, 31)
 
	new vaultkey[64],vaultdata[256]
	format(vaultkey,63,"%s-rang", name)
	format(vaultdata,255,"%i#%i#",olesek[id],szint[id])
 
 
	nvault_set(g_vault,vaultkey,vaultdata)
	return PLUGIN_CONTINUE
}
public Betoltes(id)
{
	new name[32]
	get_user_name(id, name, 31)
	new vaultkey[64],vaultdata[256]
 
	format(vaultkey,63,"%s-rang", name)
	format(vaultdata,255,"%i#%i#",olesek[id],szint[id])
 
	nvault_get(g_vault,vaultkey,vaultdata,255)
	replace_all(vaultdata, 255, "#", " ")
	new oles[32], level[32]
	parse(vaultdata, oles, 31, level, 31)
	olesek[id] = str_to_num(oles)
	szint[id] = str_to_num(level)
	return PLUGIN_CONTINUE
}
public client_disconnect(id)
{
	Mentes(id)
}
public client_connect(id)
{	
	Betoltes(id)
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
*/
