Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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
Edycja Pluginu

[ROZWIĄZANE] Zmienienie modelu w_ dla granatów

edycja pluginu

Najlepsza odpowiedź [email protected], 08.08.2018 19:46

Przepraszam bardzo za kolejny post pod sobą i dlatego uprzejmię proszę moderatora o połączenie moich postów. 

 

Znalazłem w końcu rozwiązanie. Testowałem to pod (chyba) każdym możliwym względem i każdy test kończył się pozytywnie, dlatego śmiało mogę rzec, że działa jak natura chciała. 

 

Zmieniłem 

if(equali(model, OLDWORLD_MODEL1) < 0)
     return FMRES_IGNORED;

na 

if(!equali(model, OLDWORLD_MODEL1))
if(!equali(model, OLDWORLD_MODEL2))
if(!equali(model, OLDWORLD_MODEL3))
     return FMRES_IGNORED;

a dwa ostatnie returny zamieniłem tak, aby zwracały FMRES_SUPERCEDE, no i działa!

 

Temat uważam za wyczerpany. 

Przejdź do postu


  • Zamknięty Temat jest zamknięty
12 odpowiedzi w tym temacie

#1 [email protected]

    Pomocny

  • Użytkownik

Reputacja: 18
Początkujący

  • Postów:64
  • GG:
  • Steam:steam
  • Imię:Kamil
Offline

Napisano 07.08.2018 18:11

Witam. Posiadam CSGO Mod'a i chciałbym, aby modele lecących już granatów (w_x.mdl, gdzie x = nazwa granatu) były zmienione na te z CS:GO. 

Więc znalazłem odpowiednie modele, teraz czas jakoś je podmienić. Na amxx nic nie znalazłem, natomiast na allied'ach już tak: https://forums.allie...ad.php?t=104582

 

Podano tam niżej taki kod:

#include <amxmodx> 
#include <engine> 
#include <fakemeta> 

new WORLD_MODEL[]    = "models/Hello-Kitty/w_kittys_c4.mdl"

new OLDWORLD_MODEL[]    = "models/w_c4.mdl" 
public plugin_init() 
{
    register_plugin("22323", "2323", "2323")     
    register_forward(FM_SetModel, "fw_SetModel")
} 
public plugin_precache() 
{    
    precache_model(WORLD_MODEL)
} 
public fw_SetModel(entity, model[])
{
    if(!is_valid_ent(entity)) 
        return FMRES_IGNORED

    if(!equali(model, OLDWORLD_MODEL)) 
        return FMRES_IGNORED

    new className[33]
    entity_get_string(entity, EV_SZ_classname, className, 32)

    if(equal(className, "weaponbox") || equal(className, "armoury_entity") || equal(className, "grenade"))
    {
        entity_set_model(entity, WORLD_MODEL)
        return FMRES_SUPERCEDE
    }
    return FMRES_IGNORED
}  

Postanowiłem potestować dla jednego granata (HE). Zrobiłem co trzeba, wchodzę, rzucam i okazuje się, że działa. Więc postanowiłem zrobić tak dla pozostałych 2 granatów. 

Zgrzebałem taki kodzik: 

#include <amxmodx> 
#include <engine> 
#include <fakemeta> 

new WORLD_MODEL1[]    = "models/xxx/xxx/w_xxx.mdl"
new WORLD_MODEL2[]    = "models/xxx/xxx/w_xxx.mdl"
new WORLD_MODEL3[]    = "models/xxx/xxx/w_xxx.mdl"

new OLDWORLD_MODEL1[]    = "models/w_xxx.mdl" 
new OLDWORLD_MODEL2[]    = "models/w_xxx.mdl" 
new OLDWORLD_MODEL3[]    = "models/w_xxx.mdl" 

public plugin_init() 
{
    register_plugin("22323", "2323", "2323")     
    register_forward(FM_SetModel, "fw_SetModel")
} 
public plugin_precache() 
{    
    precache_model(WORLD_MODEL1)
    precache_model(WORLD_MODEL2)
    precache_model(WORLD_MODEL3)
} 
public fw_SetModel(entity, model[])
{
    if(!is_valid_ent(entity)) 
        return FMRES_IGNORED

    if(!equali(model, OLDWORLD_MODEL1)) 
    if(!equali(model, OLDWORLD_MODEL2)) 
    if(!equali(model, OLDWORLD_MODEL3)) 
        return FMRES_IGNORED

    new className[33]
    entity_get_string(entity, EV_SZ_classname, className, 32)

    if(equal(className, "weaponbox") || equal(className, "armoury_entity") || equal(className, "grenade"))
    {
        entity_set_model(entity, WORLD_MODEL1)
        entity_set_model(entity, WORLD_MODEL2)
        entity_set_model(entity, WORLD_MODEL3)
        return FMRES_SUPERCEDE
    }
    return FMRES_IGNORED
}  

No i podmienia, ale na jeden - ostatni (w tym przypadku smoke). Czyli nawet jak rzucam he, fb to pokazuje się model smoke'a. 

 

Pokminiłem trochę i pomyślałem, że przecież w ostatnim if'ie musi być warunek, dla jakiej broni co ma podmieniać. 

 

Zrobiłem coś takiego:

if(equal(className, "weaponbox") || equal(className, "armoury_entity") || equal(className, "grenade"))
    {
        if(get_user_weapon(entity) == CSW_HEGRENADE) {
                entity_set_model(entity, WORLD_MODEL1)
        }
        if(get_user_weapon(entity) == CSW_FLASHBANG) {
                entity_set_model(entity, WORLD_MODEL2)
        }
        if(get_user_weapon(entity) == CSW_SMOKEGRENADE) {
                entity_set_model(entity, WORLD_MODEL3)
        }
        return FMRES_SUPERCEDE
    }

Ale w ogóle nie podmienia modeli w_.

 

W jaki sposób mogę uzyskać pożądany efekt?


Użytkownik [email protected] edytował ten post 07.08.2018 18:13

  • +
  • -
  • 0

#2 aSiorr

    .---- ... .... --- - ..--- -.- .. .-.. .-.. ·-·-·- .--. .-..

  • Support Team

Reputacja: 470
Wszechobecny

  • Postów:1 378
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 07.08.2018 18:19

Have fun

Załączone pliki


Użytkownik aSiorr edytował ten post 07.08.2018 18:19

  • +
  • -
  • 0

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów od zera, za zero.


#3 [email protected]

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 18
Początkujący

  • Postów:64
  • GG:
  • Steam:steam
  • Imię:Kamil
Offline

Napisano 07.08.2018 20:03

Dobra, zrobiłem coś takiego: 

#include <amxmodx>
#include <fun>
#include <cstrike>
#include <fakemeta_util>
#include <hamsandwich>

#define PLUGIN "Podmiana granatow w locie"
#define VERSION "1.0.0"
#define AUTHOR "Cypis & [email protected]"


public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);
	register_forward(FM_SetModel, "fwSetModelGrenade")
}

public plugin_precache()
{
	precache_model("models/csgo/granaty/w_hegrenade.mdl");
	precache_model("models/csgo/granaty/w_flashbang.mdl");
	precache_model("models/csgo/granaty/w_smokegrenade.mdl");
}
public fwSetModelGrenade(ent, const model[])
{
	if(!equal(model,"models/w_hegrenade.mdl")) {	
		//return HAM_IGNORED;
		fm_entity_set_model(ent, "models/csgo/granaty/w_hegrenade.mdl");
	}
	
	else if(!equal(model,"models/w_flashbang.mdl")) {
		//return HAM_HANDLED;
		fm_entity_set_model(ent, "models/csgo/granaty/w_flashbang.mdl");
	}
	else if(!equal(model,"models/w_smokegrenade.mdl")) {
		//return HAM_HANDLED;
		fm_entity_set_model(ent, "models/csgo/granaty/w_smokegrenade.mdl");
	}
	
	return HAM_SUPERCEDE;
}


Jednak jest tak:

 

rzucam HE - pokazuje model FB,

rzucam FB - pokazuje model HE,

