/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <engine>
#include <nvault>
#include <colorchat>
#include <engine>

#define PLUGIN "Global Unison"
#define VERSION "1.0"
#define AUTHOR "madeka"

new const SZEROPREF[] = "[Global Unison]";

//LÃ¡da
new const lada[] = "models/mod/lada.mdl";
new const kulcs[] = "models/mod/kulcs.mdl";
new const arany[] = "models/mod/arany.mdl";
new const csomag[] = "models/mod/csomag.mdl";
//Fegyver skinek
new const v_skin1[] = "models/mod/v_skin1.mdl";
new const v_skin2[] = "models/mod/v_skin2.mdl";
new const v_skin3[] = "models/mod/v_skin3.mdl";
new const v_skin4[] = "models/mod/v_skin4.mdl";
new const v_skin5[] = "models/mod/v_skin5.mdl",

//Fegyverskin pontok
new skinname1[33], skinname2[33], skinname3[33] skinname4[33], skinname5[33];
new g_lada[33],g_kulcs[33];
new g_arany[33]
new aktivalva[33];
new gVault;
new cvar_fegyversebzes;
new guntext1[256],guntext2[256],guntext3[256], guntext4[256], guntext5[256]

public plugin_precache()
{
	//Ide kerÃ¼lnek a modellek, sprites, hangok
	precache_model(lada);
	precache_model(kulcs);
	precache_model(arany);
	precache_model(csomag);
	precache_model(v_skin1);
	precache_model(v_skin2);
	precache_model(v_skin3);
	precache_model(v_skin4);
	precache_model(v_skin5);
}

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	cvar_fegyversebzes = register_cvar("cvar_fegyversebzes","20")
        register_impulse(201, "fomenu")
	register_forward(FM_Touch, "fwd_lada")
	register_logevent( "fwStart" , 2 , "1=Round_Start" ) ;
	RegisterHam(Ham_Killed, "player", "fw_player_killed", 1)
	register_event("CurWeapon", "fegyver_valtas", "be", "1=1");
	RegisterHam(Ham_TakeDamage, "player", "fw_Fegyversebzes")
}

public fomenu(id)
{
	new cim[121]
	format(cim, charsmax(cim), "\yGlobal Unison By LabelFlash v1.0^n\wArany:\y[%d]",g_arany[id])
	new menu = menu_create(cim, "menu_fo")
	
	menu_additem(menu,"\wRaktár","1",0)
        menu_additem(menu,"\wLáda Nyitás","2",0)
        menu_additem(menu,"\wAddolás","3",0)

	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);
}

public menu_fo(id, menu, item)
{
	if( item == MENU_EXIT )
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	new data[9], szName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
	new key = str_to_num(data);
	switch(key)
	{
		case 1:{
			raktar(id)
		}
                case 2:{
			LadaMenu(id)
	        }
                case 3:{
			addolas(id)
	        }
           }
	
	menu_destroy(menu)
	return PLUGIN_HANDLED
}

public LadaMenu(id) {
        new cim[121]
        format(cim, charsmax(cim), "\yGlobal Unison v1.0-Láda Nyitás")
        new menu = menu_create(cim, "Lada_h")

        format(cim, charsmax(cim), "\wLáda: \y%d\r \wKulcs: \y%d", g_lada[id], g_kulcs[id])
        menu_additem(menu, cim, "0",0) 
       
        format(cim, charsmax(cim), "\r1.\yLáda Nyitás")
        menu_additem(menu, cim, "1",0)
       
        menu_display(id, menu, 0)
    }
    public Lada_h(id, menu, item){
        if(item == MENU_EXIT)
        {
            menu_destroy(menu)
            return
        }
       
        new data[9], szName[64]
        new access, callback
        menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback)
        new key = str_to_num(data)
       
        switch(key) {
            case 1: {
                if(g_lada[id]>= 1 && g_kulcs[id]) {
                    g_lada[id]--
                    g_kulcs[id]--
                    ladakinyitasa(id)
                }
                LadaMenu(id)
            }
        }
    }

