Raised This Month: $51 Target: $400
 12% 

CMD for SHOP


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Pegasus6
Member
Join Date: Nov 2018
Old 08-18-2019 , 16:58   CMD for SHOP
Reply With Quote #1

Hello can anyone make this shop plugin work when i type /shop or shop in chat but the words "/shop" and "shop" dont need to appear, i want it because when there are 10+ players on my server, the chat is tottaly blowed up with "shop" messages.
Or if u can give me a plugin that hide any words which are registered from a .ini or .cfg file or whatever. Thank You.

CODE :

Code:
#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <engine>
#include <fun>

#define PLUGIN	"Furien Shop"
#define VERSION	"2.0"
#define AUTHOR "DaNNe."

#define VIP_LEVEL	ADMIN_LEVEL_H

// Pet
#define fm_precache_model(%1)           engfunc(EngFunc_PrecacheModel,%1)
#define fm_precache_sound(%1)           engfunc(EngFunc_PrecacheSound,%1)
#define fm_remove_entity(%1)            engfunc(EngFunc_RemoveEntity, %1)
//#define fm_drop_to_floor(%1)            engfunc(EngFunc_DropToFloor,%1)
#define fm_find_ent_by_class(%1,%2)     engfunc(EngFunc_FindEntityByString, %1, "classname", %2)
#define fm_set_user_gravity(%1,%2)      set_pev(%1,pev_gravity,%2)

#define PET_FLAG                        pev_flTimeStepSound
#define PET_KILLED                      389

static const pet_model[] = "models/stukabat.mdl"
static const pet_sounds[][] = { "bullchicken/bc_die1.wav", "bullchicken/bc_die2.wav", "bullchicken/bc_die3.wav", "bullchicken/bc_idle1.wav", "bullchicken/bc_pain3.wav" }
static const pet_idle = 13
static const pet_run = 13
static const pet_die = 5
static const Float:pet_idle_speed = 0.3
static const Float:pet_run_speed = 10.0
static const Float:player_gravity = 0.65

// AT4 
#define weapon_at4cs 	"weapon_m249"
#define CSW_AT4CS 		CSW_M249
#define TASK_CHECKRELOAD 111112
#define TASK_RELOAD 111113

new Float:g_lastfire[33], Float:g_lastaim[33], g_aiming[33],
g_smoke_id, g_spr_trail, g_spr_exp, is_reloading[33],
cvar_radius, cvar_maxdamage

new const AT4Model_V[] = "models/FurienShop/v_at4ex.mdl";
new const AT4Model_P[] = "models/FurienShop/p_at4ex.mdl";
new const AT4Model_W[] = "models/FurienShop/w_at4ex.mdl";
new const AT4Rocket[] = "models/FurienShop/s_rocket.mdl";

new const AT4Sound[][] = {
	"weapons/at4-1.wav",
	"weapons/at4_clipin1.wav",
	"weapons/at4_clipin2.wav",
	"weapons/at4_clipin3.wav",
	"weapons/at4_draw.wav" 
};

// Super Knifes
new SuperKnifeX2_Model[] = "models/FurienShop/v_knife_human.mdl";
new SuperKnifeX3_Model[] = "models/FurienShop/v_ignes.mdl";
new SuperKnifeVIP_Model[] = "models/FurienShop/v_superknife_vip.mdl";

// Natives
native fcs_get_user_credits(id)
native fcs_set_user_credits(id, amount)
	
//Furien Detector
new DetectorSprite;
new PRIMARY_WEAPONS_BITSUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
new SECONDARY_WEAPONS_BITSUM = (1<<CSW_GLOCK18)|(1<<CSW_USP)|(1<<CSW_P228)|(1<<CSW_DEAGLE)|(1<<CSW_FIVESEVEN)|(1<<CSW_ELITE);

//Bools
new bool:HaveSuperKnifeX2[33], bool:HaveSuperKnifeX3[33], bool:HaveSuperKnifeVip[33], bool:HaveDetector[33], bool:HaveNoFlash[33], bool:HaveAT4[33] 

//PET
new ItemPET[33], HavePET[33], PETAtSpawn[33]
new Float:item_leaptime[33]
new bool:g_has_speed[33]

new Prefix[] = "[FurienShop]";
new Menu;

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR) 
	
	register_clcmd("say shop", "CmdShop");
	register_clcmd("say_team shop", "CmdShop");
	register_clcmd("say /shop", "CmdShop");
	register_clcmd("say_team /shop", "CmdShop");
	
	RegisterHam(Ham_Spawn, "player", "HAM_Spawn_Post");
	RegisterHam(Ham_TakeDamage, "player", "HAM_TakeDamage");
	
	register_event("CurWeapon", "EVENT_CurWeapon", "be", "1=1");
	register_event("DeathMsg", "EVENT_Death", "a");
	register_event("HLTV", "HLTV_EVENT_NewRound", "a", "1=0", "2=0");
	register_message(get_user_msgid("ScreenFade"), "MSG_ScreenFade")
	
	register_forward(FM_PlayerPreThink, "FWD_PreThink");
	register_forward(FM_Think, "FWD_Think");
	
	register_forward(FM_UpdateClientData, "AT4_UpdateClientData_POST", 1)
	register_forward(FM_CmdStart, "AT4_CMDStart")
	register_forward(FM_SetModel, "AT4_WorldModel")
	
	register_think("at4ex_rocket", "AT4_Think")
	register_touch("at4ex_rocket", "*", "AT4_Touch")
	
	RegisterHam(Ham_Weapon_Reload, weapon_at4cs, "AT4_Reload")
	RegisterHam(Ham_Item_AddToPlayer, weapon_at4cs, "AT4_AddToPlayer", 1)
	
	cvar_radius = register_cvar("zp_at4cs_radius", "300.0")
	cvar_maxdamage = register_cvar("zp_at4cs_maxdamage", "70.0")
	
	register_clcmd("weapon_at4cs", "hook_weapon")	
}

public plugin_precache() {
	precache_model(SuperKnifeX2_Model);
	precache_model(SuperKnifeX3_Model);
	precache_model(SuperKnifeVIP_Model);
	precache_model(AT4Model_V)
	precache_model(AT4Model_P)
	precache_model(AT4Model_W)
	precache_model(AT4Rocket)
	fm_precache_model(pet_model)
	
	engfunc(EngFunc_PrecacheGeneric, "sprites/FurienShop/weapon_at4cs.txt")
	engfunc(EngFunc_PrecacheGeneric, "sprites/FurienShop/at4cs.spr")	
	
	g_smoke_id = precache_model("sprites/FurienShop/rainsplash.spr")
	g_spr_trail = precache_model("sprites/FurienShop/xbeam3.spr")
	g_spr_exp = precache_model("sprites/FurienShop/zerogxplode.spr")
	DetectorSprite = precache_model("sprites/FurienShop/Detector.spr")
	
	new i;
	for(i = 0; i < sizeof pet_sounds; i++)
		fm_precache_sound(pet_sounds[i])
		
	for(i = 0; i < sizeof(AT4Sound); i++)
		engfunc(EngFunc_PrecacheSound, AT4Sound[i])
	
	
}

public plugin_natives() {
	register_native("get_user_at4", "get_user_at4", 1)
	register_native("set_user_at4", "set_user_at4", 1)
}

public HAM_Spawn_Post(id) {
	if(is_user_connected(id)) {
		HaveNoFlash[id] = false;
		HaveDetector[id] = false;
		HaveAT4[id] = false;
		HaveSuperKnifeVip[id] = false;
		set_user_at4(id, false)
		drop_primary_weapons(id)
		if(get_user_team(id) == 2) {
			HaveSuperKnifeX2[id] = false;
			HaveSuperKnifeX3[id] = false;
		}
		if(get_user_team(id) != 2) {
			kill_pet(id)
			HavePET[id] = 0		
		}
		if(HavePET[id]) {
			fm_set_user_health(id, get_user_health(id) + 50)
			fm_set_user_armor(id, get_user_armor(id) + 50)
			g_has_speed[id] = true
		}
		else if(PETAtSpawn[id]) {
			create_pet(id)
			PETAtSpawn[id] = 0
			g_has_speed[id] = true
		}
	}
}

public HAM_TakeDamage(Victim, Inflictor, Attacker, Float:Damage) {
	if(is_user_connected(Attacker)) {
		if(get_user_weapon(Attacker) == CSW_KNIFE) {
			if(HaveSuperKnifeX2[Attacker])
				SetHamParamFloat(4, Damage * 2.0)
			if(HaveSuperKnifeX3[Attacker])
				SetHamParamFloat(4, Damage * 3.0)
			if(HaveSuperKnifeVip[Attacker])
				SetHamParamFloat(4, Damage * 4.0)
		}
	}
}

public EVENT_CurWeapon(id) {
	if(get_user_weapon(id) == CSW_KNIFE) {
		if(HaveSuperKnifeX2[id])
			set_pev(id, pev_viewmodel2, SuperKnifeX2_Model)
		if(HaveSuperKnifeX3[id])
			set_pev(id, pev_viewmodel2, SuperKnifeX3_Model)
		if(HaveSuperKnifeVip[id])
			set_pev(id, pev_viewmodel2, SuperKnifeVIP_Model)	
	}
	if(get_user_weapon(id) == CSW_AT4CS) {
		if(HaveAT4[id]) {
			set_pev(id, pev_viewmodel2, AT4Model_V)
			set_pev(id, pev_weaponmodel2, AT4Model_P)
		}
	}
}

public HLTV_EVENT_NewRound() {
	new entid = -1
	while((entid = fm_find_ent_by_class(entid, "zp_bat"))) {
		if(pev(entid,PET_FLAG) == PET_KILLED)
			fm_remove_entity(entid)             
	}
	remove_entity_name("at4ex_rocket")	
}

public EVENT_Death() {
	new Victim = read_data(2)
	HaveSuperKnifeX2[Victim] = false;
	HaveSuperKnifeX3[Victim] = false;
	
	if(HavePET[Victim]) {
		kill_pet(Victim)
		HavePET[Victim] = 0
	}
	
	if(get_user_team(Victim) == 1)
		HavePET[Victim] = 0
	if(g_has_speed[Victim])
		g_has_speed[Victim] = false
}

public MSG_ScreenFade(msgid, dest, id) {
	if(HaveNoFlash[id]) {
		static data[4]
		data[0] = get_msg_arg_int(4)
		data[1] = get_msg_arg_int(5)
		data[2] = get_msg_arg_int(6)
		data[3] = get_msg_arg_int(7)
		
		if(data[0] == 255 && data[1] == 255 && data[2] == 255 && data[3] > 199)
			return PLUGIN_HANDLED
	}
	return PLUGIN_CONTINUE
}

public create_pet(id) {
	if(!is_user_alive(id)) {
		ColorChat(id, "!t%s!g PET-ul iti va aparea runda urmatoare !", Prefix)
		PETAtSpawn[id] = 1
		return PLUGIN_HANDLED
	}      
	else {
		ItemPET[id] = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString,"info_target"))
		set_pev(ItemPET[id],pev_classname,"zp_bat")
		
		engfunc(EngFunc_SetModel,ItemPET[id],pet_model)
		
		new Float:origin[3]
		pev(id,pev_origin,origin)                      
		
		set_pev(ItemPET[id],pev_origin,origin)
		set_pev(ItemPET[id],pev_solid,SOLID_TRIGGER)
		set_pev(ItemPET[id],pev_movetype,MOVETYPE_FLY)
		set_pev(ItemPET[id],pev_owner,33)
		set_pev(ItemPET[id],pev_nextthink,1.0)
		set_pev(ItemPET[id],pev_sequence,0)
		set_pev(ItemPET[id],pev_gaitsequence,0)
		set_pev(ItemPET[id],pev_framerate,1.0)
		
		set_pev(ItemPET[id], pev_renderfx, kRenderFxGlowShell)
		set_pev(ItemPET[id], pev_rendercolor, Float:{0.0, 0.0, 200.0})
		
		fm_set_user_health(id, get_user_health(id) + 50)
		fm_set_user_armor(id, get_user_armor(id) + 50)
		
		engfunc(EngFunc_EmitSound,ItemPET[id],CHAN_AUTO,pet_sounds[random_num(0,sizeof pet_sounds - 1)],1.0, 1.2, 0, PITCH_NORM)              
		
		HavePET[id] = 1
		g_has_speed[id] = true
	}
	return PLUGIN_HANDLED
}

public kill_pet(id) {
	if(pev_valid(ItemPET[id])) {
		set_pev(ItemPET[id],pev_sequence,pet_die)
		set_pev(ItemPET[id],pev_gaitsequence,pet_die)
		set_pev(ItemPET[id],pev_framerate,1.0)
		
		set_pev(ItemPET[id],PET_FLAG,PET_KILLED)
		
		fm_drop_to_floor(ItemPET[id])
		
		HavePET[id] = 0
		g_has_speed[id] = false
	}      
	ItemPET[id] = 0
}

public FWD_PreThink(id) {
	if(is_user_connected(id) && is_user_alive(id)) {
		if(get_user_team(id) == 2 && HaveDetector[id]) {
			static Target, Body, Weapon;
			
			get_user_aiming(id, Target, Body);
			Weapon = get_user_weapon(id);
			
			if((1<<Weapon) & PRIMARY_WEAPONS_BITSUM || (1<<Weapon) & SECONDARY_WEAPONS_BITSUM) {
				static Origin[3];
				get_user_origin(id, Origin, 3);
				
				message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
				write_byte(TE_BEAMENTPOINT);
				write_short(id | 0x1000);
				write_coord(Origin[0]);
				write_coord(Origin[1]);
				write_coord(Origin[2]);
				write_short(DetectorSprite); 
				write_byte(0);
				write_byte(10);
				write_byte(1);
				write_byte(5);
				write_byte(0);
				if(is_user_alive(Target) && get_user_team(Target) == 1) {
					write_byte(150);
					write_byte(0);
					write_byte(0);
				}
				else {
					write_byte(0);
					write_byte(150);
					write_byte(0);
				}
				write_byte(250);
				write_byte(25);
				message_end();
			}		
		}
		if(allowed_leap(id)) {
			static Float:velocity[3]
			velocity_by_aim(id, 500, velocity)
			velocity[2] = 300.0
			set_pev(id, pev_velocity, velocity)  
			item_leaptime[id] = get_gametime()
		}
	}
}

public FWD_Think(ent) {
	for(new i = 0; i <= get_maxplayers(); i++) {
		if(ent == ItemPET[i]) {
			static Float:origin[3]
			static Float:origin2[3]
			static Float:velocity[3]
			pev(ent,pev_origin,origin2)
			get_offset_origin_body(i,Float:{50.0,0.0,0.0},origin)
			
			if(get_distance_f(origin,origin2) > 300.0)
				set_pev(ent,pev_origin,origin)
			
			else if(get_distance_f(origin,origin2) > 80.0) {
				get_speed_vector(origin2,origin,250.0,velocity)
				set_pev(ent,pev_velocity,velocity)
				if(pev(ent,pev_sequence) != pet_run || pev(ent,pev_framerate) != pet_run_speed) {
					set_pev(ent,pev_sequence,pet_run)
					set_pev(ent,pev_gaitsequence,pet_run)
					set_pev(ent,pev_framerate,pet_run_speed)
				}
			}
			
			else if(get_distance_f(origin,origin2) < 75.0) {
				if(pev(ent,pev_sequence) != pet_idle || pev(ent,pev_framerate) != pet_idle_speed) {
					set_pev(ent,pev_sequence,pet_idle)
					set_pev(ent,pev_gaitsequence,pet_idle)
					set_pev(ent,pev_framerate,pet_idle_speed)
				}
				set_pev(ent,pev_velocity,Float:{0.0,0.0,0.0})
			}
			pev(i,pev_origin,origin)
			origin[2] = origin2[2]
			entity_set_aim(ent,origin)                     
			set_pev(ent,pev_nextthink,1.0)
			break
		}
	}
}

public allowed_leap(id) {      
	if(!HavePET[id])
		return false
	
	if(!(pev(id, pev_flags) & FL_ONGROUND) || fm_get_speed(id) < 80)
		return false
	
	static buttons
	buttons = pev(id, pev_button)
	
	if(!is_user_bot(id) && (!(buttons & IN_JUMP) || !(buttons & IN_DUCK)))
		return false
	
	if(get_gametime() - item_leaptime[id] < 3)
		return false
	
	return true
}

public is_a_player(ent) {
	if(ent > 0 && ent < 33)
		return true
	
	return false
}

public remove_pet(ent) {
	if(pev_valid(ent))
		fm_remove_entity(ent)
}

public CmdShop(id) {
	if(!is_user_alive(id)) {
		ColorChat(id, "!t%s!g Nu poti folosi shopul cat timp esti mort !", Prefix)
		return;
	}
	switch(get_user_team(id)) {
		case 1: FurienShop(id)
			case 2: AntiFurienShop(id)
		}
}

public FurienShop(id) {
	if(is_user_alive(id) && get_user_team(id) == 1) {
		new Title[128]
		formatex(Title, sizeof(Title)-1, "\rCredite: \y%d\r^n\rFurien Shop:", fcs_get_user_credits(id))
		Menu = menu_create(Title, "FurienHandler")
		
		if(HaveSuperKnifeX2[id])
			menu_additem(Menu, "\dAssassin Knife [X2 DMG]\w - \rAi deja", "1", 0)
		else {
			if(fcs_get_user_credits(id) >= 10)
				menu_additem(Menu, "\wAssassin Knife\r [X2 DMG]\w - \r10 Credite", "1", 0)
			else 
				menu_additem(Menu, "\dAssassin Knife [X2 DMG]\w - \r10 Credite", "1", 0)
		}
		
		if(HaveSuperKnifeX3[id])
			menu_additem(Menu, "\dNemesis Knife [X3 DMG]\w - \rAi deja", "2", 0)
		else {
			if(fcs_get_user_credits(id) >= 20)
				menu_additem(Menu, "\wNemesis Knife\r [X3 DMG]\w - \r20 Credite", "2", 0)
			else 
				menu_additem(Menu, "\dNemesis Knife [X3 DMG]\w - \r20 Credite", "2", 0)
		}
		
		if(get_user_health(id) >= 250) 
			menu_additem(Menu, "\dHealth [+50]\w -\r Ai viata maxima", "3", 0)
		else {
			if(fcs_get_user_credits(id) >= 3)
				menu_additem(Menu, "\wHealth \r[+50]\w - \r3 Credite", "3", 0)
			else 
				menu_additem(Menu, "\dHealth [+50]\w - \r3 Credite", "3", 0)
		}
		
		if(get_user_armor(id) >= 250) 
			menu_additem(Menu, "\dArmor [+50]\w -\r Ai armura maxima", "4", 0)
		else {
			if(fcs_get_user_credits(id) >= 3)
				menu_additem(Menu, "\wArmor \r[+50]\w - \r3 Credite", "4", 0)
			else 
				menu_additem(Menu, "\dArmor [+50]\w - \r3 Credite", "4", 0)
		}			
		
		if(HaveNoFlash[id])
			menu_additem(Menu, "\dNo Flash\w - \rAi deja", "5", 0)
		else {
			if(fcs_get_user_credits(id) >= 5)
				menu_additem(Menu, "\wNo Flash - \r5 Credite", "5", 0)
			else 
				menu_additem(Menu, "\dNo Flash\w - \r5 Credite", "5", 0)
		}
		
		if(user_has_weapon(id, CSW_HEGRENADE))
			menu_additem(Menu, "\dHe grenade\w - \rAi deja", "6", 0)
		else {
			if(fcs_get_user_credits(id) >= 25)
				menu_additem(Menu, "\wHe grenade - \r25 Credite", "6", 0)
			else 
				menu_additem(Menu, "\dHe grenade\w - \r25 Credite", "6", 0)
		}
		
		if(user_has_weapon(id, CSW_SMOKEGRENADE))
			menu_additem(Menu, "\dFrost nade\w - \rAi deja", "7", 0)
		else {
			if(fcs_get_user_credits(id) >= 20)
				menu_additem(Menu, "\wFrost nade - \r20 Credite", "7", 0)
			else 
				menu_additem(Menu, "\dFrost nade\w - \r20 Credite", "7", 0)
		}
		
		if(get_user_flags(id) & VIP_LEVEL) {
			if(HaveSuperKnifeVip[id])
				menu_additem(Menu, "\dUltimate Knife [X4 DMG] + 250 HP&AP\w - \rAi deja", "8", 0)
			else {
				if(fcs_get_user_credits(id) >= 30)
					menu_additem(Menu, "\wUltimate Knife [X4 DMG] + 250 HP&AP\w - \r30 Credite", "8", 0)
				else 
					menu_additem(Menu, "\dUltimate Knife [X4 DMG] + 250 HP&AP\w - \r30 Credite", "8", 0)	
			}
		}
		else 
			menu_additem(Menu, "\dUltimate Knife [X4 DMG] + 250 HP&AP\w - \rOnly V.I.P", "8", 0)
		
		menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);
		menu_display(id, Menu, 0);
	}
}

