Skocz do zawartości
  • 0

komenda na włączenie i wyłączenie tabeli


Pytanie

Nie mogę znaleźć w dokumentacjach, jak za pomocą komendy mogę wyłączyć scoreboard.

Chodzi mi o coś w stylu /tabela która wyłącza lub włącza scoreboard. Również używam pluginu 'sternalboard' więc wydaje mi się że jest z tym dodatkowa zabawa. Jeżeli ktoś byłby chętny udzielić mi pomocy, to byłbym wdzięczny:)

 

Odnośnik do komentarza
https://skript.pl/temat/57416-komenda-na-w%C5%82%C4%85czenie-i-wy%C5%82%C4%85czenie-tabeli/
Udostępnij na innych stronach

16 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
26 minut temu, micmit123 napisał:

Nie mogę znaleźć w dokumentacjach, jak za pomocą komendy mogę wyłączyć scoreboard.

Chodzi mi o coś w stylu /tabela która wyłącza lub włącza scoreboard. Również używam pluginu 'sternalboard' więc wydaje mi się że jest z tym dodatkowa zabawa. Jeżeli ktoś byłby chętny udzielić mi pomocy, to byłbym wdzięczny:)

 

Jeśli autor pluginu udostępnił do użytku komendę pozwalającą każdemu graczowi na włączanie i wyłączanie scoreboardu, może Pan dodać do pliku commands.yml alias "tabela" dla tej komendy. Możliwa jest również opcja dodania aliasu w pliku konfiguracyjnym pluginu (o ile autor przewidział taką funkcjonalność).

Jest również możliwy drugi wariant - autor pluginu nie udostępnił takiej komendy. W takim wypadku może Pan skorzystać z dodatku skript-reflect, aby wykorzystać API pluginu SternalBoard do sterowania scoreboardem.
Zanim jednak pokażę jak można tego dokonać, niech Pan najpierw powie czy każdy gracz ma możliwość przełączania scoreboardu w tym pluginie.

Odnośnik do komentarza
https://skript.pl/temat/57416-komenda-na-w%C5%82%C4%85czenie-i-wy%C5%82%C4%85czenie-tabeli/#findComment-341907
Udostępnij na innych stronach

  • 0
47 minut temu, micmit123 napisał:

Niestety autor nie udostępnił tej możliwości. Można jedynie wyłączyć scoreboard na cały serwer:/

Rozumiem, w takim razie będzie musiał Pan zaimplementować samemu taki mechanizm. Jak wspomniałem wcześniej, jeśli Pan chce dodać taką komendę w Skript, będzie Pan potrzebował dodatku skript-reflect, aby móc skorzystać z API pluginu SternalBoard.

Pozwoliłem już sobie przejrzeć kod źródłowy pluginu - zdziwił mnie brak zastosowania wzorca projektowego "singleton". Nie powinno to jednak stać na przeszkodzie dodania komendy przełączającej scoreboard danemu graczowi. Ostrzegam jednak, że nie jestem doświadczony w tworzeniu pluginów do Minecraft, a więc moje rozwiązanie może być wadliwe.

Wyjaśnię w paru krokach jak najprościej zaimplementować taki mechanizm wykorzystując metody przygotowane przez autora tego pluginu. Przy tym będę dodawał odpowiednie załączniki, aby ułatwić Panu proces poszukiwania odpowiednich rzeczy w dokumentacji skript-reflect.

  1. Pomijając samą definicję komendy, należy rozpocząć od pobrania instancji pluginu Sternalboard. Tutaj załączam fragment dokumentacji. Zamiast %javatype/string% wystarczy wstawić nazwę pluginu, czyli "SternalBoard". Instancję najlepiej zapisać do zmiennej (lokalnej, nie widzę potrzeby zapisu jej w zmiennej globalnej).
  2. Mając już wyżej wspomnianą instancję pluginu, jesteśmy gotowi, aby korzystać z metod zawartych w API SternalBoarda. Tak więc pobieramy managera scoreboardów z tego pluginu - korzystamy z metody getScoreboardManager() i zapisujemy zwróconą przez nią instancję managera do kolejnej zmiennej lokalnej.
  3. Ów manager pozwala nam na modyfikację scoreboardów poszczególnych graczy. Wywołujemy więc metodę toggle(Player player) na instancji managera, co powinno przełączyć widoczność scoreboardu danego gracza. Jako parametr do metody wystarczy przesłać 'player'.

