-
Ilość zawartości
11014 -
Rejestracja
-
Ostatnia wizyta
-
Wygrane w rankingu
231
Treść opublikowana przez Kormic
-
Składnia do wpisywania czegoś do danej linijki w konkretnym pliku wygląda tak: write %string% at line %numbers% to file %-string% Więc popraw to sobie i zadziała. Jeżeli nie będzie w stanie dodać, tak jak mówiłem, musisz parse'ować zmienną {_wheatnum} na 'integer'.
-
Proszę. command /enchant [<enchantment type>]: trigger: if player's tool is air: send "&cMusisz trzymać jakiś przedmiot w ręce!" to player stop enchant player's tool with arg 1 send "&aPomyślnie nałożono enchant &6%arg 1% &ana przedmiot w twojej ręce!" to player
-
1. Nie wiem czy gdzieś ustawiłeś tę zmienną {p.points}, zakładam, że tak. 2. Zauważ, że próbujesz odejmować 'arg 2' od tej zmiennej, tymczasem 'arg 2' jest tekstem. Musi to wyglądać w ten sposób: add (arg 2 parsed as number) to {p.points} Tak samo sprawa wygląda z odejmowaniem. 3. Wspomnę jeszcze o jednej rzeczy. send "&c>> &7Do twojego konta dodano &4%arg 2%" Mam na myśli dokładniej fragment "do twojego konta". Jeżeli każdy gracz ma mieć własne konto, to raczej używa się zagnieżdżanych zmiennych (z ang. "nest variables"). Są to zmienne, której nazwy zawierają wartości danych wyrażeń. Przykładowo: {kasa::%player%} # Tutaj %player% jest tą zagnieżdżaną zmienną
-
Dobra, inaczej. Co próbujesz osiągnąć tym skryptem? Chcesz ustawić linijkę w danym pliku?
-
W samym Skript'cie można to zrobić, wymagana wersja 2.2-dev31+. every 1 minute: if (now formatted as "HH") parsed as integer is between 14 and 21: set {tnt1} to "&aWlaczone" else: set {tnt1} to "&cWylaczone" Jak widzisz, parseowanie godziny na liczbę znacznie upraszcza robotę.
-
1. Jakiego dodatku używasz do przechwytywania wartości z innych plików? 2. Czy próbowałeś wysłać na czacie zmienną {_wheatnum}? Jeżeli zwróci liczbę, znaczy, że musisz ją najprawdopodobniej parse'ować na liczbę, gdyż w obecnej postaci jest tekstem. %{_x} + {_wheatnum} parsed as number%
-
Proszę, oto skrypt. function translateTimespan(t: timespan) :: text: set {_t} to "%{_t}%" replace all " days" and " day" with "D" in {_t} replace all " hours" and " hour" with "H" in {_t} replace all " minutes" and " minute" with "M" in {_t} replace all " seconds" and " second" with "" in {_t} replace all "," and "and" with "" in {_t} return "%first (length of {_t} - 2) characters of {_t}%" on skript start: set network variable {bedWars::czasStartu} to now on skript stop: clear network variable {bedWars::czasStartu} command /serwery: trigger: send "&8&m------------&7[ &6Status &7]&8&m------------" to sender if network variable {lobby::czasStartu} is set: send "&bLobby &eONLINE TIMEUP&7: &6%translateTimespan(difference between network variable {lobby::czasStartu} and now)%" to sender else: send "&bLobby &eONLINE TIMEUP&7: &cNieaktywny" to sender if network variable {bedWars::czasStartu} is set: send "&bBedWars &eONLINE TIMEUP&7: &6%translateTimespan(difference between network variable {bedWars::czasStartu} and now)%" to sender else: send "&bBedwars &eONLINE TIMEUP&7: &cNieaktywny" to sender if network variable {survival::czasStartu} is set: send "&bSurvival &eONLINE TIMEUP&7: &6%translateTimespan(difference between network variable {survival::czasStartu} and now)%" to sender else: send "&bSurvival &eONLINE TIMEUP&7: &cNieaktywny" to sender if network variable {skyBlock::czasStartu} is set: send "&bSkyBlock &eONLINE TIMEUP&7: &6%translateTimespan(difference between network variable {skyBlock::czasStartu} and now)%" to sender else: send "&bSkyblock &eONLINE TIMEUP&7: &cNieaktywny" to sender send "&8&m------------&7[ &6Status &7]&8&m------------" to sender Wymagany dodatek Skungee. Co do samego skryptu, wrzucasz go na każdy serwer i tutaj uwaga, w zależności od serwera zmieniasz nazwy zmiennych w linijkach 11 i 14. Tutaj dałem przykład co do skryptu na BedWarsy. A skąd wziąć poprawną nazwę? Wtedy patrzysz do linijek 19, 23, 27 oraz 31. W nich masz podane nazwy zmiennych. Czyli jeżeli wrzucasz skrypt na Survival, zmieniasz linijki 11 i 14 na to: on server start: set network variable {survival::czasStartu} to now on server stop: clear network variable {survival::czasStartu} Mam nadzieję, że to jest zrozumiałe. Jeszcze jedno, możliwe, że przy podawaniu czasu utnie go nieco lub będzie coś niepożądanego. Jeżeli będzie coś niepożądanego na końcu podanego czasu, w linijce nr 8 masz liczbę 2 i ją zmieniasz przykładowo na 3, żeby usunęło jedną literkę z końca. Natomiast jeżeli jest w drugą stronę (czyli coś ucięło, coś zniknęło), to zmniejszasz tę dwójkę powiedzmy do 1 i tyle. EDIT: Zmieniłem parę rzeczy w skrypcie.
-
Tak jak kolega wyżej powiedział, problem tkwi w tym, że nie podałeś ścieżki do głównej klasy. Linijka nr 3 w plugin.yml powinna wyglądać tak: main: Paczka.bukkit.org.Main Co do samej nazwy package'a mam dwa zastrzeżenia: 1. Nazwa package'a zawiera jedynie małe litery. Nie jest to obowiązkowe, ale zalecane, gdyż pozwala na uniknięcie konfliktów chociażby z nazwami klas. 2. Package powinien mieć odwrócony adres twojej domeny. Jeżeli takowej nie posiadasz, wzór wygląda następująco: # Wzór: me.[nick].[nazwa projektu] # Przykład: me.deepest.onenable Należy pamiętać o tym, aby w dwóch różnych projektach nazwy package'y nie były takie same, gdyż może dojść do nieprzewidywanego konfliktu i przy tym wywali zapewne exceptiona. Jeszcze co do samego kodu, nad metodą onEnable() brakuje '@Override'. EDIT: Mam nadzieję, że nie popełniłeś błędu na poziomie złej wersji kompilatora czy też braku plugin.yml w pliku .jar.
-
Założyłeś wątek w dziale Skript, więc raczej jasne, że mam na myśli skrypt... Wpisujesz to w kod do wnętrza pętli zapętlającej tę listę, w której masz bloki. W tym celu właśnie będzie służyć ta pętla. Podejrzewam, że mimo wszystko nie zrozumiesz co mam na myśli, więc dam prosty kod dla zrozumienia: on join: if minecraft version of player is "1.8": loop {listaBlokow::zamiana::*}: make player see loop-value as stone Warunek w drugiej linijce pochodzi z dodatku TuSKe. Mimo wszystko nie korzystałbym z tego, a poszukałbym jakiejś alternatywy.
-
Rozwiązanie leży w pierwszym zdaniu mojej wypowiedzi. Wszystkie bloki wymagane do wymiany dodajesz do listy. Gdy gracz wchodzi na serwer, sprawdzasz czy jego wersja jest między 1.8.x a 1.11.x. Jeżeli tak, zapętlasz te bloki i ustawiasz fałszywe za pomocą efektu: make player see loop-value as [blok] I tyle.
-
Na początek musiałbyś dodać te bloki do jakiejś listy. Następnie przy dołączeniu gracza na serwer musiałbyś sprawdzać czy jego wersja to 1.8, jeśli tak, to podmieniasz. Mimo wszystko nie zalecałbym takich dziwnych rozwiązań. Chcesz mieć bloki 1.12, użyj bloków 1.12. Ci na starszych wersjach będą musieli sobie radzić. Ludzie głównie grają na starszych wersjach ze względu na duże zmiany w wersjach 1.9+ jeżeli chodzi o system PVP. Jeśli zależy ci na nich, pokaż tym na starszych wersjach, że masz chociażby plugin OldCombatMechanics i nie muszą się martwić o to, że będą musieli walczyć na dupiatym systemie walki. Ewentualnie pokaż im inne zalety przejścia na nowsze wersje.
-
Proszę. Zablokowałem to, co mogłoby powodować bugowanie się (klikanie z shiftem zostało zablokowane, oprócz środkowego przycisku myszy + Shift), mimo wszystko wymaga to testowania. Na górze skryptu ustawiasz sobie ilość rzędów w GUI. options: ilosc-rzedow: 3 command /zg: trigger: set {_gui} to chest inventory with 3 rows named "&6&lWspólny schowek" loop (9 * {@ilosc-rzedow}) times: set slot loop-number - 1 of {_gui} to {zg::slot::%loop-number - 1%} add player to {zg::otwarteGUI::*} open {_gui} to player on inventory close: if name of player's current inventory is not "&6&lWspólny schowek": stop remove player from {zg::otwarteGUI::*} on inventory click: if name of player's current inventory is not "&6&lWspólny schowek": stop if clicked inventory is player's inventory: stop if click type is left mouse button with shift or right mouse button with shift: cancel event stop set {zg::slot::%clicked slot%} to slot (clicked slot) of player's current inventory loop {zg::otwarteGUI::*}: if loop-value is event-player: stop set slot (clicked slot) of loop-value's current inventory to {zg::slot::%clicked slot%}
-
Zmienienie hitów? Co masz na myśli?
-
Wyrażenie 'online players' (a właściwie 'online players count')występuje w event'cie 'on server list ping'. Ty masz raczej na myśli po prostu przechwycenie liczby graczy online. Ponieważ 'all players' jest listą, możesz użyć wyrażenia 'size of all players'. Również możesz po prostu użyć 'number of all players'.
-
1. Wiesz czym jest wyszukiwarka Google? Przykładów formatowania GUI przy pomocy Skripta jest tyle co grzybów po deszczu. 2. To jest sekcja "Pytania i problemy". Osoby, które tutaj proszą o pomoc, zwykle są w stanie zadbać o siebie w stopniu przynajmniej podstawowym. Ehh... dam ci przykład, abyś się nie szarpał z tym skryptem przez cały miesiąc. # tworzenie nowej komendy "/test" otwierającej nową skrzynkę command /test: trigger: # tworzenie nowej skrzynki open chest inventory with 3 rows named "&6&lTEST" to player # ustawianie slotu nr 13 set slot 13 of player's current inventory to stone named "&aTest" # event aktywujący się przy każdorazowym kliknięciu ekwipunku on inventory click: # sprawdzanie nazwy skrzynki if name of player's current inventory is "&6&lTEST": # sprawdzanie czy gracz nie kliknął swojego ekwipunku if clicked inventory is not player's inventory: # wycofywanie eventu (blokuje wyciąganie itemów z tej skrzynki) cancel event # akcja gdy gracz kliknie na slot nr 13 if clicked slot is 13: # zamykanie obecnie otwartego ekwipunku gracza (w tym przypadku będzie to ta skrzynka) close player's inventory # wiadomość zwrotna send "&aTo działa!" to player Dodałem komentarze (wszystko po #), abyś mógł skrypt dobrze zrozumieć oraz dodałem przerwy w skrypcie dla większej czytelności.
-
Czytanie ze zrozumieniem chyba nie jest twoją mocną stroną, co?
-
Wystarczy chwilę poszukać... https://www.spigotmc.org/resources/combatlogx.31689/
-
Skript nie pozwala na coś takiego, gdyż nie posiada odpowiednich do tego eventów. Istnieją więc trzy wyjścia: 1. Użycie pluginu ColoredAnvils. 2. Skorzystanie z TuSKe i jego eventu 'on anvil rename'. 3. Stworzyłem przy okazji prosty skrypt naprawiający to. Wymagany skript-reflect. import: org.bukkit.event.inventory.PrepareAnvilEvent on PrepareAnvilEvent: if event.getResult() != null: set {_var} to event.getResult() set {_var}'s name to colored {_var}'s name event.setResult({_var})
-
Przepraszam, zapomniałem wspomnieć o jednym. W tym przypadku będzie wymagana wersja 1.13.2+.
-
1. Nie ma czegoś takiego jak 'cancel drop', jest 'cancel drops'. 2. Przy dropie nie podałeś lokalizacji. Podaj na końcu ostatniej linijki 'at victim' i zadziała.
-
Należy dodać po itemie wyrażenie 'of %enchantment type%'. Przykład: bow of power 1 named "test"
-
Problem z wyjmowanie itemów w inventory podczas otwartego gui /depozyt
Kormic odpowiedział(a) na DeepesT pytanie w Pytania i problemy
Pokaż skrypt na /craftingi. -
Problem z wyjmowanie itemów w inventory podczas otwartego gui /depozyt
Kormic odpowiedział(a) na DeepesT pytanie w Pytania i problemy
Jeżeli zrobiłeś warunek, w którym jeżeli nazwa inventory się nie zgadza, to cancelujesz event... -
Problem z wyjmowanie itemów w inventory podczas otwartego gui /depozyt
Kormic odpowiedział(a) na DeepesT pytanie w Pytania i problemy
Sprawdzałeś również ten skrypt na /craftingi? Możliwe, że po jego stronie występuje błąd. -
Problem z wyjmowanie itemów w inventory podczas otwartego gui /depozyt
Kormic odpowiedział(a) na DeepesT pytanie w Pytania i problemy
Nic nie zmieniaj, zapewniam cię, że tam nie ma być 'cancel event'. To i 'stop' to są dwie całkowicie inne rzeczy. Jeżeli nawet wykrywanie nazwy GUI u ciebie nie działa, podaj silnik serwera, jego wersję oraz wersję Skripta.
