#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <nvault>
#include <colorchat>
#include <fakemeta_util>
#include <hamsandwich>
 
#define TDEAD         "[Rab]"
#define CTDEAD      "[Ĺr]"
#define T         "[Rab]"
#define CT      "[Ĺr]"
 
#define VIPTAG			"[VIP]"
#define DEADVIPTAG		"[VIP]"
 
new Vip[33], g_max_clients, VipVault;
new VipCvar, VipList;
 
public plugin_init()
{
    register_clcmd("say", "HandleSay")
 
	VipCvar = register_cvar( "jb_vip", "1" )
	VipList = register_cvar( "jb_vip_list", "1" )
 
	register_clcmd("jb_set_user_vip", "SetVip")
	register_clcmd("jb_remove_user_vip", "RemoveVip")
 
	register_clcmd("say /vip", "print_viplist")
	register_clcmd("say !vip", "print_viplist")
 
	register_clcmd("say", "HandleSay")
 
	RegisterHam(Ham_Spawn, "player", "HamPlayerSpawn", 1) 
 
	g_max_clients = get_maxplayers();
 
}
 
public HandleSay(id)
{
   new message[192], Name[32], none[2][32], chat[192];
 
   read_args (message, 191)
   remove_quotes (message)
 
   formatex(none[0], 31, ""), formatex(none[1], 31, " ")
 
   if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, ""))
      return PLUGIN_HANDLED;
 
   if(!equali(message, none[0]) && !equali(message, none[1]) && cs_get_user_team(id) != CS_TEAM_SPECTATOR)
   {
      get_user_name(id, Name, 31);
 
      new CsTeams:userTeam = cs_get_user_team(id)
      if (userTeam == CS_TEAM_CT)
      if(is_user_alive(id))
 
         formatex(chat, 191, "^4%s^4%s^3%s^1: %s", VIPTAG,CT, Name, message)
      else
         formatex(chat, 191, "^4%s^4%s^3%s %s^1: %s", VIPTAG,CTDEAD, Name, message)
 
      else if (userTeam == CS_TEAM_T)
      if(is_user_alive(id))
 
         formatex(chat, 191, "^4%s^4%s^3%s^1: %s", VIPTAG,T, Name, message)
      else
         formatex(chat, 191, "^4%s^4%s^3 %s^1: %s", VIPTAG,TDEAD, Name, message)
 
      switch(cs_get_user_team(id))
      {
         case 1: ColorChat(0, RED, chat)
         case 2: ColorChat(0, BLUE, chat)
       }
      return PLUGIN_HANDLED;
   }  
 return PLUGIN_CONTINUE;
}
 
public plugin_cfg()
{
	VipVault = nvault_open( "Vip" );
 
	if ( VipVault == INVALID_HANDLE )
		set_fail_state( "Error opening Vip Vault" );
}
 
 
public plugin_end()
{
	nvault_close(VipVault);
}
 
public plugin_natives()
{
	register_library("VIP");
	register_native("is_user_vip", "_user_vip");
}
 
public _user_vip(plugin, params)
{
	return IsVip(get_param(1));
} 
 
public client_putinserver(id)
{
	LoadVip(id);
}
 
public HamPlayerSpawn(id)
{
	if(!get_pcvar_num(VipCvar))
		return PLUGIN_HANDLED;
 
	if(cs_get_user_team(id) == CS_TEAM_T && IsVip(id))
	{
		cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM);
		fm_give_item(id, "weapon_flashbang")
		fm_give_item(id, "weapon_flashbang")
		fm_give_item(id, "weapon_smokegrenade")
		fm_set_user_health(id, 120)
		fm_set_user_armor(id, 50)
	}
	return PLUGIN_HANDLED;
}
 
