Cerere modificare plugin Furien

Modificari necesare ale pluginurilor

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
Styl3149
Membru, skill 0
Membru, skill 0
Posts: 35
Joined: 10 Jan 2019, 02:21
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Contact:

10 Jan 2019, 02:23

► Nume Plugin: furien40_weapons
► Descriere: Vreau sa scot cateva arme din meniu
► Pentru mod: Furien
► Alte mentiuni: Vreau sa scot acele arme deoarece consuma resursele pe server si timp de descarcare indelungata.
Site descarcare https://ufile.io/r6lho (aici sunt SMA-urile si pozele cu armele ce vreau sa fie scoase (cu rosu in dreapta lor)
Pentru mai multe informatii facebook.com/pisten
Multumesc -
RoyalServer 2
User avatar
VLD00
Membru, skill +4
Membru, skill +4
Posts: 1941
Joined: 04 Aug 2013, 17:22
Detinator Steam: Nu
CS Status: Kboom !
Detinator server CS: Da
Reputatie: Fost moderator
Fost manager DR
Has thanked: 5 times
Been thanked: 1 time

16 Jan 2019, 12:18

Mutat in categoria corespunzatoare
Inactiv o perioada nedeterminata
User avatar
DevilBoy.eXe
Super moderator
Super moderator
Posts: 1679
Joined: 05 Jun 2016, 23:04
Detinator Steam: Da
Detinator server CS: GO.WARED.RO
SteamID: DevilBoy_eXe
Reputatie: Super Moderator
Fond eXtream: 0
Location: beyond the time
Discord: zeux.
Has thanked: 15 times
Been thanked: 72 times
Contact:

16 Jan 2019, 12:33

Poate daca ai avea downloadurl nu ar mai fi asa mare timpul de download, zic și eu
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3854
Joined: 24 Aug 2011, 12:24
Detinator Steam: Nu
CS Status:
Detinator server CS: ☯∴
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 595 times
Contact:

16 Jan 2019, 23:28

| Afiseaza codul
[code]
//#define POWERS
#define MAX_WEAPONS		100
#define EV_INT_WeaponKey	EV_INT_impulse

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <engine>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>

#include "furien40/furien40.inc"
#if defined POWERS
#include "furien40/furien40_powers.inc"
#endif

#define PLUGIN "Weapons Menu"
#define VERSION "4.0"
#define AUTHOR "Aragon*"

//------| Settings |------//
#define VIP_LEVEL	ADMIN_LEVEL_H
#define ADMIN_LEVEL	ADMIN_LEVEL_G

//--| Primary Weapons |--//
//#define OICW
//#define THANATOS11
//#define THANATOS7
//#define AEOLIS
//#define JANUS11
#define JANUS7
#define JANUS3
//#define SPEARGUN
//#define PETROLBOOMER
//#define SALAMANDER
//#define AT4
//#define ETHEREAL
#define RAILCANNON
//#define PLASMAGUN
//#define CROSSBOW
//#define GATLING
//#define COMPOUNDBOW
//#define HK416
//#define AK47KNIFE
//#define F2000
//#define TAR21
//#define K1ASES
//#define DUALMP7A1
//#define QUADBARREL
//#define M1887
//#define THOMPSON
//#define M134
//#define SKULL5
//#define SL8
//#define AW50

//--| Secondary Weapons |--//
//#define DRAGONCANNON
#define JANUS1
//#define M79
//#defined K5
//#define DUALDEAGLE
//#define INFINITY
#define SKULL1
//#define ANACONDA

//--| Knifes |--//
#define CLAWS
#define SUPERCLAWS
//#define DUALKATANA
//#define BALROG9
#define JANUS9
#define RUYISTICK
#define DRAGONSWORD
#define PAPIN

//--| Grenades |--//
//#define SNARK
//#define FIRENADE
//#define FROSTNADE
//#define SFNADE

//--| C4 |--//
//#define LASERMINE
//------| End Settings |------//

enum WeaponsList {
	WPN_PRIMARY = 0,
	WPN_SECONDARY,
	WPN_KNIFE,
	WPN_GRENADE,
	WPN_C4
}
enum WeaponData {
	WPN_MENUNAME = 0,
	WPN_TEAM,
	WPN_ACCES,
	WPN_LEVEL,
	WPN_NAME,
	WPN_ID,
	WPN_LIST,
	WPN_CLIP
};
enum WeaponTeam {
	WPN_TEAM_ALL = 0,
	WPN_TEAM_T,
	WPN_TEAM_CT
};
enum WeaponAcces {
	WPN_ACCES_ALL = 0,
	WPN_ACCES_VIP,
	WPN_ACCES_ADMIN
};

new Menu, bool:ShowMenu[33], Weapons[WeaponsList] = 1, HasChoose[33][WeaponsList][4], WeaponKey[33][WeaponsList][4],
PrimaryWeapon[MAX_WEAPONS+1][WeaponData][33], SecondaryWeapon[MAX_WEAPONS+1][WeaponData][33], Knife[MAX_WEAPONS+1][WeaponData][33],
Grenade[MAX_WEAPONS+1][WeaponData][33], C4[MAX_WEAPONS+1][WeaponData][33],
MSGID_WeaponList, MSGID_DeathMsg, MSGID_ScoreInfo, MSGID_SayText, 
MSGID_CurWeapon, MSGID_Crosshair/*, MSGID_ScreenFade, MSGID_ScreenShake*/;

//------| Weapons Menu |------//
#define 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)
#define SECONDARY_WEAPONS_BITSUM 	(1<<CSW_GLOCK18 | 1<<CSW_USP | 1<<CSW_P228 | 1<<CSW_DEAGLE | 1<<CSW_FIVESEVEN | 1<<CSW_ELITE)
#define AMMOWP_NULL 			(1<<0 | 1<<CSW_KNIFE | 1<<CSW_FLASHBANG | 1<<CSW_HEGRENADE | 1<<CSW_SMOKEGRENADE | 1<<CSW_C4)
new Shell, BloodSpray, BloodDrop,
WeaponsAmmo[][] = {
	{ -1, -1 },
	{ 13, 52 },
	{ -1, -1 },
	{ 10, 90 },
	{ -1, -1 },
	{ 7, 32 },
	{ -1, -1 },
	{ 30, 100 },
	{ 30, 90 },
	{ -1, -1 },
	{ 30, 120 },
	{ 20, 100 },
	{ 25, 100 },
	{ 30, 90 },
	{ 35, 90 },
	{ 25, 90 },
	{ 12, 100 },
	{ 20, 120 },
	{ 10, 30 },
	{ 30, 120 },
	{ 100, 200 },
	{ 8, 32 },
	{ 30, 90 },
	{ 30, 120 },
	{ 20, 90 },
	{ -1, -1 },
	{ 7, 35 },
	{ 30, 90 },
	{ 30, 90 },
	{ -1, -1 },
	{ 50, 100 }
},
Prefix[] = "[INFO]",
Contact[] = "Y!M Tau";

#include "furien40/weapons/Config.h"
public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	MSGID_WeaponList 	= get_user_msgid("WeaponList")
	MSGID_DeathMsg 		= get_user_msgid("DeathMsg")
	MSGID_ScoreInfo 	= get_user_msgid("ScoreInfo")
	MSGID_SayText 		= get_user_msgid("SayText")
	MSGID_CurWeapon 	= get_user_msgid("CurWeapon")
	MSGID_Crosshair 	= get_user_msgid("Crosshair")
	/*MSGID_ScreenFade 	= get_user_msgid("ScreenFade")
	MSGID_ScreenShake 	= get_user_msgid("ScreenShake");*/
	Shell 			= engfunc(EngFunc_PrecacheModel, "models/rshell.mdl");
	
	register_clcmd("guns", 				"CMD_Guns");
	register_clcmd("say guns", 			"CMD_Guns");
	register_clcmd("say /guns", 			"CMD_Guns");
	register_clcmd("say_team guns", 		"CMD_Guns");
	register_clcmd("say_team /guns", 		"CMD_Guns");
	
	register_event("CurWeapon", 			"EVENT_CurWeapon", "be", "1=1")
	RegisterHam(Ham_Spawn, "player", 		"HAM_Spawn_Post", 1);
	RegisterHam(Ham_Touch, "weaponbox", 		"HAM_Touch")
	RegisterHam(Ham_Touch, "armoury_entity", 	"HAM_Touch")
	RegisterHam(Ham_Touch, "weapon_shield", 	"HAM_Touch")
	
	
	weapons_init()
}

