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