/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <colorchat>
#include <cstrike>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

#define KILL_POINT 10
#define HEADSHOT_POINT 15

enum _:GunDatas {
	AWP,
	DEAGLE,
	KNIFE,
	AK47,
	M4A1
}

new g_SelectedGun[GunDatas][33], g_uPoints[GunDatas][33], g_Wpn[33]

new const PREFIX[] = "[]"

enum _:DATA {
	GunName[64],
	ModelName[64],
	Points[8],
	AnimType[8]
}
new const WeaponWp[][DATA] = {
	{"Alap AWP", "models/v_awp.mdl", 0, -1},
	{"Ij", "models/mega_dust2/v_ij.mdl", 125, -1},
	{"Springfield", "models/mega_dust2/v_springfield.mdl", 450, -1},
	{"Brown", "models/mega_dust2/v_brown.mdl", 800, -1},
	{"Marine", "models/mega_dust2/v_marine.mdl", 1500, -1},
	{"Lighting strike", "models/mega_dust2/v_lightning_strike.mdl", 3000, -1},
	{"Fire Blaze", "models/mega_dust2/v_fire_blaze.mdl", 4500, -1},
	{"Special", "models/mega_dust2/v_special.mdl", 6000, -1},
	{"Boom", "models/mega_dust2/v_boom.mdl", 10000, -1},
	{"Asiimov", "models/mega_dust2/v_asiimov.mdl", 18000, -1},
	{"Elf Ranger", "models/mega_dust2/v_elf_ranger.mdl", 50000, -1},
	{"\y* \wHavking \d(Vizsgalhato)", "models/mega_dust2/havking.mdl", 0, 6},
	{"\y* \wMedusa \d(Vizsgalhato)", "models/mega_dust2/medusa.mdl", 0, 6},
	{"\y* \wColored \d(Vizsgalhato)", "models/mega_dust2/Tigris.mdl", 0, 6}
}
new const WeaponDeagle[][DATA] = {
	{"Alap Deagle", "models/v_deagle.mdl", 0, -1},
	{"Sunset Storm", "models/mega_dust2/v_sunset_storm.mdl", 150, -1},
	{"Retex", "models/mega_dust2/v_retex.mdl", 1000, -1},
	{"Emperor Dragon", "models/mega_dust2/v_emperor_dragon.mdl", 2000, -1},
	{"Golden Scorpion", "models/mega_dust2/v_golden_scorpion.mdl", 3000, -1},
	{"Dragon", "models/mega_dust2/v_dragon.mdl", 4500, -1},
	{"Glory", "models/mega_dust2/v_glory.mdl", 6500, -1},
	{"Gold Engraved", "models/mega_dust2/v_gold_engraved.mdl", 15000, -1},
	{"\y* \wBlaze \d(Vizsgalhato)", "models/mega_dust2/Blaze.mdl", 0, 6},
	{"\y* \wCSteel \d(Vizsgalhato)", "models/mega_dust2/CSteel.mdl", 0, 6}
}
new const WeaponKnife[][DATA] = {
	{"Alap Kes", "models/v_knife.mdl", 0, -1},
	{"Vonalzo", "models/mega_dust2/v_vonalzo.mdl", 5, -1},
	{"Lumine", "models/mega_dust2/v_lumine.mdl", 15, -1},
	{"Dildo", "models/mega_dust2/v_dildo.mdl", 30, -1},
	{"Hagyma", "models/mega_dust2/v_hagyma.mdl", 45, -1},
	{"Defibrillator", "models/mega_dust2/v_defibrillator.mdl", 60, -1},
	{"Sajt Szeletelo", "models/mega_dust2/v_cheese_slicer.mdl", 85, -1},
	{"Beba", "models/mega_dust2/v_beba.mdl", 100, -1},
	{"Aqua", "models/mega_dust2/v_aqua.mdl", 200, -1},
	{"Chinese", "models/mega_dust2/v_chinese.mdl", 300, -1},
	{"Wolverine", "models/mega_dust2/v_wolverine.mdl", 400, -1},
	{"Kukri Beast", "models/mega_dust2/v_kukri_beast.mdl", 500, -1},
	{"Daedric", "models/mega_dust2/v_daedric.mdl", 1000, -1},
	{"Carbon", "models/mega_dust2/v_carbon.mdl", 1200, -1},
	{"M9 Bayonett", "models/mega_dust2/v_m9.mdl", 1600, -1},
	{"Dragonslayer", "models/mega_dust2/v_balrog_dragonslayer.mdl", 2100, -1},
	{"Bone", "models/mega_dust2/v_bone.mdl", 3300, -1},
	{"Bezboz Uto", "models/mega_dust2/v_bezboz.mdl", 4500, -1},
	{"\y* \wKarambit 1 \d(Vizsgalhato)", "models/mega_dust2/v_crimson_karambit.mdl", 0, 8},
	{"\y* \wKarambit 2 \d(Vizsgalhato)", "models/mega_dust2/v_karambit_2.mdl", 0, 8}
}
new const WeaponAk[][DATA] = {
	{"Alap AK47", "models/v_ak47.mdl", 0, -1},
	{"Shadow Charge", "models/mega_dust2/v_ak47_shadow_charge.mdl", 250, -1},
	{"Villam", "models/mega_dust2/v_ak47_villam.mdl", 800, -1},
	{"Gold", "models/mega_dust2/v_ak47_gold.mdl", 2000, -1},
	{"Cyrex", "models/mega_dust2/v_ak47_cyrex.mdl", 3500, -1},
	{"Russia", "models/mega_dust2/v_ak47_russia.mdl", 5000, -1},
	{"Engraving", "models/mega_dust2/v_ak47_engraving.mdl", 10000, -1},
	{"Vulcan", "models/mega_dust2/v_ak47_vulcan.mdl", 20000, -1},
	{"Fire Serpent", "models/mega_dust2/v_ak47_fireserpent.mdl", 40000, -1},
	{"Horas", "models/mega_dust2/v_ak47_horas.mdl", 60000, -1},
	{"Furious Peacock", "models/mega_dust2/v_ak47_furious_peacock.mdl", 100000, -1},
	{"\y* \wVulcanic \d(Vizsgalhato)", "models/mega_dust2/Vulcan.mdl", 0, 6},
	{"\y* \wShark \d(Vizsgalhato)", "models/mega_dust2/elitbuild.mdl", 0, 6}
}
new const WeaponM4[][DATA] = {
	{"Alap M4A1", "models/v_m4a1.mdl", 0, -1},
	{"Devil", "models/mega_dust2/devil.mdl", 250, -1},
	{"White & Gold", "models/mega_dust2/white_gold.mdl", 800, -1},
	{"Red Style", "models/mega_dust2/red_style.mdl", 2000, -1},
	{"Red Line", "models/mega_dust2/red_line.mdl", 3500, -1},
	{"Urban Assault", "models/mega_dust2/urban_assault.mdl", 5000, -1},
	{"Desert", "models/mega_dust2/desert.mdl", 10000, -1},
	{"Desert Camo", "models/mega_dust2/desert_camo.mdl", 20000, -1},
	{"Desert Granade", "models/mega_dust2/desert_granade.mdl", 40000, -1},
	{"Sopmod Retex", "models/mega_dust2/sopmod_retex.mdl", 60000, -1},
	{"Transformer", "models/mega_dust2/transformer.mdl", 100000, -1},
	{"\y* \wTechnicality \d(Vizsgalhato)", "models/mega_dust2/Technicality.mdl", 0, 14}
}
new const MainStrings[][] = {
	"AWP Skinek",
	"Deagle Skinek",
	"Kes Skinek", 
	"AK47 Skinek",
	"M4A1 Skinek"
}
public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	register_clcmd("say /menu", "openMainMenu")
	register_event("DeathMsg","Halal","a")
	register_event("CurWeapon", "evChangeWeapon", "be", "1=1")
	register_impulse(100, "cmdInspectWeap");
}
public plugin_precache() {	
	for(new i;i < sizeof(WeaponWp); i++) precache_model(WeaponWp[i][ModelName])
	for(new i;i < sizeof(WeaponDeagle); i++) precache_model(WeaponDeagle[i][ModelName])
	for(new i;i < sizeof(WeaponKnife); i++) precache_model(WeaponKnife[i][ModelName])
	for(new i;i < sizeof(WeaponAk); i++) precache_model(WeaponAk[i][ModelName])
	for(new i;i < sizeof(WeaponM4); i++) precache_model(WeaponM4[i][ModelName])
}
public cmdInspectWeap(id) {
	if(!is_user_alive(id)) return PLUGIN_HANDLED;
	new Wpns = get_user_weapon(id)
	
	switch(Wpns) {
		case CSW_AWP: {
			if(WeaponWp[g_SelectedGun[AWP][id]][AnimType] == -1) return PLUGIN_HANDLED;
			UTIL_PlayWeaponAnimation(id, WeaponWp[g_SelectedGun[AWP][id]][AnimType]);
		}
		case CSW_DEAGLE: {
			if(WeaponDeagle[g_SelectedGun[DEAGLE][id]][AnimType] == -1) return PLUGIN_HANDLED;
			UTIL_PlayWeaponAnimation(id, WeaponDeagle[g_SelectedGun[DEAGLE][id]][AnimType]);
		}
		case CSW_KNIFE: {
			if(WeaponKnife[g_SelectedGun[KNIFE][id]][AnimType] == -1) return PLUGIN_HANDLED;
			UTIL_PlayWeaponAnimation(id, WeaponKnife[g_SelectedGun[KNIFE][id]][AnimType]);
		}
		case CSW_AK47: {
			if(WeaponAk[g_SelectedGun[AK47][id]][AnimType] == -1) return PLUGIN_HANDLED;
			UTIL_PlayWeaponAnimation(id, WeaponAk[g_SelectedGun[AK47][id]][AnimType]);
		}
		case CSW_M4A1: {
			if(WeaponM4[g_SelectedGun[M4A1][id]][AnimType] == -1) return PLUGIN_HANDLED;
			UTIL_PlayWeaponAnimation(id, WeaponM4[g_SelectedGun[M4A1][id]][AnimType]);
		}
	}
	return PLUGIN_HANDLED
}
public evChangeWeapon(id) {
	switch(get_user_weapon(id)) {
		case CSW_AK47: entity_set_string(id, EV_SZ_viewmodel, WeaponAk[g_SelectedGun[AK47][id]][ModelName]);
		case CSW_M4A1: entity_set_string(id, EV_SZ_viewmodel, WeaponM4[g_SelectedGun[M4A1][id]][ModelName]);
		case CSW_AWP: entity_set_string(id, EV_SZ_viewmodel, WeaponWp[g_SelectedGun[AWP][id]][ModelName]);
		case CSW_DEAGLE: entity_set_string(id, EV_SZ_viewmodel, WeaponDeagle[g_SelectedGun[DEAGLE][id]][ModelName]);
		case CSW_KNIFE: entity_set_string(id, EV_SZ_viewmodel, WeaponKnife[g_SelectedGun[KNIFE][id]][ModelName]);
	}
	return PLUGIN_CONTINUE
}
public Halal() {
	
	new iAttacker = read_data(1)
	new iVictim = read_data(2)
	new iHs = read_data(3)
	
	if(iAttacker == iVictim || iAttacker == 0) return PLUGIN_HANDLED
	
	new iPoints = iHs ? HEADSHOT_POINT : KILL_POINT
	
	switch(get_user_weapon(iAttacker)) {
		case CSW_AK47: g_uPoints[AK47][iAttacker] += iPoints
		case CSW_M4A1: g_uPoints[M4A1][iAttacker] += iPoints
		case CSW_AWP: g_uPoints[AWP][iAttacker] += iPoints
		case CSW_DEAGLE: g_uPoints[DEAGLE][iAttacker] += iPoints
		case CSW_KNIFE: g_uPoints[KNIFE][iAttacker] += iPoints
	}
	
	set_hudmessage(random(256), random(256), random(256), -1.0, 0.85, 0, 6.0, 3.0);
	show_hudmessage(iAttacker, "+%i Pont", iPoints);
	
	return PLUGIN_CONTINUE;
}
public openMainMenu(id) {
	new szMenu[121], String[6]
	formatex(szMenu, charsmax(szMenu), "\dMeGaToN ~ Only Dust2^n\r%s \wFőmenü", PREFIX)
	new menu = menu_create(szMenu, "hMainMenu");
	
	for(new i ;i < sizeof(MainStrings); i++) {
		num_to_str(i, String, 5)
		formatex(szMenu, charsmax(szMenu), MainStrings[i]);
		menu_additem(menu, szMenu, String);
	}
	
	menu_display(id, menu, 0);
	return PLUGIN_HANDLED;
}

