Skocz do zawartości

Ranking

Popularna zawartość

Treść z najwyższą reputacją w 12/07/19 uwzględniając wszystkie działy

  1. PoweredDragon

    Jak rozumieć błędy?

    Witam, Jako że większość "świeżych" skrypterów ma często problemy ze skryptami, wynikające z niezrozumienia błędów, postanowiłem napisać ten poradnik, aby łatwiej było wam zrozumieć jakie błędy popełniliście oraz jak łatwo je naprawić 1. Gdzie jest błąd? Często największym problemem w wykryciu błędu potrafi być sam fakt, że egzystuje, a zaraz po nim - miejsce, w którym się znajduje. Pomocna przy tym jest opcja przeładowania(/sk reload nazwa/all). Po jej użyciu wyświetli nam się informacja czy skrypt ma błędy czy nie. a) Zlokalizuj błąd Najważniejsza jest lokalizacja błędu, co zrobi za nas komenda /sk reload. Po przeładowaniu skryptu używając nazwy, musimy sprawdzić w której linijce znajduje się błąd. W tym celu czytamy nasz błąd aż do momentu line: <jakaś liczba> To właśnie linijka, w której znajduje się nasz błąd. Teraz w skrypcie musimy ją tylko znaleźć i zastosować się do poniższych punktów. To samo w wypadku komendy /sk reload all z tym, że musimy również przeczytać nazwę pliku - również mieści się w opisie błędu i zakończona jest .sk Nie będzie więc problemu z jej znalezieniem b) Upewnij się, że poprawnie wpisałeś polecenie Wiele błędów wynika z błędnego wpisania polecenia. Najczęściej jest to literówka, ale często też błędna interpretacja dokumentacji (z której notabene należy korzystać; jeśli jesteście prawie pewni składni, to wpiszcie jej fragment do wyszukiwarki, a na pewno znajdziecie poprawną wersję). Jedne z częstszych błędów: [on] (step|walk)[ing] (on|over) %*item types% Jak widzimy mamy wyraźnie zaznaczone rzeczy obowiązkowe i/lub opcjonalne. Rzecz obowiązkowa znajduje się w nawiasie okrągłym - "()", gdy można jej użyć na różne sposoby lub w ogóle nie nie jest objęta nawiasem. Rzecz opcjonalna to tekst w kwadratowym nawiasie(tu: [on], [ing], etc.). Warto również pamiętać, że znaku "%" używamy tylko w tekście. Nigdy nie używamy więc ich w poleceniach. Należy również wspomnieć o pewnej zależności - jeśli coś jest obowiązkowe, to pominięcie zawsze wyrzuci nam błąd. Nie ważne, że reszta polecenia jest poprawna... Powyższy wyciąg z dokumentacji możemy rozbić na kilka sposobów działających tak samo! on step over dirt: on step on dirt: on steping on dirt: on steping over dirt: step over dirt: step on dirt: steping over dirt: steping on dirt: on walk over dirt: on walk on dirt: on walking on dirt: on walking over dirt: walk over dirt: walk on dirt: walking over dirt: walking on dirt: błędne sposoby: on walking: on steping: on walking on %dirt%: on steping over %dirt%: c) Upewnij się, że nie jest to wina braku dodatku Ludzie często popełniają błędy używając poleceń znajdujących się w dodatkach do Skript takich jak WildSkript czy SkQuery. Musimy mieć 100% pewność, że owe dodatki są zainstalowane i w pełni działają. Pomocna jest tutaj komenda /plugins pokazująca nam pełną listę wtyczek. Gdy wtyczka jest wyłączona, jej nazwa wyświetla się na czerwono, dzięki czemu możemy stwierdzić, czy nasz dodatek "chodzi". Przydatne informacje: Do wyrażenia money potrzebny jest Vault. Bez niego pojawią się błędy! Wydarzenia on region enter/leave wymagają regionów np. z WorldGuard. Nie współpracują z regionami innymi niż te z listy pod owym wydarzeniem w dokumentacji! d) Jeśli nic nie pomaga, przeinstaluj pliki Częstym problemem jest niedziałający Skript lub jego dodatek, lub niezgodne wersje serwera z wtyczkami, które na nim są. Np. błędna wersja Skript/WildSkript/Vault/SkQuery/etc. Dla starszych wersji trzeba trochę szperać za zgodnymi wtyczkami (np. WS 1.7, Skript 2.1.2, Bukkit pod 1.7.10); nowsze są załatwione za nas - wystarczy sprawdzić na SkUnity pod jaki build Skripta utworzony został dodatek. 2. Odstępy Może wiecznie zastanawiasz się, czemu ludzie piszą ci "Tylko sobie wytabuj", "Musisz tylko wytabować" itd. Bardzo częstym błędem skryptów, spowodowanym niedopatrzeniem jest "błąd wcięć". W konsoli/po przeładowaniu skryptu pierwszymi słowami, które go opisują są Indentation error Jednym z błędów, który często wynika z błędnego 'wytabowania' jest również Empty configuration section Mamy również informacje o tym, czego Skript "oczekuje", a co napotkał: expected <ilość> <typ wcięcia> but found <ilość> <typ wcięcia> np. expected 1 tab but found 4 spaces Oznacza to, że 4 spacje powinniśmy zamienić na jeden tab. Warto pamiętać o tym, że wcięcia muszą się zgadzać tylko w danej sekcji, tj. pod jednym wydarzeniem wcięcia muszą być równe po każdym dwukropku. Nic nie stoi na przeszkodzie, aby pod różnymi wydarzeniami były inne odstępy Musimy też wiedzieć, że dwukropek rozpoczyna nową sekcję konfiguracyjną (ale nie pełną sekcję). Oznacza to, że po dwukropku odstępy są obowiązkowe. Jeżeli go nie użyjemy, to efekt wpisujemy linijkę pod nim, ale musimy pamiętać, że jeżeli go wstawimy, to bez dodatkowego odstępu się nie obejdzie. ---->Bledne wydarzenie: warunek: warunek: efekt ---->Prawidlowe wydarzenie: warunek: warunek efekt Należy nadmienić, że powyższy błędny kod nie jest błędny per se. Tak długo jak odstępy są identyczne, puste sekcje konfiguracyjne mogą istnieć i nie powodować większych problemów. Efekt będzie wywołany bezpośrednio po wydarzeniu, bez uprzedniego sprawdzenia warunków - to zaś mija się z celem generowania warunków. Warto o tym pamiętać. 3. Co dwa znaki to nie jeden! Ale liczy się też pole do popisu! W Skripcie istnieją trzy znaki specjalne, które są używane bardzo często i bardzo łatwo jest spowodować błąd, gdy je zapisujemy. Są to cudzysłów ("), klamry "{}" i procent "%", a także znak ":" przy tworzeniu list zmiennych. Owe znaki zawsze muszą mieć parę, ponadto muszą zostać użyte we właściwym miejscu. Błędy z cudzysłowem poprzedzone są Invalid use of quotes błędy z klamrą najczęściej są opisywane niemożliwością zrozumienia wyrażenia Can't understand expression Użycie "%" w wydarzeniu/efekcie spowoduje błąd Can't understand this condition/effect natomiast nieodpowiednie oprocentowanie w cudzysłowie wywali: The percent sign is used for expressions (e.g. %player%). To insert a '%' type it twice: %% Przykłady: send "%{maslo::*}% to player Błędne, bo brakuje cudzysłowa zamykającego 1 spację przed słowem "to" send "%{maslo::*%" to player Błędne, bo brakuje klamry zamykającej zmienną send "%{maslo::*}" to player Błędne, bo brakuje "%" potrzebnego do odczytania zmiennej send "%{maslo:*}% to player Błędne, bo w zmiennej występuje tylko jeden ":" send "%{maslo::*}%" to player 100% poprawny zapis 4. Co ja robię tu? Bardzo częstym błędem są braki danego wyrażenia/typu/obiektu w warunku/efekcie którego użyliśmy. jest to m. in. używanie player w wydarzeniach okresowych takich jak pętla every %timespan% [in %world%] gdzie najpierw graczy musimy zapętlić, loop all players [in %world%] a potem odwołać się do zapętlonego gracza loop-player lub w innych wydarzeniach, w których gracza nie ma (lub występuje pod inną postacią). Np. command /mleko: executable by: console trigger: send "maslo" to player on spawn of zombie: send "Obok ciebie zespawnowal sie zombie!" to player every 3 seconds: send "debug!" to player on damage: set {attacked::%player%} to true Oczywiście tyczy to również bloków jak i innych bytów (zarówno zombie jak i ramka muszą być zapętlone w wydarzeniu, w którym chcemy ich użyć, gdy same w nim nie występują). Jest to bardzo ważne. Charakterystyczne błędy powiedzą nam: There's no <tu wyrażenie, którego użyliśmy> in <typ wydarzenia> event[s] lub w rozszerzonej formie There's no <tu wyrażenie, którego użyliśmy> in <typ wydarzenia> event[s] if no <typ wyrażenia> is given in the event (e.g. like 'przykład wydarzenia z dodatkowym typem') np. There's no player in periodic events There's no world in periodic event if no world is given in the event (e.g. like 'every hour in "world"') oraz Use 'coś', 'coś', ..., and/or 'coś' in <typ wydarzenia> events np. use 'victim' and/or 'attacker' in damage events Szczególnym przypadkiem tego błędu, jest błąd występujący w pętlach: There's no loop that matches 'loop-<typ>' np. There's no loop-that matches 'loop-player' wystąpi on na przykład w tym kodzie: loop {zmienna::*}: loop-player is sneaking: ... Łatwo go naprawić; wystarczy pamiętać, jakie wartości są charakterystyczne dla pętli: loop {zmienna::*}: send "%{zmienna::%loop-index%}% to %loop-value%" send "%loop-index% to wartość porządkowa (najczęściej numer)" loop blocks in radius 5 of {_loc}: send "%loop-block% to zapętlony blok!" loop players in radius 5 of {_g}: send "%loop-player% to zapętlony gracz" loop zombies where [zombie input is named "Kappa"]: send "%loop-zombie% to %loop-entity%, a to z kolei jest zapętlony zombiak!" loop 5 times: send "%loop-number% to raz, który już wykonywana jest pętla; najpierw będzie 1, potem 2 i tak aż do numeru w definicji pętli" Prawie ostatnim już błędem (który ponadto mówi jak się rozwiązać) jest błąd: There are multiple loops that match 'loop-<typ>' np. There are multiple loops that match 'loop-player' Wystarczy to załatwić, poprzez numerowanie, zależnie od pętli, którą chcemy: loop all players: #PĘTLA NR 1 loop-player's helmet slot is leather cap named "&aCzapka niewidka": #Tu nie musimy numerować, bo narazie jest jedna pętla loop players in radius 10 of loop-player: #PĘTLA NR 2 loop-player-2 doesn't have permission "niewidka.zobacz": #Sprawdza graczy z pętli nr 2 hide loop-player-1 from loop-player-2 #Ukrywa gracza z pętli nr 1 przed graczami z pętli nr 2 Przedostatni już błąd na tej liście, to linijka wyjęta z kontekstu - nie występuje pod żadną sekcją ani wydarzeniem invalid line - all code has to be put into triggers "Last stander" punktu czwartego to 'else' has to be placed just after an 'if' or 'else if' section charakterystyczny, jeżeli, tak jak w treści, else wstawiamy po warunku, który nie jest ani "ifem", ani "else ifem"... 5. Konflikty występują nawet w tekstach, czyli sprzeczka pobratymców. Bardzo często dostajemy informację Possible name conflict of variables Później informacja jakie to zmienne. Skąd to się bierze? Technicznie nie jest to błąd, ale informacja ostrzegawcza, że gdzieś może coś się zepsuć (nie jest to błąd techniczny, ale może być błędem praktycznym). Załóżmy, że ktoś tworzy mini grę o nazwie BigBubblesAttack, zmienną zapisuje w ten sposób: on join: set {bigBubblesAttack::%player%} to true No i wszystko spoko. Do czasu, bo gdy ta sama osoba robi np. zmienną grupową dotyczącą rozpoczęcia gry i nazywa ją tak: command /start: trigger: set {bigBubblesAttack::rozpoczeto} to true to całość może się sypnąć przed wpisaniem komendy. Jak? Wystarczy, że zanim jakaś osoba wpisze /start, na serwer wejdzie gracz o nicku "rozpoczeto". Dlatego najprostszym sposobem są dodatkowe dopiski w komendach. Zamiast {bigBubblesAttack::%player%} użyj {bigBubblesAttack::lista::%player%} A zamiast {bigBubblesAttack::rozpoczeto} użyj {bigBubblesAttack::status::rozpoczeto} i konflikt zmiennych zażegnany! 6. Porównanie to ważny środek artystyczny Równie popularnym co poprzednicy błędem jest can't compare <typ> with <częśc kodu> czasem rozszerzone o powód can't compare <typ> with <częśc kodu> because the latter is not an object "Compare", to z angielskiego "porównywać"; skrypt nie widzi danego typu w zastosowanej składni, np. can't compare player with "Edward" Wynika to z różnicy w typach; w dokumentacji zauważamy, że warunki, wydarzenia i efekty mają ściśle określoną składnie (dodatkowy powód oznacza, że to czego użyliśmy nie pasuje do żadnej składni, którą kojarzą Skript lub dodatki). Nie możemy od tak sobie zamienić ich kolejnością. Tam, gdzie jest %player% musimy użyć gracza; tam gzie jest %world% użyć świata itd. Bardzo często wystarczy użyć parse'a na stringu: Poradnik o parse'owaniu tutaj 05.07.2017 Poradnik edytowany; poprawione błędy w stylu, dodana miniaturka poradnika wykonana przez @Norbi oraz dodano punkt 6. 29.12.2019 Poradnik edytowany; poprawione błędy w stylu, wprowadzone drobne poprawki merytoryczne, usunięto powtarzające się fragmenty
    1 punkt
  2. dawid2016x

    Problem w skrypcie

    Pobrałem skrypt Chest Commands i wsm to lepsza opcja Dzięki tym co probowali i pomogli
    1 punkt
  3. miki12345

    Jak napisać paczkę antycheat

    ja to polecam się nauczyć zrobić taką paczkę ja sam taką planuje zrobić i szukam poradniki ucze się i wg i najpierw polecam ci się nauczyć języka java bo to z 2 miesiące roboty dla zwykłego gracza
    1 punkt
  4. xAxee

    Jak odczytywać lvl enchantu przedmiotu?

    %sharpness of tool of player% %level of sharpness of tool of player% %sharpness of player's tool% %level of sharpness of player's tool%
    1 punkt
  5. Shateq

    Problem w skrypcie

    Nie musisz robić autorskiego, który i tak nie będzie ci działać, możesz skorzystać z pluginu Chest Commands zrobisz w nim sklep i nie tylko. Jeśli umiesz otwierać lodówkę nie będzie to dla ciebie trudne. Polecam...
    1 punkt
  6. function removeAll(p: player, item: item): loop all items in {_p}'s inventory: if type of loop-item is {_item}: remove loop-item from {_p}
    1 punkt
  7. dastixd1

    Skrypt/Pl na macro

    Dzk
    1 punkt
  8. RodgerDodg3r

    Skrypt na cuboid

    Coś do ryżu? Po pierwsze, ile proponujesz(już wyprzedzę twoje pytanie - Zapłatę )? Po drugie, ten skrypt jest skomplikowany więc potrwa to więcej niż jeden dzień.
    1 punkt
  9. C4LLM3P3T3R

    Lista graczy

    String[] nicks = {"C4LLM3P3T3R", "XD"}; for (String nick: nicks) { //przykladowa akcja: System.out.println(nick); }
    1 punkt
  10. Ixidi

    Lista graczy

    Jesli ta lista stringow zawiera nicki no to po prostu petla i dla kazdego nicku Player p = server.getPlayer(nick); pamietaj zeby sprawdzic czy nie jest nullem
    1 punkt
  11. Libter

    Własnościowe konie

    Mniej koni = mniej zanieczyszczeń na drogach
    1 punkt
  12. Jeżeli mam być szczery to będę szczery do bólu. Sklep - Jeden wielki żart. ItemShop z wszystkich trybów opiszę BedWars - Ceny są po prostu śmieszne... Nie lepiej żeby był to VIP na 30 dni i byłby lepszy efekt? Coś co jest na zawsze jest głupie, bo daje wręcz ogromną przewagę i robi chaos na trybie/serwerze. Survival+Gildie - Totalny Pay to Win... Poza tym po co komu UnBan IP? Jesteście tak mało inteligentni, że nie wiecie że istnieje coś takiego jak dynamiczne IP, lub nazywane zmienne IP. Poza tym pytania "Czy chcesz mieć..." doprowadzają do depresji... SkyBlock - Kolejne głupoty i zwykła chciwość... Twój/wasz serwer jest tworzony z pasji, czy zarabianiu? Bo jak tak patrzę to druga opcja jest prawidłową odpowiedzią Reszta skryptów - Po prostu totalne P2W.... Regulamin - Kolejna karuzela śmiechu... Bezsens... Powinno się zabraniać całkowicie używać wulgaryzmów, a nie nadmiernie... Dla Polaka nadmiernie jest dopiero od 100 wulgarnych słów, a dla Rosjanina? Dla nich nie ma czegoś takiego jak nadmierne... I tak 100% twojego serwera nie rozumie pewnie Języka Polskiego, a nawet nie trzymała Słownika Języka Polskiego więc... Nie wiesz, czy ktoś celowo napisał celowo błędy ortograficzne, czy nie. Głupota... To zablokujcie tam dmg od lawy i ognia lol... Przepraszam bardzo, ale to już jest szczyt głupoty... Cheaty ok powinny być zabraniane, ale nie Forge, LabyMod, BlazingPack itp. tekstury i modyfikacje również nie powinny być zabraniane, bo to nie ułatwia rozgrywki.. Równie dobrze mogę stwierdzić iż żeby zagrać na tym serwerze nie mogę mieć nawet tekstur z Minecraft'a, bo pomagają mi odróżnić gracza od bloków Jeżeli chodzi o tryby u was to wy też kopiujecie od innych, więc wasz idiotyczny regulamin jest po prostu... Brak słów... Sami kopiujecie i zabraniacie kopiować to co wasze, a u was nic nie jest wasze. Nie udowodnisz że ktoś ma jedno konto na 1 IP... Śmieszne, serwera nawet nie będę opisywał, bo sklep i regulamin mówią mi jedno jeden wielki syf.
    1 punkt
  13. kanafu

    Skrypt na antyreklame i cenzure

    Fajne teksty zamiast przekleństw... ogółem to skrypt prosty, osoba wiedząca że jest takie coś jak "replace all" mogła by to zrobić sama zakończę moją niesamowicie konstruktywną opinie oceną pozytywną, ponieważ raczej zaczynasz swoją historie w świecie Skryptów
    1 punkt
  14. xAxee

    Problem w skrypcie

    Podaj cały kod.
    0 punktów
  15. ^ kliknij w tytuł aby przejść do pobierania ^ Cześć, *dodatek nie jest mojego autorstwa, jest to tylko poradnik do tego dodatku* wpadłem na pomysł aby napisać poradnik do dodatku skript-ping. Dodatek ten dodaje możliwość w pełni zarządzania message of the day (motd) serwera. * dodawanie linijek tekstu do hover list (lista graczy po najechaniu na liste graczy), * ustawianie ikony serwera, * ustawianie motd serwera, * ustawianie version string (licznik graczy). add "tekst linijki" to server hover list #dodawanie tekstu do server hover list reset server hover list #przydaje sie gdy chcemy edytowac linijki :) set the server icon to file "sciezka" #ustawianie ikony serwera [nie polecam!] reset server icon #usuwanie ikony serwera set server list motd to "linijka 1 %newline% linijka 2" #ustawianie motd serwera reset server list motd #usuwanie motd serwera set version string to "tekst licznika graczy" #edytowanie licznika graczy (dowolny tekst i kolor!) on load: set the server list motd to "&f&k|||&r &a&lTWOJE-IP.PL &7- &eSerwer twoich marzen! %nl% &7Zapros kolegow na nasz serwer." reset the server hover list add "&7&m-----------&r&f&l[ T W O J E - I P . P L ]&7&m-----------" to the server hover list add " &e> &cBardzo nam milo ze jestesmy na Twojej liscie serwerow!" to the server hover list add "&7&m-----------------------------------------------" to the server hover list set the version string to "&7Na co czekasz? &c&lWBIJAJ"
    0 punktów
  16. Mrddkdkkd

    Urodzinki Aksika

    Jak do cb nikt nie przyjdzie
    0 punktów
Ten Ranking jest ustawiony na Warszawa/GMT+02:00
  • Najwięcej postów w tygodniu

    Quexsu
    Quexsu
    6 postów
    Nicku
    Nicku
    1 post
    mervi_X
    mervi_X
    1 post
    Fendi
    Fendi
    1 post
    kinimod5021
    kinimod5021
    1 post
    bug128
    bug128
    1 post
  • Najwięcej tematów w tygodniu

    Quexsu
    Quexsu
    1 temat
    mervi_X
    mervi_X
    1 temat
    bug128
    bug128
    1 temat
  • Aktywni użytkownicy

    Nikt jeszcze nie otrzymał reputacji w tym tygodniu.

×
×
  • Dodaj nową pozycję...