Skocz do zawartości

Kormic

Zasłużony
  • Ilość zawartości

    11012
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    230

Treść opublikowana przez Kormic

  1. Ten temat został przeniesiony.
  2. @gorylkacper To prawda, skrypt działa, ale posiada on dwie wady: Ten sam kod może zostać wykorzystany przez wielu graczy. Wiadomości w Twoim skrypcie sugerują, że wykorzystanie danego kodu przez jednego gracza powinno zablokować jego możliwość ponownego użycia, nieważne przez kogo. W Twoim skrypcie nie sprawdzasz czy kod został kiedykolwiek wygenerowany, co sprawia, że de facto wystarczy podać dowolny ciąg znaków. @Fendi udostępnił linki do rozwiązań jego autorstwa, które są lepsze, ale nadal nie optymalne. Przy generacji kodu należałoby sprawdzać czy taki kod nie istnieje już w liście. Oczywiście, ktoś mógłby powiedzieć, że się czepiam, bo z rachunku prawdopodobieństwa wynika, iż szansa na wylosowanie każdej liczby z zakresu [0; 10^16 - 1] wynosi 1 na 10 biliardów (0,00000000000001%). Należy jednak w tym miejscu podkreślić, że powyższe rozumowanie traci na znaczeniu w przypadku generatorów liczb pseudolosowych (PRNG), które mają tendencję do oscylowania wokół pewnych wartości. Niemniej jednak, do rozwiązań amatorskich na mniejszych serwerach takie podejście uznaję za dopuszczalne. Jeśli ktoś poczuje się jakkolwiek zaatakowany, spokojnie, tylko wypunktowuję błędy i potencjalne problemy. Autor zlecenia (@sebek_2000) powinien bardziej profesjonalnie podejść do tworzenia opisu wymagań. Pozdrawiam.
  3. Ten temat został przeniesiony.
  4. Kormic

    Skrypt na Event

    Ten temat został przeniesiony.
  5. Problem został rozwiązany.
  6. Sposobów jest kilka, ale skupię się na najprostszym. Do odczytu czasu rzeczywistego (dokładniej, czasu systemowego) można wykorzystać wyrażenie now w połączeniu z tym wyrażeniem. Przykład poniżej. every 1 second: set {_currentTime::*} to (now formatted as "HH:mm:ss") split at ":" {_currentTime::2} and {_currentTime::3} are "00" broadcast "&aWybiła godzina &6%{_currentTime::1}%:00&a." W Twoim przypadku wystarczy co sekundę lub co minutę (w zależności od tego jakiej dokładności wymagasz) sprawdzać czy sformatowany czas to "18:00:00" (lub "18:00" dla "HH:mm"). EDIT: Dzień tygodnia można sprawdzić za pomocą formatu "u" lub "E". Do tego również załączam przykład: command /test: trigger: send (now formatted as "u") send (now formatted as "E") send (now formatted as "EEEE") [11:18:04 INFO]: 5 [11:18:04 INFO]: pt. [11:18:04 INFO]: piątek Implementacyjnie przyjemniejsza jest wersja z liczbą (u), ponieważ format tekstowy (E) jest zależny od lokalizacji językowej. Cały wachlarz dostępnych formatów dat został opisany tutaj. Pozdrawiam.
  7. Kormic

    Odliczanie w Skript

    @Fendi Metoda Timespan#getTicks ze Skripta jest przestarzała i została ona przeznaczona do usunięcia w ciągu najbliższych kilku aktualizacji. Zamiast niej należy korzystać z metody Timespan#getAs, która pobiera jako parametr zagnieżdżony w tej klasie enum TimePeriod. Dzięki temu będziesz mógł od razu pobrać ilość sekund bez konieczności dzielenia przez 20. import: ch.njol.skript.util.Timespan$TimePeriod # [...] set {_s} to {_timespan}.getAs(TimePeriod.SECOND) Zastanawiające jest jednak mnożenie w kodzie źródłowym metody Timespan#getAs. Na moje oko tam powinno być dzielenie, bo im większą jednostkę czasu podamy, tym wyższy wynik otrzymamy, co nie ma sensu. To jednak już zostawiam Tobie do przetestowania. Najwyżej użyjesz TimePeriod.MILLISECOND, bo mnożenie przez 1 niczego nie zmieni. Obliczenia czasu można by nieco uprościć gdyby wykorzystywać na bieżąco nowo obliczone wartości, ale tak też może być. Na koniec dodam, że do dopełniania zerami początków jednocyfrowych liczb można wykorzystać metodę String#format lub klasę DecimalFormat. Nie ma potrzeby implementowania tego na piechotę. return String.format("%02d:%02d:%02d", {_hours}, {_minutes}, {_seconds}) # Lub: set {_df} to new DecimalFormat("00") return "%{_df}.format({_hours})%:%{_df}.format({_minutes})%:%{_df}.format({_seconds})%" Jak widać, String#format zapewnia bardziej zwięzły zapis, ale wykorzystanie klasy DecimalFormat też jest jak najbardziej prawidłowe. Pozdrawiam.
  8. Ten temat został przeniesiony.
  9. Kormic

    Skrypt na boski topór

    Ten temat został przeniesiony.
  10. Ten temat został przeniesiony.
  11. @Ytes Nie wiem, czy dobrze rozumiem Twój zamiar, więc chciałbym dopytać - jaki sens miałby mieć ten kod? Chcesz umożliwić graczom stawianie kryształów Endu nawet w odległości 10 kratek? Co do samego sposobu implementacji logiki, o której wspomniałeś, można to zrealizować w poniższy sposób. if (distance between player and (exact targeted block of player)) <= 10: set {_block} to exact targeted block of player Pozdrawiam.
  12. Problem został rozwiązany.
  13. Kormic

    farmland

    Problem został rozwiązany.
  14. @Ytes Kryształ Endu jest bytem, nie blokiem, dlatego zdarzenie on place of end crystal: nie jest wywoływane. Należy więc wykrywać kliknięcia prawym przyciskiem myszy z nim w ręce. Ponadto, należy sprawdzić czy blok, na którym stawiany jest kryształ Endu, to bedrock lub obsydian. Ostatni pokazany sposób z nasłuchiwaniem do zdarzenia on spawn of ender crystal: również jest poprawny, ale nie pozwala on na połączenie go z graczem, który postawił ten kryształ. Oczywiście, można próbować zapętlać graczy w promieniu 5 bloków, ale takie nieeleganckie rozwiązanie zadziałałoby tylko w przypadku wykrycia jednego gracza. Pozdrawiam.
  15. @Ytes Coś takiego jak poniżej miałem na myśli. command test: executable by: players trigger: player's tool is a pickaxe send "Test" to player Przy przeładowaniu skryptu Skript nie zgłasza błędów, więc nie wiem skąd u Ciebie taki problem. Wskazałbym starszą wersję Skripta i/lub dodatki potencjalnie zaburzające jego pracę, ale to tylko moje domysły. Pozdrawiam.
  16. @Ytes Jeśli chodzi o warunek, proszę spróbować zmienić 'any' na 'a'. Gdyby to nie pomogło, warto wstawić 'type of' przed 'player's tool'. Co do ostatniej linijki pokazanego skryptu, należy dodać słowo 'of' przed słowem 'diamond'. Należy o tym pamiętać przy określaniu ilości przedmiotu za pomocą nieliterałów (zmienne, wyrażenia, wszystko inne niż liczba wstawiona bezpośrednio w kodzie). Pozdrawiam.
  17. Kormic

    condintion summon

    @okocim Podejrzewam, że znacznik NBT został niepoprawnie określony, bo rozumiem, że problemem jest brak własnej nazwy przyzwanego konia. Warto wspomnieć, że wykorzystanie tutaj komend jest nieuzasadnione. Skript pozwala na przywoływanie bytów, nadawanie im nazw i sprawianie, aby gracz je ujeżdżał. Pozdrawiam.
  18. Kormic

    skript is empty

    Problem został rozwiązany.
  19. @Koncia__ Tak jak odpowiedziałem 4 lata temu, należy skorzystać z dodatku skript-placeholders, w którym możliwe jest zarejestrowanie nowego placeholderu w pluginie PlaceholderAPI. Jedyne co uległo na przestrzeni ostatnich paru lat to składnia w wersji 1.7.0. Po więcej informacji odsyłam do wiki dodatku. Autor pokazał w załączonym artykule przykłady z wyjaśnieniami. Pozdrawiam.
  20. Kormic

    pomoc

    Ten temat został przeniesiony.
  21. Ten temat został przeniesiony.
  22. Problem został rozwiązany.
×
×
  • Dodaj nową pozycję...