public FurienHandler(id, menu, item) {
	if(item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != 1) {
		menu_destroy(menu);
		
		return PLUGIN_HANDLED;
	}
	new Data[6], Name[64];
	new Access, CallBack;
	menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
	new Key = str_to_num(Data);
	switch(Key) {
		case 1: {
			if(HaveSuperKnifeX2[id]) {
				ColorChat(id, "!t%s!g Ai deja!t Assasin Knife [X2 DMG]!g !", Prefix);
				return 1;
			}
			else {
				new Credits = fcs_get_user_credits(id) - 10 
				if(Credits < 0) {
					ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t Assassin Knife [X2 DMG]!g !", Prefix);
					return 1;
				}
				else {
					HaveSuperKnifeX2[id] = true;
					HaveSuperKnifeX3[id] = false;
					HaveSuperKnifeVip[id] = false;
					EVENT_CurWeapon(id);
					fcs_set_user_credits(id, Credits);
					ColorChat(id, "!t%s!g Ai cumparat!t Assassin Knife [X2 DMG] !gpentru 10 credite!g !", Prefix);
				}
			}
		}
		case 2: {
			if(HaveSuperKnifeX3[id]) {
				ColorChat(id, "!t%s!g Ai deja!t Nemesis Knife [X3 DMG]!g !", Prefix);
				return 1;
			}
			else {
				new Credits = fcs_get_user_credits(id) - 20 
				if(Credits < 0) {
					ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t Nemesis Knife [X3 DMG]!g !", Prefix);
					return 1;
				}
				else {
					HaveSuperKnifeX3[id] = true;
					EVENT_CurWeapon(id);
					fcs_set_user_credits(id, Credits);
					ColorChat(id, "!t%s!g Ai cumparat!t Nemesis Knife [X3 DMG] !gpentru 20 de credite!g !", Prefix);
				}
			}
		}
		case 3: {
			if(get_user_health(id) >= 250) {
				ColorChat(id, "!t%s!g Ai deja!t 250 health!g !", Prefix);
				return 1;
			}
			else {
				new Credits = fcs_get_user_credits(id) - 3 
				if(Credits < 0) {
					ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t +50 Health!g !", Prefix);
					return 1;
				}
				else {
					if(get_user_health(id) + 50 > 250)
						fm_set_user_health(id, 250)
					else {
						fm_set_user_health(id, get_user_health(id) + 50) 
						fcs_set_user_credits(id, Credits)
						ColorChat(id, "!t%s!g Ai cumparat!t +50 Health !gpentru 3 credite!g !", Prefix)
					}
				}
			}
		}
		case 4: {
			if(get_user_armor(id) >= 250) {
				ColorChat(id, "!t%s!g Ai deja!t 250 armor!g !", Prefix);
				return 1;
			}
			else {
				new Credits = fcs_get_user_credits(id) - 3
				if(Credits < 0) {
					ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t +50 Armor!g !", Prefix);
					return 1;
				}
				else {
					if(get_user_armor(id) + 50 > 250)
						fm_set_user_armor(id, 250);
					else {
						fm_set_user_armor(id, get_user_armor(id) + 50) ;
						fcs_set_user_credits(id, Credits);
						ColorChat(id, "!t%s!g Ai cumparat!t +50 Armor !gpentru 3 credite!g !", Prefix);
					}
				}
			}
		}
		case 5: {
			if(HaveNoFlash[id]) {
				ColorChat(id, "!t%s!g Ai deja!t No Flash!g !", Prefix);
				return 1;
			}
			else {
				new Credits = fcs_get_user_credits(id) - 5 
				if(Credits < 0) {
					ColorChat(id, "!t%s!g Nu ai suficiente!t credite !gpentru a cumpara!t No Flash!g !", Prefix);
					return 1;
				}
				else {
					HaveNoFlash[id] = true;
					fcs_set_user_credits(id, Credits);
					ColorChat(id, "!t%s!g Ai cumparat!t No Flash !gpentru 5 credite!g !", Prefix);
				}
			}
		}
		case 6: {
			if(user_has_weapon(id, CSW_HEGRENADE)) {
				ColorChat(id, "!t%s!g Ai deja!t HE Grenade!g !", Prefix);
				return 1;
			}
			else {
				new Credits = fcs_get_user_credits(id) - 25 
				if(Credits < 0) {
					ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t HE Grenade!g !", Prefix);
					return 1;
				}
				else {
					fm_give_item(id, "weapon_hegrenade");
					fcs_set_user_credits(id, Credits);
					ColorChat(id, "!t%s!g Ai cumparat!t HE Grenade !gpentru 25 de credite!g !", Prefix);
				}
			}
		}
		case 7: {
			if(user_has_weapon(id, CSW_SMOKEGRENADE)) {
				ColorChat(id, "!t%s!g Ai deja!t Frost Nade!g !", Prefix);
				return 1;
			}
			else {
				new Credits = fcs_get_user_credits(id) - 20
				if(Credits < 0) {
					ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t Frost Nade!g !", Prefix);
					return 1;
				}
				else {
					fm_give_item(id, "weapon_smokegrenade");
					fcs_set_user_credits(id, Credits);
					ColorChat(id, "!t%s!g Ai cumparat!t Frost Nade !gpentru 20 de credite!g !", Prefix);
				}
			}
		}
		case 8: {
			if(get_user_flags(id) & VIP_LEVEL) {
				if(HaveSuperKnifeVip[id]) {
					ColorChat(id, "!t%s!g Ai deja!t Ultimate Knife [X4 DMG] + 250 HP&AP!g !", Prefix);
					return 1;
				}
				else {
					new Credits = fcs_get_user_credits(id) - 30
					if(Credits < 0) {
						ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t Ultimate Knife [X4 DMG] + 250 HP&AP!g !", Prefix);
						return 1;
					}	
					else {
						HaveSuperKnifeVip[id] = true;
						HaveSuperKnifeX2[id] = false;
						HaveSuperKnifeX3[id] = false;
						EVENT_CurWeapon(id);
						fm_set_user_armor(id, 250);
						fm_set_user_health(id, 250);
						fcs_set_user_credits(id, Credits)
					}
				}
			}
			else {
				ColorChat(id, "!t%s!g Acest item poate fi cumparat doar de catre!t membrii V.I.P!g !", Prefix);
				return 1;
			}
		}
	}
	menu_destroy(menu)
	return PLUGIN_HANDLED
}
public AntiFurienShop(id) {
	if(is_user_alive(id) && get_user_team(id) == 2) {
		new Title[128]
		formatex(Title, sizeof(Title)-1, "\rCredite: \y%d\r^n\rAnti-Furien Shop:", fcs_get_user_credits(id))
		Menu = menu_create(Title, "AntiFurienHandler")
		
		if(HaveDetector[id])
			menu_additem(Menu, "\dFurien Detector\w - \rAi deja", "1", 0)
		else {
			if(fcs_get_user_credits(id) >= 25) 
				menu_additem(Menu, "\wFurien Detector - \r25 Credite", "1", 0)
			else 
				menu_additem(Menu, "\dFurien Detector\w - \r25 Credite", "1", 0)
		}
		
		if(cs_get_user_defuse(id))
			menu_additem(Menu, "\dDefuse Kit\w - \rAi deja", "2", 0)
		else {
			if(fcs_get_user_credits(id) >= 2)
				menu_additem(Menu, "\wDefuse Kit - \r2 Credite", "2", 0)
			else 
				menu_additem(Menu, "\dDefuse Kit\w - \r2 Credite", "2", 0 )
		}
		
		if(get_user_health(id) >= 250) 
			menu_additem(Menu, "\dHealth [+50]\w -\r Ai viata maxima", "3", 0)
		else {
			if(fcs_get_user_credits(id) >= 3)
				menu_additem(Menu, "\wHealth \r[+50]\w - \r3 Credite", "3", 0)
			else 
				menu_additem(Menu, "\dHealth [+50]\w - \r3 Credite", "3", 0)
		}
		
		if(get_user_armor(id) >= 250) 
			menu_additem(Menu, "\dArmor [+50]\w -\r Ai armura maxima", "4", 0)
		else {
			if(fcs_get_user_credits(id) >= 3)
				menu_additem(Menu, "\wArmor \r[+50]\w - \r3 Credite", "4", 0)
			else 
				menu_additem(Menu, "\dArmor [+50]\w - \r3 Credite", "4", 0)
		}			
		
		if(HaveNoFlash[id])
			menu_additem(Menu, "\dNo Flash\w - \rAi deja", "5", 0)
		else {
			if(fcs_get_user_credits(id) >= 5)
				menu_additem(Menu, "\wNo Flash - \r5 Credite", "5", 0)
			else 
				menu_additem(Menu, "\dNo Flash\w - \r5 Credite", "5", 0)
		}		
		
		if(user_has_weapon(id, CSW_SMOKEGRENADE))
			menu_additem(Menu, "\dFrost nade\w - \rAi deja", "6", 0)
		else {
			if(fcs_get_user_credits(id) >= 20)
				menu_additem(Menu, "\wFrost nade - \r20 Credite", "6", 0)
			else 
				menu_additem(Menu, "\dFrost nade\w - \r20 Credite", "6", 0)
		}
		
		if(HavePET[id])
			menu_additem(Menu, "\dPET - Long Jump\w - \rAi deja", "7", 0)
		else {
			if(fcs_get_user_credits(id) >= 30) 
				menu_additem(Menu, "\wPET - Long Jump\w - \r30 Credite", "7", 0)
			else 
				menu_additem(Menu, "\dPET - Long Jump\w - \r30 Credite", "7", 0)
		}
		
		if(get_user_flags(id) & VIP_LEVEL) {
			if(HaveAT4[id])
				menu_additem(Menu, "\dBazooka\w - \rAi deja", "8", 0)
			else {
				if(fcs_get_user_credits(id) >= 50)
					menu_additem(Menu, "\wBazooka - \r50 Credite", "8", 0)
				else 
					menu_additem(Menu, "\dBazooka\w - \r50 Credite", "8", 0)	
			}
		}
		else 
			menu_additem(Menu, "\dBazooka\w - \rOnly V.I.P", "8", 0)		
		
		menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL);
		menu_display(id, Menu, 0);
	}
}

public AntiFurienHandler(id, menu, item) {
	if(item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != 2) {
		menu_destroy(menu);
		
		return PLUGIN_HANDLED;
	}
	new Data[6], Name[64];
	new Access, CallBack;
	menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
	new Key = str_to_num(Data);
	switch(Key) {
		case 1: {
			if(HaveDetector[id]) {
				ColorChat(id, "!t%s!g Ai deja!t Furien Detector!g !", Prefix);
				return 1;
			}
			else {
				new Credits = fcs_get_user_credits(id) - 25
				if(Credits < 0) {
					ColorChat(id, "!t%s!g Nu ai suficiente !tcredite!g pentru cumpara!t Furien Detector!g !", Prefix);
					return 1;
				}
				else {
					HaveDetector[id] = true;
					fcs_set_user_credits(id, Credits)
					ColorChat(id, "!t%s!g Ai cumparat!t Furien Detector !gpentru 25 de credite!g !", Prefix);
				}
			}
		}
		case 2: {
			if(cs_get_user_defuse(id)) {
				ColorChat(id, "!t%s!g Ai deja!t Defuse KIT!g !", Prefix);
				return 1;
			}
			else {
				new Credits = fcs_get_user_credits(id) - 2 
				if(Credits < 0) {
					ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t Defuse KIT!g !", Prefix);
					return 1;
				}
				else {
					cs_set_user_defuse(id, 1)
					fcs_set_user_credits(id, Credits)
					ColorChat(id, "!t%s!g Ai cumparat!t Defuse KIT !gpentru 2 credite!g !", Prefix);
				}
			}
		}
		case 3: {
			if(get_user_health(id) >= 250) {
				ColorChat(id, "!t%s!g Ai deja!t 250 health!g !", Prefix);
				return 1;
			}
			else {
				new Credits = fcs_get_user_credits(id) - 3
				if(Credits < 0) {
					ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t +50 Health!g !", Prefix);
					return 1;
				}
				else {
					if(get_user_health(id) + 50 > 250)
						fm_set_user_health(id, 250)
					else {
						fm_set_user_health(id, get_user_health(id) + 50) 
						fcs_set_user_credits(id, Credits)
						ColorChat(id, "!t%s!g Ai cumparat!t +50 Health !gpentru 3 credite!g !", Prefix)
					}
				}
			}
		}
		case 4: {
			if(get_user_armor(id) >= 250) {
				ColorChat(id, "!t%s!g Ai deja!t 250 armor!g !", Prefix);
				return 1;
			}
			else {
				new Credits = fcs_get_user_credits(id) - 3
				if(Credits < 0) {
					ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t +50 Armor!g !", Prefix);
					return 1;
				}
				else {
					if(get_user_armor(id) + 50 > 250)
						fm_set_user_armor(id, 250);
					else {
						fm_set_user_armor(id, get_user_armor(id) + 50) ;
						fcs_set_user_credits(id, Credits);
						ColorChat(id, "!t%s!g Ai cumparat!t +50 !gArmor pentru 3 credite!g !", Prefix);
					}
				}
			} 
		}
		case 5: {
			if(HaveNoFlash[id]) {
				ColorChat(id, "!t%s!g Ai deja!t No Flash!g !", Prefix);
				return 1;
			}
			else {
				new Credits = fcs_get_user_credits(id) - 5 
				if(Credits < 0) {
					ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t No Flash!g !", Prefix);
					return 1;
				}
				else {
					HaveNoFlash[id] = true;
					fcs_set_user_credits(id, Credits);
					ColorChat(id, "!t%s!g Ai cumparat!t No Flash !gpentru 5 credite!g !", Prefix);
				}
			}
		}	
		case 6: {
			if(user_has_weapon(id, CSW_SMOKEGRENADE)) {
				ColorChat(id, "!t%s!g Ai deja!t Frost Nade!g !", Prefix);
				return 1;
			}
			else {
				new Credits = fcs_get_user_credits(id) - 25 
				if(Credits < 0) {
					ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t Frost Nade!g !", Prefix);
					return 1;
				}
				else {
					fm_give_item(id, "weapon_smokegrenade");
					fcs_set_user_credits(id, Credits);
					ColorChat(id, "!t%s!g Ai cumparat!t Frost Nade !gpentru 25 de credite!g !", Prefix);
				}
			}
		}
		case 7: {
			if(HavePET[id]) {
				ColorChat(id, "!t%s!g Ai deja un!t PET - Long Jump!g !", Prefix);
				return 1;
			}
			else {
				new Credits = fcs_get_user_credits(id) - 30
				if(Credits < 0) {
					ColorChat(id, "!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t PET", Prefix);
					return 1;
				}
				else {
					create_pet(id)
					fcs_set_user_credits(id, Credits);
					ColorChat(id, "!t%s!g Ai cumparat!t PET - Long Jump !gpentru 30 de credite!g !", Prefix);
				}
			}
		}
		case 8: {
			if(get_user_flags(id) & VIP_LEVEL) {
				if(HaveAT4[id]) {
					ColorChat(id, "!t%s!g Ai deja!t Bazooka!g !", Prefix);
					return 1;
				}
				else {
					new Credits = fcs_get_user_credits(id) - 50
					if(Credits < 0) {
						ColorChat(id, "!t%s!g Ai deja!t Bazooka!g !", Prefix)
						return 1;
					}
					else {
						set_user_at4(id, true)
						fcs_set_user_credits(id, Credits);
						ColorChat(id, "!t%s!g Ai cumparat!t Bazooka !gpentru 50 de credite!g !", Prefix);
					}
				}
			}
			else {
				ColorChat(id, "!t%s!g Acest item poate fi cumparat doar de catre!t membrii V.I.P!g !", Prefix);
				return 1;
			}
		}
	}
	menu_destroy(menu)
	return PLUGIN_HANDLED
}

public AT4_UpdateClientData_POST(id, sendweapons, cd_handle) {
	if(is_user_connected(id) && is_user_alive(id)) {
		if(get_user_weapon(id) == CSW_AT4CS && HaveAT4[id])
			set_cd(cd_handle, CD_flNextAttack, halflife_time() + 0.001)  
	}
}

public AT4_AddToPlayer(ent, id) {
	if(!is_valid_ent(ent) || !is_user_alive(id))
		return HAM_IGNORED
		
	if(entity_get_int(ent, EV_INT_impulse) == 61296) {
		HaveAT4[id] = true
		entity_set_int(id, EV_INT_impulse, 0)
		
		return HAM_HANDLED
	}		

	if(HaveAT4[id]) {
		message_begin(MSG_ONE, get_user_msgid("WeaponList"), _, id)
		write_string("weapon_at4cs");    // WeaponName
		write_byte(3)                  // PrimaryAmmoID
		write_byte(1)                  // PrimaryAmmoMaxAmount
		write_byte(-1)                   // SecondaryAmmoID
		write_byte(-1)                   // SecondaryAmmoMaxAmount
		write_byte(0)                    // SlotID (0...N)
		write_byte(4)                    // NumberInSlot (1...N)
		write_byte(CSW_AT4CS)            // WeaponID
		write_byte(0)                   // Flags
		message_end()
	}
	return HAM_HANDLED	
}

public AT4_CMDStart(id, uc_handle, seed) {
	if(is_user_connected(id) && is_user_alive(id)) {
		if(get_user_weapon(id) == CSW_AT4CS && HaveAT4[id]) {
			static CurButton
			CurButton = get_uc(uc_handle, UC_Buttons)
			if(CurButton & IN_ATTACK) {
				static Float:CurTime
				CurTime = get_gametime()
		
				static at4cs
				at4cs = fm_find_ent_by_owner(-1, weapon_at4cs, id)		
		
				if(cs_get_weapon_ammo(at4cs) > 0 && !is_reloading[id]) {
					if(CurTime - 4.5 > g_lastfire[id]) {
						set_weapon_anim(id, 1)
						emit_sound(id, CHAN_WEAPON, AT4Sound[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
				
						create_rocket(id)
				
						static Float:Punch_Angles[3]
				
						Punch_Angles[0] = -20.0
						Punch_Angles[1] = 0.0
						Punch_Angles[2] = 0.0
				
						set_pev(id, pev_punchangle, Punch_Angles)
						cs_set_weapon_ammo(at4cs, cs_get_weapon_ammo(at4cs) - 1)
				
						if(cs_get_weapon_ammo(at4cs) <= 0 && !is_reloading[id]) {
							if(cs_get_user_bpammo(id, CSW_AT4CS) > 0) {
								set_task(1.0, "at4cs_reload", id)
							}
						}
						if(cs_get_user_zoom(id))
							cs_set_user_zoom(id, CS_RESET_ZOOM, 1)
				
						g_lastfire[id] = CurTime
					}
				}
				else {
					if(!is_reloading[id]) {
						if(cs_get_user_bpammo(id, CSW_AT4CS) > 0) {
							if(CurTime - 1.0 > g_lastfire[id]) {
								at4cs_reload(id)
								g_lastfire[id] = CurTime
							}
						}
					}
				}
			}
			if(CurButton & IN_ATTACK2) {
				static Float:CurTime
				CurTime = get_gametime()
		
				if((CurTime - 0.5 > g_lastaim[id]) && !is_reloading[id]) {
					if(!g_aiming[id]) {
						cs_set_user_zoom(id, CS_SET_FIRST_ZOOM, 1)
						g_aiming[id] = 1
					}
					else {
						cs_set_user_zoom(id, CS_RESET_ZOOM, 1)
						g_aiming[id] = 0
					}
					g_lastaim[id] = CurTime
				}
			}
	
			CurButton &= ~IN_ATTACK
			set_uc(uc_handle, UC_Buttons, CurButton)
	
			CurButton &= ~IN_RELOAD
			set_uc(uc_handle, UC_Buttons, CurButton)
		} 
	}

	return FMRES_HANDLED
}

public AT4_WorldModel(ent, const model[]) {
	if(!is_valid_ent(ent))
		return FMRES_IGNORED
	
	static szClassName[33]
	entity_get_string(ent, EV_SZ_classname, szClassName, charsmax(szClassName))
	
	if(!equal(szClassName, "weaponbox"))
		return FMRES_IGNORED
	
	static iOwner
	iOwner = entity_get_edict(ent, EV_ENT_owner)
	
	if(equal(model, "models/w_m249.mdl")) {
		static at4cs
		at4cs = find_ent_by_owner(-1, "weapon_m249", ent)
		
		if(!is_valid_ent(at4cs))
			return FMRES_IGNORED;
		
		if(HaveAT4[iOwner]) {
			entity_set_int(at4cs, EV_INT_impulse, 61296)
			HaveAT4[iOwner] = false;
			entity_set_model(ent, AT4Model_W)
			
			return FMRES_SUPERCEDE
		}
	}
	return FMRES_IGNORED
}

public at4cs_reload(id) {
	if(is_reloading[id])
		return
	
	is_reloading[id] = 1
	set_weapon_anim(id, 3)
	
	set_task(0.1, "checking_reload", id+TASK_CHECKRELOAD, _, _, "b")
	set_task(4.0, "reload_complete", id+TASK_RELOAD)
}

public checking_reload(id) {
	id -= TASK_CHECKRELOAD
	
	if(cs_get_user_zoom(id))
		cs_set_user_zoom(id, CS_RESET_ZOOM, 1)	
	
	if(get_user_weapon(id) != CSW_AT4CS || !HaveAT4[id]) {
		remove_task(id+TASK_CHECKRELOAD)
		remove_task(id+TASK_RELOAD)
		
		is_reloading[id] = 0
	}
}

public reload_complete(id) {
	id -= TASK_RELOAD
	
	if(!is_reloading[id])
		return
		
	remove_task(id+TASK_CHECKRELOAD)	
		
	static at4cs
	at4cs = fm_find_ent_by_owner(-1, weapon_at4cs, id)	
	
	cs_set_weapon_ammo(at4cs, 1)
	cs_set_user_bpammo(id, CSW_AT4CS, cs_get_user_bpammo(id, CSW_AT4CS) - 1)
	is_reloading[id] = 0
}

public AT4_Reload(ent) {
	static id
	id = pev(ent, pev_owner)
	
	if(is_user_connected(id) && is_user_alive(id)) {
		if(get_user_weapon(id) == CSW_AT4CS && HaveAT4[id]) {
		
			static Float:CurTime
			CurTime = get_gametime()		
		
			if(!is_reloading[id]) {
				if(cs_get_user_bpammo(id, CSW_AT4CS) > 0) {
					if(CurTime - 1.0 > g_lastfire[id]) {
						at4cs_reload(id)
						g_lastfire[id] = CurTime
					}
				}
			}
		}
	}
	return HAM_SUPERCEDE
}

public AT4_Think(ent) {
	if(!pev_valid(ent))
		return

	static Float:Origin[3]
	pev(ent, pev_origin, Origin)
		
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(TE_SPRITE)
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2])
	write_short(g_smoke_id) 
	write_byte(2) 
	write_byte(200)
	message_end()
	
	if(pev(ent, pev_iuser4) == 0) {
		static Victim
		Victim = FindClosesEnemy(ent)
		
		if(is_user_alive(Victim)) {
			set_pev(ent, pev_iuser4, Victim)
		}
	} 
	else {
		static Victim
		Victim = pev(ent, pev_iuser4)
		
		if(is_user_alive(Victim)) {
			static Float:VicOrigin[3]
			pev(Victim, pev_origin, VicOrigin)
			
			turn_to_target(ent, Origin, Victim, VicOrigin)
			hook_ent(ent, Victim, 500.0)
		} 
		else {
			set_pev(ent, pev_iuser4, 0)
		}
	}	
	set_pev(ent, pev_nextthink, halflife_time() + 0.075)
}

