-
Ilość zawartości
11012 -
Rejestracja
-
Ostatnia wizyta
-
Wygrane w rankingu
230
Treść opublikowana przez Kormic
-
czy jest możliwość zakończenia pętli?
Kormic odpowiedział(a) na DariuszGki pytanie w Pytania i problemy
Proszę skorzystać z efektu 'exit loop'. Jak nazwa wskazuje, powoduje on zakończenie pętli i wykonanie kodu następującego po niej. Pozdrawiam. -
Bossbar zgodnie ze skryptem ma zniknąć po 180 sekundach (o ile Pan tego nie zmienił). Co do składni, napisałem skrypt zgodnie z tym artykułem opisującym użycie dodatku SkBee do tworzenia bossbarów, tak więc nie powinno być jakichkolwiek problemów. Dla pewności może Pan użyć poniższej komendy i spróbować ponownie. command /clearbossbars: permission: server.command.clearbossbars trigger: loop all players: delete bossbar named "privateBossbar - %player%" send "&6Wyczyszczono bossbary wszystkich graczy obecnych na serwerze." to sender Po jej użyciu bossbary wszystkich graczy na serwerze zostaną wyczyszczone, co pozwoli na ponowne wypróbowanie skryptu, który udostępniłem wyżej. Dodatkowo, podsyłam Panu wersję skryptu, w której przy wykonaniu skryptu usuwa się poprzedni bossbar, jeśli nie minęło 180 sekund od poprzedniego użycia komendy /bossbar. Co prawda nadal będzie następowało wykonywanie operacji usuwania gdy bossbar już nie istnieje po upłynięciu 180 sekund, jednakże wydaje mi się, że dodatek SkBee powinien obsługiwać taki przypadek. Jeśli jest inaczej, będziemy dalej kombinowali jak rozwiązać ów problem. options: bossbarDuration: 180 seconds bossbarCost: 10 command /bossbar [<text>]: executable by: players permission: server.command.bossbar permission message: "&cBrak permisji!" trigger: if arg is not set: send "&cUżycie: /bossbar <wiadomość>" stop if player's balance is smaller than {@bossbarCost}: send "&cNie masz wystarczająco pieniędzy! Koszt: {@bossbarCost}$." stop delete bossbar named "privateBossbar - %player%" set {_bossBar} to bossbar named "privateBossbar - %player%" with title arg with color yellow with style solid bar add player to bossbar players of {_bossBar} remove {@bossbarCost} from player's balance send "&aKosztowało cię to {@bossbarCost}$." send "&aUtworzono bossbar z wiadomością: &e%arg%" wait {@bossbarDuration} remove player from bossbar players of {_bossBar} delete {_bossBar} Pozdrawiam.
-
komenda na włączenie i wyłączenie tabeli
Kormic odpowiedział(a) na micmit123 pytanie w Pytania i problemy
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. -
Poprawiłem kod napisany przez ChatGPT. Morał jest taki, że nie wystarczy jedynie poprosić sztuczną (nie)inteligencję o kod. Trzeba również rozumieć jego działanie, aby móc zweryfikować poprawność odpowiedzi. Jeśli Pan chce, może Pan samemu przeanalizować mój kod, porównać go z odpowiedzią od ChatGPT i wywnioskować co było złe lub niepotrzebne. W razie pytań służę pomocą. Wracając do meritum, proszę uprzejmie. Kod nie był testowany. Skrypt wymaga dodatku SkBee do działania bossbaru i dowolnego pluginu zarządzającego ekonomią wspieranego przez Skript. options: bossbarDuration: 180 seconds bossbarCost: 10 command /bossbar [<text>]: executable by: players permission: server.command.bossbar permission message: "&cBrak permisji!" trigger: if arg is not set: send "&cUżycie: /bossbar <wiadomość>" stop if player's balance is smaller than {@bossbarCost}: send "&cNie masz wystarczająco pieniędzy! Koszt: {@bossbarCost}$." stop set {_bossBar} to bossbar named "privateBossbar - %player%" with title arg with color yellow with style solid bar add player to bossbar players of {_bossBar} remove {@bossbarCost} from player's balance send "&aKosztowało cię to {@bossbarCost}$." send "&aUtworzono bossbar z wiadomością: &e%arg%" wait {@bossbarDuration} remove player from bossbar players of {_bossBar} delete {_bossBar} Pozdrawiam.
-
Pan nie podał błędów, które wyświetlił Skript przy przeładowaniu skryptu, więc nie wiem nawet co mam naprawić. Odnośnie tej naprawy, rozumiem, że jest to zlecenie naprawy skryptu, zgadza się? Jeśli tak, proszę podać wersję serwera i Skript wraz z listą dodatków do niego. Dzięki temu będę mógł napisać kod w inny sposób w razie potrzeby kompatybilności. Pozdrawiam.
-
Jak zrobic otwieranie enchantu komenda?
Kormic odpowiedział(a) na igvier pytanie w Pytania i problemy
Należy użyć efektu 'open %inventory type% to %players%'. W miejsce %inventory type% należy wstawić odpowiednią wartość typu Inventory Type. Panu chodzi o 'enchanting table inventory'. Pozdrawiam. -
Cytując klasyka, u mnie działa bez zarzutu. Nie widzę co by miało tutaj Panu nie działać, ponieważ nie mam zarzutów co do wyglądu kodu w linijkach od 46 do 56 (kod odpowiadający za pobieranie nadmiaru przedmiotów). Niech Pan spróbuje załadować ten skrypt gdy na serwerze jest sam Skript, bez wszelkich dodatków. Wyłączenie pozostałych skryptów również jest wskazane. Dodam, że poprawiłem ten skrypt. Może Pan wyczyścić listę {storage::*} (wystarczy prosta komenda wykonująca 'clear {storage::*}) i wykorzystać poniższy kod, aby sprawdzić wszystko jeszcze raz. Ponownie, proszę to robić mając jedynie Skript na serwerze, bez dodatków do niego i pozostałych skryptów. Co do pytania o rejestrowanie nowych receptur, SkQuery umożliwia to. Proszę znaleźć odpowiedni efekt w dokumentacji na stronie SkUnity. Pozdrawiam.
-
No dobrze. Podsumujmy to jak ma wyglądać i (co ważniejsze) działać skrypt według Pana zaleceń, a właściwie to co ma zrobić zleceniobiorca. Na początku zleceniobiorca (od teraz będę określał jako skrypter) ma dokonać rozeznania (tak zwanego "researchu") na podanym przez Pana serwerze celem zbadania jak jest skonstruowany system zadań na tym serwerze. Następnie, skrypter ma za zadanie wymyślić co najmniej kilka zadań (a i pewnie nie na tym się skończy, ponieważ Skript umożliwia nasłuchiwanie do łącznie ponad 100 (bliżej 150) zdarzeń) i zaimplementować je w skrypcie. Brzmi łatwo, ale takim nie jest. Dalej, należy zaprojektować system losujący zadania i śledzący postęp wszystkich graczy, aby umożliwić chociażby wręczanie im nagród w zamian za ich wysiłek. Na koniec skrypter ma wszystko zapakować w ładne GUI, zapewne wielostronicowe. Z całym szacunkiem, ale w obliczu powyższych wymogów Pana zlecenie budzi jedynie pusty śmiech. Jeśli Pan faktycznie oczekuje, że ktoś się tego podejmie, proszę wyłożyć karty na stół i zaproponować jakieś sensowne wynagrodzenie. Innym rozwiązaniem jest skorzystanie z istniejących już pluginów implementujących systemy zadań na serwerze. Dodam tylko, że Pana drugie zlecenie jest trochę mniej, ale nadal wymagające. Właściwie to te drugie zlecenie ma wprowadzić system stałych misji, czyli jest bezpośrednio powiązane z tym zleceniem. Pozdrawiam.
- 4 odpowiedzi
-
- misje
- misje w gui
-
(i 2 więcej)
Oznaczone tagami:
-
Zdaje się, że ja kiedyś napisałem ten skrypt. Ów skrypt działa na zasadzie przenoszenia nadmiaru przedmiotów (ściślej mówiąc, obu rodzajów złotych jabłek, pereł i totemów). Aby skrypt zadziałał, musi Pan posiadać >= n+1 sztuk danego przedmiotu w ekwipunku, gdzie n to dozwolona jego ilość określona w sekcji 'options'. Skoro więc Pan ustawił limit pereł na 4, musi Pan mieć co najmniej 5 pereł w ekwipunku, aby skrypt pobrał (czy też jak to Pan ujął - wpłacił) Pana nadmiarowe perły. Jeśli skrypt nadal nie działa, proszę podać: wersję serwera, wersję Skript, dodatki do Skript. Proszę również uprzednio zweryfikować czy żaden z innych skryptów nie wpływa jakkolwiek na działanie tego skryptu. Pozdrawiam.
-
Już powstało wiele takich skryptów na tym forum. Niech Pan znajdzie sobie jakiś, który przypadnie Panu do gustu. Nawet wyręczę Pana i dam Panu link, aby mógł sobie samemu wyszukać. https://skript.pl/szukaj/?q=stoniarki&quick=1&type=forums_topic&nodes=134 Pozdrawiam.
-
Jesli Pan posiada Skript w wersji 2.3+, nie ma potrzeby korzystania z dodatków do niego w celu wysyłania wiadomości na action bar. Proszę skorzystać z tego efektu. Wystarczy zamienić linijkę 29. i 3 ostatnie linijki. Dodam, że wyczyszczenie zawartości action bar można zrealizować poprzez wysłanie pustej wiadomości (tekst ""). EDIT: Trzy sprawy dodatkowe. Linijka 16. nie będzie działała tak jak powinna, gdyż próbuje ona pobierać wartość nieistniejącej zmiennej {arg-2}, a w dodatku próbuje przemianowywać argument 2. na listę graczy online, chociaż argument ten przekazuje informację o jednym graczu. Należy więc zamienić typ drugiego argumentu w nagłówku (pierwszej linijce) komendy na 'players' i napisać linijkę 16. jak poniżej. set {_targets::*} to arg-2 Dzięki temu można również usunąć linijki 17-19, gdyż już sam Skript sprawdza poprawność podanego argumentu komendy. Teraz tak. Jeśli chcemy na przykład dać graczom o nazwach abc123, def456, xyz789 turbodrop, należy wykonać komendę w poniższy sposób. /turbocash <ilość minut> <lista graczy> # Przykłady: /turbocash 10 abc123,def456,xyz789 Turbodrop będzie trwał 20 razy krócej niż powinien. Proszę zauważyć, że Pan w pętli while odczekuje 1 tick, a powinien Pan odczekiwać 1 sekundę. Nie ma potrzeby parse'owania w linijce 8., ponieważ argument 1. już jest liczbą. Definicja komendy tego wymaga (mowa o [<number>]]). Ponadto, ponieważ już sama komenda sprawdza poprawność argumentu, można usunąć linijki od 9 do 11. Pozdrawiam.
-
Proszę bardzo. command /ekwipunek: executable by: players trigger: if {equipmentDrop::toggle::%player's uuid%} is not set: set {equipmentDrop::toggle::%player's uuid%} to true send "&aWyrzucanie przedmiotów włączone." to player stop clear {equipmentDrop::toggle::%player's uuid%} send "&6Wyrzucanie przedmiotów wyłączone." to player on player drop: {equipmentDrop::toggle::%player's uuid%} is not set cancel event send "&6Aby móc wyrzucać przedmioty z ekwipunku, wykonaj komendę /ekwipunek." to player Pozdrawiam.
-
No dobrze. Modyfikacja jest prosta, proszę spojrzeć na poniższy kod. on left click with blaze rod: if name of event-item contains "&8» &6Brush ": if "%regions at player%" contains "spawn": send "&cNie możesz używać brusha na spawnie" to player stop set {_b1} to block at event-block set {_b2} to block at event-block # Dalszy kod... Przepisałem kod z pierwszego listenera zdarzenia 'on right click' do drugiego listenera, a więc połączyłem je tak jak sugerowałem Panu. Jedynie dwie różnice to brak anulowania eventu (jeśli Pan tego potrzebuje, może Pan dopisać 'cancel event' wewnątrz warunku sprawdzającego region) i brak możliwości używania dowolnego pędzla w regionie "spawn", a nie tylko pędzla poziomu 1. jak to wcześniej miało miejsce. Pozdrawiam.
-
Proszę bardzo. on spawn: block below event-entity is not air cancel event Pozdrawiam.
-
mam problem z else if arg-1 is "start":
Kormic odpowiedział(a) na Kamilo901253 pytanie w Pytania i problemy
Przyczyną braku poprawnego działania skryptu (a właściwie błędu interpretacji) jest brak wcięć (spacje lub tabulacje, zalecam stosować te drugie) w kodzie podlegającym warunkom 'if' i 'else if'. Pozdrawiam. -
Pan dodaje do kodu NBT prawidłowe dla wersji 1.20.5+ pomimo faktu, iż Pana serwer korzysta z wersji gry 1.20.1. Mówiłem, aby Pan zwrócił na to uwagę. To jest przyczyną braku działania skryptu. Dla wersji poniżej 1.20.5, informacje o właścicielu głowy i jej teksturze zawiera znacznik 'SkullOwner'. Proszę więc wybrać na stronie wersję 1.20 i użyć poprawnych dla niej NBT. Pozdrawiam.
-
Zapętlanie wszystkich graczy to złe rozwiązanie. Niech Pan poprosi użytkownika w formularzu o nazwę na serwerze i wygenerowany kod. Wtedy nie ma potrzeby martwienia się o unikalność kodu i możliwość wpisania kodu przez kogoś nieupoważnionego. A przynamniej prawdopodobieństwo takiego zdarzenia drastycznie spada. Pozdrawiam.
-
Jak to naprawić? (Variables cannot be used here.)
Kormic odpowiedział(a) na KwiatekMiki pytanie w Pytania i problemy
Proszę usunąć przedimek 'the'. Co prawda Skript pozwala na używanie przedimków określonych i nieokreślonych, ale należy mieć na uwadze to, że większa ilość słów wiąże się w pewnych sytuacjach z większym obciążeniem dla interpretera, a w skrajnym przypadku z nieuzasadnionymi błędami zgłaszanymi przez Skript. Tak więc najlepiej po prostu ich nie używać. Nie mają one jakiegokolwiek pozytywnego wpływu na działanie skryptu. Jedyny wyjątek od tej reguły to sprawdzanie czy jakiś obiekt jest jakiegoś typu, na przykład: if attacker is a player: # Dalszy kod # Czy też: if {_i} is an integer: # Dalszy kod Zapisywanie liczby jako tekst, a następnie interpretowania owego tekstu jako liczby jest działaniem całkowicie zbędnym. Proszę tak nie robić. Dlaczego Pan przesyła przedmiot i typ kliknięcia jako tekst? Dla przedmiotu proszę użyć typu 'item', a dla typu kliknięcia 'click type'. Niech Pan jeszcze sprawdzi poniższy kod. Jeśli on nie działa, oznacza to problemy z Vaultem lub pluginem odpowiadającym za ekonomię, ewentualnie ze Skriptem. command /portfel: trigger: send "%player's balance%" to player Pozdrawiam. -
Proszę bardzo. on death of player: attacker is a player execute console command "give %attacker% diamond %random integer between 1 and 6%" Pozdrawiam.
-
W porządku, nie ma najmniejszego problemu. Jestem niemalże pewien, że warunek 'is between' definiuje przedział obustronnie domknięty. Jednak jeśli Pan mi nie wierzy, może Pan samemu to przetestować. Właśnie tak jest. Dlatego zasugerowałem wyżej sprawdzenie czy ostatnio dodane zabezpieczenie w skrypcie działa poprawnie (a zwłaszcza czy w ogóle działa). Co do sensu skryptu, ja go postrzegam jako jedną z wielu prób uczynienia trybu offline równie bezpiecznym co tryb online, choć jest to niezwykle trudne, a koszty rozwoju dobrego mechanizmu zabezpieczeń niejednokrotnie przekraczają cenę zakupu kopii Minecrafta. Pozdrawiam.
- 43 odpowiedzi
-
Po primo, proszę poprawić formatowanie kodu i wstawić go w formatowanie "Kod" oznaczone symbolem "<>". Po secundo, Pana skrypt działa tylko dla przypadku gdy jeden gracz jest na serwerze. Musi Pan śledzić ilość graczy w regionie. Można w tym celu stworzyć zmienną zwiększającą się i zmniejszającą o 1 gdy gracz odpowiednio wejdzie i wyjdzie z regionu. Jeśli jej wartość wynosi 0, oznacza to, że w regionie nie ma graczy. Warto również nasłuchiwać do zdarzeń 'on join' i 'on quit', aby zwiększać i zmniejszać wartość tego licznika w przypadku gdy jakiś gracz dołączy na serwer będąc w regionie lub wyjdzie z serwera będąc w nim. Pozdrawiam.
-
Proszę uprzejmie. # Wersja z blokowaniem otwierania stołu rzemieślniczego: on right click on crafting table: cancel event send "&cNie możesz używać stołu rzemieślniczego do wytwarzania przedmiotów." to player # Wersja z blokowaniem wytwarzania przedmiotów: on craft: cancel event send "&cNie możesz używać stołu rzemieślniczego do wytwarzania przedmiotów." to player Pozdrawiam.
-
To, że Pan anuluje zdarzenie w dowolnym miejscu w kodzie, nie znaczy, że wszelkie listenery nasłuchujące do niego nie mogą już go obsłużyć. Jeśli Pan chce, aby pędzel działał tylko gdy zdarzenie nie zostało anulowane, należy skorzystać z warunku 'event is not cancelled'. Warto również tutaj zastanowić się nad użyciem priorytetów listenerów zdarzenia. - informacja o nich znajduje się na samej górze tej strony. W wielkim skrócie, im wyższy jest priorytet listenera zdarzenia, tym później jest on obsługiwany. Pozwala to więc na nadpisanie działania wszystkich listenerów o niższym priorytecie. Niemniej jednak, najprostszym rozwiązaniem byłoby złączenie dwóch listenerów zdarzenia 'on right click' w Pana kodzie w jeden listener, co pozwoliłoby na sprawne zablokowanie używania pędzla na spawnie. Proszę również pamiętać, że Pan blokuje jedynie działanie pędzla poziomu 1. Pozdrawiam.
-
No dobrze proszę Pana, ale co to ma do rzeczy? Essentials to plugin z ogromem funkcji, więc nie rozumiem dlaczego Zleceniodawca miałby instalować go tylko dla tej jednej funkcji. Wiele serwerów z niego korzysta, ale nie znaczy to, że wszyscy z niego korzystają. Proszę uprzejmie. Skrypt nie był testowany. Wszystkie dostępne wartości typu 'enchantment' znajdzie Pan tutaj. command /enchantuj <enchantment> [<integer=1>]: executable by: players usage: &c/enchantuj <typ zaklęcia> [<poziom>] trigger: if player's tool is air: send "&cNie posiadasz jakiegokolwiek przedmiotu w ręce." to player stop if arg-2 is not between 1 and 255: send "&cPoziom zaklęcia musi być liczbą całkowitą między 1 a 255." to player stop enchant player's tool with "%arg-1% %arg-2%" parsed as enchantment type send "&aPomyślnie nałożono nowe zaklęcie na przedmiot trzymany w ręce." to player Pozdrawiam.
-
Proszę uprzejmie. Skrypt nie był testowany. options: stickItem: stick with custom model data 7 stickCooldown: 2 minutes function translateTimespan(t: timespan) :: text: set {_tText} to "%{_t}%" replace all " and" in {_tText} with "," replace all "minutes" and "minute" in {_tText} with "m" replace all "seconds" and "second" in {_tText} with "s" return {_tText} command /givepatyk: executable by: players trigger: if player is not op: send "&cNie posiadasz uprawnień do wykonania tej komendy." to player stop give player {@stickItem} on damage of player: attacker is a player attacker's tool is {@stick} if {stickEffect::cooldown::%attacker%} is set: set {_timeElapsed} to difference between {stickEffect::cooldown::%attacker%} and now {_timeElapsed} is less than {@stickCooldown} set {_timeLeft} to difference between {_timeElapsed} and {@stickCooldown} send "&fOdczekaj jeszcze &6%translateTimespan({_timeLeft})%&f." to attacker stop set {stickEffect::cooldown::%attacker%} to now apply potion of blindness of tier 255 to victim for 4 seconds apply potion of slowness of tier 255 to victim for 4 seconds send title "&6Ogłuszono!" to victim Pozdrawiam.
