#include <amxmodx>
#include <amxmisc>
#include <hamsandwich>
#include <fun>
#include <cstrike>
#include <engine>
#include <fakemeta>
 
#define MAX_GIFT 12
#define WINNER_JUMPS 1
 
#define RESPAWN_TIMER 5 
#define TID_RESP 2551
 
#define	FL_WATERJUMP	(1<<11)	
#define	FL_ONGROUND	(1<<9)	
 
enum _:GiftDatas
{
/*	Ajándék neve   Ajandék leírása  Kapott uzenet, false       ,másik plugin-e? funckció  plugin*/
	ItemName[128], ItemDesc[192], ItemGived[128],bool:item[33],bool:aPlugin,ItemFunc[128],ItemPlugin[128]
};
 
new const PLUGIN[] = "Questions and Answers";
new const VERSION[] = "1.0";
new const AUTHOR[] = "#CantStopWontStop";
 
new const g_gift[MAX_GIFT][GiftDatas] = 
{
	{ "XM1014 Shotgun", 	"1:4-höz az esélyed az azonnali ölésre!",				"Kaptál egy XM1014 Shotgun-t!",		false,		false },
	{ "Láthatatlanság", 	"Láthatatlan leszel a kör végéig!",					"Láthatatlan lettél a kör végéig!",	false,		false },
	{ "Gránát Csomag", 	"Kapsz egy gránát csomagot.",						"Kaptál egy gránát csomagot!",		false, 		false },
	{ "Kisebb Gravitáció", 	"Kisebb gravitációt kapsz.",						"Kisebb gravitációt kaptál!",		false,		false },
	{ "Wallhack",	 	"Egy kisebb wallhacket kapsz. Látod ellenfeleid falon keresztül.",	"Wallhacket nyertél!",			false,		false },
	{ "Gyorsaság",		"Nagyobb gyorsaságot kapsz.",						"Nagyobb gyorsaságot kaptál!",		false,		false },
	{ "BunnyHop",		"Folyamatosan tudsz ugrani.",						"Bunnyhop-ot nyertél!",			false,		false },
	{ "DuplaUgrás",		"Többet tudsz ugrani.",							"Több ugrást nyertél!",			false,		false },
	{ "Regeneráció",	"Az életed visszatöltődik.",						"Regenerációt nyertél!",		false,		false },
	{ "Újraéledés",		"Újraéledsz ,ha még a kör nem ért véget.",				"Halálod után újraéledsz!",		false, 		false },
	{ "M4A1 + Deagle",	"Kapsz egy M4A1-et és egy Deagle-t.",					"Kaptál egy M4A1-et és egy Deagle-t!",	false, 		false },
	{ "NoRecoil",		"Fegyvered nem fog rángatózni mikor lősz.",				"NoRecoil-t nyertél!",			false, 		false }
};
 
new const secwpns[][] = 
{
	"weapon_p228",
	"weapon_elite",
	"weapon_fiveseven",
	"weapon_usp",
	"weapon_glock18",
	"weapon_deagle"
};
 
new valasz[112],valasz2[112],
valasz3[112],valasz4[112],
valasz5[112],valasz6[112];
 
new bool:elso = false;
 
new r,g,b;
 
new g_win_speed,g_win_grav;
 
new winnername[32];
 
new const inifile[] = "addons/amxmodx/configs/questions.ini";
new const qna_prefix[] = "QnA"; //Plugin Prefix
 
//Multijump//
new jumpnum[33] = 0;
new bool:dojump[33] = false;
 
//Regeneration//
new bool:g_p_alive[33];
new g_max_players;
new g_max_health[33];
 
//Respawn
new g_timeleft[33];
new g_msg[64];
new g_HudSync;
 