public raktar(id)
{
	if(!is_user_connected(id))
		return;
		
	new title[121];
	format(title, charsmax(title), "%sRaktar",SZEROPREF)
		
	new menu = menu_create(title, "raktarhandler");
		
	format(guntext1, charsmax(guntext1), "\w Nincs megszerezve 1")
	format(guntext2, charsmax(guntext2), "\w Nincs megszerezve 2")
	format(guntext3, charsmax(guntext3), "\w Nincs megszerezve 3")
	format(guntext4, charsmax(guntext4), "\w Nincs megszerezve 4")
	format(guntext5, charsmax(guntext5), "\w Nincs megszerezve 5")
	
	menu_additem(menu, guntext1 , "1", 0);
	menu_additem(menu, guntext2 , "2", 0);
	menu_additem(menu, guntext3 , "3", 0);
	menu_additem(menu, guntext4 , "4", 0);
	menu_additem(menu, guntext5 , "5", 0);
	
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu);
}
 
public raktarhandler(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 key = str_to_num(data);
	switch(key)
	{
 
		case 1:
		{
			if(skinname1[id] >0)
				aktivalva[id] = 1
		}
		case 2:
		{
			if(skinname2[id] >0)
				aktivalva[id] = 2
		}
		case 3:
		{
			if(skinname3[id] >0)
				aktivalva[id] = 3
		}
		case 4:
		{
			if(skinname4[id] >0)
				aktivalva[id] = 4
		}
		case 5:
		{
			if(skinname5[id] >0)
				aktivalva[id] = 5		
		} 
	}
	return PLUGIN_HANDLED;
}