public AT4_Touch(rocket, touch) {
	if(!pev_valid(rocket))
		return	
		
	if(is_user_alive(touch) && pev(rocket, pev_owner) == touch)
		return
		
	static Float:Origin[3]
	pev(rocket, pev_origin, Origin)		
		
	message_begin(MSG_BROADCAST ,SVC_TEMPENTITY)
	write_byte(TE_EXPLOSION)
	engfunc(EngFunc_WriteCoord, Origin[0])
	engfunc(EngFunc_WriteCoord, Origin[1])
	engfunc(EngFunc_WriteCoord, Origin[2])
	write_short(g_spr_exp)	// sprite index
	write_byte(20)	// scale in 0.1's
	write_byte(30)	// framerate
	write_byte(0)	// flags
	message_end()
	
	static owner, iVictim
	
	iVictim = -1
	owner = pev(rocket, pev_owner)	

	while((iVictim = find_ent_in_sphere(iVictim, Origin, get_pcvar_float(cvar_radius))) != 0) {
		if((0 < iVictim < 32) && is_user_alive(iVictim) && iVictim != owner) {
			new Float:MaxDamage, Float:Damage
			
			MaxDamage = get_pcvar_float(cvar_maxdamage)
			Damage = random_float(MaxDamage - random_float(0.0, 100.0), MaxDamage + random_float(0.0, 100.0))
			
			ExecuteHam(Ham_TakeDamage, iVictim, 0, owner, 0, DMG_BULLET)
			
			static health
			health = get_user_health(iVictim)
				
			if(health - Damage >= 1) {
				fm_set_user_health(iVictim, health - floatround(Damage))
			}
			else {
				death_message(owner, iVictim, 1)
			}			
		}
	}	
	engfunc(EngFunc_RemoveEntity, rocket)
}

public create_rocket(id) {
	new ent, Float:Origin[3], Float:Angles[3], Float:Velocity[3]
	
	ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
	engfunc(EngFunc_GetAttachment, id, 0, Origin, Angles)
	pev(id, pev_angles, Angles)
	
	set_pev(ent, pev_origin, Origin)
	set_pev(ent, pev_angles, Angles)
	set_pev(ent, pev_solid, 2)
	set_pev(ent, pev_movetype, 5)
	set_pev(ent, pev_classname, "at4ex_rocket")
	set_pev(ent, pev_owner, id)
	engfunc(EngFunc_SetModel, ent, AT4Rocket)
	
	set_pev(ent, pev_mins, {-1.0, -1.0, -1.0})
	set_pev(ent, pev_maxs, {1.0, 1.0, 1.0})
	
	velocity_by_aim(id, 1750, Velocity)
	set_pev(ent, pev_velocity, Velocity)
	
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
	write_byte(TE_BEAMFOLLOW) 		// TE id
	write_short(ent) 				// entity:attachment to follow
	write_short(g_spr_trail) 		// sprite index
	write_byte(25) 					// life in 0.1's
	write_byte(2) 					// line width in 0.1's
	write_byte(255)					// r
	write_byte(255)					// g
	write_byte(255) 				// b
	write_byte(200)					// brightness
	message_end()	
	
	set_pev(ent, pev_iuser4, 0)
	set_pev(ent, pev_nextthink, halflife_time() + 0.1)
}

public hook_weapon(id) {
	engclient_cmd(id, weapon_at4cs)
}

public get_user_at4(id) {
	return HaveAT4[id];
}

public set_user_at4(id, at4) {
	if(at4) {
		if(!HaveAT4[id]) {
			drop_primary_weapons(id);
			HaveAT4[id] = true;
			is_reloading[id] = 0
			g_aiming[id] = 0
			fm_give_item(id, weapon_at4cs);
			new Clip = fm_get_user_weapon_entity(id, CSW_AT4CS);
			cs_set_weapon_ammo(Clip, 1);
			cs_set_user_bpammo(id, CSW_AT4CS, 50)
		}
	}
	else {
		if(HaveAT4[id]) {
			HaveAT4[id] = false;
		}
	}
}

//-------------------------------------------------------------------------//
//=============================| Stocks |=================================//
//-----------------------------------------------------------------------//
stock get_offset_origin_body(ent,const Float:offset[3],Float:origin[3]) {
	if(!pev_valid(ent))
		return 0;
	
	new Float:angle[3]
	pev(ent,pev_angles,angle)
	
	pev(ent,pev_origin,origin)
	
	origin[0] += floatcos(angle[1],degrees) * offset[0]
	origin[1] += floatsin(angle[1],degrees) * offset[0]
	
	origin[1] += floatcos(angle[1],degrees) * offset[1]
	origin[0] += floatsin(angle[1],degrees) * offset[1]
	
	return 1;
}

stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3]) {
	new_velocity[0] = origin2[0] - origin1[0]
	new_velocity[1] = origin2[1] - origin1[1]
	new_velocity[2] = origin2[2] - origin1[2]
	new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
	new_velocity[0] *= num
	new_velocity[1] *= num
	new_velocity[2] *= num
	
	return 1;
}

stock entity_set_aim(ent,const Float:origin2[3],bone=0) {
	if(!pev_valid(ent))
		return 0;
	
	static Float:origin[3]
	origin[0] = origin2[0]
	origin[1] = origin2[1]
	origin[2] = origin2[2]
	
	static Float:ent_origin[3], Float:angles[3]
	
	if(bone)
		engfunc(EngFunc_GetBonePosition,ent,bone,ent_origin,angles)
	else
		pev(ent,pev_origin,ent_origin)
	
	origin[0] -= ent_origin[0]
	origin[1] -= ent_origin[1]
	origin[2] -= ent_origin[2]
	
	static Float:v_length
	v_length = vector_length(origin)
	
	static Float:aim_vector[3]
	aim_vector[0] = origin[0] / v_length
	aim_vector[1] = origin[1] / v_length
	aim_vector[2] = origin[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
	if(new_angles[1]<-180.0) new_angles[1] += 360
	if(new_angles[1]==180.0 || new_angles[1]==-180.0) new_angles[1]=-179.999999
	
	set_pev(ent,pev_angles,new_angles)
	set_pev(ent,pev_fixangle,1)
	
	return 1;
}


stock set_weapon_anim(id, anim) {
	set_pev(id, pev_weaponanim, anim)

	message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, _, id)
	write_byte(anim)
	write_byte(pev(id,pev_body))
	message_end()
}

stock death_message(Killer, Victim, ScoreBoard) {
	set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET)
	ExecuteHamB(Ham_Killed, Victim, Killer, 2)
	set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT)
	
	make_deathmsg(Killer, Victim, 0, "")

	if (ScoreBoard) {
		message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"))
		write_byte(Killer) 						// id
		write_short(pev(Killer, pev_frags)) 	// frags
		write_short(cs_get_user_deaths(Killer)) // deaths
		write_short(0) 							// class?
		write_short(get_user_team(Killer)) 		// team
		message_end()
		
		message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo"))
		write_byte(Victim) 							// id
		write_short(pev(Victim, pev_frags)) 		// frags
		write_short(cs_get_user_deaths(Victim)) 	// deaths
		write_short(0) 								// class?
		write_short(get_user_team(Victim)) 			// team
		message_end()
	}
}

stock FindClosesEnemy(entid) {
	new Float:Dist
	new Float:maxdistance = 300.0
	new indexid = 0	
	
	for(new i = 1; i <= get_maxplayers(); i++){
		if(is_user_alive(i) && is_valid_ent(i) && can_see_fm(entid, i)
		&& pev(entid, pev_owner) != i && cs_get_user_team(pev(entid, pev_owner)) != cs_get_user_team(i)) {
			Dist = entity_range(entid, i)
			if(Dist <= maxdistance) {
				maxdistance = Dist
				indexid = i
				
				return indexid
			}
		}	
	}	
	return 0
}

stock bool:can_see_fm(entindex1, entindex2) {
	if (!entindex1 || !entindex2)
		return false

	if (pev_valid(entindex1) && pev_valid(entindex1)) {
		new flags = pev(entindex1, pev_flags)
		if (flags & EF_NODRAW || flags & FL_NOTARGET) 
			return false

		new Float:lookerOrig[3]
		new Float:targetBaseOrig[3]
		new Float:targetOrig[3]
		new Float:temp[3]

		pev(entindex1, pev_origin, lookerOrig)
		pev(entindex1, pev_view_ofs, temp)
		lookerOrig[0] += temp[0]
		lookerOrig[1] += temp[1]
		lookerOrig[2] += temp[2]

		pev(entindex2, pev_origin, targetBaseOrig)
		pev(entindex2, pev_view_ofs, temp)
		targetOrig[0] = targetBaseOrig [0] + temp[0]
		targetOrig[1] = targetBaseOrig [1] + temp[1]
		targetOrig[2] = targetBaseOrig [2] + temp[2]

		engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) //  checks the had of seen player
		if (get_tr2(0, TraceResult:TR_InOpen) && get_tr2(0, TraceResult:TR_InWater)) {
			return false
		} 
		else  {
			new Float:flFraction
			get_tr2(0, TraceResult:TR_flFraction, flFraction)
			if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2)) {
				return true
			}
			else {
				targetOrig[0] = targetBaseOrig [0]
				targetOrig[1] = targetBaseOrig [1]
				targetOrig[2] = targetBaseOrig [2]
				engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) //  checks the body of seen player
				get_tr2(0, TraceResult:TR_flFraction, flFraction)
				if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2)) {
					return true
				}
				else {
					targetOrig[0] = targetBaseOrig [0]
					targetOrig[1] = targetBaseOrig [1]
					targetOrig[2] = targetBaseOrig [2] - 17.0
					engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) //  checks the legs of seen player
					get_tr2(0, TraceResult:TR_flFraction, flFraction)
					if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2)) {
						return true
					}
				}
			}
		}
	}
	return false
}

stock turn_to_target(ent, Float:Ent_Origin[3], target, Float:Vic_Origin[3])  {
	if(target)  {
		new Float:newAngle[3]
		entity_get_vector(ent, EV_VEC_angles, newAngle)
		new Float:x = Vic_Origin[0] - Ent_Origin[0]
		new Float:z = Vic_Origin[1] - Ent_Origin[1]

		new Float:radians = floatatan(z/x, radian)
		newAngle[1] = radians * (180 / 3.14)
		if (Vic_Origin[0] < Ent_Origin[0])
			newAngle[1] -= 180.0
        
		entity_set_vector(ent, EV_VEC_angles, newAngle)
	}
}

stock hook_ent(ent, victim, Float:speed) {
	static Float:fl_Velocity[3]
	static Float:VicOrigin[3], Float:EntOrigin[3]

	pev(ent, pev_origin, EntOrigin)
	pev(victim, pev_origin, VicOrigin)
	
	static Float:distance_f
	distance_f = get_distance_f(EntOrigin, VicOrigin)

	if (distance_f > 10.0) {
		new Float:fl_Time = distance_f / speed

		fl_Velocity[0] = (VicOrigin[0] - EntOrigin[0]) / fl_Time
		fl_Velocity[1] = (VicOrigin[1] - EntOrigin[1]) / fl_Time
		fl_Velocity[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time
	} 
	else {
		fl_Velocity[0] = 0.0
		fl_Velocity[1] = 0.0
		fl_Velocity[2] = 0.0
	}

	entity_set_vector(ent, EV_VEC_velocity, fl_Velocity)
}

stock drop_primary_weapons(Player) {
	static weapons[32], num, i, weaponid;
	num = 0;
	get_user_weapons(Player, weapons, num);
	
	for(i = 0; i < num; i++) {
		weaponid = weapons [i];
		
		if(((1<<weaponid) & PRIMARY_WEAPONS_BITSUM)) {
			static wname[32];
			get_weaponname(weaponid, wname, charsmax(wname));
			
			engclient_cmd(Player, "drop", wname);
		}
	}
}

stock ColorChat(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");
	
	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();
			}
		}
	} 
}

Last edited by Pegasus6; 08-18-2019 at 16:59.
Pegasus6 is offline
DON KHAN 1
Senior Member
Join Date: Mar 2019
Location: Pakistan
Old 08-19-2019 , 02:35   Re: CMD for SHOP
Reply With Quote #2

Click Here

Here u go.
__________________
Facebook
My YouTube
Ro{Y}aL WarLanD CommuniTy
Selling Zombie CSO 4.3 Money System Mod
DON KHAN 1 is offline
edon1337
Penguin Enthusiast
Join Date: Jun 2016
Location: Macedonia
Old 08-19-2019 , 04:53   Re: CMD for SHOP
Reply With Quote #3

Quote:
Originally Posted by DON KHAN 1 View Post
Click Here

Here u go.
He's asking to block the /shop message from appearing in chat, not filtering it as a prohibited word.

@OP
Here you go.
PHP Code:
#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <engine>
#include <fun>

#define PLUGIN    "Furien Shop"
#define VERSION    "2.0"
#define AUTHOR "DaNNe."

#define VIP_LEVEL    ADMIN_LEVEL_H

// Pet
#define fm_precache_model(%1)           engfunc(EngFunc_PrecacheModel,%1)
#define fm_precache_sound(%1)           engfunc(EngFunc_PrecacheSound,%1)
#define fm_remove_entity(%1)            engfunc(EngFunc_RemoveEntity, %1)
//#define fm_drop_to_floor(%1)            engfunc(EngFunc_DropToFloor,%1)
#define fm_find_ent_by_class(%1,%2)     engfunc(EngFunc_FindEntityByString, %1, "classname", %2)
#define fm_set_user_gravity(%1,%2)      set_pev(%1,pev_gravity,%2)

#define PET_FLAG                        pev_flTimeStepSound
#define PET_KILLED                      389

static const pet_model[] = "models/stukabat.mdl"
static const pet_sounds[][] = { "bullchicken/bc_die1.wav""bullchicken/bc_die2.wav""bullchicken/bc_die3.wav""bullchicken/bc_idle1.wav""bullchicken/bc_pain3.wav" }
static const 
pet_idle 13
static const pet_run 13
static const pet_die 5
static const Float:pet_idle_speed 0.3
static const Float:pet_run_speed 10.0
static const Float:player_gravity 0.65

// AT4 
#define weapon_at4cs     "weapon_m249"
#define CSW_AT4CS         CSW_M249
#define TASK_CHECKRELOAD 111112
#define TASK_RELOAD 111113

new Float:g_lastfire[33], Float:g_lastaim[33], g_aiming[33],
g_smoke_idg_spr_trailg_spr_expis_reloading[33],
cvar_radiuscvar_maxdamage

new const AT4Model_V[] = "models/FurienShop/v_at4ex.mdl";
new const 
AT4Model_P[] = "models/FurienShop/p_at4ex.mdl";
new const 
AT4Model_W[] = "models/FurienShop/w_at4ex.mdl";
new const 
AT4Rocket[] = "models/FurienShop/s_rocket.mdl";

new const 
AT4Sound[][] = {
    
"weapons/at4-1.wav",
    
"weapons/at4_clipin1.wav",
    
"weapons/at4_clipin2.wav",
    
"weapons/at4_clipin3.wav",
    
"weapons/at4_draw.wav" 
};

// Super Knifes
new SuperKnifeX2_Model[] = "models/FurienShop/v_knife_human.mdl";
new 
SuperKnifeX3_Model[] = "models/FurienShop/v_ignes.mdl";
new 
SuperKnifeVIP_Model[] = "models/FurienShop/v_superknife_vip.mdl";

// Natives
native fcs_get_user_credits(id)
native fcs_set_user_credits(idamount)

//Furien Detector
new DetectorSprite;
new 
PRIMARY_WEAPONS_BITSUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
new 
SECONDARY_WEAPONS_BITSUM = (1<<CSW_GLOCK18)|(1<<CSW_USP)|(1<<CSW_P228)|(1<<CSW_DEAGLE)|(1<<CSW_FIVESEVEN)|(1<<CSW_ELITE);

//Bools
new bool:HaveSuperKnifeX2[33], bool:HaveSuperKnifeX3[33], bool:HaveSuperKnifeVip[33], bool:HaveDetector[33], bool:HaveNoFlash[33], bool:HaveAT4[33

//PET
new ItemPET[33], HavePET[33], PETAtSpawn[33]
new 
Float:item_leaptime[33]
new 
bool:g_has_speed[33]

new 
Prefix[] = "[FurienShop]";
new 
Menu;

public 
plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR
    
    
register_clcmd("say shop""CmdShop");
    
register_clcmd("say_team shop""CmdShop");
    
register_clcmd("say /shop""CmdShop");
    
register_clcmd("say_team /shop""CmdShop");
    
    
RegisterHam(Ham_Spawn"player""HAM_Spawn_Post");
    
RegisterHam(Ham_TakeDamage"player""HAM_TakeDamage");
    
    
register_event("CurWeapon""EVENT_CurWeapon""be""1=1");
    
register_event("DeathMsg""EVENT_Death""a");
    
register_event("HLTV""HLTV_EVENT_NewRound""a""1=0""2=0");
    
register_message(get_user_msgid("ScreenFade"), "MSG_ScreenFade")
    
    
register_forward(FM_PlayerPreThink"FWD_PreThink");
    
register_forward(FM_Think"FWD_Think");
    
    
register_forward(FM_UpdateClientData"AT4_UpdateClientData_POST"1)
    
register_forward(FM_CmdStart"AT4_CMDStart")
    
register_forward(FM_SetModel"AT4_WorldModel")
    
    
register_think("at4ex_rocket""AT4_Think")
    
register_touch("at4ex_rocket""*""AT4_Touch")
    
    
RegisterHam(Ham_Weapon_Reloadweapon_at4cs"AT4_Reload")
    
RegisterHam(Ham_Item_AddToPlayerweapon_at4cs"AT4_AddToPlayer"1)
    
    
cvar_radius register_cvar("zp_at4cs_radius""300.0")
    
cvar_maxdamage register_cvar("zp_at4cs_maxdamage""70.0")
    
    
register_clcmd("weapon_at4cs""hook_weapon")    
}

public 
plugin_precache() {
    
precache_model(SuperKnifeX2_Model);
    
precache_model(SuperKnifeX3_Model);
    
precache_model(SuperKnifeVIP_Model);
    
precache_model(AT4Model_V)
    
precache_model(AT4Model_P)
    
precache_model(AT4Model_W)
    
precache_model(AT4Rocket)
    
fm_precache_model(pet_model)
    
    
engfunc(EngFunc_PrecacheGeneric"sprites/FurienShop/weapon_at4cs.txt")
    
engfunc(EngFunc_PrecacheGeneric"sprites/FurienShop/at4cs.spr")    
    
    
g_smoke_id precache_model("sprites/FurienShop/rainsplash.spr")
    
g_spr_trail precache_model("sprites/FurienShop/xbeam3.spr")
    
g_spr_exp precache_model("sprites/FurienShop/zerogxplode.spr")
    
DetectorSprite precache_model("sprites/FurienShop/Detector.spr")
    
    new 
i;
    for(
0sizeof pet_soundsi++)
    
fm_precache_sound(pet_sounds[i])
    
    for(
0sizeof(AT4Sound); i++)
    
engfunc(EngFunc_PrecacheSoundAT4Sound[i])
    
    
}

public 
plugin_natives() {
    
register_native("get_user_at4""get_user_at4"1)
    
register_native("set_user_at4""set_user_at4"1)
}

public 
HAM_Spawn_Post(id) {
    if(
is_user_connected(id)) {
        
HaveNoFlash[id] = false;
        
HaveDetector[id] = false;
        
HaveAT4[id] = false;
        
HaveSuperKnifeVip[id] = false;
        
set_user_at4(idfalse)
        
drop_primary_weapons(id)
        if(
get_user_team(id) == 2) {
            
HaveSuperKnifeX2[id] = false;
            
HaveSuperKnifeX3[id] = false;
        }
        if(
get_user_team(id) != 2) {
            
kill_pet(id)
            
HavePET[id] = 0        
        
}
        if(
HavePET[id]) {
            
fm_set_user_health(idget_user_health(id) + 50)
            
fm_set_user_armor(idget_user_armor(id) + 50)
            
g_has_speed[id] = true
        
}
        else if(
PETAtSpawn[id]) {
            
create_pet(id)
            
PETAtSpawn[id] = 0
            g_has_speed
[id] = true
        
}
    }
}

public 
HAM_TakeDamage(VictimInflictorAttackerFloat:Damage) {
    if(
is_user_connected(Attacker)) {
        if(
get_user_weapon(Attacker) == CSW_KNIFE) {
            if(
HaveSuperKnifeX2[Attacker])
            
SetHamParamFloat(4Damage 2.0)
            if(
HaveSuperKnifeX3[Attacker])
            
SetHamParamFloat(4Damage 3.0)
            if(
HaveSuperKnifeVip[Attacker])
            
SetHamParamFloat(4Damage 4.0)
        }
    }
}

public 
EVENT_CurWeapon(id) {
    if(
get_user_weapon(id) == CSW_KNIFE) {
        if(
HaveSuperKnifeX2[id])
        
set_pev(idpev_viewmodel2SuperKnifeX2_Model)
        if(
HaveSuperKnifeX3[id])
        
set_pev(idpev_viewmodel2SuperKnifeX3_Model)
        if(
HaveSuperKnifeVip[id])
        
set_pev(idpev_viewmodel2SuperKnifeVIP_Model)    
    }
    if(
get_user_weapon(id) == CSW_AT4CS) {
        if(
HaveAT4[id]) {
            
set_pev(idpev_viewmodel2AT4Model_V)
            
set_pev(idpev_weaponmodel2AT4Model_P)
        }
    }
}

public 
HLTV_EVENT_NewRound() {
    new 
entid = -1
    
while((entid fm_find_ent_by_class(entid"zp_bat"))) {
        if(
pev(entid,PET_FLAG) == PET_KILLED)
        
fm_remove_entity(entid)             
    }
    
remove_entity_name("at4ex_rocket")    
}

