Ranking
Popularna zawartość
Treść z najwyższą reputacją w 05/10/20 uwzględniając wszystkie działy
-
Skarga Peridot, SernickLOL
Tymekd oraz jeden pozostały przyznał(a) reputację KQBA za temat
Jestem na forum od jakiegoś czasu...2 punkty -
MCKDisco Link do pobrania: https://github.com/P3ridot/MCKDisco/releases Opis: Plugin dodaje na nasz serwer disco zbroje czyli skórzaną zbroję zmieniającą swoje kolory. Plugin posiada 4 tryby świecenia, smooth (płynne przechodzenie pomiędzy kolorami), random (bardzo szybka zmiana koloru każdej części disco zbroi na losowy kolor), gray (płynne przechodzenie pomiędzy odcieniami szarości) oraz police (płynne przechodzenie z czerwonego na granatowy i na odwrót). Disco zbroja nie wpływa również na założoną przez nas zbroje. Discozbroje widzą tylko osoby wokół nas ale my sami jej nie widzimy. Wersja Minecrafta: 1.8-1.15.2 Komendy: /disco, /discozbroja oraz /discoarmor (wszystkie otwierają menu z wyborem trybu disco zbroi) Uprawnienia: • mckdisco.cmd - uprawnienie od używania komendy • mckdisco.smooth/random/gray/police - uprawnienie od danego efektu Prezentacja pluginu na youtubie (nie pokazuje trybu "policji' który został dodany): https://www.youtube.com/watch?v=UYaO2WooUM0 PS. Ten plugin jest dość stary ale wstawiam go tutaj bo czemu nie Przez to kod też jest no trochę mocno nieogarnięty, brzydki itp. ale działa No i przy tej aktualizacji co była ostatnio nie chciało mi się przerabiać całego kodu więc dalej kod jest brzydki i nieogarnięty tylko trochę w nim posprzątałem :V1 punkt
-
Jak otworzyć porty?
Misio12320 przyznał(a) reputację Tymekd za pytanie
Logujesz się na swój router, i odblokowujesz dane porty na ip virtualboxa nwm jak to prościej wytłumaczyć1 punkt -
+ te 2 strony są takie same chłopy kopiują boostrapa i zmieniają tylko napisy i kolory1 punkt
-
1 punkt
-
Na polski przetlumaczyc ale te no explain name ma tak zostać1 punkt
-
Zad z biol
bludis przyznał(a) reputację Misio12320 za temat
POG , " Genotyp to dwa geny a Ty nazywasz genotypem A albo I to tak nie jest. Nie wiem skąd bierzesz AB i B i co to u Ciebie oznacza? Ja podawałam w zadaniu tylko grupę krwi A i 0 u dziecka, w zadaniu jest dobra tylko jedna tabelka i odpowiedz reszty brak to nie jest nawet połowa zadania.Ocena będzie w dzienniku. Pozdrawiam "1 punkt -
TeamSpeak3 Dla Graczy (Czytaj) : plejersi.pl
Tymekd przyznał(a) reputację boleknowak za temat
meh "Jesteśmy rozwijającym się" jak papier toaletowy?1 punkt -
[Zlecenie] Dodatek do UHC
KapiPierog przyznał(a) reputację xAxee za pytanie
on first join: set player's max health to 401 punkt -
MCKChat Link do pobrania: https://github.com/P3ridot/MCKChat/releases Opis: Plugin dodaje komende /chat który daje możliwość włączenia/wyłączenia/wyczyszczenia chatu. Posiada również kilku linijkowe automatycznie wiadomości na czacie. Zawarty jest w nim slowmode żeby gracze nie "spamili" na czacie. Wersja Minecrafta: 1.8-1.15.2 Komendy: /chat - [aliases: c] - zarządzanie serwerowym chatem Uprawnienia: • chat.admin - daje dostęp do głównej komendy /chat • chat.bypass - daje możliwość pisania nawet jak chat jest wyłączony • chat.noslowmode - daje możliwość "spamienia" Prezentacja pluginu na youtubie: https://www.youtube.com/watch?v=6opu7K0mySA PS. Ten plugin jest dość stary ale wstawiam go tutaj bo czemu nie Przez to kod też jest no trochę mocno nieogarnięty, brzydki itp. ale działa1 punkt
-
Jak rozumieć błędy?
DariuszGki przyznał(a) reputację PoweredDragon za pytanie
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ę fragmenty1 punkt -
3 lata temu na naszej ukochanej CraftKonkurencji i już niestety obumierającej konkurencji napisałem poradnik o tym samym tytule, który zdobył kilkadziesiąt polubień. Niniejszym prezentuję nieco ulepszoną i przystosowaną pod rok 2018 wersję Zainspirowany wieloma kiepskimi serwerami (i ich jeszcze gorszymi prezentacjami) postanowiłem napisać ten poradnik. Opiszę w nim czego nie należy robić tworząc serwer i jego prezentację. I. Serwer 2015: Nie używaj starych wersji, chyba że masz poważny powód aby to zrobić (np. mody). Pluginy pisane na 1.7.* zazwyczaj działają na 1.8.*, natomiast pluginy pisane na 1.8.* zazwyczaj nie działają na 1.7.* 2016: Po wydaniu wersji 1.9 stawianie bez powodu nowego serwera na wersji 1.7 jest absurdalne. A teraz mamy rok 2018 i nadal serwery stawiane są na 1.8 lub 1.7. DOŚĆ! Nowe wersje niosą ze sobą zarówno wiele usprawnień w samym Minecrafcie jak i znacznie lepsze, odbugowane pluginy/mody. Jeśli jakiś dodatek zatrzymał się na starej wersji to znaczy, że nie jest dalej rozwijany i warto znaleźć lepszy zamiennik. Jeśli jakieś funkcjonalności w nowych wersjach nie pasują do serwera to można je po prostu wyłączyć zamiast cofać się w rozwoju. 2015: Nie używaj Bukkita (właściwie CraftBukkita). Spigot jest lepiej zoptymalizowany, a wszystkie pluginy pisane na Bukkita będą działać także na Spigocie. A najlepiej używaj PaperSpigota, który jest jeszcze lepiej zoptymalizowany i ma jeszcze więcej możliwości konfiguracji. 2015: Nie instaluj ClearLagga. Ten plugin może jedynie denerwować graczy swoimi wiadomościami na chacie i znikaniem przedmiotów. Spigot posiada wbudowany mechanizm (EntityActivationRange), dzięki któremu przedmioty leżące na ziemi nie powodują żadnych lagów. 2015: Nie twórz serwera EasyHC ani Survival + Gildie. Takich serwerów jest obecnie naprawdę dużo i aby się wybić potrzebna jest dobra reklama, dobra maszyna i (najlepiej) autorskie pluginy. Nawet jeśli posiadasz te trzy rzeczy, to zastanów się dobrze nad utworzeniem ciekawszego i oryginalnego serwera. Nadal jest tego za dużo, ale survivali czy skyblocków też! Jeśli już masz robić serwer to zrób porządnie i oryginalnie, a może nawet uda się załatwić jakąś współpracę z forum II. Programowanie 2015: Nie opieraj serwera na skryptach. Mam na myśli przede wszystkim skrypty wywoływane w pętli (every tick, every 1 minute, itd.). Skript jest jednowątkowy, więc zbyt wiele wykonywanych cyklicznie instrukcji może spowodować bardzo duży spadek wydajności serwera. Piszę to na forum o skryptach, ale dalej aktualne Nie twórz pluginów większych niż kilka klas jeśli nie umiesz jeszcze porządnie programować obiektowo. Podczas kodowania staraj się przestrzegać zasady DRY i zanim skopiujesz i wkleisz swój kod w inne miejsce zastanów się trzy razy czy nie można tego uniknąć. Nie odkrywaj koła na nowo. Pluginów typu "Core" (czyli Essentials tak naprawdę) są już setki. Lepiej użyć gotowca i zająć się ciekawszymi funkcjonalnościami. III. Prezentacja 2015: Nie wpisuj zbyt dużej liczby slotów. Popularne silniki serwera, z jednym wątkiem głównym nie uciągną więcej niż kilkaset slotów (przy bardzo mocnym procesorze). Wpisywanie dużej ilości slotów nie świadczy dobrze o wiedzy technicznej autora prezentacji. Większa liczba slotów jest oczywiście uzasadniona w przypadku wielu serwerów połączonych razem (np. przez BungeeCord). 2015: Nie korzystaj z generatorów. Użycie generatora do stworzenia prezentacji zazwyczaj skutecznie odstrasza przed wejściem na serwer, którego prezentacja składa się ze zdań: "Potwory TAK; Zwierzęta TAK; Nether TAK; ...". I zadbaj o estetykę prezentacji. Nawet zwykły tekst jest ładniejszy od dziwnych kolorów, wycentrowania całości, dużego rozmiaru czcionki, itp. 2015: Nie podawaj nieprawdziwych danych. Kłamstwo szybko wychodzi na jaw. Przykładem może być np. "Potężna maszyna! Łącze 2,5 TB/s", albo "serwer dedykowany" z końcówką ench.pl w adresie. 2015: Zapoznaj się ze znaczeniem słów: Serwer dedykowany - fizyczna maszyna z pojedynczym najemcą. Serwer na hostingu nie jest serwerem dedykowanym. Autorskie pluginy - (zazwyczaj niepublikowany) plugin wykonany specjalnie dla jednego serwera. Popularne pluginy, które można znaleźć w internecie nie są autorskie. Ogarnięta administracja - samo użycie tych słów w prezentacji sugeruje, że administracja jednak "ogarnięta" nie jest. I to by było na tyle. Jak macie jakieś pomysły rozbudowy poradnika to zapraszam do postowania, a także zachęcam do linkowania tematu w prezentacjach kiepskich serwerów1 punkt
-
Skarga Peridot, SernickLOL
Misio12320 przyznał(a) reputację nwse za temat
masz 10 punktów reputacji i coś mówisz o byciu nowym, hmm0 punktów -
Może 5 lat temu gdy jeszcze TS królował mielibyście szanse się rozwinąć.0 punktów
-
Najwięcej postów w tygodniu
-
Najwięcej tematów w tygodniu
-
Aktywni użytkownicy
