#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <nvault>
#include <colorchat>
 
#define PLUGIN "Pontrendszer"
#define VERSION "1.0"
#define AUTHOR "crazy"
 
#define DROG_SEBESSEG    600.0
 
new message[192]
new nev[32]
new Temp[192]
static color[10]
new g_vault
new olesek[33]
new szint[33]
new pontok[33]
new name[33][32]
new killp, killhsp
new ajandek1, ajandek2, ajandek3
 
new bool:activ_sebesseg[33]
new bool:activ_lathatatlan[33]
new bool:activ_onehit[33]
new bool:activ_halhatatlan[33]
 
#define MAX_SHOP_ITEM 9
#define ASD 13
 
//Ha az ASD értéke 15 akkor a szamoknal 15 szám a rangoknál 16 szöveg
 
new const szamok[ASD] = {
	15,
	45,
	80,
	125,
	185,
	355,
	655,
	1000,
	1400,
	1800,
	2450,
	2800,
	3450
 
}
 
new const rangok[ASD+1][] = {
	"Nokedli",
	"Kezdő",
	"Gyilkos",
	"Ă–rult",
	"HaladĂł",
	"Knifer",
	"ProKnifer",
	"HighKnifer",
	"OldKnifer",
	"Predátor",
	"Veterán",
	"LeGenD",
	"FélIsten",
	"Isten"
}
public plugin_init() {
 
	register_plugin(PLUGIN, VERSION, AUTHOR)
 
	killp = register_cvar("pont_kill", "1")
	killhsp = register_cvar("pont_killhs", "2")
 
	ajandek1 = register_cvar("pont_ajandek1", "5")
	ajandek2 = register_cvar("pont_ajandek2", "8")
	ajandek3 = register_cvar("pont_ajandek3", "10")
 
	register_clcmd("say", "sayhook")
	register_clcmd("say_team", "tshook")
	register_clcmd("team_say /adas", "adas")
	register_clcmd("say /adas", "adas")
	register_clcmd("pont_adas", "adas")
 
	register_clcmd("team_say /shop", "Shop")
	register_clcmd("say /shop", "Shop")
	register_clcmd("team_say /bolt", "Shop")
	register_clcmd("say /bolt", "Shop")
 
 
	g_vault = nvault_open("allin")
 
	RegisterHam(Ham_Killed, "player", "fw_player_killed", 1)
	RegisterHam(Ham_TakeDamage, "player", "fw_player_damage", 0)
	RegisterHam(Ham_Spawn, "player", "fw_player_spawn", 0)
	RegisterHam(Ham_Spawn, "player", "fw_player_spawn_post", 1)
	register_event("CurWeapon", "Event_Change_Weapon", "be", "1=1")
	register_event("DeathMsg", "halal", "a")
}
public sayhook(id)
{
 
	read_args (message, 191)
	remove_quotes (message)
	if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, ""))
	{
		return PLUGIN_CONTINUE
	}
	get_user_name(id, nev, 31)
 
	if(is_user_admin(id))
	{
		if(is_user_alive(id)) {
			get_user_team(id, color, 9)
			formatex(Temp, 191, "^x04%s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
 
		}
		else {
			get_user_team(id, color, 9)
			formatex(Temp, 191, "^x04*Halott* %s ^x03%s^x04: %s", rangok[szint[id]], nev, message)
		}
	}else{
		if(is_user_alive(id)) {
			get_user_team(id, color, 9)
			formatex(Temp, 191, "^x04%s ^x03%s^x01: %s", rangok[szint[id]], nev, message)
 
		}
		else {
			get_user_team(id, color, 9)
			formatex(Temp, 191, "^x04*Halott* %s ^x03%s^x01: %s", rangok[szint[id]], nev, message)
		}
	}
	sendmessage(color)
	return PLUGIN_HANDLED
}
public tshook(id)
{
	read_args (message, 191)
	remove_quotes (message)
	if (message[0] == '@' || message[0] == '/' || message[0] == '!' || equal (message, ""))
	{
		return PLUGIN_CONTINUE
	}
	get_user_name(id, nev, 31)
	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ő*")
	}
	if(is_user_admin(id))
	{
		if(is_user_alive(id))
		{
			get_user_team(id, color, 9)
			formatex(Temp, 191, "^x03(%s) ^x04%s ^x03%s^x04: %s",playerTeamName, rangok[szint[id]], nev, message)
 
		}
		else
		{
			get_user_team(id, color, 9)
			formatex(Temp, 191, "^x04*Halott* ^x03(%s) ^x04%s ^x03%s^x04: %s",playerTeamName, rangok[szint[id]], nev, message)
		}
	}else{
		if(is_user_alive(id))
		{
			get_user_team(id, color, 9)
			formatex(Temp, 191, "^x03(%s) ^x04%s ^x03%s^x01: %s",playerTeamName, rangok[szint[id]], nev, message)
 
		}
		else
		{
			get_user_team(id, color, 9)
			formatex(Temp, 191, "^x04*Halott* ^x03(%s) ^x04%s ^x03%s^x01: %s",playerTeamName, rangok[szint[id]], nev, message)
		}
	}
	sendtmessage(color, playerTeam)
	return PLUGIN_HANDLED
}
public sendmessage(color[])
{
	new teamName[10]
	for(new player = 1; player < get_maxplayers(); player++)
	{
		get_user_team (player, teamName, 9)
		teamf (player, color)
		elkuldes(player, Temp)
		teamf(player, teamName)
	}
}
public sendtmessage(color[], playerTeam)
{
	new teamName[10]
	for (new player = 1; player < get_maxplayers(); player++)
	{
		if(get_user_team(player) == playerTeam)
		{
			get_user_team (player, teamName, 9)
			elkuldes(player, Temp)
			teamf (player, teamName)
			teamf (player, color)
		}
	}
}
public teamf(player, team[])
{
	message_begin(MSG_ONE, get_user_msgid("TeamInfo"), _, player)
	write_byte(player)
	write_string(team)
	message_end()
}
public elkuldes(player, Temp[])
{
 
	message_begin( MSG_ONE, get_user_msgid( "SayText" ), _, player)
	write_byte( player )
	write_string( Temp )
	message_end()
 
}
 