public fw_Fegyversebzes(victim, inflictor, attacker, Float:damage, damage_type)
{
	if(is_user_alive(attacker) && is_user_connected(attacker))
	{
		if(skinname3[attacker] > 0 && aktivalva[attacker] == 3)
		{
			SetHamParamFloat(4, damage + get_pcvar_num(cvar_fegyversebzes))
		}
	}
	return HAM_IGNORED
}
public client_putinserver(id)
{
	skinname1[id] = 0
	skinname2[id] = 0
	skinname3[id] = 0
	skinname4[id] = 0
	skinname5[id] = 0
	aktivalva[id] = 0
	Betoltes(id)
}
public client_disconnect(id)
{
	Mentes(id)
	skinname1[id] = 0
	skinname2[id] = 0
	skinname3[id] = 0
	skinname4[id] = 0
	skinname5[id] = 0
	aktivalva[id] = 0
}
public fegyver_valtas(id)
{
	if(!is_user_connected(id))
		return;
		
	if(!is_user_alive(id))
		return;
		
	new weapon = get_user_weapon(id);
	switch(weapon)
	{
		case CSW_AK47:
		case CSW_M4A1:
		case CSW_DEAGLE:
		case CSW_AWP:
		case CSW_USP:
		{
			if(skinname1[id] > 0 && aktivalva[id] == 1)
			{
				set_pev(id, pev_viewmodel2, v_skin1);
				
			}
			if(skinname2[id] > 0 && aktivalva[id] == 2)
			{
				set_pev(id, pev_viewmodel2, v_skin1);
				
			}
			if(skinname3[id] > 0 && aktivalva[id] == 3)
			{
				set_pev(id, pev_viewmodel2, v_skin3);
			}
			if(skinname4[id] > 0 && aktivalva[id] == 4)
			{
				set_pev(id, pev_viewmodel2, v_skin4);
			}
			if(skinname5[id] > 0 && aktivalva[id] == 5)
			{
				set_pev(id, pev_viewmodel2, v_skin5);	
				
			}
		}
		//egyÃ©b..
	}
	
	
}
public fw_player_killed(victim, attacker, shouldgib)
{
	if(!is_user_connected(attacker) || !is_user_connected(victim))
		return PLUGIN_CONTINUE;
	
	if(attacker != victim)
	{
		switch(random_num(1,3))
		{
			case 1: lada_keszites(victim,0)
			case 2: kulcs_keszites(victim,0)
			case 3: arany_keszites(victim,0)
		}
	}
	
	return PLUGIN_CONTINUE
}
public fwStart()
{
	kill_all_entity("lada");
	kill_all_entity("kulcs");
	kill_all_entity("arany");
}
public kill_all_entity(classname[])
{
	new iEnt = find_ent_by_class(-1, classname)
	while(iEnt > 0)
	{
		remove_entity(iEnt)
		iEnt = find_ent_by_class(iEnt, classname)		
	}
}
public lada_keszites(id, id_item)
{ 
	
	new Float:origins[3]
	pev(id,pev_origin,origins);
	new entit=create_entity("info_target")
	
	origins[0]+=1.0
	origins[2]-=32.0
	
	set_pev(entit,pev_origin,origins)
	entity_set_model(entit,lada)
	set_pev(entit,pev_classname,"lada");
	
	dllfunc(DLLFunc_Spawn, entit); 
	set_pev(entit,pev_solid,SOLID_BBOX); 
	set_pev(entit,pev_movetype,MOVETYPE_FLY);
	
	engfunc(EngFunc_SetSize,entit,{-1.1, -1.1, -1.1},{1.1, 1.1, 1.1});
	
	engfunc(EngFunc_DropToFloor,entit);
	
	set_pev(entit, pev_iuser1, id_item)
}
public kulcs_keszites(id, id_item)
{ 
	
	new Float:origins[3]
	pev(id,pev_origin,origins);
	new entit=create_entity("info_target")
	
	origins[0]+=1.0
	origins[2]-=32.0
	
	set_pev(entit,pev_origin,origins)
	entity_set_model(entit,kulcs)
	set_pev(entit,pev_classname,"kulcs");
	
	dllfunc(DLLFunc_Spawn, entit); 
	set_pev(entit,pev_solid,SOLID_BBOX); 
	set_pev(entit,pev_movetype,MOVETYPE_FLY);
	
	engfunc(EngFunc_SetSize,entit,{-1.1, -1.1, -1.1},{1.1, 1.1, 1.1});
	
	engfunc(EngFunc_DropToFloor,entit);
	
	set_pev(entit, pev_iuser1, id_item)
}
public arany_keszites(id, id_item)
{ 
	
	new Float:origins[3]
	pev(id,pev_origin,origins);
	new entit=create_entity("info_target")
	
	origins[0]+=1.0
	origins[2]-=32.0
	
	set_pev(entit,pev_origin,origins)
	entity_set_model(entit,arany)
	set_pev(entit,pev_classname,"arany");
	
	dllfunc(DLLFunc_Spawn, entit); 
	set_pev(entit,pev_solid,SOLID_BBOX); 
	set_pev(entit,pev_movetype,MOVETYPE_FLY);
	
	engfunc(EngFunc_SetSize,entit,{-1.1, -1.1, -1.1},{1.1, 1.1, 1.1});
	
	engfunc(EngFunc_DropToFloor,entit);
	
	set_pev(entit, pev_iuser1, id_item)
}
public csomag_keszites(id, id_item)
{ 
	
	new Float:origins[3]
	pev(id,pev_origin,origins);
	new entit=create_entity("info_target")
	
	origins[0]+=1.0
	origins[2]-=32.0
	
	set_pev(entit,pev_origin,origins)
	entity_set_model(entit,csomag)
	set_pev(entit,pev_classname,"csomag");
	
	dllfunc(DLLFunc_Spawn, entit); 
	set_pev(entit,pev_solid,SOLID_BBOX); 
	set_pev(entit,pev_movetype,MOVETYPE_FLY);
	
	engfunc(EngFunc_SetSize,entit,{-1.1, -1.1, -1.1},{1.1, 1.1, 1.1});
	
	engfunc(EngFunc_DropToFloor,entit);
	
	set_pev(entit, pev_iuser1, id_item)
}
public fwd_lada(ent,id)
{
	if(!is_user_alive(id)) return FMRES_IGNORED;
	
	if(!pev_valid(ent)) return FMRES_IGNORED;
	
	  
	static classname[32];
	pev(ent,pev_classname,classname,31); 
	
	if(equali(classname,"lada"))
	{
		if(pev(id,pev_button))
		{	
			g_lada[id]++
			ColorChat(id,NORMAL,"%s Kaptál egy ládát.",SZEROPREF)
			engfunc(EngFunc_RemoveEntity,ent);
		}
	}
	else if(equali(classname,"kulcs"))
	{
		if(pev(id,pev_button))
		{	
			g_kulcs[id]++
			ColorChat(id,NORMAL,"%s Kaptál egy kulcsot.",SZEROPREF)
			engfunc(EngFunc_RemoveEntity,ent);
		}
	}
	else if(equali(classname,"csomag"))
	{
		if(pev(id,pev_button))
		{	
			
			ColorChat(id,NORMAL,"%s Kaptál egy csomagot.",SZEROPREF)
			csomag_nyitas(id)
			engfunc(EngFunc_RemoveEntity,ent);
		}
	}
	else if(equali(classname,"arany"))
	{
		if(pev(id,pev_button))
		{	
			new ertek = random_num(50,100);
			g_arany[id] += ertek;
			ColorChat(id,NORMAL,"%s Kaptal %d aranyat.",SZEROPREF,ertek)
			engfunc(EngFunc_RemoveEntity,ent);
		}
	}
	else
		return FMRES_IGNORED;
	
	
	return PLUGIN_HANDLED
}
public ladakinyitasa(id)
{
	switch(random_num(1,3))
	{
		case 1:
		{
			skinname1[id]++;
			client_print(id,print_chat,"%s Kaptál egy Magma Ak-t",SZEROPREF)
		}
		case 2:
		{
			skinname2[id]++;
			client_print(id,print_chat,"%s Kaptál egy Magma M4-et",SZEROPREF)
		}
		case 3:
		{
			skinname3[id]++;
			client_print(id,print_chat,"%s Kaptal egy Magma Deagle-t",SZEROPREF)
		}
		case 4:
		{
			skinname4[id]++;
			client_print(id,print_chat,"%s Kaptûl egy Magma Awp-t",SZEROPREF)
		}
		case 5:
		{
			skinname5[id]++;
			client_print(id,print_chat,"%s Kaptal egy Magma Usp-t",SZEROPREF)	
		}
	}
}
public csomag_nyitas(id)
{
	switch(random_num(1,5))
	{
		case 1:
		{
			new ertek = random_num(50,100);
			g_arany[id]+= ertek;
			client_print(id,print_chat,"%s Kaptál %d aranyat.",SZEROPREF,ertek)
		}
		case 2:
		{
			new ertek = random_num(70,150)
			g_arany[id]+= ertek;
			client_print(id,print_chat,"%s Kaptál %d aranyat.",SZEROPREF,ertek)
		}
		case 3:
		{
			skinname1[id]++;
			client_print(id,print_chat,"%s Kaptál egy skint",SZEROPREF)
		}
		case 4:
		{
			skinname2[id]++;
			client_print(id,print_chat,"%s Kaptál egy skint",SZEROPREF)
		}
		case 5:
		{
			skinname3[id]++;
			client_print(id,print_chat,"%s Kaptál egy skint",SZEROPREF)
		}
		case 6:
		{
			skinname4[id]++;
			client_print(id,print_chat,"%s Kaptál egy skint",SZEROPREF)
		}
		case 7:
		{
			skinname5[id]++;
			client_print(id,print_chat,"%s Kaptál egy skint",SZEROPREF)	
		}
	}
}
public Mentes(id) 
{ 
	new Name[32]
	get_user_name(id,Name,charsmax(Name)) 
	new vaultkey[64],vaultdata[256] 
	
	format(vaultkey,63,"%s-Mod",Name) 
	format(vaultdata,255,"%i#%i#%i#",skinname1[id],skinname2[id],skinname3[id], skinname4[id], skinname5[id]) 
	
	nvault_set(gVault,vaultkey,vaultdata) 
	
	return PLUGIN_CONTINUE 
} 
public Betoltes(id) 
{ 
	new Name[32]
	get_user_name(id,Name,charsmax(Name)) 
	new vaultkey[64],vaultdata[256] 
	
	format(vaultkey,63,"%s-Mod",Name) 
	format(vaultdata,255,"%i#%i#%i#",skinname1[id],skinname2[id],skinname3[id], skinname4[id], skinname5[id])
	
	nvault_get(gVault,vaultkey,vaultdata,255) 
	
	replace_all(vaultdata, 255, "#", " ") 
	
	new load_ft[32],load_sec[32],load_th[32]
	
	parse(vaultdata, load_ft, 31, load_sec, 31,load_th, 31) 
	
	skinname1[id] = str_to_num(load_ft)
	
	skinname2[id] = str_to_num(load_sec)
	
	skinname3[id] = str_to_num(load_th)
	
	skinname4[id] = str_to_num(load_sec)
	
	skinname5[id] = str_to_num(load_th)
	
	return PLUGIN_CONTINUE 
}
public plugin_cfg( )
{	
	gVault = nvault_open( "CSGO_SYSTEM" )
	
	if ( gVault == INVALID_HANDLE )
		set_fail_state( "Hiba a CSGO_SYSTEM betoltese kozben" );
}
public plugin_end( )
	nvault_close( gVault )

public addolas(id)
{
g_lada[id] +=5
g_kulcs[id] +=5
ColorChat(id,NORMAL,"%s Sikeressen addoltál mind tulajdonost!!",SZEROPREF)
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par }
*/
