Skocz do zawartości
  • 0

menu przestał na raz dzialac


michal1250

Pytanie

15 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
2 minuty temu, michal1250 napisał:

witam chciałem napisać skrypt na questy wszystko pięknie działało i naraz nie otwiera się nic po kliknięciu w poziomy oto kod 

1. Niepotrzebnie powtarzasz ten sam kod. Dodam, że nie musisz ustawiać przedmiotu do zmiennej lokalnej i nadawać mu ten sposób nazwy, a następnie ustawiać slocie. Zrób to w jednej linijce i po problemie:

# Zamiast robić tak:
set {_0} to white stained glass pane
set name of {_0} to "zadania"
set slot 0 of current inventory of player to {_0}

set {_6} to white stained glass pane
set name of {_6} to "zadania"
set slot 1 of current inventory of player to {_6}
# I tak dalej...

# Możesz zrobić to o wiele prościej:
set slot (0 and 1 and 7 and 8) of player's current inventory to white stained glass pane named "zadania"

Tak samo sprawa wygląda z ustawianiem slotów od tych poziomów.

2. 'on inventory click' wygląda w twoim przypadku okropnie i nie działa z kilku powodów:

  • najpierw sprawdzasz kliknięty slot, a dopiero później nazwę i typ klikniętego GUI; powinieneś sloty sprawdzać w kolejności 'nazwa -> typ GUI -> (opcjonalne) anulowanie eventu -> sprawdzanie klikniętego slotu'.
  • niepotrzebnie używasz zmiennych lokalnych do ustawiania różnych slotów; tak jak w punkcie 1., zrób to w jednej linijce.
  • sprawdzasz nazwę 'player's inventory', a przecież ekwipunek gracza nie posiada nazwy; sprawdzaj nazwę 'player's current inventory', reprezentuje to obecnie otwarte GUI gracza.
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
39 minut temu, Kormic napisał:

1. Niepotrzebnie powtarzasz ten sam kod. Dodam, że nie musisz ustawiać przedmiotu do zmiennej lokalnej i nadawać mu ten sposób nazwy, a następnie ustawiać slocie. Zrób to w jednej linijce i po problemie:


# Zamiast robić tak:
set {_0} to white stained glass pane
set name of {_0} to "zadania"
set slot 0 of current inventory of player to {_0}

set {_6} to white stained glass pane
set name of {_6} to "zadania"
set slot 1 of current inventory of player to {_6}
# I tak dalej...

# Możesz zrobić to o wiele prościej:
set slot (0 and 1 and 7 and 8) of player's current inventory to white stained glass pane named "zadania"

Tak samo sprawa wygląda z ustawianiem slotów od tych poziomów.

2. 'on inventory click' wygląda w twoim przypadku okropnie i nie działa z kilku powodów:

  • najpierw sprawdzasz kliknięty slot, a dopiero później nazwę i typ klikniętego GUI; powinieneś sloty sprawdzać w kolejności 'nazwa -> typ GUI -> (opcjonalne) anulowanie eventu -> sprawdzanie klikniętego slotu'.
  • niepotrzebnie używasz zmiennych lokalnych do ustawiania różnych slotów; tak jak w punkcie 1., zrób to w jednej linijce.
  • sprawdzasz nazwę 'player's inventory', a przecież ekwipunek gracza nie posiada nazwy; sprawdzaj nazwę 'player's current inventory', reprezentuje to obecnie otwarte GUI gracza.

nie wiem czy dokładnie oto chodziło tak pozmieniałem kod 

i na konsoli wywala taki błąd jak klikam

[14:03:02 ERROR]: [Skript] In 1.13+ you cannot get the title name of an inventory outside of an InventoryClickEvent, Only if this inventory has an InventoryHolder may it be used in this state.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
15 minut temu, michal1250 napisał:

nie wiem czy dokładnie oto chodziło tak pozmieniałem kod 

1. Niepotrzebnie sprawdzasz wielokrotnie nazwę tego samego GUI.

