Skocz do zawartości
  • 0

Gui


szaphi
 Udostępnij

Pytanie

Czy da się zrobić tak, że otwierasz gui, wkładasz tam rzeczy i potem po ponownym otwarciu gui pokazują Ci się te rzeczy i możesz je wyciągnąc to znaczy, czy gui może się zapisywać jak włożymy do niego przedmiot i ten przedmiot po ponownym otwarciu można odzyskać?

Odnośnik do komentarza
Udostępnij na innych stronach

Rekomendowane odpowiedzi

  • 0
Teraz, szaphi napisał:

Czy da się zrobić tak, że otwierasz gui, wkładasz tam rzeczy i potem po ponownym otwarciu gui pokazują Ci się te rzeczy i możesz je wyciągnąc to znaczy, czy gui może się zapisywać jak włożymy do niego przedmiot i ten przedmiot po ponownym otwarciu można odzyskać?

Jak najbardziej. Nasłuchujesz do eventu 'on inventory close', jeżeli nazwa GUI się zgadza to tworzysz pętlę 'loop (liczba slotów) times' i ustawiasz 'slot loop-number - 1' do zmiennej {jakasLista::%player%::%loop-number - 1%}.

Przy otwieraniu natomiast wykonujesz odwrotnie tę czynność (pomijając oczywiście sprawdzanie nazwy GUI), mianowicie ustawiasz 'slot loop-number - 1' na wcześniej zapisaną zmienną.

Mam nadzieję, że w miarę dobrze to objaśniłem.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
31 minut temu, Kormic napisał:

Jak najbardziej. Nasłuchujesz do eventu 'on inventory close', jeżeli nazwa GUI się zgadza to tworzysz pętlę 'loop (liczba slotów) times' i ustawiasz 'slot loop-number - 1' do zmiennej {jakasLista::%player%::%loop-number - 1%}.

Przy otwieraniu natomiast wykonujesz odwrotnie tę czynność (pomijając oczywiście sprawdzanie nazwy GUI), mianowicie ustawiasz 'slot loop-number - 1' na wcześniej zapisaną zmienną.

Mam nadzieję, że w miarę dobrze to objaśniłem.

command /inv:
    trigger:
        open chest with 1 row named "siema" to player
        format slot %loop-number 1% with {jakasLista::%player%::%loop-number - 1%}
        stop
        
        
on inventory close:
    if event-gui named "siema":
        loop 9 times:
            set {jakasLista::%player%::%loop-number - 1%} to slot loop-number 1    



coś takiego?

 

22 minuty temu, PanMaruda napisał:

albo drugi sposób:
tworzysz sobie w zmiennej nową, pustą skrzynkę o zadanej ilości rzędów i nazwie - a następnie otwierasz ją graczowi

Bardzo podobny, ale nie ukrywając prostszy wydaję się pomysł kormic'a, zwłaszcza, ze nie bawiłem się nigdy w gui 

Edytowane przez szaphi
Nieaktywny

Łączę posty.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
1 minutę temu, szaphi napisał:

command /inv:
    trigger:
        open chest with 1 row named "siema" to player
        format slot %loop-number 1% with {jakasLista::%player%::%loop-number - 1%}
        stop
        
        
on inventory close:
    if event-gui named "siema":
        loop 9 times:
            set {jakasLista::%player%::%loop-number - 1%} to slot loop-number 1    

coś takiego?

Po 1 - korzystaj z formatowanie kodu PRiSaql.png
Po 2 - nie korzystaj z format slot - to jest zbugowane.

Po 3 - korzystasz z loop-number gdzie nie ma pętli?

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
9 minut temu, CoFFeIN04 napisał:

Po 1 - korzystaj z formatowanie kodu Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!
Po 2 - nie korzystaj z format slot - to jest zbugowane.

Po 3 - korzystasz z loop-number gdzie nie ma pętli?

1. czasami zapominam :P

2. nie wiedziałem :O

3. ?

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Więc mam takie coś 

 

command /inv:
    trigger:
        open chest with 1 row named "siema" to player
        loop 9 times:
            format slot %loop-number - 1% of player with {jakasLista::%player%::%loop-number - 1%}
            stop
        
        