rzucam SG - pokazuje model HE.

 


  • +
  • -
  • 0

#4 aSiorr

    .---- ... .... --- - ..--- -.- .. .-.. .-.. ·-·-·- .--. .-..

  • Support Team

Reputacja: 470
Wszechobecny

  • Postów:1 378
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 07.08.2018 20:06

if(!equal

na

if(equal

  • +
  • -
  • 0

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów od zera, za zero.


#5 [email protected]

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 18
Początkujący

  • Postów:64
  • GG:
  • Steam:steam
  • Imię:Kamil
Offline

Napisano 08.08.2018 13:37

Niestety nie pomaga.

Jeśli usunę "!" tylko w pierwszym if'ie to he jest ok, fb zamienia na sg, sg zamienia na fb oraz model podczas śmierci się freezuje i wypada z niego granat (fb z moim modelem w_):

Spoiler

 

Jeśli usunę "!" w dwóch pierwszych model freezuje się w jakiejś ścianie:

 

Spoiler

 

Jeśli usunę we wszystkich 3 to w ogóle nie podmienia. 

 

Dziwna sprawa. Może temu pluginowi brak jakiejś funkcji? Ktoś ma może pomysł na naprawę lub inny plugin? 


Użytkownik [email protected] edytował ten post 08.08.2018 13:38

  • +
  • -
  • 0

#6 [email protected]

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 18
Początkujący

  • Postów:64
  • GG:
  • Steam:steam
  • Imię:Kamil
Offline

Napisano 08.08.2018 14:11

Nie mogę edytować postu up.

 

Udało mi się zrobić takowy plugin. Kod dla innych: 

#include <amxmodx> 
#include <engine> 
#include <fakemeta> 

new WORLD_MODEL1[]    = "models/csgo/granaty/w_hegrenade.mdl"
new WORLD_MODEL2[]    = "models/csgo/granaty/w_flashbang.mdl"
new WORLD_MODEL3[]    = "models/csgo/granaty/w_smokegrenade.mdl"

new OLDWORLD_MODEL1[]    = "models/w_hegrenade.mdl" 
new OLDWORLD_MODEL2[]    = "models/w_flashbang.mdl" 
new OLDWORLD_MODEL3[]    = "models/w_smokegrenade.mdl" 

public plugin_init() 
{
    register_plugin("22323", "2323", "2323")     
    register_forward(FM_SetModel, "fw_SetModelH")
    register_forward(FM_SetModel, "fw_SetModelF")
    register_forward(FM_SetModel, "fw_SetModelS")
} 
public plugin_precache() 
{    
	precache_model(WORLD_MODEL1)
	precache_model(WORLD_MODEL2)
	precache_model(WORLD_MODEL3)
} 
public fw_SetModelH(entity, model[])
{
	if(!is_valid_ent(entity)) 
		return FMRES_IGNORED

	if(!equali(model, OLDWORLD_MODEL1)) 
	return FMRES_IGNORED

	new className[33]
	entity_get_string(entity, EV_SZ_classname, className, 32)
	
	if(equal(className, "weaponbox") || equal(className, "armoury_entity") || equal(className, "grenade"))
	{
		entity_set_model(entity, WORLD_MODEL1)
		return FMRES_SUPERCEDE
	}
	return FMRES_IGNORED
}  
public fw_SetModelF(entity, model[])
{
	if(!is_valid_ent(entity)) 
		return FMRES_IGNORED

	if(!equali(model, OLDWORLD_MODEL2)) 
	return FMRES_IGNORED

	new className[33]
	entity_get_string(entity, EV_SZ_classname, className, 32)
	
	if(equal(className, "weaponbox") || equal(className, "armoury_entity") || equal(className, "grenade"))
	{
		entity_set_model(entity, WORLD_MODEL2)
		return FMRES_SUPERCEDE
	}
	return FMRES_IGNORED
}  
public fw_SetModelS(entity, model[])
{
	if(!is_valid_ent(entity)) 
		return FMRES_IGNORED

	if(!equali(model, OLDWORLD_MODEL3)) 
	return FMRES_IGNORED

	new className[33]
	entity_get_string(entity, EV_SZ_classname, className, 32)
	
	if(equal(className, "weaponbox") || equal(className, "armoury_entity") || equal(className, "grenade"))
	{
		entity_set_model(entity, WORLD_MODEL3)
		return FMRES_SUPERCEDE
	}
	return FMRES_IGNORED
}  

Zrobiłem po prostu 3 forwardy zmieniając ich nazwy dla każdego z granatów, ale jak widać tego samego typu. Stąd moje pytanie: czy jest to optymalne?


  • +
  • -
  • 0

#7 aSiorr

    .---- ... .... --- - ..--- -.- .. .-.. .-.. ·-·-·- .--. .-..

  • Support Team

Reputacja: 470
Wszechobecny

  • Postów:1 378
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 08.08.2018 14:47

Nie mogłem wczoraj, ale here:

 

Spoiler

  • +
  • -
  • 1

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów od zera, za zero.


#8 [email protected]

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 18
Początkujący

  • Postów:64
  • GG:
  • Steam:steam
  • Imię:Kamil
Offline

Napisano 08.08.2018 15:14

Nie mogłem wczoraj, ale here:

 

Spoiler

 

 

Dziękuję bardzo, taki zapis z pewnością jest lepszy. :) 

Można close.


  • +
  • -
  • 0

#9 [email protected]

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 18
Początkujący

  • Postów:64
  • GG:
  • Steam:steam
  • Imię:Kamil
Offline

Napisano 08.08.2018 16:00

Jednak nie jest git, po wyrzuceniu jakiejkolwiek broni na ziemię jej model znika (aczkolwiek da się ją podnieść, ale jej nie widać).


  • +
  • -
  • 0

#10 aSiorr

    .---- ... .... --- - ..--- -.- .. .-.. .-.. ·-·-·- .--. .-..

  • Support Team

Reputacja: 470
Wszechobecny

  • Postów:1 378
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 08.08.2018 16:34

	return FMRES_SUPERCEDE;
}

