Skocz do zawartości
  • 0

AntyCobWeb


Piterowsky

Pytanie

cześć chciałbym skrypt na anty cobweb przedmiot to blaze rod z nazwą ,, &#007FF4&lA&#1C8DF5&ln&#399BF6&lt&#55AAF8&ly&#71B8F9&lC&#8EC6FA&lo&#AAD4FB&lb&#C6E3FD&lW&#E3F1FE&le&#FFFFFF&lb " i lore ,, &#4F5051&lkliknij prawym przyciskiem myszy &#4F5051&laby użyć przedmiotu " cooldown 30 sekund gdy klikne prawym to niszczy tylko cobweby w zasięgu 3 kratek czyli np 3x3 a przedmiot przywołuje się komenda /antycobweb i czy by dało aby antycobweba nie dało się używać w regionie gdzie nie mozna niszczyć bloków jak nie da sie do nie wazne z góry dzięki

Odnośnik do komentarza
https://skript.pl/temat/57732-antycobweb/
Udostępnij na innych stronach

2 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
W dniu 28.06.2024 o 20:31, Piterowsky napisał:

cześć chciałbym skrypt na anty cobweb przedmiot to blaze rod z nazwą ,, &#007FF4&lA&#1C8DF5&ln&#399BF6&lt&#55AAF8&ly&#71B8F9&lC&#8EC6FA&lo&#AAD4FB&lb&#C6E3FD&lW&#E3F1FE&le&#FFFFFF&lb " i lore ,, &#4F5051&lkliknij prawym przyciskiem myszy &#4F5051&laby użyć przedmiotu " cooldown 30 sekund gdy klikne prawym to niszczy tylko cobweby w zasięgu 3 kratek czyli np 3x3 a przedmiot przywołuje się komenda /antycobweb i czy by dało aby antycobweba nie dało się używać w regionie gdzie nie mozna niszczyć bloków jak nie da sie do nie wazne z góry dzięki

https://code.skript.pl/0pT4xtgp

 

 

Proszę. Nie da się wykryć (chyba) czy da się niszczyć bloki czy nie, ale w opcjach możesz dodać sobie regiony w których nie ma opcji używania antycobwebów.

Zmieniłem trochę te nazwe i lore bo w skripcie wygląda troche inaczej formatowanie tego a nie chce mi się tego zbytnio zmieniać więc możesz sobie to sam zmienić jeśli Ci się chce.

Edytowane przez TeZetYT
Odnośnik do komentarza
https://skript.pl/temat/57732-antycobweb/#findComment-343542
Udostępnij na innych stronach

  • 0
1 godzinę temu, TeZetYT napisał:

Proszę. Nie da się wykryć (chyba) czy da się niszczyć bloki czy nie

Jak najbardziej da się, umożliwia to ten warunek. Nie znaczy to jednak, że nie można sprawdzać regionu, bo to też jest całkowicie poprawne, choć w dłuższej perspektywie niepraktyczne.

A teraz pora na recenzję wykonania zlecenia, w której wymienię najpierw błędy, a później uwagi.
Zacznijmy więc od błędów - składniowych i logicznych:

  1. if region at player contains {@itemRegions}:

    Podejrzewam, że powyższy warunek nie zadziała. Podejrzewam, ponieważ jego działanie jest poniekąd uzależnione od wersji Skripta, a w dodatku typ 'Region' nie ma ścisłej definicji w Skript'cie.
    Mogę tutaj tyle powiedzieć, że nigdy nie zawiodło mnie poniższe rozwiązanie.

    "%regions at player%" contains "myregion in world ""world"""

     

  2. Tak się nie tworzy cooldownów jak poniżej jest to pokazane. Zresztą, nie rozumiem dlaczego zmienna jest ustawiana na 30 skoro ta informacja nigdzie nie jest wykorzystywana, a cooldown i tak trwa 5 sekund.
    set {cd::%player%} to 30
    wait {@itemCooldown}
    set {cd::%player%} to 0

    Jeżeli serwer (lub sam Skript) zostanie zatrzymany w ciągu tego okresu {@itemCooldown}, cooldown nigdy nie zostanie wyzerowany.
    Jak więc należy to robić? Podam przykład.

    # [...]
    if {exampleCooldown::%uuid of player%} is set:
    	difference between {exampleCooldown::%uuid of player%} and now is smaller than {@itemCooldown}
    	send "&cOdczekaj chwilę." to player
    	stop
    set {exampleCooldown::%uuid of player%} to now
    # [...]

     

  3. Dlaczego typ drugiego argumentu komendy to 'text', a nie 'player'? Dzięki takiej zmianie nie byłoby potrzeby dodawania dopełnień tabulatorem.
    Co więcej, w kodzie argument drugi jest naprzemiennie używany tak jakby był tekstem i tak jakby był obiektem gracza, co również jest błędem.
     
  4. Czy to aby na pewno zadziała? Mam szczere wątpliwości.
    if arg-1 is not set:
    	send usage to the sender
    	stop

    Mniejsza o to. Moim zdaniem, lepiej będzie po prostu uczynić pierwszy argument obowiązkowym. Tak więc, wystarczy usunąć nawiasy kwadratowe przy jego definicji. Jeżeli gracz nie poda go lub poda argument inny niż liczba całkowita, wiadomość w polu 'usage' zostanie wysłana. Taka jest jego rola.

Teraz przejdźmy do uwag:

  1. Proszę zauważyć, że niepoprawnym jest założenie, iż w przypadku drugiego argumentu komendy może on przechowywać tylko gracza. Nic nie powstrzyma konsoli przed wykonaniem komend. Co gorsza, gdy konsola nie poda drugiego argumentu, komenda zadziała w dziwny sposób, ponieważ zmienna {_p} będzie zawierała '<none>' (odpowiednik 'null'), czego przyczyną jest niemożność przemianowania konsoli na gracza.
    Tutaj z pewnością przyda się opcja konfiguracyjna konsoli 'executable by'. Podam przykład pokazujący jak sprawić, aby tylko gracze mogli wykonać komendę.
    executable by: players

     

  2. Rozumiem, że poniższy kod ma sprawdzać czy wpisany gracz jest na serwerze. Jest to jednak źle napisany kod, ponieważ argument tekstowy jest porównywany z obiektem gracza, co jest de facto błędem.
    loop all players:
    	add loop-player to {_g::*}
    if {_g::*} doesn't contain arg-2:
    	send "{@prefix} &cxd"
    	stop

    Powyższy fragment będzie zbędny po zamianie typu drugiego argumentu na 'player', ponieważ komenda będzie sprawdzała czy podany gracz jest na serwerze.

  3. 'stop' na samym końcu komendy nie ma jakiegokolwiek wpływu na jej działanie, więc jest całkowicie zbędny.

Mam nadzieję, że Pan poprawi powyższe błędy i zastosuje się do moich uwag. Nie będę realizował tego zlecenia, bo chcę dać Panu szansę poprawienia swoich błędów.

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/57732-antycobweb/#findComment-343551
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ę...