public 
EVENT_Death() {
    new 
Victim read_data(2)
    
HaveSuperKnifeX2[Victim] = false;
    
HaveSuperKnifeX3[Victim] = false;
    
    if(
HavePET[Victim]) {
        
kill_pet(Victim)
        
HavePET[Victim] = 0
    
}
    
    if(
get_user_team(Victim) == 1)
    
HavePET[Victim] = 0
    
if(g_has_speed[Victim])
    
g_has_speed[Victim] = false
}

public 
MSG_ScreenFade(msgiddestid) {
    if(
HaveNoFlash[id]) {
        static 
data[4]
        
data[0] = get_msg_arg_int(4)
        
data[1] = get_msg_arg_int(5)
        
data[2] = get_msg_arg_int(6)
        
data[3] = get_msg_arg_int(7)
        
        if(
data[0] == 255 && data[1] == 255 && data[2] == 255 && data[3] > 199)
        return 
PLUGIN_HANDLED
    
}
    return 
PLUGIN_CONTINUE
}

public 
create_pet(id) {
    if(!
is_user_alive(id)) {
        
ColorChat(id"!t%s!g PET-ul iti va aparea runda urmatoare !"Prefix)
        
PETAtSpawn[id] = 1
        
return PLUGIN_HANDLED
    
}      
    else {
        
ItemPET[id] = engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString,"info_target"))
        
set_pev(ItemPET[id],pev_classname,"zp_bat")
        
        
engfunc(EngFunc_SetModel,ItemPET[id],pet_model)
        
        new 
Float:origin[3]
        
pev(id,pev_origin,origin)                      
        
        
set_pev(ItemPET[id],pev_origin,origin)
        
set_pev(ItemPET[id],pev_solid,SOLID_TRIGGER)
        
set_pev(ItemPET[id],pev_movetype,MOVETYPE_FLY)
        
set_pev(ItemPET[id],pev_owner,33)
        
set_pev(ItemPET[id],pev_nextthink,1.0)
        
set_pev(ItemPET[id],pev_sequence,0)
        
set_pev(ItemPET[id],pev_gaitsequence,0)
        
set_pev(ItemPET[id],pev_framerate,1.0)
        
        
set_pev(ItemPET[id], pev_renderfxkRenderFxGlowShell)
        
set_pev(ItemPET[id], pev_rendercolorFloat:{0.00.0200.0})
        
        
fm_set_user_health(idget_user_health(id) + 50)
        
fm_set_user_armor(idget_user_armor(id) + 50)
        
        
engfunc(EngFunc_EmitSound,ItemPET[id],CHAN_AUTO,pet_sounds[random_num(0,sizeof pet_sounds 1)],1.01.20PITCH_NORM)              
        
        
HavePET[id] = 1
        g_has_speed
[id] = true
    
}
    return 
PLUGIN_HANDLED
}

public 
kill_pet(id) {
    if(
pev_valid(ItemPET[id])) {
        
set_pev(ItemPET[id],pev_sequence,pet_die)
        
set_pev(ItemPET[id],pev_gaitsequence,pet_die)
        
set_pev(ItemPET[id],pev_framerate,1.0)
        
        
set_pev(ItemPET[id],PET_FLAG,PET_KILLED)
        
        
fm_drop_to_floor(ItemPET[id])
        
        
HavePET[id] = 0
        g_has_speed
[id] = false
    
}      
    
ItemPET[id] = 0
}

public 
FWD_PreThink(id) {
    if(
is_user_connected(id) && is_user_alive(id)) {
        if(
get_user_team(id) == && HaveDetector[id]) {
            static 
TargetBodyWeapon;
            
            
get_user_aiming(idTargetBody);
            
Weapon get_user_weapon(id);
            
            if((
1<<Weapon) & PRIMARY_WEAPONS_BITSUM || (1<<Weapon) & SECONDARY_WEAPONS_BITSUM) {
                static 
Origin[3];
                
get_user_origin(idOrigin3);
                
                
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
                
write_byte(TE_BEAMENTPOINT);
                
write_short(id 0x1000);
                
write_coord(Origin[0]);
                
write_coord(Origin[1]);
                
write_coord(Origin[2]);
                
write_short(DetectorSprite); 
                
write_byte(0);
                
write_byte(10);
                
write_byte(1);
                
write_byte(5);
                
write_byte(0);
                if(
is_user_alive(Target) && get_user_team(Target) == 1) {
                    
write_byte(150);
                    
write_byte(0);
                    
write_byte(0);
                }
                else {
                    
write_byte(0);
                    
write_byte(150);
                    
write_byte(0);
                }
                
write_byte(250);
                
write_byte(25);
                
message_end();
            }        
        }
        if(
allowed_leap(id)) {
            static 
Float:velocity[3]
            
velocity_by_aim(id500velocity)
            
velocity[2] = 300.0
            set_pev
(idpev_velocityvelocity)  
            
item_leaptime[id] = get_gametime()
        }
    }
}

public 
FWD_Think(ent) {
    for(new 
0<= get_maxplayers(); i++) {
        if(
ent == ItemPET[i]) {
            static 
Float:origin[3]
            static 
Float:origin2[3]
            static 
Float:velocity[3]
            
pev(ent,pev_origin,origin2)
            
get_offset_origin_body(i,Float:{50.0,0.0,0.0},origin)
            
            if(
get_distance_f(origin,origin2) > 300.0)
            
set_pev(ent,pev_origin,origin)
            
            else if(
get_distance_f(origin,origin2) > 80.0) {
                
get_speed_vector(origin2,origin,250.0,velocity)
                
set_pev(ent,pev_velocity,velocity)
                if(
pev(ent,pev_sequence) != pet_run || pev(ent,pev_framerate) != pet_run_speed) {
                    
set_pev(ent,pev_sequence,pet_run)
                    
set_pev(ent,pev_gaitsequence,pet_run)
                    
set_pev(ent,pev_framerate,pet_run_speed)
                }
            }
            
            else if(
get_distance_f(origin,origin2) < 75.0) {
                if(
pev(ent,pev_sequence) != pet_idle || pev(ent,pev_framerate) != pet_idle_speed) {
                    
set_pev(ent,pev_sequence,pet_idle)
                    
set_pev(ent,pev_gaitsequence,pet_idle)
                    
set_pev(ent,pev_framerate,pet_idle_speed)
                }
                
set_pev(ent,pev_velocity,Float:{0.0,0.0,0.0})
            }
            
pev(i,pev_origin,origin)
            
origin[2] = origin2[2]
            
entity_set_aim(ent,origin)                     
            
set_pev(ent,pev_nextthink,1.0)
            break
        }
    }
}

public 
allowed_leap(id) {      
    if(!
HavePET[id])
    return 
false
    
    
if(!(pev(idpev_flags) & FL_ONGROUND) || fm_get_speed(id) < 80)
    return 
false
    
    
static buttons
    buttons 
pev(idpev_button)
    
    if(!
is_user_bot(id) && (!(buttons IN_JUMP) || !(buttons IN_DUCK)))
    return 
false
    
    
if(get_gametime() - item_leaptime[id] < 3)
    return 
false
    
    
return true
}

public 
is_a_player(ent) {
    if(
ent && ent 33)
    return 
true
    
    
return false
}

public 
remove_pet(ent) {
    if(
pev_valid(ent))
    
fm_remove_entity(ent)
}

public 
CmdShop(id)
{
    if(!
is_user_alive(id))
    {
        
ColorChat(id"!t%s!g Nu poti folosi shopul cat timp esti mort !"Prefix)
        return 
PLUGIN_HANDLED;
    }
    
    switch(
get_user_team(id))
    {
    case 
1FurienShop(id)
    case 
2AntiFurienShop(id)
    }
    return 
PLUGIN_HANDLED;
}

