-
Ilość zawartości
11014 -
Rejestracja
-
Ostatnia wizyta
-
Wygrane w rankingu
231
Treść opublikowana przez Kormic
-
Niestety Skript (a możliwe, że również Bukkit API) ma problemy z usuwaniem konkretnego przedmiotu z inventory. Z tego co widzę to ten papier jednak jest narzędziem gracza, więc możesz usunąć jedną zdrapkę poprzez operowanie na 'player's tool' w następujący sposób: set player's tool to (item amount of player's tool - 1) of player's tool
-
Nie zrobiłeś tego tak, jak powiedziałem. Musisz zapętlić wszystkich graczy i użyć loop-player.
-
Cały czas nie, ale możesz to zrobić w periodicalu (np. every 5 seconds), w którym zapętlasz wszystkich graczy i operujesz na loop-playerze.
-
Możesz najpierw sprawdzać czy event-block to tory, a później sprawdzać czy event-block to nie jest 'powered rail'.
-
Możesz to rozwiązać na dwa sposoby. Albo na końcu każdego kodu od nagrody dajesz 'stop', albo każdy kolejny warunek będzie 'else if' tylko poza pierwszym.
-
Źle napisałeś 'integer'.
-
'parsed as integer' jak już. Zawsze mimo wszystko lepiej parse'ować na 'number'.
-
Dlatego nie działa, gdyż nie parse'ujesz wyciągniętego tekstu z lore na liczbę. Należy pamiętać, że co prawda to jest liczba, ale jednocześnie jest tekstem.
-
Musisz ustawić wartość zmiennej globalnej do jakiejś zmiennej lokalnej, a następnie dodajesz do tej zmiennej lokalnej tyle czasu, ile wynosi cooldown. Następnie sprawdzasz różnicę między czasem w zmiennej lokalnej a czasem w zmiennej globalnej. Tym samym otrzymujesz ile czasu pozostało do odczekania.
-
Nie sprawdzaj czym jest loop-item tylko sprawdź jego nazwę...
-
Przeczytaj dokładnie koniec mojej pierwszej odpowiedzi.
-
Możesz sprawdzić samą nazwę loop-item lub jeżeli ci to nie wystarcza, sprawdzić najpierw czy 'type of loop-item' to 'paper', a następnie sprawdzić 'name of loop-item'.
-
Skrypt nie jest w żaden sposób zachwycający, jedyna jego zaleta to sekcja konfiguracyjna. Jego minusem jest to, że pozwala jedynie na przydzielenie pięciu przedmiotów, a powinien na nieograniczoną ilość. Mógłbyś to osiągnąć za pomocą listy YAML, przy czym należy pamiętać, aby ją po załadowaniu skryptu zapisać do listy zmiennych ze Skripta, gdyż ciągłe odczytywanie listy z pliku nie będzie lekką operacją (szczególnie gdy mówimy o dodatkach do YAMLa innych niż skript-yaml).
-
Blokada stawiania klockow i niszczenia na mapie
Kormic odpowiedział(a) na LarwaToKox temat w Skrypty
Na co ten skrypt miałby się komukolwiek przydać? -
'on place of sign' jest wywoływany przy postawieniu tabliczki, natomiast 'on sign change' aktywuje się wtedy, gdy skończymy ustawiać jej linijki, jej treść. W pierwszym przypadku nie przechwycisz linijek, gdyż nawet nie są ustawione, natomiast w drugim przypadku nie ma najmniejszego problemu.
-
Czyli w twoim kodzie pierwszy warunek nie przechodzi i to jest przyczyną niedziałającego skryptu. Upewnij się, że jego nazwa nie jest umieszczona w 'display name' tylko w 'name'. Te pierwsze reprezentuje nazwę, która jest zawsze widoczna niezależnie od tego czy patrzymy na entity, czy też nie. Natomiast te drugie to jest jak w przypadku name tagów, widoczne jedynie przy najechaniu na entity. Nie muszę chyba mówić o samej zgodności nazwy.
-
Dobra, już widzę w czym leży błąd. Użyłeś złego eventu, gdyż powinieneś użyć eventu 'on sign change' zamiast 'on place of sign'.
-
Zobacz czy wiadomość zostanie wysłana: on left click: send "Test" to player
-
Co się dzieje przy klikaniu lewym przyciskiem myszy na Hazardzistę? Nie do końca identyczny, gdyż tutaj używasz eventu 'on right click'.
-
1. Użyj %location of event-block% w pierwszym przypadku. 2. Nie używaj wielkich liter w kodzie. 3. W drugim evencie użyj %location of clicked block%.
-
Po prostu użyj tej linijki w kodzie po tych warunkach, ot co.
-
Musisz wyciągnąć tę wartość z tekstu za pomocą: https://skriptlang.github.io/Skript/expressions.html#ExprSubstring Czyli powinno to wyglądać +/- tak: set {_l} to uncoloured line 1 of player's tool's lore set {_kasa} to subtext of {_l} from character x to (length of {_l} - 3) Za 'x' musisz podstawić indeks litery (którą jest literą w tym tekście). Już ułatwiłem ci znacznie robotę i liczysz znaki (spacja też się liczy!) od lewej aż dojdziesz do procentu przy czym ignorujesz kolory (czyli '&' i liczbę/literę przy kolorze). Na koniec przy dawaniu graczowi tej kasy musisz pamiętać, aby parse'ować ją na typ 'number' (lub możesz też i 'integer' jeżeli jest to liczba całkowita).
-
Zobacz, że po drugim warunku nie zrobiłeś wcięcia (tabulacji) w kodzie. 'execute console command' służy jak sama nazwa wskazuje, do wykonywania komend. Nie służy do wykonywania linijek ze Skripta.
-
Pokażę ci na przykładzie jednej rangi, a resztę sobie dorzucisz. if arg-1 is "kupvip": if player's groups contains "twoja_ranga_VIP": send "&cJuż zakupiłeś rangę VIP!" to player stop if {coins.%player%} is less than 10.00: send "" to player send "&c&lBŁAD: &4Nie posiadasz wystarczajaco pieniedzy !" to player send "" to player else: execute console command "pex user %player% group set Vip" remove 10.00 from {coins.%player%} send "" to player send "&8» &cZakupiles Rangę &8[&6VIP&8] &7!" to player send "&8» &7Z konta odjeto &610.00 &7zł" to player send "" to player Czyli znaczenie ma fragment między linijkami 2. i 4. Mimo wszystko skrypt brzydko wygląda ze względu na: użycie zbugowanego 'format slot', zalecam użyć 'set slot' pochodzący ze Skripta zły sposób nazewnictwa zmiennych, który uniemożliwia łatwe manipulowanie nimi (zalecam zmienić na listy zmiennych): # Zamiast używania zwykłych zmiennych: {coins.%player%} # Zalecam używac list zmiennych: {coins::%player%} Pozwalają na o wiele łatwiejsze zarządzanie wieloma zmiennymi: # Możesz wyczyścić coinsy wszystkim graczom: clear {coins::*} # Możesz sprawdzić ile wszyscy gracze posiadają coinsów (czyli zapętlić i wykonywać na nich złożone operacje): loop {coins::*}: send "%loop-index% posiada %loop-value% coinsów!" # Możesz sprawdzić rozmiar listy (ilu graczy posiada jakiekolwiek coinsy, 0.00 również będzie się zaliczało, liczy się jedynie, że informacja jest zapisana) send "%size of {coins::*}% graczy posiada coinsy!" wielokrotne wysyłanie pustych linijek pod sobą, a można by to zrobić o wiele prościej: send "" and "" and ""