public plugin_init() 
{
	register_plugin(PLUGIN,	VERSION, AUTHOR)
 
	register_logevent(	"RoundStart",	2,	"1=Round_Start");
	register_event(		"DeathMsg", 		"fwd_ClientKill", "a")
	register_event(		"ScreenFade", 		"Event_noFlash",  "be", "4=255", "5=255", "6=255", "7>199");
	register_logevent(	"RoundEnd", 	2, 	"1=Round_End");
 
	RegisterHam(Ham_TakeDamage,	 "player",	"fwd_TakeDamage");
	RegisterHam(Ham_Spawn, 		 "player", 	"fwd_Player_Spawn", 1);
	RegisterHam(Ham_Killed, 	 "player", 	"fwd_Player_Killed" );
 
	register_forward(FM_PlayerPreThink,	"FM_PreThink");
	register_forward(FM_TraceLine,		"FM_traceLine", 1);
 
	register_clcmd("say",			"hooksay");
	register_clcmd("say_team",		"hooksay");	
	register_clcmd("say /nyeremenyek",	"Nyeremenyek");
 
	register_concmd("qna_give", "cmd_givegift", ADMIN_LEVEL_B, "qna_give <nev> <item>");
 
	g_win_speed 	=	register_cvar("amx_qna_speed","1000.0");
	g_win_grav	=	register_cvar("amx_qna_gravity","0.6");
	g_max_players 	= 	get_maxplayers();
	g_HudSync	= 	CreateHudSyncObj();
 
	set_task(1.0, "regen", 2152, _, _, "b");
 
	set_cvar_num("sv_airaccelerate", 100); //this is for (SPARTA') bunnyhop.
}
 
// ===============================================================================
// 	Player Respawn
// ===============================================================================
 
public fwd_ClientKill()
{
	static id, CsTeams:team;
	id = read_data(2);
	if(g_gift[9][item][id])
	{ 
		team = cs_get_user_team(id);
		if(!is_user_connected(id) || is_user_alive(id) || (team != CS_TEAM_T && team != CS_TEAM_CT))
			return;
		g_timeleft[id] = RESPAWN_TIMER;
		set_task(1.0, "count", TID_RESP+id);
		if(is_user_bot(id))
			return;
		set_hudmessage(0, 255, 0, 0.38, 0.35, _, _, 1.0, _, _, -1)
		format(g_msg, 63, "ĂjraĂŠledsz %d mĂĄsodperc mĂşlva.", g_timeleft[id]);
		ShowSyncHudMsg(id, g_HudSync, g_msg)
	}
}
 
public count(tid)
{
	static id, CsTeams:team;
	id = tid-TID_RESP;
	team = cs_get_user_team(id)
	if(!is_user_connected(id) || is_user_alive(id) || (team != CS_TEAM_T && team != CS_TEAM_CT))
		return;
 
 
	g_timeleft[id] -= 1;
	if(g_timeleft[id] <= 0)
	{
		set_pev(id,pev_deadflag,DEAD_RESPAWNABLE);
		set_task(0.2, "respawn", id)
		return;
	}
	else
	{
		set_task(1.0, "count", TID_RESP+id);
	}
 
	if(is_user_bot(id))
		return;
 
	set_hudmessage(0, 255, 0, 0.38, 0.35, _, _, 1.0, _, _, -1);
	format(g_msg, 63, "ĂjraĂŠledsz %d mĂĄsodperc mĂşlva.", g_timeleft[id]);
	ShowSyncHudMsg(id, g_HudSync, g_msg);
}
 
// ===============================================================================
// 	Player Respawn
// ===============================================================================
 
public respawn(id)
{
	static CsTeams:team;
	team = cs_get_user_team(id);
	if(!is_user_connected(id) || is_user_alive(id) || (team != CS_TEAM_T && team != CS_TEAM_CT))
	{
		return;
	}
	ExecuteHamB(Ham_CS_RoundRespawn, id) 
}
 
public RoundEnd()
{
	new i;
	for(i=1; i<=g_max_players; i++)
	{
		if(task_exists(TID_RESP+i))
			remove_task(TID_RESP+i)
	}
}
 
// ===============================================================================
// 	Player Renegeration
// ===============================================================================
 
public fwd_Player_Spawn(id)
{
	if(!is_user_alive(id))
		return;
 
	g_max_health[id] = get_user_health(id);
	g_p_alive[id] = true;
}
 
public fwd_Player_Killed(id)
{
	g_p_alive[id] = false;
}
 
// ===============================================================================
// 	Player Renegeration
// ===============================================================================
 
public regen()
{
	static id, hp;
	for(id=1; id<=g_max_players; id++)
	{
		if(g_gift[8][item][id])
		{
			if(!g_p_alive[id])
			{ 
				continue;
			}
 
			hp = get_user_health(id);
 
			if(hp >= g_max_health[id])
			{
				    g_max_health[id] = hp;
			}
			else
			{	   
				set_user_health(id, hp+1);
			}
		}
	}
}  
 
