Sprawdzałeś inne funkcje usuwania broni?
//funkcja usuwajaca wszsytkie bronie, wraz z nozem:
stock UsunWszystkieBronie(id){
static ent
ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "player_weaponstrip"))
if (!pev_valid(ent)) return;
dllfunc(DLLFunc_Spawn, ent)
dllfunc(DLLFunc_Use, ent, id)
engfunc(EngFunc_RemoveEntity, ent)
return
}
albo znane wszystkim stripweapons?
#include <StripWeapons>
StripWeapons(id, Primary);
StripWeapons(id, Secondary);
StripWeapons(id, Knife);
StripWeapons(id, Grenades);
Nie wszyscy to wiedzą (ja na przykład doszedłem do tego sam w praktyce) ale ta funkcja w przypadku flashbanga zawiedzie, ponieważ zabierze mu broń, ale ammo jakie ma w granacie ( ammo w granacie ) zostanie na poziomie na przykład 1, więc przy otrzymania granatu nawet w następnej rundzie zamiast jednego będzie mieć dwa (pod warunkiem, że nie umrze w międzyczasie ), żeby pozbyć się tego buga wystarczy wyzerować ammo flasha przy zabieraniu granatów
cs_set_user_bpammo(id,CSW_FLASHBANG,0)
i po problemie
możesz ewentualnie usunąć konkretną broń, ale raczej nie polecam
stock ham_fm_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;
}
Sprawdź inny sposób zabierania broni, amx lubi płatać figle Pozdrawiam
PS Sztuczne odrodzenia gracza są dość dziwne, dlatego sprawdź większe opóźnienie