Witam,
postanowiłem podzielić się kodem na podnoszenie broni z ziemi gdy już jedną mamy na slocie, przykład:
Klasa posiada dwie bronie, AWP i M4, jak wyrzuci AWP ma w slocie M4 i nie może podnieść AWP, po dodaniu tego będzie mogła.
Zaczynajmy, na początku kodu dodajemy nową zmienna:
new bool:just_droped[MAX+1];
Następnie w plugin_init dodajemy:
register_clcmd("drop", "DropWeapon");
Gdzieś w kodzie dodajemy następujące funkcje:
public DropWeapon(id){
just_droped[id] = true;
set_task(0.5, "Unlock", id);
}
public Unlock(id){
just_droped[id] = false
}
Na samym końcu podmieniamy funkcje DotykBroni na:
public DotykBroni(weapon, id){
static model[24];
pev(weapon, pev_model, model, 23);
if(containi(model, "w_backpack") != -1)
return HAM_IGNORED;
if(!just_droped[id] && pev(weapon, pev_owner) == id){
static classname[64], weaponname[32], temp[32], del[4];
pev(weapon, pev_model, classname, 63);
replace(classname, 63, "w_", " ");
replace(classname, 63, ".mdl", "");
strbreak(classname, del, 3, classname, 63);
format(weaponname, 32, "weapon_%s", classname);
new weapons[32], weaponsnum, stop;
get_user_weapons(id, weapons, weaponsnum);
for(new i = 0; i < weaponsnum; i ++){
get_weaponname(weapons[i], temp, 31);
if(equal(temp, weaponname))
stop = 1;
}
if(!stop)
fm_give_item(id, weaponname);
engfunc(EngFunc_RemoveEntity, weapon);
}
return HAM_SUPERCEDE;
}
Kod sprawdzony i działa, sprawdza czy gracz nie posiada już broni którą chce podnieść, liczę na masę hejtu.
Pozdrawiam ![]()


Dodatki SourceMod














