Skocz do zawartości

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.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Podmienianie modeli broni


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
22 odpowiedzi w tym temacie

#1 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 552
Godlike

  • Postów:11 974
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 27.07.2011 19:39

*
Popularny

Pokaże dwie metody gorszą i lepszą na podmienia modeli broni które widzi gracz i modeli które widzą inni gracze patrząc na nas
  • 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")
      	}
      }
      
    może będziemy chcieli podmienić też model p_ czyli ten model którzy widzą inni gracze patrzący na gracza (nie ze specta poprostu patrzący na niego ;D )
    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
      	}
      }
      
  • 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")
      	
      }
    no i jeśli model p także to
    • 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")
      }
      
    a jeśli będziemy chcieli podłączyć podmienianie dwóch lub więcej broni w jednej funkcji to robimy

    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
oczywiście nowe modele muszą być "zprecachowane" ( Dołączona grafika ) w plugin_precache
  • +
  • -
  • 22

#2 Ortega

    mów mi Orti

  • Power User

Reputacja: 363
Wszechpomocny

  • Postów:640
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Sosnowiec
Offline

Napisano 27.07.2011 21:18

Brakło tylko metody najlepszej ;)
Advanced File Replacer - AMXX.pl: Support AMX Mod X
Idealnie działającej na podmianie modeli broni.
  • +
  • -
  • 0

#3 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6 552
Godlike

  • Postów:11 974
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 27.07.2011 21:22

nie do końca najlepszej

Ważne: Nazwa nowego pliku nie może być dłuższa niż nazwa podmienianego pliku.

bardzo duża wada
  • +
  • -
  • 1

#4 Cyferki

    Początkujący

  • Użytkownik

Reputacja: 10
Początkujący

  • Postów:14
  • Lokalizacja:Narnia
Offline

Napisano 27.07.2011 22:06

Tutek bardzo dobry. Tylko jak ktoś używa engine, zamiast:
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

  • +
  • -
  • 1

#5 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6 552
Godlike

  • Postów:11 974
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 27.07.2011 22:23

dzięki :)
  • +
  • -
  • 0

#6 Ortega

    mów mi Orti

  • Power User

Reputacja: 363
Wszechpomocny

  • Postów:640
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Sosnowiec
Offline

Napisano 27.07.2011 22:32

bardzo duża wada

Wada :D? 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.
  • +
  • -
  • 0

#7 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6 552
Godlike

  • Postów:11 974
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 27.07.2011 22:47

wymusza to stosowanie to krotkich nazw co nie jest wygodne a chodzi właśnie o wygodę
to ty rozwijasz kod i go edytujesz wiec to jest bardzo duża wada + orpheu to moduł niestandardowy
  • +
  • -
  • 0

#8 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 27.07.2011 23:07

jak ci zalezy to sobie wgrasz orpheu a co do nazw to od tego są komentarze w pluginie :D

szkoda tylko ze dzwiekow nie mozna w zaden "naturalny" sposob podmienic
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

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) :D

#9 Owner123

    Wszechpomocny

  • Użytkownik

Reputacja: 146
Zaawansowany

  • Postów:331
  • Lokalizacja:Barty ;]
Offline

Napisano 30.07.2011 08:30

Metodą najlepszą jest użycie CBasePlayerWeapon::DefaultDeploy przy użyciu Orpheu. Złapanie tej funkcji pozwala na szybką zmianę modelu oraz innych parametrów z maksymalną redukcją SVC_BAD ...
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

  • +
  • -
  • 0

#10 Fili:P

    Godlike

  • Power User

Reputacja: 754
Guru

  • Postów:1 679
  • Imię:Darek
  • Lokalizacja:Warszawa
Offline

Napisano 06.04.2012 16:02

Przydałoby się jeszcze ustawienie modelu w_ ( broń leży np. na ziemi ).

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.

  • +
  • -
  • 1

#11 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6 552
Godlike

  • Postów:11 974
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 11.04.2012 20:36

spróbuj weapon_galil
gali to stara definicja
First one should have been left for backwards compatibility.

  • +
  • -
  • 2

#12 Fili:P

    Godlike

  • Power User

Reputacja: 754
Guru

  • Postów:1 679
  • Imię:Darek
  • Lokalizacja:Warszawa
Offline

Napisano 04.08.2012 11:25

Lepsza metoda nie zmienia modelu kiedy podniosę broń lub po zakończeniu rundy. Nie wiem czy gorsza też.

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);
}
}
}

  • +
  • -
  • 0

#13 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6 552
Godlike

  • Postów:11 974
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 04.08.2012 13:15

jest to bug gry
używanie obydwu metod naraz nie ma sensu
  • +
  • -
  • 0

#14 szelbi

    Hero

  • Power User

Reputacja: 373
Wszechpomocny

  • Postów:1 032
  • Steam:steam
  • Imię:Norbert
  • Lokalizacja:Częstochowa
Offline

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 :)


  • +
  • -
  • 0

#15 vasetobtg

    Nowy

  • Nowy

Reputacja: 0
Nowy

  • Postów:3
  • Imię:nea
  • Lokalizacja:neart
Offline

Napisano 04.05.2015 17:07

thanks for you=)


  • +
  • -
  • 0

#16 ZwiastuN

    Początkujący

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:19
  • Imię:Szymon
Offline

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óż.


  • +
  • -
  • 0

#17 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6 552
Godlike

  • Postów:11 974
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 23.07.2015 21:03

To jest tylko tutorial nie pełnoprawny plugin


  • +
  • -
  • 0

#18 Hajz

    Początkujący

  • Użytkownik

Reputacja: 7
Nowy

  • Postów:16
  • Lokalizacja:Internet
Offline

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?


  • +
  • -
  • 0

#19 DarkGL

    Nie oddam ciasteczka !

  • Autor tematu
  • Administrator

Reputacja: 6 552
Godlike

  • Postów:11 974
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 27.07.2015 19:01

O którym sposobie mówisz ?
  • +
  • -
  • 0

#20 Hajz

    Początkujący

  • Użytkownik

Reputacja: 7
Nowy

  • Postów:16
  • Lokalizacja:Internet
Offline

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

  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych