Skocz do zawartości
  • 0

Problem z InventoryClickEvent


Pytanie

Witam, generalnie kilku z was polecało mi używać "nowej" metody, bo kierowałem się ta starą jesli chodzi o gui. Co prawda ta nowsza jest lepsza, krótsza itd, aczkolwiek wyskakuje mi spam w consoli takiego czegoś

[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.

command /cuboid:
	trigger:
		wait 1 tick
		open chest with 5 rows named "&6&lKiroksiewicz &fDzialka" to player
		loop 5*9 times:
			if ((loop-number)-1) is divisible by 2:
				set player's current inventory's slot ((loop-number)-1) to orange glass pane named ""
			else:
				set player's current inventory's slot ((loop-number)-1) to gray glass pane named ""
		set player's current inventory's slot 22 to (note block) named "&fStworz swoja dzialke!" with lore "&7» &7Gracz: &635&fx&635" and "&7» &3VIP: &645&fx&645" and "&7» &bDonejtor: &650&fx&650" and "&7» &6SVIP: &655&fx&655" and "&7» &dSponsor: &670&fx&670" and "" and "&7» &fPamietaj, dzialke mozna miec tylko &c1" and "&7» &fKliknij by zakupic" and "&7» &fKoszt: &6{@kosztdzialki}"
		stop
on inventory click:
	if inventory name of player's current inventory is "&6&lKiroksiewicz &fDzialka":
		if clicked slot is 22:
			cancel event
			close player's inventory
			execute player command "/ps get"
			stop
		else:
			cancel event
			stop

Totalnie tego nie rozumiem, wszystkie inne skrypty mam zapisane tak samo, szukałem na necie ale niczego nie widzę, proszę o pomoc.

Edytowane przez kiroxtv
Odnośnik do komentarza
https://skript.pl/temat/36035-problem-z-inventoryclickevent/
Udostępnij na innych stronach

9 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

To może ja ci polecę jeszcze coś innego (bo set slota jasne, dobrze jest znać, ale w takim przypadku najlepiej sprawdza się po prostu efekt typowo do gui, nie do inentory)

- TuSKe proszę pana, mówi to panu coś? Składnia identyczna jak ta od której radzili ci odejść, ale efekt 20 razy lepszy. Konkretnie radzę szukać frazy "tuske gui manager".

Pozdrawiam i życzę smacznej kawusi.

Odnośnik do komentarza
https://skript.pl/temat/36035-problem-z-inventoryclickevent/#findComment-230832
Udostępnij na innych stronach

  • 0

Hmm.. Tuske posiadam, ale czy obsługuje ono 1.14.4? Wyskakiwały mi jakieś błędy, za bardzo już nie pamiętam - a może jest ktoś, kto mógłby mi pomóc z tą jednak mimo wszystko standardową metodą set slot, chyba że ten Tuske naprawdę jest warty polecenia, trzeba dać on inventory clicka też? Potrzebuję jakiegoś przykladu, najlepiej edycji powyzej wymienionego skriptu, ew. zostać przy tej samej metodzie tylko aby nie spamowało mi w consoli

Odnośnik do komentarza
https://skript.pl/temat/36035-problem-z-inventoryclickevent/#findComment-230954
Udostępnij na innych stronach

  • 0

Na wersji 1.13.2 zadziała, a na 1.14.4 już nie (kod powyżej)  <błędy poniżej> 

Can't compare a number with 'divisible by 2' (b.sk, line 8: if ((loop-number)-1) is divisible by 2:')
'else' has to be placed just after an 'if' or 'else if' section (b.sk, line 10: else:')

 

Natomiast udało mi się wykombinować trochę innym sposobem, żeby mogło zadziałać na 1.14.4 (kod poniżej) <błędów brak>

 

Odnośnik do komentarza
https://skript.pl/temat/36035-problem-z-inventoryclickevent/#findComment-230999
Udostępnij na innych stronach

  • 0
W dniu 16.12.2019 o 17:22, kiroxtv napisał:

Hmm.. Tuske posiadam, ale czy obsługuje ono 1.14.4? Wyskakiwały mi jakieś błędy, za bardzo już nie pamiętam - a może jest ktoś, kto mógłby mi pomóc z tą jednak mimo wszystko standardową metodą set slot, chyba że ten Tuske naprawdę jest warty polecenia, trzeba dać on inventory clicka też? Potrzebuję jakiegoś przykladu, najlepiej edycji powyzej wymienionego skriptu, ew. zostać przy tej samej metodzie tylko aby nie spamowało mi w consoli

No dobra, postaram się wyjaśnić wszystko po kolei.

  • Nie, TuSKe nie obsługuje oficjalnie 1.14.4, ALE jednak na tej wersji działa (a już na pewno działa GUI). Fakt, wyskakują błędy przy uruchamianiu pluginu (konkretnie chyba jakaś clasa nie działa), ALE nie spotkałem się przy korzystaniu z żadnym problemem, który byłby powiązany z tym błędem.
  • Owszem TuSKe jest warte polecenia co już ci napisałem powyżej. Daje ci ono od razu gotowy efekt, który jedną linijką kodu wstawia itemek w slot i dodaje do niego wszystkie akcje oraz zabezpieczenia. Jeżeli robisz coś poprzez set slot musisz sobie ręcznie opisać event inventoryClick, tj. zablokować wyciąganie przedmiotów, dopisać efekty i warunki dla każdego ze slotów osobno itd. (czyli w skrócie masz o wiele więcej roboty z set slotem , więcej myślenia, kombinowania, przewidywania i więcej kodu, a im więcej kodu tym jest mniej przejrzysty).
  • Spam w konsoli może wynikać z jakiejś nieaktualnej wersji, bo kod twojego set slota sprawdziłem i nie mam błędów, wszystko działa. Polecam zaopatrzyć się w poniższe:
  • Zmieniłem też twój skrypt tak, aby działał na dodatku TuSKe:
command /cuboid [<text>]:
	trigger:
		open virtual chest inventory with 5 rows named "&6&lKiroksiewicz &fDzialka" to player
		loop integers from 0 to 44:
			if loop-number is divisible by 2:
				format gui slot loop-number of player with 1 of orange glass pane named ""
			else:
				format gui slot loop-number of player with 1 of gray glass pane named ""
		format gui slot 22 of player with note block named "&fStworz swoja dzialke!" with lore "&7» &7Gracz: &635&fx&635", "&7» &3VIP: &645&fx&645", "&7» &bDonejtor: &650&fx&650", "&7» &6SVIP: &655&fx&655", "&7» &dSponsor: &670&fx&670", "", "&7» &fPamietaj, dzialke mozna miec tylko &c1", "&7» &fKliknij by zakupic" and "&7» &fKoszt: &6{@kosztdzialki}" to close then run player command "ps get"

 

Edytowane przez PanMaruda
Odnośnik do komentarza
https://skript.pl/temat/36035-problem-z-inventoryclickevent/#findComment-231021
Udostępnij na innych stronach

  • 0

 

  

Okey! Dziękuję bardzo za ładne i przejrzyste wytłumaczenie posta, przyda się dla młodszych pokoleń na pewno :D
Problem uważam za rozwiązany, jedyne na co liczę to na aktualizację TuSke do 1.14.4, no ale to już nie nasza sprawa a tym
Pozdrawiam!

  "CYTAT PANA WYZEJ"

Na wersji 1.13.2 zadziała, a na 1.14.4 już nie (kod powyżej)  <błędy poniżej> 

Can't compare a number with 'divisible by 2' (b.sk, line 8: if ((loop-number)-1) is divisible by 2:')
'else' has to be placed just after an 'if' or 'else if' section (b.sk, line 10: else:')

 

Natomiast udało mi się wykombinować trochę innym sposobem, żeby mogło zadziałać na 1.14.4 (kod poniżej) <błędów brak>

"KONIEC CYTATU"


Kod jak najbardziej mi działa na wersji 1.14.4 (ten mój), najwidoczniej coś poszło nie tak u Ciebie, co jest powodem, nie mam pojęcia :(

 

Edytowane przez kiroxtv
Odnośnik do komentarza
https://skript.pl/temat/36035-problem-z-inventoryclickevent/#findComment-231074
Udostępnij na innych stronach

  • 0
W dniu 17.12.2019 o 17:42, PanMaruda napisał:

No dobra, postaram się wyjaśnić wszystko po kolei.

  • Nie, TuSKe nie obsługuje oficjalnie 1.14.4, ALE jednak na tej wersji działa (a już na pewno działa GUI). Fakt, wyskakują błędy przy uruchamianiu pluginu (konkretnie chyba jakaś clasa nie działa), ALE nie spotkałem się przy korzystaniu z żadnym problemem, który byłby powiązany z tym błędem.
  • Owszem TuSKe jest warte polecenia co już ci napisałem powyżej. Daje ci ono od razu gotowy efekt, który jedną linijką kodu wstawia itemek w slot i dodaje do niego wszystkie akcje oraz zabezpieczenia. Jeżeli robisz coś poprzez set slot musisz sobie ręcznie opisać event inventoryClick, tj. zablokować wyciąganie przedmiotów, dopisać efekty i warunki dla każdego ze slotów osobno itd. (czyli w skrócie masz o wiele więcej roboty z set slotem , więcej myślenia, kombinowania, przewidywania i więcej kodu, a im więcej kodu tym jest mniej przejrzysty).
  • Spam w konsoli może wynikać z jakiejś nieaktualnej wersji, bo kod twojego set slota sprawdziłem i nie mam błędów, wszystko działa. Polecam zaopatrzyć się w poniższe:
  • Zmieniłem też twój skrypt tak, aby działał na dodatku TuSKe:

command /cuboid [<text>]:
	trigger:
		open virtual chest inventory with 5 rows named "&6&lKiroksiewicz &fDzialka" to player
		loop integers from 0 to 44:
			if loop-number is divisible by 2:
				format gui slot loop-number of player with 1 of orange glass pane named ""
			else:
				format gui slot loop-number of player with 1 of gray glass pane named ""
		format gui slot 22 of player with note block named "&fStworz swoja dzialke!" with lore "&7» &7Gracz: &635&fx&635", "&7» &3VIP: &645&fx&645", "&7» &bDonejtor: &650&fx&650", "&7» &6SVIP: &655&fx&655", "&7» &dSponsor: &670&fx&670", "", "&7» &fPamietaj, dzialke mozna miec tylko &c1", "&7» &fKliknij by zakupic" and "&7» &fKoszt: &6{@kosztdzialki}" to close then run player command "ps get"

 

Cześć, oznaczam jeszcze raz, ponieważ mam straszne problemy z TuSKe, tzn - odpalaja się przez niego skrypty stosunkowo długo (ok. 5 min, a wcześniej bez niego z 30 sekund do minuty), i wywala mi czasami błędy przy reloadowaniu pluginów, po czym serwer się crashuje i jest wielki problem. Wykorzystałem tą twoją technikę na resztę skryptów, bez zarzutów - działa wszystko jak należy, wyciągnać itemków się nie da, wszystko śmiga, jednak problem pojawia się właśnie z errorami w konsoli itd
 

Odnośnik do komentarza
https://skript.pl/temat/36035-problem-z-inventoryclickevent/#findComment-231520
Udostępnij na innych stronach

  • 0
8 godzin temu, kiroxtv napisał:

Cześć, oznaczam jeszcze raz, ponieważ mam straszne problemy z TuSKe, tzn - odpalaja się przez niego skrypty stosunkowo długo (ok. 5 min, a wcześniej bez niego z 30 sekund do minuty), i wywala mi czasami błędy przy reloadowaniu pluginów, po czym serwer się crashuje i jest wielki problem. Wykorzystałem tą twoją technikę na resztę skryptów, bez zarzutów - działa wszystko jak należy, wyciągnać itemków się nie da, wszystko śmiga, jednak problem pojawia się właśnie z errorami w konsoli itd

Szczerze to chyba nie chciałbym wiedzieć jak długi jest Twój skrypt i co zawiera, że nawet bez gui ładuje się około minuty.

Ogólnie: widzisz ile linijek oszczędzasz w skrypcie gdy robisz przez tuske, a nie set slot. A jednak każda linijka format slota jest później zamieniana w js na kilkanaście (jak nie więcej) linijek z osobnymi warunkami (tak jak robisz to w set slot). Czyli poza przetworzeniem całego kodu skryptu na js, procesor jeszcze musi wygenerować sobie to gui. To jest właśnie powód, przez który wszystko ładuje ci się dłużej.

A jeżeli chodzi o resztę: rozbij ten skrypt na kilka mniejszych - podziel je sobie tak, abyś się odnalazł, ale nie pchaj do jednego pliku więcej jak 200 linijek  Oszczędzisz sobie czasu, nie wywalisz serwera i tak dalej.

 

Z tego co pamiętam to CHYBA customowe craftingi zajmowały też sporo czasu przy ładowaniu.

Odnośnik do komentarza
https://skript.pl/temat/36035-problem-z-inventoryclickevent/#findComment-231523
Udostępnij na innych stronach

  • 0
6 godzin temu, PanMaruda napisał:

Szczerze to chyba nie chciałbym wiedzieć jak długi jest Twój skrypt i co zawiera, że nawet bez gui ładuje się około minuty.

Ogólnie: widzisz ile linijek oszczędzasz w skrypcie gdy robisz przez tuske, a nie set slot. A jednak każda linijka format slota jest później zamieniana w js na kilkanaście (jak nie więcej) linijek z osobnymi warunkami (tak jak robisz to w set slot). Czyli poza przetworzeniem całego kodu skryptu na js, procesor jeszcze musi wygenerować sobie to gui. To jest właśnie powód, przez który wszystko ładuje ci się dłużej.

A jeżeli chodzi o resztę: rozbij ten skrypt na kilka mniejszych - podziel je sobie tak, abyś się odnalazł, ale nie pchaj do jednego pliku więcej jak 200 linijek  Oszczędzisz sobie czasu, nie wywalisz serwera i tak dalej.

 

Z tego co pamiętam to CHYBA customowe craftingi zajmowały też sporo czasu przy ładowaniu.

Cześć, moje skrypty nie zajmują więcej niż 10kB, mam ich około 15, skrypty bez GUI ładują się szybciutko, zrobię reloada sekundka, może i nie czasami i jest git, jednak problemem jest chociażby skrypt na graczy, który ma dwie komendy, w tym tylko i wyłącznie 2 GUI, dziwi mnie to, ponieważ nie ma tam dużo kodu (koło 100 linijek), maszyna nie jest aż tak zła, 2 CPU 2.3GHz Xeon i 7GB ramu (5GB na serwer), po przerobieniu skryptów na TuSKe zaczęły się ładować 5 minut, a wcześniej koło 30sekund do minuty. Jak masz Discorda - dodaj mnie KiroxTV#0755 - wyślę Ci skripta przykładowego, który wywala serwer przy reloadzie, nie jest on wcale długi i też wcale nie wywala błędów w console

Odnośnik do komentarza
https://skript.pl/temat/36035-problem-z-inventoryclickevent/#findComment-231560
Udostępnij na innych stronach

  • 0
11 minut temu, kiroxtv napisał:

Cześć, moje skrypty nie zajmują więcej niż 10kB, mam ich około 15, skrypty bez GUI ładują się szybciutko, zrobię reloada sekundka, może i nie czasami i jest git, jednak problemem jest chociażby skrypt na graczy, który ma dwie komendy, w tym tylko i wyłącznie 2 GUI, dziwi mnie to, ponieważ nie ma tam dużo kodu (koło 100 linijek), maszyna nie jest aż tak zła, 2 CPU 2.3GHz Xeon i 7GB ramu (5GB na serwer), po przerobieniu skryptów na TuSKe zaczęły się ładować 5 minut, a wcześniej koło 30sekund do minuty. Jak masz Discorda - dodaj mnie KiroxTV#0755 - wyślę Ci skripta przykładowego, który wywala serwer przy reloadzie, nie jest on wcale długi i też wcale nie wywala błędów w console

Jeżeli chcesz coś do mnie pisać w PW, to jedynie przez forum.

Odnośnik do komentarza
https://skript.pl/temat/36035-problem-z-inventoryclickevent/#findComment-231562
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Nieaktywny
Odpowiedz na pytanie...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

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