-
Ilość zawartości
536 -
Rejestracja
-
Ostatnia wizyta
-
Wygrane w rankingu
13
Treść opublikowana przez TheMolkaPL
-
Co najlepszej wybrać/Co jest lepiej zoptymalizowane?
TheMolkaPL odpowiedział(a) na test45345 pytanie w Pytania i problemy
Glowstone i Spigot to zupełnie dwie różne implementacje. Spigot jest forkiem, czyli "rozwinięciem" CraftBukkita, który ten w dużej mierze bazuje na kodzie serwera vanilli Mojangu. Wszystkie PaperSpigoty, TacoSpigoty i co tam jeszcze jest bazuje na Spigocie. Glowstone natomiast jest od zera napisanym silnikiem serwera w żaden sposób nie korzystającym z serwera Mojangu (więc nie ma i nie było z nim w związku z tym problemów prawnych). To co chcesz wybrać to zależy od waszych potrzeb. Ja jednak preferowałbym czystego Spigota ze względu na szybkość aktualizacji, a samych dodatkowych ustawień kolejnych forków i tak bym nie skorzystał. PaperSpigot sam w sobie nie jest jakiś optymalniejszy. Dodaje natomiast dużo opcji serwera, które można wyłączyć, bo na naszym trybie gry będą nie potrzebne co doprowadzi do zwiększenia jego wydajności. BungeeCord (którego z jakiegoś powodu nie ma liście), a LilyPad to też dwa różne proxy. BungeeCord został zapoczątkowany przez md5 i napisany w Javie, GoLilyPad to proxy pisane zupełnie z innej perspektywy i w Go (to taki język od Google). Wygląda też na to, że GoLilyPad został niestety porzucony, bo ostatni commit został wykonany w grudniu zeszłego roku. Wszystkie inne są forkami BungeeCorda. HexaCord to nawet nie wiadomo co dodaje ze względu na brak dokumentacji, a samo repozytorium jest forkiem pełnych merge z upstream. Mógł facet zrobić to normalnie na format-patch, żeby było czytelne i łatwe w rozwoju Waterfall nie dodaje czegoś specjalnego, głównie to są jakieś pierdoły. Metrics, dodawanie/usuwanie serwerów w runtime (a getServers() jest przecież mutable!) - pełne patche masz tutaj. Travertine jest Waterfallem, ale z obsługą pakietów z 1.7. Tutaj też wybierz znowu to co ci będzie pasować najlepiej do twoich potrzeb. Ja wybrałbym czystego BungeeCorda. -
W uprawnieniach BungeeCord nie ma systemu gwiazdek, więc jak zrobicie plugin.*, to nie będziecie mieli wszystkich uprawnień od plugin. Trollujecie czy udajecie... buraku... Czy ja was obraziłem?
-
Notepad++ - to jest notatnik. Istnieje poza nim wiele notatników Sublime Text, Atom, istnieją jeszcze takie terminalowe - VIM, Emacs
-
Zmień ustawienie unknown-command
-
Masz wszystko w błędzie napisane - masz nieprawidłowe dane do połączenia do bazy danych dla użytkownika root. Pamiętaj, aby roota nie używać na produkcji ponieważ ma nieograniczone uprawnienia. Każdy plugin, tutaj skrypt, powinien mieć swojego własnego użytkownika z dostępem jedynie do swoich tabel.
-
https://stackoverflow.com/a/15562373
-
To nie ma w tym momencie żadnego znaczenia. Teraz rozmawiamy o PHP.
-
Biblioteka mysql w PHP została już wiele lat temu porzucona, a nie dawno usunięta. Używaj biblioteki mysqli, chociaż nie wiem czy wspiera przygotowywanie zapytań SQL. Jeżeli nie to ja polecam po prostu obiektowe PDO, wspiera także wiele implementacji sterowników baz danych.
-
Musisz sobie napisać stronę WWW, która będzie te dane z bazy pobierać i wyświetlać na stronie. Możesz przerobić też jakąś istniejącą open-source, ale to zależy jak blisko twój projekt byłby spokrewniony z tą otwartą stroną. Jest wiele różnych języków napisania czegoś takiego. Takim najtańszym, ale nieestetycznym rozwiązaniem byłoby na pewno napisanie prostego skryptu PHP, który pobiera dane z bazy i wstrzykuje je do zwartego w tym samym dokumencie PHP dokumentu HTML.
-
Dodawanie funkcji serwera poprzez BungeeCord jest strasznie niewygodne. Lepiej zrobić plugin na Bukkit i synchronizować te dane, na przykład Redisem, albo bazą danych. Dlaczego w ogóle rozwijać funkcje serwera przez BungeeCorda? Na pierwszy rzut oka wydaje się on integralny dla wszystkich serwerów i graczy, to przecież tak nie jest. Gdy sieć nam urośnie i będzie potrzebowali stawiać kolejne instancje BungeeCorda to już nie będzie to żadna integracja. Będziemy wtedy musieli synchronizować te dane między instancjami. BungeeCord ma okrojoną obsługę pakietów (istnieje jedynie logowanie/scoreboardy/teleportacja/itp), przez co jesteśmy bardzo ograniczeni w możliwościach operowania na kliencie. No chyba, że samemu chcemy pisać pakiety. Dodatkowo BungeeCord nie posiada całej logiki gry, więc to też utrudnia robienie wielu rzeczy. BungeeCord jest proxy, więc nie może bezpośrednio operować na serwerze. Przykładem mogą tu być pirackie serwery i system logowania. Mamy sobie taki /helpop, ale przecież Bungee nie wie czy ten admin na serwerze jest zalogowany, czy nie. Gdyby tak nie było to nie wiadomo czy jest to rzeczywiście ta osoba. Ryzykujemy wyciekiem poufnych informacji do osób które nie posiadają (a przynajmniej nie powinny mieć) do nich dostępu. Dlatego BungeeCord jest najlepiej zostawić do celów wyświetlania serwera na liście serwerów (pingowanie), obsługa jakichś rzeczy od proxy, typu kicki i połączenia, oraz zarządzanie serwerami. Całą resztę najlepiej pisać na Bukkicie/Spigocie i synchronizować te dane przykładowo bazą danych i/lub Redisem, albo jakimś innym systemem. Co do waszego pytania Towarzyszu to wszystko zależy jakiej technologii użyjecie. Przykładowo używając pub/sub Redisa można wysyłać wiadomości helpop. Przy wykonaniu komendy /helpop publikujesz do Redisa wiadomość gdzie zawierasz kto to napisał i jaką treść. Wtedy każdy z serwerów musi taką wiadomość subskrybować, jeżeli nadejdzie to loopujesz wszystkich graczy z jakimś tam uprawnieniem i wysyłasz im wiadomość tego helpopa. Z /msg będzie trochę trudniej, bo wiadomości w Redis nie można edytować czy coś. Można zrobić tak, że serwer publikuje wiadomość, a następnie serwer na którym gra gracz odbiorca wiadomości publikuje wiadomość zwrotną o sukcesie wysłania prywatnej wiadomości.
-
Autor: Clamen Wersja: v1.0 variables: {chat} = true command /chat [<text>]: trigger: if arg 1 is not set: if player has permission "chat.pomoc": send "&3Dostepne komendy:" send " &6/chat &2- Dostepne komendy" send " &6/chat on &2- Wlacza chat" send " &6/chat off &2- Wylacza chat" send " &6/chat cc &2- Czysci chat" send "&8-----------------------------" stop else: send " &8> &cNie masz dostepu do tej komendy!" stop if arg 1 is "on": if {chat} is false: if player has permission "chat.on": set {chat} to true broadcast " &8> &9Chat zostal wlaczony przez: &6%player%" stop else: send " &8> &cNie masz dostepu do tej komendy!" stop else: send " &8> &cChat jest juz wlaczony!" stop if arg 1 is "off": if {chat} is true: if player has permission "chat.off": set {chat} to false broadcast " &8> &9Chat zostal wylaczony przez: &6%player%" stop else: send " &8> &cNie masz dostepu do tej komendy!" stop else: send " &8> &cChat jest juz wylaczony!" stop if arg 1 is "cc" or "clear": if player has permission "chat.cc": loop 128 times: broadcast "" broadcast " &8> &9Chat zostal wyczyszczony przez: &6%player%" stop else: send " &8> &cNie masz dostepu do tej komendy!" stop on chat: if {chat} is false: if player has permission "chat.pisanie": stop else: cancel event send " &8> &cChat jest aktualnie wylaczony!" stop else: if player has permission "chat.antyslow": stop set {_waited} to difference between {chat.%player%.spam} and now if {_waited} is less than 5 real seconds seconds: send " &8> &cWiadomosci mozesz wysylac co &a5 &csekund!" cancel event stop set {chat.%player%.spam} to now cancel event stop #- - - - - - - - -[cChat]- - - - - - - - #----------------------------------# #→Autor: mrsofnik #→cChat w wersji v1.0 # #→komendy: #→Wymagania: # #→/c czysc - czyści chat #→Skript wersja 2.0.2 (lub nowsza) # #→/c off - blokuje chat #----------------------------------# #→/c on - odblokowywuje chat # #→/c pomoc - pomoc odnośnie skryptu # #→/c aon - wlacza auto czyszcenie chatu # #→/c aoff - wylacza auto czyszcenie chatu# #- - - - - - - - -[cChat]- - - - - - - - # #----------------licencja-----------------# #→Zezwalam na edycję skryptu # #→Zakaz usuwania autora oraz licencji # #→Zabraniam sprzedaży skryptu # #→Zakaz podszywania sie pod autora skryptu# #----------------# # →opcje # #----------------# options: time : 1 #Czas w jakim następuje auto czyszczenie chatu(w minutach) logo : &4cChat #Prefix przed wiadomościami pisanie_czas : 3 #Co ile można pisać wiadomości na chacie(w sekundach} max_ost : 3 #Maksymalna liczba ostrzeżeń za spam wiadomościami,po jej przekroczeniu gracz zostaje wyrzucony czas_ost : 1 #Po jakim czasie wygasają ostrzezenia gracza(w minutach) czas_kom : 1 #Co ile sekund można wpisywać komendy max_kom_ost : 3 #Maksymalna liczba ostrzeżeń za spam komendami,po jej przekroczeniu gracz zostaje wyrzucony! czas_kom_ost : 1 #CZas po jakim wygasają ostrzeżenia za spam komendami #----------------# # →zmienne # #----------------# variables: {chat} = true {auto} = true {pisanie.%player%} = false {spam.%player%} = 0 {kom.%player%} = false {ost.kom.%player%} = 0 #- - - - - - - - -Kod skryptu- - - - - - - - -# command /c [<text>]: trigger: player has permissions "cchat.admin" or "cchat.komendy": if arg 1 is "czysc": loop 100 times: message " " to all players loop 1 times: send "[{@logo}&f]&aChat został wyczyszczony przez &c %name of player%&a!" to all players if arg 1 is "off": set {chat} to false message "[{@logo}&f]&aChat zostal zablokowany przez &c %name of player%&a!" to all players if arg 1 is "on": set {chat} to true message "[{@logo}&f]&aChat został odblokowany przez &c %name of player%&a!" to all players if arg 1 is "pomoc": send "[{@logo}&f]- - - - - - - - -&aPomoc&f- - - - - - - - - -|" send "&l1.&r&a/c czysc - &dczysci chat" send "&c- - - - - - - - -- - - -" send "&l2.&r&a/c off - &dblokuje chat" send "&c- - - - - - - - - - - - - - " send "&l3.&r&a/c on - &dodblokowywuje chat" send "&c- - - - - - - - - - - - - - - - - - - - " send "&l4.&r&a/c aon - &dWlacza auto czyszczenie chatu" send "&c- - - - - - - - - - - - - - - - - - - - - -" send "&l5.&r&a/c aoff - &dWylacza auto czyszczenie chatu" send "[{@logo}&f]- - - - - - - - -&aPomoc&f- - - - - - - - - -|" send "[&4cChat&f]&aSkript wykonany przez mrsofnik!" if arg 1 is "aon": set {auto} to true send "[{@logo}&f]&aAuto czyszczenie chatu uruchomione!" if arg 1 is "aoff": set {auto} to false send "[{@logo}&f]&aAuto czyszczenie chatu wylaczone!" else: send "[{@logo}&f]&aNie masz uprawnien aby to robic!" every {@time} minutes: if {auto} is true: loop 100 times: message " " to all players loop 1 times: send "[{@logo}&f]&aChat zostal wyczyszczony &cAutomatycznie&a!" to all players on chat: player don't have permissions "cchat.admin" or "cchat.pisz": if {chat} is false: cancel event send "[{@logo}&f]&aChat jest zablokowany!" if {spam.%player%} is {@max_ost}: kick player due to "[{@logo}&f]&aZostales wyzucony za spam!" set {spam.%player%} to 0 player don't have permissions "cchat.admin" or "cchat.reklama": message contains "serwer" or "zapraszam" or "wijaj" or "crsv" or "mrsv" or ".pl" or ".net" or "wbij" or "ip": cancel event send "[{@logo}&f]&aZakaz reklamowania!" on join: send "&aSkript moderujący chat &f[&4cChat&f]&a wykonany przez mrsofnik" to player on load: send "[&4cChat&f]&aSkript &ccChat &a poprawnie uruchomiony!" to console send "[&4cChat&f]&aWykonany przez &cmrsofnik&a!" to console on chat: player don't have permissions "cchat.admin" or "cchat.spam": if {pisanie.%player%} is false: set {pisanie.%player%} to true wait {@pisanie_czas} seconds set {pisanie.%player%} to false else: cancel event add 1 to {spam.%player%} send "[{@logo}&f]&aMozesz wysylac tylko jedna wiadomosc na &c{@pisanie_czas} &asekund/y!" send "[{@logo}&f]&aOstrzezenia &c%{spam.%player%}%/{@max_ost}&a!" wait {@czas_ost} minutes set {spam.%player%} to 0 on command: player don't have permissions "cchat.admin" or "cchat.spam": if {kom.%player%} is false: set {kom.%player%} to true wait {@czas_kom} seconds set {kom.%player%} to false else: cancel event add 1 to {ost.kom.%player%} send "[{@logo}&f]&aMozesz uzyć tylko jedna komende na &c{@czas_kom} &asekund/y!" send "[{@logo}&f]&aOstrzezenia za spam komendami: %{ost.kom.%player%}%/{@max_kom_ost}" wait {@czas_kom_ost} minutes set {ost.kom.%player%} to 0 if {ost.kom.%player%} is {@max_kom_ost}: kick player due to "[{@logo}&f]&aZostales wyzucony za spam!" set {ost.kom.%player%} to 0 #-------------------------------------------|------[Koniec Skryptu]------|--------------------------------------# # |_ wykonanego przez mrsofnik_| #
-
Problem z Multi-Core Portals
TheMolkaPL odpowiedział(a) na Piotr12345YT pytanie w Pytania i problemy
Spadanie z pozycji na której zostało się przeteleportowanym dzieje się wtedy, gdy klient nie ma jeszcze potrzebnej mapy, aby zdecydować, czy już znajduje się na solidnym bloku. Spokojnie, jest to tylko po stronie klienta. Zaraz po załadowaniu nam chunków zostaniemy z powrotem przeniesieni na najbliższy solidny blok. A plugin nazywa się Multiverse-Portals -
Nie będzie. I to z kilku powodów: W Skript nie da się dodać filtrów do Loggera przez co nie da się w żaden sposób ukryć co wpisał gracz jako komenda. Przez to także wprowadzona komenda, niefiltrowana, jest logowana w całości do konsoli oraz pliku (i ewentualnie innych appenderów jak są). Hasła są w ten sposób zapisywane jako surowy tekst z przypisanym nickiem, UUID, a nawet adresem IP. To już jest powód dla którego robienie logowania albo innych podobnych skryptów nie jest możliwe. Jest to zaprzeczenie zabezpieczenia treści graczy którzy nam, jako twórcy serwera ufają o ich bezpieczeństwie. Skript nie posiada możliwości hashowania haseł. Jedyne możliwe hashowanie odbywa się poprzez algorytm MD5, który już dawno został złamany (można taki hash przywrócić do początkowego tekstu). Obecnie na dzień dzisiejszy, tj. 17/4 2018 najbezpieczniejszym algorytmem hashowania haseł jest SHA256. Skript nie będzie potrafi wygenerować nam unikalnej soli dla gracza. Sól jest nam potrzebna do zbudowania hasha hasła. W innym przypadku (tak jak zrobili to amatorzy z Adobe) gracze z tym samym hasłem będą mieli ten sam hash, co jest oczywiście niedopuszczalne. Do gracza wysyłana jest wiadomość... z jego hasłem - trzeba mieć nieźle nierówno w baniaku żeby coś takiego robić...
-
Więcej bloków jest - co w tym złego. Nikt nie zmusza cię abyś z nich korzystał. Po drugie to jest akurat mało ważne co sądzi właściciel, lecz to co woli społeczność.
-
PROBLEM Z NALICZANIEM WYKOPANEGO STONE ETC.
TheMolkaPL odpowiedział(a) na MrCooki pytanie w Pytania i problemy
Musisz aktualizować opis przy każdym wykopanym stone. Nie polecam tego jednak, bo wtedy klient gra animację otrzymania przedmiotu. Taki kilof przy każdym wykopanym stone będzie miał animację pojawiania się na ekranie. -
Tego akurat nie wiem, zobacz w kodzie NMS jak Noteblock działa i wysyła taki pakiet. To jest najlepsze rozwiązanie.
-
Dodaj to, aby można było sobie samemu definiować jakie chce się mieć grupy na serwerze. Takie pisanie grup hardcoded to bardzo zły, niepraktyczny i niewygodny sposób. Nooo i nie anuluj eventu on chat, bo to psuje wszelką kompatybilność ze wszystkimi innymi skryptami i pluginami. Jakieś cooldowny, NPC ma blokowanie spamowania, jakiś plugin może rejestrować chat do bazy danych, itd, itp... wiadomo o co chodzi.
-
Wymaga dodatku Skelett: command /unbreak: trigger: set player's tool to an unbreakable player's tool ALBO Wymaga dodatku Umbaska: add a unbreakable diamond sword of sharpness 12 to player add unbreakable glowing stone pickaxe of fire aspect 2 to player
-
Musisz nadać odpowiedni mu ton dla nuty.
-
https://docs.skunity.com/syntax/search/unbreakable
-
Po co wszędzie masz wait 1 tick? To nie ma sensu, coś powinno się dziać błyskawicznie. Wiele komend nie ma sensu. Na przykład te do WorldEdita... tak pamiętam, był taki bug, że gościu zapomniał dodać @CommandPermission w komendach, ale w następnym commicie to naprawili Ale to było 3 lata temu albo dawniej Tak trudno pluginy zaktualizować? To samo z blokowanie /pl, itd - po co? Twórcy pluginów poświęcają na prawdę dużo czasu ZA DARMO na ich rozwój, a twórca serwera jest ku+asem, i nawet nie podziękuje im za to drobną informacją kto jest ich autorem... Spójrz ile czasu sk89q spędził przy pisaniu WorldEdita, WorldGuarda, CommandBooka (bardzo popularny przed tym jak hipsterzy przeszli na Essentials), CraftBooka (świetny plugin z mechaniką, choć dzisiaj raczej zapomniany, a szkoda ) albo CommandHelpera (taki przodek Skripta xd). Ile czasu mbax spędził na pisaniu i rozwoju Bukkita, VanishNoPacket, TagAPI... md5, Wolvereness, amaranth, EvilSeph...
-
Wszystko macie napisane w logach serwera. Wystarczy je tylko otworzyć i przeczytać...
-
To w ogóle działa? Pętla while zablokuje główny wątek serwera naprawiając w kółko zbroję
-
Wrzucasz takowy plugin do folderu plugins serwer i restartujesz serwer. Następnie otwierasz folder o nazwie pluginu w folderze plugins. Tam masz (najczęściej, według konwencji) plik config.yml. Mogą też być inne - warto do nich zajrzeć. Konfigurujesz plugin do swoich porzeb, restartujesz serwer. Sprawdzasz w konsoli czy plugin nie wyrzucił jakichś błędów - jak nie to testujesz funkcje. Gotowe!
-
Co to znaczy rozkodowane? O_o FunnyGuilds jest open-source i w każdym momencie możesz pobrać jego kod źródłowy z jego repozytorium Git.
- 4 odpowiedzi
-
- funnyguilds
- guilds
-
(i 2 więcej)
Oznaczone tagami:
