←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Problem ze zmianą ubrania dla klasy - CoD MoD

  • +
  • -
Scorpion Flail - zdjęcie Scorpion Flail 28.07.2013

Witam. Mam problem ze zmianą ubrania dla klasy [TT i CT]

Udało mi się już dodać oddzielny model dla TT i CT w tej klasie, jednak po zdobyciu itemów zmieniających ubranie na przeciwnika [np podręcznik szpiega] wygląd robi się standardowy, przykład:

 

Gracz posiada klasę w wyglądem i jest w TT. Otrzymuje przedmiot, który zmienia wygląd modelu na przeciwnej drużyny. W tym momencie powinien się zmienić ten model na wygląd CT. Zamiast tego zmienia się na wygląd przeciwnika, ale standardowego modelu, np gign

 

Model zmieniałem tak:

 

w precache dałem ścieżki dla modelu TT i CT [1 model dla każdej drużyny]

 

Następnie w odrodzeniu klasy dodałem coś takiego:

switch(get_user_team(id))
        {
            case 1:
            {
                cs_set_user_model(id, "ścieżkatt");
            }
            case 2:
            {
                cs_set_user_model(id, ""ścieżkact");  
            }
        }

Itemki zmieniające ubiór na przeciwny team mają to:

ZmienUbranie

 

public wygląda tak:

public ZmienUbranie(id,reset)
{
    if (id<1 || id>32 || !is_user_connected(id))
        return PLUGIN_CONTINUE;
    
    if (reset)
        cs_reset_user_model(id);
    else
    {
        new num = random_num(0,3);
        switch(get_user_team(id))
        {
            case 1: cs_set_user_model(id, Ubrania_CT[num]);
            case 2:cs_set_user_model(id, Ubrania_Terro[num]);
        }
    }
    
    return PLUGIN_CONTINUE;
}

 

zmienna z modelami:

new Ubrania_CT[4][]={"sas","gsg9","urban","gign"};
new Ubrania_Terro[4][]={"arctic","leet","guerilla","terror"};

Wydaje mi się, że wystarczy tylko zmienić w publicu zmienubranie i te ubiory, ale nie wiem w jaki sposób to napisać.

 

Liczę na pomoc

Odpowiedz

  • +
  • -
d0naciak - zdjęcie d0naciak 01.08.2013

public ZmienUbranie(id,reset)
{
    if (id<1 || id>32 || !is_user_connected(id))
        return PLUGIN_CONTINUE;
    
    if (reset)
        cs_reset_user_model(id);
    else
    {
        new num = random_num(0,3);
        switch(get_user_team(id))
        {
            case 1: cs_set_user_model(id, "sciezkact");
            case 2:cs_set_user_model(id, "sciezkatt");
        }
    }
    
    return PLUGIN_CONTINUE;
}

a zmienne z modelami wywal

Odpowiedz

  • +
  • -
Scorpion Flail - zdjęcie Scorpion Flail 01.08.2013

public ZmienUbranie(id,reset)
{
    if (id<1 || id>32 || !is_user_connected(id))
        return PLUGIN_CONTINUE;
    
    if (reset)
        cs_reset_user_model(id);
    else
    {
        new num = random_num(0,3);
        switch(get_user_team(id))
        {
            case 1: cs_set_user_model(id, "sciezkact");
            case 2:cs_set_user_model(id, "sciezkatt");
        }
    }
    
    return PLUGIN_CONTINUE;
}

a zmienne z modelami wywal

 

 

To na pewno zadziała? Bo wydaje mi się, że teraz innym klasom na zwykłych modelach nie będą się zmieniać ubiory.

Posiadam tylko 1 klasę, dla której chcę przypisać osobny model

Odpowiedz

  • +
  • -
Niide - zdjęcie Niide 07.08.2013

Jeżeli masz tylko jedną klasę z innym modelem, a resztę z standardowymi. To zmień zmienne tak:

new Ubrania_CT[5][]={"sas","gsg9","urban","gign","sciezkact"};
new Ubrania_Terro[5][]={"arctic","leet","guerilla","terror","sciezkatt"};

Pytanko. Czy chciałeś zrobić tak, że gracz z nowym modelem, gdy on otrzyma ten przedmiot, to mu się zmienia na nowy model drużyny przeciwnej, a jak nie ma klasy z nowym modelem to mu się zmienia na standardowy przeciwnika?


Użytkownik Niide edytował ten post 07.08.2013 21:01
Odpowiedz

  • +
  • -
Scorpion Flail - zdjęcie Scorpion Flail 07.08.2013


Pytanko. Czy chciałeś zrobić tak, że gracz z nowym modelem, gdy on otrzyma ten przedmiot, to mu się zmienia na nowy model drużyny przeciwnej, a jak nie ma klasy z nowym modelem to mu się zmienia na standardowy przeciwnika?

 

Tak. Gdy mam klasę ze specjalnym ubiorem [osobny dla tt i ct] i gdy jest on np TT to posiadając ten przedmiot, zmieni ubiór na specjalny, ale CT

 

A gdy gracz ze zwykłą klasą [i ubiorem] ma ten przedmiot to zmienia mu na standardowy ubiór, ale przeciwnika.

 

Tutaj właśnie nie jestem pewien czy zawsze zamienia np sas na arctic, gsg9 na leet, czy sobie losuje, np z sas, na terror.

Odpowiedz

  • +
  • -
Niide - zdjęcie Niide 07.08.2013

Spróbuj tak:

public ZmienUbranie(id, reset)
{
	if (id<1 || id>32 || !is_user_connected(id))
		return PLUGIN_CONTINUE;
		
	new model[33];
	cs_get_user_model(id, model, 32);
	
	if (reset)
		cs_reset_user_model(id);
	else
	{
		new num = random_num(0,3);
		if(model[id] == Ubrania_CT[num] && cs_get_user_team(id) == CS_TEAM_CT)
		{
			cs_set_user_model(id, Ubrania_Terro[num]);
		}
		else if(model[id] == Ubrania_Terro[num] && cs_get_user_team(id) == CS_TEAM_T)
		{
			cs_set_user_model(id, Ubrania_CT[num]);
		}
		else if(cs_get_user_team(id) == CS_TEAM_T && model[id] != Ubrania_Terro[num])
		{
			cs_set_user_model(id, "sciezkact");
		}
		else if(cs_get_user_team(id) == CS_TEAM_CT && model[id] != Ubrania_CT[num])
		{
			cs_set_user_model(id, "sciezkatt");
		}
	}
	
	return PLUGIN_CONTINUE;
} 

Jak ma się włączyć standardowy model przeciwnika to się on losuje spośród 4 modeli przeciwnej drużyny.


Użytkownik Niide edytował ten post 07.08.2013 21:36
Odpowiedz

  • +
  • -
Scorpion Flail - zdjęcie Scorpion Flail 07.08.2013

W sumie to ja na początku deklarowałem sobie nazwę skina:

new CTSkin

 

Więc jak zrobię w ten sposób to będzie też poprawnie, tak?:

else if(cs_get_user_team(id) == CS_TEAM_T && model[id] = TTSkin[num])
        {
            cs_set_user_model(id, CTSkin[num]);
        }

I nie wiem czy jak mam po 1 modelu w tt i 1 w ct to ma być to [num]

Odpowiedz

  • +
  • -
Niide - zdjęcie Niide 07.08.2013

[num] dodajesz jak masz 4 modele. Jak masz 1 to daj "CTSkin" samo.

 

Idę spać bo rano do pracy. na razie.


Użytkownik Niide edytował ten post 07.08.2013 21:53
Odpowiedz

  • +
  • -
Scorpion Flail - zdjęcie Scorpion Flail 19.08.2013

Jest błąd przy kompilacji:

Error: Array must be indexed (variable "Ubrania_CT") on line 3256
Error: Array must be indexed (variable "Ubrania_Terro") on line 3260
Error: Array must be indexed (variable "Ubrania_Terro") on line 3264
Error: Array must be indexed (variable "Ubrania_CT") on line 3268

Te linijki to:

if(model[id] == Ubrania_CT[num] && cs_get_user_team(id) == CS_TEAM_CT)
        {
            cs_set_user_model(id, Ubrania_Terro[num]);
        }
        else if(model[id] == Ubrania_Terro[num] && cs_get_user_team(id) == CS_TEAM_T)
        {
            cs_set_user_model(id, Ubrania_CT[num]);
        }
        else if(cs_get_user_team(id) == CS_TEAM_T && model[id] != Ubrania_Terro[num])
        {
            cs_set_user_model(id, "CTSkin");
        }
        else if(cs_get_user_team(id) == CS_TEAM_CT && model[id] != Ubrania_CT[num])
        {
            cs_set_user_model(id, "TTSkin");
        }

Jeszcze raz podaję co mam w tych modelach:

new Ubrania_CT[4][]={"sas","gsg9","urban","gign"};
new Ubrania_Terro[4][]={"arctic","leet","guerilla","terror"};

Myślałem nad equali, ale nie wiem jak to zapisać.


Użytkownik Scorpion Flail edytował ten post 19.08.2013 20:55
Odpowiedz

  • +
  • -
K!113r - zdjęcie K!113r 19.08.2013

Stringów się tak nie porównuje, znaki i liczby owszem.
Polecam przeczytać w dokumentacji o equal()
Odpowiedz

  • +
  • -
Scorpion Flail - zdjęcie Scorpion Flail 19.08.2013

Niestety nie wiem jak to zrobić.

Odpowiedz

  • +
  • -
MAGNET - zdjęcie MAGNET 20.08.2013

Czy ten model jest na jakas flage?? Czy jest to VIP ??

Odpowiedz

  • +
  • -
Scorpion Flail - zdjęcie Scorpion Flail 21.08.2013

Model jest przypisany do klasy, która jest na flagę.

Tam wszystko dobrze działa, tylko problem z tym itemem/perkiem zmieniającym ubiór na przeciwnika

Odpowiedz

  • +
  • -
MAGNET - zdjęcie MAGNET 21.08.2013

To mozna by dodac warunek, ktory zmienia model, jesli id posiada flage 

Odpowiedz

  • +
  • -
Scorpion Flail - zdjęcie Scorpion Flail 21.08.2013

Klasy premium mam na 1 flagę.

Najlepiej zrobić to właśnie w kodzie perku zmieniającego ubranie.

Sposób Niide jest dobry, tylko trzeba poprawić zapis aby się to skompilowało.

Dlatego prosiłbym o poprawienie tego kodu.

 

Odpowiedz

  • +
  • -
Niide - zdjęcie Niide 21.08.2013

public ZmienUbranie(id, reset)
{
	if (id<1 || id>32 || !is_user_connected(id))
		return PLUGIN_CONTINUE;
		
	new model[33];
	cs_get_user_model(id, model, 32);
	
	if (reset)
		cs_reset_user_model(id);
	else
	{
		static i;
		new num = random_num(0, 3);
		for(i = 0; i < sizeof(Ubrania_CT); i++)
		{
			if(equal(model[id], Ubrania_CT[i]) && cs_get_user_team(id) == CS_TEAM_CT)
			{
				cs_set_user_model(id, Ubrania_Terro[num]);
			}
			else if(cs_get_user_team(id) == CS_TEAM_CT && !equal(model[id], Ubrania_CT[i]))
			{
				cs_set_user_model(id, "sciezkatt");
			}
		}
		for(i = 0; i < sizeof(Ubrania_Terro); i++)
		{
			if(equal(model[id], Ubrania_Terro[i]) && cs_get_user_team(id) == CS_TEAM_T)
			{
				cs_set_user_model(id, Ubrania_CT[num]);
			}
			else if(cs_get_user_team(id) == CS_TEAM_T && !equal(model[id], Ubrania_Terro[i]))
			{
				cs_set_user_model(id, "sciezkact");
			}
		}
	}
	
	return PLUGIN_CONTINUE;
} 
Odpowiedz

  • +
  • -
Scorpion Flail - zdjęcie Scorpion Flail 21.08.2013

Teraz jest tak:

 

zwykłe modele: zmienia na inny rodzaj modelu swojej drużyny [czyli nie zmienia na model przeciwnika]

model dodatkowy: nie działa, zmienia na standardowy model swojej drużyny

Odpowiedz

  • +
  • -
Amaroq - zdjęcie Amaroq 21.08.2013

Nie łatwiej dodać to
if(cod_get_user_class(id) == cod_get_classid("nazwa twojej klasy"))
return COD_STOP
do forwardu cod_perk_enabled w perku zmieniającego ubiór? :P
Amaroq (21.08.2013 22:48):
@down Nie wiedziałem ;>
Odpowiedz

  • +
  • -
Scorpion Flail - zdjęcie Scorpion Flail 21.08.2013

To jest Cod Stary

Odpowiedz

  • +
  • -
Scorpion Flail - zdjęcie Scorpion Flail 21.08.2013

Tak jeszcze napisze, że ubiór zmienia się tak:

ZmienUbranie(id, 0);
Odpowiedz