-
Ilość zawartości
60 -
Rejestracja
-
Ostatnia wizyta
Treść opublikowana przez xMarcinos
-
Możliwe, że masz ten błąd z powodu wersji Skript nie pasującej do wersji Minecraft lub z powodu, że uruchamiasz serwer na Javie 7, nie 8, jeżeli tak to zaktualizuj do 8. Najbardziej stawiałbym na to drugie (zaktualizować Javę do wersji 8).
-
W swoim kodzie komendy wszędzie używasz "%player%", co wskazuje na gracza, który wykonuje komendę. W przypadku make console execute "zestaw legendarny %player%" tym "graczem" jest konsola, która uruchamia komendę. Konsola nie może przecież dostać przedmiotów, a więc give diamond pickaxe to player nie może działać. Wymaganym jest tu stworzenie drugiego argumentu do komendy, który odpowiadałby za gracza, który ma dostać przedmiot (jeżeli ktoś wykonywałby komendę z poziomu gracza, nie musiałby tego wpisywać, to także zaimplementowałem w poniższym kodzie). A więc command /zestaw [<text>]: musisz zamienić na command /zestaw [<text>] [<offline player>]: (offline player dlatego, że przy player wyrzucałoby błędy, w przypadku, gdybyśmy nie wpisali gracza, lub gracza nie byłoby na serwerze) A więc kod komendy powinien wyglądać tak: command /zestaw [<text>] [<offline player>]: trigger: if sender is console: if arg 2 is set: if arg 2 is online: set {_gracz} to arg 2 else: set {_gracz} to player if arg 1 is "Gracz": give stone pickaxe to {_gracz} if arg 1 is "Legendarny": if {_gracz} has permission "skrypt.zestaw.legendarny": if {czas::legendarny::%{_gracz}%} is true: give diamond pickaxe to {_gracz} set {czas::legendarny::%{_gracz}%} to false wait 1 ticks set {czas::legendarny::%{_gracz}%} to true send "&c>> &7twoj zestaw: &9Legendarny &7odnowil sie!" to {_gracz} else: send "&cCzas oczekiwania na kit nie minal!" to {_gracz} else: send "&cNie posiadasz uprawnien" to {_gracz} Wystarczyło zrobić zmienną {_gracz}, która definiuje, kto ma dostać przedmioty, być poinformowanym itp. Jeżeli wykonawcą komendy jest konsola i argument gracza spełnia wymogi (argument jest podany, a gracz jest online), wtedy zmienna ustawia się na gracza podanego w argumencie. Jeżeli wykonawcą komendy jest gracz zmienna ustawia się na właśnie niego. A poza tym, zrobiłeś literówkę przy "skrypt.zestaw.legendarny", napisałeś "skypt.zestaw.legendarny", w powyższym kodzie jest poprawione. Jeżeli chcesz, mogę Ci pomóc w zrobieniu lepszego systemu czasowego brania zestawów, napisz do mnie. Z "wait" po restarcie serwera gracz nie będzie mógł już wcale brać zestawu. Mam nadzieję, że wszystko dobrze wytłumaczyłem, za błędy przepraszam :-P, :D.
-
command /daje [<offline player>]: permission: daj.przedmiot permission message: &Nie masz permisji do tej komendy! trigger: if arg 1 is not set: send "&7Uzycie tej komendy: /daje <gracz>" stop if arg 1 is not online: send "&cGracz, ktorego podajesz musi byc online." stop give player's tool to arg 1 send "&aDales %arg 1% przedmiot z twojej reki." broadcast "&eGracz %arg 1% dostal tajemniczy przedmiot!" Takie coś powinno działać. Jeżeli chcesz, aby przedmiot z ręki gracza dającego się usuwał to użyj tego kodu: command /daje [<offline player>]: permission: daj.przedmiot permission message: &Nie masz permisji do tej komendy! trigger: if arg 1 is not set: send "&7Uzycie tej komendy: /daje <gracz>" stop if arg 1 is not online: send "&cGracz, ktorego podajesz musi byc online." stop give player's tool to arg 1 set player's tool to air send "&aDales %arg 1% przedmiot z twojej reki." broadcast "&eGracz %arg 1% dostal tajemniczy przedmiot!" Mam nadzieję, że nie ma pomyłek.
-
W skrypcie na sklep nie pokazuje mi itemów w gui
xMarcinos odpowiedział(a) na Revero pytanie w Pytania i problemy
Spróbuj dać większy odstęp czasowy. Nie "wait 1 tick", a np. "wait 4 ticks". Może będzie działać, bo czasami menu wcale się jeszcze nie załaduje, a kod już próbuje wprowadzić do niego przedmioty. Jeżeli nie będzie działać, to w takim razie nie wiem w czym jest problem. -
blokada przemieszczania się mobów
xMarcinos odpowiedział(a) na AfterProYT pytanie w Pytania i problemy
Spoko, ja jakby co nie mam nic do Ciebie za to :-P. Każdy może się pomylić. -
blokada przemieszczania się mobów
xMarcinos odpowiedział(a) na AfterProYT pytanie w Pytania i problemy
Nie wiem czy te "entitie's" będzie działać. Końcówka -'s oznacza, że chcemy napisać np. że coś jest czyjeś (przykład: "James's pencil." - "Ołówek Jamesa."). Końcówka -s (bez apostrofu, np. "entities") oznacza, że czegoś (w tym przypadku "entity") jest wiele. W podsumowaniu: np. "cows" oznacza "krowy", a np. "cow's", w zdaniu "cow's milk" oznacza mleko krowy (chodzi o to, że mleko jest krowy). Mam nadzieję, że dobrze wytłumaczyłem. -
Zastosowanie to już zależy od Ciebie (ale szanuję opinię). Robiąc różne skrypty tego typu można fajnie urozmaicić swój serwer (różnymi rzeczami, których nie ma normalnie w grze).
-
Jeżeli chodzi Ci o efekt dany przez komendę /give (oryginalną z gry) dla przedmiotu poprzez DataTag, to taki atrybut nie działa jako lore. Jest on przypisany do przedmiotu i gra tylko wyświetla, ale nie działa on jako lore. Jeżeli chodzi Ci o sprawdzenie, czy w opisie przedmiotu znajduje się tekst "+5 sila" to takie coś powinno działać: if 1st line of lore of {_jakisPrzedmiot} contains "+5 sila": # cos tam zrób Nie dawałem, żeby sprawdzało każdą linijkę opisu przedmiotu (nie wiem, czy to w ogóle możliwe). I tak chyba przy takim czymś '1st line of lore of {_przedmiot}' wyrzuca nie tylko pierwszą linijkę opisu, ale chyba wszystkie. Natomiast przy 'set' wszystko raczej powinno działać dobrze z tym '1st,2nd,3rd,4th... line of of lore of ...'. Możesz się także zobaczyć kod mojego skryptu na kamery - link, tam użyłem opisu przedmiotu, z którego czytane są koordynaty. Przepraszam za pomyłki, o ile takowe są.
-
@Cubixor te błędy głównie wynikają z tego że w jednym miejscu przed tekstem jest "<tab>", a w drugim spacje.
-
on region enter: wait 1 tick set {region.%player%} to "%region%" on region leave: clear {region.%player%} on chat: cancel event if {region.%sender%} is not set: broadcast "&3[Global] &7%player's displayname%&7> &f%message%" else: loop all players: if {region.%loop-player%} is {region.%sender%}: set {_wyrazy::*} to {region.%sender%} split by " " loop {_wyrazy::*}: set {_duzaLitera} to first 1 character of loop-value set {_duzaL2} to convert string {_duzaLitera} to uppercase set {_reszta} to subtext of loop-value from characters 2 to (length of loop-value) add "%{_duzaL2}%%{_reszta}%" to {_wyrazy2::*} set {_pelnanazwa} to join {_wyrazy2::*} with " " set {_nazwagracza} to player's displayname replace all "[%world of player%]" in {_nazwagracza} with "" send "&3[%{_pelnanazwa}%] &7%{_nazwagracza}%&7> &f%message%" to loop-player Takie coś powinno wyświetlać wszystkie wyrazy z wielką literą na początku. Nie testowałem, więc nie wiem czy działa, ale powinno. Napisałem także, aby w wyświetlanej nazwie gracza w wiadomości "[world]" było zastępowane "" (niczym, usuwane), więc teraz chyba wszystko powinno działać tak jak chciałeś.
-
on region enter: wait 1 tick set {region.%player%} to region on region leave: clear {region.%player%} command /sprawdz: executable by: player trigger: if {region.%player%} is "test": send "123" else: send "nope" Te "player is in region" lub "region at player" chyba nie działa dobrze. Takie coś powinno działać.
-
Do add nie potrzeba SkQuery czy innych dodatków, natomiast lepszym rozwiązaniem na dawanie przedmiotów do ekwipunku będzie give.
-
@wiktorelex to tak nie działa. Nie dajesz "stop" w on join, jeżeli chcesz, żeby osoba nie mogła wejść. Trzeba dać cancel event, ale żeby to anulowało event wchodzenia osoby na serwer, to musisz wyrzucić daną osobę w evencie on connect. on connect: if {connections} is not set: set {connections} to 0 if ({connections} + 1) > 5: kick player due to "&c&lHej! &cW ciagu sekundy nie moze wejsc wiecej niz 5 graczy! Zaczekaj chwilke i wejdz ponownie!" else: add 1 to {connections} every 1 second: set {connections} to 0 @Scroll ツ, raczej taki skrypt nie obroni Ciebie przed większym atakiem botów, ale zawsze coś .
-
options: # Czas w sekundach \/ czas: 30 command /haste [<player>]: trigger: if arg 1 is not set: send "&cMusisz podac nick gracza." stop else: apply haste 2 to arg 1 for {@czas} seconds Takie coś powinno działać. W poprzednich na końcu "trigger" nie było dwukropka, i tabulatory były pomieszane ze spacjami. (Edytowane) To u @_kuba300402_ może by działało.
-
W aktualizacji (o ile taka będzie) mógłbyś dodać edytowanie zawartości menu dla danej rangi i możliwość dodawania nowych rang (a przy tym menu do nich) samemu. (np. jeżeli ktoś ma rangę załóżmy VIP+ na serwerze, to nie ma dla takowej rangi menu, jeżeli by była możliwość samodzielnego ustawiania - administrator bez problemu by sobie dodał)
-
Dobrze, że przerobiłeś sobie tak jak chciałeś. Zapewne używasz pluginu Multiverse i to właśnie on powoduje wyświetlanie się nazwy świata. Musisz zmienić to w konfiguracji pluginu Multiverse. Wchodzisz w plik konfiguracyjny Multiverse i zmieniasz prefixchat: 'true' na prefixchat: 'false' . A z tą spacją zamiast _ i dużymi literami postaram się pomóc za jakiś czas. Teraz nie mam już czasu, żeby dalej pisać. (Zedytuję ten post) Pomyłki mogą być, ale nie powinno. Jakby nie działało - przepraszam.
-
on region enter: wait 1 tick set {region.%player%} to "%region%" on region leave: clear {region.%player%} on chat: cancel event if {region.%sender%} is not set: broadcast "&3[Czat globalny] &7%player's prefix%%player's displayname%%player's suffix% &7> &f%message%" else: loop all players: if {region.%loop-player%} is {region.%sender%}: set {_duzaLitera} to first 1 character of {region.%sender%} set {_duza2} to convert string {_duzaLitera} to uppercase set {_reszta} to subtext of {region.%sender%} from characters 2 to (length of {region.%sender%}) send "&3[Czat terenu %{_duza2}%%{_reszta}%] &7%player's prefix%%player's displayname%%player's suffix% &7> &f%message%" to loop-player Takie coś powinno spełniać twoje wymagania. Potrzebujesz do tego dodatku SkUtilities. (kod "convert string {_duzaLitera} to uppercase" tego wymaga) Żadna nazwa świata nie powinna się pokazywać. Powinno pokazywać tzw. "prefix", tzw. "suffix" i nazwę gracza, nawet taką którą nadało się komendą /nick. Nazwa regionu powinna wyświetlać się z dużej litery. Nie testowane do końca, mogą być błędy, w razie takich, pisz co wyskoczyło Ci na czacie.
-
options: startowaRanga: default command /nowaedycja: permission: nowa.edycja permission message: &cNie masz odpowiednich permisji, aby uzyc tej komendy! executable by: player trigger: loop {graczeKiedykolwiek::*}: if loop-value is not op: execute console command "pex user %loop-value% group set {@startowaRanga}" broadcast "&7&l> &2&lWystartowala nowa edycja serwera! Zyczymy milej gry!" on join: if {graczeKiedykolwiek::*} contains player: stop else: add player to {graczeKiedykolwiek::*} on first join: if {graczeKiedykolwiek::*} contains player: stop else: add player to {graczeKiedykolwiek::*} Takie coś powinno działać na wszystkich graczy będących kiedykolwiek na serwerze. P.S. poprawiłem tę opcję {@startowaRanga}, bo można tam było wpisać inną rangę, ale i tak zawsze ranga gracza ustawiała się na "default". Teraz powinno to działać dobrze. Przepraszam za pomyłki. P.S.2 Komenda /nowaedycja wymaga permisji "nowa.edycja".
- 11 odpowiedzi
-
Wydaje mi się, że takie coś powinno działać: on region enter: wait 1 tick set {region.%player%} to "%region%" on region leave: clear {region.%player%} on chat: cancel event if {region.%sender%} is not set: broadcast "&3[Czat globalny] &7%sender% > &f%message%" else: loop all players: if {region.%loop-player%} is {region.%sender%}: send "&3[Czat terenu %{region.%sender%}%] &7%sender% > &f%message%" to loop-player Nie wiem czy takie coś będzie działać, próbowałem przetestować, ale u mnie Skript był niekompatybilny z WorldGuardem (lub WorldEditem), więc nie przetestowałem tego do końca, ale jeżeli masz dobrą wersję WorldGuarda (lub WorldEdita) i Skripta wszystko powinno śmigać. Nie używałem tutaj "region at player" czy coś takiego tylko przy wejściu do regionu, zmienna gracza ustawia się na nazwę regionu, do którego wchodzi, a przy wyjściu czyści się. Te całe "region at" chyba jest po prostu popsute. Mogą być pomyłki, za takie przepraszam :/, :-P. (Edytowane) Jeszcze coś, raczej nie możemy zrobić "if %region at player% is set:" (np.) tylko musimy zrobić "if region at player is set:". Te procenty na końcu i na początku dajemy raczej tylko, gdy wyrażenie jest umieszczone w cudzysłowiach. Tyczy się to także innych wyrażeń.
-
Jak już, to chyba powinno to tak wyglądać (do końca nie wiem :/): on walk on grass path: apply speed 2 to player for 30 seconds Ale dla mnie te całe "on walk" za bardzo nie działało nawet jak dawałem np. "on walk on glass" czy coś takiego, to nie działało. Ja bym proponował takie coś zrobić. every 1 second: loop all players: if block under loop-player is grass path: apply speed 2 to player for 1 second Tak zrobiłem, żeby jeżeli gracz chodzi po ścieżce dawało szybkość, a jak zejdzie, szybkość powinna się skończyć zaraz. Te "for 1 second" możesz zmienić na jaki tam chcesz czas np."for 30 seconds", ale pamiętaj, że wtedy będzie się dawało dla gracza który jest na ścieżce co 1 sekundę szybkość 2 na 30 sekund. Nie testowane, ale powinno działać. Za błędy przepraszam.
-
Above znaczy nad. -1 above zapewne znaczy, że Skript idzie 1 blok wyżej, a potem (-1) czyli jeden blok niżej (1 + (-1) = 0) wychodzi ten sam blok co na początku. Zamiast "-1 above" (bo to nie ma raczej sensu) trzeba użyć "under". I jeszcze jedno: jeżeli zapisujemy blok do zmiennej to zapisuje się typ bloku, koordynaty i możliwe, że jeszcze coś. Jak napiszemy "set {blok} to event-block", a event-blockiem jest (np.) grass block to raczej nie zapiszę nam się w zmiennej "grass block", tylko coś takiego "grass block, koordynatX, koordynatY, koordynatZ...". Aby pobrać typ bloku i zapisać go do zmiennej trzeba użyć "type of event-block". (W przypadku "type of event-block", nie zapisują się np. przedmioty w skrzyni [jeżeli event-blockiem jest skrzynia], tylko chyba raczej zapisuje się ID bloku i data value) Chociaż w tym przypadku, jak było "%event-block%", a nie event-block bez cudzysłowiów, to do zmiennej zapisze się typ bloku. ;-P Kod powinien wyglądać chyba tak: (nie testowałem, ale podejrzewam że działa) on place: if block is any stone: set {zmienna.%player%.%coordinates of (block under event-block)%} to type of (block under event-block) set block under event-block to bedrock on break: if block is any stone: if {zmienna.%player%.%coordinates of (block under event-block)%} is set: set block under event-block to {zmienna.%player%.%coordinates of (block under event-block)%} clear {zmienna.%player%.%coordinates of (block under event-block)%} (W stosunku do kodu z posta wiktorelex) Pojawia się kamień, dlatego że: 1. Stawiasz blok (kamień) i zapisuje się do zmiennej ten blok (kamień) 2. Pod kamieniem stawia się skała macierzysta. 3. Wykopujesz blok i blok pod wykopanym klockiem zamienia się w blok z zapisanej zmiennej (a jak w punkcie 1 napisałem, w zmiennej było zapisane "stone"), czyli kamień. Przepraszam za pomyłki. O ile takie są :-).
-
Nazwa skryptu: Kamery Link do prezentacji:
-
Nie wiem, czy dokładnie o to chodziło. Możesz popróbować z różnymi efektami z dodatków np. SkRayFall, SkQuery itd., ale ja zawsze miałem z tym problem i mi to nie działało. Podsyłam ci wersję z użyciem komendy /playsound. Pod wersję 1.8.x (wersję serwera): command /dzwiek: trigger: execute console command "playsound mob.enderdragon.death %player% %x-coord of player% %y-coord of player% %z-coord of player%" send "&9Odtworzono dzwiek!" Pod wersję 1.9+ (wersję serwera): command /dzwiek: trigger: execute console command "playsound mob.enderdragon.death block %player% %x-coord of player% %y-coord of player% %z-coord of player%" send "&9Odtworzono dzwiek!" W linijce command /dzwiek: możesz zmienić "/dzwiek" na inna nazwę komendy (np. "/smok"). W linijce send "&9Odtworzono dzwiek!" możesz zmienić "&9Odtworzono dzwiek!" na wiadomość, jaką chcesz żeby się wyświetliła po wpisaniu komendy. Nie testowane, mogą być pomyłki, ale powinno działać. (Edytowane 18.02) Nie wiem, czy odgłos będzie się dla wszystkich odtwarzał w miejscu gdzie jest gracz, czy będzie się odtwarzał tylko dla danego gracza.