public plugin_precache() {
	BloodSpray 	= precache_model("sprites/bloodspray.spr");
	BloodDrop  	= precache_model("sprites/blood.spr");
	
	weapons_precache()
}

public plugin_natives() {
	register_native("RegisterPrimary", 	"native_register_primary", 1)
	register_native("RegisterSecondary", 	"native_register_secondary", 1)
	register_native("RegisterKnife", 	"native_register_knife", 1)
	register_native("RegisterGrenade", 	"native_register_grenade", 1)
	register_native("RegisterC4", 		"native_register_c4", 1)
	register_native("OpenWeaponsMenu", 	"CMD_Guns", 1)
	register_native("get_weapon", 		"get_weapon", 1)
	register_native("set_weapon", 		"set_weapon", 1)
	register_native("get_weapon_data", 	"get_weapon_data", 1)
	register_native("set_weapon_data", 	"set_weapon_data", 1)
	
	weapons_natives()
}

public client_putinserver(id) {
	ShowMenu[id] = true
}

public grenade_throw(id, grenade, GrenadeID) {
	if(is_valid_ent(grenade) && is_user_alive(id)) {
		for(new i = 1; i < Weapons[WPN_GRENADE]; i++) {
			if(GrenadeID == str_to_num(Grenade[WPN_ID]) && get_user_weapon(id) == GrenadeID && get_weapon(id, Grenade[WPN_NAME], str_to_num(Grenade[WPN_ID]), i))
				entity_set_int(grenade, EV_INT_impulse, i);
		}
	}
	return FMRES_IGNORED;
}

public EVENT_CurWeapon(id) {
	if(is_user_connected(id) && is_user_alive(id)) {
		new Weapon = read_data(2)
		
		if(!(AMMOWP_NULL &(1<<Weapon))) {		
			if(fm_get_user_bpammo(id, Weapon) < WeaponsAmmo[Weapon][1]) 
				fm_set_user_bpammo(id, Weapon, WeaponsAmmo[Weapon][1])
		}
	}
	return PLUGIN_CONTINUE
}

public HAM_Spawn_Post(id) {
	if(is_user_alive(id)) {
		HasChoose[id][WPN_PRIMARY][get_user_team(id)] = false
		HasChoose[id][WPN_SECONDARY][get_user_team(id)] = false
		HasChoose[id][WPN_KNIFE][get_user_team(id)] = false
		HasChoose[id][WPN_GRENADE][get_user_team(id)] = false
		HasChoose[id][WPN_C4][get_user_team(id)] = false

		#if defined FIRENADE
		set_weapon(id, WPN_GRENADE, firenade_id())
		#endif
		#if defined FROSTNADE
		set_weapon(id, WPN_GRENADE, frostnade_id())
		#endif
		#if defined SFNADE
		set_weapon(id, WPN_GRENADE, sfnade_id())
		#endif
		
		if(get_user_team(id) == TEAM_ANTIFURIEN) {			
			if(ShowMenu[id]) 
				EquipmentMenu(id)
			else if(!ShowMenu[id])
				GiveLastWeapons(id)
			
		}
	}
	return HAM_IGNORED;
}

public HAM_Touch(ent, id) {
	if(is_user_alive(id)) {
		if(get_user_team(id) == TEAM_FURIEN && entity_get_int(ent, EV_INT_impulse) == 2)
			return HAM_SUPERCEDE	
		if(get_user_team(id) == TEAM_ANTIFURIEN && entity_get_int(ent, EV_INT_impulse) == 1)
			return HAM_SUPERCEDE
	}
	return HAM_IGNORED
}

public CMD_Guns(id) {
	if(!ShowMenu[id]) {
		ShowMenu[id] = true
		ColorChat(id, "!t%s!gMeniul de!t echipamente!g a fost!t re-activat!g.", Prefix);
	}
	if(!HasChoose[id][WPN_PRIMARY][2] && !HasChoose[id][WPN_SECONDARY][2] && !HasChoose[id][WPN_KNIFE][2])
		EquipmentMenu(id)
	else if(!HasChoose[id][WPN_PRIMARY][2])
		PrimaryWeaponMenu(id, 0)
	else if(!HasChoose[id][WPN_SECONDARY][2])
		SecondaryWeaponMenu(id)
	else if(!HasChoose[id][WPN_KNIFE][2])
		KnifesMenu(id)
	return PLUGIN_CONTINUE;
}

public EquipmentMenu(id) {
	if(is_user_alive(id) && get_user_team(id) == TEAM_ANTIFURIEN) {
		menu_cancel(id)
		
		Menu = menu_create("\rEchipament", "EquipmentCmd");
		menu_additem(Menu, "\wArme noi", "1", 0);
		if(WeaponKey[id][WPN_PRIMARY][2] && WeaponKey[id][WPN_SECONDARY][2] && WeaponKey[id][WPN_KNIFE][2]) {
			menu_additem(Menu, "\wArmele anterioare", "2", 0);
			menu_additem(Menu, "\wNu arata meniul din nou^n", "3", 0);
		}
		else {
			menu_additem(Menu, "\dArmele anterioare", "2", 0);
			menu_additem(Menu, "\dNu arata meniul din nou^n", "3", 0);
		}
		menu_setprop(Menu, MPROP_EXIT, MEXIT_NEVER)
		menu_display(id, Menu, 0);
	}
}