public fw_player_killed(victim, attacker, shouldgib)
{
	if(!is_user_connected(attacker) || !is_user_connected(victim) || attacker == victim)
		return PLUGIN_CONTINUE;
 
	if(get_pdata_int(victim, 75) == HIT_HEAD)
	{
		pontok[attacker] += get_pcvar_num(killhsp)
	}
	else
	{
		pontok[attacker] += get_pcvar_num(killp)
	}
	return PLUGIN_CONTINUE
}
public fw_player_damage(victim, inflictor, attacker, Float:damage, damage_type)
{
	if(activ_onehit[attacker])
	{
		SetHamParamFloat(4, float(get_user_health(victim)+1))
	}
	if(activ_halhatatlan[victim])
	{
		return HAM_SUPERCEDE
	}
	return HAM_IGNORED
}
public fw_player_spawn(id)
{
	activ_halhatatlan[id] = false
	activ_onehit[id] = false
	activ_sebesseg[id] = false
}
public fw_player_spawn_post(id)
{
	if(activ_lathatatlan[id])
	{
		set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255)
		activ_lathatatlan[id] = false
	}
}
public Event_Change_Weapon(id)
{
	if(activ_sebesseg[id])
	{
		set_user_maxspeed(id, DROG_SEBESSEG)
	}
	return PLUGIN_CONTINUE 
}
public Shop(id)//IGEN EZ ITT A MENU
{
	new Item[512]
	formatex(Item, charsmax(Item),"\r.:[\wOnly\r.\yKnife]:. \rBolt:^n\ySzinted:\r%s \w| \yKell még:\r%d \w| \yPontjaid:\r%d",rangok[szint[id]],szamok[szint[id]]-olesek[id],pontok[id] )
	new menu = menu_create(Item, "Shoph");
	menu_additem(menu, "\yGranatPack \r35 pont", "", 0); // case 0
	menu_additem(menu, "\yExtra Gyorsasag \r45 pont", "", 1); // case 1
	menu_additem(menu, "\yUjraeledes \r18 pont", "", 2); // case 2
	menu_additem(menu, "\yExtra 25HP \r55 pont", "", 3); // case 3
	menu_additem(menu, "\yGlock 2 Golyoval \r120 pont", "", 4); // case 4
	menu_additem(menu, "\yTaktikai Pajzs \r35 pont", "", 5); // case 5
}
public Shoph(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_cancel(id);
		return PLUGIN_HANDLED;
	}
 
	new command[6], name[64], access, callback;
 
	menu_item_getinfo(menu, item, access, command, sizeof command - 1, name, sizeof name - 1, callback);
 
	new elo = is_user_alive(id)
 
	switch(item)
	{
		case 0:
		{
			if (pontok[id] >= 35 && elo)
			{
				pontok[id] -= 35
				give_item(id, "weapon_flashbang")
				give_item(id, "weapon_hegrenade")
				ColorChat(id, RED, ".:[Only.Knife]:. ^1Gratulálunk, Sikeresen megkaptad a ^4gránátokat!")
			}
			else
			{
				ColorChat(id, RED, ".:[Only.Knife]:. ^1Sajnos, nincs elég ^4pontod")
			}
		}
		case 1:
		{
			if (pontok[id] >= 45 && elo)
			{
				pontok[id] -= 45
				set_user_maxspeed(id, DROG_SEBESSEG)
				activ_sebesseg[id] = true
				ColorChat(id, RED, ".:[Only.Knife]:. ^1A ^4sebességed ^1gyorsitva lett!")
			}
			else
			{
				ColorChat(id, RED, ".:[Only.Knife]:. ^1Sajnos, nincs elég ^4pontod")
			}
		}
		case 2:
		{
			if (pontok[id] >= 18 && !elo)
			{
				pontok[id] -= 18
				ExecuteHamB(Ham_CS_RoundRespawn, id)
				ColorChat(id, RED, ".:[Only.Knife]:. ^1Gratulálunk, Sikeresen ^4Újraéledtél!")
			}
			else if(elo)
			{
				ColorChat(id, RED, ".:[Only.Knife]:. ^4Elők ^1nem használhatják!")
			}
			else
			{
				ColorChat(id, RED, ".:[Only.Knife]:. ^1Sajnos, nincs elég ^4pontod")
			}
		}
		case 3:
		{
			if (pontok[id] >= 55 && elo)
			{
				pontok[id] -= 55
				set_user_health(id, get_user_health(id)+25)
				ColorChat(id, RED, ".:[Only.Knife]:. ^1Gratulálunk, Sikeresen megkaptad az ^4életet!")
			}
			else
			{
				ColorChat(id, RED, ".:[Only.Knife]:. ^1Sajnos, nincs elég ^4pontod")
			}
		}
		case 4:
		{
			if (pontok[id] >= 120 && elo)
			{
				pontok[id] -= 120;
				give_item(id, "weapon_glock18");
				cs_set_user_bpammo(id, CSW_GLOCK18,  2);
				ColorChat(id, RED, ".:[Only.Knife]:. ^1Gratulálunk, Sikeresen megkaptad a ^GLOCK-ot!")
			}
			else
			{
				ColorChat(id, RED, ".:[Only.Knife]:. ^1Sajnos, nincs elég ^4pontod")
			}
		}
		case 5:
		{
			if (pontok[id] >= 35 && elo)
			{
				pontok[id] -= 35
				give_item(id, "weapon_shield_r");
				ColorChat(id, RED, ".:[Only.Knife]:. ^1Gratulálunk, Sikeresen megkaptad a ^PAJZS-ot!")
			}
			else
			{
				ColorChat(id, RED, ".:[Only.Knife]:. ^1Sajnos, nincs elég ^4pontod")
			}
		}
	}
	menu_destroy(menu)
	return PLUGIN_HANDLED
}
 
