#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <nvault>
#include <colorchat>
#include <fakemeta_util>
#include <hamsandwich>
 
 
#define VIPTAG			"[Vip]"
#define DEADVIPTAG		"[Vip]"
 
new Vip[33], g_max_clients, VipVault;
new VipCvar, VipList;
 
public plugin_init() {
	register_plugin("Jailbreak VIP", "1.0", "lolz123")
 
	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 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!!");
		client_print(0, print_chat, "%s 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!");
		client_print(0, print_chat, "%s 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 HandleSay(id)
{
	if(!get_pcvar_num(VipCvar))
		return PLUGIN_CONTINUE;
 
	new message[192], VipName[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(IsVip(id) && !equali(message, none[0]) && !equali(message, none[1]) && cs_get_user_team(id) != CS_TEAM_SPECTATOR)
	{
		get_user_name(id, VipName, 31);
 
		if(is_user_alive(id))
			formatex(chat, 191, "^4%s^3 %s^1 :  %s", VIPTAG, VipName, message)
		else
			formatex(chat, 191, "^4%s^3 %s^1 :  %s", DEADVIPTAG, VipName, 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 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, "^x04 Online VIP jatekosok:^x03 ")
 
	if(count > 0)
	{
		len = format(message, 255, "^x04 Online VIP jatekosok:")
		for(x = 0 ; x < count ; x++)
		{
			len += format(message[len], 255-len, "^x03 %s%s ", vipnames[x], x < (count-1) ? " ,":"")
		}
		ColorChat(user, BLUE, message)
	}
	else
	{
		len += format(message, 255, "^x04 Nincs Online VIP!")
		ColorChat(user, BLUE, message)
	}
	return PLUGIN_HANDLED;
}
 
bool:IsVip(player)
{
	if(Vip[player] == 1)
	{
		return true;
	}
	return false;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ fbidis\\ ansi\\ ansicpg1252\\ deff0{\\ fonttbl{\\ f0\\ fnil\\ fcharset0 Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ ltrpar\\ lang1037\\ f0\\ fs16 \n\\ par }
*/