-
Ilość zawartości
1470 -
Rejestracja
-
Ostatnia wizyta
-
Wygrane w rankingu
36
Aktywność reputacji
-
PanMaruda otrzymał(a) reputację od AlanKK w [JSON] Formatowanie tekstu w Skript - jak z niego korzystać
Z dedykacją dla wszystkich tych, którzy wmawiają sobie i innym, że do wysłania na chat klikalnego tekstu lub podpowiedzi po najechaniu potrzebują skryptu Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! albo jakichś magicznych efektów ze starożytnego dodatku. Ten poradnik pokazuje i tłumaczy w jaki sposób osiągnąć takie efekty jedynie przy pomocy czystego pluginu Skript (od bodajże wersji 2.0).
Interaktywny chat:
zaznaczam, iż wszystkie poniższe akcje odnoszą się jedynie do efektów które wysyłają wiadomość do gracza (broadcast oraz message);
wszystkich akcji jakich możemy użyć jest cztery i dzielą się one na dwie grupy, zapisujemy je dość prosto według poniższego formatu:
'<nazwa: treść akcji>tekst do którego będzie się ona odnosić'
[GRUPA PIERWSZA] akcje aktywowane po najechaniu na tekst: tooltip - wyświetla dodatkowy tekst (tzw. podpowiedź) w ramce nad wybraną wiadomością, przykładowo:
'<tooltip:Wiadomość po najechaniu>Najedź na tą wiadomość'
[GRUPA DRUGA] akcje aktywowane po kliknięciu na tekst: url - przenosi gracza do domyślnej przeglądarki i otwiera mu stronę z podanego linku (w większości przypadków wymaga to dodatkowego potwierdzenia przez użytkownika - w celach bezpieczeństwa - czy na pewno chce otworzyć daną stronę, przykładowo:
'<url:Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!>Kliknij tutaj aby posłuchać'
command - wykonuje komendę jako gracz: jeżeli treść akcji zaczyna się od ukośnika - wtedy jest ona traktowana jako komendą wykonywana przez gracza, przykładowo:
'<command:/help>Kliknij mnie aby otrzymać pomoc'
jeżeli treść nie zaczyna się od ukośnika - wtedy jest ona traktowana jako zwykła wiadomość wysyłana przez gracza na chat, przykładowo:
'<command:Dzień dobry>Kliknij tutaj aby się przywitać'
suggest command - wpisuje graczowi podaną treść w jego pole tekstowe pod chatem, przykładowo:
'<suggest command:Jestem twoją wklejoną wiadomością>Kliknij tutaj, aby wkleić wiadomość do swojego pola tekstowego'
Formatowanie i kolorowanie tekstu:
myślę że każdy, kto teraz czyta to zdanie doskonale wie jak korzystać z kolorów w minecraft przy użyciu paragrafu (§) lub spójnika (&) - więc nie będę ich tutaj przytaczał, skupię się na osobnej Skriptowej wersji kolorowania i formatowania wiadomości;
tak jak powyżej, poszczególne kolory \ efekty dodajemy zapisując je w nawiasach ostrych:
'<efekt\kolor>'
kolory - wiem, że z tej opcji nikt nigdy nie skorzysta skoro możemy to robić dużo szybciej i krócej przy użyciu spójnika, ale i tak warto o tym wspomnieć, przykładowo:
'<red>Ta wiadomość będzie czerwona'
lista wszystkich głównych kolorów wraz z ich aliasami: [ 0 ] black - czarny [ 1 ] blue (dark blue) - niebieski [ 2 ] green (dark green) - zielony [ 3 ] cyan (cyanaqua, dark cyan, dark aqua, dark turquoise, dark turquois) - turkusowy [ 4 ] red (dark red) - czerwony [ 5 ] purple (dark purple) - fioletowy [ 6 ] orange (orange, gold, dark yellow) - pomarańczowy [ 7 ] grey (light grey, gray, light gray, silver) - szary [ 8 ] dark grey (dark gray) - ciemny szary [ 9 ] light blue (indigo) - jasny niebieski [ a ] light green (lime, lime green) - jasny zielony [ b ] light cyan (light aqua, turquoise, turquois, light blue) - błękitny [ c ] light red (pink) - jasny czerwony [ d ] light purple (magenta) - jasny fioletowy [ e ] yellow (light yellow) - żółty [ f ] white - biały
formatowanie - tak, tak - to też niepotrzebnie piszę, ale co tam, przykładowo:
'<bold>Ta wiadomość będzie pogrubiona'
lista wszystkich opcji formatowania: [ k ] magic (obfuscated) - mrugające znaki (zwykle zwane - matrixem) [ l ] bold (b) - pogrubienie [ m ] strikethrough (strike, s) - przekreślenie [ n ] underlined (underline, u) - podkreślenie [ o ] italic (italics, i) - pochylenie
kolory RGB (hexadecymalne) - nowością w minecraft (dostępną od wersji 1.16) jest wsparcie dla kolorów RGB w formacie hexadecymalnym, jak z nich korzystać i skąd je brać:
swoje własne kolory możemy wybierać z np. generatorów online (Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!) - nas interesuje zawsze wartość z kratką (hashtag), wpisujemy ją identycznie jak wszystkie powyższe kolory - w nawiasy ostre. (kratka również musi być podana), przykładowo:
'<#00FF00>Ta wiadomość będzie zielona'
Warto wiedzieć:
we wszystkich powyższych przykładach, efekt (kolor lub formatowanie) będzie odnosiło się do całej wiadomości;
jeżeli jednak będziemy chcieli się go pozbyć, możemy to zrobić na dwa sposoby: korzystając z opcji resetowania tekstu '<reset>', '<r>' lub '&r', przykładowo:
'<red>Ta wiadomość będzie czerwona <reset>Ale ta będzie już w domyślnym kolorze białym'
wstawiając za tekstem kolejne formatowanie, przykładowo:
'<bold>Ta wiadomość będzie biała i pogrubiona <red>Ale ta będzie czerwona i niepogrubiona'
jeżeli efekty (kolory lub formatowanie) następują po sobie to się na siebie nakładają, przykładowo:
'<tooltip:Wiadomość><red><bold>Ta wiadomość będzie czerwona, pogrubiona i pokaże tekst po najechaniu na nią'
tooltip - czyli podpowiedzi opisane na początku poradnika - mogą składać się z wielu linijek. Jeżeli chcemy taki efekt uzyskać musimy każdą nową linijkę oddzielić wyrażeniem nowej linii '%new line%' lub w skrócie '%nl%', przykładowo:
'<tooltip: 1 linijka %nl% 2 linijka %nl% 3 linijka %nl% i tak dalej>Mamy tutaj długą podpowiedź'
wewnątrz efektów (np. w podpowiedziach) możemy również używać kolorów i formatowania, przykładowo:
'<tooltip: <yellow><bold>Żółta podpowiedź>&4&lNajedź tutaj kursorem, aby zobaczyć żółtą podpowiedź'
jeżeli wewnątrz naszego efektu (koloru lub formatowania) chcemy umieścić wyrażenie lub zmienną - to jak najbardziej możemy to zrobić, ale: skript podczas wysyłania wiadomości najpierw stara się ją formatować (tj. ustawia kolory, efekty i wszystko co powyżej opisałem), a dopiero po nich wstawia do naszego tekstu zmienne, co skutkuje niepokolorowaną wiadomością wysłaną na chat, przykładowo: set {_pogrubienie} to "bold" send "<%{_pogrubienie}%>nasza wiadomość" niestety, na chacie naszym oczom ukaże się:
<bold>Nasza wiadomość z pomocą przychodzi nam wyrażenie '[un] formatted %text%' - sprawia ono, że plugin ponownie (po wczytaniu zmiennych) sprawdza wiadomość w poszukiwaniu formatowania tekstu - dzięki temu możliwe jest umieszczanie zmiennych w tekście (np. z nickami graczy, kolorami rgb lub kolorami pobranymi przez skripta), przykładowo: set {_hex} to "##00FF00" send formatted "<%{_hex}%Ta wiadomość zawiera działającą zmienną z kolorem zielonym"
Tylko gdzie pizza zapytacie - a ja na to: *pstryk* średnia hawajska dla wszystkich.
-
PanMaruda otrzymał(a) reputację od Dychu333 w [JSON] Formatowanie tekstu w Skript - jak z niego korzystać
Z dedykacją dla wszystkich tych, którzy wmawiają sobie i innym, że do wysłania na chat klikalnego tekstu lub podpowiedzi po najechaniu potrzebują skryptu Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! albo jakichś magicznych efektów ze starożytnego dodatku. Ten poradnik pokazuje i tłumaczy w jaki sposób osiągnąć takie efekty jedynie przy pomocy czystego pluginu Skript (od bodajże wersji 2.0).
Interaktywny chat:
zaznaczam, iż wszystkie poniższe akcje odnoszą się jedynie do efektów które wysyłają wiadomość do gracza (broadcast oraz message);
wszystkich akcji jakich możemy użyć jest cztery i dzielą się one na dwie grupy, zapisujemy je dość prosto według poniższego formatu:
'<nazwa: treść akcji>tekst do którego będzie się ona odnosić'
[GRUPA PIERWSZA] akcje aktywowane po najechaniu na tekst: tooltip - wyświetla dodatkowy tekst (tzw. podpowiedź) w ramce nad wybraną wiadomością, przykładowo:
'<tooltip:Wiadomość po najechaniu>Najedź na tą wiadomość'
[GRUPA DRUGA] akcje aktywowane po kliknięciu na tekst: url - przenosi gracza do domyślnej przeglądarki i otwiera mu stronę z podanego linku (w większości przypadków wymaga to dodatkowego potwierdzenia przez użytkownika - w celach bezpieczeństwa - czy na pewno chce otworzyć daną stronę, przykładowo:
'<url:Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!>Kliknij tutaj aby posłuchać'
command - wykonuje komendę jako gracz: jeżeli treść akcji zaczyna się od ukośnika - wtedy jest ona traktowana jako komendą wykonywana przez gracza, przykładowo:
'<command:/help>Kliknij mnie aby otrzymać pomoc'
jeżeli treść nie zaczyna się od ukośnika - wtedy jest ona traktowana jako zwykła wiadomość wysyłana przez gracza na chat, przykładowo:
'<command:Dzień dobry>Kliknij tutaj aby się przywitać'
suggest command - wpisuje graczowi podaną treść w jego pole tekstowe pod chatem, przykładowo:
'<suggest command:Jestem twoją wklejoną wiadomością>Kliknij tutaj, aby wkleić wiadomość do swojego pola tekstowego'
Formatowanie i kolorowanie tekstu:
myślę że każdy, kto teraz czyta to zdanie doskonale wie jak korzystać z kolorów w minecraft przy użyciu paragrafu (§) lub spójnika (&) - więc nie będę ich tutaj przytaczał, skupię się na osobnej Skriptowej wersji kolorowania i formatowania wiadomości;
tak jak powyżej, poszczególne kolory \ efekty dodajemy zapisując je w nawiasach ostrych:
'<efekt\kolor>'
kolory - wiem, że z tej opcji nikt nigdy nie skorzysta skoro możemy to robić dużo szybciej i krócej przy użyciu spójnika, ale i tak warto o tym wspomnieć, przykładowo:
'<red>Ta wiadomość będzie czerwona'
lista wszystkich głównych kolorów wraz z ich aliasami: [ 0 ] black - czarny [ 1 ] blue (dark blue) - niebieski [ 2 ] green (dark green) - zielony [ 3 ] cyan (cyanaqua, dark cyan, dark aqua, dark turquoise, dark turquois) - turkusowy [ 4 ] red (dark red) - czerwony [ 5 ] purple (dark purple) - fioletowy [ 6 ] orange (orange, gold, dark yellow) - pomarańczowy [ 7 ] grey (light grey, gray, light gray, silver) - szary [ 8 ] dark grey (dark gray) - ciemny szary [ 9 ] light blue (indigo) - jasny niebieski [ a ] light green (lime, lime green) - jasny zielony [ b ] light cyan (light aqua, turquoise, turquois, light blue) - błękitny [ c ] light red (pink) - jasny czerwony [ d ] light purple (magenta) - jasny fioletowy [ e ] yellow (light yellow) - żółty [ f ] white - biały
formatowanie - tak, tak - to też niepotrzebnie piszę, ale co tam, przykładowo:
'<bold>Ta wiadomość będzie pogrubiona'
lista wszystkich opcji formatowania: [ k ] magic (obfuscated) - mrugające znaki (zwykle zwane - matrixem) [ l ] bold (b) - pogrubienie [ m ] strikethrough (strike, s) - przekreślenie [ n ] underlined (underline, u) - podkreślenie [ o ] italic (italics, i) - pochylenie
kolory RGB (hexadecymalne) - nowością w minecraft (dostępną od wersji 1.16) jest wsparcie dla kolorów RGB w formacie hexadecymalnym, jak z nich korzystać i skąd je brać:
swoje własne kolory możemy wybierać z np. generatorów online (Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!) - nas interesuje zawsze wartość z kratką (hashtag), wpisujemy ją identycznie jak wszystkie powyższe kolory - w nawiasy ostre. (kratka również musi być podana), przykładowo:
'<#00FF00>Ta wiadomość będzie zielona'
Warto wiedzieć:
we wszystkich powyższych przykładach, efekt (kolor lub formatowanie) będzie odnosiło się do całej wiadomości;
jeżeli jednak będziemy chcieli się go pozbyć, możemy to zrobić na dwa sposoby: korzystając z opcji resetowania tekstu '<reset>', '<r>' lub '&r', przykładowo:
'<red>Ta wiadomość będzie czerwona <reset>Ale ta będzie już w domyślnym kolorze białym'
wstawiając za tekstem kolejne formatowanie, przykładowo:
'<bold>Ta wiadomość będzie biała i pogrubiona <red>Ale ta będzie czerwona i niepogrubiona'
jeżeli efekty (kolory lub formatowanie) następują po sobie to się na siebie nakładają, przykładowo:
'<tooltip:Wiadomość><red><bold>Ta wiadomość będzie czerwona, pogrubiona i pokaże tekst po najechaniu na nią'
tooltip - czyli podpowiedzi opisane na początku poradnika - mogą składać się z wielu linijek. Jeżeli chcemy taki efekt uzyskać musimy każdą nową linijkę oddzielić wyrażeniem nowej linii '%new line%' lub w skrócie '%nl%', przykładowo:
'<tooltip: 1 linijka %nl% 2 linijka %nl% 3 linijka %nl% i tak dalej>Mamy tutaj długą podpowiedź'
wewnątrz efektów (np. w podpowiedziach) możemy również używać kolorów i formatowania, przykładowo:
'<tooltip: <yellow><bold>Żółta podpowiedź>&4&lNajedź tutaj kursorem, aby zobaczyć żółtą podpowiedź'
jeżeli wewnątrz naszego efektu (koloru lub formatowania) chcemy umieścić wyrażenie lub zmienną - to jak najbardziej możemy to zrobić, ale: skript podczas wysyłania wiadomości najpierw stara się ją formatować (tj. ustawia kolory, efekty i wszystko co powyżej opisałem), a dopiero po nich wstawia do naszego tekstu zmienne, co skutkuje niepokolorowaną wiadomością wysłaną na chat, przykładowo: set {_pogrubienie} to "bold" send "<%{_pogrubienie}%>nasza wiadomość" niestety, na chacie naszym oczom ukaże się:
<bold>Nasza wiadomość z pomocą przychodzi nam wyrażenie '[un] formatted %text%' - sprawia ono, że plugin ponownie (po wczytaniu zmiennych) sprawdza wiadomość w poszukiwaniu formatowania tekstu - dzięki temu możliwe jest umieszczanie zmiennych w tekście (np. z nickami graczy, kolorami rgb lub kolorami pobranymi przez skripta), przykładowo: set {_hex} to "##00FF00" send formatted "<%{_hex}%Ta wiadomość zawiera działającą zmienną z kolorem zielonym"
Tylko gdzie pizza zapytacie - a ja na to: *pstryk* średnia hawajska dla wszystkich.
-
PanMaruda otrzymał(a) reputację od knugi w [Skript-reflect] - Własne Efekty, warunki, wyrażenia i eventy!
przecież jak wstawisz zmienną w miejscu argumentu tekstowego %string% i ona będzie tekstem to i tak zadziała
ale jeżeli koniecznie chcesz mieć tylko zmienną to trzeba:
zaimportować sobie ze skripta typ Variable w argumencie podać object w triggerze efektu sprawdzić czy podany objekt jest zmienną (coś w tym stylu): raw expr is instance of Variable
-
PanMaruda otrzymał(a) reputację od XpediiXII w Parsed as integer
usuń formatowanie
uncolored kasa parsed as integer
-
PanMaruda otrzymał(a) reputację od TremeQ w POTRZEBUJE SKRYPT NA HOLOGRAMY
options: message-color: &6 perm: &cYou don't have permission for this variables: {hdchat.%player%.toggle} = true {altura1.%player%} = 3.5 command /hdchat: trigger: if sender has permission "hdchat.toggle": if {hdchat.%player%.toggle} is true: set {hdchat.%player%.toggle} to false message "&7Holgram chat &4off&c!" stop trigger else: set {hdchat.%player%.toggle} to true message "&7Hologram chat &aon&c!" stop trigger else: send "{@perm}" on chat: if {hdchat.%player%.toggle} is true: set {_} to "stop" "%message%" is not "legendchat" bind hologram "&b%player%&e said:;{@message-color}%message%" to player for 5 seconds offset by 0.0, {altura1.%player%}, 0.0 if {altura1.%player%} is 3.5: set {altura1.%player%} to 3.0 stop if {altura1.%player%} is 3.0: set {altura1.%player%} to 2.5 stop if {altura1.%player%} is 2.5: set {altura1.%player%} to 3.5 stop wait 5 seconds make the console execute command "/%{_}%" set {altura1.%player%} to 3.5 proszę bardzo, przykładowy skrypt z wykorzystaniem hologramów, wymagane pluginy to skript-holo, umbaska, wildskript, skrayfall, holographic displays, holographicdisplaysaddon, tablinsku oraz Skript w wersji przynajmniej 2.5.3 alpha3
-
PanMaruda otrzymał(a) reputację od MrLucyferek w Propozycje na serwer Sky-Block RPG
Opisz już to co masz, a najlepiej udostępnij serwer do testów żeby każdy mógł zobaczyć co tam jest i ewentualnie się wypowiedzieć na jego temat.
-
PanMaruda przyznał(a) reputację dla matibtw w Czas gry, potrzebna topka
Siema dorobiłby ktoś do tego topke czasu?
-
PanMaruda przyznał(a) reputację dla Cesarstwo_Utopii w [1.19.2] utopiamc.pl - survival, roleplay, ekonomia, polityka
IP: utopiamc.pl lub mc.utopiamc.pl (Minecraft 1.19.2)
Discord: Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!
Poradnik jak zacząć: Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!
-
-
PanMaruda przyznał(a) reputację dla natsume w [1.8 - 1.20] CraftMC.PL - Twoja Sieć Serwerów!
Kontakt z administracją absurdalnie tragiczny. Jako gracz gildii 1.17 nie spotkałem tam administratora więcej niż raz. A co najwspanialsze pojawił sie na 5minut rozdał klucze i tyle go było. Błąd z klonowaniem itemów z /sklep który był od początku edycji. Martwe Chunki na całym obszarze spawna. Ba co do administracji to jest jednym wielikm żartem, prawdopodobnie nie ma tam nawet czegoś takiego jak sprawdzanie bo wiele ludzi płakało że jestem odpalony i zglaszało mnie prawie codziennie a nigdy nawet nie zostałem sprawdzony albo zaproszony na discorda. Własciciel serwera po kontakcie odpisuje jak Pani Anna dzwoniąca w sprawie Fotowoltaiki. Serwer w mojej opinii jedno wielkie dno pchający sie w popularne tryby bez bladego pojęcia o tym co własciwie powinno sie na nich znajdować. Szczerze nie polecam nikomu.
-
PanMaruda przyznał(a) reputację dla SupexYT w Skrypt na odliczanie czasu na actionbar
nwm czy działa jak nie to może glicz lub notro poprawią
-
PanMaruda otrzymał(a) reputację od Amenosek w Skript crashujący serwer
zacznijmy od tego że pobierz sobie silnik Paper (ewentualnie Purpur) i wtedy sprawdź (bezpośredni link do pobierania: Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!)
są pluginy które również korzystają z rightclicka, czasem kolidują i też wywalają błędy
jeżeli zmiana silnika nie pomogła to spróbuj wyłączać koljeno pluginy i sprawdzać czy wtedy działa (przykładowo: WorldEdit, FastAsyncWorldEdit, Essentials, SignShop|GUI, Citizens itp.) dodatkowo możesz podesłać listę pluginów
z tego co się orientuję skript nie ma opcji zarządzania doświadczeniem, więc taka linijka nie ma prawa w czystym skripcie działać: give 100 xp to the player spróbuj ją zakomentować i wtedy sprawdź czy wywala
jest opcja że do powyższego efektu korzystasz z jakiegoś starego dodatku do skripta i to on powoduje crash (może to być np. TuSKe lub WildSkript), wyślij listę pluginów i dodatkowo podaj wersje wszystkich posiadanych dodatków
-
PanMaruda przyznał(a) reputację dla Libter w [Kursy/Korepetycje] Naucze cie pisac > Pluginy Minecraft > Gry 2D > Boty na discorda
@zrdzn, @kerpson cena adekwatna do jakości. Nie rozumiem o co wam chodzi
-
PanMaruda przyznał(a) reputację dla shudon_ w plz szybko
Wie ktos jak zrobic zeby particlesy wyswietlaly sie tylko oznaczonej osobie?
-
PanMaruda przyznał(a) reputację dla Sorex w Pomoc w skrypice
Jestem początkowym pisownikiem skryptów i jak próbowałem użyć tego skryptu na swoim serwerze wyskakuje mi 5 błędów sprawdzi ktoś co jest nie tak i ewentualnie naprawi ?
oto skrypt :
-
-
PanMaruda otrzymał(a) reputację od JedynyTakiPsiak w wykrycie itemy w obu rękach
jeśli już to
if (tool of victim) or (offhand tool of victim) = stone jak to nie zadziała to rozbiajsz sobie to na dwa osobne warunki
a jeżeli i to nie pomoże to trzeba sprawdzić czy twoja wersja skripta w ogóle ma wyrażenie offhand
-
PanMaruda przyznał(a) reputację dla Libter w Butelka z farbą
Nie zapominajmy o negatywnych efektach po wypiciu farby ( ͡° ͜ʖ ͡°)
-
-
PanMaruda otrzymał(a) reputację od jaku49 w Jeden serwer - wiele wersji [1.7 - 1.19]
nie zamieniłeś przypadkiem w tabelce "Wersja gracza" z "Wersja serwera"?
-
-
PanMaruda przyznał(a) reputację dla 3meraldK w Zaawansowany Skript [#1] Pakiety i NMS
Uwaga
Umiejętności zaprezentowane w tym poradniku wymagają odpowiedniej znajomości języka Java (małej, wystarczy wiedzieć, co to klasy, interfejsy, katalogi, pola, konstruktory i inne pierdoły), a także w pewnym stopniu wtyczki skript-reflect. Tu jest PORADNIK do skript-reflect: Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! albo tu Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! Omawiane protokoły działają tylko i wyłącznie na wersjach 1.17.X (opcjonalnie 1.16.X, w sumie to nie pamiętam). Definicja pakietów się zmieniała na przestrzeni wielu wersji Minecraft, np. przed wersją 1.16, klasy były nazwane inaczej, oraz były rozlokowane w katalogu net/minecraft/server. Jest to też pierwsza część mojej serii poradników do zaawansowanego Skripta.
Definicja pakietu i NMS
Pakiety (albo protokoły) w Minecraft są to pakiety danych wysyłane przez serwer do klienta lub vice versa. Klient oznacza gracza, a serwer oznacza (...) Każdy pakiet jest nazwany odpowiednio: PacketPlayXY, gdzie X może oznaczać In (od incoming, czyli pakiet klient -> serwer), lub może oznaczać Out (od outcoming, klient <- serwer); natomiast Y to nazwa danego pakietu (przykład: PacketPlayInUpdateSign, pakiet, który wysyła klient do serwera w momencie, kiedy skończy pisać na tabliczce). Klasy pakietów, które serwer używa do wysyłania informacji lub jej odbierania, znajdują się w pliku /cache/patched_x.x.x.jar w katalogu net/minecraft/network/protocol/game, więc nie jest już to popularne "nms" od net/minecraft/server. Mogą one służyć do wysyłania wybranym graczom informacji, których serwer nie posiada np. wyrenderować komuś blok nieistniejący na serwerze.
NMS to skrót od net.minecraft.server, spopularyzowanego katalogu pliku .jar, który jest wymagany do uruchomienia serwera. Uprzednio, w tym katalogu znajdowały się wszystkie pakiety, które można było wysyłać i odbierać, obecnie natomiast, pakiety są rozlokowane w innej części pliku, więc nms jest technicznie rzecz biorąc pojęciem nieaktualnym, aczkolwiek wiele osób używa tego terminu do dziś, i teoretycznie można o nim mówić dalej.
Pakiety w Skript
Jest wiele sposobów na użycie pakietów, np. używanie przestarzałych i niedziałających na nowsze wersje wtyczek typu ThatPacketAddon natomiast dla mnie najbardziej odpowiadającym jest użycie wtyczki skript-reflect, która posiada wiele rozmaitych i wspaniałych możliwości. Przed prowadzonymi eksperymentami z pakietami jest wymagane nauczyć się używania wspomnianego dodatku. Odsyłacze są na dole poradnika. Dodatkowo, niektóre pakiety można wysyłać za pośrednictwem niczego innego niż Spigot API (Player#sendBlockChange(), Player#sendChunkChange() <- przestarzałe, Player#sendSignChange(), Player#sendBlockDamage()) ale jak widać jest ich za mało, by móc się w pełni bawić pakietami.
Wysyłanie pakietów do klienta gry
Aby wysłać pakiet do klienta, należy go najpierw skonstruować, bo każdy pakiet wychodzący ma konstruktor w swojej klasie. Żeby go znać, można zdekompilować (np. programem jd-gui) wspomniany w początkowej sekcji plik .jar, i dojść do danego pakietu, albo można skorzystać z tej strony: Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!. W tym przykładzie wyślę do klienta trudny do skonstruowania pakiet PacketPlayOutExplosion, tworzący eksplozje widoczne dla jednego klienta, a jest trudny, bo wymaga wykorzystania innych klas w tym pliku .jar. Pierwsze co należy zrobić, to zaimportować klasę pakietu.
Naprawdę polecam skorzystać z dekompilatora. PO PIERWSZE, na wspomnianej stronie jest kilka błędów. PO DRUGIE, rzeczy związane z tym popularnym "nms" są bardzo słabo udokumentowane, częściowo zaszyfrowane i nie kompilują się między wersjami. Poniższy screen pokazuje konstruktor pakietu. Jak widać, wymagane jest podać 6 parametrów. Pierwsze 3 argumenty definiują miejsce efektu eksplozji. Następny argument określa jaki typ cząsteczki wygeneruje eksplozja, np. liczba większa od 2.0 wygeneruje "minecraft:explosion_emitter", a w przeciwnym wypadku "minecraft:explosion". Następny parametr to lista obiektów BlockPosition.class (a nie mówiłem, że trzeba umieć trochę Javy) określających bloki które mają być zastąpione powietrzem. Ostatni to niby opcjonalny, ale jak się go nie wpisze to się popsuje skrypt, czyli wektor o jaki ma zostać popchnięty gracz.
Definicja 4 pierwszych będzie banalnie prosta. Dwa ostatnie parametry wymagają użycia klas z tego samego pliku .jar. Wystarczy trochę długo poszukać i dostanie się sposób na zapisanie parametrów. Protip: na górze klasy pakietu są importowane inne potrzebne klasy, więc tam są podpowiedzi jak dostać się do jej kodu. Tworzymy najpierw grupową zmienną obiektów BlockPosition.class. Później trzeba trochę pomyśleć jak to wszystko skleić ze sobą w całość. W końcu został ostatni parametr, łatwo go skonstruować, wystarczy podać 3 liczby i tyle. Cała komenda będzie wyglądać następująco:
import: net.minecraft.network.protocol.game.PacketPlayOutExplosion net.minecraft.core.BlockPosition java.util.Arrays net.minecraft.world.phys.Vec3D command /eksplozja: trigger: set {_loc} to target block loop all blocks in radius 3 of {_loc}: add new BlockPosition(loop-block's x-coord, loop-block's y-coord, loop-block's z-coord) to {_lista::*} set {_pakiet} to new PacketPlayOutExplosion({_loc}'s x-coord, {_loc}'s y-coord, {_loc}'s z-coord, 3.0, Arrays.asList([{_lista::*} as BlockPosition]), new Vec3D(0, 2, 0)) W KOŃCU, tyle paplaniny żeby skonstruować jakiś pakiecik, ale jak go teraz wysłać? Oczywiście do tego służy metoda CraftPlayer#getHandle() <- tzw. "zcastowanie" klasy CraftBukkitowej klasy gracza do klasy nms, EntityPlayer#b <- pole klasy PlayerConnection, PlayerConnection#sendPacket() <- wysłanie pakietu.
player.getHandle().b.sendPacket({_pakiet}) Odbieranie pakietów klienta
Dobra, odbieranie pakietów to ostatnia rzecz która pozwala zarządzać tymi całymi pakietami. Pakietów przychodzących (klient -> serwer) nie można modyfikować i konstruować, należy je jedynie odbierać i przetwarzać ich dane. Aby nasłuchiwać pakietów, trzeba mieć ze sobą oddzielny, bardzo długi skrypt na nasłuchiwanie, ale na szczęście ktoś bardzo mądry stworzył tzw. snippet, czyli kawałek kodu, który możemy sobie wykorzystać do słuchania pakietów klient-serwer. Nie jest on oczywiście mojego autorstwa 🚎
Jak to zwykle robimy, to ten skrypt wczytujemy w oddzielnym pliku. Teraz powinniśmy się zrelogować, żeby całość działała poprawnie. JAK NASŁUCHIWAĆ PAKIETÓW? Na przykład wtedy, kiedy klient zakończy edytowanie tabliczki, czyli kliknie "Done" lub "Gotowe"?
import: net.minecraft.network.protocol.game.PacketPlayInUpdateSign on nmspacket PacketPlayInUpdateSign: send "Pakiet %event-string%: W pierwszej linii napisałeś: %nmspacket.c()[0]%" to event-player Bardzo proste! Każdy pakiet ma ze sobą jakieś dane, np. ten ma dane na temat linii tabliczki i jej koordynaty (tylko klient widzi tę tabliczkę). nmspacket.c() to jest to samo co naprzykład event-block, ale kod który można sobie zdekompilować jest częściowo zaszyfrowany, dlatego są jakieś literki, zamiast fajnych nazw metod. WARTO również wspomnieć że w eventach pakietowych zawsze jest coś typu event-player i event-string (nazwa pakietu). Pakiety przychodzące można anulować efektem cancel event. W niżej pokazanej klasie interesują nas metody rozpoczynające się od b(). Aby otrzymać dane pakietu klient-serwer trzeba napisać wspomniane nmspacket.c() czyli w tym przypadku chcę otrzymać tekst na tabliczce. [0] oznacza, że chcę otrzymać pierwszą linię tabliczki. A na przykład b() da nam lokalizację tabliczki.
Kolejny przykład
Jakieś linki i dokumentacje
Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! (przykład, który zrobiłem, żeby wysłać klientowi pakiet. W artykule są skategoryzowane przeróżne protokoły) Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! (przydatna dokumentacja do PaperSpigot 1.17) Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! (bardzo przydatny dekompilator, który jest najwiarygodniejszym źródłem, wystarczy przeciągnąć plik .jar do otwartego programu) Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! (poradnik autorstwa xAxee jak używać skript-reflect) Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! (dodatek tego samego autora o własnych efektach, eventach, kondycjach i wyrażeniach) Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! (artykuł na forumowej wiki) -
PanMaruda przyznał(a) reputację dla xAxee w [LISTOPAD] Skrypt Miesiąca #51
Nazwa skryptu: AxCodeSkriptApi (xD)
Link do prezentacji:
-
PanMaruda przyznał(a) reputację dla xAxee w AxCodeSkriptApi - Skrypt do integracji z api code.skript.pl
AxCodeSkriptApi
Cześć po w sumie rocznej przerwie od wypuszczenia ostatniego skryptu).
Chciałbym wam przedstawić skrypt który zrobiłem do zabawy z Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść! serwisu code.skript.
Skrypt umożliwia publikowanie skryptów z serwera prosto na serwis code.skript.pl
Działanie
Skrypt jest bardzo prosty w obsłudze, starczy wpisać komendę /publikuj i wybierać opcje w gui, po wybraniu skrypt wyślę na chacie link do opublikowanego kodu.
Uwaga
Aby skrypt działał musisz podać w opcji key swój klucz api który znajdziesz Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!
Środowisko
Skript 2.6
SkUtilities 0.9.2
Reqn 1.2.1
Skript-JSON
Komendy
/publikuj - otwiera gui z opcjami i publikuje skrypt
Uprawnienia
AxCodeSkriptApi - Dostęp do głównej komendy
Informacje
Skrypt posiada wsparcie automatycznych aktualizacji Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!
Ss
Zmiany i wydania
Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!
Dziekuje i pozdrawiam... Aksik
-
PanMaruda przyznał(a) reputację dla heater w Szukam skryptu na prace magazyniera
dzień dobry szukam skryptu na prace magazyniera czyli czegoś takiego że mam załużmy wybudowany port idę na kontyner i tam pisze /kontyner stworz [nazwa]
i potem stawiam tabliczke i pisze [kontyner] pod napisem pisze numer czyli nazwe a żeby zarabiać to trzeba kliknąć na tablicze gdzie np pisze [terminal] i dostaje się np block redstona i się naciska na te tabliczki to sie dostaje np 20$ to tyle z góry bende wdzięczny jak ktoś to zrobi