public 
FurienShop(id) {
    if(
is_user_alive(id) && get_user_team(id) == 1) {
        new 
Title[128]
        
formatex(Titlesizeof(Title)-1"\rCredite: \y%d\r^n\rFurien Shop:"fcs_get_user_credits(id))
        
Menu menu_create(Title"FurienHandler")
        
        if(
HaveSuperKnifeX2[id])
        
menu_additem(Menu"\dAssassin Knife [X2 DMG]\w - \rAi deja""1"0)
        else {
            if(
fcs_get_user_credits(id) >= 10)
            
menu_additem(Menu"\wAssassin Knife\r [X2 DMG]\w - \r10 Credite""1"0)
            else 
            
menu_additem(Menu"\dAssassin Knife [X2 DMG]\w - \r10 Credite""1"0)
        }
        
        if(
HaveSuperKnifeX3[id])
        
menu_additem(Menu"\dNemesis Knife [X3 DMG]\w - \rAi deja""2"0)
        else {
            if(
fcs_get_user_credits(id) >= 20)
            
menu_additem(Menu"\wNemesis Knife\r [X3 DMG]\w - \r20 Credite""2"0)
            else 
            
menu_additem(Menu"\dNemesis Knife [X3 DMG]\w - \r20 Credite""2"0)
        }
        
        if(
get_user_health(id) >= 250
        
menu_additem(Menu"\dHealth [+50]\w -\r Ai viata maxima""3"0)
        else {
            if(
fcs_get_user_credits(id) >= 3)
            
menu_additem(Menu"\wHealth \r[+50]\w - \r3 Credite""3"0)
            else 
            
menu_additem(Menu"\dHealth [+50]\w - \r3 Credite""3"0)
        }
        
        if(
get_user_armor(id) >= 250
        
menu_additem(Menu"\dArmor [+50]\w -\r Ai armura maxima""4"0)
        else {
            if(
fcs_get_user_credits(id) >= 3)
            
menu_additem(Menu"\wArmor \r[+50]\w - \r3 Credite""4"0)
            else 
            
menu_additem(Menu"\dArmor [+50]\w - \r3 Credite""4"0)
        }            
        
        if(
HaveNoFlash[id])
        
menu_additem(Menu"\dNo Flash\w - \rAi deja""5"0)
        else {
            if(
fcs_get_user_credits(id) >= 5)
            
menu_additem(Menu"\wNo Flash - \r5 Credite""5"0)
            else 
            
menu_additem(Menu"\dNo Flash\w - \r5 Credite""5"0)
        }
        
        if(
user_has_weapon(idCSW_HEGRENADE))
        
menu_additem(Menu"\dHe grenade\w - \rAi deja""6"0)
        else {
            if(
fcs_get_user_credits(id) >= 25)
            
menu_additem(Menu"\wHe grenade - \r25 Credite""6"0)
            else 
            
menu_additem(Menu"\dHe grenade\w - \r25 Credite""6"0)
        }
        
        if(
user_has_weapon(idCSW_SMOKEGRENADE))
        
menu_additem(Menu"\dFrost nade\w - \rAi deja""7"0)
        else {
            if(
fcs_get_user_credits(id) >= 20)
            
menu_additem(Menu"\wFrost nade - \r20 Credite""7"0)
            else 
            
menu_additem(Menu"\dFrost nade\w - \r20 Credite""7"0)
        }
        
        if(
get_user_flags(id) & VIP_LEVEL) {
            if(
HaveSuperKnifeVip[id])
            
menu_additem(Menu"\dUltimate Knife [X4 DMG] + 250 HP&AP\w - \rAi deja""8"0)
            else {
                if(
fcs_get_user_credits(id) >= 30)
                
menu_additem(Menu"\wUltimate Knife [X4 DMG] + 250 HP&AP\w - \r30 Credite""8"0)
                else 
                
menu_additem(Menu"\dUltimate Knife [X4 DMG] + 250 HP&AP\w - \r30 Credite""8"0)    
            }
        }
        else 
        
menu_additem(Menu"\dUltimate Knife [X4 DMG] + 250 HP&AP\w - \rOnly V.I.P""8"0)
        
        
menu_setprop(MenuMPROP_EXITMEXIT_ALL);
        
menu_display(idMenu0);
    }
}

public 
FurienHandler(idmenuitem) {
    if(
item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != 1) {
        
menu_destroy(menu);
        
        return 
PLUGIN_HANDLED;
    }
    new 
Data[6], Name[64];
    new 
AccessCallBack;
    
menu_item_getinfo(menuitemAccessData,5Name63CallBack);
    new 
Key str_to_num(Data);
    switch(
Key) {
    case 
1: {
            if(
HaveSuperKnifeX2[id]) {
                
ColorChat(id"!t%s!g Ai deja!t Assasin Knife [X2 DMG]!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 10 
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t Assassin Knife [X2 DMG]!g !"Prefix);
                    return 
1;
                }
                else {
                    
HaveSuperKnifeX2[id] = true;
                    
HaveSuperKnifeX3[id] = false;
                    
HaveSuperKnifeVip[id] = false;
                    
EVENT_CurWeapon(id);
                    
fcs_set_user_credits(idCredits);
                    
ColorChat(id"!t%s!g Ai cumparat!t Assassin Knife [X2 DMG] !gpentru 10 credite!g !"Prefix);
                }
            }
        }
    case 
2: {
            if(
HaveSuperKnifeX3[id]) {
                
ColorChat(id"!t%s!g Ai deja!t Nemesis Knife [X3 DMG]!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 20 
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t Nemesis Knife [X3 DMG]!g !"Prefix);
                    return 
1;
                }
                else {
                    
HaveSuperKnifeX3[id] = true;
                    
EVENT_CurWeapon(id);
                    
fcs_set_user_credits(idCredits);
                    
ColorChat(id"!t%s!g Ai cumparat!t Nemesis Knife [X3 DMG] !gpentru 20 de credite!g !"Prefix);
                }
            }
        }
    case 
3: {
            if(
get_user_health(id) >= 250) {
                
ColorChat(id"!t%s!g Ai deja!t 250 health!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t +50 Health!g !"Prefix);
                    return 
1;
                }
                else {
                    if(
get_user_health(id) + 50 250)
                    
fm_set_user_health(id250)
                    else {
                        
fm_set_user_health(idget_user_health(id) + 50
                        
fcs_set_user_credits(idCredits)
                        
ColorChat(id"!t%s!g Ai cumparat!t +50 Health !gpentru 3 credite!g !"Prefix)
                    }
                }
            }
        }
    case 
4: {
            if(
get_user_armor(id) >= 250) {
                
ColorChat(id"!t%s!g Ai deja!t 250 armor!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 3
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t +50 Armor!g !"Prefix);
                    return 
1;
                }
                else {
                    if(
get_user_armor(id) + 50 250)
                    
fm_set_user_armor(id250);
                    else {
                        
fm_set_user_armor(idget_user_armor(id) + 50) ;
                        
fcs_set_user_credits(idCredits);
                        
ColorChat(id"!t%s!g Ai cumparat!t +50 Armor !gpentru 3 credite!g !"Prefix);
                    }
                }
            }
        }
    case 
5: {
            if(
HaveNoFlash[id]) {
                
ColorChat(id"!t%s!g Ai deja!t No Flash!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite !gpentru a cumpara!t No Flash!g !"Prefix);
                    return 
1;
                }
                else {
                    
HaveNoFlash[id] = true;
                    
fcs_set_user_credits(idCredits);
                    
ColorChat(id"!t%s!g Ai cumparat!t No Flash !gpentru 5 credite!g !"Prefix);
                }
            }
        }
    case 
6: {
            if(
user_has_weapon(idCSW_HEGRENADE)) {
                
ColorChat(id"!t%s!g Ai deja!t HE Grenade!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 25 
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t HE Grenade!g !"Prefix);
                    return 
1;
                }
                else {
                    
fm_give_item(id"weapon_hegrenade");
                    
fcs_set_user_credits(idCredits);
                    
ColorChat(id"!t%s!g Ai cumparat!t HE Grenade !gpentru 25 de credite!g !"Prefix);
                }
            }
        }
    case 
7: {
            if(
user_has_weapon(idCSW_SMOKEGRENADE)) {
                
ColorChat(id"!t%s!g Ai deja!t Frost Nade!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 20
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t Frost Nade!g !"Prefix);
                    return 
1;
                }
                else {
                    
fm_give_item(id"weapon_smokegrenade");
                    
fcs_set_user_credits(idCredits);
                    
ColorChat(id"!t%s!g Ai cumparat!t Frost Nade !gpentru 20 de credite!g !"Prefix);
                }
            }
        }
    case 
8: {
            if(
get_user_flags(id) & VIP_LEVEL) {
                if(
HaveSuperKnifeVip[id]) {
                    
ColorChat(id"!t%s!g Ai deja!t Ultimate Knife [X4 DMG] + 250 HP&AP!g !"Prefix);
                    return 
1;
                }
                else {
                    new 
Credits fcs_get_user_credits(id) - 30
                    
if(Credits 0) {
                        
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t Ultimate Knife [X4 DMG] + 250 HP&AP!g !"Prefix);
                        return 
1;
                    }    
                    else {
                        
HaveSuperKnifeVip[id] = true;
                        
HaveSuperKnifeX2[id] = false;
                        
HaveSuperKnifeX3[id] = false;
                        
EVENT_CurWeapon(id);
                        
fm_set_user_armor(id250);
                        
fm_set_user_health(id250);
                        
fcs_set_user_credits(idCredits)
                    }
                }
            }
            else {
                
ColorChat(id"!t%s!g Acest item poate fi cumparat doar de catre!t membrii V.I.P!g !"Prefix);
                return 
1;
            }
        }
    }
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED
}
public 
AntiFurienShop(id) {
    if(
is_user_alive(id) && get_user_team(id) == 2) {
        new 
Title[128]
        
formatex(Titlesizeof(Title)-1"\rCredite: \y%d\r^n\rAnti-Furien Shop:"fcs_get_user_credits(id))
        
Menu menu_create(Title"AntiFurienHandler")
        
        if(
HaveDetector[id])
        
menu_additem(Menu"\dFurien Detector\w - \rAi deja""1"0)
        else {
            if(
fcs_get_user_credits(id) >= 25
            
menu_additem(Menu"\wFurien Detector - \r25 Credite""1"0)
            else 
            
menu_additem(Menu"\dFurien Detector\w - \r25 Credite""1"0)
        }
        
        if(
cs_get_user_defuse(id))
        
menu_additem(Menu"\dDefuse Kit\w - \rAi deja""2"0)
        else {
            if(
fcs_get_user_credits(id) >= 2)
            
menu_additem(Menu"\wDefuse Kit - \r2 Credite""2"0)
            else 
            
menu_additem(Menu"\dDefuse Kit\w - \r2 Credite""2")
        }
        
        if(
get_user_health(id) >= 250
        
menu_additem(Menu"\dHealth [+50]\w -\r Ai viata maxima""3"0)
        else {
            if(
fcs_get_user_credits(id) >= 3)
            
menu_additem(Menu"\wHealth \r[+50]\w - \r3 Credite""3"0)
            else 
            
menu_additem(Menu"\dHealth [+50]\w - \r3 Credite""3"0)
        }
        
        if(
get_user_armor(id) >= 250
        
menu_additem(Menu"\dArmor [+50]\w -\r Ai armura maxima""4"0)
        else {
            if(
fcs_get_user_credits(id) >= 3)
            
menu_additem(Menu"\wArmor \r[+50]\w - \r3 Credite""4"0)
            else 
            
menu_additem(Menu"\dArmor [+50]\w - \r3 Credite""4"0)
        }            
        
        if(
HaveNoFlash[id])
        
menu_additem(Menu"\dNo Flash\w - \rAi deja""5"0)
        else {
            if(
fcs_get_user_credits(id) >= 5)
            
menu_additem(Menu"\wNo Flash - \r5 Credite""5"0)
            else 
            
menu_additem(Menu"\dNo Flash\w - \r5 Credite""5"0)
        }        
        
        if(
user_has_weapon(idCSW_SMOKEGRENADE))
        
menu_additem(Menu"\dFrost nade\w - \rAi deja""6"0)
        else {
            if(
fcs_get_user_credits(id) >= 20)
            
menu_additem(Menu"\wFrost nade - \r20 Credite""6"0)
            else 
            
menu_additem(Menu"\dFrost nade\w - \r20 Credite""6"0)
        }
        
        if(
HavePET[id])
        
menu_additem(Menu"\dPET - Long Jump\w - \rAi deja""7"0)
        else {
            if(
fcs_get_user_credits(id) >= 30
            
menu_additem(Menu"\wPET - Long Jump\w - \r30 Credite""7"0)
            else 
            
menu_additem(Menu"\dPET - Long Jump\w - \r30 Credite""7"0)
        }
        
        if(
get_user_flags(id) & VIP_LEVEL) {
            if(
HaveAT4[id])
            
menu_additem(Menu"\dBazooka\w - \rAi deja""8"0)
            else {
                if(
fcs_get_user_credits(id) >= 50)
                
menu_additem(Menu"\wBazooka - \r50 Credite""8"0)
                else 
                
menu_additem(Menu"\dBazooka\w - \r50 Credite""8"0)    
            }
        }
        else 
        
menu_additem(Menu"\dBazooka\w - \rOnly V.I.P""8"0)        
        
        
menu_setprop(MenuMPROP_EXITMEXIT_ALL);
        
menu_display(idMenu0);
    }
}

public 
AntiFurienHandler(idmenuitem) {
    if(
item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != 2) {
        
menu_destroy(menu);
        
        return 
PLUGIN_HANDLED;
    }
    new 
Data[6], Name[64];
    new 
AccessCallBack;
    
menu_item_getinfo(menuitemAccessData,5Name63CallBack);
    new 
Key str_to_num(Data);
    switch(
Key) {
    case 
1: {
            if(
HaveDetector[id]) {
                
ColorChat(id"!t%s!g Ai deja!t Furien Detector!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 25
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente !tcredite!g pentru cumpara!t Furien Detector!g !"Prefix);
                    return 
1;
                }
                else {
                    
HaveDetector[id] = true;
                    
fcs_set_user_credits(idCredits)
                    
ColorChat(id"!t%s!g Ai cumparat!t Furien Detector !gpentru 25 de credite!g !"Prefix);
                }
            }
        }
    case 
2: {
            if(
cs_get_user_defuse(id)) {
                
ColorChat(id"!t%s!g Ai deja!t Defuse KIT!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t Defuse KIT!g !"Prefix);
                    return 
1;
                }
                else {
                    
cs_set_user_defuse(id1)
                    
fcs_set_user_credits(idCredits)
                    
ColorChat(id"!t%s!g Ai cumparat!t Defuse KIT !gpentru 2 credite!g !"Prefix);
                }
            }
        }
    case 
3: {
            if(
get_user_health(id) >= 250) {
                
ColorChat(id"!t%s!g Ai deja!t 250 health!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 3
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t +50 Health!g !"Prefix);
                    return 
1;
                }
                else {
                    if(
get_user_health(id) + 50 250)
                    
fm_set_user_health(id250)
                    else {
                        
fm_set_user_health(idget_user_health(id) + 50
                        
fcs_set_user_credits(idCredits)
                        
ColorChat(id"!t%s!g Ai cumparat!t +50 Health !gpentru 3 credite!g !"Prefix)
                    }
                }
            }
        }
    case 
4: {
            if(
get_user_armor(id) >= 250) {
                
ColorChat(id"!t%s!g Ai deja!t 250 armor!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 3
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t +50 Armor!g !"Prefix);
                    return 
1;
                }
                else {
                    if(
get_user_armor(id) + 50 250)
                    
fm_set_user_armor(id250);
                    else {
                        
fm_set_user_armor(idget_user_armor(id) + 50) ;
                        
fcs_set_user_credits(idCredits);
                        
ColorChat(id"!t%s!g Ai cumparat!t +50 !gArmor pentru 3 credite!g !"Prefix);
                    }
                }
            } 
        }
    case 
5: {
            if(
HaveNoFlash[id]) {
                
ColorChat(id"!t%s!g Ai deja!t No Flash!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t No Flash!g !"Prefix);
                    return 
1;
                }
                else {
                    
HaveNoFlash[id] = true;
                    
fcs_set_user_credits(idCredits);
                    
ColorChat(id"!t%s!g Ai cumparat!t No Flash !gpentru 5 credite!g !"Prefix);
                }
            }
        }    
    case 
6: {
            if(
user_has_weapon(idCSW_SMOKEGRENADE)) {
                
ColorChat(id"!t%s!g Ai deja!t Frost Nade!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 25 
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t Frost Nade!g !"Prefix);
                    return 
1;
                }
                else {
                    
fm_give_item(id"weapon_smokegrenade");
                    
fcs_set_user_credits(idCredits);
                    
ColorChat(id"!t%s!g Ai cumparat!t Frost Nade !gpentru 25 de credite!g !"Prefix);
                }
            }
        }
    case 
7: {
            if(
HavePET[id]) {
                
ColorChat(id"!t%s!g Ai deja un!t PET - Long Jump!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 30
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t PET"Prefix);
                    return 
1;
                }
                else {
                    
create_pet(id)
                    
fcs_set_user_credits(idCredits);
                    
ColorChat(id"!t%s!g Ai cumparat!t PET - Long Jump !gpentru 30 de credite!g !"Prefix);
                }
            }
        }
    case 
8: {
            if(
get_user_flags(id) & VIP_LEVEL) {
                if(
HaveAT4[id]) {
                    
ColorChat(id"!t%s!g Ai deja!t Bazooka!g !"Prefix);
                    return 
1;
                }
                else {
                    new 
Credits fcs_get_user_credits(id) - 50
                    
if(Credits 0) {
                        
ColorChat(id"!t%s!g Ai deja!t Bazooka!g !"Prefix)
                        return 
1;
                    }
                    else {
                        
set_user_at4(idtrue)
                        
fcs_set_user_credits(idCredits);
                        
ColorChat(id"!t%s!g Ai cumparat!t Bazooka !gpentru 50 de credite!g !"Prefix);
                    }
                }
            }
            else {
                
ColorChat(id"!t%s!g Acest item poate fi cumparat doar de catre!t membrii V.I.P!g !"Prefix);
                return 
1;
            }
        }
    }
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED
}

public 
AT4_UpdateClientData_POST(idsendweaponscd_handle) {
    if(
is_user_connected(id) && is_user_alive(id)) {
        if(
get_user_weapon(id) == CSW_AT4CS && HaveAT4[id])
        
set_cd(cd_handleCD_flNextAttackhalflife_time() + 0.001)  
    }
}

public 
AT4_AddToPlayer(entid) {
    if(!
is_valid_ent(ent) || !is_user_alive(id))
    return 
HAM_IGNORED
    
    
if(entity_get_int(entEV_INT_impulse) == 61296) {
        
HaveAT4[id] = true
        entity_set_int
(idEV_INT_impulse0)
        
        return 
HAM_HANDLED
    
}        

    if(
HaveAT4[id]) {
        
message_begin(MSG_ONEget_user_msgid("WeaponList"), _id)
        
write_string("weapon_at4cs");    // WeaponName
        
write_byte(3)                  // PrimaryAmmoID
        
write_byte(1)                  // PrimaryAmmoMaxAmount
        
write_byte(-1)                   // SecondaryAmmoID
        
write_byte(-1)                   // SecondaryAmmoMaxAmount
        
write_byte(0)                    // SlotID (0...N)
        
write_byte(4)                    // NumberInSlot (1...N)
        
write_byte(CSW_AT4CS)            // WeaponID
        
write_byte(0)                   // Flags
        
message_end()
    }
    return 
HAM_HANDLED    
}

public 
AT4_CMDStart(iduc_handleseed) {
    if(
is_user_connected(id) && is_user_alive(id)) {
        if(
get_user_weapon(id) == CSW_AT4CS && HaveAT4[id]) {
            static 
CurButton
            CurButton 
get_uc(uc_handleUC_Buttons)
            if(
CurButton IN_ATTACK) {
                static 
Float:CurTime
                CurTime 
get_gametime()
                
                static 
at4cs
                at4cs 
fm_find_ent_by_owner(-1weapon_at4csid)        
                
                if(
cs_get_weapon_ammo(at4cs) > && !is_reloading[id]) {
                    if(
CurTime 4.5 g_lastfire[id]) {
                        
set_weapon_anim(id1)
                        
emit_sound(idCHAN_WEAPONAT4Sound[0], 1.0ATTN_NORM0PITCH_NORM)
                        
                        
create_rocket(id)
                        
                        static 
Float:Punch_Angles[3]
                        
                        
Punch_Angles[0] = -20.0
                        Punch_Angles
[1] = 0.0
                        Punch_Angles
[2] = 0.0
                        
                        set_pev
(idpev_punchanglePunch_Angles)
                        
cs_set_weapon_ammo(at4cscs_get_weapon_ammo(at4cs) - 1)
                        
                        if(
cs_get_weapon_ammo(at4cs) <= && !is_reloading[id]) {
                            if(
cs_get_user_bpammo(idCSW_AT4CS) > 0) {
                                
set_task(1.0"at4cs_reload"id)
                            }
                        }
                        if(
cs_get_user_zoom(id))
                        
cs_set_user_zoom(idCS_RESET_ZOOM1)
                        
                        
g_lastfire[id] = CurTime
                    
}
                }
                else {
                    if(!
is_reloading[id]) {
                        if(
cs_get_user_bpammo(idCSW_AT4CS) > 0) {
                            if(
CurTime 1.0 g_lastfire[id]) {
                                
at4cs_reload(id)
                                
g_lastfire[id] = CurTime
                            
}
                        }
                    }
                }
            }
            if(
CurButton IN_ATTACK2) {
                static 
Float:CurTime
                CurTime 
get_gametime()
                
                if((
CurTime 0.5 g_lastaim[id]) && !is_reloading[id]) {
                    if(!
g_aiming[id]) {
                        
cs_set_user_zoom(idCS_SET_FIRST_ZOOM1)
                        
g_aiming[id] = 1
                    
}
                    else {
                        
cs_set_user_zoom(idCS_RESET_ZOOM1)
                        
g_aiming[id] = 0
                    
}
                    
g_lastaim[id] = CurTime
                
}
            }
            
            
CurButton &= ~IN_ATTACK
            set_uc
(uc_handleUC_ButtonsCurButton)
            
            
CurButton &= ~IN_RELOAD
            set_uc
(uc_handleUC_ButtonsCurButton)
        } 
    }

    return 
FMRES_HANDLED
}

public 
AT4_WorldModel(ent, const model[]) {
    if(!
is_valid_ent(ent))
    return 
FMRES_IGNORED
    
    
static szClassName[33]
    
entity_get_string(entEV_SZ_classnameszClassNamecharsmax(szClassName))
    
    if(!
equal(szClassName"weaponbox"))
    return 
FMRES_IGNORED
    
    
static iOwner
    iOwner 
entity_get_edict(entEV_ENT_owner)
    
    if(
equal(model"models/w_m249.mdl")) {
        static 
at4cs
        at4cs 
find_ent_by_owner(-1"weapon_m249"ent)
        
        if(!
is_valid_ent(at4cs))
        return 
FMRES_IGNORED;
        
        if(
HaveAT4[iOwner]) {
            
entity_set_int(at4csEV_INT_impulse61296)
            
HaveAT4[iOwner] = false;
            
entity_set_model(entAT4Model_W)
            
            return 
FMRES_SUPERCEDE
        
}
    }
    return 
FMRES_IGNORED
}

public 
at4cs_reload(id) {
    if(
is_reloading[id])
    return
    
    
is_reloading[id] = 1
    set_weapon_anim
(id3)
    
    
set_task(0.1"checking_reload"id+TASK_CHECKRELOAD__"b")
    
set_task(4.0"reload_complete"id+TASK_RELOAD)
}

public 
checking_reload(id) {
    
id -= TASK_CHECKRELOAD
    
    
if(cs_get_user_zoom(id))
    
cs_set_user_zoom(idCS_RESET_ZOOM1)    
    
    if(
get_user_weapon(id) != CSW_AT4CS || !HaveAT4[id]) {
        
remove_task(id+TASK_CHECKRELOAD)
        
remove_task(id+TASK_RELOAD)
        
        
is_reloading[id] = 0
    
}
}

public 
reload_complete(id) {
    
id -= TASK_RELOAD
    
    
if(!is_reloading[id])
    return
    
    
remove_task(id+TASK_CHECKRELOAD)    
    
    static 
at4cs
    at4cs 
fm_find_ent_by_owner(-1weapon_at4csid)    
    
    
cs_set_weapon_ammo(at4cs1)
    
cs_set_user_bpammo(idCSW_AT4CScs_get_user_bpammo(idCSW_AT4CS) - 1)
    
is_reloading[id] = 0
}

public 
AT4_Reload(ent) {
    static 
id
    id 
pev(entpev_owner)
    
    if(
is_user_connected(id) && is_user_alive(id)) {
        if(
get_user_weapon(id) == CSW_AT4CS && HaveAT4[id]) {
            
            static 
Float:CurTime
            CurTime 
get_gametime()        
            
            if(!
is_reloading[id]) {
                if(
cs_get_user_bpammo(idCSW_AT4CS) > 0) {
                    if(
CurTime 1.0 g_lastfire[id]) {
                        
at4cs_reload(id)
                        
g_lastfire[id] = CurTime
                    
}
                }
            }
        }
    }
    return 
HAM_SUPERCEDE
}

public 
AT4_Think(ent) {
    if(!
pev_valid(ent))
    return

    static 
Float:Origin[3]
    
pev(entpev_originOrigin)
    
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_SPRITE)
    
engfunc(EngFunc_WriteCoordOrigin[0])
    
engfunc(EngFunc_WriteCoordOrigin[1])
    
engfunc(EngFunc_WriteCoordOrigin[2])
    
write_short(g_smoke_id
    
write_byte(2
    
write_byte(200)
    
message_end()
    
    if(
pev(entpev_iuser4) == 0) {
        static 
Victim
        Victim 
FindClosesEnemy(ent)
        
        if(
is_user_alive(Victim)) {
            
set_pev(entpev_iuser4Victim)
        }
    } 
    else {
        static 
Victim
        Victim 
pev(entpev_iuser4)
        
        if(
is_user_alive(Victim)) {
            static 
Float:VicOrigin[3]
            
pev(Victimpev_originVicOrigin)
            
            
turn_to_target(entOriginVictimVicOrigin)
            
hook_ent(entVictim500.0)
        } 
        else {
            
set_pev(entpev_iuser40)
        }
    }    
    
set_pev(entpev_nextthinkhalflife_time() + 0.075)
}

public 
AT4_Touch(rockettouch) {
    if(!
pev_valid(rocket))
    return    
    
    if(
is_user_alive(touch) && pev(rocketpev_owner) == touch)
    return
    
    static 
Float:Origin[3]
    
pev(rocketpev_originOrigin)        
    
    
message_begin(MSG_BROADCAST ,SVC_TEMPENTITY)
    
write_byte(TE_EXPLOSION)
    
engfunc(EngFunc_WriteCoordOrigin[0])
    
engfunc(EngFunc_WriteCoordOrigin[1])
    
engfunc(EngFunc_WriteCoordOrigin[2])
    
write_short(g_spr_exp)    // sprite index
    
write_byte(20)    // scale in 0.1's
    
write_byte(30)    // framerate
    
write_byte(0)    // flags
    
message_end()
    
    static 
owneriVictim
    
    iVictim 
= -1
    owner 
pev(rocketpev_owner)    

    while((
iVictim find_ent_in_sphere(iVictimOriginget_pcvar_float(cvar_radius))) != 0) {
        if((
iVictim 32) && is_user_alive(iVictim) && iVictim != owner) {
            new 
Float:MaxDamageFloat:Damage
            
            MaxDamage 
get_pcvar_float(cvar_maxdamage)
            
Damage random_float(MaxDamage random_float(0.0100.0), MaxDamage random_float(0.0100.0))
            
            
ExecuteHam(Ham_TakeDamageiVictim0owner0DMG_BULLET)
            
            static 
health
            health 
get_user_health(iVictim)
            
            if(
health Damage >= 1) {
                
fm_set_user_health(iVictimhealth floatround(Damage))
            }
            else {
                
death_message(owneriVictim1)
            }            
        }
    }    
    
engfunc(EngFunc_RemoveEntityrocket)
}

public 
create_rocket(id) {
    new 
entFloat:Origin[3], Float:Angles[3], Float:Velocity[3]
    
    
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
engfunc(EngFunc_GetAttachmentid0OriginAngles)
    
pev(idpev_anglesAngles)
    
    
set_pev(entpev_originOrigin)
    
set_pev(entpev_anglesAngles)
    
set_pev(entpev_solid2)
    
set_pev(entpev_movetype5)
    
set_pev(entpev_classname"at4ex_rocket")
    
set_pev(entpev_ownerid)
    
engfunc(EngFunc_SetModelentAT4Rocket)
    
    
set_pev(entpev_mins, {-1.0, -1.0, -1.0})
    
set_pev(entpev_maxs, {1.01.01.0})
    
    
velocity_by_aim(id1750Velocity)
    
set_pev(entpev_velocityVelocity)
    
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_BEAMFOLLOW)         // TE id
    
write_short(ent)                 // entity:attachment to follow
    
write_short(g_spr_trail)         // sprite index
    
write_byte(25)                     // life in 0.1's
    
write_byte(2)                     // line width in 0.1's
    
write_byte(255)                    // r
    
write_byte(255)                    // g
    
write_byte(255)                 // b
    
write_byte(200)                    // brightness
    
message_end()    
    
    
set_pev(entpev_iuser40)
    
set_pev(entpev_nextthinkhalflife_time() + 0.1)
}

public 
hook_weapon(id) {
    
engclient_cmd(idweapon_at4cs)
}

public 
get_user_at4(id) {
    return 
HaveAT4[id];
}

public 
set_user_at4(idat4) {
    if(
at4) {
        if(!
HaveAT4[id]) {
            
drop_primary_weapons(id);
            
HaveAT4[id] = true;
            
is_reloading[id] = 0
            g_aiming
[id] = 0
            fm_give_item
(idweapon_at4cs);
            new 
Clip fm_get_user_weapon_entity(idCSW_AT4CS);
            
cs_set_weapon_ammo(Clip1);
            
cs_set_user_bpammo(idCSW_AT4CS50)
        }
    }
    else {
        if(
HaveAT4[id]) {
            
HaveAT4[id] = false;
        }
    }
}

//-------------------------------------------------------------------------//
//=============================| Stocks |=================================//
//-----------------------------------------------------------------------//
stock get_offset_origin_body(ent,const Float:offset[3],Float:origin[3]) {
    if(!
pev_valid(ent))
    return 
0;
    
    new 
Float:angle[3]
    
pev(ent,pev_angles,angle)
    
    
pev(ent,pev_origin,origin)
    
    
origin[0] += floatcos(angle[1],degrees) * offset[0]
    
origin[1] += floatsin(angle[1],degrees) * offset[0]
    
    
origin[1] += floatcos(angle[1],degrees) * offset[1]
    
origin[0] += floatsin(angle[1],degrees) * offset[1]
    
    return 
1;
}

stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speedFloat:new_velocity[3]) {
    
new_velocity[0] = origin2[0] - origin1[0]
    
new_velocity[1] = origin2[1] - origin1[1]
    
new_velocity[2] = origin2[2] - origin1[2]
    new 
Float:num floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
    
new_velocity[0] *= num
    new_velocity
[1] *= num
    new_velocity
[2] *= num
    
    
return 1;
}

stock entity_set_aim(ent,const Float:origin2[3],bone=0) {
    if(!
pev_valid(ent))
    return 
0;
    
    static 
Float:origin[3]
    
origin[0] = origin2[0]
    
origin[1] = origin2[1]
    
origin[2] = origin2[2]
    
    static 
Float:ent_origin[3], Float:angles[3]
    
    if(
bone)
    
engfunc(EngFunc_GetBonePosition,ent,bone,ent_origin,angles)
    else
    
pev(ent,pev_origin,ent_origin)
    
    
origin[0] -= ent_origin[0]
    
origin[1] -= ent_origin[1]
    
origin[2] -= ent_origin[2]
    
    static 
Float:v_length
    v_length 
vector_length(origin)
    
    static 
Float:aim_vector[3]
    
aim_vector[0] = origin[0] / v_length
    aim_vector
[1] = origin[1] / v_length
    aim_vector
[2] = origin[2] / v_length
    
    
static Float:new_angles[3]
    
vector_to_angle(aim_vector,new_angles)
    
    
new_angles[0] *= -1
    
    
if(new_angles[1]>180.0new_angles[1] -= 360
    
if(new_angles[1]<-180.0new_angles[1] += 360
    
if(new_angles[1]==180.0 || new_angles[1]==-180.0new_angles[1]=-179.999999
    
    set_pev
(ent,pev_angles,new_angles)
    
set_pev(ent,pev_fixangle,1)
    
    return 
1;
}


stock set_weapon_anim(idanim) {
    
set_pev(idpev_weaponanimanim)

    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM_id)
    
write_byte(anim)
    
write_byte(pev(id,pev_body))
    
message_end()
}

stock death_message(KillerVictimScoreBoard) {
    
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET)
    
ExecuteHamB(Ham_KilledVictimKiller2)
    
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT)
    
    
make_deathmsg(KillerVictim0"")

    if (
ScoreBoard) {
        
message_begin(MSG_BROADCASTget_user_msgid("ScoreInfo"))
        
write_byte(Killer)                         // id
        
write_short(pev(Killerpev_frags))     // frags
        
write_short(cs_get_user_deaths(Killer)) // deaths
        
write_short(0)                             // class?
        
write_short(get_user_team(Killer))         // team
        
message_end()
        
        
message_begin(MSG_BROADCASTget_user_msgid("ScoreInfo"))
        
write_byte(Victim)                             // id
        
write_short(pev(Victimpev_frags))         // frags
        
write_short(cs_get_user_deaths(Victim))     // deaths
        
write_short(0)                                 // class?
        
write_short(get_user_team(Victim))             // team
        
message_end()
    }
}

stock FindClosesEnemy(entid) {
    new 
Float:Dist
    
new Float:maxdistance 300.0
    
new indexid 0    
    
    
for(new 1<= get_maxplayers(); i++){
        if(
is_user_alive(i) && is_valid_ent(i) && can_see_fm(entidi)
                && 
pev(entidpev_owner) != && cs_get_user_team(pev(entidpev_owner)) != cs_get_user_team(i)) {
            
Dist entity_range(entidi)
            if(
Dist <= maxdistance) {
                
maxdistance Dist
                indexid 
i
                
                
return indexid
            
}
        }    
    }    
    return 
0
}

stock bool:can_see_fm(entindex1entindex2) {
    if (!
entindex1 || !entindex2)
    return 
false

    
if (pev_valid(entindex1) && pev_valid(entindex1)) {
        new 
flags pev(entindex1pev_flags)
        if (
flags EF_NODRAW || flags FL_NOTARGET
        return 
false

        
new Float:lookerOrig[3]
        new 
Float:targetBaseOrig[3]
        new 
Float:targetOrig[3]
        new 
Float:temp[3]

        
pev(entindex1pev_originlookerOrig)
        
pev(entindex1pev_view_ofstemp)
        
lookerOrig[0] += temp[0]
        
lookerOrig[1] += temp[1]
        
lookerOrig[2] += temp[2]

        
pev(entindex2pev_origintargetBaseOrig)
        
pev(entindex2pev_view_ofstemp)
        
targetOrig[0] = targetBaseOrig [0] + temp[0]
        
targetOrig[1] = targetBaseOrig [1] + temp[1]
        
targetOrig[2] = targetBaseOrig [2] + temp[2]

        
engfunc(EngFunc_TraceLinelookerOrigtargetOrig0entindex10//  checks the had of seen player
        
if (get_tr2(0TraceResult:TR_InOpen) && get_tr2(0TraceResult:TR_InWater)) {
            return 
false
        

        else  {
            new 
Float:flFraction
            get_tr2
(0TraceResult:TR_flFractionflFraction)
            if (
flFraction == 1.0 || (get_tr2(0TraceResult:TR_pHit) == entindex2)) {
                return 
true
            
}
            else {
                
targetOrig[0] = targetBaseOrig [0]
                
targetOrig[1] = targetBaseOrig [1]
                
targetOrig[2] = targetBaseOrig [2]
                
engfunc(EngFunc_TraceLinelookerOrigtargetOrig0entindex10//  checks the body of seen player
                
get_tr2(0TraceResult:TR_flFractionflFraction)
                if (
flFraction == 1.0 || (get_tr2(0TraceResult:TR_pHit) == entindex2)) {
                    return 
true
                
}
                else {
                    
targetOrig[0] = targetBaseOrig [0]
                    
targetOrig[1] = targetBaseOrig [1]
                    
targetOrig[2] = targetBaseOrig [2] - 17.0
                    engfunc
(EngFunc_TraceLinelookerOrigtargetOrig0entindex10//  checks the legs of seen player
                    
get_tr2(0TraceResult:TR_flFractionflFraction)
                    if (
flFraction == 1.0 || (get_tr2(0TraceResult:TR_pHit) == entindex2)) {
                        return 
true
                    
}
                }
            }
        }
    }
    return 
false
}

stock turn_to_target(entFloat:Ent_Origin[3], targetFloat:Vic_Origin[3])  {
    if(
target)  {
        new 
Float:newAngle[3]
        
entity_get_vector(entEV_VEC_anglesnewAngle)
        new 
Float:Vic_Origin[0] - Ent_Origin[0]
        new 
Float:Vic_Origin[1] - Ent_Origin[1]

        new 
Float:radians floatatan(z/xradian)
        
newAngle[1] = radians * (180 3.14)
        if (
Vic_Origin[0] < Ent_Origin[0])
        
newAngle[1] -= 180.0
        
        entity_set_vector
(entEV_VEC_anglesnewAngle)
    }
}

stock hook_ent(entvictimFloat:speed) {
    static 
Float:fl_Velocity[3]
    static 
Float:VicOrigin[3], Float:EntOrigin[3]

    
pev(entpev_originEntOrigin)
    
pev(victimpev_originVicOrigin)
    
    static 
Float:distance_f
    distance_f 
get_distance_f(EntOriginVicOrigin)

    if (
distance_f 10.0) {
        new 
Float:fl_Time distance_f speed

        fl_Velocity
[0] = (VicOrigin[0] - EntOrigin[0]) / fl_Time
        fl_Velocity
[1] = (VicOrigin[1] - EntOrigin[1]) / fl_Time
        fl_Velocity
[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time
    

    else {
        
fl_Velocity[0] = 0.0
        fl_Velocity
[1] = 0.0
        fl_Velocity
[2] = 0.0
    
}

    
entity_set_vector(entEV_VEC_velocityfl_Velocity)
}

stock drop_primary_weapons(Player) {
    static 
weapons[32], numiweaponid;
    
num 0;
    
get_user_weapons(Playerweaponsnum);
    
    for(
0numi++) {
        
weaponid weapons [i];
        
        if(((
1<<weaponid) & PRIMARY_WEAPONS_BITSUM)) {
            static 
wname[32];
            
get_weaponname(weaponidwnamecharsmax(wname));
            
            
engclient_cmd(Player"drop"wname);
        }
    }
}

stock ColorChat(const id, const input[], any:...) {
    new 
count 1players[32];
    static 
msg[191];
    
vformat(msg190input3);
    
    
replace_all(msg190"!g""^4");
    
replace_all(msg190"!y""^1");
    
replace_all(msg190"!t""^3");
    
    if(
idplayers[0] = id;
    else 
get_players(playerscount"ch"); {
        for(new 
0counti++) {
            if(
is_user_connected(players[i])) {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i]);
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    } 

__________________
edon1337 is offline
DON KHAN 1
Senior Member
Join Date: Mar 2019
Location: Pakistan
Old 08-19-2019 , 10:48   Re: CMD for SHOP
Reply With Quote #4

i thought its a hide plugin, i had the hide words plugins which i find from alliedmodders but its in my pc and my pc have some issue.


BTW this plugin can be use too

PHP Code:
#include <amxmodx>

public plugin_init()
{
    
register_plugin"ChatCmdBlocker""0.1""LegacyCode" )

    
register_clcmd"say""handleBlockCmdOutput" )
    
register_clcmd"say_team""handleBlockCmdOutput" )
}

public 
handleBlockCmdOutputid )
{
    new const 
a_ChatCommands[][] =
    {
        
"thetime",
        
"/rank",
        
"/top15",
        
"/hp",
        
"/nextmap",
        
"/timeleft"
    
}

    new 
s_Message[192], s_ChatCmd[16]
    
read_argss_Messagecharsmaxs_Message ) )
    
remove_quotess_Message )
    
trims_Message )

    if ( !
s_Message[0] || !is_user_connectedid ) )
        return 
PLUGIN_HANDLED

    copyc
s_ChatCmdcharsmaxs_ChatCmd ), s_Message' ' )

    for ( new 
isizeof a_ChatCommandsi++ )
    {
        if ( 
equalis_ChatCmda_ChatCommands[i] ) )
            return 
PLUGIN_HANDLED
    
}

    return 
PLUGIN_CONTINUE

this plugin by LegacyCode
__________________
Facebook
My YouTube
Ro{Y}aL WarLanD CommuniTy
Selling Zombie CSO 4.3 Money System Mod

Last edited by DON KHAN 1; 08-19-2019 at 10:51.
DON KHAN 1 is offline
edon1337
Penguin Enthusiast
Join Date: Jun 2016
Location: Macedonia
Old 08-19-2019 , 10:59   Re: CMD for SHOP
Reply With Quote #5

Quote:
Originally Posted by DON KHAN 1 View Post
i thought its a hide plugin, i had the hide words plugins which i find from alliedmodders but its in my pc and my pc have some issue.


BTW this plugin can be use too

PHP Code:
#include <amxmodx>

public plugin_init()
{
    
register_plugin"ChatCmdBlocker""0.1""LegacyCode" )

    
register_clcmd"say""handleBlockCmdOutput" )
    
