-
Ilość zawartości
536 -
Rejestracja
-
Ostatnia wizyta
-
Wygrane w rankingu
13
Treść opublikowana przez TheMolkaPL
-
Sub-ID przedmiotów zapisywane jest jako durability (zniszczenie) - głupota Notcha. Musisz pobrać durability sprawdzanego przedmiotu i upewnić się, że jest one równe 1. Mam nadzieję, że pomogłem Towarzyszu
-
To udostępniaj kod, wtedy też będę mógł Ci coś pomóc, podpowiedzieć Towarzyszu Jak w jednej klasie to możesz wrzucać na Pastebin, bo serwis code nie ma podświetlania składni Javy.
-
Witajcie Towarzysze! W końcu to forum o Skript, więc w tagu <code> powinno się znajdować podświetlanie kodu o składni Skript, tak jak jest to w serwisie code. Robotnicze pozdrowienia!
-
command /clearchat: description: Clear the chat permission: skript.chatclear.cc permission message: &cYou don't have permission. aliases: /cc trigger: loop 100 times: broadcast " " broadcast "&aCzat zostal wyczyszczony przez &2%player%&a!" stop
-
Plugin WorldGuard jest zależny od pluginu WorldEdit. Używa on wiele klas oraz metod z WorldEdita jak regiony, zaznaczenia, czy komendy. System komend w WorldGuard jest oparty o ten z WorldEdita. Z powyższego błędu wynika, że WorldGuard nie mógł wykonać metody getParsedPaddedSlice(), ponieważ nie istnieje. Może on wynikać na przykład z powodu niekompatybilnych wersji WorldGuarda i WorldEdita. W tym przypadku wersja WorldGuarda jest nowsza od wersji WorldEdita, ponieważ WorldEdit (gdzie ta metoda się znajduje) nie posiada właśnie tej metody, która to jest elementem systemu komend. Pamiętaj, że pluginy w ten sposób zależne, to znaczy, pluginy które wymagają inne pluginy do swojego działania powinny używać kompatybilnych do siebie wersji. Oprogramowanie, posiadające API (gdzie WorldEdit można tak nazwać) powinno być kompatybilne wstecz, to oznacza, że WorldGuard sprzed kilku lat powinien działać wciąć bez błędów na najnowszym WorldEdicie, to często nie jest to przestrzegane. Niestety nie wiem jak to wygląda w WorldEdicie ponieważ nie śledzę za bardzo jego zmian w kodzie źródłowym. Natomiast do rzeczy - musisz po prostu posiadać kompatybilny WorldGuard do WorldEdita, czyli build (skompilowany plik JAR) o dacie tej samej lub nowszej od WorldEdita (ale pierwszy build po tym z WorldEdita, jeżeli nie przestrzega on wstecznej kompatybilności). Metoda getParsedPaddedSlice() została dodana w sierpniu 2013 roku, czyli prawie 4 lata temu. Musisz pamiętać o tym, że tak stare oprogramowanie (bo wciąż jest rozwijane, ale to są już kolejne buildy) nie jest w żaden sposób wspierane oraz mogą z nim występować poważne problemy. Dodatkowo błędy w kodzie, w tym nawet exploity (czyli błędy działające na korzyść osoby z niej korzystającej i na szkodę samego serwera, takie jak na przykład wycieki pamięci), które zostały naprawione przez te 4 lata nie zostały naprawione. Brakuje także w takim oprogramowaniu nowych funkcji, które także zostały dodane przez te ostatnie lata. Dodanie metody getParsedPaddedSlice() nastąpiło w tym commicie - https://github.com/sk89q/WorldEdit/commit/cd5f832adf68f7d8b6f585396399e9ac1850e531 przez wizjany, natomiast pierwszy "stabilny" build z tą zmiana to 5.5.8 - https://github.com/sk89q/WorldEdit/releases/tag/5.5.8. "Stabilne" buildy (stabilne oczywiście w tamtym czasie, dzisiaj przestarzałe i niewspierane) można zawsze znaleźć na BukkitDev danego projektu. Tutaj jest to WorldEdit i WorldGuard, więc zapraszam do jego archiwum. WorldEdit: https://dev.bukkit.org/projects/worldedit/files WorldGuard: https://dev.bukkit.org/projects/worldguard/files Mam nadzieję, że pomogłem Pozdrawiam Czerwono
-
Nie wiem w sumie po co byłoby to komuś potrzebne, ale spoko. Uprawnienia definiuje się w pluginie od uprawnień i to samemu wybiera się co gracz może, a czego nie może. Dodatkowo taki plugin często ma już komendę podejrzenia uprawnień gracza.
-
Nie możesz zapomnieć o dodaniu adnotacji @EventHandler do metody naszego słuchacza (listenera). Dzięki temu Bukkit będzie wiedział, że przy poszukiwaniu słuchaczy w klasie weźmie pod uwagę właśnie tą metodę. Dodatkowo GOLDEN_APPLE jest złotym jabłkiem regenerującym zdrowie. Złote jabłko blokujący zadawanie nam uderzeń (damage) ma sub-ID 1. To oznacza, że musisz dodatkowo się upewnić, że sprawdzany przedmiot w ifie ma sub-ID 1. http://minecraft.gamepedia.com/Enchanted_Golden_Apple
-
Może jakiś bardziej konstruktywny komentarz? Nie, bo nie - tak, bo tak?
- 6 odpowiedzi
-
To jest najgorsze możliwe rozwiązanie tego problemu. Zbędne zaśmiecanie pamięci podręcznej. W sumie po części rozwiązaniem tego tematu będzie to, opisałem jak poszczególne rozwiązania działają, jakie mają wady i zalety. Pozdrawiam Czerwono
-
Więc plugin ma buga. Nie anuluje InventoryClickEvent.
-
Najpierw napisz co to jest za plugin/skrypt.
-
@HeezQ Skript zapisuje wszystko w swoich zmiennych. Nie jest to dobre rozwiązanie do robienia banów, gdzie te powinny być zapisywane w bazie danych lub (mniej zalecane) na plikach lokalnych. Uszkodzenie tychże plików (na przykład usunięcie) możesz spowodować nieodwracalne skutki. Załóżmy na przykład zapełnienie się dysku. Skript nie będzie w stanie poprawnie działać, ponieważ inne skrypty będą próbowały zapisać coś w plikach i nie będzie przez to mógł przeprowadzić odczytu. Ostatecznie osoba z banem będzie mogła wejść na serwer... Nigdzie nic nie ma związanego z PermissionsEx. Bukkit ma własne API do uprawnień, PermissionsEx z niego korzysta, aby graczom je dodawać oraz usuwać. Wszystko opiera się na PermissionAttachment. Nie mam też na myśli sprawdzania uprawnień, a ich przyznawania oraz usuwania, aka. klon PermissionsEx. Skript wrappuje (czyli tworzy nowe obiekty (eventy) na podstawie oryginalnych (eventów)) swoje eventy na podstawie tych Bukkitowskich. To znaczy, że jeżeli wykonuje się event w Bukkicie to zostanie on także wywołany w Skript. Skript przy wchodzeniu na serwer ma 2 eventy - "on join" i "on connect". Ten pierwszy wykonywany jest przy Bukkitowskim PlayerJoinEvent, wtedy gdy gracz się zalogował, został zarejestrowany w Bukkit oraz wysyłana jest do niego świat. "on connect" wykonywany jest w PlayerLoginEvent (który jest przestarzały). Dopiero po nim następuje autoryzacja gracza. To w nim powinno się blokować wejście graczy na serwer. PlayerLoginEvent jest przestarzały ponieważ jest synchroniczny, to znaczy, że wykonuje się w głównym wątku serwera (w tym samym w którym jest fizyka i całego tickowanie). Z tego też powodu Skript nie nadaje się na bany, ponieważ przy próbie logowania może zabić serwer. Wszystkie komendy powinny być po angielsku, ponieważ wszystkie inne w Bukkit oraz Minecraft są właśnie po angielsku. To tak jak programowanie - pisanie kodu w istniejącej aplikacji powinno być oparte o już zastosowany styl kodu, nie tworzenie nowego. W tym ostatnim miałem na myśli to: every 1 seconds: loop all players: if diference between {czas.%loop-player%} and now is larger than or equal to {_x.%loop-player%}: execute console command "odbanuj %loop-player%" stop Robotnicze Pozdrowienia $
-
[Network] Łatwa zmiana serwera w oknie
TheMolkaPL odpowiedział(a) na TheMolkaPL temat w W trakcie realizacji
Jeszcze wpadł mi pomysł wyświetlania w przedmiotach obecny stan graczy - to znaczy ile jest online. Czasem chce sobie zagrać BedWars, ale muszę wejść na serwer i zobaczyć czy się opłaca (bo prawdopodobnie jest pusty). Dzięki temu można by też zwiększyć ilość graczy właśnie na BedWars. Gracze wchodząc wcześniej na serwer zauważyli, że jest on pusty, więc na niego już nie próbują wchodzić. Taka liczba stanu graczy byłaby na pewno pomocna. Robotnicze Czerwone pozdrowienia ☭ -
Nie dość, że to memory leak, to sypnie się przy jednoczesnej edycji listy (wątku logowania i głównego) to jeszcze boty zabiją serwer zbędnymi taskami w głównym wątku. Pozdrawiam Czerwono ☭
-
No nie wiem czy bany w Skript to dobry pomysł... Skript jest zbyt mało stabilny żeby robić na nim takie rzeczy jak uprawnienia czy bany. Dodatkowo "on join" jest wykonywane po zalogowaniu gracza; powinieneś sprawdzać bana w logowaniu - on jest dodatkowo asynchroniczny. Nie wiem jak to działa w Skript. Powody przyjmują tylko jeden parametr, to znaczy, że jak podam "/warn Gracz Mowimy nie kapitalizmowi", to powodem będzie tylko "Mowimy". Z powodów ujednolicenia komend, bo wszystkie inne takie są, powinny one być po angielsku. Komenda /tempban przyjmuje parametry w złej kolejności. Co jeżeli będę chciał podać liczbę w powodzie? Linia 62 nie ma dwukropku. Skrypt nie zostanie sparsowany. Loopowanie co sekundę wszystkich graczy tylko po to, żeby go odbanować jest czystym szaleństwem - to marnotrawstwo. Powinieneś zapisywać czas wygaśnięcia bana i sprawdzać go przy logowaniu. Poza tym jak chcesz odbanować gracza, który ma tempbana i nie ma go na serwerze (bo przecież ma bana)? Pozdrawiam Czerwono ☭
-
Nie rozumiem - przecież przy każdym respawnie masz go od nowa. Po co miałby się niszczyć? Robotnicze pozdrowienia ☭
- 6 odpowiedzi
-
Witam, Obecnie po zabiciu więcej niż jednej osoby w naszym ekwipunku robi się straszny brud. Dodatkowo na mapie leży masa zbędnych przedmiotów, które zdobywa się przy każdym respawnie. Myślę, że drop itemów z zabić powinien został wyłączony, lub napełniać obecnie przedmioty zabójcy do możliwie pełnych stacków (z itemów ekwipunku zabitego gracza). Dodatkowo od którejś tam wersji Minecrafta można nadać narzędziom "unbreakable", czyli niezniszczalność (to nie jest enchant!). Dzięki temu nasze przedmioty, takie jak miecz nigdy nie będą miały pasa zużycia i to ładnie wygląda. Pozdrawiam Czerwono ☭
- 6 odpowiedzi
-
W Essentials nie ma takiej funkcji. Prawdopodobnie chodzi ci Towarzyszu o teleportację w WorldEdit. https://github.com/sk89q/WorldEdit/blob/34c31dc020307a45482ad53ae4d1459b5f653a94/worldedit-core/src/main/java/com/sk89q/worldedit/extension/platform/PlatformManager.java#L390 Pozdrawiam Czerwono ☭
-
Najprościej będzie zrobić kopię zapasową, a następnie usuwać plugin po pluginie i sprawdzać czy się naprawiło. Myślę, że to najprostsze wyjście. Poza tym poczytaj sobie o dziedziczeniu uprawnień w PermissionsEx; zaoszczędzisz ich kopiowania w grupach. Pozdrawiam Czerwono! ☭
-
Co to da, że ja to przepisze jak nic nie zrozumiesz i niczego się nie nauczysz? Rozumiem jakbyś miał problem, wtedy mogę wszystko wytłumaczyć jak coś działa, co powinieneś robić, a czego unikać. Teraz czekasz tylko na gotowca. Nie po to założyłem konto na forum. Nie założyłem konta, aby wysyłać ludziom gotowce, tylko im pomagać.
-
Ja mam to przepisać w formie pluginu, czy jak? (☭ ͜ ʖ ☭)
-
on chat: cancel event if %region at player% is not set: broadcast "&7[BRAK REGIONU] %name of player%: &f%message%" else: set {_region} to "%region at player%" loop all players: if %region at loop-player% is {_region}: send "&7[%{_region}%] %player%: &f%message%" to loop-player ma być on chat: cancel event if %region at player% is not set: broadcast "&7[BRAK REGIONU] %name of player%: &f%message%" else: set {_region} to "%region at player%" loop all players: if %region at loop-player% is {_region}: send "&7[%{_region}%] %player%: &f%message%" to loop-player Pozdrawiam Czerwono
-
Jak linijka kończy się z dwukropkiem, to następna musi mieć jedno wcięcie więcej.
-
Na serwerze BedWars na mapie Ruiny (ta z dwiema drużynami) jest czarne niebo. Mapa została wygenerowana jako NORMAL, a nie SUPEFLAT. Można to poprawić edytując NBT w level.dat, lub może (nie sprawdzałem) ustawić WorldType przy ładowaniu mapy do serwera. Pozdrawiam Czerwono
