Skocz do zawartości
  • 0

problem z lataniem


Mrddkdkkd

Pytanie

# Skrypt dla Minecrafta w języku Skript

on rightclick with paper:
    if name of player's tool contains "&6&l✦ Latanie na":
        set {_time::*} to name of player's tool split at " "
        set {_minutes} to {_time::3} parsed as integer
        if lore of player's tool contains "&7Kliknij prawym aby aktywować latanie":
            if player has permission "fly.use":
                execute console command "lp user %player% permission settemp essentials.fly true %{_minutes}%m add"
                execute console command "lp user %player% permission settemp gpflags.bypass.fly true %{_minutes}%m add"
                send "&aOtrzymałeś uprawnienie do latania na %{_minutes}% minut! Użyj komendy &e/fly &aaby włączyć latanie." to player
            else:
                send "&cNie masz uprawnień do latania!" to player

command /latanieinfo:
    trigger:
        send "&aAby użyć latania, kliknij prawym przyciskiem myszy na kartkę z napisem &6&l✦ Latanie na X minut ✦&7. Upewnij się, że masz odpowiednie uprawnienia." to player

command /giveflypaper <number>:
    permission: op
    trigger:
        if arg-1 is a number:
            set {_minutes} to arg-1
            give player 1 paper named "&6&l✦ Latanie na %{_minutes}% minut ✦" with lore "&7Kliknij prawym aby aktywować latanie||&bUnikalny Kod: %random integer between 1000 and 9999%"
            send "&aOtrzymałeś kartkę do latania na %{_minutes}% minut!" to player
        else:
            send "&cMusisz podać prawidłową liczbę minut!" to player



Skrypt nie wyrzuca bledow, chcialbym ze jezeli sie kliknie na ta kartke to wykonaja sie odpowiednie komendy, oraz wysle sie na chat..
Aktualnie jak sie kliknnie prawym na kartke, wygenerowana przez komende nic sie nie robi

Odnośnik do komentarza
https://skript.pl/temat/57877-problem-z-lataniem/
Udostępnij na innych stronach

1 odpowiedź na to pytanie

Rekomendowane odpowiedzi

  • 0
13 minut temu, Mrddkdkkd napisał:

Skrypt nie wyrzuca bledow, chcialbym ze jezeli sie kliknie na ta kartke to wykonaja sie odpowiednie komendy, oraz wysle sie na chat..
Aktualnie jak sie kliknnie prawym na kartke, wygenerowana przez komende nic sie nie robi

Widzę trzy problemy w kodzie (z czego co do dwóch ostatnich nie jestem w stu procentach pewien):

  1. Minuty w listenerze zdarzenia 'on right click with paper' są określane na podstawie trzeciego słowa w nazwie kartki. Co tu jest błędem? Błędem jest to, że trzecim słowem jest "na", a nie ilość minut. Tak więc należy podmienić 3 na 4.
  2. Listener zdarzenia 'on right click on paper' możliwe, że w ogóle nie jest wywoływany, ponieważ zwykły papier z perspektywy Skripta nie jest tym samym co papier z nazwą i lore. Sugeruję więc zastąpić te zdarzenie zwykłym 'on right click'.
  3. Do tworzenia już od dawna nie stosuje się podwójnego pipe line'a (znaki '||'), ponieważ jest to naleciałość z dawnych czasów SkQuery gdy jeszcze Skript nie wspierał lore z wieloma liniami. W komendzie tworzącej kartkę proponuję poprawić linijkę dającą kartkę na poniższą.
    give player 1 paper named "&6&l✦ Latanie na %{_minutes}% minut ✦" with lore "&7Kliknij prawym aby aktywować latanie" and "&bUnikalny Kod: %random integer between 1000 and 9999%"

    Pomijam fakt braku unikalności losowanego kodu, bo nie ma żadnej gwarancji, że nigdy nie pojawią się dwa takie same kody. Nie rozumiem zresztą po co on jest generowany skoro ta informacja nigdzie nie jest używana.
    Możliwe, że przez ten podwójny pipe line warunek z lore przedmiotu w kodzie wykonywanym po kliknięciu PPM z kartką w ręce nie był spełniany.

Mam jeszcze pewne uwagi.

  1. Typ argumentu komendy /giveflypaper to powinien być 'integer', a nie 'number', ponieważ pozwala to na podawanie liczb niecałkowitych, co spowoduje brak działania skryptu przy dodawaniu permisji na latanie, gdyż następuje w kodzie dalej próba przemianowania fragmentu nazwy papieru na liczbę całkowitą. Poza tym, raczej nikt nie będzie podawał niecałkowitej liczby minut, bo po co.
  2. Sprawdzanie czy argument nr 1 komendy /giveflypaper jest liczbą, nie ma sensu. Już sama komenda poprzez określenie typu argumentu jako 'number' to sprawdza. Ewentualny brak zgodności typu argumentu można wyświetlić za pomocą pola 'usage' w komendzie. Przykład poniżej.
    command /test <integer>:
    	usage: &cPoprawne użycie: /test <liczba całkowita>
    	trigger:
    		# Dalszy kod...

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/57877-problem-z-lataniem/#findComment-343951
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Nieaktywny
Odpowiedz na pytanie...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...