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

[HELP]Remove this menu.


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Visinescu
Senior Member
Join Date: Dec 2015
Location: England now,Home Romania
Old 02-09-2016 , 10:29   [HELP]Remove this menu.
Reply With Quote #1

Ok so i want to remove the knife menu from this plugin, but leave everything else intact.

Thank you!



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 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
#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[] = "Mihai.Parkour10";

#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[i][WPN_ID]) && get_user_weapon(id) == GrenadeID && get_weapon(id, Grenade[i][WPN_NAME], str_to_num(Grenade[i][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[i][WPN_TEAM]) != WPN_TEAM_T && WeaponAcces:str_to_num(PrimaryWeapon[i][WPN_ACCES]) == WPN_ACCES_ADMIN)
                    UltimateWeapon++
                if(WeaponTeam:str_to_num(PrimaryWeapon[i][WPN_TEAM]) != WPN_TEAM_T && WeaponAcces:str_to_num(PrimaryWeapon[i][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[i][WPN_TEAM]) != WPN_TEAM_T && str_to_num(PrimaryWeapon[i][WPN_ACCES]) == VIP)
                AddWeapon(id, Menu, PrimaryWeapon[i][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:!t %s", 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:!t %s", 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();
            }
        }
    } 
}
Attached Files
File Type: inc furien40.inc (449 Bytes, 124 views)
File Type: inc furien40_weapons.inc (1.4 KB, 112 views)
Visinescu is offline
counter1strike6
Senior Member
Join Date: Sep 2014
Location: morocco
Old 02-09-2016 , 11:26   Re: [HELP]Remove this menu.
Reply With Quote #2

here is it if players choose knife it will not show knifes menu

