Исходный код функции:
#include <fakemeta>
#include <hamsandwich>
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
}
Синтаксис:
ham_strip_weapon(id,weapon[])
- id - Индекс игрока
- weapon[] - Название оружия weapon_*
Тип функции:
stock
Пример:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <hamsandwich>
#define PLUGIN "[The useful functions] ham_strip_weapon"
#define VERSION "1.0"
#define AUTHOR "Admin"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say strip","un_weapon")
}
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
}
Описание:
В данном примере скрипт получает какое оружие у игрока, выполнившего команду say strip, и передает его индекс и название его оружие функции ham_strip_weapon, которая в свою очередь удаляет оружие.
Думаю проще