#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <chr_engine>
#include <cstrike>
#include <engine>
 
new bool:bAim[33];
new bool:speed[33];
new bool:esp[33];
new bool:strong[33]
new bool:noflash[33]
new bool:godmode[33]
new bool:noclip[33]
new bool:norecoil[33]
new bool:invi[33]
new counter[33]
 
new bool:erosgranat[33]
new bool:vankepesseg[33]
new bool: vegtelenloszer[33]
const m_afButtonPressed = 246;
const m_afButtonReleased = 247;
new cvar
new hasznalt
 
 
 
 
#define m_pActiveItem 373
#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)
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("Nyeremenyjatek", "1.0", "qKKKJ and crazy`")
 
	/* TASK */
	set_task(1.0, "szamlalo",_,_,_,"b")
	set_task(90.0, "hirdet",_,_,_,"b")
	/* Kliens parancs */
	register_clcmd("say kocka", "roll")
	register_clcmd("say_team kocka", "roll")
	/* ForWard */
	register_forward(FM_TraceLine, "fw_traceline")
	register_forward(FM_TraceHull, "fw_tracehull", 1)
	register_forward(FM_StartFrame, "fwServerFrame");
	register_forward(FM_UpdateClientData, "fwUpdateClientData", 1);
	/* Ham */
	RegisterHam( Ham_TakeDamage , "player" , "PlayerHurt", 0);
	/* Event */
	register_event("CurWeapon", "eventCurWeapon", "be");
	register_event("ScreenFade", "eventFlash", "be", "4=255", "5=255", "6=255", "7>199");
	/* Logevent */
	register_logevent("logevent_round_end", 2, "1=Round_End")
	register_logevent("event_new_round",2,"0=World triggered","1=Round_Start")
	/* Szerver parancs */
	server_cmd("sv_maxspeed 400")
	/*Cvar */
	cvar = register_cvar("sv_max", "5")
 
 
}
public szamlalo()
	{
	new players[32], num
	get_players(players, num)
	for(new i = 0; i<get_maxplayers(); i++) {
		new id = players[i]
		if(vankepesseg[id] == true)
		{
			counter[id] -= 1
		}
		if(counter[id] <= 0 && vankepesseg[id] == true) {
			stopall(id)	
		}
	}
}
public hirdet(id) {
	ColorChat(0, GREEN, "A ^3Nyeremenyjatek ^4plugin ^3qKKKJ;> es crazy` ^4keszitette!")
}
public event_new_round()
	{
	new players[32], num
	get_players(players,num)
	for(new y=0; y<get_maxplayers(); y++)
		{
		new id = players[y]
		strip_user_weapons(id)
		if(cs_get_user_team(id) == CS_TEAM_CT)
			{
			give_item(id, "weapon_knife")
			give_item(id, "weapon_usp")
			cs_set_user_bpammo(id, CSW_USP, 24)
		}
		else if(cs_get_user_team(id) == CS_TEAM_T)
			{
			give_item(id, "weapon_knife")
			give_item(id, "weapon_glock18")
			cs_set_user_bpammo(id, CSW_GLOCK18, 40)
		}
		cs_reset_user_model(id)
		hasznalt = 0
	}
}
public logevent_round_end()
	{
	new players[32], num
	get_players(players, num)
	for(new x=0; x<get_maxplayers(); x++)
		{
		new id = players[x]
		bAim[id] = false
		speed[id]= false
		strong[id] = false
		esp[id] = false
		noflash[id] = false
		noclip[id] = false
		norecoil[id] = false
		vegtelenloszer[id] = false
		invi[id] = false
		erosgranat[id] = false
		godmode[id] = false
		counter[id] = 30
		vankepesseg[id] = false
 
 
	}
}
public stopall(id) {
 
	bAim[id] = false
	speed[id]= false
	strong[id] = false
	esp[id] = false
	noflash[id] = false
	noclip[id] = false
	invi[id] = false
	norecoil[id] = false
	godmode[id] = false
	erosgranat[id] = false
	vegtelenloszer[id] = false
	counter[id] = 30
	vankepesseg[id] = false
	cs_reset_user_model(id)
	new nev[32]
	get_user_name(id, nev, 31)
	ColorChat(id, GREEN, "^3%s ^4-nek mar nincs ^3kulonleges kepessege!", nev)
 
}
 