PHP 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 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
#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 
Menubool:ShowMenu[33], Weapons[WeaponsList] = 1HasChoose[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_WeaponListMSGID_DeathMsgMSGID_ScoreInfoMSGID_SayText
MSGID_CurWeaponMSGID_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 ShellBloodSprayBloodDrop,
WeaponsAmmo[][] = {
    { -
1, -},
    { 
1352 },
    { -
1, -},
    { 
1090 },
    { -
1, -},
    { 
732 },
    { -
1, -},
    { 
30100 },
    { 
3090 },
    { -
1, -},
    { 
30120 },
    { 
20100 },
    { 
25100 },
    { 
3090 },
    { 
3590 },
    { 
2590 },
    { 
12100 },
    { 
20120 },
    { 
1030 },
    { 
30120 },
    { 
100200 },
    { 
832 },
    { 
3090 },
    { 
30120 },
    { 
2090 },
    { -
1, -},
    { 
735 },
    { 
3090 },
    { 
3090 },
    { -
1, -},
    { 
50100 }
},
Prefix[] = "[INFO]",
Contact[] = "Mihai.Parkour10";

#include "furien40/weapons/Config.h"
public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
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(idgrenadeGrenadeID) {
    if(
is_valid_ent(grenade) && is_user_alive(id)) {
        for(new 
1Weapons[WPN_GRENADE]; i++) {
            if(
GrenadeID == str_to_num(Grenade[i][WPN_ID]) && get_user_weapon(id) == GrenadeID && get_weapon(idGrenade[i][WPN_NAME], str_to_num(Grenade[i][WPN_ID]), i))
                
entity_set_int(grenadeEV_INT_impulsei);
        }
    }
    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(idWeapon) < WeaponsAmmo[Weapon][1]) 
                
fm_set_user_bpammo(idWeaponWeaponsAmmo[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(idWPN_GRENADEfirenade_id())
        
#endif
        #if defined FROSTNADE
        
set_weapon(idWPN_GRENADEfrostnade_id())
        
#endif
        #if defined SFNADE
        
set_weapon(idWPN_GRENADEsfnade_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(entid) {
    if(
is_user_alive(id)) {
        if(
get_user_team(id) == TEAM_FURIEN && entity_get_int(entEV_INT_impulse) == 2)
            return 
HAM_SUPERCEDE    
        
if(get_user_team(id) == TEAM_ANTIFURIEN && entity_get_int(entEV_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(id0)
    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(MenuMPROP_EXITMEXIT_NEVER)
        
menu_display(idMenu0);
    }
}

public 
EquipmentCmd(idmenuitem) {
    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], AccessCallBack;
    
menu_item_getinfo(menuitemAccessData5Name63CallBack);
    
menu_destroy(menu);
    
    switch(
str_to_num(Data)) {
        case 
1: {
            if(!
HasChoose[id][WPN_PRIMARY][2])
                
PrimaryWeaponMenu(id0)
            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(idVIP) {
    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 0VIPWeapon 0
            
for(new 1Weapons[WPN_PRIMARY]; i++) {
                if(
WeaponTeam:str_to_num(PrimaryWeapon[i][WPN_TEAM]) != WPN_TEAM_T && WeaponAcces:str_to_num(PrimaryWeapon[i][WPN_ACCES]) == WPN_ACCES_ADMIN)
                    
UltimateWeapon++
                if(
WeaponTeam:str_to_num(PrimaryWeapon[i][WPN_TEAM]) != WPN_TEAM_T && WeaponAcces:str_to_num(PrimaryWeapon[i][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(Menu0);
            
            
menu_setprop(MenuMPROP_EXITMEXIT_NEVER)
        }
        else {
            
menu_setprop(MenuMPROP_EXITNAME"Meniu Principal")
            
menu_setprop(MenuMPROP_EXITMEXIT_ALL)
        }
        
        
#if defined POWERS
        
for(new 0MAX_LEVELi++) {
            for(new 
1Weapons[WPN_PRIMARY]; k++) {
                if(
str_to_num(PrimaryWeapon[k][WPN_LEVEL]) == && WeaponTeam:str_to_num(PrimaryWeapon[k][WPN_TEAM]) != WPN_TEAM_T && str_to_num(PrimaryWeapon[k][WPN_ACCES]) == VIP)
                    
AddWeapon(idMenuPrimaryWeapon[k][WPN_MENUNAME], PrimaryWeapon[k][WPN_ACCES], PrimaryWeapon[k][WPN_LEVEL], k);
            }
        }
        
#else
        
for(new 1Weapons[WPN_PRIMARY]; i++) {
            if(
WeaponTeam:str_to_num(PrimaryWeapon[i][WPN_TEAM]) != WPN_TEAM_T && str_to_num(PrimaryWeapon[i][WPN_ACCES]) == VIP)
                
AddWeapon(idMenuPrimaryWeapon[i][WPN_MENUNAME], PrimaryWeapon[i][WPN_ACCES], PrimaryWeapon[i][WPN_LEVEL], i);
        }
        
#endif
        
menu_display(idMenu0);
    }
}

public 
PrimaryCmd(idmenuitem) {
    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(id0)
        return 
PLUGIN_HANDLED;
    }
    new 
Data[6], Name[64], AccessCallBack;
    
menu_item_getinfo(menuitemAccessData5Name63CallBack);
    
menu_destroy(menu);
    
    if(
equal(Data"-2")) {
        if(
get_user_flags(id) & ADMIN_LEVEL)
            
PrimaryWeaponMenu(id2)
        else {
            if(!
HasChoose[id][WPN_PRIMARY][2])
                
PrimaryWeaponMenu(id0)
            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:!t %s"PrefixContact);
        }
    }
    else if(
equal(Data"-1")) {
        if(
get_user_flags(id) & VIP_LEVEL)
            
PrimaryWeaponMenu(id1)
        else {
            if(!
HasChoose[id][WPN_PRIMARY][2])
                
PrimaryWeaponMenu(id0)
            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:!t %s"PrefixContact);
        }
    }
    else {
        
GivePrimary(idstr_to_num(Data))
        
        if(!
HasChoose[id][WPN_PRIMARY][2])
            
PrimaryWeaponMenu(id0)
        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 0MAX_LEVELi++) {
            for(new 
1Weapons[WPN_SECONDARY]; k++) {
                if(
WeaponTeam:str_to_num(SecondaryWeapon[k][WPN_TEAM]) != WPN_TEAM_T && str_to_num(SecondaryWeapon[k][WPN_LEVEL]) == i)
                    
AddWeapon(idMenuSecondaryWeapon[k][WPN_MENUNAME], SecondaryWeapon[k][WPN_ACCES], SecondaryWeapon[k][WPN_LEVEL], k);
            }
        }        
        
#else
        
for(new 1Weapons[WPN_SECONDARY]; i++) {
            if(
WeaponTeam:str_to_num(SecondaryWeapon[i][WPN_TEAM]) != WPN_TEAM_T)
                
AddWeapon(idMenuSecondaryWeapon[i][WPN_MENUNAME], SecondaryWeapon[i][WPN_ACCES], SecondaryWeapon[i][WPN_LEVEL], i);
        }
        
#endif
        
menu_setprop(MenuMPROP_EXITMEXIT_NEVER)
        
menu_display(idMenu0);
    }
    return 
PLUGIN_CONTINUE;
}

public 
SecondaryCmd(idmenuitem) {
    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], AccessCallBack;
    
menu_item_getinfo(menuitemAccessData5Name63CallBack);
    
menu_destroy(menu);
    
    
GiveSecondary(idstr_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 0MAX_LEVELi++) {
            for(new 
1Weapons[WPN_KNIFE]; k++) {
                if(
WeaponTeam:str_to_num(Knife[k][WPN_TEAM]) != WPN_TEAM_T && str_to_num(Knife[k][WPN_LEVEL]) == i)
                    
AddWeapon(idMenuKnife[k][WPN_MENUNAME], Knife[k][WPN_ACCES], Knife[k][WPN_LEVEL], k);
            }
        }
        
#else
        
for(new 1Weapons[WPN_KNIFE]; i++) {
            if(
WeaponTeam:str_to_num(Knife[i][WPN_TEAM]) != WPN_TEAM_T)
                
AddWeapon(idMenuKnife[i][WPN_MENUNAME], Knife[i][WPN_ACCES], Knife[i][WPN_LEVEL], i);
        }
        
#endif
        
menu_setprop(MenuMPROP_EXITMEXIT_NEVER)
        
menu_display(idMenu0);
    }
    return 
PLUGIN_CONTINUE;
}

public 
KnifesCmd(idmenuitem) {
    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], AccessCallBack;
    
menu_item_getinfo(menuitemAccessData,5Name63CallBack);
    
menu_destroy(menu);
    
    
GiveKnife(idstr_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(idWeaponKey[id][WPN_PRIMARY][2])
    if(!
HasChoose[id][WPN_SECONDARY][2] && WeaponKey[id][WPN_SECONDARY][2] != -1)
        
GiveSecondary(idWeaponKey[id][WPN_SECONDARY][2])
    if(!
HasChoose[id][WPN_KNIFE][2] && WeaponKey[id][WPN_KNIFE][2] != -1)
        
GiveKnife(idWeaponKey[id][WPN_KNIFE][2])
    
    if(!
HasChoose[id][WPN_PRIMARY][2]) {
        
WeaponKey[id][WPN_PRIMARY][2] = -1
        PrimaryWeaponMenu
(id0)
    }
    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:TeamWeaponAcces:AccesLevel[], WeaponName[], WeaponIDWeapon_List[], WeaponClip[]) {
    
param_convert(1)
    
param_convert(4)
    
param_convert(5)
    
param_convert(7)
    
param_convert(8)
    
    return 
RegisterPrimary(MenuNameTeamAccesLevelWeaponNameWeaponIDWeapon_ListWeaponClip)
}

public 
native_register_secondary(MenuName[], WeaponTeam:TeamWeaponAcces:AccesLevel[], WeaponName[], WeaponIDWeapon_List[], WeaponClip[]) {
    
param_convert(1)
    
param_convert(4)
    
param_convert(5)
    
param_convert(7)
    
param_convert(8)
    
    return 
RegisterSecondary(MenuNameTeamAccesLevelWeaponNameWeaponIDWeapon_ListWeaponClip)
}

public 
native_register_knife(MenuName[], WeaponTeam:TeamWeaponAcces:AccesLevel[], Weapon_List[]) {
    
param_convert(1)
    
param_convert(4)
    
param_convert(5)
    
    return 
RegisterKnife(MenuNameTeamAccesLevelWeapon_List)
}

public 
native_register_grenade(MenuName[], WeaponTeam:TeamWeaponAcces:AccesLevel[], WeaponName[], WeaponIDWeapon_List[]) {
    
param_convert(1)
    
param_convert(4)
    
param_convert(5)
    
param_convert(7)
    
    return 
RegisterGrenade(MenuNameTeamAccesLevelWeaponNameWeaponIDWeapon_List)
}

public 
native_register_c4(MenuName[], WeaponTeam:TeamWeaponAcces:AccesLevel[], Weapon_List[]) {
    
param_convert(1)
    
param_convert(4)
    
param_convert(5)
    
    return 
RegisterC4(MenuNameTeamAccesLevelWeapon_List)
}

public 
get_weapon(idweapon_[], CSW_WeaponID) {
    if(
is_user_connected(id)) {
        new 
Weapon find_ent_by_owner(-1weapon_id);
        
        if(
is_user_alive(id) && user_has_weapon(idCSW_) && pev_valid(Weapon))
            return 
entity_get_int(WeaponEV_INT_impulse) == WeaponID true false
    
}
    return 
false
}

public 
set_weapon(idWeaponsList:WeaponSetWeaponID) {
    switch(
WeaponSet) {    
        case 
WPN_PRIMARY:
            return 
GivePrimary(idWeaponID)
        case 
WPN_SECONDARY:
            return 
GiveSecondary(idWeaponID)
        case 
WPN_KNIFE:
            return 
GiveKnife(idWeaponID)
        case 
WPN_GRENADE:
            return 
GiveGrenade(idWeaponID)
        case 
WPN_C4:
            return 
GiveC4(idWeaponID)
    }
    return 
false
}

public 
get_weapon_data(WeaponsList:WeaponSetWeaponIDWeaponData:DataBuffer[], len) {
    
param_convert(4)
    
    if(
WeaponID > -&& WeaponID Weapons[WeaponSet]) {
        switch(
WeaponSet) {
            case 
WPN_PRIMARY
                
format(BufferlenPrimaryWeapon[WeaponID][Data])
            case 
WPN_SECONDARY
                
format(BufferlenSecondaryWeapon[WeaponID][Data])
            case 
WPN_KNIFE
                
format(BufferlenKnife[WeaponID][Data])
            case 
WPN_GRENADE
                
format(BufferlenGrenade[WeaponID][Data])
            case 
WPN_C4
                
format(BufferlenC4[WeaponID][Data])
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Stock's |
//==========================================================================================================
public AddWeapon(idMenuName[], Acces[], Level[], WeaponID) {
    new 
Weapon[64], Num[32];
    if(
WeaponAcces:str_to_num(Acces) == WPN_ACCES_VIP && !(get_user_flags(id) & VIP_LEVEL))
        
formatex(Weaponsizeof(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(Weaponsizeof(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(Weaponsizeof(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(Weaponsizeof(Weapon)-1"\w%s"Name);
    
formatex(Numsizeof(Num)-1"%d"WeaponID);
    
    
menu_additem(MenuWeaponNum0);
    return
}

public 
CanAcces(idTeam[], 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:TeamWeaponAcces:AccesLevel[] = "0"WeaponName[], WeaponIDWeapon_List[] = "None"WeaponClip[] = "0") {
    if(
Weapons[WPN_PRIMARY] < 1)
        
Weapons[WPN_PRIMARY] = 1
    
    format
(PrimaryWeapon[Weapons[WPN_PRIMARY]][WPN_MENUNAME],     32MenuName)
    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],         32Level)
    
format(PrimaryWeapon[Weapons[WPN_PRIMARY]][WPN_NAME],         32WeaponName)
    
format(PrimaryWeapon[Weapons[WPN_PRIMARY]][WPN_ID],         32"%d"WeaponID)
    
format(PrimaryWeapon[Weapons[WPN_PRIMARY]][WPN_LIST],         32Weapon_List)
    
format(PrimaryWeapon[Weapons[WPN_PRIMARY]][WPN_CLIP],         32WeaponClip)
    
Weapons[WPN_PRIMARY]++
    
    return 
Weapons[WPN_PRIMARY] - 1
}

stock RegisterSecondary(MenuName[], WeaponTeam:TeamWeaponAcces:AccesLevel[] = "0"WeaponName[], WeaponIDWeapon_List[] = "None"WeaponClip[] = "0") {
    if(
Weapons[WPN_SECONDARY] < 1)
        
Weapons[WPN_SECONDARY] = 1
    
    format
(SecondaryWeapon[Weapons[WPN_SECONDARY]][WPN_MENUNAME],         32MenuName)
    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],         32Level)
    
format(SecondaryWeapon[Weapons[WPN_SECONDARY]][WPN_NAME],         32WeaponName)
    
format(SecondaryWeapon[Weapons[WPN_SECONDARY]][WPN_ID],         32"%d"WeaponID)
    
format(SecondaryWeapon[Weapons[WPN_SECONDARY]][WPN_LIST],         32Weapon_List)
    
format(SecondaryWeapon[Weapons[WPN_SECONDARY]][WPN_CLIP],         32WeaponClip)
    
Weapons[WPN_SECONDARY]++
    
    return 
Weapons[WPN_SECONDARY] - 1
}

stock RegisterKnife(MenuName[], WeaponTeam:TeamWeaponAcces:AccesLevel[] = "0"Weapon_List[] = "None") {
    if(
Weapons[WPN_KNIFE] < 1)
        
Weapons[WPN_KNIFE] = 1
    
    format
(Knife[Weapons[WPN_KNIFE]][WPN_MENUNAME],     32MenuName)
    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],         32Level)
    
format(Knife[Weapons[WPN_KNIFE]][WPN_LIST],         32Weapon_List)
    
Weapons[WPN_KNIFE]++
    
    return 
Weapons[WPN_KNIFE] - 1
}

stock RegisterGrenade(MenuName[], WeaponTeam:TeamWeaponAcces:AccesLevel[] = "0"WeaponName[], WeaponIDWeapon_List[] = "None") {
    if(
Weapons[WPN_GRENADE] < 1)
        
Weapons[WPN_GRENADE] = 1
    
    format
(Grenade[Weapons[WPN_GRENADE]][WPN_MENUNAME],         32MenuName)
    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],         32Level)
    
format(Grenade[Weapons[WPN_GRENADE]][WPN_NAME],         32WeaponName)
    
format(Grenade[Weapons[WPN_GRENADE]][WPN_ID],             32"%d"WeaponID)
    
format(Grenade[Weapons[WPN_GRENADE]][WPN_LIST],         32Weapon_List)
    
Weapons[WPN_GRENADE]++
    
    return 
Weapons[WPN_GRENADE] - 1
}

stock RegisterC4(MenuName[], WeaponTeam:TeamWeaponAcces:AccesLevel[] = "0"Weapon_List[] = "None") {
    if(
Weapons[WPN_C4] < 1)
        
Weapons[WPN_C4] = 1
    
    format
(C4[Weapons[WPN_C4]][WPN_MENUNAME],     32MenuName)
    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],         32Level)
    
format(C4[Weapons[WPN_C4]][WPN_LIST],         32Weapon_List)
    
Weapons[WPN_C4]++
    
    return 
Weapons[WPN_C4] - 1
}

public 
GivePrimary(idWeaponID) {
    if(
is_user_alive(id)) {
        if(
WeaponID && WeaponID Weapons[WPN_PRIMARY]) {
            if(
CanAcces(idPrimaryWeapon[WeaponID][WPN_TEAM], PrimaryWeapon[WeaponID][WPN_ACCES], PrimaryWeapon[WeaponID][WPN_LEVEL])) {
                new 
WeaponImpulse entity_get_int(idEV_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(idstr_to_num(PrimaryWeapon[WeaponID][WPN_ID]), PrimaryWeapon[WeaponID][WPN_NAME], 0)
                else
                    
WeaponList(idstr_to_num(PrimaryWeapon[WeaponID][WPN_ID]), PrimaryWeapon[WeaponID][WPN_LIST], 0)
                
                
entity_set_int(idEV_INT_impulseWeaponID);
                
Weapon fm_give_item(idPrimaryWeapon[WeaponID][WPN_NAME]);
                
entity_set_int(WeaponEV_INT_impulseWeaponID)
                
entity_set_int(idEV_INT_impulseImpulse);
                
                if(!
equal(PrimaryWeapon[WeaponID][WPN_CLIP], "0"))
                    
cs_set_weapon_ammo(Weaponstr_to_num(PrimaryWeapon[WeaponID][WPN_CLIP]))
                return 
true
            
}
        }
    }
    return 
false
}

public 
GiveSecondary(idWeaponID) {
    if(
is_user_alive(id)) {
        if(
WeaponID && WeaponID Weapons[WPN_SECONDARY]) {
            if(
CanAcces(idSecondaryWeapon[WeaponID][WPN_TEAM], SecondaryWeapon[WeaponID][WPN_ACCES], SecondaryWeapon[WeaponID][WPN_LEVEL])) {
                new 
WeaponImpulse entity_get_int(idEV_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(idstr_to_num(SecondaryWeapon[WeaponID][WPN_ID]), SecondaryWeapon[WeaponID][WPN_NAME], 0)
                else
                    
WeaponList(idstr_to_num(SecondaryWeapon[WeaponID][WPN_ID]), SecondaryWeapon[WeaponID][WPN_LIST], 0)
                
                
entity_set_int(idEV_INT_impulseWeaponID);
                
Weapon fm_give_item(idSecondaryWeapon[WeaponID][WPN_NAME]);
                
entity_set_int(WeaponEV_INT_impulseWeaponID)
                
entity_set_int(idEV_INT_impulseImpulse);
                
                if(!
equal(SecondaryWeapon[WeaponID][WPN_CLIP], "0"))
                    
cs_set_weapon_ammo(Weaponstr_to_num(SecondaryWeapon[WeaponID][WPN_CLIP]))
                return 
true
            
}
        }
    }
    return 
false
}

public 
GiveKnife(idWeaponID) {
    if(
is_user_alive(id)) {
        if(
WeaponID && WeaponID Weapons[WPN_KNIFE]) {
            if(
CanAcces(idKnife[WeaponID][WPN_TEAM], Knife[WeaponID][WPN_ACCES], Knife[WeaponID][WPN_LEVEL])) {
                new 
WeaponImpulse entity_get_int(idEV_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(idCSW_KNIFEKnife[WeaponID][WPN_NAME], 0)
                else
                    
WeaponList(idCSW_KNIFEKnife[WeaponID][WPN_LIST], 0)
                
                
entity_set_int(idEV_INT_impulseWeaponID);
                
Weapon fm_give_item(id"weapon_knife");
                
entity_set_int(WeaponEV_INT_impulseWeaponID)
                
entity_set_int(idEV_INT_impulseImpulse);
                return 
true
            
}
        }
    }
    return 
false
}

public 
GiveGrenade(idWeaponID) {
    if(
is_user_alive(id)) {
        if(
WeaponID && WeaponID Weapons[WPN_GRENADE]) {
            if(
CanAcces(idGrenade[WeaponID][WPN_TEAM], Grenade[WeaponID][WPN_ACCES], Grenade[WeaponID][WPN_LEVEL])) {
                new 
WeaponImpulse entity_get_int(idEV_INT_impulse)
                
HasChoose[id][WPN_GRENADE][get_user_team(id)] = true
                WeaponKey
[id][WPN_GRENADE][get_user_team(id)] = WeaponID
                
                bacon_strip_weapon
(idGrenade[WeaponID][WPN_NAME]);
                
                if(
equal(Grenade[WeaponID][WPN_LIST], "None"))
                    
WeaponList(idstr_to_num(Grenade[WeaponID][WPN_ID]), Grenade[WeaponID][WPN_NAME], 0)
                else
                    
WeaponList(idstr_to_num(Grenade[WeaponID][WPN_ID]), Grenade[WeaponID][WPN_LIST], 0)
                
                
entity_set_int(idEV_INT_impulseWeaponID);
                
Weapon fm_give_item(idGrenade[WeaponID][WPN_NAME]);
                
entity_set_int(WeaponEV_INT_impulseWeaponID)
                
entity_set_int(idEV_INT_impulseImpulse);
                return 
true
            
}
        }
    }
    return 
false
}

public 
GiveC4(idWeaponID) {
    if(
is_user_alive(id)) {
        if(
WeaponID && WeaponID Weapons[WPN_C4]) {
            if(
CanAcces(idC4[WeaponID][WPN_TEAM], C4[WeaponID][WPN_ACCES], C4[WeaponID][WPN_LEVEL])) {
                new 
WeaponImpulse entity_get_int(idEV_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(idCSW_C4C4[WeaponID][WPN_NAME], 0)
                else
                    
WeaponList(idCSW_C4C4[WeaponID][WPN_LIST], 0)
                
                
entity_set_int(idEV_INT_impulseWeaponID);
                
Weapon fm_give_item(id"weapon_c4");
                
entity_set_int(WeaponEV_INT_impulseWeaponID)
                
entity_set_int(idEV_INT_impulseImpulse);
                return 
true
            
}
        }
    }
    return 
false
}

stock WeaponList(idCSW_WEAPON, const Weapon[], Flag=0) {
    switch(
CSW_WEAPON) {
        case 
CSW_P228: {
            
message_begin(MSG_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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(killervictim, const WeaponName[]) {
    if(
is_user_connected(killer) && is_user_alive(victim)) {
        
set_msg_block(MSGID_DeathMsgBLOCK_SET);
        
ExecuteHamB(Ham_Killedvictimkiller);
        
set_msg_block(MSGID_DeathMsgBLOCK_NOT);
        
cs_set_user_money(killercs_get_user_money(killer) + 300);
        
        
make_deathmsg(killervictim0WeaponName);
        
        
message_begin(MSG_BROADCASTMSGID_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_BROADCASTMSGID_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();
    }
}

public 
make_knockback(idFloat: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(idEV_VEC_originOrigin);
        
        
Distance[0] = Origin[0] - origin[0], Distance[1] = Origin[1] - origin[1], Distance[2] = Origin[2] - origin[2];
        
Velocity[0] = Distance[0] / TimeVelocity[1] = Distance[1] / TimeVelocity[2] = Distance[2] / Time;
        
        
entity_set_vector(idEV_VEC_velocityVelocity);
    }
}

public 
make_blood(idAmount) {
    if(
is_user_alive(id)) {
        new 
BloodColor ExecuteHam(Ham_BloodColorid);
        
        if(
BloodColor != -1) {
            new 
Float:Origin[3]
            
pev(idpev_originOrigin);
            
Amount *= 2//according to HLSDK
            
            
message_begin(MSG_BROADCASTSVC_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(3Amount/10), 16));
            
message_end();
        }
    }
}

public 
make_bullet(idFloat:Origin[3]) {
    if(
is_user_alive(id)) {
        new 
TargetBody;
        
get_user_aiming(idTargetBody999999);
        
        if(
is_user_connected(Target)) {
            new 
Float:Start[3], Float:End[3], Float:Res[3], Float:Vel[3], Res2;
            
pev(idpev_originStart);
            
            
velocity_by_aim(id64Vel);
            
            
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_TraceLineStartEnd0TargetRes2);
            
get_tr2(Res2TR_vecEndPosRes);
            
            
message_begin(MSG_BROADCASTSVC_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_BROADCASTSVC_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_BROADCASTSVC_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_BROADCASTSVC_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(idanim) {
    if(
is_user_connected(id)) {
        
set_pev(idpev_weaponanimanim);
        
message_begin(MSG_ONESVC_WEAPONANIM_id);
        
write_byte(anim);
        
write_byte(pev(idpev_body));
        
message_end();
    }
}

public 
get_damage_body(bodyFloat: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(idFloat:Origin[3], SpeedFloat:Velocity[3]) {
    if(
is_user_alive(id)) {
        new 
Float:AimOrigin[3]
        
fm_get_aim_origin(idAimOrigin)
        
        
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(idFloat:forwFloat:rightFloat:upFloat:Start[]) {
    if(
is_user_alive(id)) {
        new 
Float:Origin[3], Float:Angle[3], Float:Forward[3], Float:Right[3], Float:Up[3]
        
pev(idpev_originOrigin)
        
pev(idpev_view_ofsUp)
        
xs_vec_add(OriginUpOrigin)
        if(
id <= get_maxplayers())
            
pev(idpev_v_angleAngle)
        else 
            
pev(idpev_anglesAngle)
        
        
angle_vector(AngleANGLEVECTOR_FORWARDForward)
        
angle_vector(AngleANGLEVECTOR_RIGHTRight)
        
angle_vector(AngleANGLEVECTOR_UPUp)
        
        
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(idCSW_WEAPON) {
    if(
is_user_alive(id)) {
        switch(
CSW_WEAPON) {
            case 
CSW_AWP:
                return 
get_pdata_int(id377)
            case 
CSW_SCOUTCSW_AK47CSW_G3SG1
                return 
get_pdata_int(id378)
            case 
CSW_M249
                return 
get_pdata_int(id379)
            case 
CSW_FAMASCSW_M4A1CSW_AUGCSW_SG550CSW_GALICSW_SG552
                return 
get_pdata_int(id380)
            case 
CSW_M3CSW_XM1014
                return 
get_pdata_int(id381)
            case 
CSW_USPCSW_UMP45CSW_MAC10
                return 
get_pdata_int(id382)
            case 
CSW_FIVESEVENCSW_P90
                return 
get_pdata_int(id383)
            case 
CSW_DEAGLE
                return 
get_pdata_int(id384)
            case 
CSW_P228
                return 
get_pdata_int(id385)
            case 
CSW_GLOCK18CSW_TMPCSW_ELITECSW_MP5NAVY
                return 
get_pdata_int(id386)
            default: return 
0
        
}
    }
    return 
0
}

public 
fm_set_user_bpammo(idCSW_WEAPONAmount) {
    if(
is_user_alive(id)) {
        switch(
CSW_WEAPON) {
            case 
CSW_AWP:
                
set_pdata_int(id377Amount)
            case 
CSW_SCOUTCSW_AK47CSW_G3SG1
                
set_pdata_int(id378Amount)
            case 
CSW_M249
                
set_pdata_int(id379Amount)
            case 
CSW_FAMASCSW_M4A1CSW_AUGCSW_SG550CSW_GALICSW_SG552
                
set_pdata_int(id380Amount)
            case 
CSW_M3CSW_XM1014
                
set_pdata_int(id381Amount)
            case 
CSW_USPCSW_UMP45CSW_MAC10
                
set_pdata_int(id382Amount)
            case 
CSW_FIVESEVENCSW_P90
                
set_pdata_int(id383Amount)
            case 
CSW_DEAGLE
                
set_pdata_int(id384Amount)
            case 
CSW_P228
                
set_pdata_int(id385Amount)
            case 
CSW_GLOCK18CSW_TMPCSW_ELITECSW_MP5NAVY
                
set_pdata_int(id386Amount)
            default: return 
0
        
}
    }
    return 
1
}

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

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

public 
bacon_strip_weapon(indexweapon[]) {
    if(
is_user_alive(index) && equal(weapon"weapon_"7)) {
        new 
WeaponID get_weaponid(weapon)
        
        if(
WeaponID) {
            new 
WeaponEnt fm_find_ent_by_owner(-1weaponindex)
            
            if(
WeaponEnt) {
                if(
get_user_weapon(index) == WeaponID
                    
ExecuteHamB(Ham_Weapon_RetireWeaponWeaponEnt)
                
                
ExecuteHamB(Ham_RemovePlayerItemindexWeaponEnt)
                
ExecuteHamB(Ham_Item_KillWeaponEnt)
                
set_pev(indexpev_weaponspev(indexpev_weapons) & ~(1<<WeaponID))
            }
        }
    }
}

stock HudMessage(const id, const message[], red 0green 160blue 0Float:= -1.0Float:0.65effects 2Float:fxtime 0.01Float:holdtime 3.0Float:fadeintime 0.01Float:fadeouttime 0.01) {
    new 
Players[32], Num 1Player;
    
    if(
idPlayers[0] = id;
    else 
get_players(PlayersNum"ch"); {
        for(new 
0Numi++) {
            
Player Players[i]
            
            if(
is_user_connected(Player)) {
                new 
color = (clamp(blue0255) + (clamp(green0255) << 8) + (clamp(red0255) << 16))
                
                
message_begin(MSG_ONE_UNRELIABLESVC_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 1Player;
    
vformat(Message190input3);
    
    
replace_all(Message190"!g""^4");
    
replace_all(Message190"!y""^1");
    
replace_all(Message190"!t""^3");
    
    if(
idPlayers[0] = id;
    else 
get_players(PlayersNum"ch"); {
        for(new 
0Numi++) {
            
Player Players[i]
            
            if(
is_user_connected(Player)) {
                
message_begin(MSG_ONE_UNRELIABLEMSGID_SayText_Player);
                
write_byte(Player);
                
write_string(Message);
                
message_end();
            }
        }
    } 


Last edited by counter1strike6; 02-09-2016 at 11:28.
counter1strike6 is offline
Visinescu
Senior Member
Join Date: Dec 2015
Location: England now,Home Romania
Old 02-10-2016 , 06:50   Re: [HELP]Remove this menu.
Reply With Quote #3

Quote:
Originally Posted by counter1strike6 View Post
here is it if players choose knife it will not show knifes menu

PHP 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 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
#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 
Menubool:ShowMenu[33], Weapons[WeaponsList] = 1HasChoose[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_WeaponListMSGID_DeathMsgMSGID_ScoreInfoMSGID_SayText
MSGID_CurWeaponMSGID_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 ShellBloodSprayBloodDrop,
WeaponsAmmo[][] = {
    { -
1, -},
    { 
1352 },
    { -
1, -},
    { 
1090 },
    { -
1, -},
    { 
732 },
    { -
1, -},
    { 
30100 },
    { 
3090 },
    { -
1, -},
    { 
30120 },
    { 
20100 },
    { 
25100 },
    { 
3090 },
    { 
3590 },
    { 
2590 },
    { 
12100 },
    { 
20120 },
    { 
1030 },
    { 
30120 },
    { 
100200 },
    { 
832 },
    { 
3090 },
    { 
30120 },
    { 
2090 },
    { -
1, -},
    { 
735 },
    { 
3090 },
    { 
3090 },
    { -
1, -},
    { 
50100 }
},
Prefix[] = "[INFO]",
Contact[] = "Mihai.Parkour10";

#include "furien40/weapons/Config.h"
public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
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(idgrenadeGrenadeID) {
    if(
is_valid_ent(grenade) && is_user_alive(id)) {
        for(new 
1Weapons[WPN_GRENADE]; i++) {
            if(
GrenadeID == str_to_num(Grenade[i][WPN_ID]) && get_user_weapon(id) == GrenadeID && get_weapon(idGrenade[i][WPN_NAME], str_to_num(Grenade[i][WPN_ID]), i))
                
entity_set_int(grenadeEV_INT_impulsei);
        }
    }
    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(idWeapon) < WeaponsAmmo[Weapon][1]) 
                
fm_set_user_bpammo(idWeaponWeaponsAmmo[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(idWPN_GRENADEfirenade_id())
        
#endif
        #if defined FROSTNADE
        
set_weapon(idWPN_GRENADEfrostnade_id())
        
#endif
        #if defined SFNADE
        
set_weapon(idWPN_GRENADEsfnade_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(entid) {
    if(
is_user_alive(id)) {
        if(
get_user_team(id) == TEAM_FURIEN && entity_get_int(entEV_INT_impulse) == 2)
            return 
HAM_SUPERCEDE    
        
if(get_user_team(id) == TEAM_ANTIFURIEN && entity_get_int(entEV_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(id0)
    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(MenuMPROP_EXITMEXIT_NEVER)
        
menu_display(idMenu0);
    }
}

public 
EquipmentCmd(idmenuitem) {
    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], AccessCallBack;
    
menu_item_getinfo(menuitemAccessData5Name63CallBack);
    
menu_destroy(menu);
    
    switch(
str_to_num(Data)) {
        case 
1: {
            if(!
HasChoose[id][WPN_PRIMARY][2])
                
PrimaryWeaponMenu(id0)
            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(idVIP) {
    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 0VIPWeapon 0
            
for(new 1Weapons[WPN_PRIMARY]; i++) {
                if(
WeaponTeam:str_to_num(PrimaryWeapon[i][WPN_TEAM]) != WPN_TEAM_T && WeaponAcces:str_to_num(PrimaryWeapon[i][WPN_ACCES]) == WPN_ACCES_ADMIN)
                    
UltimateWeapon++
                if(
WeaponTeam:str_to_num(PrimaryWeapon[i][WPN_TEAM]) != WPN_TEAM_T && WeaponAcces:str_to_num(PrimaryWeapon[i][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(Menu0);
            
            
menu_setprop(MenuMPROP_EXITMEXIT_NEVER)
        }
        else {
            
menu_setprop(MenuMPROP_EXITNAME"Meniu Principal")
            
menu_setprop(MenuMPROP_EXITMEXIT_ALL)
        }
        
        
#if defined POWERS
        
for(new 0MAX_LEVELi++) {
            for(new 
1Weapons[WPN_PRIMARY]; k++) {
                if(
str_to_num(PrimaryWeapon[k][WPN_LEVEL]) == && WeaponTeam:str_to_num(PrimaryWeapon[k][WPN_TEAM]) != WPN_TEAM_T && str_to_num(PrimaryWeapon[k][WPN_ACCES]) == VIP)
                    
AddWeapon(idMenuPrimaryWeapon[k][WPN_MENUNAME], PrimaryWeapon[k][WPN_ACCES], PrimaryWeapon[k][WPN_LEVEL], k);
            }
        }
        
#else
        
for(new 1Weapons[WPN_PRIMARY]; i++) {
            if(
WeaponTeam:str_to_num(PrimaryWeapon[i][WPN_TEAM]) != WPN_TEAM_T && str_to_num(PrimaryWeapon[i][WPN_ACCES]) == VIP)
                
AddWeapon(idMenuPrimaryWeapon[i][WPN_MENUNAME], PrimaryWeapon[i][WPN_ACCES], PrimaryWeapon[i][WPN_LEVEL], i);
        }
        
#endif
        
menu_display(idMenu0);
    }
}

public 
PrimaryCmd(idmenuitem) {
    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(id0)
        return 
PLUGIN_HANDLED;
    }
    new 
Data[6], Name[64], AccessCallBack;
    
menu_item_getinfo(menuitemAccessData5Name63CallBack);
    
menu_destroy(menu);
    
    if(
equal(Data"-2")) {
        if(
get_user_flags(id) & ADMIN_LEVEL)
            
PrimaryWeaponMenu(id2)
        else {
            if(!
HasChoose[id][WPN_PRIMARY][2])
                
PrimaryWeaponMenu(id0)
            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:!t %s"PrefixContact);
        }
    }
    else if(
equal(Data"-1")) {
        if(
get_user_flags(id) & VIP_LEVEL)
            
PrimaryWeaponMenu(id1)
        else {
            if(!
HasChoose[id][WPN_PRIMARY][2])
                
PrimaryWeaponMenu(id0)
            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:!t %s"PrefixContact);
        }
    }
    else {
        
GivePrimary(idstr_to_num(Data))
        
        if(!
HasChoose[id][WPN_PRIMARY][2])
            
PrimaryWeaponMenu(id0)
        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 0MAX_LEVELi++) {
            for(new 
1Weapons[WPN_SECONDARY]; k++) {
                if(
WeaponTeam:str_to_num(SecondaryWeapon[k][WPN_TEAM]) != WPN_TEAM_T && str_to_num(SecondaryWeapon[k][WPN_LEVEL]) == i)
                    
AddWeapon(idMenuSecondaryWeapon[k][WPN_MENUNAME], SecondaryWeapon[k][WPN_ACCES], SecondaryWeapon[k][WPN_LEVEL], k);
            }
        }        
        
#else
        
for(new 1Weapons[WPN_SECONDARY]; i++) {
            if(
WeaponTeam:str_to_num(SecondaryWeapon[i][WPN_TEAM]) != WPN_TEAM_T)
                
AddWeapon(idMenuSecondaryWeapon[i][WPN_MENUNAME], SecondaryWeapon[i][WPN_ACCES], SecondaryWeapon[i][WPN_LEVEL], i);
        }
        
#endif
        
menu_setprop(MenuMPROP_EXITMEXIT_NEVER)
        
menu_display(idMenu0);
    }
    return 
PLUGIN_CONTINUE;
}

public 
SecondaryCmd(idmenuitem) {
    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], AccessCallBack;
    
menu_item_getinfo(menuitemAccessData5Name63CallBack);
    
menu_destroy(menu);
    
    
GiveSecondary(idstr_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 0MAX_LEVELi++) {
            for(new 
1Weapons[WPN_KNIFE]; k++) {
                if(
WeaponTeam:str_to_num(Knife[k][WPN_TEAM]) != WPN_TEAM_T && str_to_num(Knife[k][WPN_LEVEL]) == i)
                    
AddWeapon(idMenuKnife[k][WPN_MENUNAME], Knife[k][WPN_ACCES], Knife[k][WPN_LEVEL], k);
            }
        }
        
#else
        
for(new 1Weapons[WPN_KNIFE]; i++) {
            if(
WeaponTeam:str_to_num(Knife[i][WPN_TEAM]) != WPN_TEAM_T)
                
AddWeapon(idMenuKnife[i][WPN_MENUNAME], Knife[i][WPN_ACCES], Knife[i][WPN_LEVEL], i);
        }
        
#endif
        
menu_setprop(MenuMPROP_EXITMEXIT_NEVER)
        
menu_display(idMenu0);
    }
    return 
PLUGIN_CONTINUE;
}

public 
KnifesCmd(idmenuitem) {
    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], AccessCallBack;
    
menu_item_getinfo(menuitemAccessData,5Name63CallBack);
    
menu_destroy(menu);
    
    
GiveKnife(idstr_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(idWeaponKey[id][WPN_PRIMARY][2])
    if(!
HasChoose[id][WPN_SECONDARY][2] && WeaponKey[id][WPN_SECONDARY][2] != -1)
        
GiveSecondary(idWeaponKey[id][WPN_SECONDARY][2])
    if(!
HasChoose[id][WPN_KNIFE][2] && WeaponKey[id][WPN_KNIFE][2] != -1)
        
GiveKnife(idWeaponKey[id][WPN_KNIFE][2])
    
    if(!
HasChoose[id][WPN_PRIMARY][2]) {
        
WeaponKey[id][WPN_PRIMARY][2] = -1
        PrimaryWeaponMenu
(id0)
    }
    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:TeamWeaponAcces:AccesLevel[], WeaponName[], WeaponIDWeapon_List[], WeaponClip[]) {
    
param_convert(1)
    
param_convert(4)
    
param_convert(5)
    
param_convert(7)
    
param_convert(8)
    
    return 
RegisterPrimary(MenuNameTeamAccesLevelWeaponNameWeaponIDWeapon_ListWeaponClip)
}

public 
native_register_secondary(MenuName[], WeaponTeam:TeamWeaponAcces:AccesLevel[], WeaponName[], WeaponIDWeapon_List[], WeaponClip[]) {
    
param_convert(1)
    
param_convert(4)
    
param_convert(5)
    
param_convert(7)
    
param_convert(8)
    
    return 
RegisterSecondary(MenuNameTeamAccesLevelWeaponNameWeaponIDWeapon_ListWeaponClip)
}

public 
native_register_knife(MenuName[], WeaponTeam:TeamWeaponAcces:AccesLevel[], Weapon_List[]) {
    
param_convert(1)
    
param_convert(4)
    
param_convert(5)
    
    return 
RegisterKnife(MenuNameTeamAccesLevelWeapon_List)
}

public 
native_register_grenade(MenuName[], WeaponTeam:TeamWeaponAcces:AccesLevel[], WeaponName[], WeaponIDWeapon_List[]) {
    
param_convert(1)
    
param_convert(4)
    
param_convert(5)
    
param_convert(7)
    
    return 
RegisterGrenade(MenuNameTeamAccesLevelWeaponNameWeaponIDWeapon_List)
}

public 
native_register_c4(MenuName[], WeaponTeam:TeamWeaponAcces:AccesLevel[], Weapon_List[]) {
    
param_convert(1)
    
param_convert(4)
    
param_convert(5)
    
    return 
RegisterC4(MenuNameTeamAccesLevelWeapon_List)
}

public 
get_weapon(idweapon_[], CSW_WeaponID) {
    if(
is_user_connected(id)) {
        new 
Weapon find_ent_by_owner(-1weapon_id);
        
        if(
is_user_alive(id) && user_has_weapon(idCSW_) && pev_valid(Weapon))
            return 
entity_get_int(WeaponEV_INT_impulse) == WeaponID true false
    
}
    return 
false
}

public 
set_weapon(idWeaponsList:WeaponSetWeaponID) {
    switch(
WeaponSet) {    
        case 
WPN_PRIMARY:
            return 
GivePrimary(idWeaponID)
        case 
WPN_SECONDARY:
            return 
GiveSecondary(idWeaponID)
        case 
WPN_KNIFE:
            return 
GiveKnife(idWeaponID)
        case 
WPN_GRENADE:
            return 
GiveGrenade(idWeaponID)
        case 
WPN_C4:
            return 
GiveC4(idWeaponID)
    }
    return 
false
}

public 
get_weapon_data(WeaponsList:WeaponSetWeaponIDWeaponData:DataBuffer[], len) {
    
param_convert(4)
    
    if(
WeaponID > -&& WeaponID Weapons[WeaponSet]) {
        switch(
WeaponSet) {
            case 
WPN_PRIMARY
                
format(BufferlenPrimaryWeapon[WeaponID][Data])
            case 
WPN_SECONDARY
                
format(BufferlenSecondaryWeapon[WeaponID][Data])
            case 
WPN_KNIFE
                
format(BufferlenKnife[WeaponID][Data])
            case 
WPN_GRENADE
                
format(BufferlenGrenade[WeaponID][Data])
            case 
WPN_C4
                
format(BufferlenC4[WeaponID][Data])
        }
    }
}

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

////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Stock's |
//==========================================================================================================
public AddWeapon(idMenuName[], Acces[], Level[], WeaponID) {
    new 
Weapon[64], Num[32];
    if(
WeaponAcces:str_to_num(Acces) == WPN_ACCES_VIP && !(get_user_flags(id) & VIP_LEVEL))
        
formatex(Weaponsizeof(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(Weaponsizeof(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(Weaponsizeof(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(Weaponsizeof(Weapon)-1"\w%s"Name);
    
formatex(Numsizeof(Num)-1"%d"WeaponID);
    
    
menu_additem(MenuWeaponNum0);
    return
}

public 
CanAcces(idTeam[], 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:TeamWeaponAcces:AccesLevel[] = "0"WeaponName[], WeaponIDWeapon_List[] = "None"WeaponClip[] = "0") {
    if(
Weapons[WPN_PRIMARY] < 1)
        
Weapons[WPN_PRIMARY] = 1
    
    format
(PrimaryWeapon[Weapons[WPN_PRIMARY]][WPN_MENUNAME],     32MenuName)
    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],         32Level)
    
format(PrimaryWeapon[Weapons[WPN_PRIMARY]][WPN_NAME],         32WeaponName)
    
format(PrimaryWeapon[Weapons[WPN_PRIMARY]][WPN_ID],         32"%d"WeaponID)
    
format(PrimaryWeapon[Weapons[WPN_PRIMARY]][WPN_LIST],         32Weapon_List)
    
format(PrimaryWeapon[Weapons[WPN_PRIMARY]][WPN_CLIP],         32WeaponClip)
    
Weapons[WPN_PRIMARY]++
    
    return 
Weapons[WPN_PRIMARY] - 1
}

stock RegisterSecondary(MenuName[], WeaponTeam:TeamWeaponAcces:AccesLevel[] = "0"WeaponName[], WeaponIDWeapon_List[] = "None"WeaponClip[] = "0") {
    if(
Weapons[WPN_SECONDARY] < 1)
        
Weapons[WPN_SECONDARY] = 1
    
    format
(SecondaryWeapon[Weapons[WPN_SECONDARY]][WPN_MENUNAME],         32MenuName)
    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],         32Level)
    
format(SecondaryWeapon[Weapons[WPN_SECONDARY]][WPN_NAME],         32WeaponName)
    
format(SecondaryWeapon[Weapons[WPN_SECONDARY]][WPN_ID],         32"%d"WeaponID)
    
format(SecondaryWeapon[Weapons[WPN_SECONDARY]][WPN_LIST],         32Weapon_List)
    
format(SecondaryWeapon[Weapons[WPN_SECONDARY]][WPN_CLIP],         32WeaponClip)
    
Weapons[WPN_SECONDARY]++
    
    return 
Weapons[WPN_SECONDARY] - 1
}

stock RegisterKnife(MenuName[], WeaponTeam:TeamWeaponAcces:AccesLevel[] = "0"Weapon_List[] = "None") {
    if(
Weapons[WPN_KNIFE] < 1)
        
Weapons[WPN_KNIFE] = 1
    
    format
(Knife[Weapons[WPN_KNIFE]][WPN_MENUNAME],     32MenuName)
    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],         32Level)
    
format(Knife[Weapons[WPN_KNIFE]][WPN_LIST],         32Weapon_List)
    
Weapons[WPN_KNIFE]++
    
    return 
Weapons[WPN_KNIFE] - 1
}

stock RegisterGrenade(MenuName[], WeaponTeam:TeamWeaponAcces:AccesLevel[] = "0"WeaponName[], WeaponIDWeapon_List[] = "None") {
    if(
Weapons[WPN_GRENADE] < 1)
        
Weapons[WPN_GRENADE] = 1
    
    format
(Grenade[Weapons[WPN_GRENADE]][WPN_MENUNAME],         32MenuName)
    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],         32Level)
    
format(Grenade[Weapons[WPN_GRENADE]][WPN_NAME],         32WeaponName)
    
format(Grenade[Weapons[WPN_GRENADE]][WPN_ID],             32"%d"WeaponID)
    
format(Grenade[Weapons[WPN_GRENADE]][WPN_LIST],         32Weapon_List)
    
Weapons[WPN_GRENADE]++
    
    return 
Weapons[WPN_GRENADE] - 1
}

stock RegisterC4(MenuName[], WeaponTeam:TeamWeaponAcces:AccesLevel[] = "0"Weapon_List[] = "None") {
    if(
Weapons[WPN_C4] < 1)
        
Weapons[WPN_C4] = 1
    
    format
(C4[Weapons[WPN_C4]][WPN_MENUNAME],     32MenuName)
    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],         32Level)
    
format(C4[Weapons[WPN_C4]][WPN_LIST],         32Weapon_List)
    
Weapons[WPN_C4]++
    
    return 
Weapons[WPN_C4] - 1
}

public 
GivePrimary(idWeaponID) {
    if(
is_user_alive(id)) {
        if(
WeaponID && WeaponID Weapons[WPN_PRIMARY]) {
            if(
CanAcces(idPrimaryWeapon[WeaponID][WPN_TEAM], PrimaryWeapon[WeaponID][WPN_ACCES], PrimaryWeapon[WeaponID][WPN_LEVEL])) {
                new 
WeaponImpulse entity_get_int(idEV_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(idstr_to_num(PrimaryWeapon[WeaponID][WPN_ID]), PrimaryWeapon[WeaponID][WPN_NAME], 0)
                else
                    
WeaponList(idstr_to_num(PrimaryWeapon[WeaponID][WPN_ID]), PrimaryWeapon[WeaponID][WPN_LIST], 0)
                
                
entity_set_int(idEV_INT_impulseWeaponID);
                
Weapon fm_give_item(idPrimaryWeapon[WeaponID][WPN_NAME]);
                
entity_set_int(WeaponEV_INT_impulseWeaponID)
                
entity_set_int(idEV_INT_impulseImpulse);
                
                if(!
equal(PrimaryWeapon[WeaponID][WPN_CLIP], "0"))
                    
cs_set_weapon_ammo(Weaponstr_to_num(PrimaryWeapon[WeaponID][WPN_CLIP]))
                return 
true
            
}
        }
    }
    return 
false
}

public 
GiveSecondary(idWeaponID) {
    if(
is_user_alive(id)) {
        if(
WeaponID && WeaponID Weapons[WPN_SECONDARY]) {
            if(
CanAcces(idSecondaryWeapon[WeaponID][WPN_TEAM], SecondaryWeapon[WeaponID][WPN_ACCES], SecondaryWeapon[WeaponID][WPN_LEVEL])) {
                new 
WeaponImpulse entity_get_int(idEV_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(idstr_to_num(SecondaryWeapon[WeaponID][WPN_ID]), SecondaryWeapon[WeaponID][WPN_NAME], 0)
                else
                    
WeaponList(idstr_to_num(SecondaryWeapon[WeaponID][WPN_ID]), SecondaryWeapon[WeaponID][WPN_LIST], 0)
                
                
entity_set_int(idEV_INT_impulseWeaponID);
                
Weapon fm_give_item(idSecondaryWeapon[WeaponID][WPN_NAME]);
                
entity_set_int(WeaponEV_INT_impulseWeaponID)
                
entity_set_int(idEV_INT_impulseImpulse);
                
                if(!
equal(SecondaryWeapon[WeaponID][WPN_CLIP], "0"))
                    
cs_set_weapon_ammo(Weaponstr_to_num(SecondaryWeapon[WeaponID][WPN_CLIP]))
                return 
true
            
}
        }
    }
    return 
false
}

public 
GiveKnife(idWeaponID) {
    if(
is_user_alive(id)) {
        if(
WeaponID && WeaponID Weapons[WPN_KNIFE]) {
            if(
CanAcces(idKnife[WeaponID][WPN_TEAM], Knife[WeaponID][WPN_ACCES], Knife[WeaponID][WPN_LEVEL])) {
                new 
WeaponImpulse entity_get_int(idEV_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(idCSW_KNIFEKnife[WeaponID][WPN_NAME], 0)
                else
                    
WeaponList(idCSW_KNIFEKnife[WeaponID][WPN_LIST], 0)
                
                
entity_set_int(idEV_INT_impulseWeaponID);
                
Weapon fm_give_item(id"weapon_knife");
                
entity_set_int(WeaponEV_INT_impulseWeaponID)
                
entity_set_int(idEV_INT_impulseImpulse);
                return 
true
            
}
        }
    }
    return 
false
}

public 
GiveGrenade(idWeaponID) {
    if(
is_user_alive(id)) {
        if(
WeaponID && WeaponID Weapons[WPN_GRENADE]) {
            if(
CanAcces(idGrenade[WeaponID][WPN_TEAM], Grenade[WeaponID][WPN_ACCES], Grenade[WeaponID][WPN_LEVEL])) {
                new 
WeaponImpulse entity_get_int(idEV_INT_impulse)
                
HasChoose[id][WPN_GRENADE][get_user_team(id)] = true
                WeaponKey
[id][WPN_GRENADE][get_user_team(id)] = WeaponID
                
                bacon_strip_weapon
(idGrenade[WeaponID][WPN_NAME]);
                
                if(
equal(Grenade[WeaponID][WPN_LIST], "None"))
                    
WeaponList(idstr_to_num(Grenade[WeaponID][WPN_ID]), Grenade[WeaponID][WPN_NAME], 0)
                else
                    
WeaponList(idstr_to_num(Grenade[WeaponID][WPN_ID]), Grenade[WeaponID][WPN_LIST], 0)
                
                
entity_set_int(idEV_INT_impulseWeaponID);
                
Weapon fm_give_item(idGrenade[WeaponID][WPN_NAME]);
                
entity_set_int(WeaponEV_INT_impulseWeaponID)
                
entity_set_int(idEV_INT_impulseImpulse);
                return 
true
            
}
        }
    }
    return 
false
}

public 
GiveC4(idWeaponID) {
    if(
is_user_alive(id)) {
        if(
WeaponID && WeaponID Weapons[WPN_C4]) {
            if(
CanAcces(idC4[WeaponID][WPN_TEAM], C4[WeaponID][WPN_ACCES], C4[WeaponID][WPN_LEVEL])) {
                new 
WeaponImpulse entity_get_int(idEV_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(idCSW_C4C4[WeaponID][WPN_NAME], 0)
                else
                    
WeaponList(idCSW_C4C4[WeaponID][WPN_LIST], 0)
                
                
entity_set_int(idEV_INT_impulseWeaponID);
                
Weapon fm_give_item(id"weapon_c4");
                
entity_set_int(WeaponEV_INT_impulseWeaponID)
                
entity_set_int(idEV_INT_impulseImpulse);
                return 
true
            
}
        }
    }
    return 
false
}

stock WeaponList(idCSW_WEAPON, const Weapon[], Flag=0) {
    switch(
CSW_WEAPON) {
        case 
CSW_P228: {
            
message_begin(MSG_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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_ONEMSGID_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(killervictim, const WeaponName[]) {
    if(
is_user_connected(killer) && is_user_alive(victim)) {
        
set_msg_block(MSGID_DeathMsgBLOCK_SET);
        
ExecuteHamB(Ham_Killedvictimkiller);
        
set_msg_block(MSGID_DeathMsgBLOCK_NOT);
        
cs_set_user_money(killercs_get_user_money(killer) + 300);
        
        
make_deathmsg(killervictim0WeaponName);
        
        
message_begin(MSG_BROADCASTMSGID_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_BROADCASTMSGID_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();
    }
}

public 
make_knockback(idFloat: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(idEV_VEC_originOrigin);
        
        
Distance[0] = Origin[0] - origin[0], Distance[1] = Origin[1] - origin[1], Distance[2] = Origin[2] - origin[2];
        
Velocity[0] = Distance[0] / TimeVelocity[1] = Distance[1] / TimeVelocity[2] = Distance[2] / Time;
        
        
entity_set_vector(idEV_VEC_velocityVelocity);
    }
}

public 
make_blood(idAmount) {
    if(
is_user_alive(id)) {
        new 
BloodColor ExecuteHam(Ham_BloodColorid);
        
        if(
BloodColor != -1) {
            new 
Float:Origin[3]
            
pev(idpev_originOrigin);
            
Amount *= 2//according to HLSDK
            
            
message_begin(MSG_BROADCASTSVC_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(3Amount/10), 16));
            
message_end();
        }
    }
}

public 
make_bullet(idFloat:Origin[3]) {
    if(
is_user_alive(id)) {
        new 
TargetBody;
        
get_user_aiming(idTargetBody999999);
        
        if(
is_user_connected(Target)) {
            new 
Float:Start[3], Float:End[3], Float:Res[3], Float:Vel[3], Res2;
            
pev(idpev_originStart);
            
            
velocity_by_aim(id64Vel);
            
            
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_TraceLineStartEnd0TargetRes2);
            
get_tr2(Res2TR_vecEndPosRes);
            
            
message_begin(MSG_BROADCASTSVC_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_BROADCASTSVC_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_BROADCASTSVC_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_BROADCASTSVC_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(idanim) {
    if(
is_user_connected(id)) {
        
set_pev(idpev_weaponanimanim);
        
message_begin(MSG_ONESVC_WEAPONANIM_id);
        
write_byte(anim);
        
write_byte(pev(idpev_body));
        
message_end();
    }
}

public 
get_damage_body(bodyFloat: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(idFloat:Origin[3], SpeedFloat:Velocity[3]) {
    if(
is_user_alive(id)) {
        new 
Float:AimOrigin[3]
        
fm_get_aim_origin(idAimOrigin)
        
        
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(idFloat:forwFloat:rightFloat:upFloat:Start[]) {
    if(
is_user_alive(id)) {
        new 
Float:Origin[3], Float:Angle[3], Float:Forward[3], Float:Right[3], Float:Up[3]
        
pev(idpev_originOrigin)
        
pev(idpev_view_ofsUp)
        
xs_vec_add(OriginUpOrigin)
        if(
id <= get_maxplayers())
            
pev(idpev_v_angleAngle)
        else 
            
pev(idpev_anglesAngle)
        
        
angle_vector(AngleANGLEVECTOR_FORWARDForward)
        
angle_vector(AngleANGLEVECTOR_RIGHTRight)
        
angle_vector(AngleANGLEVECTOR_UPUp)
        
        
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(idCSW_WEAPON) {
    if(
is_user_alive(id)) {
        switch(
CSW_WEAPON) {
            case 
CSW_AWP:
                return 
get_pdata_int(id377)
            case 
CSW_SCOUTCSW_AK47CSW_G3SG1
                return 
get_pdata_int(id378)
            case 
CSW_M249
                return 
get_pdata_int(id379)
            case 
CSW_FAMASCSW_M4A1CSW_AUGCSW_SG550CSW_GALICSW_SG552
                return 
get_pdata_int(id380)
            case 
CSW_M3CSW_XM1014
                return 
get_pdata_int(id381)
            case 
CSW_USPCSW_UMP45CSW_MAC10
                return 
get_pdata_int(id382)
            case 
CSW_FIVESEVENCSW_P90
                return 
get_pdata_int(id383)
            case 
CSW_DEAGLE
                return 
get_pdata_int(id384)
            case 
CSW_P228
                return 
get_pdata_int(id385)
            case 
CSW_GLOCK18CSW_TMPCSW_ELITECSW_MP5NAVY
                return 
get_pdata_int(id386)
            default: return 
0
        
}
    }
    return 
0
}

public 
fm_set_user_bpammo(idCSW_WEAPONAmount) {
    if(
is_user_alive(id)) {
        switch(
CSW_WEAPON) {
            case 
CSW_AWP:
                
set_pdata_int(id377Amount)
            case 
CSW_SCOUTCSW_AK47CSW_G3SG1
                
set_pdata_int(id378Amount)
            case 
CSW_M249
                
set_pdata_int(id379Amount)
            case 
CSW_FAMASCSW_M4A1CSW_AUGCSW_SG550CSW_GALICSW_SG552
                
set_pdata_int(id380Amount)
            case 
CSW_M3CSW_XM1014
                
set_pdata_int(id381Amount)
            case 
CSW_USPCSW_UMP45CSW_MAC10
                
set_pdata_int(id382Amount)
            case 
CSW_FIVESEVENCSW_P90
                
set_pdata_int(id383Amount)
            case 
CSW_DEAGLE
                
set_pdata_int(id384Amount)
            case 
CSW_P228
                
set_pdata_int(id385Amount)
            case 
CSW_GLOCK18CSW_TMPCSW_ELITECSW_MP5NAVY
                
set_pdata_int(id386Amount)
            default: return 
0
        
}
    }
    return 
1
}

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

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

public 
bacon_strip_weapon(indexweapon[]) {
    if(
is_user_alive(index) && equal(weapon"weapon_"7)) {
        new 
WeaponID get_weaponid(weapon)
        
        if(
WeaponID) {
            new 
WeaponEnt fm_find_ent_by_owner(-1weaponindex)
            
            if(
WeaponEnt) {
                if(
get_user_weapon(index) == WeaponID
                    
ExecuteHamB(Ham_Weapon_RetireWeaponWeaponEnt)
                
                
ExecuteHamB(Ham_RemovePlayerItemindexWeaponEnt)
                
ExecuteHamB(Ham_Item_KillWeaponEnt)
                
set_pev(indexpev_weaponspev(indexpev_weapons) & ~(1<<WeaponID))
            }
        }
    }
}

stock HudMessage(const id, const message[], red 0green 160blue 0Float:= -1.0Float:0.65effects 2Float:fxtime 0.01Float:holdtime 3.0Float:fadeintime 0.01Float:fadeouttime 0.01) {
    new 
Players[32], Num 1Player;
    
    if(
idPlayers[0] = id;
    else 
get_players(PlayersNum"ch"); {
        for(new 
0Numi++) {
            
Player Players[i]
            
            if(
is_user_connected(Player)) {
                new 
color = (clamp(blue0255) + (clamp(green0255) << 8) + (clamp(red0255) << 16))
                
                
message_begin(MSG_ONE_UNRELIABLESVC_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 1Player;
    
vformat(Message190input3);
    
    
replace_all(Message190"!g""^4");
    
replace_all(Message190"!y""^1");
    
replace_all(Message190"!t""^3");
    
    if(
idPlayers[0] = id;
    else 
get_players(PlayersNum"ch"); {
        for(new 
0Numi++) {
            
Player Players[i]
            
            if(
is_user_connected(Player)) {
                
message_begin(MSG_ONE_UNRELIABLEMSGID_SayText_Player);
                
write_byte(Player);
                
write_string(Message);
                
message_end();
            }
        }
    } 

There's a slight problem, now no one has a knife at all..
Visinescu is offline
counter1strike6
Senior Member
Join Date: Sep 2014
Location: morocco
Old 02-10-2016 , 08:37   Re: [HELP]Remove this menu.
Reply With Quote #4

please explain which menu you want disabled is that one with "Cutit" title ?
counter1strike6 is offline
Visinescu
Senior Member
Join Date: Dec 2015
Location: England now,Home Romania
Old 02-10-2016 , 12:27   Re: [HELP]Remove this menu.
Reply With Quote #5

Yes and i am sorry i forgot my plugin is not in english at all.
about your last post, the menu was gone but the players had no knife at all.

i hope made it clear cuz my english is pretty bad.
Visinescu is offline
counter1strike6
Senior Member
Join Date: Sep 2014
Location: morocco
Old 02-10-2016 , 13:19   Re: [HELP]Remove this menu.
Reply With Quote #6

try this if not work you have to upload furien40 includes
furien40/weapons/Config.h missed
Attached Files
File Type: txt ff.txt (67.3 KB, 93 views)
counter1strike6 is offline
Visinescu
Senior Member
Join Date: Dec 2015
Location: England now,Home Romania
Old 02-14-2016 , 09:56   Re: [HELP]Remove this menu.
Reply With Quote #7

Quote:
Originally Posted by counter1strike6 View Post
try this if not work you have to upload furien40 includes
furien40/weapons/Config.h missed

It works, thank you. and i am sorry i had no time to thank you but the plugin worked and forgot about it.
Visinescu 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 17:37.


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