Skocz do zawartości
LisuPL

Nie działa zmiana skina

Rekomendowane odpowiedzi

Mam następujący problem. Co prawda bardzo to dziwne albo i banalne, może czegoś nie zauważyłem. W momencie wybrania listitem z dialogu, po prostu dialog gaśnie i skin się nie zmienia. Ktoś by może sprawdził co tu jest nie tak?

 

 

Cytuj

else if(dialogid == D_CREATE_MALE_SKIN_LS)
    {
        if(response)
        {
            if(listitem == 0)
            {
                SetPlayerSkin(playerid, 2);
                return 1;
            }
            if(listitem == 1)
            {
                SetPlayerSkin(playerid, 4);
                return 1;
            }
            if(listitem == 2)
            {
                SetPlayerSkin(playerid, 5);
                return 1;
            }
            if(listitem == 3)
            {
                SetPlayerSkin(playerid, 7);
                return 1;
            }
            if(listitem == 4)
            {
                SetPlayerSkin(playerid, 17);
                return 1;
            }
            if(listitem == 5)
            {
                SetPlayerSkin(playerid, 20);
                return 1;
            }
            if(listitem == 6)
            {
                SetPlayerSkin(playerid, 23);
                return 1;
            }
            if(listitem == 7)
            {
                SetPlayerSkin(playerid, 29);
                return 1;
            }
            if(listitem == 8)
            {
                SetPlayerSkin(playerid, 46);
                return 1;
            }
            if(listitem == 9)
            {
                SetPlayerSkin(playerid, 59);
                return 1;

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Spróbuj:

else if(dialogid == D_CREATE_MALE_SKIN_LS)
    {
        if(response)
        {
            if(listitem == 0)
            {
                SetPlayerSkin(playerid, 2);
            }
            else if(listitem == 1)
            {
                SetPlayerSkin(playerid, 4);
            }
            else if(listitem == 2)
            {
                SetPlayerSkin(playerid, 5);
            }
           else if(listitem == 3)
            {
                SetPlayerSkin(playerid, 7);
            }
            else if(listitem == 4)
            {
                SetPlayerSkin(playerid, 17);
            }
            else if(listitem == 5)
            {
                SetPlayerSkin(playerid, 20);
            }
           else if(listitem == 6)
            {
                SetPlayerSkin(playerid, 23);
            }
           else if(listitem == 7)
            {
                SetPlayerSkin(playerid, 29);
            }
            else if(listitem == 8)
            {
                SetPlayerSkin(playerid, 46);
            }
           else if(listitem == 9)
            {
                SetPlayerSkin(playerid, 59);
            }
// kończąc dopisz return 1; (NA KOŃCU ! )

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@Jaev, w przypadku case lepiej returnować, ponieważ gdy sprawdzasz warunek (if) to z automatu przechodzi Ci do elsifa jeśli się nie zgadza, tutaj tak nie jest i szkoda pamięci serwera. Przerwać działanie casu i z głowy ^^

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

else if(dialogid == D_CREATE_MALE_SKIN_LS)
    {
        if(response)
        {
            if(listitem == 0)
            {
                SetPlayerSkin(playerid, 2);
            }
            if(listitem == 1)
            {
                SetPlayerSkin(playerid, 4);
            }
            if(listitem == 2)
            {
                SetPlayerSkin(playerid, 5);
            }
            if(listitem == 3)
            {
                SetPlayerSkin(playerid, 7);
                return 1;
            }
            if(listitem == 4)
            {
                SetPlayerSkin(playerid, 17);
            }
            if(listitem == 5)
            {
                SetPlayerSkin(playerid, 20);
            }
            if(listitem == 6)
            {
                SetPlayerSkin(playerid, 23);
            }
            if(listitem == 7)
            {
                SetPlayerSkin(playerid, 29);
            }
            if(listitem == 8)
            {
                SetPlayerSkin(playerid, 46);
            }
            if(listitem == 9)
            {
                SetPlayerSkin(playerid, 59);
            }
        }
        return 1;
    }
    return 1;
}

 

Nadal nie działą, o ile dobnrze returna dałem ;

Edytowane przez LisuPL

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Czy aby na pewno pokazujesz dialog D_CREATE_MALE_SKIN_LS do wyboru skina? Kod jest prawidłowy, jedynie co tutaj może być źle to id dialogu.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
44 minut temu, Nortal napisał:

Czy aby na pewno pokazujesz dialog D_CREATE_MALE_SKIN_LS do wyboru skina? Kod jest prawidłowy, jedynie co tutaj może być źle to id dialogu.

No... tak... D_TWORZENIE_MEZCZYZNA_SKIN_LS

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
2 godziny temu, LisuPL napisał:

No... tak... D_TWORZENIE_MEZCZYZNA_SKIN_LS

A w OnDialogResponse masz  D_CREATE_MALE_SKIN_LS , więc czy aby na pewno dobrze? Całość powinna wyglądać mniej więcej tak:

//komenda na pokazanie dialogu
ShowPlayerDialog(playerid, D_CREATE_MALE_SKIN_LS, DIALOG_STYLE_LIST, "...", "Skin1\nSkin2\nSkin3\n....", "Wybierz", "Anuluj");

// w OnDialogResponse

if(dialogid == D_CREATE_MALE_SKIN_LS)
{
	if(response)
	{
		if(listitem == 0)
		{
			SetPlayerSkin(playerid, 0);
		}
		else if(listitem == 1)
		{
			SetPlayerSkin(playerid, 1);
		}
		return 1;
	}
}

 

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
8 godzin temu, Nortal napisał:

A w OnDialogResponse masz  D_CREATE_MALE_SKIN_LS , więc czy aby na pewno dobrze? Całość powinna wyglądać mniej więcej tak:


//komenda na pokazanie dialogu
ShowPlayerDialog(playerid, D_CREATE_MALE_SKIN_LS, DIALOG_STYLE_LIST, "...", "Skin1\nSkin2\nSkin3\n....", "Wybierz", "Anuluj");

// w OnDialogResponse

if(dialogid == D_CREATE_MALE_SKIN_LS)
{
	if(response)
	{
		if(listitem == 0)
		{
			SetPlayerSkin(playerid, 0);
		}
		else if(listitem == 1)
		{
			SetPlayerSkin(playerid, 1);
		}
		return 1;
	}
}

 

 

Dokładnie tak to wygląda

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
8 godzin temu, Nortal napisał:

A w OnDialogResponse masz  D_CREATE_MALE_SKIN_LS , więc czy aby na pewno dobrze? Całość powinna wyglądać mniej więcej tak:


//komenda na pokazanie dialogu
ShowPlayerDialog(playerid, D_CREATE_MALE_SKIN_LS, DIALOG_STYLE_LIST, "...", "Skin1\nSkin2\nSkin3\n....", "Wybierz", "Anuluj");

// w OnDialogResponse

if(dialogid == D_CREATE_MALE_SKIN_LS)
{
	if(response)
	{
		if(listitem == 0)
		{
			SetPlayerSkin(playerid, 0);
		}
		else if(listitem == 1)
		{
			SetPlayerSkin(playerid, 1);
		}
		return 1;
	}
}

 

Po poludniu podeśle cały kod związany z tym dialogiem

Dokładnie tak to wygląda

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
Cytuj

#define D_CREATE_SEX_LS 6

#define D_CREATE_MALE_LS 9
#define D_CREATE_MALE_SKIN_LS 10

else if(dialogid == D_CREATE_SEX_LS)
    {
        if(response)
        {
            if(listitem == 0)
            {
                return 1;
            }
            if(listitem == 1)
            {
                ShowPlayerDialog(playerid, D_CREATE_MALE_LS, DIALOG_STYLE_LIST, "{33FF66}Los Santos Role Play: {FFFFFF}Wybierz skin", "{33FF66}ID:2\n{33FF66}ID:4\n{33FF66}ID:5\n{33FF66}ID:7\n{33FF66}ID:17\n{33FF66}ID:20\n{33FF66}ID:23\n{33FF66}ID:29\n{33FF66}ID:46\n{33FF66}ID:59", "Wybierz", "");
            }
        }
    }
    else if(dialogid == D_CREATE_MALE_SKIN_LS)
    {
        if(response)
        {
            if(listitem == 0)
            {
                SetPlayerSkin(playerid, 2);
            }
            if(listitem == 1)
            {
                SetPlayerSkin(playerid, 4);
            }
            if(listitem == 2)
            {
                SetPlayerSkin(playerid, 5);
            }
            if(listitem == 3)
            {
                SetPlayerSkin(playerid, 7);
            }
            if(listitem == 4)
            {
                SetPlayerSkin(playerid, 17);
            }
            if(listitem == 5)
            {
                SetPlayerSkin(playerid, 20);
            }
            if(listitem == 6)
            {
                SetPlayerSkin(playerid, 23);
            }
            if(listitem == 7)
            {
                SetPlayerSkin(playerid, 29);
            }
            if(listitem == 8)
            {
                SetPlayerSkin(playerid, 46);
            }
            if(listitem == 9)
            {
                SetPlayerSkin(playerid, 59);
            }
            return 1;
        }
    }
    return 1;
}

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Zobacz i odgadnij o co chodzi

ShowPlayerDialog(playerid, D_CREATE_MALE_LS, // dalszy kod 

// a potem

else if(dialogid == D_CREATE_MALE_SKIN_LS)

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×