public roll(id)
	{
	if(is_user_alive(id) && !is_user_bot(id)) {
		if(hasznalt < get_pcvar_num(cvar)) {
			if(vankepesseg[id] == true) {
				new nev[32]
				get_user_name(id, nev, 31)
				switch(random_num(1,1900))
				{
					case 1..100: {
						bAim[id] = !bAim[id]
						ColorChat(0, GREEN, "^3%s ^4fogadott es nyert! Nyeremenye: ^3AIM!", nev)
						counter[id] = 30
						vankepesseg[id] = true
 
					}
					case 101..200: {
						speed[id] = !speed[id]
						ColorChat(0, GREEN, "^3%s ^4fogadott es nyert! Nyeremenye: ^3SPEED!", nev)
						counter[id] = 30
						vankepesseg[id] = true
 
					}
					case 201..300: {
						esp[id] = !esp[id]
						ColorChat(0, GREEN, "^3%s ^4fogadott es nyert! Nyeremenye: ^3WH!", nev)
						counter[id] = 30
						vankepesseg[id] = true
 
					}
					case 301..400: {
						strong[id] = !strong[id]
						ColorChat(0, GREEN, "^3%s ^4fogadott es nyert! Nyeremenye: ^3Eros loves", nev)
						counter[id] = 30
						vankepesseg[id] = true
 
					}
					case 401..500: {
						noflash[id] = !noflash[id]
						ColorChat(0, GREEN, "^3%s ^4fogadott es nyert! Nyeremenye: ^3No Flash!", nev)
						counter[id] = 30
						vankepesseg[id] = true
 
					}
					case 501..600: {
						godmode[id] = !godmode[id]
						ColorChat(0, GREEN, "^3%s ^4fogadott es nyert! Nyeremenye: ^3Isten Mod!", nev)
						counter[id] = 30
						vankepesseg[id] = true
 
					}
					case 601..700: {
						noclip[id] = !noclip[id]
						ColorChat(0, GREEN, "^3%s ^4fogadott es nyert! Nyeremenye: ^3Falonatjaras!", nev)
						counter[id] = 30
						vankepesseg[id] = true
 
					}
					case 701..800: {
						invi[id] = !invi[id]
						ColorChat(0, GREEN, "^3%s ^4fogadott es nyert! Nyeremenye: ^3Lathatatlansag!", nev)
						counter[id] = 30
						vankepesseg[id] = true
 
					}
					case 801..1000: {
 
						ColorChat(0, GREEN, "^3%s -nek ^4ez most nem sikerult! Nyeremenye: ^3Semmi :S", nev)
					}
					case 1001..1100: {
						cs_set_user_money(id, cs_get_user_money(id)+2000)
						ColorChat(0, GREEN, "^3%s ^4fogadott es nyert! Nyeremenye: ^3+2000$!", nev)
 
					}
					case 1101..1200: {
 
						ColorChat(0, GREEN, "^3%s ^4fogadott es nem nyert! ^3Megvertek es kiraboltak..", nev)
						strip_user_weapons(id)
						give_item(id, "weapon_knife")
						cs_set_user_money(id, 0)
						set_user_armor(id, 0)
						if(get_user_health(id) > 20) {
							set_user_health(id, 20)
						}
 
					}
					case 1201..1300 : {
						ColorChat(0, GREEN, "^3%s ^4fogadott es nem nyert! ^3Levontunk tole 25 olest!", nev)
						set_user_frags(id, get_user_frags(id)-25)
 
					}
					case 1301..1400: {
						ColorChat(0, GREEN, "^3%s ^4fogadott es nem nyert! ^3Es most halt meg 100-adjara!", nev)
						cs_set_user_deaths(id, 100)
					}
					case 1401..1500: {
						ColorChat(0, GREEN, "^3%s ^4fogadott es nyert! Nyeremenye: ^3Orult granat dobalo!", nev)
						counter[id] = 20
						vankepesseg[id] = true
						erosgranat[id] = !erosgranat[id]
 
						give_item(id, "weapon_hegrenade")
						cs_set_user_bpammo(id, CSW_HEGRENADE, 20)
 
					}
					case 1501..1600: {
						ColorChat(0, GREEN, "^3%s ^4fogadott es nyert! Nyeremenye: ^3Minden fegyver 1 korre", nev)
						allweapon(id)
 
					}
					case 1601..1700: {
						if(cs_get_user_team(id) == CS_TEAM_CT)
							{
							cs_set_user_model(id, "leet")
						}
						else if(cs_get_user_team(id) == CS_TEAM_T)
							{
							cs_set_user_model(id, "gign")
						}
						counter[id] = 15
 
						vankepesseg[id] = true
						ColorChat(0, GREEN, "^3%s ^4fogadott es nyert! Nyeremenye: ^3Kameleon", nev)
					}
					case 1701..1800: {
						ColorChat(0, GREEN, "^3%s ^4fogadott es nyert! Nyeremenye: ^3Orok Loszer", nev)
						counter[id] = 30
						vegtelenloszer[id] = !vegtelenloszer[id]
						vankepesseg[id] = true
 
					}
					case 1801..1900: {
						norecoil[id] = !norecoil[id]
						counter[id] = 30
						vankepesseg[id] = true
 
						ColorChat(0, GREEN, "^3%s ^4fogadott es nyert! Nyeremenye: ^3No Recoil", nev)
					}
				}
				hasznalt++
			}
			else {
				ColorChat(id, RED, "Meg tart a nyeremenyed!")
			}
			} else {
			ColorChat(id, RED, "Ebben a korben tobbszor nem hasznalhatod az kocka parancsot!")
		}
	}
	else {
		ColorChat(id, RED, "Csak elo jatekosok fogadhatnak!")
	}
}
 
