- 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
Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Podmienianie modeli broni
#1
Napisano 27.07.2011 19:39
Popularny
#2
Napisano 27.07.2011 21:18
Advanced File Replacer - AMXX.pl: Support AMX Mod X
Idealnie działającej na podmianie modeli broni.
#3
Napisano 27.07.2011 21:22
bardzo duża wadaWażne: Nazwa nowego pliku nie może być dłuższa niż nazwa podmienianego pliku.
#4
Napisano 27.07.2011 22:06
iOwner = pev(wpn,pev_owner)powinno być
iOwner = entity_get_edict(wpn, EV_ENT_owner)
Warto dodać również, że jeżeli ktoś używa fakemeta, do pobrania właściciela broni można użyć również:
iOwner = get_pdata_cbase(wpn, 41, 4)
Użytkownik Cyferki edytował ten post 27.07.2011 22:12
#5
Napisano 27.07.2011 22:23
#6
Napisano 27.07.2011 22:32
Wada ? Dla kogoś komu zależy na efektywnym i nie zużywającym zasobów sposobie wybierze orpheu. Nazwać broń używając tych samych długości to nie problem a kombinacji jest mnóstwo. W końcu gracz nie ma nic do gadania i broń może nazywać się abcde.mdl.bardzo duża wada
#7
Napisano 27.07.2011 22:47
to ty rozwijasz kod i go edytujesz wiec to jest bardzo duża wada + orpheu to moduł niestandardowy
#8
Napisano 27.07.2011 23:07
szkoda tylko ze dzwiekow nie mozna w zaden "naturalny" sposob podmienic
Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka
GG:6022845 (nie pomagam za free osobom ponizej rangi MoD)
#9
Napisano 30.07.2011 08:30
Powyżej opisane metody są sobie równe. Tyle że różnią się czasem reakcji i zapisem.
Użytkownik Owner123 edytował ten post 30.07.2011 22:51
#10
Napisano 06.04.2012 16:02
PS: Jak daje classname w registerham "weapon_gali" to mam potem error:
L 04/06/2012 - 17:22:47: [HAMSANDWICH] Failed to retrieve classtype for "weapon_gali", hook for "ham_postItemDeploy" not active.
#11
Napisano 11.04.2012 20:36
gali to stara definicja
First one should have been left for backwards compatibility.
#12
Napisano 04.08.2012 11:25
Działa po wykorzystaniu obu metod, czyli zarejestrowanie Ham_Item_Deploy na wszystkich broniach (weapon_) i użyciu CurWeapon.
public fw_ItemsDeploy(wpn)
{
static id;
id = pev(wpn, pev_owner);
if(!is_user_alive(id))
return 0;
if(ma_klase[id])
{
new old_weapon2[33];
old_weapon2[id]=old_weapon[id];
old_weapon[id]=cs_get_weapon_id(wpn);
if(old_weapon[id]==CSW_AWP && old_weapon2[id]!=CSW_AWP)
{
set_pev(id, pev_viewmodel2, WEAPON_1_V_MODEL);
set_pev(id, pev_weaponmodel2, WEAPON_1_P_MODEL);
UTIL_PlayWeaponAnimation(id, 5);
}
}
}
public CurrentWeapon(id)
{
if(ma_klase[id] && is_user_alive(id))
{
if(read_data(2) == CSW_AWP)
{
set_pev(id, pev_viewmodel2, WEAPON_1_V_MODEL);
set_pev(id, pev_weaponmodel2, WEAPON_1_P_MODEL);
if(old_weapon[id]!=CSW_AWP)
UTIL_PlayWeaponAnimation(id, 5);
}
}
}
#13
Napisano 04.08.2012 13:15
używanie obydwu metod naraz nie ma sensu
#14
Napisano 27.08.2014 14:54
Lepsza metoda nie zmienia modelu kiedy podniosę broń lub po zakończeniu rundy.
Wystarczy użyć Ham_Item_AttachToPlayer, aby w tych przypadkach również podmieniało model
#16
Napisano 23.07.2015 12:33
Mam kłopot, bo gdy używam tego z precache to model nie zmienia się, ustawia się jako domyślny nóż.
#17
Napisano 23.07.2015 21:03
To jest tylko tutorial nie pełnoprawny plugin
#18
Napisano 27.07.2015 16:06
A czy nie będzie przypadkiem sytuacji, że przy wyciągnięciu noża (z przykładu) jeżeli mamy do funkcji dodane również inne bronie to nie zostaną one niestety zmienione?
Z tego co jest napisane, można wywnioskować, że funkcja zostanie wykonana w przypadku deploy noża. Więc albo inne bronie nie zostaną zmienione, albo jeżeli w ogóle nie wyciągnę noża podczas gry - nic nie zostanie zmienione?
#19
Napisano 27.07.2015 19:01
#20
Napisano 27.07.2015 20:52
Rzecz jasna nowszym.
I sprawdziłem to (na tyle na ile umiałem). registerHam HamItemDeploy, "weapon_knife" nie zmieni nam np mp5.
Czy z tego wynika że każdą zmienianą broń trzeba oddzielnie wywoływać?
public fwItemDeploy(wpn){ static iOwner; iOwner = pev(wpn,pev_owner); new wpnID = cs_get_weapon_id(wpn) if(wpnID == CSW_MP5NAVY){ set_pev(iOwner,pev_viewmodel2, "models/v_1.mdl") set_pev(iOwner,pev_weaponmodel2, "models/p_1.mdl") } }
Użytkownik Hajz edytował ten post 27.07.2015 20:53