Skocz do zawartości
  • 0

Loop - crash serwera


Piotr12345YT

Pytanie

Witam, mam problem z skryptem a dokładniej jego częścią - loop. Po wpisaniu komendy ( włączanie vanisha ) wszystko działa, jednak po wyłączeniu serwer się wyłącza. Jest jakiś inny sposób, bardziej optymalniejszy by action bar był ciągle do momentu wyłączenia vanisha?

loop 99999999999 times:
	if {vanish.%player%} is true:
		send action bar "vanish on" to player
		wait 2 seconds

 

Odnośnik do komentarza
https://skript.pl/temat/54001-loop-crash-serwera/
Udostępnij na innych stronach

9 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
5 minut temu, Saanjuk napisał:
while player is online:
    if {vanish.%player%} is true:
        send action bar "vanish on" to player
        wait 2 seconds

 

Ten kod będzie jeszcze gorszy, ponieważ wejdzie w pętlę gdy tylko ktoś dołączy. Rozwiązanie jest bardzo proste - wystarczy zrobić pętlę while, która sprawdza czy zmienna z vanishem jest ustawiona. Istnieje jeszcze prostsze i dużo lepsze rozwiązanie - instalacja pluginu, np. essentialsx lub vanishnopacket.

Odnośnik do komentarza
https://skript.pl/temat/54001-loop-crash-serwera/#findComment-328167
Udostępnij na innych stronach

  • 0

@Helios1993czytaj prosze uważniej:

 

37 minut temu, Piotr12345YT napisał:

Witam, mam problem z skryptem a dokładniej jego częścią - loop. Po wpisaniu komendy ( włączanie vanisha ) wszystko działa, jednak po wyłączeniu serwer się wyłącza. Jest jakiś inny sposób, bardziej optymalniejszy by action bar był ciągle do momentu wyłączenia vanisha?

kod jest wyłącznie częścią większego skryptu

kolega użył :
 

loop 99999999999 times:

po wykonaniu akcji

ja zamieniłem jego pętle od której serwer dpstaje pier$^@a na 

 

while player is online:

które również jest wykonane po komendzie

co za tym idzie skanuje tylko graczy którzy wykonali akcje dla przykładu:

 

command /komenda:
	trigger:
		while player is online:
			if {vanish.%player%} is true:
				send action bar "vanish on" to player
				wait 2 seconds


skanuje tylko graczy którzy wpisali /v 

a optymalniej byłoby nawet:

 

command /komenda:
	trigger:
		if {vanish.%player%} is true:
			while player is online:
				send action bar "vanish on" to player
				wait 2 seconds

poniewaz wtedy skanuje tylko pod kątem czy mają vanisha  i dopiero jezeli mają to uruchamia "pętle"

Edytowane przez Saanjuk
Odnośnik do komentarza
https://skript.pl/temat/54001-loop-crash-serwera/#findComment-328169
Udostępnij na innych stronach

  • 0

no i to by bylo na tyle z optymalizacji xD
zrobiłęm masło maślane które działa i powinno być powiedzmy optymalniejsze napewno niż twój loop:

 

		if {vanish.%player%} is true:
			while player is online:
				if {vanish.%player%} is false:
					stop
				else:
					send action bar "vanish on" to player
					wait 2 seconds

czyli po wykonaniu czegośtam gdzie wklejasz ten wycinek kodu

skanuje czy gracz który wykonał akcje ma vanish

następnie sprawdza czy gracz ten jest online

jęzeli po sprawdzeniu czy jest online nadal ma vanish to jest pętla

jeżeli przestanie go mieć 4some reason (np ktoś mu wyłączy) to wtedy stopuje pętle

 

inna sprawa że jeżeli używasz essentials vanish to tam się da zrobić live pokazywanie czy ktoś vanish ma czy nie

do tego jest potrzebny SkriptPlaceholder 
wyciągasz czy ktoś ma permisje do vanish jęzeli ma to wyświetlasz mu placeholder z essentials vanished true/false który możesz sobie dowolnie customizować zamiennikami placeholderów 
ja miałem scoreboard na którym mi live kopazywalo czy mam vanish i wszystko z pluginy TAB by neznamy


@MOD :
Połącz posty bo się znowu zapomniałem edytować i napisałem nowego.. przepraszam

Edytowane przez Saanjuk
ivall

Łączę posty

Notatka dodana przez ivall

Odnośnik do komentarza
https://skript.pl/temat/54001-loop-crash-serwera/#findComment-328172
Udostępnij na innych stronach

  • 1
1 godzinę temu, Saanjuk napisał:

czytaj prosze uważniej

Czytam uważnie, także w tym "większym kodzie" występuje ten sam problem co w oryginale. Sam możesz to przetestować.

Kod powinien wyglądać tak:

command /vanish [<text>]:
	trigger:
		if {vanish::%player%} is true:
			clear {vanish::%player%}
			stop
		set {vanish::%player%} to true
		while {vanish::%player%} is true:
			send action bar "tekst" to player
			wait 2 seconds

Brakuje tu kodu odpowiadającego za ukrywanie przed graczami dołączającymi i "odkrywanie" przed graczami wychodzącymi po włączeniu vanisha, ale to już łatwo zrobić.

Edytowane przez Helios1993
Odnośnik do komentarza
https://skript.pl/temat/54001-loop-crash-serwera/#findComment-328182
Udostępnij na innych stronach

  • 0

mod może uznać to za post nie do tematu ale ja uważam że pozostaje w temacie:

@Helios1993 zbawco otworzyłeś mi oczy

nie wiedziałęm że takie coś istnieje:
 

while {} is true:

nawet nie wiesz jak bardzo ułatwia mi to kombinowanie nad moim projektem

Odnośnik do komentarza
https://skript.pl/temat/54001-loop-crash-serwera/#findComment-328185
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Nieaktywny
Odpowiedz na pytanie...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

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

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