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