Jeśli by zignorować linijki od definicji komendy (to są 'command /x:', 'trigger:', itd.), kod będzie miał długość 3 linijek. Co prawda można rozwiązanie skrócić do 2 linijek (a nawet 1 linijki), jednakże wymagałoby to łańcuchowego wywoływania metod (którym nie chcę mieszać w Pana głowie). Zresztą, próba skrócenia do 1 linijki wiązałaby się najprawdopodobniej z pogwałceniem jednej z konwencji pisania skryptów z użyciem skript-reflect.

Może mieć Pan uczucie bycia rzuconym na głęboką wodę, dlatego zalecam podejść na spokojnie do dokumentacji dodatku skript-reflect. Pojawiają się tutaj również podstawy wiedzy o języku Java.
W samej dokumentacji jest sekcja "Basics", która powinna pomóc Panu w dojściu do rozwiązania. Gdyby Pan miał problem ze zrozumieniem samej Javy i jednocześnie chciał poznać więcej, zachęcam do sprawdzenia tego kompendium wiedzy.

W razie jakichkolwiek pytań proszę się nie krępować, chętnie pomogę/wytłumaczę jeśli będzie taka potrzeba.

Edytowane przez Kormic
Odnośnik do komentarza
https://skript.pl/temat/57416-komenda-na-w%C5%82%C4%85czenie-i-wy%C5%82%C4%85czenie-tabeli/#findComment-341909
Udostępnij na innych stronach

  • 0
Godzinę temu, micmit123 napisał:

Witam, próbowałem napisać skrypt lecz chyba jeszcze nie jestem na tym poziomie😅

Jeśli Pan sprecyzuje co sprawia trudność w napisaniu skryptu, będę w stanie pomóc.

Dodatkowo, jeśli Pan nie zrozumiał w pełni któregoś z punktów w moim poprzednim poście, proszę powiedzieć czego Pan nie zrozumiał. Spróbuję wyjaśnić bardziej szczegółowo, możliwie bez użycia żargonu programistycznego.

Odnośnik do komentarza
https://skript.pl/temat/57416-komenda-na-w%C5%82%C4%85czenie-i-wy%C5%82%C4%85czenie-tabeli/#findComment-341966
Udostępnij na innych stronach

  • 0
2 godziny temu, micmit123 napisał:

Nie rozumiem ogólnie tej dokumentacji. Nie wiem gdzie co wstawić. Zawsze mi wyskakują błędy.

Niech Pan pokaże swój kod, w którym próbuje Pan zaimplementować cały kod komendy. Wskażę przyczyny błędów oraz podam rozwiązania Pana problemu.

Co do samej dokumentacji, jeśli Pan napotkał trudności przy próbie zrozumienia jej zawartości, proszę wskazać o których jej fragmentach mowa. Postaram się przełożyć informacje w niej zawarte na język możliwie prosty.

Odnośnik do komentarza
https://skript.pl/temat/57416-komenda-na-w%C5%82%C4%85czenie-i-wy%C5%82%C4%85czenie-tabeli/#findComment-341977
Udostępnij na innych stronach

  • 0

kod usuwałem wielokrotnie, więc jest tylko kilka niekompletnych linijek. Natomiast nie rozumiem jak odczytywać z tej dokumentacji. Jestem osobą która preferuje  coś ukazane od razu i przejrzyście, z dokładnym wyjaśnieniem. Nie mogę zrozumieć tej dokumentacji z moim poziomem java. Chodzi mi o to że jest pokazane jak coś działa i jak to napisać. Niestety nie ma gdzie, w czym i w jakim wcięciu. Oczywiście wchodziłem do strefy basic, lecz zrozumienie jej zajmie bardzo dużo czasu. Nie chciałbym się jednak zagłębiać w java z kilku powodów. Między innymi jest to, że programuje w c++ i lua. Ciężko by mi było uczyć się nowego języka.

