Dodanie broni dla gracza + ammo
sebul
10.11.2011
Funkcja przyda się jeśli chcemy od razu dać komuś broń razem z ammo.
I teraz chcąc dać komuś jakąś broń robimy to tak
Wymagane biblioteki:
- fun
- cstrike
- engine
stock const WA_PRI_WEAPONS = ((1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90));
stock const WA_SEC_WEAPONS = ((1<<CSW_P228)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE));
stock const WA_GRENADES = ((1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG));
stock const WA_NO_WEAPONS = ((1<<0)|(1<<2)|(1<<CSW_VEST)|(1<<CSW_VESTHELM));
stock const maxClip[] = { -1, 13, -1, 10, 1, 7, 1, 30, 30, 1, 30, 20, 25, 30, 35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, 1, 50, 0, 0 };
stock const maxAmmo[] = { -1, 52, -1, 90, 1, 32, 1, 100, 90, 1, 120, 100, 100, 90, 90, 90, 100, 120, 30, 120, 200, 32, 90, 120, 90, 2, 35, 90, 90, 1, 100, 0, 0 };
enum WeaponType {
WTEmpty = 0,
WTPistol,
WTPrimary,
WTGrenade,
WTBomb,
WTKnife
}
stock const WeaponType:g_weapons[] = {
WTEmpty,
WTPistol,
WTEmpty,
WTPrimary,
WTGrenade,
WTPrimary,
WTBomb,
WTPrimary, WTPrimary,
WTGrenade,
WTPistol, WTPistol,
WTPrimary, WTPrimary, WTPrimary, WTPrimary,
WTPistol, WTPistol,
WTPrimary, WTPrimary, WTPrimary, WTPrimary, WTPrimary, WTPrimary, WTPrimary,
WTGrenade,
WTPistol,
WTPrimary, WTPrimary,
WTKnife,
WTPrimary
};
stock give_weapon(id, weap = 0, ammo = 0, clip = -1) {
if(!is_user_alive(id))
return;
if(weap <= 0 || weap > 30) weap = random_num(1,30);
if(!((1<<weap) & (WA_PRI_WEAPONS|WA_SEC_WEAPONS))) {
give_weapon(id, _, ammo, clip);
return;
}
new weaponname[32];
get_weaponname(weap, weaponname, 31);
give_item(id, weaponname);
if(ammo != 0) cs_set_user_bpammo(id, weap, ammo < 0 ? maxAmmo[weap] : ammo);
if(clip >= 0 && clip < maxClip[weap]) {
new went = find_ent_by_owner(-1, weaponname, id);
if(is_valid_ent(went)) cs_set_weapon_ammo(went, clip);
}
}
I teraz chcąc dać komuś jakąś broń robimy to tak
give_weapon(id, CSW_M4A1); // gracz dostanie m4 bez dodatkowej amunicji
give_weapon(id, CSW_USP, 20); // gracz dostanie usp i 20 dodatkowej amunicji
give_weapon(id, CSW_AWP, 20, 1); // gracz dostanie awp i 20 dodatkowej amunicji oraz 1 nabojem w magazynku
give_weapon(id, CSW_FAMAS, -1); // gracz dostanie famasa i max dodatkowej amunicji dla tej broni
give_weapon(id, CSW_MP5NAVY, _, 2); // gracz dostanie mp5 bez dodatkowej amunicji z 2 nabojami w magazynku
give_weapon(id, _, -1); // gracz dostanie losową broń i max dodatkowej amunicji dla tej broni
give_weapon(id); // gracz dostanie losową broń bez dodatkowej amunicji
Wymagane biblioteki:
- fun
- cstrike
- engine
Attached Files
sebul
26.02.2012
"Dodanie broni dla gracza + ammo"Tu chodzi o bron dla konkretnego gracza co runde czy dla wszystkich?
Misiaczek ;c
26.02.2012
No czyli dla okreslonego gracza, mozna to zrobic na jakas flage czy cos?
można
Misiaczek ;c
26.02.2012
Plik weapon.inc
w pluginie tylko dopisujecie
#include <weapon>
w pliku inc sa definicje ze w przypadku braku funa i csrike w pluginie to je z automatu doda
w pluginie tylko dopisujecie
#include <weapon>
w pliku inc sa definicje ze w przypadku braku funa i csrike w pluginie to je z automatu doda
Attached Files
sebul
26.12.2012
Trochę zmieniłem sposób sprawdzania, czy dawana rzecz, jest bronią do strzelania. Później pewnie dodam jeszcze możliwość zmieniania początkowej ilości amunicji w aktualnym magazynku.
sebul
28.02.2013
Funkcja poprawiona, bo w sumie nawet nie wiem kiedy to się stało, ale był poważny błąd w jednym warunku, który zresztą był na tyle poważny, że na pewno przy pierwszej wersji był on poprawny, ale musiało się coś popsuć przy którejś edycji postu.
vanillah
31.07.2016
czy tylko u mnie ta funkcja dziala dziwnie? jak mam
give_weapon(id, CSW_FAMAS, -1);
to dodaje mi losową broń, lub nawet dwie