// ===============================================================================
// 	Anti Flash for the winner of the Grenade Pack
// ===============================================================================
 
public Event_noFlash(id)
{
	if(g_gift[2][item][id])
	{
		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()
	}
 
}
 
// ===============================================================================
// 	MultiJump
// ===============================================================================
 
public client_putinserver(id)
{
	jumpnum[id] = 0;
	dojump[id] = false;
}
 
public client_disconnect(id)
{
	jumpnum[id] = 0;
	dojump[id] = false;
	g_p_alive[id] = false;
}
 
// ===============================================================================
// 	Gifts
// ===============================================================================
 
public Nyeremenyek(id)
{
	new menu = menu_create("Nyeremények:", "Nyeremenyekh");
 
	for(new i; i<sizeof(g_gift); i++)
	{
		menu_additem(menu, g_gift[i][ItemName],_,0)
	}
	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_setprop(menu, MPROP_BACKNAME, "Vissza");
	menu_setprop(menu, MPROP_NEXTNAME, "Előre");
	menu_setprop(menu, MPROP_EXITNAME, "Kilép");
 
	menu_display(id, menu, 0);
	return PLUGIN_HANDLED;
}
 
public Nyeremenyekh(id, iMenu, iItem)
{
	if(iItem == MENU_EXIT)
	{
		menu_cancel(id);
		return PLUGIN_HANDLED;
	}
 
	print_color(id, "!g[%s]!t %s",qna_prefix, g_gift[iItem][ItemDesc])
 
	Nyeremenyek(id);
	return PLUGIN_HANDLED;
}
 
// ===============================================================================
// 	Player Hurt
// ===============================================================================
 
public fwd_TakeDamage(victim, inflictor, attacker, Float:damage)
{
	if (victim != attacker && is_user_connected(attacker))
	{
		if(get_user_weapon(attacker) == CSW_XM1014)
		{
			if(g_gift[0][item][attacker])
			{
				static num
				num = random_num(1,4)
				if(num == 2)
				{
					SetHamParamFloat(4, damage * get_user_health(victim))
				}
			}
		}
	}
}
 
// ===============================================================================
// 	Reset
// ===============================================================================
 
public RoundStart()
{
	elso = false;
 
	new players[32], count;
	get_players(players, count);
	for(new i=0; i<count; i++)
	{
		new id = players[i];
 
		for(new i; i<sizeof(g_gift); i++)
		{
			g_gift[i][item][id] = false;
		}
 
		if(!g_gift[5][item][id]) //reset speed
		{
			set_user_maxspeed(id,-1.0)
			engclient_cmd(id, "weapon_knife");
		}
 
		if(!g_gift[3][item][id]) //reset gravity
		{
			set_user_gravity(id,1.0)
			engclient_cmd(id, "weapon_knife");
		}
 
		if(!g_gift[1][item][id]) //reset glow
		{
			set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255)
		}
 
		ham_strip_weapon(id,"weapon_flashbang")
		ham_strip_weapon(id,"weapon_flashbang")
		ham_strip_weapon(id,"weapon_smokegrenade")
 
		if(get_user_weapon(id) == CSW_XM1014)
		{
			ham_strip_weapon(id, "weapon_xm1014");
		}
	}
 
	valasz = "";
	valasz2 = "";
	valasz3 = "";
	valasz4 = "";
	valasz5 = "";
	valasz6 = "";
 
	winnername = "";
 
	readfile();
 
	return PLUGIN_CONTINUE;
}
 
// ===============================================================================
// 	Read Random Line from an ini file.
// ===============================================================================
 
public readfile()
{
	new parsedkerdes[112],parsedvalasz[112],parsedvalasz2[112],parsedvalasz3[112],parsedvalasz4[112],parsedvalasz5[112],parsedvalasz6[112]
 
	new lines = file_size(inifile, 1);
 
	if(lines > 0) 
	{    
		new randomLine = random(lines);
 
		new lineBuffer[256], len;
 
		read_file(inifile, randomLine, lineBuffer, charsmax(lineBuffer), len);	
 
		parse(lineBuffer,parsedkerdes,111,parsedvalasz,111,parsedvalasz2,111,parsedvalasz3,111,parsedvalasz4,111,parsedvalasz5,111,parsedvalasz6,111);
 
		static msg[192];
		format(msg,charsmax(msg), "[%s]^nÍrd le chatbe a választ!",parsedkerdes)		
 
		r = random(255);
		g = random(255);
		b = random(255);
 
		ekezet_show(0, msg, r, g, b, -1.0, -1.0, 1, 6.0, 10.0); //id, formázott szöveg, r, g, b, x, y, effekt, fxtime, show_time
 
		valasz = parsedvalasz;
		valasz2 = parsedvalasz2;
		valasz3 = parsedvalasz3;
		valasz4 = parsedvalasz4;
		valasz5 = parsedvalasz5;
		valasz6 = parsedvalasz6;
	}
}
 