register_clcmd"say_team""handleBlockCmdOutput" )
}

public 
handleBlockCmdOutputid )
{
    new const 
a_ChatCommands[][] =
    {
        
"thetime",
        
"/rank",
        
"/top15",
        
"/hp",
        
"/nextmap",
        
"/timeleft"
    
}

    new 
s_Message[192], s_ChatCmd[16]
    
read_argss_Messagecharsmaxs_Message ) )
    
remove_quotess_Message )
    
trims_Message )

    if ( !
s_Message[0] || !is_user_connectedid ) )
        return 
PLUGIN_HANDLED

    copyc
s_ChatCmdcharsmaxs_ChatCmd ), s_Message' ' )

    for ( new 
isizeof a_ChatCommandsi++ )
    {
        if ( 
equalis_ChatCmda_ChatCommands[i] ) )
            return 
PLUGIN_HANDLED
    
}

    return 
PLUGIN_CONTINUE

this plugin by LegacyCode
Why would he use a plugin to block something that he can block by just return PLUGIN_HANDLED in his first plugin????
__________________
edon1337 is offline
DON KHAN 1
Senior Member
Join Date: Mar 2019
Location: Pakistan
Old 08-19-2019 , 13:05   Re: CMD for SHOP
Reply With Quote #6

Bro this plugin will work cuz i have tested in my server.
Well if u want to replace PLUGIN_CONTINUE to PLUGIN_HANDLED on line 29 so u can.
PHP Code:
#include <amxmodx> 

public plugin_init() 

    
register_plugin"ChatCmdBlocker""0.1""LegacyCode" 

    
register_clcmd"say""handleBlockCmdOutput" 
    
register_clcmd"say_team""handleBlockCmdOutput" 


public 
handleBlockCmdOutputid 

    new const 
a_ChatCommands[][] = 
    { 
        
"thetime"
        
"/rank"
        
"/top15"
        
"/hp"
        
"/nextmap"
        
"/timeleft" 
    


    new 
s_Message[192], s_ChatCmd[16
    
read_argss_Messagecharsmaxs_Message ) ) 
    
remove_quotess_Message 
    
trims_Message 

    if ( !
s_Message[0] || !is_user_connectedid ) ) 
        return 
PLUGIN_CONTINUE 

    copyc
s_ChatCmdcharsmaxs_ChatCmd ), s_Message' ' 

    for ( new 
isizeof a_ChatCommandsi++ ) 
    { 
        if ( 
equalis_ChatCmda_ChatCommands[i] ) ) 
            return 
PLUGIN_HANDLED 
    


    return 
PLUGIN_CONTINUE 

it will work too.
__________________
Facebook
My YouTube
Ro{Y}aL WarLanD CommuniTy
Selling Zombie CSO 4.3 Money System Mod
DON KHAN 1 is offline
OciXCrom
Veteran Member
Join Date: Oct 2013
Location: Macedonia
Old 08-19-2019 , 13:06   Re: CMD for SHOP
Reply With Quote #7

Quote:
Well if u want to replace PLUGIN_CONTINUE to PLUGIN_HANDLED on line 29 so u can.
That's not what he meant. You can replace PLUGIN_CONITNUE in PLUGIN_HANDLED in the plugin in the first post.
__________________

Last edited by OciXCrom; 08-19-2019 at 14:05.
OciXCrom is offline
Send a message via Skype™ to OciXCrom
DON KHAN 1
Senior Member
Join Date: Mar 2019
Location: Pakistan
Old 08-19-2019 , 13:14   Re: CMD for SHOP
Reply With Quote #8

k i understand.
__________________
Facebook
My YouTube
Ro{Y}aL WarLanD CommuniTy
Selling Zombie CSO 4.3 Money System Mod
DON KHAN 1 is offline
Pegasus6
Member
Join Date: Nov 2018
Old 08-19-2019 , 17:59   Re: CMD for SHOP
Reply With Quote #9

Quote:
Originally Posted by edon1337 View Post
He's asking to block the /shop message from appearing in chat, not filtering it as a prohibited word.

@OP
Here you go.
PHP Code:
#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <engine>
#include <fun>

#define PLUGIN    "Furien Shop"
#define VERSION    "2.0"
#define AUTHOR "DaNNe."

#define VIP_LEVEL    ADMIN_LEVEL_H

// Pet
#define fm_precache_model(%1)           engfunc(EngFunc_PrecacheModel,%1)
#define fm_precache_sound(%1)           engfunc(EngFunc_PrecacheSound,%1)
#define fm_remove_entity(%1)            engfunc(EngFunc_RemoveEntity, %1)
//#define fm_drop_to_floor(%1)            engfunc(EngFunc_DropToFloor,%1)
#define fm_find_ent_by_class(%1,%2)     engfunc(EngFunc_FindEntityByString, %1, "classname", %2)
#define fm_set_user_gravity(%1,%2)      set_pev(%1,pev_gravity,%2)

#define PET_FLAG                        pev_flTimeStepSound
#define PET_KILLED                      389

static const pet_model[] = "models/stukabat.mdl"
static const pet_sounds[][] = { "bullchicken/bc_die1.wav""bullchicken/bc_die2.wav""bullchicken/bc_die3.wav""bullchicken/bc_idle1.wav""bullchicken/bc_pain3.wav" }
static const 
pet_idle 13
static const pet_run 13
static const pet_die 5
static const Float:pet_idle_speed 0.3
static const Float:pet_run_speed 10.0
static const Float:player_gravity 0.65

// AT4 
#define weapon_at4cs     "weapon_m249"
#define CSW_AT4CS         CSW_M249
#define TASK_CHECKRELOAD 111112
#define TASK_RELOAD 111113

new Float:g_lastfire[33], Float:g_lastaim[33], g_aiming[33],
g_smoke_idg_spr_trailg_spr_expis_reloading[33],
cvar_radiuscvar_maxdamage

new const AT4Model_V[] = "models/FurienShop/v_at4ex.mdl";
new const 
AT4Model_P[] = "models/FurienShop/p_at4ex.mdl";
new const 
AT4Model_W[] = "models/FurienShop/w_at4ex.mdl";
new const 
AT4Rocket[] = "models/FurienShop/s_rocket.mdl";

new const 
AT4Sound[][] = {
    
"weapons/at4-1.wav",
    
"weapons/at4_clipin1.wav",
    
"weapons/at4_clipin2.wav",
    
"weapons/at4_clipin3.wav",
    
"weapons/at4_draw.wav" 
};

// Super Knifes
new SuperKnifeX2_Model[] = "models/FurienShop/v_knife_human.mdl";
new 
SuperKnifeX3_Model[] = "models/FurienShop/v_ignes.mdl";
new 
SuperKnifeVIP_Model[] = "models/FurienShop/v_superknife_vip.mdl";

// Natives
native fcs_get_user_credits(id)
native fcs_set_user_credits(idamount)

//Furien Detector
new DetectorSprite;
new 
PRIMARY_WEAPONS_BITSUM = (1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90);
new 
SECONDARY_WEAPONS_BITSUM = (1<<CSW_GLOCK18)|(1<<CSW_USP)|(1<<CSW_P228)|(1<<CSW_DEAGLE)|(1<<CSW_FIVESEVEN)|(1<<CSW_ELITE);

//Bools
new bool:HaveSuperKnifeX2[33], bool:HaveSuperKnifeX3[33], bool:HaveSuperKnifeVip[33], bool:HaveDetector[33], bool:HaveNoFlash[33], bool:HaveAT4[33

//PET
new ItemPET[33], HavePET[33], PETAtSpawn[33]
new 
Float:item_leaptime[33]
new 
bool:g_has_speed[33]

new 
Prefix[] = "[FurienShop]";
new 
Menu;

public 
plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR
    
    
register_clcmd("say shop""CmdShop");
    
register_clcmd("say_team shop""CmdShop");
    
register_clcmd("say /shop""CmdShop");
    
register_clcmd("say_team /shop""CmdShop");
    
    
RegisterHam(Ham_Spawn"player""HAM_Spawn_Post");
    
RegisterHam(Ham_TakeDamage"player""HAM_TakeDamage");
    
    
register_event("CurWeapon""EVENT_CurWeapon""be""1=1");
    
register_event("DeathMsg""EVENT_Death""a");
    
register_event("HLTV""HLTV_EVENT_NewRound""a""1=0""2=0");
    
register_message(get_user_msgid("ScreenFade"), "MSG_ScreenFade")
    
    
register_forward(FM_PlayerPreThink"FWD_PreThink");
    
register_forward(FM_Think"FWD_Think");
    
    
register_forward(FM_UpdateClientData"AT4_UpdateClientData_POST"1)
    
register_forward(FM_CmdStart"AT4_CMDStart")
    
register_forward(FM_SetModel"AT4_WorldModel")
    
    
register_think("at4ex_rocket""AT4_Think")
    
register_touch("at4ex_rocket""*""AT4_Touch")
    
    
RegisterHam(Ham_Weapon_Reloadweapon_at4cs"AT4_Reload")
    
RegisterHam(Ham_Item_AddToPlayerweapon_at4cs"AT4_AddToPlayer"1)
    
    
cvar_radius register_cvar("zp_at4cs_radius""300.0")
    
cvar_maxdamage register_cvar("zp_at4cs_maxdamage""70.0")
    
    
register_clcmd("weapon_at4cs""hook_weapon")    
}

public 
plugin_precache() {
    
precache_model(SuperKnifeX2_Model);
    
precache_model(SuperKnifeX3_Model);
    
precache_model(SuperKnifeVIP_Model);
    
precache_model(AT4Model_V)
    
precache_model(AT4Model_P)
    
precache_model(AT4Model_W)
    
precache_model(AT4Rocket)
    
fm_precache_model(pet_model)
    
    
engfunc(EngFunc_PrecacheGeneric"sprites/FurienShop/weapon_at4cs.txt")
    
engfunc(EngFunc_PrecacheGeneric"sprites/FurienShop/at4cs.spr")    
    
    
g_smoke_id precache_model("sprites/FurienShop/rainsplash.spr")
    
g_spr_trail precache_model("sprites/FurienShop/xbeam3.spr")
    
g_spr_exp precache_model("sprites/FurienShop/zerogxplode.spr")
    
DetectorSprite precache_model("sprites/FurienShop/Detector.spr")
    
    new 
i;
    for(
0sizeof pet_soundsi++)
    
fm_precache_sound(pet_sounds[i])
    
    for(
0sizeof(AT4Sound); i++)
    
engfunc(EngFunc_PrecacheSoundAT4Sound[i])
    
    
}

public 
plugin_natives() {
    
register_native("get_user_at4""get_user_at4"1)
    
register_native("set_user_at4""set_user_at4"1)
}

public 
HAM_Spawn_Post(id) {
    if(
is_user_connected(id)) {
        
HaveNoFlash[id] = false;
        
HaveDetector[id] = false;
        
HaveAT4[id] = false;
        
HaveSuperKnifeVip[id] = false;
        
set_user_at4(idfalse)
        
drop_primary_weapons(id)
        if(
get_user_team(id) == 2) {
            
HaveSuperKnifeX2[id] = false;
            
HaveSuperKnifeX3[id] = false;
        }
        if(
get_user_team(id) != 2) {
            
kill_pet(id)
            
HavePET[id] = 0        
        
}
        if(
HavePET[id]) {
            
fm_set_user_health(idget_user_health(id) + 50)
            
fm_set_user_armor(idget_user_armor(id) + 50)
            
g_has_speed[id] = true
        
}
        else if(
PETAtSpawn[id]) {
            
create_pet(id)
            
PETAtSpawn[id] = 0
            g_has_speed
[id] = true
        
}
    }
}

public 
HAM_TakeDamage(VictimInflictorAttackerFloat:Damage) {
    if(
is_user_connected(Attacker)) {
        if(
get_user_weapon(Attacker) == CSW_KNIFE) {
            if(
HaveSuperKnifeX2[Attacker])
            
SetHamParamFloat(4Damage 2.0)
            if(
HaveSuperKnifeX3[Attacker])
            
SetHamParamFloat(4Damage 3.0)
            if(
HaveSuperKnifeVip[Attacker])
            
SetHamParamFloat(4Damage 4.0)
        }
    }
}

public 
EVENT_CurWeapon(id) {
    if(
get_user_weapon(id) == CSW_KNIFE) {
        if(
HaveSuperKnifeX2[id])
        
set_pev(idpev_viewmodel2SuperKnifeX2_Model)
        if(
HaveSuperKnifeX3[id])
        
set_pev(idpev_viewmodel2SuperKnifeX3_Model)
        if(
HaveSuperKnifeVip[id])
        
set_pev(idpev_viewmodel2SuperKnifeVIP_Model)    
    }
    if(
get_user_weapon(id) == CSW_AT4CS) {
        if(
HaveAT4[id]) {
            
set_pev(idpev_viewmodel2AT4Model_V)
            
set_pev(idpev_weaponmodel2AT4Model_P)
        }
    }
}

public 
HLTV_EVENT_NewRound() {
    new 
entid = -1
    
while((entid fm_find_ent_by_class(entid"zp_bat"))) {
        if(
pev(entid,PET_FLAG) == PET_KILLED)
        
fm_remove_entity(entid)             
    }
    
remove_entity_name("at4ex_rocket")    
}

public 
EVENT_Death() {
    new 
Victim read_data(2)
    
HaveSuperKnifeX2[Victim] = false;
    
HaveSuperKnifeX3[Victim] = false;
    
    if(
HavePET[Victim]) {
        
kill_pet(Victim)
        
HavePET[Victim] = 0
    
}
    
    if(
get_user_team(Victim) == 1)
    
HavePET[Victim] = 0
    
if(g_has_speed[Victim])
    
g_has_speed[Victim] = false
}

public 
MSG_ScreenFade(msgiddestid) {
    if(
HaveNoFlash[id]) {
        static 
data[4]
        
data[0] = get_msg_arg_int(4)
        
data[1] = get_msg_arg_int(5)
        
data[2] = get_msg_arg_int(6)
        
data[3] = get_msg_arg_int(7)
        
        if(
data[0] == 255 && data[1] == 255 && data[2] == 255 && data[3] > 199)
        return 
PLUGIN_HANDLED
    
}
    return 
PLUGIN_CONTINUE
}

public 
create_pet(id) {
    if(!
is_user_alive(id)) {
        
ColorChat(id"!t%s!g PET-ul iti va aparea runda urmatoare !"Prefix)
        
PETAtSpawn[id] = 1
        
return PLUGIN_HANDLED
    
}      
    else {
        
ItemPET[id] = engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString,"info_target"))
        
set_pev(ItemPET[id],pev_classname,"zp_bat")
        
        
engfunc(EngFunc_SetModel,ItemPET[id],pet_model)
        
        new 
Float:origin[3]
        
pev(id,pev_origin,origin)                      
        
        
set_pev(ItemPET[id],pev_origin,origin)
        
set_pev(ItemPET[id],pev_solid,SOLID_TRIGGER)
        
set_pev(ItemPET[id],pev_movetype,MOVETYPE_FLY)
        
set_pev(ItemPET[id],pev_owner,33)
        
set_pev(ItemPET[id],pev_nextthink,1.0)
        
set_pev(ItemPET[id],pev_sequence,0)
        
set_pev(ItemPET[id],pev_gaitsequence,0)
        
set_pev(ItemPET[id],pev_framerate,1.0)
        
        
set_pev(ItemPET[id], pev_renderfxkRenderFxGlowShell)
        
set_pev(ItemPET[id], pev_rendercolorFloat:{0.00.0200.0})
        
        
fm_set_user_health(idget_user_health(id) + 50)
        
fm_set_user_armor(idget_user_armor(id) + 50)
        
        
engfunc(EngFunc_EmitSound,ItemPET[id],CHAN_AUTO,pet_sounds[random_num(0,sizeof pet_sounds 1)],1.01.20PITCH_NORM)              
        
        
HavePET[id] = 1
        g_has_speed
[id] = true
    
}
    return 
PLUGIN_HANDLED
}

public 
kill_pet(id) {
    if(
pev_valid(ItemPET[id])) {
        
set_pev(ItemPET[id],pev_sequence,pet_die)
        
set_pev(ItemPET[id],pev_gaitsequence,pet_die)
        
set_pev(ItemPET[id],pev_framerate,1.0)
        
        
set_pev(ItemPET[id],PET_FLAG,PET_KILLED)
        
        
fm_drop_to_floor(ItemPET[id])
        
        
HavePET[id] = 0
        g_has_speed
[id] = false
    
}      
    
ItemPET[id] = 0
}

