Skocz do zawartości
  • 0

Strony w GUI


Hiri12

Pytanie

Siemka mam pytanie: chcialbym zrobic kilkustronowe gui (np. takie jak używa się na /ah), probowalem z kilkoma skryptami samemu ale nic mi nie wychodziło (może dla tego bo byly gowniane) i np. slot 9 gui byl "Przejdz na nastepna strone. Obecna strona: 1/2" :B

Edytowane przez Hiri12
Odnośnik do komentarza
https://skript.pl/temat/57320-strony-w-gui/
Udostępnij na innych stronach

5 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • -1
command /x:
    trigger:
        set {_} to size of {zmienna::*}
        set {_x} to {_}/53
        set {_gui} to chest inventory with 6 rows named "cos page 1/%round({_x})%"
        loop 53 times:
            set slot loop-number - 1 of {_gui} to {zmienna::%loop-number%} with lore "Cena: 200"
            set slot 54 of {_gui} to arrow named "&cNowa strona"
        open {_gui} to player
    
on inventory click:
    event-inventory is not player's inventory
    if name of event-inventory contains "cos":
        cancel event
        if clicked slot is 54:
            set {_} to uncolored name of event-inventory
            replace "1" and "/" with "" in {_}
            set {_} to "%{_}%" parsed as integer
            set {_x} to first character of name of event-inventory
            if {_} = 2:
                set {_gui} to chest inventory with 6 rows named "cos page %{_x}%/%{_}%"
                loop 53 times:
                    set slot loop-number - 1 of {_gui} to {zmienna::%loop-number + 53%}
                open {_gui} to player

W zasadzie nie wiem czy to bedzie dzialac, ale może skumasz w jaki sposob ja to robie

Edytowane przez Fendi
Odnośnik do komentarza
https://skript.pl/temat/57320-strony-w-gui/#findComment-341550
Udostępnij na innych stronach

  • 1
W dniu 6.04.2024 o 16:04, Hiri12 napisał:

Siemka mam pytanie: chcialbym zrobic kilkustronowe gui (np. takie jak używa się na /ah), probowalem z kilkoma skryptami samemu ale nic mi nie wychodziło (może dla tego bo byly gowniane) i np. slot 9 gui byl "Przejdz na nastepna strone. Obecna strona: 1/2" :B

Poniżej udostępniam prosty przykład realizujący wspomniany przez Pana mechanizm. Skrypt tworzy kilkustronicowe GUI o numerach stron od 1 do 5.

Wydaje mi się, że z dydaktycznego punktu widzenia jest to dobry skrypt, ponieważ nie zawiera niepotrzebnych urozmaiceń. Realizuje tylko tę jedną funkcjonalność.

function createGUIPage(n: number) :: inventory:
	set {_gui} to chest inventory with 3 rows named "&7Strona &b%{_n}%"
	set slot (integers from 0 to 26) of {_gui} to black stained glass pane
	if {_n} > 1:
		set slot 18 of {_gui} to arrow named "&7Wróć na stronę &6%{_n} - 1%"
	if {_n} < 5:
		set slot 26 of {_gui} to arrow named "&7Przejdź na stronę &6%{_n} + 1%"
	return {_gui}
	
command /multipagegui:
	executable by: players
	trigger:
		open createGUIPage(1) to player
		
on inventory click:
	event-inventory is not player's inventory
	event-inventory's name contains "&7Strona &b"
	cancel event
	index of clicked slot is 18 or 26
	type of clicked slot is arrow
	set {_split::*} to uncoloured name of event-inventory split at " "
	set {_page} to {_split::2} parsed as number
	if index of clicked slot is 18:
		open createGUIPage({_page} - 1) to player
		stop
	open createGUIPage({_page} + 1) to player

W razie pytań proszę śmiało je zadawać.

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/57320-strony-w-gui/#findComment-342670
Udostępnij na innych stronach

  • 0
11 godzin temu, Kormic napisał:

Poniżej udostępniam prosty przykład realizujący wspomniany przez Pana mechanizm. Skrypt tworzy kilkustronicowe GUI o numerach stron od 1 do 5.

Wydaje mi się, że z dydaktycznego punktu widzenia jest to dobry skrypt, ponieważ nie zawiera niepotrzebnych urozmaiceń. Realizuje tylko tę jedną funkcjonalność.

function createGUIPage(n: number) :: inventory:
	set {_gui} to chest inventory with 3 rows named "&7Strona &b%{_n}%"
	set slot (integers from 0 to 26) of {_gui} to black stained glass pane
	if {_n} > 1:
		set slot 18 of {_gui} to arrow named "&7Wróć na stronę &6%{_n} - 1%"
	if {_n} < 5:
		set slot 26 of {_gui} to arrow named "&7Przejdź na stronę &6%{_n} + 1%"
	return {_gui}
	
command /multipagegui:
	executable by: players
	trigger:
		open createGUIPage(1) to player
		
on inventory click:
	event-inventory is not player's inventory
	event-inventory's name contains "&7Strona &b"
	cancel event
	index of clicked slot is 18 or 26
	type of clicked slot is arrow
	set {_split::*} to uncoloured name of event-inventory split at " "
	set {_page} to {_split::2} parsed as number
	if index of clicked slot is 18:
		open createGUIPage({_page} - 1) to player
		stop
	open createGUIPage({_page} + 1) to player