public hMainMenu(id, menu, item) {
	if(item == MENU_EXIT) {
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	g_Wpn[id] = item+1
	openSkinMenu(id)
	
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
public openSkinMenu(id) {
	new szMenu[121], szMenu2[64], String[6]
	if(g_Wpn[id] == 1) formatex(szMenu, charsmax(szMenu), "\dMeGaToN ~ Only Dust2^n\r%s \w%s^n\wPont: \y%i\d", PREFIX, MainStrings[g_Wpn[id]-1], g_uPoints[AWP][id])
	else if(g_Wpn[id] == 2) formatex(szMenu, charsmax(szMenu), "\dMeGaToN ~ Only Dust2^n\r%s \w%s^n\wPont: \y%i\d", PREFIX, MainStrings[g_Wpn[id]-1], g_uPoints[DEAGLE][id])
	else if(g_Wpn[id] == 3) formatex(szMenu, charsmax(szMenu), "\dMeGaToN ~ Only Dust2^n\r%s \w%s^n\wPont: \y%i\d", PREFIX, MainStrings[g_Wpn[id]-1], g_uPoints[KNIFE][id])
	else if(g_Wpn[id] == 4) formatex(szMenu, charsmax(szMenu), "\dMeGaToN ~ Only Dust2^n\r%s \w%s^n\wPont: \y%i\d", PREFIX, MainStrings[g_Wpn[id]-1], g_uPoints[AK47][id])
	else if(g_Wpn[id] == 5) formatex(szMenu, charsmax(szMenu), "\dMeGaToN ~ Only Dust2^n\r%s \w%s^n\wPont: \y%i\d", PREFIX, MainStrings[g_Wpn[id]-1], g_uPoints[M4A1][id])
	new menu = menu_create(szMenu, "hSkinChooser");
	
	if(g_Wpn[id] == 1) {
		for(new i; i < sizeof(WeaponWp); i++) {
			num_to_str(i, String, 5)
			formatex(szMenu2, charsmax(szMenu2), "\r|%i| Ölés", WeaponWp[i][Points]);
			formatex(szMenu, charsmax(szMenu), "%s %s", WeaponWp[i][GunName], g_SelectedGun[AWP][id] == i ? "\y|AKTIV|": szMenu2);
			menu_additem(menu, szMenu, String);
		}
	}
	else if(g_Wpn[id] == 2) {
		for(new i; i < sizeof(WeaponDeagle); i++) {
			num_to_str(i, String, 5)
			formatex(szMenu2, charsmax(szMenu2), "\r|%i| Ölés", WeaponDeagle[i][Points]);
			formatex(szMenu, charsmax(szMenu), "%s %s", WeaponDeagle[i][GunName], g_SelectedGun[DEAGLE][id] == i ? "\y|AKTIV|": szMenu2);
			menu_additem(menu, szMenu, String);
		}
	}
	else if(g_Wpn[id] == 3) {
		for(new i; i < sizeof(WeaponKnife); i++) {
			num_to_str(i, String, 5)
			formatex(szMenu2, charsmax(szMenu2), "\r|%i| Ölés", WeaponKnife[i][Points]);
			formatex(szMenu, charsmax(szMenu), "%s %s", WeaponKnife[i][GunName], g_SelectedGun[KNIFE][id] == i ? "\y|AKTIV|": szMenu2);
			menu_additem(menu, szMenu, String);
		}
	}
	else if(g_Wpn[id] == 4) {
		for(new i; i < sizeof(WeaponAk); i++) {
			num_to_str(i, String, 5)
			formatex(szMenu2, charsmax(szMenu2), "\r|%i| Ölés", WeaponAk[i][Points]);
			formatex(szMenu, charsmax(szMenu), "%s %s", WeaponAk[i][GunName], g_SelectedGun[AK47][id] == i ? "\y|AKTIV|": szMenu2);
			menu_additem(menu, szMenu, String);
		}
	}
	else if(g_Wpn[id] == 5) {
		for(new i; i < sizeof(WeaponM4); i++) {
			num_to_str(i, String, 5)
			formatex(szMenu2, charsmax(szMenu2), "\r|%i| Ölés", WeaponM4[i][Points]);
			formatex(szMenu, charsmax(szMenu), "%s %s", WeaponM4[i][GunName], g_SelectedGun[M4A1][id] == i ? "\y|AKTIV|": szMenu2);
			menu_additem(menu, szMenu, String);
		}
	}
	
	menu_display(id, menu, 0);
	return PLUGIN_HANDLED;
}
public hSkinChooser(id, menu, item) {
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
	
	switch(g_Wpn[id]) {
		case 1: {
			if(g_uPoints[AWP][id] >= WeaponWp[item][Points]) {
				g_SelectedGun[AWP][id] = item
				ColorChat(id, GREEN, "^4%s ^1Sikeresen aktiváltad a skint!", PREFIX)
			}
			else ColorChat(id, GREEN, "^4%s ^1Nincs elég ölésed az aktiváláshoz!", PREFIX)
		}
		case 2: {
			if(g_uPoints[DEAGLE][id] >= WeaponDeagle[item][Points]) {
				g_SelectedGun[DEAGLE][id] = item
				ColorChat(id, GREEN, "^4%s ^1Sikeresen aktiváltad a skint!", PREFIX)
			}
			else ColorChat(id, GREEN, "^4%s ^1Nincs elég ölésed az aktiváláshoz!", PREFIX)
		}
		case 3: {
			if(g_uPoints[KNIFE][id] >= WeaponKnife[item][Points]) {
				g_SelectedGun[KNIFE][id] = item
				ColorChat(id, GREEN, "^4%s ^1Sikeresen aktiváltad a skint!", PREFIX)
			}
			else ColorChat(id, GREEN, "^4%s ^1Nincs elég ölésed az aktiváláshoz!", PREFIX)
		}
		case 4: {
			if(g_uPoints[AK47][id] >= WeaponAk[item][Points]) {
				g_SelectedGun[AK47][id] = item
				ColorChat(id, GREEN, "^4%s ^1Sikeresen aktiváltad a skint!", PREFIX)
			}
			else ColorChat(id, GREEN, "^4%s ^1Nincs elég ölésed az aktiváláshoz!", PREFIX)
		}
		case 5: {
			if(g_uPoints[M4A1][id] >= WeaponM4[item][Points]) {
				g_SelectedGun[M4A1][id] = item
				ColorChat(id, GREEN, "^4%s ^1Sikeresen aktiváltad a skint!", PREFIX)
			}
			else ColorChat(id, GREEN, "^4%s ^1Nincs elég ölésed az aktiváláshoz!", PREFIX)
		}
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}
stock UTIL_PlayWeaponAnimation(const Player, const Sequence) {
	set_pev(Player, pev_weaponanim, Sequence)
	message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, .player = Player)
	write_byte(Sequence)
	write_byte(pev(Player, pev_body))
	message_end()
}