// ===============================================================================
// 	Read Chat
// ===============================================================================
 
public hooksay(id)
{
	if(is_user_bot(id) || !is_user_alive(id))
	{
		return PLUGIN_CONTINUE;
	}
	static message[192];
	read_args (message, 191);
	remove_quotes (message);
 
	new name[32];
	get_user_name(id,name,31)
 
	if(equali(message,valasz) || equali(message,valasz2) || equali(message,valasz3) || equali(message,valasz4) || equali(message,valasz5) || equali(message,valasz6))
	{		
		if(!elso)
		{
			print_color(0,"!t[%s]!g A győztes:!t %s",qna_prefix,name);
			elso = true;
			give_gift(id,random(MAX_GIFT));
			winnername = name;
		}
		else
		{
			print_color(id,"!g[%s]!t Elkéstél! A győztes:!g %s",qna_prefix,winnername);
		}
	}
	return PLUGIN_CONTINUE;
}
 
// ===============================================================================
// 	Giving Gifts
// ===============================================================================
 
public give_gift(id,iItem)
{	
	new gift = iItem;
 
	g_gift[gift][item][id] = true;
	print_color(id, "!g[%s]!t %s",qna_prefix, g_gift[gift][ItemGived])
 
	if(g_gift[0][item][id])
	{
		give_item(id, "weapon_xm1014");
		cs_set_user_bpammo(id,CSW_XM1014,90);
	}
 
	if(g_gift[1][item][id])
	{
		set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 20);
	}
 
	if(g_gift[2][item][id])
	{
		give_item(id, "weapon_hegrenade");
		give_item(id,"weapon_flashbang");
		give_item(id,"weapon_flashbang");
		give_item(id,"weapon_smokegrenade");
	}
 
	if(g_gift[10][item][id])
	{
		drop_sec(id);
 
		give_item(id, "weapon_m4a1");
		give_item(id,"weapon_deagle");
 
		cs_set_user_bpammo(id, CSW_M4A1,90);
		cs_set_user_bpammo(id, CSW_DEAGLE, 35);
	}
 
	if(g_gift[gift][item][id] && g_gift[gift][aPlugin])
	{
		if(gift == 13)
		{
			drop_sec(id);
		}
 
		if( callfunc_begin(g_gift[gift][ItemFunc], g_gift[gift][ItemPlugin]) == 1 ) 
		{
			callfunc_push_int(id)
			callfunc_end()
		}
	}
}
 
public FM_PreThink(id)
{
	if(is_user_alive(id))
	{
		static Float:origin[3], players[32], num, num2, team
		team = get_user_team(id)
		arrayset(players,0,32)
 
		if(g_gift[4][item][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++
						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;
					}
				}
			}
		}
		else if(g_gift[3][item][id])
		{
			set_user_gravity(id, get_pcvar_float(g_win_grav))
		}
		else if(g_gift[5][item][id])
		{
			set_user_maxspeed(id, get_pcvar_float(g_win_speed))
		}
		if(g_gift[6][item][id])
		{ 
			entity_set_float(id, EV_FL_fuser2, 0.0)
 
			if (entity_get_int(id, EV_INT_button) & 2) 
			{
				new flags = entity_get_int(id, EV_INT_flags)
 
				if (flags & FL_WATERJUMP)
					return PLUGIN_CONTINUE
				if ( entity_get_int(id, EV_INT_waterlevel) >= 2 )
					return PLUGIN_CONTINUE
				if ( !(flags & FL_ONGROUND) )
					return PLUGIN_CONTINUE
 
				new Float:velocity[3]
				entity_get_vector(id, EV_VEC_velocity, velocity)
				velocity[2] += 250.0
				entity_set_vector(id, EV_VEC_velocity, velocity)
 
				entity_set_int(id, EV_INT_gaitsequence, 6)
			}
		}
		if(g_gift[7][item][id])
		{
			new nbut = get_user_button(id)
			new obut = get_user_oldbutton(id)
			if((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))
			{
				if(jumpnum[id] < WINNER_JUMPS)
				{
					dojump[id] = true
					jumpnum[id]++
					return PLUGIN_CONTINUE
				}
			}
			if((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
			{
				jumpnum[id] = 0
				return PLUGIN_CONTINUE
			}
		}
		if(g_gift[11][item][id])
		{
			if(get_user_button(id) & IN_ATTACK)
				entity_set_vector(id, EV_VEC_punchangle, Float:{0.0, 0.0, 0.0});	
		}
	}
	return PLUGIN_CONTINUE;
}
 
