//Privat Uzenetek                    /////
/////////////////////////////////////////
//
// Steam ID-re uzeneteket allithatsz be a jatekosoknak,amelyek a szerverre valo csatlakozaskor megjelennek  zölden a Chat-ben.
//
//Pelda: amx_uzenet "STEAMID_0:0:12345" "Pixaa112 - A plugint pixa112 keresere alakitottam at." //Ez az alap. Csak annak szol, akinek a STEAM ID-jet megadjuk.                       /////
/////////////////////////////////////////
//
//Ha a Steam ID helyere "*"-ot irsz,akkor az uzenet mindenkinek szol.
//
//Pelda: amx_uzenet "*" "A szervert konfigolja: a konfigos." //Ezt mindenki latja.			
                                   /////
////////////////////////////////////////
//Egyeb infok a leirasban.
 
#include <amxmodx>
#include <nvault>
 
#define ADMIN_LEVEL ADMIN_PASSWORD
 
#define PLUGIN "Privat Uzenetek"
#define VERSION "1.1"
#define AUTHOR "DeStRoY"
 
new g_Vault
new gmsgSayText
 
new g_pm_active
new g_pm_delete
 
public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("amx_uzenet", "add_pm", 0, "<steamid> <Uzenet> - Uzenet adasa jatekosnak.") 
	register_clcmd("amx_uzenet_torles", "remove_pm", 0, "<steamid> - Uzenet torlese.")
	register_clcmd("amx_uzenet_mutatas", "view_pm", 0, "<steamid> - Uzenet lejatszasa a jatekosnak.")
 
	g_pm_active = register_cvar("amx_pm_active","1")
	g_pm_delete = register_cvar("amx_pm_autodelete","0")
 
	gmsgSayText = get_user_msgid("SayText");
}
 
public plugin_cfg()
{
	g_Vault=nvault_open("PMdata")
}
 
public plugin_end()
{
	nvault_close(g_Vault)
}
public client_putinserver(id)
{
	if (get_pcvar_num(g_pm_active))
		set_task(10.0,"pm_check",id)		
}
 
public pm_check(id)
{
	new vaultkey[64], vaultdata[190]; 
	new TimeStamp;
 
	new authid[35]
	get_user_authid(id,authid,34);
	new line[190]
 
	formatex(vaultkey,63,"Uzenet-%s",authid);
 
	if(nvault_lookup(g_Vault, vaultkey, vaultdata, sizeof(vaultdata) - 1, TimeStamp ))
	{
 
		line[0] = 0x04;
		format(line[1],188,"[Uzenet]%s",vaultdata)
		ShowColorMessage(id,line)
 
		if (get_pcvar_num(g_pm_delete))
			nvault_remove(g_Vault,vaultkey)
	}
 
	formatex(vaultkey,63,"PM-*");
 
	if(nvault_lookup(g_Vault, vaultkey, vaultdata, sizeof(vaultdata) - 1, TimeStamp ))
	{
		line[0] = 0x04;
		format(line[1],188,"[Uzenet]%s",vaultdata)
		ShowColorMessage(id,line)
	}
 
	return PLUGIN_HANDLED
}
 
public add_pm(id)
{
	if (!(get_user_flags(id) & ADMIN_LEVEL))
	{
		console_print(id,"Sajnalom,ez a parancs nem elerheto szamodra.")
		return PLUGIN_HANDLED
	}
 
	new vaultkey[64], vaultdata[190]; 
 
	new args[220]
	new message[190]
	new authid[35]
 
	read_args(args,219)
	remove_quotes(args)
	strbreak(args,authid,34,message,189)
	remove_quotes(authid)
	remove_quotes(message)
 
	if (!check_steam_id(id,authid) && !equal(authid,"*"))
	{
		console_print(id,"A SteamID nem megfelelo!")
		return PLUGIN_HANDLED
	}
 
	formatex(vaultkey,63,"PM-%s",authid);
	formatex(vaultdata,189,"%s",message)
 
	nvault_set(g_Vault,vaultkey,vaultdata)
 
	console_print(id,"[Uzenet-%s] Uj uzenet HOZZAADVA.",authid)
 
	return PLUGIN_HANDLED
}
 
public remove_pm(id)
{
	if (!(get_user_flags(id) & ADMIN_LEVEL))
	{
		console_print(id,"Sajnalom,ez a parancs nem elerheto szamodra.")
		return PLUGIN_HANDLED
	}
 
	new vaultkey[64], vaultdata[190]; 
	new TimeStamp;
 
	new authid[35]
	read_args(authid,34)
	remove_quotes(authid)
 
	if (!check_steam_id(id,authid) && !equal(authid,"*"))
	{
		console_print(id,"A SteamID nem megfelelo!")
		return PLUGIN_HANDLED
	}
 
	formatex(vaultkey,63,"PM-%s",authid);
 
	if(nvault_lookup(g_Vault, vaultkey, vaultdata, sizeof(vaultdata) - 1, TimeStamp ))
	{
		nvault_remove(g_Vault,vaultkey)
		console_print(id,"[Uzenet-%s] Uzenet TOROLVE.",authid)
	}
 
	return PLUGIN_HANDLED	
}
 
public view_pm(id)
{
	if (!(get_user_flags(id) & ADMIN_LEVEL))
	{
		console_print(id,"Sajnalom,ez a parancs nem elerheto szamodra.")
		return PLUGIN_HANDLED
	}
 
	new vaultkey[64], vaultdata[190]; 
	new TimeStamp;
 
	new authid[35]
	read_args(authid,34)
	remove_quotes(authid)
 
	if (!check_steam_id(id,authid) && !equal(authid,"*"))
	{
		console_print(id,"A SteamID nem megfelelo!")
		return PLUGIN_HANDLED
	}
 
	formatex(vaultkey,63,"PM-%s",authid);
 
	if(nvault_lookup(g_Vault, vaultkey, vaultdata, sizeof(vaultdata) - 1, TimeStamp ))
	{
		console_print(id,"[Uzenet-%s]%s",authid,vaultdata)
	}
 
	return PLUGIN_HANDLED
}
 
public ShowColorMessage(id, message[])
{
	message_begin(MSG_ONE, gmsgSayText, _, id);
	write_byte(id)		
	write_string(message);
	message_end();	
}
 
public bool:check_steam_id(id,authid[])
{
	if (equali(authid,"STEAM_ID_PENDING") || equali(authid,"STEAM_ID_LAN"))
		return true
 
	if (contain(authid,"STEAM_") == -1)
		return false
 
	if ((authid[7] != ':') || (authid[9] != ':'))
		return false
 
	if (!is_str_num(authid[10]))
		return false
 
	return true
 
}