W razie pytań proszę śmiało je zadawać.

Pozdrawiam.

Dziękuje za odpowiedz, bardzo mi się to przyda lecz mam jeszcze jedno pytanie: jak dodawać do takiego GUI np. zmienną {I::*} jako item? Dla przykładu mam w zmiennej {ItemyRynek::*} itemy które gracze wystawili na rynku i teraz chcę aby te itemy pokazywały się w GUI ale 6-rzędowe GUI to za mało dla tego potrzebował bym 2 strony gdzie byłyby kolejne itemy. Próbowałem to zrobić od dziś rana lecz poległem z kretesem,

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/57320-strony-w-gui/#findComment-342674
Udostępnij na innych stronach

  • 1
2 godziny temu, Hiri12 napisał:

Dziękuje za odpowiedz, bardzo mi się to przyda lecz mam jeszcze jedno pytanie: jak dodawać do takiego GUI np. zmienną {I::*} jako item? Dla przykładu mam w zmiennej {ItemyRynek::*} itemy które gracze wystawili na rynku i teraz chcę aby te itemy pokazywały się w GUI ale 6-rzędowe GUI to za mało dla tego potrzebował bym 2 strony gdzie byłyby kolejne itemy. Próbowałem to zrobić od dziś rana lecz poległem z kretesem,

Pozdrawiam.

Przy założeniu, że indeksy listy zmiennych {ItemyRynek::*} to liczby naturalne (0, 1, 2, ...), a jej zawartość to przedmioty wystawiane na rynku, funkcję można zmodyfikować w poniższy sposób.

options:
	numberOfItemsPerPage: 45

function createGUIPage(page: number) :: inventory:
	set {_gui} to chest inventory with 6 rows named "&7Strona &b%{_page}%"
	loop {@numberOfItemsPerPage} times:
		# Ustawienie indeksu pobieranego przedmiotu z listy
		# Na przykład, dla page = 2 i trzeciego przedmiotu na stronie otrzymujemy: (2 - 1) * 45 + 3 = 48 <- to jest indeks pobieranego przedmiotu w liście
		set {_index} to ({_page} - 1) * {@numberOfItemsPerPage} + loop-number
		if {ItemyRynek::%{_index}%} is not set:
			exit loop
		set slot (loop-number - 1) of {_gui} to {ItemyRynek::%{_index}%}
	if {_page} > 1:
		set slot 45 of {_gui} to arrow named "&7Wróć na stronę &6%{_page} - 1%"
	set {_nextPageIndex} to {_page} * {@numberOfItemsPerPage} + 1
	# Sprawdzenie czy istnieją jeszcze jakieś przedmioty, które można wyświetlić na kolejnych stronach
	if {ItemyRynek::%{_nextPageIndex}%} is set:
		set slot 53 of {_gui} to arrow named "&7Przejdź na stronę &6%{_page} + 1%"
	return {_gui}

Jeśli pojawią się jakieś wątpliwości, proszę pytać.

Pozdrawiam.

Edytowane przez Kormic
Zmiana nazewnictwa zmiennych
Odnośnik do komentarza
https://skript.pl/temat/57320-strony-w-gui/#findComment-342679
Udostępnij na innych stronach

  • 0
1 godzinę temu, Kormic napisał:

Przy założeniu, że indeksy listy zmiennych {ItemyRynek::*} to liczby naturalne (0, 1, 2, ...), a jej zawartość to przedmioty wystawiane na rynku, funkcję można zmodyfikować w poniższy sposób.

options:
	numberOfItemsPerPage: 45

function createGUIPage(page: number) :: inventory:
	set {_gui} to chest inventory with 6 rows named "&7Strona &b%{_page}%"
	loop {@numberOfItemsPerPage} times:
		# Ustawienie indeksu pobieranego przedmiotu z listy
		# Na przykład, dla page = 2 i trzeciego przedmiotu na stronie otrzymujemy: (2 - 1) * 45 + 3 = 48 <- to jest indeks pobieranego przedmiotu w liście
		set {_index} to ({_page} - 1) * {@numberOfItemsPerPage} + loop-number
		if {ItemyRynek::%{_index}%} is not set:
			exit loop
		set slot (loop-number - 1) of {_gui} to {ItemyRynek::%{_index}%}
	if {_page} > 1:
		set slot 45 of {_gui} to arrow named "&7Wróć na stronę &6%{_page} - 1%"
	set {_nextPageIndex} to {_page} * {@numberOfItemsPerPage} + 1
	# Sprawdzenie czy istnieją jeszcze jakieś przedmioty, które można wyświetlić na kolejnych stronach
	if {ItemyRynek::%{_nextPageIndex}%} is set:
		set slot 53 of {_gui} to arrow named "&7Przejdź na stronę &6%{_page} + 1%"
	return {_gui}

Jeśli pojawią się jakieś wątpliwości, proszę pytać.

Pozdrawiam.

Dziękuje, właśnie o to mi chodziło.

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/57320-strony-w-gui/#findComment-342681
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ę...