public FM_traceLine(Float:v1[3], Float:v2[3], noMonsters, id)
{
	if(!is_user_connected(id) || !is_user_alive(id))
		return FMRES_IGNORED;
 
	if(g_gift[11][item][id])
	{
		new hit[3], Float:fHit[3];
		get_user_origin(id, hit, 4);
		IVecFVec(hit, fHit);
 
		set_tr(TR_vecEndPos, fHit);
 
	}
	return FMRES_IGNORED;
}
 
public client_PostThink(id)
{
	if(g_gift[7][item][id])
	{
		if(!is_user_alive(id)) return PLUGIN_CONTINUE;
		if(dojump[id] == true)
		{
			new Float:velocity[3]	
			entity_get_vector(id,EV_VEC_velocity,velocity)
			velocity[2] = random_float(265.0,285.0)
			entity_set_vector(id,EV_VEC_velocity,velocity)
			dojump[id] = false
			return PLUGIN_CONTINUE
		}
	}
	return PLUGIN_CONTINUE
}	
 
public cmd_givegift(id) 
{
	if(get_user_flags(id) & ADMIN_KICK) 
	{
		new Arg1[64]
		read_argv(1, Arg1, 63)
 
		new Target = cmd_target(id, Arg1, 0);
 
		if(!Target)
		{
			client_print(id, print_console, "[%s] Jatekos nem talalhato!",qna_prefix)
			return PLUGIN_HANDLED;
		}
 
		new iLevel[32], Value;
		read_argv(2, iLevel, 31);
		Value = str_to_num(iLevel);
 
		if(Value > MAX_GIFT-1)
		{ 
			client_print(id, print_console, "Az item nem lehet nagyobb ,mint %d",MAX_GIFT-1)
			return PLUGIN_HANDLED;
		}
 
		g_gift[Value][item][Target] = true;
		give_gift(Target,Value);
	}
	else
	{
		client_print(id, print_chat, "Nem vagy Admin")
		client_print(id, print_console, "Nem vagy Admin")
	}
	return PLUGIN_CONTINUE;
}
// ===============================================================================
// 	Stocks
// ===============================================================================
 