Odnośnik do komentarza
https://skript.pl/temat/57416-komenda-na-w%C5%82%C4%85czenie-i-wy%C5%82%C4%85czenie-tabeli/#findComment-341978
Udostępnij na innych stronach

  • 0
3 godziny temu, micmit123 napisał:

kod usuwałem wielokrotnie, więc jest tylko kilka niekompletnych linijek. Natomiast nie rozumiem jak odczytywać z tej dokumentacji. Jestem osobą która preferuje  coś ukazane od razu i przejrzyście, z dokładnym wyjaśnieniem. Nie mogę zrozumieć tej dokumentacji z moim poziomem java. Chodzi mi o to że jest pokazane jak coś działa i jak to napisać. Niestety nie ma gdzie, w czym i w jakim wcięciu. Oczywiście wchodziłem do strefy basic, lecz zrozumienie jej zajmie bardzo dużo czasu. Nie chciałbym się jednak zagłębiać w java z kilku powodów. Między innymi jest to, że programuje w c++ i lua. Ciężko by mi było uczyć się nowego języka.

Rozumiem Pana, sam na początku miałem problemy z rozumieniem tej dokumentacji, dlatego też zaoferowałem swoją pomoc.

Cieszy mnie jednak, że Pan ma pojęcie o programowaniu obiektowym. Skoro Pan miał już styczność z C++ (notabene prekursorem Javy), z pewnością Pan wie jak działa wywoływanie metod na danym obiekcie.

{_obiekt}.twojaMetoda({_argumenty::*})

Dokładnie tak samo to działa w skript-reflect. Tutaj nie wchodzimy w jakiekolwiek niuanse programistyczne, w przypadku Pana kodu wystarczy wywołanie dwóch metod.

  1. Pierwsza metoda to getScoreboardManager(), której wartość zwracaną zapisujemy do zmiennej. Należy ją wywołać na instancji pluginu zapisanej do jakiejś zmiennej (na przykład {_instance}). Pokazałem Panu wcześniej wyrażenie w skript-reflect zwracające instancję pluginu.
    set {_sManager} to {_instance}.getScoreboardManager()

    Pokazałem wyżej przykład jak należy to zrobić. Rzecz jasna nazwy naszych zmiennych nie mają żadnego znaczenia (jedynie kwestia czytelności kodu), ważne jest to co przechowują.

  2. Druga metoda to toggle(Player player), do której wystarczy przesłać np. wyrażenie 'player'. Jej wartości nie trzeba zapisywać (zresztą nie ma czego, gdyż typ zwracanej wartości to void), po prostu trzeba ją wywołać na instancji zwróconej przez metodę z punktu 1.

Jeśli nadal będzie Pan miał problemy z napisaniem tego skryptu, proszę dać znać. Tutaj pokazałem mniej szczegółowe wyjaśnienie, tak więc po zapoznaniu się z tym postem proszę wrócić do mojego poprzedniego.

Odnośnik do komentarza
https://skript.pl/temat/57416-komenda-na-w%C5%82%C4%85czenie-i-wy%C5%82%C4%85czenie-tabeli/#findComment-341982
Udostępnij na innych stronach

  • 0

Witam, dziękuje za odpowiedz. Natomiast programowanie blokowe różni się zapisemw c++. Nie rozumiem głównie instancji. Raz jest napisane że mam napisać: 

[(an|the)] instance of [the] plugin %javatype/string% 

chociaż nie mam pojęcia co mam zrobić z takimi rzeczami jak [(an|the)] lub [the]. Nadal też nie wiem gdzie tą instancje mam napisać, lub gdzie klasę wstawić. Nie wiem czy mam coś dodatkowo zaimportować czy nie.

