Skocz do zawartości

Demonizowanie wszystkich skryptów


Rekomendowane odpowiedzi

Witam.

Zauważyłem, że z jakiegoś powodu moje skrypt zaczęły zachowywać się nielogicznie. Przykładowo: wiadomość o pobraniu z portfela pieniędzy wyświetla się, pieniądze ubywają więc arytmetyka działa i ma się dobrze, ale give, pomimo, że jest wyżej w kodzie, nic nie daje!! Inny przypadek: po wejściu na region pvp -itemy gracza nie są zapisywane/przechowywane. Dopiero po przeładowaniu zaczyna działać. I teraz zaczynam się zastanawiać czy to wina zmian wprowadzanych w WG przez dodanie flag, czy moc obliczeniowa nie wyrabia lub wielokrotne zmiany w kodzie zrobiły w Skript bałagan.

Więc pierwsze co mi wpadło do głowy, to:

  1. priorytety w skryptach. jeżeli skript tego nie obsługuje, to email do twórcy.
  2. stworzenie demona, który na podstawie: wysokiego użycie procesora, ilości ramu lub ilość graczy wyłączałby skrypty o niższym priorytecie (priorytety w nazwach np. 1-portfel.sk, 3-masz_wiadomosc) lub opóźniał wykonywanie pętli w tych skryptach dla graczy
  • język bash, python lub inne dla serwera VPS, plugin w java czy sam skript chociaż jego wydajność zapewne jest wątpliwa, więc...

Próbował dziś podstawić wartości zmiennych do wszystkich pętli i wait, ale widzę, że się nie da. Najprostsze rozwiązanie tj. dożo graczy, więc wait {time}, every {time} itd...

 

Połowiczne rozwiązanie mam tu czyli dużo graczy: skrypt można by wyłączyć lub włączyć jego kopie, która działa kilka razy dziennie.

While Loops

While loops look much closer to that diagram I posted above. While other kinds of loops go through a specified amount of objects before running out, a while loop could potentially run on forever. Just like other loops, the will keep iterating until the condition is false.

while {var} is true:
	strike lightning at player
	chance of 10%:
		set {var} to false

In this case the loop will keep running and striking the player with lightning with only a 10% chance of stopping each time. Any condition you can use with an if statement, you can use for a while loop.

Hopefully this clears up some of the confusion around loops in Skript. You can post in the help forum, or send me a PM if you have any questions, or need some more explanation about loops.

-Demon

Pytanie czy ma to sens, czy ktoś się spotkał z tym co opisuje i optymalizował swoje skrypty w jakikolwiek sposób...

Odnośnik do komentarza
https://skript.pl/temat/44466-demonizowanie-wszystkich-skrypt%C3%B3w/
Udostępnij na innych stronach

37 minut temu, luk4sMC napisał:

Pytanie czy ma to sens, czy ktoś się spotkał z tym co opisuje i optymalizował swoje skrypty w jakikolwiek sposób...

Zapętlanie kodu, aby wszystko w nim się wykonało, jest bezsensowne i jest ułomną próbą zapobiegania problemowi. Upewnij się, że:

  • posiadasz stabilną (najlepiej najnowszą) wersję Skripta
  • nie posiadasz do niego żadnych dziwnych dodatków
  • na twoim serwerze nie ma kolidujących ze sobą skryptów
37 minut temu, luk4sMC napisał:

Zauważyłem, że z jakiegoś powodu moje skrypt zaczęły zachowywać się nielogicznie. Przykładowo: wiadomość o pobraniu z portfela pieniędzy wyświetla się, pieniądze ubywają więc arytmetyka działa i ma się dobrze, ale give, pomimo, że jest wyżej w kodzie, nic nie daje!! Inny przypadek: po wejściu na region pvp -itemy gracza nie są zapisywane/przechowywane. Dopiero po przeładowaniu zaczyna działać. I teraz zaczynam się zastanawiać czy to wina zmian wprowadzanych w WG przez dodanie flag, czy moc obliczeniowa nie wyrabia lub wielokrotne zmiany w kodzie zrobiły w Skript bałagan.

To z pewnością nie jest prawidłowe zachowanie Skripta. Upewnij się co do powyższych rzeczy.

37 minut temu, luk4sMC napisał:

priorytety w skryptach. jeżeli skript tego nie obsługuje, to email do twórcy.