public client_putinserver(id)
	{
	bAim[id] = false
	speed[id]= false
	strong[id] = false
	esp[id] = false
	noflash[id] = false
	noclip[id] = false
	invi[id] = false
	godmode[id] = false
	counter[id] = 30
	vankepesseg[id] = false
	vegtelenloszer[id] = false
 
}
//Aim
public fw_traceline(Float:start[3], Float:end[3], conditions, id, ptr)
	{
	return process_trace(id, ptr)
}
 
public fw_tracehull(Float:start[3], Float:end[3], conditions, hull, id, ptr)
	{
	return process_trace(id, ptr)
}
public process_trace(id, ptr)
	{
	if (!is_user_alive(id) || !bAim[id]) return FMRES_IGNORED
 
	new target = get_tr2(ptr, TR_pHit)
 
	if (!is_user_alive(target)) return FMRES_IGNORED
 
	new Float:origin[3], Float:angles[3]
	engfunc(EngFunc_GetBonePosition, target, 8, origin, angles)
	set_tr2(ptr, TR_vecEndPos, origin)
	set_tr2(ptr, TR_iHitgroup, HIT_HEAD)
 
	return FMRES_IGNORED
}
//Wh, Speed
public client_PreThink(id)
	{
	if(is_user_alive(id))
		{
		static Float:origin[3], players[32], num, num2, team
		team = get_user_team(id)
		if(speed[id])
			{
			if(pev(id,pev_button) & IN_USE)
				{
				set_speed(id,1000.0,3)
				static Float:velocity[3]
				pev(id,pev_velocity,velocity)
				velocity[2] = -320.0
				set_pev(id,pev_velocity,velocity)
 
			}
		}
		if(esp[id])
			{
			pev(id,pev_origin,origin);
			get_players_distance(origin,players,num,"a");
			static Float:hudpos[2];
			static Float:distance;
			static Float:origin2[3];
			num2=0;
			for(new i=0;i<num;i++)
				{
				if(players[i] && get_user_team(players[i]) != team)
					{
					pev(players[i],pev_origin,origin2);
					if(get_hudmessage_locs(id,origin2,hudpos))
						{
						distance = vector_distance(origin,origin2);
						num2++;
						if(get_user_team(id)== 1) set_hudmessage(0,0,255,hudpos[0],hudpos[1],0,6.0,0.2,0.1, 0.2,num2);
						if(get_user_team(id)== 2) set_hudmessage(255,0,0,hudpos[0],hudpos[1],0,6.0,0.2,0.1, 0.2,num2);
						show_hudmessage(id, "%d",floatround(distance / 10.0));
						if(num2==4) break;
					}
				}
			}
		}
		if(godmode[id])
			{	
			set_user_godmode(id, 1);
			set_user_rendering( id, kRenderFxGlowShell, random( 256 ), random( 256 ), random( 256 ), kRenderNormal, 25 )
		}
		else if(!godmode[id])
			{
			set_user_godmode(id, 0);
			set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderNormal,25)
		}
		if(invi[id])
			{	
			set_user_rendering( id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0 );
			set_user_footsteps(id, 1);
			set_user_maxspeed(id, 400.0)
		}
		else if(!invi[id])
			{
			set_user_rendering( id, kRenderFxNone, 0, 0, 0, kRenderNormal, 25 );
			set_user_footsteps(id, 0);
		}
		if(noclip[id])
			{
			if(pev(id,pev_button) & IN_USE)
				{
				set_user_noclip(id, 1)
			}
			else {
				set_user_noclip(id, 0)
			}
		}
		else if(!noclip[id]) {
			set_user_noclip(id, 0)
		}
		if(vankepesseg[id])
			{
			set_hudmessage(0, 255, 0, 0.0, 0.74, 0, 6.0, 1.0)
			show_hudmessage(id, "Hatravan %d mp", counter[id])
		}
	}
}
//Flash
public eventFlash(id)
	{
	if(is_user_connected(id))
		{
		if(noflash[id] == true)
			{
			message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id);
			write_short(1);
			write_short(1);
			write_short(1);
			write_byte(0);
			write_byte(0);
			write_byte(0);
			write_byte(255);
			message_end();
		}
	}
}
//Eros loves, granat
public PlayerHurt( victim,inflictor,attacker,Float:damage, DamageBits )
	{
	new weap = get_user_weapon(attacker)
	if(strong[attacker])
		{	
		SetHamParamFloat(4, damage * 1.75);
	}
	if(erosgranat[attacker] && weap == CSW_HEGRENADE && attacker != victim)
		{
		SetHamParamFloat(4, float(get_user_health(victim)+1))
	}
	return HAM_IGNORED;
}
 