Również nie rozumiem nowej rzeczy, mianowicie co oznacza: set {_sManager} to {_instance}.getScoreboardManager()
albo czy w {_sManager} i {_instance} mam coś zmieniać, jak i również w {_obiekt}. Dziękuje za to, że pan próbuje mi to wytłumaczyć żebym również się nauczył. Niestety wydaje mi się że jest to niewykonalne. Choć java i c++ mają dużo wspólnego, są kompletnie inne w zapisie. Niestety wydaje mi się że nie da się tego tak wytłumaczyć osobie, która nie ma prawie nic wspólnego z javą i jej formatem.
Naprawdę, dziękuje za to że próbował mi pan to wytłumaczyć, lecz spędziłem nad tym kilka godzin i 0 efektów w skrypcie. Wiem że to tak nie wypada, i że jest to nie najlepsza i nic nie ucząca rzecz, ale proszę o gotowy kod. Nie opisałem wszystkiego, czego nie rozumiem, gdyż jest tego znacznie więcej. Jeżeli by pan się zgodził, z góry dziękuje. Ponadto jeszcze jedno pytanie. Jak wygląda po zaimportowaniu tych klas, metoda tworząca komendę tabelę. Jeszcze raz dziękuje i przepraszam :)

Odnośnik do komentarza
https://skript.pl/temat/57416-komenda-na-w%C5%82%C4%85czenie-i-wy%C5%82%C4%85czenie-tabeli/#findComment-341986
Udostępnij na innych stronach

  • 0
3 minuty temu, micmit123 napisał:

Witam, dziękuje za odpowiedz. Natomiast programowanie blokowe różni się zapisemw c++. Nie rozumiem głównie instancji. Raz jest napisane że mam napisać: 

[(an|the)] instance of [the] plugin %javatype/string% 

chociaż nie mam pojęcia co mam zrobić z takimi rzeczami jak [(an|the)] lub [the]. Nadal też nie wiem gdzie tą instancje mam napisać, lub gdzie klasę wstawić. Nie wiem czy mam coś dodatkowo zaimportować czy nie.

Już rozumiem Pana problem - Pan nie wie jak czytać wzorce (ang. patterns) w dokumentacji. Przeprowadzę więc Pana przez szybki kurs czytania tego enigmatycznego zapisu nawiasów.

  • Nawiasy okrągłe '( )' oznaczają wybór. Każda opcja do wyboru oddzielana jest kreską (ang. pipeline) '|'.
  • Nawiasy kwadratowe '[ ]' zaś oznaczają opcjonalność, nie musi Pan pisać danej rzeczy, a i tak Skript zrozumie co Pan ma na myśli.
  • Jeśli coś nie jest ujęte w jakiekolwiek nawiasy, trzeba to napisać w kodzie.

Dla przykładu odniosę się do wzorca wyrażenia zwracającego instancję pluginu, który Pan podał.
Proszę zauważyć, że wszystkie rzeczy, nad którymi Pan się zastanawiał, są ujęte w kwadratowe nawiasy. Tak więc nie musi Pan ich w ogóle dodawać do kodu, a i tak wszystko będzie działało dokładnie tak samo.
Rozszerzając moje wyjaśnienia, warto zwrócić uwagę na to, że jeśli Pan by się zdecydował na coś z pierwszego kwadratowego nawiasu (mowa o '[(an|the)]'), musi Pan wybrać albo 'an', albo 'the'. Tak to działa.

Aby rozwiać wszelkie wątpliwości, pokażę każdą możliwą wersję powyższego wzorca w użyciu dla pluginu SternalBoard.

set {_instance} to instance of plugin "SternalBoard"
# Lub:
set {_instance} to the instance of the plugin "SternalBoard"
# Lub:
set {_instance} to an instance of the plugin "SternalBoard"
# Lub:
set {_instance} to the instance of plugin "SternalBoard"
# Lub:
set {_instance} to an instance of plugin "SternalBoard"

Przy okazji Pan właśnie dowiedział się jak wykorzystać te wyrażenie.

Co do wszelkich importów, od razu mogę powiedzieć, że niczego nie trzeba dodawać w sekcji 'import', którą skript-reflect dodaje. Więcej informacji o niej znajdzie Pan tutaj.

14 minut temu, micmit123 napisał:

Również nie rozumiem nowej rzeczy, mianowicie co oznacza: set {_sManager} to {_instance}.getScoreboardManager()

Ta linijka oznacza, że "na podstawie" instancji pluginu SternalBoard zapisujemy do zmiennej {_sManager} instancję menadżera scoreboardu, który jest oferowany przez plugin SternalBoard. Innymi słowy, instancja pluginu SternalBoard zawiera informacje o menadżerze scoreboardu, które nas interesują.