public SetVip(id)
{
	if(!get_pcvar_num(VipCvar))
		return PLUGIN_HANDLED;
 
	if(!(get_user_flags(id) & ADMIN_CVAR))
	{
		client_print(id, print_console, "Nincs hozzaferesed ehez a parancshoz!");
		return PLUGIN_HANDLED;
	}
 
	new arg[32], name[32];
	read_argv (1, arg, 31);
 
	new player = cmd_target(id,arg,3);
 
	get_user_name(player, name, 31);
 
	if(!player)
	{
		client_print(id, print_console, "Nincs ilyen nevu jatekos!");
		return PLUGIN_HANDLED;
	}
	if(IsVip(player))
	{
		client_print(id, print_console, "%s VIP jatekos!", name);
		return PLUGIN_HANDLED;
	}
	set_player_vip(player)
 
	return PLUGIN_HANDLED;
}
 
public RemoveVip(id)
{
	if(!get_pcvar_num(VipCvar))
		return PLUGIN_HANDLED;
 
	if(!(get_user_flags(id) & ADMIN_CVAR))
	{
		client_print(id, print_console, "Nincs hozzaferesed ehez a parancshoz!");
		return PLUGIN_HANDLED;
	}
 
	new arg[32], name[32];
	read_argv (1, arg, 31);
 
	new player = cmd_target(id,arg,3);
 
	get_user_name(player, name, 31);
 
	if(!player)
	{
		client_print(id, print_console, "Nincs ilyen nevu jatekos!");
		return PLUGIN_HANDLED;
	}
	if(!IsVip(player))
	{
		client_print(id, print_console, "%s Mar nem VIP jatekos!", name);
		return PLUGIN_HANDLED;
	}
	remove_player_vip(player)
 
	return PLUGIN_HANDLED;
}
 
set_player_vip(player)
{
	if(is_user_connected(player) && Vip[player] == 0)
	{
		Vip[player] = 1;
 
		new name[32];
		get_user_name(player, name, 31);
 
		client_print(player, print_center, "VIP jatekos lettel!!");
		ColorChat(0, GREEN, "[JailBreak]^x03 %s^x01 VIP jatekos lett!", name);
 
		SaveVip(player);
	}
}
 
remove_player_vip(player)
{
	if(is_user_connected(player) && Vip[player] == 1)
	{
		Vip[player] = 0;
 
		new name[32];
		get_user_name(player, name, 31);
 
		client_print(player, print_center, "Mar nem vagy VIP jatekos!");
		ColorChat(0, GREEN, "[JailBreak]^x03 %s^x01 Mar nem VIP jatekos!", name);
 
		SaveVip(player);
	}
}
 
public SaveVip(id)
{
	new authid[32]; 
	get_user_authid(id,authid,31); 
 
	new vaultkey[64], vaultdata[64]; 
 
	format(vaultkey,63,"Vip-%s",authid)
	format(vaultdata,63,"%d", Vip[id]); 
 
	nvault_set( VipVault , vaultkey , vaultdata );
} 
 
public LoadVip(id)
{
	new authid[32], vaultkey[64];
	get_user_authid(id,authid,31); 
 
	formatex( vaultkey , charsmax( vaultkey ) , "Vip-%s" , authid);
 
	Vip[id] = nvault_get( VipVault, vaultkey );
}  
public print_viplist(user) 
{
	if(!get_pcvar_num(VipCvar) || !get_pcvar_num(VipList))
		return PLUGIN_HANDLED;
 
	new vipnames[33][32]
	new message[256]
	new id, count, x, len
 
	for(id = 1 ; id <= g_max_clients ; id++)
	{
		if(is_user_connected(id))
		{
			if(IsVip(id))
			{
				get_user_name(id, vipnames[count++], 31)
			}
		}
	}
 
	len = format(message, 255, "^x01Online VIP jatekosok:^x04 ")
 
	if(count > 0)
	{
		len = format(message, 255, "^x01Online VIP jatekosok:")
		for(x = 0 ; x < count ; x++)
		{
			len += format(message[len], 255-len, "^x04 %s%s ", vipnames[x], x < (count-1) ? " ,":"")
		}
		ColorChat(user, BLUE, message)
	}
	else
	{
		len += format(message, 255, "^x01 Nincs Online VIP!")
		ColorChat(user, BLUE, message)
	}
	return PLUGIN_HANDLED;
}
 
bool:IsVip(player)
{
	if(Vip[player] == 1)
	{
		return true;
	}
	return false;
}