on inventory close:
    if inventory is "siema":
        loop 9 times:
            set {jakasLista::%player%::%loop-number - 1%} to slot loop-number 1    

Ale
AuA3nJs.png

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Teraz, szaphi napisał:

Więc mam takie coś 

1. W starszych wersjach niemożliwym było używanie wyrażeń arytmetycznych w nazwach zmiennych, więc możliwe, że przed pętlą musisz stworzyć zmienną lokalną, która będzie zwiększana o 1 co każdą iterację pętli. Następnie podmieniasz 'loop-number - 1' na tę zmienną lokalną.

2. Użyłeś w pętli 'stop', co spowoduje, że przy pierwszej iteracji pętla zostanie zatrzymana i jedynie slot nr 0 zostanie ustawiony.

3. W ostatniej linijce zgubiłeś minus między 'loop-number' a '1'.

4. Nie używaj formatowania GUI z SkQuery, gdyż pozwala na łatwe wyjmowanie przedmiotów przy minimalnej wiedzy ze strony osoby bugującej GUI. Zamiast tego użyj formatowania ze Skripta, mianowicie 'set slot' (o ile posiadasz wystarczającą wersję Skripta).

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
6 minut temu, szaphi napisał:

format slot

Mówiłem już coś na ten temat

6 minut temu, szaphi napisał:

%loop-number - 1%

zamień to na ((loop-number)-1) po prostu

Do gui najłatwiej Ci będzie skorzystać z marudnego skryptu 

 

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

  • 0
2 minuty temu, CoFFeIN04 napisał:

Mówiłem już coś na ten temat

zamień to na ((loop-number)-1) po prostu

 

3 minuty temu, Kormic napisał:

1. W starszych wersjach niemożliwym było używanie wyrażeń arytmetycznych w nazwach zmiennych, więc możliwe, że przed pętlą musisz stworzyć zmienną lokalną, która będzie zwiększana o 1 co każdą iterację pętli. Następnie podmieniasz 'loop-number - 1' na tę zmienną lokalną.

2. Użyłeś w pętli 'stop', co spowoduje, że przy pierwszej iteracji pętla zostanie zatrzymana i jedynie slot nr 0 zostanie ustawiony.

3. W ostatniej linijce zgubiłeś minus między 'loop-number' a '1'.

4. Nie używaj formatowania GUI z SkQuery, gdyż pozwala na łatwe wyjmowanie przedmiotów przy minimalnej wiedzy ze strony osoby bugującej GUI. Zamiast tego użyj formatowania ze Skripta, mianowicie 'set slot' (o ile posiadasz wystarczającą wersję Skripta).

nadal takie same problemy co up, żadna z tych porad nic nie daje, a co do set slot sam nie wiem czy to działa bo wywala mi cały czas te błędy

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0

Teraz nie wywala mi błędu ale nie działa mi ustawianie slota

 

command /inv:
    trigger:
        set metadata tag "bff" of player to chest inventory with 3 rows named "siema"
        set {siema} to 0
        loop 9 times:
            set {siema} to {siema} + 1
            set slot {siema} of metadata tag "bff" of player to {jakasLista::%player%::%loop-number - 1%}        
        open (metadata tag "bff" of player) to player
        
        
on inventory close:
	if inventory = (metadata tag "bff" of player):
		loop 9 times:
			set {jakasLista::%player%::%loop-number - 1%} to loop-number - 1	 

 

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

  • 0
12 minut temu, szaphi napisał:

Teraz nie wywala mi błędu ale nie działa mi ustawianie slota

Nie rozumiem dlaczego to zrobiłeś na podstawie metadanych.

Dodatkowo użyłeś zmiennych globalnych w dodawaniu liczby reprezentującej numer slotu. Zmienne lokalne to takie, których nazwa zaczyna się podłogą (_) i są automatycznie czyszczone po dobiegnięciu do końca kodu.

{int} # To jest zmienna globalna
{_int} # To jest zmienna lokalna

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
1 minutę temu, Kormic napisał:

Nie rozumiem dlaczego to zrobiłeś na podstawie metadanych.

Dodatkowo użyłeś zmiennych globalnych w dodawaniu liczby reprezentującej numer slotu. Zmienne lokalne to takie, których nazwa zaczyna się podłogą (_) i są automatycznie czyszczone po dobiegnięciu do końca kodu.


{int} # To jest zmienna globalna
{_int} # To jest zmienna lokalna

 

Ja już tak z desperacji sięgnąłem po jakiś poradnik Angielski, przetestowałem, bo takto nie wiem w sumie jak to zrobić, ewentualnie zamiast metadaty zrobić  {2inv::%player%}

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
8 minut temu, Kormic napisał:

Nie rozumiem dlaczego to zrobiłeś na podstawie metadanych.

Dodatkowo użyłeś zmiennych globalnych w dodawaniu liczby reprezentującej numer slotu. Zmienne lokalne to takie, których nazwa zaczyna się podłogą (_) i są automatycznie czyszczone po dobiegnięciu do końca kodu.


{int} # To jest zmienna globalna
{_int} # To jest zmienna lokalna

 

dobra, działa, już jest dobrze :D, ale wyskakuje mi takie cos
RA25Jpi.png

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1
Teraz, szaphi napisał:

Ja już tak z desperacji sięgnąłem po jakiś poradnik Angielski, przetestowałem, bo takto nie wiem w sumie jak to zrobić, ewentualnie zamiast metadaty zrobić  {2inv::%player%}

Wyjaśnię ci to "pseudokodem".

komenda /test:
	otwieranie GUI graczowi
	ustawianie zmiennej lokalnej na 0
	pętla (ilość slotów) razy:
		ustawianie slotu (lokalna zmienna) na {zmienna::%player%::%lokalna zmienna%}
		dodawanie 1 do lokalnej zmiennej
		
event przy zamykaniu gui:
	sprawdzanie nazwy gui:
		ustawianie zmiennej lokalnej na 0
		pętla (ilość slotów) razy:
			ustawianie {zmienna::%player%::%lokalna zmienna%} na slot (lokalna zmienna)
			dodawanie 1 do lokalnej zmiennej

 

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
2 minuty temu, Kormic napisał:

Wyjaśnię ci to "pseudokodem".


komenda /test:
	otwieranie GUI graczowi
	ustawianie zmiennej lokalnej na 0
	pętla (ilość slotów) razy:
		ustawianie slotu (lokalna zmienna) na {zmienna::%player%::%lokalna zmienna%}
		dodawanie 1 do lokalnej zmiennej
		
event przy zamykaniu gui:
	sprawdzanie nazwy gui:
		ustawianie zmiennej lokalnej na 0
		pętla (ilość slotów) razy:
			ustawianie {zmienna::%player%::%lokalna zmienna%} na slot (lokalna zmienna)
			dodawanie 1 do lokalnej zmiennej

 

tak, już działa, ale problem jest taki, że jeżeli serwer się włącza od nowa, całe gui które było zrobione przedtem robi poof, i nie wiem czy potrzeba bawić się w pliki yaml czy raczej nie.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
Teraz, szaphi napisał:

tak, już działa, ale problem jest taki, że jeżeli serwer się włącza od nowa, całe gui które było zrobione przedtem robi poof, i nie wiem czy potrzeba bawić się w pliki yaml czy raczej nie.

Jeżeli zrobiłeś kod tak jak to opisałem, nie powinno być problemów.

I nie, nie rób zmiennych w YAMLu, bo to będzie najgorsza decyzja w twoim życiu.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
1 minutę temu, Kormic napisał:

Jeżeli zrobiłeś kod tak jak to opisałem, nie powinno być problemów.

I nie, nie rób zmiennych w YAMLu, bo to będzie najgorsza decyzja w twoim życiu.

mam to w taki sposób
 

on join:
	if {skrzynia::%player%} is not set:
		set {skrzynia::%player%} to chest inventory with 3 rows named "siema"
	else:
		stop

command /inv:
	trigger:
		loop 9 times:
			set {_siema} to {_siema} + 1
			set slot {_siema} of {skrzynia::%player%} to {jakasLista::%player%::%loop-number - 1%}		
		open {skrzynia::%player%} to player
		
		
on inventory close:
	if inventory is {skrzynia::%player%}:
		loop 9 times:
			set {jakasLista::%player%::%loop-number - 1%} to loop-number - 1	
			
			

I w podobny sposób mam inny skrypt, ale nie wyskakuje mi, to co tutaj

Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

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

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