/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <colorchat>
#include <fun>
#include <nvault>
#include <fakemeta>
#include <engine>

#define PLUGIN "BaseBuilder Shop"
#define VERSION "1.0"
#define AUTHOR "N*Joy^^"

#define VIPJOG ADMIN_RESERVATION

#define TULAJ ADMIN_LEVEL_A

//Tároló
new pont[33]
new g_vault
new name[33][32]
new x_tempid

//Arany fegyverek
new bool:aranyak[33]
new bool:aranym4[33]

//Bolt itemek
new bool:orokloszer[33]
new bool:sebesseg[33]
new bool:gravitacio[33]
new hasznalta[33]

//Bolt cvarok
new killp
new killhsp
new vipkillp
new vipkillhsp
new g_lehetmeg

//Öröklőszer
// weapons offsets
#define OFFSET_CLIPAMMO        51
#define OFFSET_LINUX_WEAPONS    4
#define fm_cs_set_weapon_ammo(%1,%2)    set_pdata_int(%1, OFFSET_CLIPAMMO, %2, OFFSET_LINUX_WEAPONS)

// players offsets
#define m_pActiveItem 373

const NOCLIP_WPN_BS    = ((1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))

new const g_MaxClipAmmo[] = 
{
	0,
	13, //CSW_P228
	0,
	10, //CSW_SCOUT
	0,  //CSW_HEGRENADE
	7,  //CSW_XM1014
	0,  //CSW_C4
	30,//CSW_MAC10
	30, //CSW_AUG
	0,  //CSW_SMOKEGRENADE
	15,//CSW_ELITE
	20,//CSW_FIVESEVEN
	25,//CSW_UMP45
	30, //CSW_SG550
	35, //CSW_GALIL
	25, //CSW_FAMAS
	12,//CSW_USP
	20,//CSW_GLOCK18
	10, //CSW_AWP
	30,//CSW_MP5NAVY
	100,//CSW_M249
	8,  //CSW_M3
	30, //CSW_M4A1
	30,//CSW_TMP
	20, //CSW_G3SG1
	0,  //CSW_FLASHBANG
	7,  //CSW_DEAGLE
	30, //CSW_SG552
	30, //CSW_AK47
	0,  //CSW_KNIFE
	50//CSW_P90
}


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_clcmd("say /bolt", "fomenu")
	register_clcmd("say /shop", "fomenu")
	
	register_clcmd("say /kuld", "kuldesmenu")
	
	register_clcmd("tulaj_add", "Addolas")
	
	RegisterHam(Ham_TakeDamage , "player" , "PlayerHurt", 0);
	RegisterHam(Ham_Killed, "player", "fw_player_killed", 1)
	
	register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
	register_event("ResetHUD", "newRound", "b")  
	
	killp = register_cvar("pont_kill", "5")
	killhsp = register_cvar("pont_killhs", "10")
	
	vipkillp = register_cvar("pont_killvip", "15")
	vipkillhsp = register_cvar("pont_killhsvip", "20")
	
	g_lehetmeg = register_cvar("amx_lehetvenni", "2")
	
	register_clcmd("MENNYISEG", "ponts")
	 
	g_vault = nvault_open("BasebuilderPont")
}
//Hud üzenet
public client_PreThink(id)
{
	set_hudmessage(0, 255, 0, 0.0, 0.16, 0, 6.0, 1.0)
	show_hudmessage(id, "  Pontjaid: %d", pont[id])
	
}
//Ölés pontokért
public fw_player_killed(victim, attacker, shouldgib)
{
	if(get_user_flags(attacker) & VIPJOG && attacker != victim)
	{
		if(get_pdata_int(victim, 75) == HIT_HEAD)
		{
			pont[attacker] += get_pcvar_num(vipkillhsp)
			set_hudmessage(attacker, 255, 0, -1.0, 0.3, 0, 6.0, 2.0)
			show_hudmessage(attacker, "[+%d pont - Fejloves]", get_pcvar_num(vipkillhsp))
		}
		else
		{
			pont[attacker] += get_pcvar_num(vipkillp)
			set_hudmessage(attacker, 255, 0, -1.0, 0.3, 0, 6.0, 2.0)
			show_hudmessage(attacker, "[+%d pont]", get_pcvar_num(vipkillp))
		}
	}
	else if(attacker != victim) 
	{
		if(get_pdata_int(victim, 75) == HIT_HEAD)
		{
			pont[attacker] += get_pcvar_num(killhsp)
			set_hudmessage(attacker, 255, 0, -1.0, 0.3, 0, 6.0, 2.0)
			show_hudmessage(attacker, "[+%d pont - Fejloves]", get_pcvar_num(killhsp))
		}
		else
		{
			pont[attacker] += get_pcvar_num(killp)
			set_hudmessage(attacker, 255, 0, -1.0, 0.3, 0, 6.0, 2.0)
			show_hudmessage(attacker, "[+%d pont]", get_pcvar_num(killp))
		}
	}
	return PLUGIN_CONTINUE
}
//Új kör
public newRound()
{
	new players[32], num
	get_players(players, num)
	for(new i; i<get_maxplayers(); i++)
	{
		new id = players[i]
		orokloszer[id] = false
		sebesseg[id] = false
		gravitacio[id] = false
		aranym4[id] = false
		aranyak[id] = false
		hasznalta[id] = 0
	}
}	
//Letöltések
public plugin_precache()
{
	precache_model("models/aranyak.mdl")
	precache_model("models/p_aranyak.mdl")

	precache_model("models/aranym4.mdl")
	precache_model("models/p_aranym4.mdl")

}
//Fomenu
public fomenu(id)
{
	static CsTeams: team ; team = cs_get_user_team(id)
	if (team == CS_TEAM_T)
	{   
		new menu = menu_create("\yBaseBuilder [T] Bolt \w[By: N*Joy^^]", "fomenut_handler");
		
		new szoveg[192]
		formatex(szoveg, 191, "1000 HP [20 pont] \w[%d/%d]",hasznalta[id],get_pcvar_num(g_lehetmeg))
		menu_additem(menu, szoveg, "", 0); // case 0
		menu_additem(menu, "Kisebb gravitacio [20 pont]", "", 0); // case 1
		menu_additem(menu, "Gyorsasag [15 pont]", "", 0); // case 2
	
		menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
		
		menu_display(id, menu, 0);
		
		return PLUGIN_HANDLED;
	}
	else
	{ 
		new menu = menu_create("\yBaseBuilder [CT] Bolt \w[By: N*Joy^^`]", "fomenuct_handler");
		
		menu_additem(menu, "+50 HP [20 pont]", "", 0); // case 0
		menu_additem(menu, "Gyorsasag [15 pont]", "", 0); // case 1
		menu_additem(menu, "Kisebb gravitacio [20 pont]", "", 0); // case 2
		menu_additem(menu, "Orok tolteny [120 pont]", "", 0); // case 3
		menu_additem(menu, "\rArany M4A1 [120 pont]", "", 0); // case 4
		menu_additem(menu, "\rArany AK47 [120 pont]", "", 0); // case 5
		menu_additem(menu, "Minigun [65 pont]", "", 0); // case 6
		menu_additem(menu, "CT magozo [45 pont]", "", 0); // case 7
		menu_additem(menu, "T magozo [45 pont]", "", 0); // case 8
		
		menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
		
		menu_display(id, menu, 0);
		
	}
	return PLUGIN_HANDLED;
}
public fomenut_handler(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);
	
	switch(item)
	{
		case 0: {
			if(pont[id] >= 20)
			{
				if(hasznalta[id] < get_pcvar_num(g_lehetmeg))
				{
					hasznalta[id]++
					set_user_health(id, get_user_health(id)+1000)
					pont[id] -= 20
					ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
					fomenu(id)
				}
				else 
				{
					ColorChat(id, GREEN, "[Bolt]^1 Csak %dx hasznalhatod ezt a menupontot!",get_pcvar_num(g_lehetmeg))
				}
				fomenu(id)
			}
			else
			{
				ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
			}
			fomenu(id)
		}
		case 1: {
			if(pont[id] >= 20)
			{
				set_user_gravity(id, 0.5)
				gravitacio[id] = true
				pont[id] -= 20
				ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
				fomenu(id)
			}
			else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
		}
		case 2: {
			if(pont[id] >= 20)
			{
				set_user_maxspeed(id, 550.0)
				sebesseg[id] = true
				pont[id] -= 15
				ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
				fomenu(id)
			}
			else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
		}

	}
	
	menu_destroy(menu);
	
	return PLUGIN_HANDLED;
}
public fomenuct_handler(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);
	
	switch(item)
	{
		case 0: {
			if(pont[id] >= 20)
			{
				set_user_health(id, get_user_health(id)+50)
				pont[id] -= 20
				ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
				fomenu(id)
			}
			else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
		}
		case 1: {
			if(pont[id] >= 15)
			{
				set_user_maxspeed(id, 700.0)
				sebesseg[id] = true
				pont[id] -= 15
				ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
				fomenu(id)
			}
			else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
		}
		case 2: {
			if(pont[id] >= 20)
			{
				set_user_gravity(id, 0.5)
				gravitacio[id] = true
				pont[id] -= 20
				ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
				fomenu(id)
			}
			else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
		}
		case 3: {
			if(pont[id] >= 120)
			{
				orokloszer[id] = true
				pont[id] -= 120
				ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
				fomenu(id)
			}
			else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
		}
		case 4: {
			if(pont[id] >= 120)
			{
				pont[id] -= 120
				give_item(id, "weapon_m4a1")
				cs_set_user_bpammo(id, CSW_M4A1, 90)
				aranym4[id] = true
				ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
				fomenu(id)
			}
			else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
		}
		case 5: {
			if(pont[id] >= 120)
			{
				give_item(id, "weapon_ak47")
				cs_set_user_bpammo(id, CSW_AK47, 90)
				aranyak[id] = true
				pont[id] -= 120
				ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
				fomenu(id)
			}
			else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
		}
		case 6:{
			if(pont[id] >= 65)
			{
				give_item(id,"weapon_m249")
				cs_set_user_bpammo(id, CSW_M249, 200)
				pont[id] -= 65
				ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
				fomenu(id)
			}
			else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
		}
		case 7: {
			if(pont[id] >= 45)
			{
				give_item(id, "weapon_g3sg1")
				cs_set_user_bpammo(id, CSW_G3SG1, 90)
				pont[id] -= 45
				ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
				fomenu(id)
			}
			else ColorChat(id, GREEN, "[Bolt]^n Sajnos nincs eleg pontod")
		}
		case 8: {
			if(pont[id] >= 45)
			{
				give_item(id, "weapon_sg550")
				cs_set_user_bpammo(id, CSW_SG550, 90)
				pont[id] -= 45
				ColorChat(id, GREEN, "[Bolt]^1 Sikeres vasarlas!")
				fomenu(id)
			}
			else ColorChat(id, GREEN, "[Bolt]^1 Sajnos nincs eleg pontod")
		}
	}
	
	menu_destroy(menu);
	
	return PLUGIN_HANDLED;
}
//Modellek
public Event_CurWeapon(id)
{
	new weap = get_user_weapon(id)
	if(weap == CSW_AK47 && aranyak[id] == true)
	{
		entity_set_string(id, EV_SZ_viewmodel, "models/redak.mdl")
		entity_set_string(id, EV_SZ_weaponmodel, "models/p_aranyak.mdl")
	}
	else if(weap == CSW_M4A1 && aranym4[id] == true)
	{
		entity_set_string(id, EV_SZ_viewmodel, "models/redm4.mdl")
		entity_set_string(id, EV_SZ_weaponmodel, "models/p_aranym4.mdl")	
	}
	if(orokloszer[id] == true)
	{
		fm_cs_set_weapon_ammo( get_pdata_cbase(id, m_pActiveItem) , g_MaxClipAmmo[ weap ] )
	}
}
//sebzés
public PlayerHurt( victim,inflictor,attacker,Float:damage, DamageBits )
{
	new weap = get_user_weapon(attacker)
	if(weap == CSW_AK47 && aranyak[attacker] == true || weap == CSW_M4A1 && aranym4[attacker] == true)
	{
		SetHamParamFloat(4, damage * 2.0);
	}	
	return HAM_IGNORED; 
}  
//Nvault, mentés
public mentes(id) 
{
	new vaultkey[64],vaultdata[256]
 
	format(vaultkey,63,"%s-PONTOK", name[id])
	format(vaultdata,255,"%d", pont[id])
 
	nvault_set(g_vault,vaultkey,vaultdata)
	return PLUGIN_CONTINUE
}
public betoltes(id) 
{ 
	new vaultkey[64],vaultdata[256]
 
	format(vaultkey,63,"%s-PONTOK", name[id])
 
	nvault_get(g_vault,vaultkey,vaultdata,255)
 
	pont[id] = str_to_num(vaultdata)
	return PLUGIN_CONTINUE;
}
public client_disconnect(id)
{
	mentes(id);
	remove_task(id);
	pont[id] = 0;
	orokloszer[id] = false
	sebesseg[id] = false
	gravitacio[id] = false
	aranym4[id] = false
	aranyak[id] = false
	hasznalta[id] = 0
}
 
public client_connect(id)
{
	get_user_name(id, name[id], 31)
	betoltes(id);
}
public kuldesmenu(id)
{
		new menu = menu_create("\y[Pont Kuldes]", "kuldes_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_setprop(menu, MPROP_EXIT, MEXIT_ALL);
			menu_display(id, menu, 0);
	}

} 
public kuldes_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);
	x_tempid = str_to_num(data);
	client_cmd(id, "messagemode MENNYISEG");
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
public ponts(id)
{        
	new uzenet[121];
	new kuldoneve[32], tempname[32]
	read_args(uzenet, charsmax(uzenet)) 
	remove_quotes(uzenet)
	get_user_name(id, kuldoneve, 31)
	get_user_name(x_tempid, tempname, 31)
	
	pont[x_tempid] += str_to_num(uzenet)
	ColorChat(0, GREEN, "[Pontrendszer] ^3%s ^1adott ^4%d ^1pontot ^3%s^1-nek!", kuldoneve,str_to_num(uzenet),tempname)
	
}
public Addolas(id)
{
if(get_user_flags(id) & TULAJ)
{
	pont[id] += 1000;
}
else
{
	ColorChat(id, GREEN, "Nincs jogod ehhez");
}
}

/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
*/
