Код
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#include <cstrike>
#pragma tabsize 0
#define PLUGIN "WeaponMenu"
#define VERSION "0.3"
#define AUTHOR "KsV"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say AWP","give_AWP")
register_clcmd("say AK","give_AK")
register_clcmd("say M4A1","give_M4A1")
register_clcmd("say FAMAS","give_FAMAS")
register_clcmd("say GALIL","give_GALIL")
register_clcmd("say strip","un_weapon")
register_clcmd("weapon", "my_menu")
}
public un_weapon(id){
//Получение id оружия
new pl_weapon = get_user_weapon(id)
new weapon_name[24]
//Получение названия оружия
get_weaponname(pl_weapon,weapon_name,24)
//Вызов функции
ham_strip_weapon(id,weapon_name)
}
stock ham_strip_weapon(id,weapon[])
{
if(!equal(weapon,"weapon_",7)) return 0
new wId = get_weaponid(weapon)
if(!wId) return 0
new wEnt
while((wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname",weapon)) && pev(wEnt,pev_owner) != id) {}
if(!wEnt) return 0
if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt)
if(!ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0
ExecuteHamB(Ham_Item_Kill,wEnt);
set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId))
return 1
}
public give_AWP(id){
if(cs_get_user_hasprim(id))
{
client_cmd(id,"say strip");
}
ham_give_weapon(id,"weapon_awp")
ham_give_weapon(id,"weapon_awp")
ham_give_weapon(id,"weapon_awp")
ham_give_weapon(id,"weapon_awp")
}
public give_AK(id){
if(cs_get_user_hasprim(id))
{
client_cmd(id,"say strip");
}
ham_give_weapon(id,"weapon_ak47")
ham_give_weapon(id,"weapon_ak47")
ham_give_weapon(id,"weapon_ak47")
ham_give_weapon(id,"weapon_ak47")
}
public give_M4A1(id){
if(cs_get_user_hasprim(id))
{
client_cmd(id,"say strip");
}
ham_give_weapon(id,"weapon_m4a1")
ham_give_weapon(id,"weapon_m4a1")
ham_give_weapon(id,"weapon_m4a1")
ham_give_weapon(id,"weapon_m4a1")
}
public give_FAMAS(id){
if(cs_get_user_hasprim(id))
{
client_cmd(id,"say strip");
}
ham_give_weapon(id,"weapon_famas")
ham_give_weapon(id,"weapon_famas")
ham_give_weapon(id,"weapon_famas")
ham_give_weapon(id,"weapon_famas")
}
public give_GALIL(id){
if(cs_get_user_hasprim(id))
{
client_cmd(id,"say strip");
}
ham_give_weapon(id,"weapon_galil")
ham_give_weapon(id,"weapon_galil")
ham_give_weapon(id,"weapon_galil")
ham_give_weapon(id,"weapon_galil")
}
public my_menu(id)
{
new i_Menu = menu_create("\rОружейка:", "server_menu")
//Пункты меню,номера функций, доступ
menu_additem(i_Menu, "\y Взять \r[\yAK47\r]", "1", 0);
menu_additem(i_Menu, "\w Взять \r[\wM4A1\r]", "2", 0);
menu_additem(i_Menu, "\y Взять \r[\yAWP\r]", "3", 0);
menu_additem(i_Menu, "\w Взять \r[\wFAMAS\r]", "4", 0);
menu_additem(i_Menu, "\y Взять \r[\yGALIL\r]", "5", 0);
menu_setprop(i_Menu, MPROP_NEXTNAME, "Далее");
menu_setprop(i_Menu, MPROP_BACKNAME, "Назад");
menu_setprop(i_Menu, MPROP_EXITNAME, "Выход");
menu_display(id, i_Menu, 0)
return PLUGIN_HANDLED
}
public server_menu(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new i_Key = str_to_num(s_Data)
switch(i_Key)
{
case 1: client_cmd(id, "say ak")
case 2: client_cmd(id, "say m4a1")
case 3: client_cmd(id, "say awp")
case 4: client_cmd(id, "say famas")
case 5: client_cmd(id, "say galil")
}
menu_destroy(menu);
return PLUGIN_HANDLED
}
stock ham_give_weapon(id,weapon[])
{
if(!equal(weapon,"weapon_",7)) return 0
new wEnt = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,weapon));
if(!pev_valid(wEnt)) return 0
set_pev(wEnt,pev_spawnflags,SF_NORESPAWN);
dllfunc(DLLFunc_Spawn,wEnt)
if(!ExecuteHamB(Ham_AddPlayerItem,id,wEnt))
{
if(pev_valid(wEnt)) set_pev(wEnt,pev_flags,pev(wEnt,pev_flags) | FL_KILLME);
return 0
}
ExecuteHamB(Ham_Item_AttachToPlayer,wEnt,id)
return 1
}