Skocz do zawartości

Inventory menu - Jak zrobić funkcyjne inventory bez bugów?


Rekomendowane odpowiedzi

Siema!

Napotykam się ostatnio często ze stwierdzeniem, że gui w skrypcie się buguje. 

Jest to FAKE

Funkcja format slot jest zbugowana :)

Także można spotkać się z odpowiedziami "użyj sdGui" 

Można zrobić gui bez bugów, dziś wam to pokaże.

 

Pierwszy krok

Przygotuj komendę i samo otworzenie inventory

command /komenda [<text>]
	trigger:
  		open chest with 1 row named "&6Nasze inventory !" to player

Otwiera to nam inventory (czyli gui) ale bez żadnych slotów, teraz trzeba je dodać

set player's current inventory's slot 0 to diamond named "&6Nazwijcie to jak chcecie" with lore "&c» &7No dawaj nie zbugujesz mnie :D!"

A w kodzie będzie to wyglądać następująco:

command /komenda [<text>]:
  	trigger:
  		open chest with 1 row named "&6Nasze inventory !" to player
  		set player's current inventory's slot 0 to diamond named "&6Nazwijcie to jak chcecie" with lore "&c» &7No dawaj nie zbugujesz mnie :D!"

Nie trzeba dawać with lore  :) 

Mamy już inventory ale da się wyciągać przedmioty.

Drugi krok

Pozbędziemy się wyciągania itemów

Pierw dopiszmy event dzięki któremu nie będzie się dało bugować, a jest nim on inventory click:  Po angielsku każdy będzie wiedzieć co to znaczy.

on inventory click:

Teraz musimy dodać pobieranie nazwy inventory w następujący sposób

on inventory click:
	if inventory name of current inventory of player is "&6Nasze inventory !":

Wpisujemy tam nazwe naszego inventory

Teraz musimy pobrać item lub slot.

Są 2 sposoby

1 sposób - Pobieranie itemu:

if player's current inventory's slot slot is diamond:

Po sprawdzeniu inventory sprawdza item.

2 sposób - Pobieranie klikanego slota:

if clicked slot is 0:

Sprawdza tylko slot, nie item

W kodzie będzie to wyglądać tak:

on inventory click:
	if inventory name of current inventory of player is "&6Nasze inventory !":
		if player's current inventory's slot slot is diamond:

Lub tak

on inventory click:
	if inventory name of current inventory of player is "&6Nasze inventory !":
		if clicked slot is 0:

Teraz kolejna część ! Trzeba dodać jakąś akcję, ja dodam komendę wykonywaną przez gracza, wiadomość do niego, i blokowanie wyjmowania itemu

Pokaże wam tylko co zrobić aby nie bugowało się inventory. Komendę i wysyłanie wiadomości to podstawy skript, jeżeli ich nie znasz wróć do podstaw

A ten event to !!!!!!

cancel event

Tak cancel event, jak wiemy zatrzymuje on akcję, blokuje ją, a w kodzie wygląda to tak !

on inventory click:
	if inventory name of current inventory of player is "&6Nasze inventory !":
		if player's current inventory's slot slot is diamond:
			send "Czy ty to chcesz wyjąc?"
			execute console command "kick %player%"
			execute player command "sudo"
			cancel event

To w sumie tyle, będą aktualizacje tego. Więc trzymajcie się i powodzenia. 

Oczekuję na hejty gdyż je kocham

Edytowane przez HotAngel2K17
Odnośnik do komentarza
https://skript.pl/temat/26478-inventory-menu-jak-zrobi%C4%87-funkcyjne-inventory-bez-bug%C3%B3w/
Udostępnij na innych stronach

Poradnik dobry tylko 
szkoda że pokazałeś zbugowaną opcję.

U mnie gdy robię tak

command /komenda [<text>]:
  	trigger:
  		open chest with 1 row named "&6Nasze inventory !" to player
		wait 1 tick
  		set player's current inventory's slot 0 to diamond named "&6Nazwijcie to jak chcecie" with lore "&c» &7No dawaj nie zbugujesz mnie :D!"

to gdy szybko zamykam i otwieram ekwipunek dostaję do niego przedmioty które mają być w gui
Lecz gdy zrobię tak:

command /komenda [<text>]:
  	trigger:
		wait 1 tick
  		open chest with 1 row named "&6Nasze inventory !" to player
  		set player's current inventory's slot 0 to diamond named "&6Nazwijcie to jak chcecie" with lore "&c» &7No dawaj nie zbugujesz mnie :D!"

To w żaden sposób nie idzie zabrać przedmiotów
Nie wiem czy to jest tylko u mnie
Pozdrawiam

Odnośnik do komentarza
https://skript.pl/temat/26478-inventory-menu-jak-zrobi%C4%87-funkcyjne-inventory-bez-bug%C3%B3w/#findComment-174403
Udostępnij na innych stronach

W moim kodzie na drop jest tak jak w pierwszym twoim przykladzie i wszystko chodzi pieknie. Nie buguje sie. Widocznie u ciebie cos nie tak. Moze u kazdego dziala cos innego

 

a dodales funkcje on inventory click?

Jak wroce do domu to dodam do poradnika, że nie trzeba używac wait 1 tick

Odnośnik do komentarza
https://skript.pl/temat/26478-inventory-menu-jak-zrobi%C4%87-funkcyjne-inventory-bez-bug%C3%B3w/#findComment-174405
Udostępnij na innych stronach

JA u siebie zrobiłem inaczej, ustawiłem po prostu zmienną {Otwieranie::%player%} gdy wykonuje się komende, a gdy się klika na skrzynke / enderchest itp. po prostu canceluje event :)

Odnośnik do komentarza
https://skript.pl/temat/26478-inventory-menu-jak-zrobi%C4%87-funkcyjne-inventory-bez-bug%C3%B3w/#findComment-174438
Udostępnij na innych stronach

@MateoxPL tak, aby się kompletnie nie bugowało to robisz tak:

		set {_x} to chest with 1 rows named "&6Nasze inventory !"
		set slot 0 of {_x} to diamond named "&6Nazwijcie to jak chcecie" with lore "&c» &7No dawaj nie zbugujesz mnie :D!"
		open {_x} to player

Wtedy już otwiera dla gracza gotowe GUI z wszystkimi itemami :P

I gdy do tego jeszcze dodasz event on inventory click i zablokujesz wyciąganie, wtedy jest miodzio :D

A co do poradnika to jest OK :D Widzę, że poszedłeś w moje ślady, także życzę powodzenia :D

Pozdrawiam #Knugi

Odnośnik do komentarza
https://skript.pl/temat/26478-inventory-menu-jak-zrobi%C4%87-funkcyjne-inventory-bez-bug%C3%B3w/#findComment-174668
Udostępnij na innych stronach

  • 4 tygodnie później...
on inventory click:
	if inventory name of current inventory of player is "&6":
		if player's current inventory's slot slot is light gray glass:
			cancel event
		if player's current inventory's slot 10 is stone pickaxe:
			cancel event
			execute player command "eshop-new haste1"
		if player's current inventory's slot 12 is sugar named "&8>> &c&lSpeed I &8<<":
			execute player command "eshop-new speed1"
			cancel event

gdy kliknę na cukier wywołuje się komenda "/eshop-new haste1" a nie "/eshop-new speed1". dlaczego?

dobra naprawiłem to

Edytowane przez lenny_msi
znaleziony fix
Odnośnik do komentarza
https://skript.pl/temat/26478-inventory-menu-jak-zrobi%C4%87-funkcyjne-inventory-bez-bug%C3%B3w/#findComment-177129
Udostępnij na innych stronach

  • 2 tygodnie później...
  • 3 tygodnie później...
  • 2 lata później...
14 godzin temu, Michix napisał:

A jak wykonać komendę po kliknięciu jednocześnie blokując wyciąganie itemu? 

command /gui [<text>]:
	trigger:
		open chest with 1 rows named "&6Chest - test" to player
		set player's current inventory's slot 0 to dirt named "&7test"
		stop
on inventory click:
	if inventory name of current inventory of player is not "&6Chest - test":
		stop
	cancel event
	if clicked slot is 0:
		execute player command "komenda"

 

Odnośnik do komentarza
https://skript.pl/temat/26478-inventory-menu-jak-zrobi%C4%87-funkcyjne-inventory-bez-bug%C3%B3w/#findComment-252512
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
Dodaj odpowiedź do tematu...

×   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ę...