Skocz do zawartości

Skrypt Zarządzania Serwerem


Jaczup
 Udostępnij

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: Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

SkQuery: Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

WildSkript: Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

SkRayFall: Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Linki do dodatkowych pluginów:

NanoCraftingBlocker: Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

FunnyGuilds: Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

NovaGuilds: Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

EssentialsX:Zarejestruj się lub zaloguj, aby zobaczyć ukrytą treść!

Pobieranie:

Wersja 1.0:

 

Edytowane przez KQPL
Odnośnik do komentarza
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
Udostępnij na innych stronach

  • 1 miesiąc temu...
  • 1 miesiąc temu...
  • Szifter zablokował(a) ten temat
Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

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