#include <amxmodx>
#include <fakemeta>
#include <zombieplague>

#define PLUGIN "[ZP] Extra Item : Noclip"
#define VERSION "1.2.4"
#define AUTHOR "The_Thing aka Fry"

new g_noclip, g_noclip_cooldown, g_noclip_long, g_noclip_cost
new Float:g_noclip_time[33]
new bool:g_hasNoclip[33]

new g_item_name[] = { "Noclip" }

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_concmd("+noclip","cmd_noclip", ADMIN_USER, "bind [key] +noclip")// Пример bind mouse4 +noclip и проходи сквозь стены зажав кнопку mouse4
	register_clcmd("-noclip","cmd_off")	
        
	g_noclip_cooldown = register_cvar("zp_noclip_cooldown", "10") // Сколько времени должно пройти чтобы использовать Noclip снова
	g_noclip_long = register_cvar("zp_noclip_long", "9") // Сколько секунд ты будешь проходить сквозь стены за один раз
        g_noclip_cost = register_cvar("zp_noclip_cost", "12") // Сколько стоит

	g_noclip = zp_register_extra_item(g_item_name, get_pcvar_num(g_noclip_cost), ZP_TEAM_HUMAN)

        register_event("HLTV", "EVENT_round_start", "a", "1=0", "2=0")
}

public zp_extra_item_selected(player, itemid)
{
	if (itemid == g_noclip)
	{
		g_hasNoclip[player] = true
		client_print(player, print_chat, "[ZP] Вы купили Noclip. Забентите (bind [key] +noclip) Чтобы использовать Noclip")
	}
}

public cmd_noclip(id)
{
	if (!is_user_alive(id) || zp_get_user_zombie(id) || !g_hasNoclip[id] )
		return PLUGIN_HANDLED

	fm_set_user_noclip(id, 1)
		
	g_noclip_time[id] = get_gametime()
	
	if (get_gametime() - g_noclip_time[id] < get_pcvar_float(g_noclip_cooldown))
		return PLUGIN_HANDLED
	
	return PLUGIN_CONTINUE
}

public cmd_off(id)
{	
	fm_set_user_noclip(id, 0)
	set_task(get_pcvar_float(g_noclip_long), "cmd_off", id)
	
	if (get_gametime() - g_noclip_time[id] < get_pcvar_float(g_noclip_cooldown))
		return PLUGIN_HANDLED
	
	return PLUGIN_CONTINUE
}

stock fm_set_user_noclip(index, noclip = 0) 
{
	set_pev(index, pev_movetype, noclip == 1 ? MOVETYPE_NOCLIP : MOVETYPE_WALK);

	return 1;
}

public EVENT_round_start()
{
         for (new id; id <= 32; id++) g_hasNoclip[id] = false;
}