public 
FWD_PreThink(id) {
    if(
is_user_connected(id) && is_user_alive(id)) {
        if(
get_user_team(id) == && HaveDetector[id]) {
            static 
TargetBodyWeapon;
            
            
get_user_aiming(idTargetBody);
            
Weapon get_user_weapon(id);
            
            if((
1<<Weapon) & PRIMARY_WEAPONS_BITSUM || (1<<Weapon) & SECONDARY_WEAPONS_BITSUM) {
                static 
Origin[3];
                
get_user_origin(idOrigin3);
                
                
message_begin(MSG_BROADCASTSVC_TEMPENTITY);
                
write_byte(TE_BEAMENTPOINT);
                
write_short(id 0x1000);
                
write_coord(Origin[0]);
                
write_coord(Origin[1]);
                
write_coord(Origin[2]);
                
write_short(DetectorSprite); 
                
write_byte(0);
                
write_byte(10);
                
write_byte(1);
                
write_byte(5);
                
write_byte(0);
                if(
is_user_alive(Target) && get_user_team(Target) == 1) {
                    
write_byte(150);
                    
write_byte(0);
                    
write_byte(0);
                }
                else {
                    
write_byte(0);
                    
write_byte(150);
                    
write_byte(0);
                }
                
write_byte(250);
                
write_byte(25);
                
message_end();
            }        
        }
        if(
allowed_leap(id)) {
            static 
Float:velocity[3]
            
velocity_by_aim(id500velocity)
            
velocity[2] = 300.0
            set_pev
(idpev_velocityvelocity)  
            
item_leaptime[id] = get_gametime()
        }
    }
}

public 
FWD_Think(ent) {
    for(new 
0<= get_maxplayers(); i++) {
        if(
ent == ItemPET[i]) {
            static 
Float:origin[3]
            static 
Float:origin2[3]
            static 
Float:velocity[3]
            
pev(ent,pev_origin,origin2)
            
get_offset_origin_body(i,Float:{50.0,0.0,0.0},origin)
            
            if(
get_distance_f(origin,origin2) > 300.0)
            
set_pev(ent,pev_origin,origin)
            
            else if(
get_distance_f(origin,origin2) > 80.0) {
                
get_speed_vector(origin2,origin,250.0,velocity)
                
set_pev(ent,pev_velocity,velocity)
                if(
pev(ent,pev_sequence) != pet_run || pev(ent,pev_framerate) != pet_run_speed) {
                    
set_pev(ent,pev_sequence,pet_run)
                    
set_pev(ent,pev_gaitsequence,pet_run)
                    
set_pev(ent,pev_framerate,pet_run_speed)
                }
            }
            
            else if(
get_distance_f(origin,origin2) < 75.0) {
                if(
pev(ent,pev_sequence) != pet_idle || pev(ent,pev_framerate) != pet_idle_speed) {
                    
set_pev(ent,pev_sequence,pet_idle)
                    
set_pev(ent,pev_gaitsequence,pet_idle)
                    
set_pev(ent,pev_framerate,pet_idle_speed)
                }
                
set_pev(ent,pev_velocity,Float:{0.0,0.0,0.0})
            }
            
pev(i,pev_origin,origin)
            
origin[2] = origin2[2]
            
entity_set_aim(ent,origin)                     
            
set_pev(ent,pev_nextthink,1.0)
            break
        }
    }
}

public 
allowed_leap(id) {      
    if(!
HavePET[id])
    return 
false
    
    
if(!(pev(idpev_flags) & FL_ONGROUND) || fm_get_speed(id) < 80)
    return 
false
    
    
static buttons
    buttons 
pev(idpev_button)
    
    if(!
is_user_bot(id) && (!(buttons IN_JUMP) || !(buttons IN_DUCK)))
    return 
false
    
    
if(get_gametime() - item_leaptime[id] < 3)
    return 
false
    
    
return true
}

public 
is_a_player(ent) {
    if(
ent && ent 33)
    return 
true
    
    
return false
}

public 
remove_pet(ent) {
    if(
pev_valid(ent))
    
fm_remove_entity(ent)
}

public 
CmdShop(id)
{
    if(!
is_user_alive(id))
    {
        
ColorChat(id"!t%s!g Nu poti folosi shopul cat timp esti mort !"Prefix)
        return 
PLUGIN_HANDLED;
    }
    
    switch(
get_user_team(id))
    {
    case 
1FurienShop(id)
    case 
2AntiFurienShop(id)
    }
    return 
PLUGIN_HANDLED;
}

public 
FurienShop(id) {
    if(
is_user_alive(id) && get_user_team(id) == 1) {
        new 
Title[128]
        
formatex(Titlesizeof(Title)-1"\rCredite: \y%d\r^n\rFurien Shop:"fcs_get_user_credits(id))
        
Menu menu_create(Title"FurienHandler")
        
        if(
HaveSuperKnifeX2[id])
        
menu_additem(Menu"\dAssassin Knife [X2 DMG]\w - \rAi deja""1"0)
        else {
            if(
fcs_get_user_credits(id) >= 10)
            
menu_additem(Menu"\wAssassin Knife\r [X2 DMG]\w - \r10 Credite""1"0)
            else 
            
menu_additem(Menu"\dAssassin Knife [X2 DMG]\w - \r10 Credite""1"0)
        }
        
        if(
HaveSuperKnifeX3[id])
        
menu_additem(Menu"\dNemesis Knife [X3 DMG]\w - \rAi deja""2"0)
        else {
            if(
fcs_get_user_credits(id) >= 20)
            
menu_additem(Menu"\wNemesis Knife\r [X3 DMG]\w - \r20 Credite""2"0)
            else 
            
menu_additem(Menu"\dNemesis Knife [X3 DMG]\w - \r20 Credite""2"0)
        }
        
        if(
get_user_health(id) >= 250
        
menu_additem(Menu"\dHealth [+50]\w -\r Ai viata maxima""3"0)
        else {
            if(
fcs_get_user_credits(id) >= 3)
            
menu_additem(Menu"\wHealth \r[+50]\w - \r3 Credite""3"0)
            else 
            
menu_additem(Menu"\dHealth [+50]\w - \r3 Credite""3"0)
        }
        
        if(
get_user_armor(id) >= 250
        
menu_additem(Menu"\dArmor [+50]\w -\r Ai armura maxima""4"0)
        else {
            if(
fcs_get_user_credits(id) >= 3)
            
menu_additem(Menu"\wArmor \r[+50]\w - \r3 Credite""4"0)
            else 
            
menu_additem(Menu"\dArmor [+50]\w - \r3 Credite""4"0)
        }            
        
        if(
HaveNoFlash[id])
        
menu_additem(Menu"\dNo Flash\w - \rAi deja""5"0)
        else {
            if(
fcs_get_user_credits(id) >= 5)
            
menu_additem(Menu"\wNo Flash - \r5 Credite""5"0)
            else 
            
menu_additem(Menu"\dNo Flash\w - \r5 Credite""5"0)
        }
        
        if(
user_has_weapon(idCSW_HEGRENADE))
        
menu_additem(Menu"\dHe grenade\w - \rAi deja""6"0)
        else {
            if(
fcs_get_user_credits(id) >= 25)
            
menu_additem(Menu"\wHe grenade - \r25 Credite""6"0)
            else 
            
menu_additem(Menu"\dHe grenade\w - \r25 Credite""6"0)
        }
        
        if(
user_has_weapon(idCSW_SMOKEGRENADE))
        
menu_additem(Menu"\dFrost nade\w - \rAi deja""7"0)
        else {
            if(
fcs_get_user_credits(id) >= 20)
            
menu_additem(Menu"\wFrost nade - \r20 Credite""7"0)
            else 
            
menu_additem(Menu"\dFrost nade\w - \r20 Credite""7"0)
        }
        
        if(
get_user_flags(id) & VIP_LEVEL) {
            if(
HaveSuperKnifeVip[id])
            
menu_additem(Menu"\dUltimate Knife [X4 DMG] + 250 HP&AP\w - \rAi deja""8"0)
            else {
                if(
fcs_get_user_credits(id) >= 30)
                
menu_additem(Menu"\wUltimate Knife [X4 DMG] + 250 HP&AP\w - \r30 Credite""8"0)
                else 
                
menu_additem(Menu"\dUltimate Knife [X4 DMG] + 250 HP&AP\w - \r30 Credite""8"0)    
            }
        }
        else 
        
menu_additem(Menu"\dUltimate Knife [X4 DMG] + 250 HP&AP\w - \rOnly V.I.P""8"0)
        
        
menu_setprop(MenuMPROP_EXITMEXIT_ALL);
        
menu_display(idMenu0);
    }
}

public 
FurienHandler(idmenuitem) {
    if(
item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != 1) {
        
menu_destroy(menu);
        
        return 
PLUGIN_HANDLED;
    }
    new 
Data[6], Name[64];
    new 
AccessCallBack;
    
menu_item_getinfo(menuitemAccessData,5Name63CallBack);
    new 
Key str_to_num(Data);
    switch(
Key) {
    case 
1: {
            if(
HaveSuperKnifeX2[id]) {
                
ColorChat(id"!t%s!g Ai deja!t Assasin Knife [X2 DMG]!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 10 
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t Assassin Knife [X2 DMG]!g !"Prefix);
                    return 
1;
                }
                else {
                    
HaveSuperKnifeX2[id] = true;
                    
HaveSuperKnifeX3[id] = false;
                    
HaveSuperKnifeVip[id] = false;
                    
EVENT_CurWeapon(id);
                    
fcs_set_user_credits(idCredits);
                    
ColorChat(id"!t%s!g Ai cumparat!t Assassin Knife [X2 DMG] !gpentru 10 credite!g !"Prefix);
                }
            }
        }
    case 
2: {
            if(
HaveSuperKnifeX3[id]) {
                
ColorChat(id"!t%s!g Ai deja!t Nemesis Knife [X3 DMG]!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 20 
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t Nemesis Knife [X3 DMG]!g !"Prefix);
                    return 
1;
                }
                else {
                    
HaveSuperKnifeX3[id] = true;
                    
EVENT_CurWeapon(id);
                    
fcs_set_user_credits(idCredits);
                    
ColorChat(id"!t%s!g Ai cumparat!t Nemesis Knife [X3 DMG] !gpentru 20 de credite!g !"Prefix);
                }
            }
        }
    case 
3: {
            if(
get_user_health(id) >= 250) {
                
ColorChat(id"!t%s!g Ai deja!t 250 health!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t +50 Health!g !"Prefix);
                    return 
1;
                }
                else {
                    if(
get_user_health(id) + 50 250)
                    
fm_set_user_health(id250)
                    else {
                        
fm_set_user_health(idget_user_health(id) + 50
                        
fcs_set_user_credits(idCredits)
                        
ColorChat(id"!t%s!g Ai cumparat!t +50 Health !gpentru 3 credite!g !"Prefix)
                    }
                }
            }
        }
    case 
4: {
            if(
get_user_armor(id) >= 250) {
                
ColorChat(id"!t%s!g Ai deja!t 250 armor!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 3
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t +50 Armor!g !"Prefix);
                    return 
1;
                }
                else {
                    if(
get_user_armor(id) + 50 250)
                    
fm_set_user_armor(id250);
                    else {
                        
fm_set_user_armor(idget_user_armor(id) + 50) ;
                        
fcs_set_user_credits(idCredits);
                        
ColorChat(id"!t%s!g Ai cumparat!t +50 Armor !gpentru 3 credite!g !"Prefix);
                    }
                }
            }
        }
    case 
5: {
            if(
HaveNoFlash[id]) {
                
ColorChat(id"!t%s!g Ai deja!t No Flash!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite !gpentru a cumpara!t No Flash!g !"Prefix);
                    return 
1;
                }
                else {
                    
HaveNoFlash[id] = true;
                    
fcs_set_user_credits(idCredits);
                    
ColorChat(id"!t%s!g Ai cumparat!t No Flash !gpentru 5 credite!g !"Prefix);
                }
            }
        }
    case 
6: {
            if(
user_has_weapon(idCSW_HEGRENADE)) {
                
ColorChat(id"!t%s!g Ai deja!t HE Grenade!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 25 
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t HE Grenade!g !"Prefix);
                    return 
1;
                }
                else {
                    
fm_give_item(id"weapon_hegrenade");
                    
fcs_set_user_credits(idCredits);
                    
ColorChat(id"!t%s!g Ai cumparat!t HE Grenade !gpentru 25 de credite!g !"Prefix);
                }
            }
        }
    case 
7: {
            if(
user_has_weapon(idCSW_SMOKEGRENADE)) {
                
ColorChat(id"!t%s!g Ai deja!t Frost Nade!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 20
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t Frost Nade!g !"Prefix);
                    return 
1;
                }
                else {
                    
fm_give_item(id"weapon_smokegrenade");
                    
fcs_set_user_credits(idCredits);
                    
ColorChat(id"!t%s!g Ai cumparat!t Frost Nade !gpentru 20 de credite!g !"Prefix);
                }
            }
        }
    case 
8: {
            if(
get_user_flags(id) & VIP_LEVEL) {
                if(
HaveSuperKnifeVip[id]) {
                    
ColorChat(id"!t%s!g Ai deja!t Ultimate Knife [X4 DMG] + 250 HP&AP!g !"Prefix);
                    return 
1;
                }
                else {
                    new 
Credits fcs_get_user_credits(id) - 30
                    
if(Credits 0) {
                        
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t Ultimate Knife [X4 DMG] + 250 HP&AP!g !"Prefix);
                        return 
1;
                    }    
                    else {
                        
HaveSuperKnifeVip[id] = true;
                        
HaveSuperKnifeX2[id] = false;
                        
HaveSuperKnifeX3[id] = false;
                        
EVENT_CurWeapon(id);
                        
fm_set_user_armor(id250);
                        
fm_set_user_health(id250);
                        
fcs_set_user_credits(idCredits)
                    }
                }
            }
            else {
                
ColorChat(id"!t%s!g Acest item poate fi cumparat doar de catre!t membrii V.I.P!g !"Prefix);
                return 
1;
            }
        }
    }
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED
}
public 
AntiFurienShop(id) {
    if(
is_user_alive(id) && get_user_team(id) == 2) {
        new 
Title[128]
        
formatex(Titlesizeof(Title)-1"\rCredite: \y%d\r^n\rAnti-Furien Shop:"fcs_get_user_credits(id))
        
Menu menu_create(Title"AntiFurienHandler")
        
        if(
HaveDetector[id])
        
menu_additem(Menu"\dFurien Detector\w - \rAi deja""1"0)
        else {
            if(
fcs_get_user_credits(id) >= 25
            
menu_additem(Menu"\wFurien Detector - \r25 Credite""1"0)
            else 
            
menu_additem(Menu"\dFurien Detector\w - \r25 Credite""1"0)
        }
        
        if(
cs_get_user_defuse(id))
        
menu_additem(Menu"\dDefuse Kit\w - \rAi deja""2"0)
        else {
            if(
fcs_get_user_credits(id) >= 2)
            
menu_additem(Menu"\wDefuse Kit - \r2 Credite""2"0)
            else 
            
menu_additem(Menu"\dDefuse Kit\w - \r2 Credite""2")
        }
        
        if(
get_user_health(id) >= 250
        
menu_additem(Menu"\dHealth [+50]\w -\r Ai viata maxima""3"0)
        else {
            if(
fcs_get_user_credits(id) >= 3)
            
menu_additem(Menu"\wHealth \r[+50]\w - \r3 Credite""3"0)
            else 
            
menu_additem(Menu"\dHealth [+50]\w - \r3 Credite""3"0)
        }
        
        if(
get_user_armor(id) >= 250
        
menu_additem(Menu"\dArmor [+50]\w -\r Ai armura maxima""4"0)
        else {
            if(
fcs_get_user_credits(id) >= 3)
            
menu_additem(Menu"\wArmor \r[+50]\w - \r3 Credite""4"0)
            else 
            
menu_additem(Menu"\dArmor [+50]\w - \r3 Credite""4"0)
        }            
        
        if(
HaveNoFlash[id])
        
menu_additem(Menu"\dNo Flash\w - \rAi deja""5"0)
        else {
            if(
fcs_get_user_credits(id) >= 5)
            
menu_additem(Menu"\wNo Flash - \r5 Credite""5"0)
            else 
            
menu_additem(Menu"\dNo Flash\w - \r5 Credite""5"0)
        }        
        
        if(
user_has_weapon(idCSW_SMOKEGRENADE))
        
menu_additem(Menu"\dFrost nade\w - \rAi deja""6"0)
        else {
            if(
fcs_get_user_credits(id) >= 20)
            
menu_additem(Menu"\wFrost nade - \r20 Credite""6"0)
            else 
            
menu_additem(Menu"\dFrost nade\w - \r20 Credite""6"0)
        }
        
        if(
HavePET[id])
        
menu_additem(Menu"\dPET - Long Jump\w - \rAi deja""7"0)
        else {
            if(
fcs_get_user_credits(id) >= 30
            
menu_additem(Menu"\wPET - Long Jump\w - \r30 Credite""7"0)
            else 
            
menu_additem(Menu"\dPET - Long Jump\w - \r30 Credite""7"0)
        }
        
        if(
get_user_flags(id) & VIP_LEVEL) {
            if(
HaveAT4[id])
            
menu_additem(Menu"\dBazooka\w - \rAi deja""8"0)
            else {
                if(
fcs_get_user_credits(id) >= 50)
                
menu_additem(Menu"\wBazooka - \r50 Credite""8"0)
                else 
                
menu_additem(Menu"\dBazooka\w - \r50 Credite""8"0)    
            }
        }
        else 
        
menu_additem(Menu"\dBazooka\w - \rOnly V.I.P""8"0)        
        
        
menu_setprop(MenuMPROP_EXITMEXIT_ALL);
        
menu_display(idMenu0);
    }
}

public 
AntiFurienHandler(idmenuitem) {
    if(
item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != 2) {
        
menu_destroy(menu);
        
        return 
PLUGIN_HANDLED;
    }
    new 
Data[6], Name[64];
    new 
AccessCallBack;
    
menu_item_getinfo(menuitemAccessData,5Name63CallBack);
    new 
Key str_to_num(Data);
    switch(
Key) {
    case 
1: {
            if(
HaveDetector[id]) {
                
ColorChat(id"!t%s!g Ai deja!t Furien Detector!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 25
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente !tcredite!g pentru cumpara!t Furien Detector!g !"Prefix);
                    return 
1;
                }
                else {
                    
HaveDetector[id] = true;
                    
fcs_set_user_credits(idCredits)
                    
ColorChat(id"!t%s!g Ai cumparat!t Furien Detector !gpentru 25 de credite!g !"Prefix);
                }
            }
        }
    case 
2: {
            if(
cs_get_user_defuse(id)) {
                
ColorChat(id"!t%s!g Ai deja!t Defuse KIT!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t Defuse KIT!g !"Prefix);
                    return 
1;
                }
                else {
                    
cs_set_user_defuse(id1)
                    
fcs_set_user_credits(idCredits)
                    
ColorChat(id"!t%s!g Ai cumparat!t Defuse KIT !gpentru 2 credite!g !"Prefix);
                }
            }
        }
    case 
3: {
            if(
get_user_health(id) >= 250) {
                
ColorChat(id"!t%s!g Ai deja!t 250 health!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 3
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t +50 Health!g !"Prefix);
                    return 
1;
                }
                else {
                    if(
get_user_health(id) + 50 250)
                    
fm_set_user_health(id250)
                    else {
                        
fm_set_user_health(idget_user_health(id) + 50
                        
fcs_set_user_credits(idCredits)
                        
ColorChat(id"!t%s!g Ai cumparat!t +50 Health !gpentru 3 credite!g !"Prefix)
                    }
                }
            }
        }
    case 
4: {
            if(
get_user_armor(id) >= 250) {
                
ColorChat(id"!t%s!g Ai deja!t 250 armor!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 3
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t +50 Armor!g !"Prefix);
                    return 
1;
                }
                else {
                    if(
get_user_armor(id) + 50 250)
                    
fm_set_user_armor(id250);
                    else {
                        
fm_set_user_armor(idget_user_armor(id) + 50) ;
                        
fcs_set_user_credits(idCredits);
                        
ColorChat(id"!t%s!g Ai cumparat!t +50 !gArmor pentru 3 credite!g !"Prefix);
                    }
                }
            } 
        }
    case 
5: {
            if(
HaveNoFlash[id]) {
                
ColorChat(id"!t%s!g Ai deja!t No Flash!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t No Flash!g !"Prefix);
                    return 
1;
                }
                else {
                    
HaveNoFlash[id] = true;
                    
fcs_set_user_credits(idCredits);
                    
ColorChat(id"!t%s!g Ai cumparat!t No Flash !gpentru 5 credite!g !"Prefix);
                }
            }
        }    
    case 
6: {
            if(
user_has_weapon(idCSW_SMOKEGRENADE)) {
                
ColorChat(id"!t%s!g Ai deja!t Frost Nade!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 25 
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t Frost Nade!g !"Prefix);
                    return 
1;
                }
                else {
                    
fm_give_item(id"weapon_smokegrenade");
                    
fcs_set_user_credits(idCredits);
                    
ColorChat(id"!t%s!g Ai cumparat!t Frost Nade !gpentru 25 de credite!g !"Prefix);
                }
            }
        }
    case 
7: {
            if(
HavePET[id]) {
                
ColorChat(id"!t%s!g Ai deja un!t PET - Long Jump!g !"Prefix);
                return 
1;
            }
            else {
                new 
Credits fcs_get_user_credits(id) - 30
                
if(Credits 0) {
                    
ColorChat(id"!t%s!g Nu ai suficiente!t credite!g pentru a cumpara!t PET"Prefix);
                    return 
1;
                }
                else {
                    
create_pet(id)
                    
fcs_set_user_credits(idCredits);
                    
ColorChat(id"!t%s!g Ai cumparat!t PET - Long Jump !gpentru 30 de credite!g !"Prefix);
                }
            }
        }
    case 
8: {
            if(
get_user_flags(id) & VIP_LEVEL) {
                if(
HaveAT4[id]) {
                    
ColorChat(id"!t%s!g Ai deja!t Bazooka!g !"Prefix);
                    return 
1;
                }
                else {
                    new 
Credits fcs_get_user_credits(id) - 50
                    
if(Credits 0) {
                        
ColorChat(id"!t%s!g Ai deja!t Bazooka!g !"Prefix)
                        return 
1;
                    }
                    else {
                        
set_user_at4(idtrue)
                        
fcs_set_user_credits(idCredits);
                        
ColorChat(id"!t%s!g Ai cumparat!t Bazooka !gpentru 50 de credite!g !"Prefix);
                    }
                }
            }
            else {
                
ColorChat(id"!t%s!g Acest item poate fi cumparat doar de catre!t membrii V.I.P!g !"Prefix);
                return 
1;
            }
        }
    }
    
menu_destroy(menu)
    return 
PLUGIN_HANDLED
}

public 
AT4_UpdateClientData_POST(idsendweaponscd_handle) {
    if(
is_user_connected(id) && is_user_alive(id)) {
        if(
get_user_weapon(id) == CSW_AT4CS && HaveAT4[id])
        
set_cd(cd_handleCD_flNextAttackhalflife_time() + 0.001)  
    }
}

public 
AT4_AddToPlayer(entid) {
    if(!
is_valid_ent(ent) || !is_user_alive(id))
    return 
HAM_IGNORED
    
    
if(entity_get_int(entEV_INT_impulse) == 61296) {
        
HaveAT4[id] = true
        entity_set_int
(idEV_INT_impulse0)
        
        return 
HAM_HANDLED
    
}        

    if(
HaveAT4[id]) {
        
message_begin(MSG_ONEget_user_msgid("WeaponList"), _id)
        
write_string("weapon_at4cs");    // WeaponName
        
write_byte(3)                  // PrimaryAmmoID
        
write_byte(1)                  // PrimaryAmmoMaxAmount
        
write_byte(-1)                   // SecondaryAmmoID
        
write_byte(-1)                   // SecondaryAmmoMaxAmount
        
write_byte(0)                    // SlotID (0...N)
        
write_byte(4)                    // NumberInSlot (1...N)
        
write_byte(CSW_AT4CS)            // WeaponID
        
write_byte(0)                   // Flags
        
message_end()
    }
    return 
HAM_HANDLED    
}

public 
AT4_CMDStart(iduc_handleseed) {
    if(
is_user_connected(id) && is_user_alive(id)) {
        if(
get_user_weapon(id) == CSW_AT4CS && HaveAT4[id]) {
            static 
CurButton
            CurButton 
get_uc(uc_handleUC_Buttons)
            if(
CurButton IN_ATTACK) {
                static 
Float:CurTime
                CurTime 
get_gametime()
                
                static 
at4cs
                at4cs 
fm_find_ent_by_owner(-1weapon_at4csid)        
                
                if(
cs_get_weapon_ammo(at4cs) > && !is_reloading[id]) {
                    if(
CurTime 4.5 g_lastfire[id]) {
                        
set_weapon_anim(id1)
                        
emit_sound(idCHAN_WEAPONAT4Sound[0], 1.0ATTN_NORM0PITCH_NORM)
                        
                        
create_rocket(id)
                        
                        static 
Float:Punch_Angles[3]
                        
                        
Punch_Angles[0] = -20.0
                        Punch_Angles
[1] = 0.0
                        Punch_Angles
[2] = 0.0
                        
                        set_pev
(idpev_punchanglePunch_Angles)
                        
cs_set_weapon_ammo(at4cscs_get_weapon_ammo(at4cs) - 1)
                        
                        if(
cs_get_weapon_ammo(at4cs) <= && !is_reloading[id]) {
                            if(
cs_get_user_bpammo(idCSW_AT4CS) > 0) {
                                
set_task(1.0"at4cs_reload"id)
                            }
                        }
                        if(
cs_get_user_zoom(id))
                        
cs_set_user_zoom(idCS_RESET_ZOOM1)
                        
                        
g_lastfire[id] = CurTime
                    
}
                }
                else {
                    if(!
is_reloading[id]) {
                        if(
cs_get_user_bpammo(idCSW_AT4CS) > 0) {
                            if(
CurTime 1.0 g_lastfire[id]) {
                                
at4cs_reload(id)
                                
g_lastfire[id] = CurTime
                            
}
                        }
                    }
                }
            }
            if(
CurButton IN_ATTACK2) {
                static 
Float:CurTime
                CurTime 
get_gametime()
                
                if((
CurTime 0.5 g_lastaim[id]) && !is_reloading[id]) {
                    if(!
g_aiming[id]) {
                        
cs_set_user_zoom(idCS_SET_FIRST_ZOOM1)
                        
g_aiming[id] = 1
                    
}
                    else {
                        
cs_set_user_zoom(idCS_RESET_ZOOM1)
                        
g_aiming[id] = 0
                    
}
                    
g_lastaim[id] = CurTime
                
}
            }
            
            
CurButton &= ~IN_ATTACK
            set_uc
(uc_handleUC_ButtonsCurButton)
            
            
CurButton &= ~IN_RELOAD
            set_uc
(uc_handleUC_ButtonsCurButton)
        } 
    }

    return 
FMRES_HANDLED
}

public 
AT4_WorldModel(ent, const model[]) {
    if(!
is_valid_ent(ent))
    return 
FMRES_IGNORED
    
    
static szClassName[33]
    
entity_get_string(entEV_SZ_classnameszClassNamecharsmax(szClassName))
    
    if(!
equal(szClassName"weaponbox"))
    return 
FMRES_IGNORED
    
    
static iOwner
    iOwner 
entity_get_edict(entEV_ENT_owner)
    
    if(
equal(model"models/w_m249.mdl")) {
        static 
at4cs
        at4cs 
find_ent_by_owner(-1"weapon_m249"ent)
        
        if(!
is_valid_ent(at4cs))
        return 
FMRES_IGNORED;
        
        if(
HaveAT4[iOwner]) {
            
entity_set_int(at4csEV_INT_impulse61296)
            
HaveAT4[iOwner] = false;
            
entity_set_model(entAT4Model_W)
            
            return 
FMRES_SUPERCEDE
        
}
    }
    return 
FMRES_IGNORED
}

public 
at4cs_reload(id) {
    if(
is_reloading[id])
    return
    
    
is_reloading[id] = 1
    set_weapon_anim
(id3)
    
    
set_task(0.1"checking_reload"id+TASK_CHECKRELOAD__"b")
    
set_task(4.0"reload_complete"id+TASK_RELOAD)
}

public 
checking_reload(id) {
    
id -= TASK_CHECKRELOAD
    
    
if(cs_get_user_zoom(id))
    
cs_set_user_zoom(idCS_RESET_ZOOM1)    
    
    if(
get_user_weapon(id) != CSW_AT4CS || !HaveAT4[id]) {
        
remove_task(id+TASK_CHECKRELOAD)
        
remove_task(id+TASK_RELOAD)
        
        
is_reloading[id] = 0
    
}
}

public 
reload_complete(id) {
    
id -= TASK_RELOAD
    
    
if(!is_reloading[id])
    return
    
    
remove_task(id+TASK_CHECKRELOAD)    
    
    static 
at4cs
    at4cs 
fm_find_ent_by_owner(-1weapon_at4csid)    
    
    
cs_set_weapon_ammo(at4cs1)
    
cs_set_user_bpammo(idCSW_AT4CScs_get_user_bpammo(idCSW_AT4CS) - 1)
    
is_reloading[id] = 0
}

public 
AT4_Reload(ent) {
    static 
id
    id 
pev(entpev_owner)
    
    if(
is_user_connected(id) && is_user_alive(id)) {
        if(
get_user_weapon(id) == CSW_AT4CS && HaveAT4[id]) {
            
            static 
Float:CurTime
            CurTime 
get_gametime()        
            
            if(!
is_reloading[id]) {
                if(
cs_get_user_bpammo(idCSW_AT4CS) > 0) {
                    if(
CurTime 1.0 g_lastfire[id]) {
                        
at4cs_reload(id)
                        
g_lastfire[id] = CurTime
                    
}
                }
            }
        }
    }
    return 
HAM_SUPERCEDE
}

public 
AT4_Think(ent) {
    if(!
pev_valid(ent))
    return

    static 
Float:Origin[3]
    
pev(entpev_originOrigin)
    
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_SPRITE)
    
engfunc(EngFunc_WriteCoordOrigin[0])
    
engfunc(EngFunc_WriteCoordOrigin[1])
    
engfunc(EngFunc_WriteCoordOrigin[2])
    
write_short(g_smoke_id
    
write_byte(2
    
write_byte(200)
    
message_end()
    
    if(
pev(entpev_iuser4) == 0) {
        static 
Victim
        Victim 
FindClosesEnemy(ent)
        
        if(
is_user_alive(Victim)) {
            
set_pev(entpev_iuser4Victim)
        }
    } 
    else {
        static 
Victim
        Victim 
pev(entpev_iuser4)
        
        if(
is_user_alive(Victim)) {
            static 
Float:VicOrigin[3]
            
pev(Victimpev_originVicOrigin)
            
            
turn_to_target(entOriginVictimVicOrigin)
            
hook_ent(entVictim500.0)
        } 
        else {
            
set_pev(entpev_iuser40)
        }
    }    
    
set_pev(entpev_nextthinkhalflife_time() + 0.075)
}

public 
AT4_Touch(rockettouch) {
    if(!
pev_valid(rocket))
    return    
    
    if(
is_user_alive(touch) && pev(rocketpev_owner) == touch)
    return
    
    static 
Float:Origin[3]
    
pev(rocketpev_originOrigin)        
    
    
message_begin(MSG_BROADCAST ,SVC_TEMPENTITY)
    
write_byte(TE_EXPLOSION)
    
engfunc(EngFunc_WriteCoordOrigin[0])
    
engfunc(EngFunc_WriteCoordOrigin[1])
    
engfunc(EngFunc_WriteCoordOrigin[2])
    
write_short(g_spr_exp)    // sprite index
    
write_byte(20)    // scale in 0.1's
    
write_byte(30)    // framerate
    
write_byte(0)    // flags
    
message_end()
    
    static 
owneriVictim
    
    iVictim 
= -1
    owner 
pev(rocketpev_owner)    

    while((
iVictim find_ent_in_sphere(iVictimOriginget_pcvar_float(cvar_radius))) != 0) {
        if((
iVictim 32) && is_user_alive(iVictim) && iVictim != owner) {
            new 
Float:MaxDamageFloat:Damage
            
            MaxDamage 
get_pcvar_float(cvar_maxdamage)
            
Damage random_float(MaxDamage random_float(0.0100.0), MaxDamage random_float(0.0100.0))
            
            
ExecuteHam(Ham_TakeDamageiVictim0owner0DMG_BULLET)
            
            static 
health
            health 
get_user_health(iVictim)
            
            if(
health Damage >= 1) {
                
fm_set_user_health(iVictimhealth floatround(Damage))
            }
            else {
                
death_message(owneriVictim1)
            }            
        }
    }    
    
engfunc(EngFunc_RemoveEntityrocket)
}

public 
create_rocket(id) {
    new 
entFloat:Origin[3], Float:Angles[3], Float:Velocity[3]
    
    
ent engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"info_target"))
    
engfunc(EngFunc_GetAttachmentid0OriginAngles)
    
pev(idpev_anglesAngles)
    
    
set_pev(entpev_originOrigin)
    
set_pev(entpev_anglesAngles)
    
set_pev(entpev_solid2)
    
set_pev(entpev_movetype5)
    
set_pev(entpev_classname"at4ex_rocket")
    
set_pev(entpev_ownerid)
    
engfunc(EngFunc_SetModelentAT4Rocket)
    
    
set_pev(entpev_mins, {-1.0, -1.0, -1.0})
    
set_pev(entpev_maxs, {1.01.01.0})
    
    
velocity_by_aim(id1750Velocity)
    
set_pev(entpev_velocityVelocity)
    
    
message_begin(MSG_BROADCASTSVC_TEMPENTITY)
    
write_byte(TE_BEAMFOLLOW)         // TE id
    
write_short(ent)                 // entity:attachment to follow
    
write_short(g_spr_trail)         // sprite index
    
write_byte(25)                     // life in 0.1's
    
write_byte(2)                     // line width in 0.1's
    
write_byte(255)                    // r
    
write_byte(255)                    // g
    
write_byte(255)                 // b
    
write_byte(200)                    // brightness
    
message_end()    
    
    
set_pev(entpev_iuser40)
    
set_pev(entpev_nextthinkhalflife_time() + 0.1)
}

public 
hook_weapon(id) {
    
engclient_cmd(idweapon_at4cs)
}

public 
get_user_at4(id) {
    return 
HaveAT4[id];
}

public 
set_user_at4(idat4) {
    if(
at4) {
        if(!
HaveAT4[id]) {
            
drop_primary_weapons(id);
            
HaveAT4[id] = true;
            
is_reloading[id] = 0
            g_aiming
[id] = 0
            fm_give_item
(idweapon_at4cs);
            new 
Clip fm_get_user_weapon_entity(idCSW_AT4CS);
            
cs_set_weapon_ammo(Clip1);
            
cs_set_user_bpammo(idCSW_AT4CS50)
        }
    }
    else {
        if(
HaveAT4[id]) {
            
HaveAT4[id] = false;
        }
    }
}

//-------------------------------------------------------------------------//
//=============================| Stocks |=================================//
//-----------------------------------------------------------------------//
stock get_offset_origin_body(ent,const Float:offset[3],Float:origin[3]) {
    if(!
pev_valid(ent))
    return 
0;
    
    new 
Float:angle[3]
    
pev(ent,pev_angles,angle)
    
    
pev(ent,pev_origin,origin)
    
    
origin[0] += floatcos(angle[1],degrees) * offset[0]
    
origin[1] += floatsin(angle[1],degrees) * offset[0]
    
    
origin[1] += floatcos(angle[1],degrees) * offset[1]
    
origin[0] += floatsin(angle[1],degrees) * offset[1]
    
    return 
1;
}

stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speedFloat:new_velocity[3]) {
    
new_velocity[0] = origin2[0] - origin1[0]
    
new_velocity[1] = origin2[1] - origin1[1]
    
new_velocity[2] = origin2[2] - origin1[2]
    new 
Float:num floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))
    
new_velocity[0] *= num
    new_velocity
[1] *= num
    new_velocity
[2] *= num
    
    
return 1;
}