public EquipmentCmd(id, menu, item) {
	if(item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != TEAM_ANTIFURIEN) {
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	new Data[6], Name[64], Access, CallBack;
	menu_item_getinfo(menu, item, Access, Data, 5, Name, 63, CallBack);
	menu_destroy(menu);
	
	switch(str_to_num(Data)) {
		case 1: {
			if(!HasChoose[id][WPN_PRIMARY][2])
				PrimaryWeaponMenu(id, 0)
			else if(!HasChoose[id][WPN_SECONDARY][2])
				SecondaryWeaponMenu(id)
			else if(!HasChoose[id][WPN_KNIFE][2])
				KnifesMenu(id)
		}
		case 2: {
			if(WeaponKey[id][WPN_PRIMARY][2] && WeaponKey[id][WPN_SECONDARY][2] && WeaponKey[id][WPN_KNIFE][2])
				GiveLastWeapons(id)
			else EquipmentMenu(id)
		}
		case 3: {
			if(WeaponKey[id][WPN_PRIMARY][2] && WeaponKey[id][WPN_SECONDARY][2] && WeaponKey[id][WPN_KNIFE][2]) {
				ShowMenu[id] = false
				GiveLastWeapons(id)
			}
			else EquipmentMenu(id)
		}
	}
	return PLUGIN_HANDLED;
}

public PrimaryWeaponMenu(id, VIP) {
	if(is_user_alive(id) && get_user_team(id) == TEAM_ANTIFURIEN && !HasChoose[id][WPN_PRIMARY][2]) {
		menu_cancel(id);
		
		Menu = menu_create("\rPrimar", "PrimaryCmd");
		
		if(VIP == 0) {
			new UltimateWeapon = 0, VIPWeapon = 0
			for(new i = 1; i < Weapons[WPN_PRIMARY]; i++) {
				if(WeaponTeam:str_to_num(PrimaryWeapon[WPN_TEAM]) != WPN_TEAM_T && WeaponAcces:str_to_num(PrimaryWeapon[WPN_ACCES]) == WPN_ACCES_ADMIN)
					UltimateWeapon++
				if(WeaponTeam:str_to_num(PrimaryWeapon[WPN_TEAM]) != WPN_TEAM_T && WeaponAcces:str_to_num(PrimaryWeapon[WPN_ACCES]) == WPN_ACCES_VIP)
					VIPWeapon++
			}
			
			if(UltimateWeapon) {
				if(get_user_flags(id) & ADMIN_LEVEL)
					menu_additem(Menu, "\rUltimate Weapons", "-2", 0);
				else
					menu_additem(Menu, "\dUltimate Weapons \w- \rOnly ADMIN", "-2", 0);
				
			}
			if(VIPWeapon) {
				if(get_user_flags(id) & VIP_LEVEL)
					menu_additem(Menu, "\rVIP Weapons", "-1", 0);
				else
					menu_additem(Menu, "\dVIP Weapons \w- \rOnly VIP", "-1", 0);
				
			}
			if(UltimateWeapon || VIPWeapon)
				menu_addblank(Menu, 0);
			
			menu_setprop(Menu, MPROP_EXIT, MEXIT_NEVER)
		}
		else {
			menu_setprop(Menu, MPROP_EXITNAME, "Meniu Principal")
			menu_setprop(Menu, MPROP_EXIT, MEXIT_ALL)
		}
		
		#if defined POWERS
		for(new i = 0; i < MAX_LEVEL; i++) {
			for(new k = 1; k < Weapons[WPN_PRIMARY]; k++) {
				if(str_to_num(PrimaryWeapon[k][WPN_LEVEL]) == i && WeaponTeam:str_to_num(PrimaryWeapon[k][WPN_TEAM]) != WPN_TEAM_T && str_to_num(PrimaryWeapon[k][WPN_ACCES]) == VIP)
					AddWeapon(id, Menu, PrimaryWeapon[k][WPN_MENUNAME], PrimaryWeapon[k][WPN_ACCES], PrimaryWeapon[k][WPN_LEVEL], k);
			}
		}
		#else
		for(new i = 1; i < Weapons[WPN_PRIMARY]; i++) {
			if(WeaponTeam:str_to_num(PrimaryWeapon[WPN_TEAM]) != WPN_TEAM_T && str_to_num(PrimaryWeapon[WPN_ACCES]) == VIP)
				AddWeapon(id, Menu, PrimaryWeapon[WPN_MENUNAME], PrimaryWeapon[i][WPN_ACCES], PrimaryWeapon[i][WPN_LEVEL], i);
		}
		#endif
		menu_display(id, Menu, 0);
	}
}

public PrimaryCmd(id, menu, item) {
	if(!is_user_alive(id) || get_user_team(id) != TEAM_ANTIFURIEN || HasChoose[id][WPN_PRIMARY][2]) {
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	else if(item == MENU_EXIT) {
		menu_destroy(menu);
		PrimaryWeaponMenu(id, 0)
		return PLUGIN_HANDLED;
	}
	new Data[6], Name[64], Access, CallBack;
	menu_item_getinfo(menu, item, Access, Data, 5, Name, 63, CallBack);
	menu_destroy(menu);
	
	if(equal(Data, "-2")) {
		if(get_user_flags(id) & ADMIN_LEVEL)
			PrimaryWeaponMenu(id, 2)
		else {
			if(!HasChoose[id][WPN_PRIMARY][2])
				PrimaryWeaponMenu(id, 0)
			else if(!HasChoose[id][WPN_SECONDARY][2])
				SecondaryWeaponMenu(id)
			else if(!HasChoose[id][WPN_KNIFE][2])
				KnifesMenu(id)
			ColorChat(id, "!t%s!gPentru a cumpara!t Admin!g adauga ID:!tY!M Tau", Prefix, Contact);
		}
	}
	else if(equal(Data, "-1")) {
		if(get_user_flags(id) & VIP_LEVEL)
			PrimaryWeaponMenu(id, 1)
		else {
			if(!HasChoose[id][WPN_PRIMARY][2])
				PrimaryWeaponMenu(id, 0)
			else if(!HasChoose[id][WPN_SECONDARY][2])
				SecondaryWeaponMenu(id)
			else if(!HasChoose[id][WPN_KNIFE][2])
				KnifesMenu(id)
			ColorChat(id, "!t%s!gPentru a cumpara!t VIP!g adauga ID:!tY!M Tau", Prefix, Contact);
		}
	}
	else {
		GivePrimary(id, str_to_num(Data))
		
		if(!HasChoose[id][WPN_PRIMARY][2])
			PrimaryWeaponMenu(id, 0)
		else
			SecondaryWeaponMenu(id)
	}
	return PLUGIN_HANDLED;
}

public SecondaryWeaponMenu(id) {
	if(is_user_alive(id)  && get_user_team(id) == TEAM_ANTIFURIEN && !HasChoose[id][WPN_SECONDARY][2]) {
		menu_cancel(id);
		
		Menu = menu_create("\rSecundar", "SecondaryCmd");
		
		#if defined POWERS		
		for(new i = 0; i < MAX_LEVEL; i++) {
			for(new k = 1; k < Weapons[WPN_SECONDARY]; k++) {
				if(WeaponTeam:str_to_num(SecondaryWeapon[k][WPN_TEAM]) != WPN_TEAM_T && str_to_num(SecondaryWeapon[k][WPN_LEVEL]) == i)
					AddWeapon(id, Menu, SecondaryWeapon[k][WPN_MENUNAME], SecondaryWeapon[k][WPN_ACCES], SecondaryWeapon[k][WPN_LEVEL], k);
			}
		}		
		#else
		for(new i = 1; i < Weapons[WPN_SECONDARY]; i++) {
			if(WeaponTeam:str_to_num(SecondaryWeapon[i][WPN_TEAM]) != WPN_TEAM_T)
				AddWeapon(id, Menu, SecondaryWeapon[i][WPN_MENUNAME], SecondaryWeapon[i][WPN_ACCES], SecondaryWeapon[i][WPN_LEVEL], i);
		}
		#endif
		menu_setprop(Menu, MPROP_EXIT, MEXIT_NEVER)
		menu_display(id, Menu, 0);
	}
	return PLUGIN_CONTINUE;
}

public SecondaryCmd(id, menu, item) {
	if(item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != TEAM_ANTIFURIEN || HasChoose[id][WPN_SECONDARY][2]) {
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	new Data[6], Name[64], Access, CallBack;
	menu_item_getinfo(menu, item, Access, Data, 5, Name, 63, CallBack);
	menu_destroy(menu);
	
	GiveSecondary(id, str_to_num(Data))
	
	if(!HasChoose[id][WPN_SECONDARY][2])
		SecondaryWeaponMenu(id)
	else
		KnifesMenu(id)
	
	return PLUGIN_HANDLED;
}

public KnifesMenu(id) {
	if(is_user_alive(id)  && get_user_team(id) == TEAM_ANTIFURIEN && !HasChoose[id][WPN_KNIFE][2]) {
		menu_cancel(id);
		
		Menu = menu_create("\rCutit", "KnifesCmd");
		
		#if defined POWERS		
		for(new i = 0; i < MAX_LEVEL; i++) {
			for(new k = 1; k < Weapons[WPN_KNIFE]; k++) {
				if(WeaponTeam:str_to_num(Knife[k][WPN_TEAM]) != WPN_TEAM_T && str_to_num(Knife[k][WPN_LEVEL]) == i)
					AddWeapon(id, Menu, Knife[k][WPN_MENUNAME], Knife[k][WPN_ACCES], Knife[k][WPN_LEVEL], k);
			}
		}
		#else
		for(new i = 1; i < Weapons[WPN_KNIFE]; i++) {
			if(WeaponTeam:str_to_num(Knife[i][WPN_TEAM]) != WPN_TEAM_T)
				AddWeapon(id, Menu, Knife[i][WPN_MENUNAME], Knife[i][WPN_ACCES], Knife[i][WPN_LEVEL], i);
		}
		#endif
		menu_setprop(Menu, MPROP_EXIT, MEXIT_NEVER)
		menu_display(id, Menu, 0);
	}
	return PLUGIN_CONTINUE;
}

public KnifesCmd(id, menu, item) {
	if(item == MENU_EXIT || !is_user_alive(id) || get_user_team(id) != TEAM_ANTIFURIEN || HasChoose[id][WPN_KNIFE][2]) {
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	new Data[6], Name[64], Access, CallBack;
	menu_item_getinfo(menu, item, Access, Data,5, Name, 63, CallBack);
	menu_destroy(menu);
	
	GiveKnife(id, str_to_num(Data))
	
	if(!HasChoose[id][WPN_KNIFE][2])
		KnifesMenu(id)
	return PLUGIN_HANDLED;
}

public GiveLastWeapons(id) {
	if(!HasChoose[id][WPN_PRIMARY][2] && WeaponKey[id][WPN_PRIMARY][2] != -1)
		GivePrimary(id, WeaponKey[id][WPN_PRIMARY][2])
	if(!HasChoose[id][WPN_SECONDARY][2] && WeaponKey[id][WPN_SECONDARY][2] != -1)
		GiveSecondary(id, WeaponKey[id][WPN_SECONDARY][2])
	if(!HasChoose[id][WPN_KNIFE][2] && WeaponKey[id][WPN_KNIFE][2] != -1)
		GiveKnife(id, WeaponKey[id][WPN_KNIFE][2])
	
	if(!HasChoose[id][WPN_PRIMARY][2]) {
		WeaponKey[id][WPN_PRIMARY][2] = -1
		PrimaryWeaponMenu(id, 0)
	}
	else if(!HasChoose[id][WPN_SECONDARY][2]) {
		WeaponKey[id][WPN_SECONDARY][2] = -1
		SecondaryWeaponMenu(id)
	}
	else if(!HasChoose[id][WPN_KNIFE][2]) {
		WeaponKey[id][WPN_KNIFE][2] = -1
		KnifesMenu(id)
	}
}

public native_register_primary(MenuName[], WeaponTeam:Team, WeaponAcces:Acces, Level[], WeaponName[], WeaponID, Weapon_List[], WeaponClip[]) {
	param_convert(1)
	param_convert(4)
	param_convert(5)
	param_convert(7)
	param_convert(8)
	
	return RegisterPrimary(MenuName, Team, Acces, Level, WeaponName, WeaponID, Weapon_List, WeaponClip)
}

public native_register_secondary(MenuName[], WeaponTeam:Team, WeaponAcces:Acces, Level[], WeaponName[], WeaponID, Weapon_List[], WeaponClip[]) {
	param_convert(1)
	param_convert(4)
	param_convert(5)
	param_convert(7)
	param_convert(8)
	
	return RegisterSecondary(MenuName, Team, Acces, Level, WeaponName, WeaponID, Weapon_List, WeaponClip)
}

public native_register_knife(MenuName[], WeaponTeam:Team, WeaponAcces:Acces, Level[], Weapon_List[]) {
	param_convert(1)
	param_convert(4)
	param_convert(5)
	
	return RegisterKnife(MenuName, Team, Acces, Level, Weapon_List)
}

public native_register_grenade(MenuName[], WeaponTeam:Team, WeaponAcces:Acces, Level[], WeaponName[], WeaponID, Weapon_List[]) {
	param_convert(1)
	param_convert(4)
	param_convert(5)
	param_convert(7)
	
	return RegisterGrenade(MenuName, Team, Acces, Level, WeaponName, WeaponID, Weapon_List)
}

public native_register_c4(MenuName[], WeaponTeam:Team, WeaponAcces:Acces, Level[], Weapon_List[]) {
	param_convert(1)
	param_convert(4)
	param_convert(5)
	
	return RegisterC4(MenuName, Team, Acces, Level, Weapon_List)
}

public get_weapon(id, weapon_[], CSW_, WeaponID) {
	if(is_user_connected(id)) {
		new Weapon = find_ent_by_owner(-1, weapon_, id);
		
		if(is_user_alive(id) && user_has_weapon(id, CSW_) && pev_valid(Weapon))
			return entity_get_int(Weapon, EV_INT_impulse) == WeaponID ? true : false
	}
	return false
}

public set_weapon(id, WeaponsList:WeaponSet, WeaponID) {
	switch(WeaponSet) {	
		case WPN_PRIMARY:
			return GivePrimary(id, WeaponID)
		case WPN_SECONDARY:
			return GiveSecondary(id, WeaponID)
		case WPN_KNIFE:
			return GiveKnife(id, WeaponID)
		case WPN_GRENADE:
			return GiveGrenade(id, WeaponID)
		case WPN_C4:
			return GiveC4(id, WeaponID)
	}
	return false
}

public get_weapon_data(WeaponsList:WeaponSet, WeaponID, WeaponData:Data, Buffer[], len) {
	param_convert(4)
	
	if(WeaponID > -1 && WeaponID < Weapons[WeaponSet]) {
		switch(WeaponSet) {
			case WPN_PRIMARY: 
				format(Buffer, len, PrimaryWeapon[WeaponID][Data])
			case WPN_SECONDARY: 
				format(Buffer, len, SecondaryWeapon[WeaponID][Data])
			case WPN_KNIFE: 
				format(Buffer, len, Knife[WeaponID][Data])
			case WPN_GRENADE: 
				format(Buffer, len, Grenade[WeaponID][Data])
			case WPN_C4: 
				format(Buffer, len, C4[WeaponID][Data])
		}
	}
}

public set_weapon_data(WeaponsList:WeaponSet, WeaponID, WeaponData:Data, Buffer[]) {
	param_convert(4)
	
	if(WeaponID > -1 && WeaponID < Weapons[WeaponSet]) {
		switch(WeaponSet) {
			case WPN_PRIMARY: 
				format(PrimaryWeapon[WeaponID][Data], 32, Buffer)
			case WPN_SECONDARY: 
				format(PrimaryWeapon[WeaponID][Data], 32, Buffer)
			case WPN_KNIFE: 
				format(PrimaryWeapon[WeaponID][Data], 32, Buffer)
			case WPN_GRENADE: 
				format(Grenade[WeaponID][Data], 32, Buffer)
			case WPN_C4: 
				format(C4[WeaponID][Data], 32, Buffer)
		}
	}
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Stock's |
//==========================================================================================================
public AddWeapon(id, Menu, Name[], Acces[], Level[], WeaponID) {
	new Weapon[64], Num[32];
	if(WeaponAcces:str_to_num(Acces) == WPN_ACCES_VIP && !(get_user_flags(id) & VIP_LEVEL))
		formatex(Weapon, sizeof(Weapon)-1, "\d%s \w- \rOnly VIP", Name);
	else if(WeaponAcces:str_to_num(Acces) == WPN_ACCES_ADMIN && !(get_user_flags(id) & ADMIN_LEVEL))
		formatex(Weapon, sizeof(Weapon)-1, "\d%s \w- \rOnly ADMIN", Name);
	#if defined POWERS
	else if(get_user_level(id) < (str_to_num(Level) > MAX_LEVEL ? MAX_LEVEL : str_to_num(Level)))
		formatex(Weapon, sizeof(Weapon)-1, "\d%s \w- \rLocked \r[\yLevel: \r%d]", Name, (str_to_num(Level) > MAX_LEVEL) ? MAX_LEVEL : str_to_num(Level));
	#endif
	else
		formatex(Weapon, sizeof(Weapon)-1, "\w%s", Name);
	formatex(Num, sizeof(Num)-1, "%d", WeaponID);
	
	menu_additem(Menu, Weapon, Num, 0);
	return
}

public CanAcces(id, Team[], Acces[], Level[]) {
	if(WeaponAcces:str_to_num(Acces) == WPN_ACCES_VIP && !(get_user_flags(id) & VIP_LEVEL) || WeaponAcces:str_to_num(Acces) == WPN_ACCES_ADMIN && !(get_user_flags(id) & ADMIN_LEVEL))
		return false;
	if(WeaponTeam:str_to_num(Team) == WPN_TEAM_T && WeaponTeam:get_user_team(id) != WPN_TEAM_T || WeaponTeam:str_to_num(Team) == WPN_TEAM_CT && WeaponTeam:get_user_team(id) != WPN_TEAM_CT)
		return false;
	#if defined POWERS
	else if(get_user_level(id) < (str_to_num(Level) > MAX_LEVEL ? MAX_LEVEL : str_to_num(Level)))
		return false;
	#endif
	return true;
}

stock RegisterPrimary(MenuName[], WeaponTeam:Team, WeaponAcces:Acces, Level[] = "0", WeaponName[], WeaponID, Weapon_List[] = "None", WeaponClip[] = "0") {
	if(Weapons[WPN_PRIMARY] < 1)
		Weapons[WPN_PRIMARY] = 1
	
	format(PrimaryWeapon[Weapons[WPN_PRIMARY]][WPN_MENUNAME], 	32, MenuName)
	if(Team > WeaponTeam || Team < WPN_TEAM_ALL)
		format(PrimaryWeapon[Weapons[WPN_PRIMARY]][WPN_TEAM], 	32, "%d", WPN_TEAM_ALL)
	else
		format(PrimaryWeapon[Weapons[WPN_PRIMARY]][WPN_TEAM], 	32, "%d", Team)
	if(Acces > WeaponAcces || Acces < WPN_ACCES_ALL)
		format(PrimaryWeapon[Weapons[WPN_PRIMARY]][WPN_ACCES], 	32, "%d", WPN_ACCES_ALL)
	else
		format(PrimaryWeapon[Weapons[WPN_PRIMARY]][WPN_ACCES], 	32, "%d", Acces)
	format(PrimaryWeapon[Weapons[WPN_PRIMARY]][WPN_LEVEL], 		32, Level)
	format(PrimaryWeapon[Weapons[WPN_PRIMARY]][WPN_NAME], 		32, WeaponName)
	format(PrimaryWeapon[Weapons[WPN_PRIMARY]][WPN_ID], 		32, "%d", WeaponID)
	format(PrimaryWeapon[Weapons[WPN_PRIMARY]][WPN_LIST], 		32, Weapon_List)
	format(PrimaryWeapon[Weapons[WPN_PRIMARY]][WPN_CLIP], 		32, WeaponClip)
	Weapons[WPN_PRIMARY]++
	
	return Weapons[WPN_PRIMARY] - 1
}

stock RegisterSecondary(MenuName[], WeaponTeam:Team, WeaponAcces:Acces, Level[] = "0", WeaponName[], WeaponID, Weapon_List[] = "None", WeaponClip[] = "0") {
	if(Weapons[WPN_SECONDARY] < 1)
		Weapons[WPN_SECONDARY] = 1
	
	format(SecondaryWeapon[Weapons[WPN_SECONDARY]][WPN_MENUNAME], 		32, MenuName)
	if(Team > WeaponTeam || Team < WPN_TEAM_ALL)
		format(SecondaryWeapon[Weapons[WPN_SECONDARY]][WPN_TEAM], 	32, "%d", WPN_TEAM_ALL)
	else
		format(SecondaryWeapon[Weapons[WPN_SECONDARY]][WPN_TEAM], 	32, "%d", Team)
	if(Acces > WeaponAcces || Acces < WPN_ACCES_ALL)
		format(SecondaryWeapon[Weapons[WPN_SECONDARY]][WPN_ACCES], 	32, "%d", WPN_ACCES_ALL)
	else
		format(SecondaryWeapon[Weapons[WPN_SECONDARY]][WPN_ACCES], 	32, "%d", Acces)
	format(SecondaryWeapon[Weapons[WPN_SECONDARY]][WPN_LEVEL], 		32, Level)
	format(SecondaryWeapon[Weapons[WPN_SECONDARY]][WPN_NAME], 		32, WeaponName)
	format(SecondaryWeapon[Weapons[WPN_SECONDARY]][WPN_ID], 		32, "%d", WeaponID)
	format(SecondaryWeapon[Weapons[WPN_SECONDARY]][WPN_LIST], 		32, Weapon_List)
	format(SecondaryWeapon[Weapons[WPN_SECONDARY]][WPN_CLIP], 		32, WeaponClip)
	Weapons[WPN_SECONDARY]++
	
	return Weapons[WPN_SECONDARY] - 1
}

stock RegisterKnife(MenuName[], WeaponTeam:Team, WeaponAcces:Acces, Level[] = "0", Weapon_List[] = "None") {
	if(Weapons[WPN_KNIFE] < 1)
		Weapons[WPN_KNIFE] = 1
	
	format(Knife[Weapons[WPN_KNIFE]][WPN_MENUNAME], 	32, MenuName)
	if(Team > WeaponTeam || Team < WPN_TEAM_ALL)
		format(Knife[Weapons[WPN_KNIFE]][WPN_TEAM], 	32, "%d", WPN_TEAM_ALL)
	else
		format(Knife[Weapons[WPN_KNIFE]][WPN_TEAM], 	32, "%d", Team)
	if(Acces > WeaponAcces || Acces < WPN_ACCES_ALL)
		format(Knife[Weapons[WPN_KNIFE]][WPN_ACCES], 	32, "%d", WPN_ACCES_ALL)
	else
		format(Knife[Weapons[WPN_KNIFE]][WPN_ACCES], 	32, "%d", Acces)
	format(Knife[Weapons[WPN_KNIFE]][WPN_LEVEL], 		32, Level)
	format(Knife[Weapons[WPN_KNIFE]][WPN_LIST], 		32, Weapon_List)
	Weapons[WPN_KNIFE]++
	
	return Weapons[WPN_KNIFE] - 1
}

stock RegisterGrenade(MenuName[], WeaponTeam:Team, WeaponAcces:Acces, Level[] = "0", WeaponName[], WeaponID, Weapon_List[] = "None") {
	if(Weapons[WPN_GRENADE] < 1)
		Weapons[WPN_GRENADE] = 1
	
	format(Grenade[Weapons[WPN_GRENADE]][WPN_MENUNAME], 		32, MenuName)
	if(Team > WeaponTeam || Team < WPN_TEAM_ALL)
		format(Grenade[Weapons[WPN_GRENADE]][WPN_TEAM], 	32, "%d", WPN_TEAM_ALL)
	else
		format(Grenade[Weapons[WPN_GRENADE]][WPN_TEAM], 	32, "%d", Team)
	if(Acces > WeaponAcces || Acces < WPN_ACCES_ALL)
		format(Grenade[Weapons[WPN_GRENADE]][WPN_ACCES], 	32, "%d", WPN_ACCES_ALL)
	else
		format(Grenade[Weapons[WPN_GRENADE]][WPN_ACCES], 	32, "%d", Acces)
	format(Grenade[Weapons[WPN_GRENADE]][WPN_LEVEL], 		32, Level)
	format(Grenade[Weapons[WPN_GRENADE]][WPN_NAME], 		32, WeaponName)
	format(Grenade[Weapons[WPN_GRENADE]][WPN_ID], 			32, "%d", WeaponID)
	format(Grenade[Weapons[WPN_GRENADE]][WPN_LIST], 		32, Weapon_List)
	Weapons[WPN_GRENADE]++
	
	return Weapons[WPN_GRENADE] - 1
}

stock RegisterC4(MenuName[], WeaponTeam:Team, WeaponAcces:Acces, Level[] = "0", Weapon_List[] = "None") {
	if(Weapons[WPN_C4] < 1)
		Weapons[WPN_C4] = 1
	
	format(C4[Weapons[WPN_C4]][WPN_MENUNAME], 	32, MenuName)
	if(Team > WeaponTeam || Team < WPN_TEAM_ALL)
		format(C4[Weapons[WPN_C4]][WPN_TEAM], 	32, "%d", WPN_TEAM_ALL)
	else
		format(C4[Weapons[WPN_C4]][WPN_TEAM], 	32, "%d", Team)
	if(Acces > WeaponAcces || Acces < WPN_ACCES_ALL)
		format(C4[Weapons[WPN_C4]][WPN_ACCES], 	32, "%d", WPN_ACCES_ALL)
	else
		format(C4[Weapons[WPN_C4]][WPN_ACCES], 	32, "%d", Acces)
	format(C4[Weapons[WPN_C4]][WPN_LEVEL], 		32, Level)
	format(C4[Weapons[WPN_C4]][WPN_LIST], 		32, Weapon_List)
	Weapons[WPN_C4]++
	
	return Weapons[WPN_C4] - 1
}

public GivePrimary(id, WeaponID) {
	if(is_user_alive(id)) {
		if(WeaponID > 0 && WeaponID < Weapons[WPN_PRIMARY]) {
			if(CanAcces(id, PrimaryWeapon[WeaponID][WPN_TEAM], PrimaryWeapon[WeaponID][WPN_ACCES], PrimaryWeapon[WeaponID][WPN_LEVEL])) {
				new Weapon, Impulse = entity_get_int(id, EV_INT_impulse)
				HasChoose[id][WPN_PRIMARY][get_user_team(id)] = true
				WeaponKey[id][WPN_PRIMARY][get_user_team(id)] = WeaponID
				/*if(get_user_team(id) == TEAM_FURIEN)
					special_primary(id, true)*/
				
				drop_primary_weapons(id);
				
				if(equal(PrimaryWeapon[WeaponID][WPN_LIST], "None"))
					WeaponList(id, str_to_num(PrimaryWeapon[WeaponID][WPN_ID]), PrimaryWeapon[WeaponID][WPN_NAME], 0)
				else
					WeaponList(id, str_to_num(PrimaryWeapon[WeaponID][WPN_ID]), PrimaryWeapon[WeaponID][WPN_LIST], 0)
				
				entity_set_int(id, EV_INT_impulse, WeaponID);
				Weapon = fm_give_item(id, PrimaryWeapon[WeaponID][WPN_NAME]);
				entity_set_int(Weapon, EV_INT_impulse, WeaponID)
				entity_set_int(id, EV_INT_impulse, Impulse);
				
				if(!equal(PrimaryWeapon[WeaponID][WPN_CLIP], "0"))
					cs_set_weapon_ammo(Weapon, str_to_num(PrimaryWeapon[WeaponID][WPN_CLIP]))
				return true
			}
		}
	}
	return false
}

public GiveSecondary(id, WeaponID) {
	if(is_user_alive(id)) {
		if(WeaponID > 0 && WeaponID < Weapons[WPN_SECONDARY]) {
			if(CanAcces(id, SecondaryWeapon[WeaponID][WPN_TEAM], SecondaryWeapon[WeaponID][WPN_ACCES], SecondaryWeapon[WeaponID][WPN_LEVEL])) {
				new Weapon, Impulse = entity_get_int(id, EV_INT_impulse)
				HasChoose[id][WPN_SECONDARY][get_user_team(id)] = true
				WeaponKey[id][WPN_SECONDARY][get_user_team(id)] = WeaponID
				/*if(get_user_team(id) == TEAM_FURIEN)
					special_secondary(id, true)*/
				
				drop_secondary_weapons(id);
				
				if(equal(SecondaryWeapon[WeaponID][WPN_LIST], "None"))
					WeaponList(id, str_to_num(SecondaryWeapon[WeaponID][WPN_ID]), SecondaryWeapon[WeaponID][WPN_NAME], 0)
				else
					WeaponList(id, str_to_num(SecondaryWeapon[WeaponID][WPN_ID]), SecondaryWeapon[WeaponID][WPN_LIST], 0)
				
				entity_set_int(id, EV_INT_impulse, WeaponID);
				Weapon = fm_give_item(id, SecondaryWeapon[WeaponID][WPN_NAME]);
				entity_set_int(Weapon, EV_INT_impulse, WeaponID)
				entity_set_int(id, EV_INT_impulse, Impulse);
				
				if(!equal(SecondaryWeapon[WeaponID][WPN_CLIP], "0"))
					cs_set_weapon_ammo(Weapon, str_to_num(SecondaryWeapon[WeaponID][WPN_CLIP]))
				return true
			}
		}
	}
	return false
}

public GiveKnife(id, WeaponID) {
	if(is_user_alive(id)) {
		if(WeaponID > 0 && WeaponID < Weapons[WPN_KNIFE]) {
			if(CanAcces(id, Knife[WeaponID][WPN_TEAM], Knife[WeaponID][WPN_ACCES], Knife[WeaponID][WPN_LEVEL])) {
				new Weapon, Impulse = entity_get_int(id, EV_INT_impulse)
				HasChoose[id][WPN_KNIFE][get_user_team(id)] = true
				WeaponKey[id][WPN_KNIFE][get_user_team(id)] = WeaponID
				
				bacon_strip_weapon(id, "weapon_knife");
				
				if(equal(Knife[WeaponID][WPN_LIST], "None"))
					WeaponList(id, CSW_KNIFE, Knife[WeaponID][WPN_NAME], 0)
				else
					WeaponList(id, CSW_KNIFE, Knife[WeaponID][WPN_LIST], 0)
				
				entity_set_int(id, EV_INT_impulse, WeaponID);
				Weapon = fm_give_item(id, "weapon_knife");
				entity_set_int(Weapon, EV_INT_impulse, WeaponID)
				entity_set_int(id, EV_INT_impulse, Impulse);
				return true
			}
		}
	}
	return false
}

public GiveGrenade(id, WeaponID) {
	if(is_user_alive(id)) {
		if(WeaponID > 0 && WeaponID < Weapons[WPN_GRENADE]) {
			if(CanAcces(id, Grenade[WeaponID][WPN_TEAM], Grenade[WeaponID][WPN_ACCES], Grenade[WeaponID][WPN_LEVEL])) {
				new Weapon, Impulse = entity_get_int(id, EV_INT_impulse)
				HasChoose[id][WPN_GRENADE][get_user_team(id)] = true
				WeaponKey[id][WPN_GRENADE][get_user_team(id)] = WeaponID
				
				bacon_strip_weapon(id, Grenade[WeaponID][WPN_NAME]);
				
				if(equal(Grenade[WeaponID][WPN_LIST], "None"))
					WeaponList(id, str_to_num(Grenade[WeaponID][WPN_ID]), Grenade[WeaponID][WPN_NAME], 0)
				else
					WeaponList(id, str_to_num(Grenade[WeaponID][WPN_ID]), Grenade[WeaponID][WPN_LIST], 0)
				
				entity_set_int(id, EV_INT_impulse, WeaponID);
				Weapon = fm_give_item(id, Grenade[WeaponID][WPN_NAME]);
				entity_set_int(Weapon, EV_INT_impulse, WeaponID)
				entity_set_int(id, EV_INT_impulse, Impulse);
				return true
			}
		}
	}
	return false
}

public GiveC4(id, WeaponID) {
	if(is_user_alive(id)) {
		if(WeaponID > 0 && WeaponID < Weapons[WPN_C4]) {
			if(CanAcces(id, C4[WeaponID][WPN_TEAM], C4[WeaponID][WPN_ACCES], C4[WeaponID][WPN_LEVEL])) {
				new Weapon, Impulse = entity_get_int(id, EV_INT_impulse)
				HasChoose[id][WPN_C4][get_user_team(id)] = true
				WeaponKey[id][WPN_C4][get_user_team(id)] = WeaponID
				
				bacon_strip_weapon(id, "weapon_c4");
				
				if(equal(C4[WeaponID][WPN_LIST], "None"))
					WeaponList(id, CSW_C4, C4[WeaponID][WPN_NAME], 0)
				else
					WeaponList(id, CSW_C4, C4[WeaponID][WPN_LIST], 0)
				
				entity_set_int(id, EV_INT_impulse, WeaponID);
				Weapon = fm_give_item(id, "weapon_c4");
				entity_set_int(Weapon, EV_INT_impulse, WeaponID)
				entity_set_int(id, EV_INT_impulse, Impulse);
				return true
			}
		}
	}
	return false
}

stock WeaponList(id, CSW_WEAPON, const Weapon[], Flag=0) {
	switch(CSW_WEAPON) {
		case CSW_P228: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(9);			// PrimaryAmmoID
			write_byte(52);			// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(1);			// SlotID (0...N)
			write_byte(3);			// NumberInSlot (1...N)
			write_byte(CSW_P228);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_SCOUT: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(2);			// PrimaryAmmoID
			write_byte(90);			// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(0);			// SlotID (0...N)
			write_byte(9);			// NumberInSlot (1...N)
			write_byte(CSW_SCOUT);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_HEGRENADE: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(12);			// PrimaryAmmoID
			write_byte(1);			// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(3);			// SlotID (0...N)
			write_byte(1);			// NumberInSlot (1...N)
			write_byte(CSW_HEGRENADE);	// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_XM1014: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(5);			// PrimaryAmmoID
			write_byte(32);			// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(0);			// SlotID (0...N)
			write_byte(12);			// NumberInSlot (1...N)
			write_byte(CSW_XM1014);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_C4: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(14);			// PrimaryAmmoID
			write_byte(1);			// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(4);			// SlotID (0...N)
			write_byte(3);			// NumberInSlot (1...N)
			write_byte(CSW_C4);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_MAC10: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(6);			// PrimaryAmmoID
			write_byte(100);		// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(0);			// SlotID (0...N)
			write_byte(13);			// NumberInSlot (1...N)
			write_byte(CSW_MAC10);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_AUG: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(4);			// PrimaryAmmoID
			write_byte(90);			// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(0);			// SlotID (0...N)
			write_byte(14);			// NumberInSlot (1...N)
			write_byte(CSW_AUG);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_SMOKEGRENADE: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(13);			// PrimaryAmmoID
			write_byte(1);			// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(3);			// SlotID (0...N)
			write_byte(3);			// NumberInSlot (1...N)
			write_byte(CSW_SMOKEGRENADE);	// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_ELITE: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(10);			// PrimaryAmmoID
			write_byte(120);		// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(1);			// SlotID (0...N)
			write_byte(5);			// NumberInSlot (1...N)
			write_byte(CSW_ELITE);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_FIVESEVEN: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(7);			// PrimaryAmmoID
			write_byte(100);		// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(1);			// SlotID (0...N)
			write_byte(6);			// NumberInSlot (1...N)
			write_byte(CSW_FIVESEVEN);	// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_UMP45: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(6);			// PrimaryAmmoID
			write_byte(100);		// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(0);			// SlotID (0...N)
			write_byte(15);			// NumberInSlot (1...N)
			write_byte(CSW_UMP45);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_SG550: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(4);			// PrimaryAmmoID
			write_byte(90);			// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(0);			// SlotID (0...N)
			write_byte(16);			// NumberInSlot (1...N)
			write_byte(CSW_SG550);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_GALIL: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(4);			// PrimaryAmmoID
			write_byte(90);			// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(0);			// SlotID (0...N)
			write_byte(17);			// NumberInSlot (1...N)
			write_byte(CSW_GALIL);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_FAMAS: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(4);			// PrimaryAmmoID
			write_byte(90);			// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(0);			// SlotID (0...N)
			write_byte(18);			// NumberInSlot (1...N)
			write_byte(CSW_FAMAS);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_USP: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(6);			// PrimaryAmmoID
			write_byte(100);		// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(1);			// SlotID (0...N)
			write_byte(4);			// NumberInSlot (1...N)
			write_byte(CSW_USP);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_GLOCK18: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(10);			// PrimaryAmmoID
			write_byte(120);		// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(1);			// SlotID (0...N)
			write_byte(2);			// NumberInSlot (1...N)
			write_byte(CSW_GLOCK18);	// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_AWP: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(1);			// PrimaryAmmoID
			write_byte(30);			// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(0);			// SlotID (0...N)
			write_byte(2);			// NumberInSlot (1...N)
			write_byte(CSW_AWP);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_MP5NAVY: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(10);			// PrimaryAmmoID
			write_byte(120);		// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(0);			// SlotID (0...N)
			write_byte(7);			// NumberInSlot (1...N)
			write_byte(CSW_MP5NAVY);	// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_M249: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(3);			// PrimaryAmmoID
			write_byte(200);		// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(0);			// SlotID (0...N)
			write_byte(4);			// NumberInSlot (1...N)
			write_byte(CSW_M249);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_M3: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(5);			// PrimaryAmmoID
			write_byte(32);			// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(0);			// SlotID (0...N)
			write_byte(5);			// NumberInSlot (1...N)
			write_byte(CSW_M3);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_M4A1: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(4);			// PrimaryAmmoID
			write_byte(90);			// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(0);			// SlotID (0...N)
			write_byte(6);			// NumberInSlot (1...N)
			write_byte(CSW_M4A1);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_TMP: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(10);			// PrimaryAmmoID
			write_byte(120);		// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(0);			// SlotID (0...N)
			write_byte(11);			// NumberInSlot (1...N)
			write_byte(CSW_TMP);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_G3SG1: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(2);			// PrimaryAmmoID
			write_byte(90);			// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(0);			// SlotID (0...N)
			write_byte(3);			// NumberInSlot (1...N)
			write_byte(CSW_G3SG1);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_FLASHBANG: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(11);			// PrimaryAmmoID
			write_byte(2);			// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(3);			// SlotID (0...N)
			write_byte(2);			// NumberInSlot (1...N)
			write_byte(CSW_FLASHBANG);	// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_DEAGLE: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(8);			// PrimaryAmmoID
			write_byte(35);			// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(1);			// SlotID (0...N)
			write_byte(1);			// NumberInSlot (1...N)
			write_byte(CSW_DEAGLE);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_SG552: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(4);			// PrimaryAmmoID
			write_byte(90);			// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(0);			// SlotID (0...N)
			write_byte(10);			// NumberInSlot (1...N)
			write_byte(CSW_SG552);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_AK47: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(2);			// PrimaryAmmoID
			write_byte(90);			// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(0);			// SlotID (0...N)
			write_byte(1);			// NumberInSlot (1...N)
			write_byte(CSW_AK47);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_KNIFE: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(-1);			// PrimaryAmmoID
			write_byte(-1);			// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(2);			// SlotID (0...N)
			write_byte(1);			// NumberInSlot (1...N)
			write_byte(CSW_KNIFE);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
		case CSW_P90: {
			message_begin(MSG_ONE, MSGID_WeaponList, _, id);
			write_string(Weapon);		// WeaponName
			write_byte(7);			// PrimaryAmmoID
			write_byte(100);		// PrimaryAmmoMaxAmount
			write_byte(-1);			// SecondaryAmmoID
			write_byte(-1);			// SecondaryAmmoMaxAmount
			write_byte(0);			// SlotID (0...N)
			write_byte(8);			// NumberInSlot (1...N)
			write_byte(CSW_P90);		// WeaponID
			write_byte(Flag);		// Flags
			message_end();
		}
	}
}

public death_message(killer, victim, const WeaponName[]) {
	if(is_user_connected(killer) && is_user_alive(victim)) {
		set_msg_block(MSGID_DeathMsg, BLOCK_SET);
		ExecuteHamB(Ham_Killed, victim, killer);
		set_msg_block(MSGID_DeathMsg, BLOCK_NOT);
		cs_set_user_money(killer, cs_get_user_money(killer) + 300);
		
		make_deathmsg(killer, victim, 0, WeaponName);
		
		message_begin(MSG_BROADCAST, 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, 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();
	}
}

public make_knockback(id, Float:origin[3], Float:maxspeed) {
	if(is_user_alive(id)) {
		new Float:Velocity[3], Float:Origin[3], Float:Distance[3],
		Float:Time = (vector_distance(Origin,origin) / maxspeed);
		entity_get_vector(id, EV_VEC_origin, Origin);
		
		Distance[0] = Origin[0] - origin[0], Distance[1] = Origin[1] - origin[1], Distance[2] = Origin[2] - origin[2];
		Velocity[0] = Distance[0] / Time, Velocity[1] = Distance[1] / Time, Velocity[2] = Distance[2] / Time;
		
		entity_set_vector(id, EV_VEC_velocity, Velocity);
	}
}

public make_blood(id, Amount) {
	if(is_user_alive(id)) {
		new BloodColor = ExecuteHam(Ham_BloodColor, id);
		
		if(BloodColor != -1) {
			new Float:Origin[3]
			pev(id, pev_origin, Origin);
			Amount *= 2; //according to HLSDK
			
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
			write_byte(TE_BLOODSPRITE);
			write_coord(floatround(Origin[0]));
			write_coord(floatround(Origin[1]));
			write_coord(floatround(Origin[2]));
			write_short(BloodSpray);
			write_short(BloodDrop);
			write_byte(BloodColor);
			write_byte(min(max(3, Amount/10), 16));
			message_end();
		}
	}
}

public make_bullet(id, Float:Origin[3]) {
	if(is_user_alive(id)) {
		new Target, Body;
		get_user_aiming(id, Target, Body, 999999);
		
		if(is_user_connected(Target)) {
			new Float:Start[3], Float:End[3], Float:Res[3], Float:Vel[3], Res2;
			pev(id, pev_origin, Start);
			
			velocity_by_aim(id, 64, Vel);
			
			Start[0] = Origin[0];
			Start[1] = Origin[1];
			Start[2] = Origin[2];
			End[0] = Start[0]+Vel[0];
			End[1] = Start[1]+Vel[1];
			End[2] = Start[2]+Vel[2];
			
			engfunc(EngFunc_TraceLine, Start, End, 0, Target, Res2);
			get_tr2(Res2, TR_vecEndPos, Res);
			
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY) ;
			write_byte(TE_BLOODSPRITE);
			write_coord(floatround(Start[0]));
			write_coord(floatround(Start[1]));
			write_coord(floatround(Start[2]));
			write_short(BloodSpray);
			write_short(BloodDrop);
			write_byte(70);
			write_byte(random_num(1,2));
			message_end();
			
			
		} 
		else {
			if(Target) {
				message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
				write_byte(TE_DECAL);
				write_coord(floatround(Origin[0]));
				write_coord(floatround(Origin[1]));
				write_coord(floatround(Origin[2]));
				write_byte(41);
				write_short(Target);
				message_end();
			} 
			else {
				message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
				write_byte(TE_WORLDDECAL);
				write_coord(floatround(Origin[0]));
				write_coord(floatround(Origin[1]));
				write_coord(floatround(Origin[2]));
				write_byte(41);
				message_end();
			}
			
			message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
			write_byte(TE_GUNSHOTDECAL);
			write_coord(floatround(Origin[0]));
			write_coord(floatround(Origin[1]));
			write_coord(floatround(Origin[2]));
			write_short(id);
			write_byte(41);
			message_end();
		}
	}
}

public set_weapon_anim(id, anim) {
	if(is_user_connected(id)) {
		set_pev(id, pev_weaponanim, anim);
		message_begin(MSG_ONE, SVC_WEAPONANIM, _, id);
		write_byte(anim);
		write_byte(pev(id, pev_body));
		message_end();
	}
}

public get_damage_body(body, Float:damage) {
	switch(body) {
		case HIT_HEAD:
			damage *= 2.0;
		case HIT_STOMACH: 
			damage *= 1.0;
		case HIT_CHEST: 
			damage *= 1.5;
		case HIT_LEFTARM: 
			damage *= 0.75;
		case HIT_RIGHTARM: 
			damage *= 0.75;
		case HIT_LEFTLEG: 
			damage *= 0.75;
		case HIT_RIGHTLEG: 
			damage *= 0.75;
		default: damage *= 1.0;
	}
	
	return floatround(damage);
}	

public velocity_to_aim(id, Float:Origin[3], Speed, Float:Velocity[3]) {
	if(is_user_alive(id)) {
		new Float:AimOrigin[3]
		fm_get_aim_origin(id, AimOrigin)
		
		Velocity[0] = AimOrigin[0] - Origin[0]
		Velocity[1] = AimOrigin[1] - Origin[1]
		Velocity[2] = AimOrigin[2] - Origin[2]
		
		new Float:X
		X = floatsqroot(Speed*Speed / (Velocity[0]*Velocity[0] + Velocity[1]*Velocity[1] + Velocity[2]*Velocity[2]))
		
		Velocity[0] *= X
		Velocity[1] *= X
		Velocity[2] *= X
	}
}

public get_position(id, Float:forw, Float:right, Float:up, Float:Start[]) {
	if(is_user_alive(id)) {
		new Float:Origin[3], Float:Angle[3], Float:Forward[3], Float:Right[3], Float:Up[3]
		pev(id, pev_origin, Origin)
		pev(id, pev_view_ofs, Up)
		xs_vec_add(Origin, Up, Origin)
		if(id <= get_maxplayers())
			pev(id, pev_v_angle, Angle)
		else 
			pev(id, pev_angles, Angle)
		
		angle_vector(Angle, ANGLEVECTOR_FORWARD, Forward)
		angle_vector(Angle, ANGLEVECTOR_RIGHT, Right)
		angle_vector(Angle, ANGLEVECTOR_UP, Up)
		
		Start[0] = Origin[0] + Forward[0] * forw + Right[0] * right + Up[0] * up
		Start[1] = Origin[1] + Forward[1] * forw + Right[1] * right + Up[1] * up
		Start[2] = Origin[2] + Forward[2] * forw + Right[2] * right + Up[2] * up
	}
}

public fm_get_user_bpammo(id, CSW_WEAPON) {
	if(is_user_alive(id)) {
		switch(CSW_WEAPON) {
			case CSW_AWP:
				return get_pdata_int(id, 377)
			case CSW_SCOUT, CSW_AK47, CSW_G3SG1: 
				return get_pdata_int(id, 378)
			case CSW_M249: 
				return get_pdata_int(id, 379)
			case CSW_FAMAS, CSW_M4A1, CSW_AUG, CSW_SG550, CSW_GALI, CSW_SG552: 
				return get_pdata_int(id, 380)
			case CSW_M3, CSW_XM1014: 
				return get_pdata_int(id, 381)
			case CSW_USP, CSW_UMP45, CSW_MAC10: 
				return get_pdata_int(id, 382)
			case CSW_FIVESEVEN, CSW_P90: 
				return get_pdata_int(id, 383)
			case CSW_DEAGLE: 
				return get_pdata_int(id, 384)
			case CSW_P228: 
				return get_pdata_int(id, 385)
			case CSW_GLOCK18, CSW_TMP, CSW_ELITE, CSW_MP5NAVY: 
				return get_pdata_int(id, 386)
			default: return 0
		}
	}
	return 0
}

public fm_set_user_bpammo(id, CSW_WEAPON, Amount) {
	if(is_user_alive(id)) {
		switch(CSW_WEAPON) {
			case CSW_AWP:
				set_pdata_int(id, 377, Amount)
			case CSW_SCOUT, CSW_AK47, CSW_G3SG1: 
				set_pdata_int(id, 378, Amount)
			case CSW_M249: 
				set_pdata_int(id, 379, Amount)
			case CSW_FAMAS, CSW_M4A1, CSW_AUG, CSW_SG550, CSW_GALI, CSW_SG552: 
				set_pdata_int(id, 380, Amount)
			case CSW_M3, CSW_XM1014: 
				set_pdata_int(id, 381, Amount)
			case CSW_USP, CSW_UMP45, CSW_MAC10: 
				set_pdata_int(id, 382, Amount)
			case CSW_FIVESEVEN, CSW_P90: 
				set_pdata_int(id, 383, Amount)
			case CSW_DEAGLE: 
				set_pdata_int(id, 384, Amount)
			case CSW_P228: 
				set_pdata_int(id, 385, Amount)
			case CSW_GLOCK18, CSW_TMP, CSW_ELITE, CSW_MP5NAVY: 
				set_pdata_int(id, 386, Amount)
			default: return 0
		}
	}
	return 1
}

public drop_primary_weapons(id) {
	if(is_user_alive(id)) {
		new Weapons[32], Num = 0, WeaponID;
		get_user_weapons(id, Weapons, Num);
		
		for(new i = 0; i < Num; i++) {
			WeaponID = Weapons[i];
			
			if(((1<<WeaponID) & PRIMARY_WEAPONS_BITSUM)) {
				new WName[32];
				get_weaponname(WeaponID, WName, charsmax(WName));
				
				engclient_cmd(id, "drop", WName);
			}
		}
	}
}

public drop_secondary_weapons(id) {
	if(is_user_alive(id)) {
		new Weapons[32], Num = 0, WeaponID;
		get_user_weapons(id, Weapons, Num);
		
		for(new i = 0; i < Num; i++) {
			WeaponID = Weapons[i];
			
			if(((1<<WeaponID) & SECONDARY_WEAPONS_BITSUM)) {
				new WName[32];
				get_weaponname(WeaponID, WName, charsmax(WName));
				
				engclient_cmd(id, "drop", WName);
			}
		}
	}
}

public bacon_strip_weapon(index, weapon[]) {
	if(is_user_alive(index) && equal(weapon, "weapon_", 7)) {
		new WeaponID = get_weaponid(weapon)
		
		if(WeaponID) {
			new WeaponEnt = fm_find_ent_by_owner(-1, weapon, index)
			
			if(WeaponEnt) {
				if(get_user_weapon(index) == WeaponID) 
					ExecuteHamB(Ham_Weapon_RetireWeapon, WeaponEnt)
				
				ExecuteHamB(Ham_RemovePlayerItem, index, WeaponEnt)
				ExecuteHamB(Ham_Item_Kill, WeaponEnt)
				set_pev(index, pev_weapons, pev(index, pev_weapons) & ~(1<<WeaponID))
			}
		}
	}
}

stock HudMessage(const id, const message[], red = 0, green = 160, blue = 0, Float:x = -1.0, Float:y = 0.65, effects = 2, Float:fxtime = 0.01, Float:holdtime = 3.0, Float:fadeintime = 0.01, Float:fadeouttime = 0.01) {
	new Players[32], Num = 1, Player;
	
	if(id) Players[0] = id;
	else get_players(Players, Num, "ch"); {
		for(new i = 0; i < Num; i++) {
			Player = Players[i]
			
			if(is_user_connected(Player)) {
				new color = (clamp(blue, 0, 255) + (clamp(green, 0, 255) << 8) + (clamp(red, 0, 255) << 16))
				
				message_begin(MSG_ONE_UNRELIABLE, SVC_DIRECTOR, _, Player);
				write_byte(strlen(message) + 31);
				write_byte(DRC_CMD_MESSAGE);
				write_byte(effects);
				write_long(color);
				write_long(_:x);
				write_long(_:y);
				write_long(_:fadeintime);
				write_long(_:fadeouttime);
				write_long(_:holdtime);
				write_long(_:fxtime);
				write_string(message);
				message_end();
			}
		}
	}
}

stock ColorChat(const id, const input[], any:...) {
	new Players[32], Message[191], Num = 1, Player;
	vformat(Message, 190, input, 3);
	
	replace_all(Message, 190, "!g", "^4");
	replace_all(Message, 190, "!y", "^1");
	replace_all(Message, 190, "!t", "^3");
	
	if(id) Players[0] = id;
	else get_players(Players, Num, "ch"); {
		for(new i = 0; i < Num; i++) {
			Player = Players[i]
			
			if(is_user_connected(Player)) {
				message_begin(MSG_ONE_UNRELIABLE, MSGID_SayText, _, Player);
				write_byte(Player);
				write_string(Message);
				message_end();
			}
		}
	} 
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
[/code]
Nu îmi mai trimiteți PM pe forum! Nu merge să răspund
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Post Reply

Return to “Modificari pluginuri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 17 guests