# Spójrz na to:

    if name of player's inventory is "zadania":

        if clicked inventory is not player's inventory:

            if clicked slot is 3:
                open chest with 3 rows named "Poziom 2" to player

                cancel event

    if name of player's inventory is "zadania":

        if clicked inventory is not player's inventory:

            if clicked slot is 4:
                open chest with 3 rows named "Poziom 3" to player

                cancel event
                
# A teraz spójrz na to:

if name of player's inventory is "zadania":
	if clicked inventory is not player's inventory:
		cancel event
		if clicked slot is 3:
			open chest with 3 rows named "Poziom 2" to player
		else if clicked slot is 4:
			open chest with 3 rows named "Poziom 3" to player

Widać różnicę, nieprawdaż?

2. Po kija ci potrzebne takie wielkie przerwy w tym kodzie?

3. Przeczytaj ostatni podpunkt w mojej pierwszej wypowiedzi, nadal sprawdzasz nazwę ekwipunku gracza.

15 minut temu, michal1250 napisał:

i na konsoli wywala taki błąd jak klikam

[14:03:02 ERROR]: [Skript] In 1.13+ you cannot get the title name of an inventory outside of an InventoryClickEvent, Only if this inventory has an InventoryHolder may it be used in this state.

Przed sprawdzaniem nazwy GUI dodaj taką linijkę:

if type of event-inventory is set:

Posiadasz SkQuery, prawda? Ten błąd właśnie pochodzi z SkQuery.

Jeżeli mimo wszystko nie zadziała, zamień linijkę ze sprawdzaniem nazwy GUI na to:

if event.getView().getTitle() is "nazwaGUI":
	# Dalszy kod

Tutaj wymagany dodatek skript-reflect.

Edytowane przez Kormic
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
17 minut temu, Kormic napisał:

1. Niepotrzebnie sprawdzasz wielokrotnie nazwę tego samego GUI.


# Spójrz na to:

    if name of player's inventory is "zadania":

        if clicked inventory is not player's inventory:

            if clicked slot is 3:
                open chest with 3 rows named "Poziom 2" to player

                cancel event

    if name of player's inventory is "zadania":

        if clicked inventory is not player's inventory:

            if clicked slot is 4:
                open chest with 3 rows named "Poziom 3" to player

                cancel event
                
# A teraz spójrz na to:

if name of player's inventory is "zadania":
	if clicked inventory is not player's inventory:
		cancel event
		if clicked slot is 3:
			open chest with 3 rows named "Poziom 2" to player
		else if clicked slot is 4:
			open chest with 3 rows named "Poziom 3" to player

Widać różnicę, nieprawdaż?

2. Po kija ci potrzebne takie wielkie przerwy w tym kodzie?

3. Przeczytaj ostatni podpunkt w mojej pierwszej wypowiedzi, nadal sprawdzasz nazwę ekwipunku gracza.

Przed sprawdzaniem nazwy GUI dodaj taką linijkę:


if type of event-inventory is set:

Posiadasz SkQuery, prawda? Ten błąd właśnie pochodzi z SkQuery.

Jeżeli mimo wszystko nie zadziała, zamień linijkę ze sprawdzaniem nazwy GUI na to:


if event.getView().getTitle() is "nazwaGUI":
	# Dalszy kod

Tutaj wymagany dodatek skript-reflect.

oto chodziło jak tak to nie działa i wywala ten sam błąd

a z tym dodatkiem trzeba coś jeszcze w kodzie zmieniać oprócz tego co pisałeś?

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Teraz, michal1250 napisał:

oto chodziło jak tak to nie działa i wywala ten sam błąd

Cóż, w takim razie użyj drugiego sposobu ze skript-reflect.

Co do samego kodu, co prawda pozbyłeś się zdecydowanej większości niepotrzebnych warunków, ale w dalszym ciągu sprawdzasz te same warunki. Pozbądź się linijek 37., 38. i 40.

3 minuty temu, michal1250 napisał:

a z tym dodatkiem trzeba coś jeszcze w kodzie zmieniać oprócz tego co pisałeś?

Nie, wystarczy jedynie zamienić linijki, w których sprawdzasz nazwę GUI.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
16 minut temu, Kormic napisał:

Cóż, w takim razie użyj drugiego sposobu ze skript-reflect.

Co do samego kodu, co prawda pozbyłeś się zdecydowanej większości niepotrzebnych warunków, ale w dalszym ciągu sprawdzasz te same warunki. Pozbądź się linijek 37., 38. i 40.

Nie, wystarczy jedynie zamienić linijki, w których sprawdzasz nazwę GUI.

z tym dodatkiem tez nie działa najdziwniejsze jest to ze wcześniej bez mi działało problem pojawił się gdy próbowałem dodać 2 quest ale po usunięciu go już nie działało

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
8 minut temu, michal1250 napisał:

z tym dodatkiem tez nie działa najdziwniejsze jest to ze wcześniej bez mi działało problem pojawił się gdy próbowałem dodać 2 quest ale po usunięciu go już nie działało

Ale co nie działa? Nadal występuje ten błąd?

W drugim warunku sprawdzającym nazwę GUI nie zmieniłeś podanej przeze mnie nazwy.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
3 minuty temu, Kormic napisał:

Ale co nie działa? Nadal występuje ten błąd?

W drugim warunku sprawdzającym nazwę GUI nie zmieniłeś podanej przeze mnie nazwy.

zmieniłem i dalej nic po wpisaniu komendy otwiera sie menu z poziomami ale po kliknieciu w poziom nie otwiera menu w kturym maja byc questy

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
10 minut temu, michal1250 napisał:

zmieniłem i dalej nic po wpisaniu komendy otwiera sie menu z poziomami ale po kliknieciu w poziom nie otwiera menu w kturym maja byc questy

Po warunkach sprawdzających nazwę GUI dodaj jakieś wiadomości (np. numerki). Jeżeli nie zostaną wysłane, wyślij zamiast nich:

send "%event.getView().getTitle()%" to player

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
23 minuty temu, michal1250 napisał:

tak dodałem i dalej nic dziwne ze nawet przy "on inventory click" nie wysyła możne nie czyta tego eventu?

Podaj:

  • wersję serwera
  • silnik serwera
  • wersję Skripta
  • listę dodatków (addonów) do Skripta wraz z wersjami
  • błędy przy przeładowaniu skryptu i w konsoli (o ile takowe występują)

Nic nie wysyła przy 'on inventory click'? Nawet tego "1"? Jeżeli nie, spróbuj usunąć linijkę 24 i sprawdź jeszcze raz.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
1 godzinę temu, Kormic napisał:

Podaj:

  • wersję serwera
  • silnik serwera
  • wersję Skripta
  • listę dodatków (addonów) do Skripta wraz z wersjami
  • błędy przy przeładowaniu skryptu i w konsoli (o ile takowe występują)

Nic nie wysyła przy 'on inventory click'? Nawet tego "1"? Jeżeli nie, spróbuj usunąć linijkę 24 i sprawdź jeszcze raz.

1.16.3

paper spigot

2.5.3

skript-reflect 2.1.0

skutilities 0.9.2

skquery 4.1.4

tuske 1.8.2

 

 

0 błedów nie wysyła nic

 

Nieaktywny

Łączę posty.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Teraz, michal1250 napisał:

1.16.3

paper spigot

2.5.3

skript-reflect 2.1.0

skutilities 0.9.2

skquery 4.1.4

tuske 1.8.2

 

 

Teraz, michal1250 napisał:

0 błedów nie wysyła nic

 

Hmm... spróbuj ponownie pobrać Skripta i usuń folder Skript pamiętając o kopii zapasowej skryptów i/lub zmiennych. Nowy Skript na nowo utworzy folder Skript, do którego wrzucisz sobie skrypty i/lub zmienne.

Edytowane przez Kormic
Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...