public mentes(id) 
{
	new name[32]
	get_user_name(id, name, 31)
	new vaultkey[64],vaultdata[256]
 
	format(vaultkey,63,"%s-allin", name)
	format(vaultdata,255,"%i#%i#%i",olesek[id],szint[id], pontok[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-allin", name)
	format(vaultdata,255,"%i#%i#%i",olesek[id],szint[id], pontok[id])
 
	nvault_get(g_vault,vaultkey,vaultdata,255) 
	replace_all(vaultdata, 255, "#", " ") 
	new oles[32], level[32], pt[32]
	parse(vaultdata, oles, 31, level, 31, pt, 31)
	olesek[id] = str_to_num(oles)
	szint[id] = str_to_num(level)
	pontok[id] = str_to_num(pt)
	return PLUGIN_CONTINUE 
}
public client_disconnect(id)
{
	mentes(id);
	remove_task(id);
	pontok[id] = 0;
	activ_sebesseg[id] = false
}
 
public client_connect(id)
{
	get_user_name(id, name[id], 31)
	betoltes(id);
	set_task(300.0, "ajandek_1",id)
	set_task(900.0, "ajandek_2",id)
	set_task(1800.0, "ajandek_3",id)
}
public adas(id)
{
	if (get_user_flags(id) & ADMIN_KICK)
	{
		new menu = menu_create("\r.:[Only.Knife]:. \wKinek akarsz pontot adni?", "menu_handler")
		new players[32], pnum, tempid
		new szName[32], szTempid[10]
		get_players(players, pnum)
		for( new i; i<pnum; i++ )
		{
			tempid = players[i];
			get_user_name(tempid, szName, charsmax(szName))
			num_to_str(tempid, szTempid, charsmax(szTempid))
			menu_additem(menu, szName, szTempid, 0)
 
		}
		menu_display(id, menu, 0)
	}
	else
	{
		ColorChat(id, RED, "Sajnos nincs jogod hasznalni ezt a parancsot!")
 
	}
}
public menu_handler(id, menu, item)
{
	if( item == MENU_EXIT )
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
 
	new data[6], szName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
 
	new tempid = str_to_num(data);
 
	if( is_user_alive(tempid) )
	{
		pontok[tempid] += 10
	}
	client_cmd(id,"pont_adas")
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
public ajandek_1(id)
{
	new penz = get_pcvar_num(ajandek1);
	ColorChat(id, RED, ".:[Only.Knife]:. ^3%d ^4pont ^1jár, mert itt vagy mar 5 perce!", penz)
	pontok[id] += penz;
}
public ajandek_2(id)
{
	new penz = get_pcvar_num(ajandek2);
	ColorChat(id, RED, ".:[Only.Knife]:. ^3%d ^4pont ^1jár, mert itt vagy mar 10 perce!", penz)
	pontok[id] += penz;
}
public ajandek_3(id)
{
	new penz = get_pcvar_num(ajandek3);
	ColorChat(id, RED, ".:[Only.Knife]:. ^3%d ^4pont ^1jár, mert itt vagy mar 30 perce!", penz)
	pontok[id] += penz;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
*/