na

	return FMRES_IGNORED;
}

na linii 41. bo sprawdzane są modele granatów - jeśli aktualna bron to granat to zamienia model na odpoweidni granat, jeśli nie to FMRES_SUPERCEDE, czyli blokuje wykonanie funkcji, czyli tym samym blokuje ustawienie domyślnego modelu.


  • +
  • -
  • 0

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów od zera, za zero.


#11 [email protected]

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 18
Początkujący

  • Postów:64
  • GG:
  • Steam:steam
  • Imię:Kamil
Offline

Napisano 08.08.2018 18:10

Znów pojawia się model leżących broni, ale nie zmienia modeli granatów. 


  • +
  • -
  • 0

#12 [email protected]

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 18
Początkujący

  • Postów:64
  • GG:
  • Steam:steam
  • Imię:Kamil
Offline

Napisano 08.08.2018 19:46   Najlepsza odpowiedź

Przepraszam bardzo za kolejny post pod sobą i dlatego uprzejmię proszę moderatora o połączenie moich postów. 

 

Znalazłem w końcu rozwiązanie. Testowałem to pod (chyba) każdym możliwym względem i każdy test kończył się pozytywnie, dlatego śmiało mogę rzec, że działa jak natura chciała. 

 

Zmieniłem 

if(equali(model, OLDWORLD_MODEL1) < 0)
     return FMRES_IGNORED;

na 

if(!equali(model, OLDWORLD_MODEL1))
if(!equali(model, OLDWORLD_MODEL2))
if(!equali(model, OLDWORLD_MODEL3))
     return FMRES_IGNORED;

a dwa ostatnie returny zamieniłem tak, aby zwracały FMRES_SUPERCEDE, no i działa!

 

Temat uważam za wyczerpany. 


  • +
  • -
  • 0

#13 DarkGL

    Nie oddam ciasteczka !

  • Właściciel

Reputacja: 6 209
Godlike

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

Napisano 08.08.2018 19:57

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: edycja pluginu

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

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