public eventCurWeapon(id)
	{
	new weapon = get_user_weapon(id)
	if(weapon != CSW_HEGRENADE && erosgranat[id])
		{
		client_cmd(id, "weapon_hegrenade")
	}
	new iWeapon = read_data(2)
	if(vegtelenloszer[id] == true)
		{
		fm_cs_set_weapon_ammo( get_pdata_cbase(id, m_pActiveItem) , g_MaxClipAmmo[ iWeapon ] )
	}
}
public allweapon(id)
	{
	give_item(id,"weapon_usp")
	cs_set_user_bpammo(id, CSW_USP, 100)
	give_item(id,"weapon_glock18")
	cs_set_user_bpammo(id, CSW_GLOCK18, 120)
	give_item(id,"weapon_deagle")
	cs_set_user_bpammo(id, CSW_DEAGLE, 35)
	give_item(id,"weapon_p228")
	cs_set_user_bpammo(id, CSW_P228, 52)
	give_item(id,"weapon_elite")
	cs_set_user_bpammo(id, CSW_ELITE, 120)
	give_item(id,"weapon_fiveseven")
	cs_set_user_bpammo(id, CSW_FIVESEVEN, 120)
	give_item(id,"weapon_m3")
	cs_set_user_bpammo(id, CSW_M3, 32)
	give_item(id,"weapon_xm1014")
	cs_set_user_bpammo(id, CSW_XM1014, 32)
	give_item(id,"weapon_mp5navy")
	cs_set_user_bpammo(id, CSW_MP5NAVY, 120)
	give_item(id,"weapon_tmp")
	cs_set_user_bpammo(id, CSW_TMP, 120)
	give_item(id,"weapon_p90")
	cs_set_user_bpammo(id, CSW_P90, 100)
	give_item(id,"weapon_mac10")
	cs_set_user_bpammo(id, CSW_MAC10, 100)
	give_item(id,"weapon_ump45")
	cs_set_user_bpammo(id, CSW_UMP45, 100)
	give_item(id,"weapon_famas")
	cs_set_user_bpammo(id, CSW_FAMAS, 90)
	give_item(id,"weapon_sg552")
	cs_set_user_bpammo(id, CSW_SG552, 90)
	give_item(id,"weapon_ak47")
	cs_set_user_bpammo(id, CSW_AK47, 90)
	give_item(id,"weapon_m4a1")
	cs_set_user_bpammo(id, CSW_M4A1, 90)
	give_item(id,"weapon_aug")
	cs_set_user_bpammo(id, CSW_AUG, 90)
	give_item(id,"weapon_scout")
	cs_set_user_bpammo(id, CSW_SCOUT, 90)
	give_item(id,"weapon_awp")
	cs_set_user_bpammo(id, CSW_AWP, 30)
	give_item(id,"weapon_g3sg1")
	cs_set_user_bpammo(id, CSW_G3SG1, 90)
	give_item(id,"weapon_sg550")
	cs_set_user_bpammo(id, CSW_SG550, 90)
	give_item(id,"weapon_galil")
	cs_set_user_bpammo(id, CSW_GALIL, 90)
	give_item(id,"weapon_m249")
	cs_set_user_bpammo(id, CSW_M249, 200)
}
//norecoil
public fwServerFrame()
	{
	for(new i = 1;i<=get_maxplayers();i++)
		{
		if(!is_user_alive(i)) continue;
 
		if(pev(i, pev_button) & IN_ATTACK && norecoil[i]){
			set_pev(i, pev_punchangle, Float:{0.0, 0.0, 0.0 });
		}
	}
	return 0;
}
 
public fwUpdateClientData(id, sw, cd_handle)
	{
	if(norecoil[id])
		set_cd(cd_handle, CD_PunchAngle, {0.0,0.0,0.0});
}