Mógłbyś doprecyzować? Jedyne priorytety jakie wspiera Bukkit API to EventPriority definiowany przy nasłuchiwaniu do eventów.

Szczerze nie rozumiem dlaczego bensku miałby wprowadzać coś takiego jak priorytety. To w twoim interesie leży, aby albo nie tworzyć serwera na samych skryptach, albo nie tworzyć z nich potworów na tysiące linijek. Dopóki to nie jest problem ze samym Skriptem, dopóty nikt nie będzie tego łatał.

37 minut temu, luk4sMC napisał:

stworzenie demona, który na podstawie: wysokiego użycie procesora, ilości ramu lub ilość graczy wyłączałby skrypty o niższym priorytecie (priorytety w nazwach np. 1-portfel.sk, 3-masz_wiadomosc) lub opóźniał wykonywanie pętli w tych skryptach dla graczy

Nie widzę sensu robienia tego, ale możesz to nawet samemu zrobić. Przykładowo możesz pobierać wartość TPS i jeżeli jest niższy niż 18, bierzesz listę 'enabled scripts' i zapętlasz ją, po czym według już własnych kryteriów wyłączasz dany skrypt.

Edytowane przez Kormic
Odnośnik do komentarza
https://skript.pl/temat/44466-demonizowanie-wszystkich-skrypt%C3%B3w/#findComment-278901
Udostępnij na innych stronach

Cytat

Zapętlanie kodu, aby wszystko w nim się wykonało, jest bezsensowne i jest ułomną próbą zapobiegania problemowi. Upewnij się, że:

Nie chodzi mi o zapętlenie kodu a przykładowo o to, że przy dużym obciążeniu serwera, skrypty takie jak "masz wiadomość" nie będą wyświetlały 15 graczom co 60 sek, że jakąś wiadomość mają, a będzie to co 1 godzinę. Wiadomość wyświetla się (spami czat) co 60 sek. celowo, żeby gracz tą wiadomość odebrał i usunął, a nie zawracał gitarę administracji. Wiadomość co 10 min., że do twojego portfela wpadły 3$ też celowo, żeby zachęcić gracza do pozostania na serwerze i zarabiania na jakąś rangę, permisje.

Cytat

Szczerze nie rozumiem dlaczego bensku miałby wprowadzać coś takiego jak priorytety. To w twoim interesie leży, aby albo nie tworzyć serwera na samych skryptach, albo nie tworzyć z nich potworów na tysiące linijek. Dopóki to nie jest problem ze samym Skriptem, dopóty nikt nie będzie tego łatał.

To od pierwszego twórcy Skrip jeżeli dobrze rozumiem.
 

Cytat

Hopefully this clears up some of the confusion around loops in Skript. You can post in the help forum, or send me a PM if you have any questions, or need some more explanation about loops.

Cytat

Szczerze nie rozumiem dlaczego bensku miałby wprowadzać coś takiego jak priorytety. To w twoim interesie leży, aby albo nie tworzyć serwera na samych skryptach, albo nie tworzyć z nich potworów na tysiące linijek. Dopóki to nie jest problem ze samym Skriptem, dopóty nikt nie będzie tego łatał.

Tak, to dla mnie nie problem ;) Napisanie pętli nieskończonej dla serwera VPS, która dla każdego skryptu, który zaczynałby się od niskiego priorytetu czyli np. 03-wiadomosc.sk...

CPU=50
CPU=100

while true
do

	if [ CPU > 50 ]; then
		
        for file in 03-*.sk   #kazdy skrypt z priorytetem low ma na początku pliku wartość 03-
        do
        	#zmien nazwe z 03-masz_wiadomosc.sk na -03-masz_wiadomosc.sk
        	mv "&file" "-$file"
        done
	
    fi

sleep 5
done

Tylko, że to twórcy a nie Ciebie należałoby zapytać. Nie uważasz? ;) A że wielu osób tutaj dzieli się swoimi skryptami i pyta co zmienić, poprawić, to stwierdzam, że nie obraziłby się gdyby ktoś podrzucił mu gotowy kod i zapytał czy ma to sens!!!

Edytowane przez luk4sMC
Odnośnik do komentarza
https://skript.pl/temat/44466-demonizowanie-wszystkich-skrypt%C3%B3w/#findComment-278902
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ę...