- Metoda gorsza:
do plugin_init dodajemy
register_event("CurWeapon","CurWeapon","be", "1=1")
jest to event wywoływany przy zmianie broni , strzale / przeładowaniu (zmianie amunicji) więc dość często prawda ?
gdzieś w pluginie dodajemy
public CurWeapon(id) { new wid = read_data(2) // Id broni }
w zmiennej wid mamy typ broni ( CSW_*)
Nazwy broni i ammo do give_item (+ speed) - AMXX.pl: Support AMX Mod X
załóżmy że chcemy podmienić model noża
public CurWeapon(id) { new wid = read_data(2) // Id broni if(wid == CSW_KNIFE){ } }
teraz kod na podmianę
- Wykorzystujący engine
public CurWeapon(id) { new wid = read_data(2) // Id broni if(wid == CSW_KNIFE){ entity_set_string(id, EV_SZ_viewmodel, "models/v_nowy_noz.mdl") } }
- Wykorzystujący fakemete
public CurWeapon(id) { new wid = read_data(2) // Id broni if(wid == CSW_KNIFE){ set_pev(id,pev_viewmodel2,"models/v_nowy_noz.mdl") } }
wtedy dodajemy
- Wykorzystując engine
public CurWeapon(id) { new wid = read_data(2) // Id broni if(wid == CSW_KNIFE){ entity_set_string(id, EV_SZ_viewmodel, "models/v_nowy_noz.mdl") entity_set_string(id, EV_SZ_weaponmodel, "models/p_nowy_noz.mdl") } }
- Wykorzystując fakemete
public CurWeapon(id) { new wid = read_data(2) // Id broni if(wid == CSW_KNIFE){ set_pev(id,pev_viewmodel2,"models/v_nowy_noz.mdl") set_pev(id,pev_weaponmodel2,"models/p_nowy_noz.mdl") } }
jeśli będziemy chcieli podmienić broni to robimy
public CurWeapon(id) { new wid = read_data(2) // Id broni if(wid == CSW_KNIFE){ //podmiana modeli } else if(wid == inna bron){ //podmiana modeli } }
- Wykorzystujący engine
- Metoda lepsza:
Wykorzystująca hamsandwich
w plugin_init dodajemy
RegisterHam(Ham_Item_Deploy, "weapon_knife", "fwItemDeploy",1);
drugi parametr jest to classname w przykładzie dałem weapon_knife bo taki jest classname dla noża dla innych broni możecie sprawdzić tutaj
Nazwy broni i ammo do give_item (+ speed) - AMXX.pl: Support AMX Mod X
w pluginie w dowolnym miejscu dodajemy
public fwItemDeploy(wpn){ static iOwner; iOwner = pev(wpn,pev_owner); }
w zmiennej iOwner mamy id gracza który trzyma broń
i podmieniamy
- Wykorzystując engine
public fwItemDeploy(wpn){ static iOwner; iOwner = entity_get_edict(wpn, EV_ENT_owner) entity_set_string(iOwner, EV_SZ_viewmodel, "models/v_nowy_noz.mdl") }
- Wykorzystując fakemete
public fwItemDeploy(wpn){ static iOwner; iOwner = pev(wpn,pev_owner); set_pev(iOwner,pev_viewmodel2,"models/v_nowy_noz.mdl") }
- Wykorzystując engine
public fwItemDeploy(wpn){ static iOwner; iOwner = entity_get_edict(wpn, EV_ENT_owner) entity_set_string(iOwner, EV_SZ_viewmodel, "models/v_nowy_noz.mdl") entity_set_string(iOwner, EV_SZ_weaponmodel, "models/p_nowy_noz.mdl") }
- Wykorzystując fakemete
public fwItemDeploy(wpn){ static iOwner; iOwner = pev(wpn,pev_owner); set_pev(iOwner,pev_viewmodel2,"models/v_nowy_noz.mdl") set_pev(iOwner,pev_weaponmodel2,"models/p_nowy_noz.mdl") }
public fwItemDeploy(wpn){ static iOwner; iOwner = pev(wpn,pev_owner); new wpnID = cs_get_weapon_id(wpn) if(wpnID == CSW_KNIFE){ //podmiana modelu } else if(wpnID == inna bron){ //podmiana modelu } }
ta metoda jest lepsza ponieważ model jest podmieniany tylko przy wyciąganiu (deploy) , przy strzale i przeładowaniu nie ma to miejsca - Wykorzystując engine