stock ham_strip_weapon(id,weapon[])
{
	if(!equal(weapon,"weapon_",7)) return 0;
 
	new wId = get_weaponid(weapon);
	if(!wId) return 0;
 
	new wEnt;
	while((wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname",weapon)) && pev(wEnt,pev_owner) != id) {}
	if(!wEnt) return 0;
 
	if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt);
 
	if(!ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0;
	ExecuteHamB(Ham_Item_Kill,wEnt);
 
	set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId));
 
	if(wId == CSW_C4)
	{
		cs_set_user_plant(id,0,0);
		cs_set_user_bpammo(id,CSW_C4,0);
	}
	else if(wId == CSW_SMOKEGRENADE || wId == CSW_FLASHBANG || wId == CSW_HEGRENADE)
		cs_set_user_bpammo(id,wId,0);
 
	return 1;
}
stock print_color(const id, const input[], any:...)
{
	new count = 1, players[32];
	static msg[191];
	vformat(msg, 190, input, 3);
 
	replace_all(msg, 190, "!g", "^4");
	replace_all(msg, 190, "!y", "^1");
	replace_all(msg, 190, "!t", "^3");
	replace_all(msg, 190, "á", "ĂĄ")
	replace_all(msg, 190, "é", "ĂŠ")
	replace_all(msg, 190, "í", "Ă")
	replace_all(msg, 190, "ó", "Ăł")
	replace_all(msg, 190, "ö", "Ăś")
	replace_all(msg, 190, "ő", "Ĺ")
	replace_all(msg, 190, "ú", "Ăş")
	replace_all(msg, 190, "ü", "Ăź")
	replace_all(msg, 190, "ű", "Ĺą")
	replace_all(msg, 190, "Á", "Ă")
	replace_all(msg, 190, "É", "Ă")
	replace_all(msg, 190, "Í", "Ă")
	replace_all(msg, 190, "Ó", "Ă")
	replace_all(msg, 190, "Ö", "Ă")
	replace_all(msg, 190, "Ő", "Ĺ")
	replace_all(msg, 190, "Ú", "Ă")
	replace_all(msg, 190, "Ü", "Ă")
	replace_all(msg, 190, "Ű", "Ű")
 
	if (id) players[0] = id; else get_players(players, count, "ch");
	{
		for (new i = 0; i < count; i++)
		{
			if (is_user_connected(players[i]))
			{
				message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
				write_byte(players[i]);
				write_string(msg);
				message_end();
			}
		}
	}
	return PLUGIN_HANDLED;
}
stock ekezet_show(const id, const hud[], r, g, b, Float:x, Float:y, effect, Float:fxtime, Float:show_time)
{	
 
	new count = 1, players[32];
	static msg[191];
	vformat(msg, 190, hud, 3);
 
	replace_all(msg, 190, "á", "ĂĄ");
	replace_all(msg, 190, "é", "ĂŠ");
	replace_all(msg, 190, "í", "Ă");
	replace_all(msg, 190, "ó", "Ăł");
	replace_all(msg, 190, "ö", "Ăś");
	replace_all(msg, 190, "ő", "Ĺ");
	replace_all(msg, 190, "ú", "Ăş");
	replace_all(msg, 190, "ü", "Ăź");
	replace_all(msg, 190, "ű", "Ĺą");
	replace_all(msg, 190, "Á", "Ă");
	replace_all(msg, 190, "É", "Ă");
	replace_all(msg, 190, "Í", "Ă");
	replace_all(msg, 190, "Ó", "Ă");
	replace_all(msg, 190, "Ö", "Ă");
	replace_all(msg, 190, "Ő", "Ĺ");
	replace_all(msg, 190, "Ú", "Ă");
	replace_all(msg, 190, "Ü", "Ă");
	replace_all(msg, 190, "Ű", "Ű");
 
	if (id) players[0] = id; else get_players(players, count, "ch");
	{
		for (new i = 0; i < count; i++)
		{
			if (is_user_connected(players[i]))
			{
				set_hudmessage(r, g, b, Float:x, Float:y, effect, Float:fxtime, Float:show_time);
				show_hudmessage(players[i],msg);
			}
		}
	}
 
}
 
stock drop_sec(id)
{
	for(new j = 0; j < sizeof secwpns; j++)
	{
		engclient_cmd(id,"drop", secwpns[j])
	}
}
// ===============================================================================
// 	Stocks From CHR_Engine 
// ===============================================================================
 