stock entity_set_aim(ent,const Float:origin2[3],bone=0) {
    if(!
pev_valid(ent))
    return 
0;
    
    static 
Float:origin[3]
    
origin[0] = origin2[0]
    
origin[1] = origin2[1]
    
origin[2] = origin2[2]
    
    static 
Float:ent_origin[3], Float:angles[3]
    
    if(
bone)
    
engfunc(EngFunc_GetBonePosition,ent,bone,ent_origin,angles)
    else
    
pev(ent,pev_origin,ent_origin)
    
    
origin[0] -= ent_origin[0]
    
origin[1] -= ent_origin[1]
    
origin[2] -= ent_origin[2]
    
    static 
Float:v_length
    v_length 
vector_length(origin)
    
    static 
Float:aim_vector[3]
    
aim_vector[0] = origin[0] / v_length
    aim_vector
[1] = origin[1] / v_length
    aim_vector
[2] = origin[2] / v_length
    
    
static Float:new_angles[3]
    
vector_to_angle(aim_vector,new_angles)
    
    
new_angles[0] *= -1
    
    
if(new_angles[1]>180.0new_angles[1] -= 360
    
if(new_angles[1]<-180.0new_angles[1] += 360
    
if(new_angles[1]==180.0 || new_angles[1]==-180.0new_angles[1]=-179.999999
    
    set_pev
(ent,pev_angles,new_angles)
    
set_pev(ent,pev_fixangle,1)
    
    return 
1;
}


stock set_weapon_anim(idanim) {
    
set_pev(idpev_weaponanimanim)

    
message_begin(MSG_ONE_UNRELIABLESVC_WEAPONANIM_id)
    
write_byte(anim)
    
write_byte(pev(id,pev_body))
    
message_end()
}

stock death_message(KillerVictimScoreBoard) {
    
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET)
    
ExecuteHamB(Ham_KilledVictimKiller2)
    
set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT)
    
    
make_deathmsg(KillerVictim0"")

    if (
ScoreBoard) {
        
message_begin(MSG_BROADCASTget_user_msgid("ScoreInfo"))
        
write_byte(Killer)                         // id
        
write_short(pev(Killerpev_frags))     // frags
        
write_short(cs_get_user_deaths(Killer)) // deaths
        
write_short(0)                             // class?
        
write_short(get_user_team(Killer))         // team
        
message_end()
        
        
message_begin(MSG_BROADCASTget_user_msgid("ScoreInfo"))
        
write_byte(Victim)                             // id
        
write_short(pev(Victimpev_frags))         // frags
        
write_short(cs_get_user_deaths(Victim))     // deaths
        
write_short(0)                                 // class?
        
write_short(get_user_team(Victim))             // team
        
message_end()
    }
}

stock FindClosesEnemy(entid) {
    new 
Float:Dist
    
new Float:maxdistance 300.0
    
new indexid 0    
    
    
for(new 1<= get_maxplayers(); i++){
        if(
is_user_alive(i) && is_valid_ent(i) && can_see_fm(entidi)
                && 
pev(entidpev_owner) != && cs_get_user_team(pev(entidpev_owner)) != cs_get_user_team(i)) {
            
Dist entity_range(entidi)
            if(
Dist <= maxdistance) {
                
maxdistance Dist
                indexid 
i
                
                
return indexid
            
}
        }    
    }    
    return 
0
}

stock bool:can_see_fm(entindex1entindex2) {
    if (!
entindex1 || !entindex2)
    return 
false

    
if (pev_valid(entindex1) && pev_valid(entindex1)) {
        new 
flags pev(entindex1pev_flags)
        if (
flags EF_NODRAW || flags FL_NOTARGET
        return 
false

        
new Float:lookerOrig[3]
        new 
Float:targetBaseOrig[3]
        new 
Float:targetOrig[3]
        new 
Float:temp[3]

        
pev(entindex1pev_originlookerOrig)
        
pev(entindex1pev_view_ofstemp)
        
lookerOrig[0] += temp[0]
        
lookerOrig[1] += temp[1]
        
lookerOrig[2] += temp[2]

        
pev(entindex2pev_origintargetBaseOrig)
        
pev(entindex2pev_view_ofstemp)
        
targetOrig[0] = targetBaseOrig [0] + temp[0]
        
targetOrig[1] = targetBaseOrig [1] + temp[1]
        
targetOrig[2] = targetBaseOrig [2] + temp[2]

        
engfunc(EngFunc_TraceLinelookerOrigtargetOrig0entindex10//  checks the had of seen player
        
if (get_tr2(0TraceResult:TR_InOpen) && get_tr2(0TraceResult:TR_InWater)) {
            return 
false
        

        else  {
            new 
Float:flFraction
            get_tr2
(0TraceResult:TR_flFractionflFraction)
            if (
flFraction == 1.0 || (get_tr2(0TraceResult:TR_pHit) == entindex2)) {
                return 
true
            
}
            else {
                
targetOrig[0] = targetBaseOrig [0]
                
targetOrig[1] = targetBaseOrig [1]
                
targetOrig[2] = targetBaseOrig [2]
                
engfunc(EngFunc_TraceLinelookerOrigtargetOrig0entindex10//  checks the body of seen player
                
get_tr2(0TraceResult:TR_flFractionflFraction)
                if (
flFraction == 1.0 || (get_tr2(0TraceResult:TR_pHit) == entindex2)) {
                    return 
true
                
}
                else {
                    
targetOrig[0] = targetBaseOrig [0]
                    
targetOrig[1] = targetBaseOrig [1]
                    
targetOrig[2] = targetBaseOrig [2] - 17.0
                    engfunc
(EngFunc_TraceLinelookerOrigtargetOrig0entindex10//  checks the legs of seen player
                    
get_tr2(0TraceResult:TR_flFractionflFraction)
                    if (
flFraction == 1.0 || (get_tr2(0TraceResult:TR_pHit) == entindex2)) {
                        return 
true
                    
}
                }
            }
        }
    }
    return 
false
}

stock turn_to_target(entFloat:Ent_Origin[3], targetFloat:Vic_Origin[3])  {
    if(
target)  {
        new 
Float:newAngle[3]
        
entity_get_vector(entEV_VEC_anglesnewAngle)
        new 
Float:Vic_Origin[0] - Ent_Origin[0]
        new 
Float:Vic_Origin[1] - Ent_Origin[1]

        new 
Float:radians floatatan(z/xradian)
        
newAngle[1] = radians * (180 3.14)
        if (
Vic_Origin[0] < Ent_Origin[0])
        
newAngle[1] -= 180.0
        
        entity_set_vector
(entEV_VEC_anglesnewAngle)
    }
}

stock hook_ent(entvictimFloat:speed) {
    static 
Float:fl_Velocity[3]
    static 
Float:VicOrigin[3], Float:EntOrigin[3]

    
pev(entpev_originEntOrigin)
    
pev(victimpev_originVicOrigin)
    
    static 
Float:distance_f
    distance_f 
get_distance_f(EntOriginVicOrigin)

    if (
distance_f 10.0) {
        new 
Float:fl_Time distance_f speed

        fl_Velocity
[0] = (VicOrigin[0] - EntOrigin[0]) / fl_Time
        fl_Velocity
[1] = (VicOrigin[1] - EntOrigin[1]) / fl_Time
        fl_Velocity
[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time
    

    else {
        
fl_Velocity[0] = 0.0
        fl_Velocity
[1] = 0.0
        fl_Velocity
[2] = 0.0
    
}

    
entity_set_vector(entEV_VEC_velocityfl_Velocity)
}

stock drop_primary_weapons(Player) {
    static 
weapons[32], numiweaponid;
    
num 0;
    
get_user_weapons(Playerweaponsnum);
    
    for(
0numi++) {
        
weaponid weapons [i];
        
        if(((
1<<weaponid) & PRIMARY_WEAPONS_BITSUM)) {
            static 
wname[32];
            
get_weaponname(weaponidwnamecharsmax(wname));
            
            
engclient_cmd(Player"drop"wname);
        }
    }
}

stock ColorChat(const id, const input[], any:...) {
    new 
count 1players[32];
    static 
msg[191];
    
vformat(msg190input3);
    
    
replace_all(msg190"!g""^4");
    
replace_all(msg190"!y""^1");
    
replace_all(msg190"!t""^3");
    
    if(
idplayers[0] = id;
    else 
get_players(playerscount"ch"); {
        for(new 
0counti++) {
            if(
is_user_connected(players[i])) {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i]);
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    } 

It works perfectly, thank you a lot, and thank you others users for your help too. +1 you all guys
Pegasus6 is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 11:21.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode