Skocz do zawartości

Skrypt Zarządzania Serwerem


Rekomendowane odpowiedzi

Hej, tutaj KQPL to jest już mój trzeci skrypt ;)

Nad napisaniem tego skryptem siedziałem ponad godzinę.

Testowane na wersji: 1.8.8.

Proszę nie hejtujcie nie za bardzo...

Wymagane Pluginy:

- Skript,

- SkQuery,

- WildSkript,

- SkRayFall.

 

Dodatkowe pluginy, które są używane przez ten skrypt:
- NanoCraftingBlocker Plugin na Blokade Craftingow,
- FunnyGuilds lub NovaGuilds Plugin na Gildie,
- EssentialsX Plugin na zestawy oraz moderacje.

Linki do wymaganych pluginów:

Skript: https://github.com/SkriptLang/Skript/releases

SkQuery: https://www.spigotmc.org/resources/skquery-1-9-1-15.36631/

WildSkript: https://dev.bukkit.org/projects/wildskript/files

SkRayFall: https://dev.bukkit.org/projects/skrayfall/files

Linki do dodatkowych pluginów:

NanoCraftingBlocker: https://mega.nz/#!BAln1SQD!v1LcsadCEC2CaljC8bGUEE3t8RqOoNEltlaOcVP0bVc

FunnyGuilds: https://github.com/FunnyGuilds/FunnyGuilds/releases

NovaGuilds: https://dev.bukkit.org/projects/novaguilds/files

EssentialsX: https://www.spigotmc.org/resources/essentialsx.9089/

Pobieranie:

Wersja 1.0:

 

Edytowane przez KQPL
Odnośnik do komentarza
https://skript.pl/temat/36294-skrypt-zarz%C4%85dzania-serwerem/
Udostępnij na innych stronach

Szczerze to nie chce mi się czytać prezentacji ani sprawdzać co ten kod dokładnie robi. Odniosę się tylko do tego co mnie w nim razi i powinno być poprawione:

  • Nie potrzeba (ba! nawet nie można dawać) opóźnienia przy tworzeniu GUI, to tylko pozostałość po dawno nieużywanym format slocie ze SkQuery. Aktualnie jedyne co osiągasz to wolniejsze ładowanie GUI:
    wait 2 ticks
    open chest with 6 rows named "&cZarządzanie serwerem 1/2" to player
    wait 2 ticks
  • Robisz podwójne warunki w miejscu gdzie możesz po prostu użyć else (o którego istnieniu widzę że nie nawet nie wiesz). Dajemy go pod dowolnym warunkiem i jeżeli ten warunek nie jest spełniony to wykona się kod z else, przykładowo:
    #jeżeli nick gracza to maruda, powita gracza, a jeżeli nie to wykona się kod po else i wyświetli wiadomość że nie jesteś maruda.
    if name of player is "Maruda":
    	send "Cześć Maruda"
    else:
    	send "Nie jesteś Marudą"

    Więc odnosząc się do twojej pracy - tworzenie GUI jest zrobione niepoprawnie. Else powoduje że zmienna nie jest sprawdzana dwa razy, ale jedynie raz. Oszczędzasz sobie procesor, mniejsze lagi itd. Czyli wstawianie itemków nie powinno wyglądać w ten sposób:

    if {plugins} is true:
    	set player's current inventory's slot 31 to ("MHF_Question" parsed as offline player)'s skull named "&c&lPluginy" with lore "&7Aktualny status: &aWŁĄCZONE"
    
    #(jakieś kilkanaście linijek kodu)
    
    if {plugins} is false:
    	set player's current inventory's slot 31 to ("MHF_Question" parsed as offline player)'s skull named "&c&lPluginy" with lore "&7Aktualny status: &cWYŁĄCZONE"

    Tylko tak:

    if {plugins} is true:
    	set player's current inventory's slot 31 to ("MHF_Question" parsed as offline player)'s skull named "&c&lPluginy" with lore "&7Aktualny status: &aWŁĄCZONE"
    else:
    	set player's current inventory's slot 31 to ("MHF_Question" parsed as offline player)'s skull named "&c&lPluginy" with lore "&7Aktualny status: &cWYŁĄCZONE"
  • Nie powielaj eventów, zapisuj wszystko w jednym i wtedy sprawdzaj różnice (itemy, sloty, itd.)
    on place beacon:
        if {beacon} is false:
            cancel event
    on place tnt:
        if {tnt} is false:
            cancel event
    on place bedrock:
        if {bedrock} is false:
            cancel event

    Ten kod powinien wyglądać tak:

    on place:
    	if event-block is beacon:
    		if {beacon} is false:
    			cancel event
    	if even-block is tnt:
    		if {tnt} is false:
    			cancel event
    	if event-block is bedrock:
    		if {bedrock} is false:
    			cancel event

    A nawet tak, o ile użyjemy listy:

    on place:
    	if event-block is beacon or tnt or bedrock:
    		if {%event-block%} is false:
    			cancel event
  • Jeżeli chcesz żeby każdy item w inventory był zablokowany to nie musisz wpisywać wszędzie cancel event, wystarczy to zrobić raz:
    if inventory name of current inventory of player is "&cZarządzanie serwerem 1/2":
    	if clicked slot is 8 or 0 or 45 or 53:
    		cancel event
    	if clicked slot is 53:
    		cancel event
    		close player's inventory
    		execute player command "commands"
    	#(i tak dalej)
    if inventory name of current inventory of player is "&cZarządzanie serwerem 1/2":
    	cancel event
    	if clicked slot is 53:
    		close player's inventory
    		execute player command "commands"
    	#(i tak dalej tylko już bez przerywania eventu)
  • Jeżeli chcesz trochę bardziej zabezpieczyć GUI przed bugowaniem to polecam najpierw stworzyć wszystkie itemki i ekwipunek w zmiennej a dopiero potem otwierać ją graczowi, np. w ten sposób:
    #ustawiasz zmienną jako skrzynke
    set {_jakiesGUI} to chest with 6 rows named "test"
    
    #formatujesz sloty w zmiennej
    set slot 31 of {_jakiesGUI} to ("MHF_Question" parsed as offline player)'s skull named "&c&lPluginy" with lore "&7Aktualny status: &aWŁĄCZONE"
    set slot 0 of {_jakiesGUI} to 13 of diamond
    #i tak dalej
    
    #i na sam koniec tylko otwierasz tą zmienną graczowi:
    open {_jakiesGUI} to player

 

Edytowane przez PanMaruda
Odnośnik do komentarza
https://skript.pl/temat/36294-skrypt-zarz%C4%85dzania-serwerem/#findComment-232237
Udostępnij na innych stronach

  • 1 miesiąc temu...
  • 1 miesiąc temu...
W dniu 27.04.2020 o 21:50, GempXPlay napisał:

Od teraz funkcje WildSkripta zastępuje plugin WolfSk, znajdziesz go tu https://www.spigotmc.org/resources/wolfsk.77943/ działa na 1.10-1.15.2

Dzięki ;)

Odnośnik do komentarza
https://skript.pl/temat/36294-skrypt-zarz%C4%85dzania-serwerem/#findComment-244061
Udostępnij na innych stronach

  • Szifter zablokował(a) ten temat
Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...