16 minut temu, micmit123 napisał:

Wiem że to tak nie wypada, i że jest to nie najlepsza i nic nie ucząca rzecz, ale proszę o gotowy kod.

Ma Pan całkowitą rację, niemniej jednak w obliczu Pana wysiłków i chęci nauki czegoś nowego (a rzadko się obserwuje taką postawę na forum, pochwalam) jestem w stanie przystać na Pana prośbę.

command /tabela:
	executable by: players
	trigger:
		set {_instance} to instance of plugin "SternalBoard"
		set {_scoreboardManager} to {_instance}.getScoreboardManager()
		{_scoreboardManager}.toggle(player)

Proszę uprzejmie. Gdybym miał napisać taki skrypt, zrobiłbym to jak wyżej.

19 minut temu, micmit123 napisał:

Jak wygląda po zaimportowaniu tych klas, metoda tworząca komendę tabelę.

Nie za bardzo rozumiem Pana pytanie, można jaśniej? Czy chodzi o komendę, która tworzy nową tabelę?

Odnośnik do komentarza
https://skript.pl/temat/57416-komenda-na-w%C5%82%C4%85czenie-i-wy%C5%82%C4%85czenie-tabeli/#findComment-341987
Udostępnij na innych stronach

  • 0

Bardzo dziękuje za odpowiedź , strasznie mi to pomogło. Co z tym importowaniem to źle to ująłem, ale jednak już zrozumiałem.

Edytowane przez micmit123
Odnośnik do komentarza
https://skript.pl/temat/57416-komenda-na-w%C5%82%C4%85czenie-i-wy%C5%82%C4%85czenie-tabeli/#findComment-341988
Udostępnij na innych stronach

  • 0
6 minut temu, micmit123 napisał:

Bardzo dziękuje za odpowiedź , strasznie mi to pomogło.

Nie ma sprawy. Cieszę się, że mogłem pomóc.

Ja również dziękuję Panu za cierpliwość i chęć nauki, doceniam to.

6 minut temu, micmit123 napisał:

Co z tym importowaniem to chodziło o to, że w dokumentacjach ciągle było coś importowane, wydaje mi się że biblioteki, ale chyba plugin skript ma już to automatycznie wgrane.

Już rozumiem Pana wątpliwości.

Tutaj mieliśmy na tyle wygodną sytuację, że nie było potrzeby importowania jakichkolwiek klas. Można podsumować to w ten sposób, że wszystko jest zawarte w samej instancji pluginu.

Odnośnik do komentarza
https://skript.pl/temat/57416-komenda-na-w%C5%82%C4%85czenie-i-wy%C5%82%C4%85czenie-tabeli/#findComment-341989
Udostępnij na innych stronach

  • 0
W dniu 26.04.2024 o 20:10, micmit123 napisał:

Bardzo dziękuje za odpowiedź , strasznie mi to pomogło. Co z tym importowaniem to źle to ująłem, ale jednak już zrozumiałem.

Hey! Czy udało ci się napisać ten skrypt do końca? Jestem ciekaw jak to zrobiłeś bo sam właśnie nad tym główkuje, a nie specjalnie jestem w stanie wyłapać co konkretnie mam zrobić z waszej konwersacji

Odnośnik do komentarza
https://skript.pl/temat/57416-komenda-na-w%C5%82%C4%85czenie-i-wy%C5%82%C4%85czenie-tabeli/#findComment-342813
Udostępnij na innych stronach

  • 0
17 godzin temu, BALLUSON napisał:

Hey! Czy udało ci się napisać ten skrypt do końca? Jestem ciekaw jak to zrobiłeś bo sam właśnie nad tym główkuje, a nie specjalnie jestem w stanie wyłapać co konkretnie mam zrobić z waszej konwersacji

Niech Pan przeczyta wszystko od początku do końca, aby zrozumieć schemat postępowania w skrypcie. Gdy już Pan to zrobi, może Pan skorzystać z przykładowego kodu, który udostępniłem na końcu mojej przedostatniej odpowiedzi.

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/57416-komenda-na-w%C5%82%C4%85czenie-i-wy%C5%82%C4%85czenie-tabeli/#findComment-342816
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ę...