stock get_players_distance(const Float:origin2[3],players[32], &num,const flags[]="",index=0,const team[]="")
{
	new bool:flag1, bool:flag2
	if(containi(flags,"j")!=-1) flag2 = true
	if(containi(flags,"i")!=-1)
	{
		if(!pev_valid(index))
			return 0;
		flag1 = true
	}
 
	static Float:origin[3]
	origin[0] = origin2[0]
	origin[1] = origin2[1]
	origin[2] = origin2[2]
 
	static players2[32]
	new num2
	arrayset(players2,0,32)
	get_players(players2,num2,flags,team)
	static Float:origin3[3]
	static Float:distance[32]
	for(new i=0;i<32;i++) distance[i]=0.0
	num = num2
 
	static Float:hit[3]
	new bool:continuea=true
	for(new i=0;i<num2;i++)
	{
		pev(players2[i],pev_origin,origin3)
		if(flag2)
		{
			engfunc(EngFunc_TraceLine,origin2,origin3,1,index,0)
			get_tr2(0,TR_vecEndPos,hit)
			if(hit[0]==origin3[0] && hit[1]==origin3[1] && hit[2]==origin3[2])
			{
				distance[i] = vector_distance(origin,origin3)
			}
			else
			{
				continuea=false
				distance[i] = 9999999.1337
				num--
			}
		}
		if(flag1 && continuea)
		{
			static Float:angles[3], Float:diff[3], Float:reciprocalsq, Float:norm[3], Float:dot, Float:fov
			pev(index, pev_angles, angles)
			engfunc(EngFunc_MakeVectors, angles)
			global_get(glb_v_forward, angles)
			angles[2] = 0.0
 
			pev(index, pev_origin, origin)
			diff[0] = origin3[0] - origin[0]
			diff[1] = origin3[1] - origin[1]
			diff[2] = origin3[2] - origin[2]
			//diff[2]=0.0// - for 2D viewcone
 
			reciprocalsq = 1.0 / floatsqroot(diff[0]*diff[0] + diff[1]*diff[1] + diff[2]*diff[2])
			norm[0] = diff[0] * reciprocalsq
			norm[1] = diff[1] * reciprocalsq
			norm[2] = diff[2] * reciprocalsq
 
			dot = norm[0]*angles[0] + norm[1]*angles[1] + norm[2]*angles[2]
			pev(index, pev_fov, fov)
			if(dot >= floatcos(fov * 3.1415926535 / 360.0))
			{
				distance[i] = vector_distance(origin,origin3)
			}
			else
			{
				continuea=false
				distance[i] = 9999999.1337
				num--
			}
		}
		if(continuea)
		{
			distance[i] = vector_distance(origin,origin3)
		}
	}
	static distance_cnt[32]
	arrayset(distance_cnt,0,32)
	for(new i=0;i<num2;i++)
	{
		if(distance[i]!=9999999.1337)
		{
			for(new i2=0;i2<num;i2++)
			{
				if(distance[i2]<distance[i]) distance_cnt[i]++
			}
			players[distance_cnt[i]]=players2[i]
		}
	}
	return 1;
}
 
stock get_hudmessage_locs(ent,const Float:origin[3],Float:hudpos[2])
{
	if(!is_user_connected(ent))
		return 0;
 
	static Float:origin2[3]
	origin2[0] = origin[0]
	origin2[1] = origin[1]
	origin2[2] = origin[2]
 
	static Float:ent_origin[3]
 
	pev(ent,pev_origin,ent_origin)
 
	static Float:ent_angles[3]
 
	pev(ent,pev_v_angle,ent_angles)
 
	origin2[0] -= ent_origin[0]
	origin2[1] -= ent_origin[1]
	origin2[2] -= ent_origin[2]
 
	new Float:v_length
	v_length = vector_length(origin2)
 
	static Float:aim_vector[3]
	aim_vector[0] = origin2[0] / v_length
	aim_vector[1] = origin2[1] / v_length
	aim_vector[2] = origin2[2] / v_length
 
	static Float:new_angles[3]
	vector_to_angle(aim_vector,new_angles)
 
	new_angles[0] *= -1
 
	if(new_angles[1]>180.0) new_angles[1] -= 360.0
	if(new_angles[1]<-180.0) new_angles[1] += 360.0
	if(new_angles[1]==180.0 || new_angles[1]==-180.0) new_angles[1]=-179.999999
 
	if(new_angles[0]>180.0) new_angles[0] -= 360.0
	if(new_angles[0]<-180.0) new_angles[0] += 360.0
	if(new_angles[0]==90.0) new_angles[0]=89.999999
	else if(new_angles[0]==-90.0) new_angles[0]=-89.999999
 
	new Float:fov
	pev(ent,pev_fov,fov)
 
	if(!fov)
		fov = 90.0
 
	if(floatabs(ent_angles[0] - new_angles[0]) <= fov/2 && floatabs((180.0 - floatabs(ent_angles[1])) - (180.0 - floatabs(new_angles[1]))) <= fov/2)
	{
		hudpos[1] = 1 - ( ( (ent_angles[0] - new_angles[0]) + fov/2 ) / fov )
		hudpos[0] = ( (ent_angles[1] - new_angles[1]) + fov/2 ) / fov
	}
	else
		return 0;
 
	return 1;
}
// =============================================================================== ===============================================================================//
// 		Thanks everybody for watching I hope you are enjoyed. Leave a like and a comment. Seeya Guys Later. <!-- s:D --><img src=\"{SMILIES_PATH}/icon_e_biggrin.gif\" alt=\":D\" title=\"nagyon boldog\" /><!-- s:D -->
// =============================================================================== ===============================================================================//