Skocz do zawartości
  • 0

Skrypt na czyszczenie chatu


Pytanie

W kodzie poniżej "send" wysyła wiadomość wyłącznie do gracza wysyłającego komendę /discord

Chce zrobić jeszcze komendę czyszczącą chat, czyli po prostu 100 razy (bo basicowo tyle linijek ma chat) skrypt wysyła pustą wiadomość + w ostatniej wiadomości komunikat, że chat został wyczyszczony przez moderatora.
Wiadomo że są do tego jakieś pluginy ale po co takowy dodawać dla jednej prostej funkcji.

Pytanie jest takie - jak zrobić żeby te puste wiadomości czyszczące chat były wysyłane do każdego, a nie jedynie do adresata komendy?

Z góry dziękuje, smacznej kawusi ☕

Edytowane przez CatsonPL
błąd językowy
Odnośnik do komentarza
https://skript.pl/temat/57731-skrypt-na-czyszczenie-chatu/
Udostępnij na innych stronach

1 odpowiedź na to pytanie

Rekomendowane odpowiedzi

  • 1
33 minuty temu, CatsonPL napisał:

Pytanie jest takie - jak zrobić żeby te puste wiadomości czyszczące chat były wysyłane do każdego, a nie jedynie do adresata komendy?

Należy określić adresata wiadomości tuż po samej wiadomości. W tym przypadku wystarczy wykorzystać wyrażenie 'all players'.
Na przyszłość zalecam korzystać z dokumentacji. Jest to obowiązkowe narzędzie każdego skryptera ("skriptera").

33 minuty temu, CatsonPL napisał:

Chce zrobić jeszcze komendę czyszczącą chat, czyli po prostu 100 razy (bo basicowo tyle linijek ma chat) skrypt wysyła pustą wiadomość + w ostatniej wiadomości komunikat, że chat został wyczyszczony przez moderatora.
Wiadomo że są do tego jakieś pluginy ale po co takowy dodawać dla jednej prostej funkcji.

Co do drugiego zdania - zgadzam się. Tworzenie mało skomplikowanych mechanizmów gdzie pisanie pluginu jest nieefektywne, jest specjalnością Skripta.

Jeśli chodzi o pierwsze zdanie, wysyłanie 100 razy wiadomości do każdego gracza jest poprawne, ale mało wydajne. Proszę zauważyć, że dla każdego gracza musi Pan (chyba Pan) wykonać pętlę 100 razy, a więc złożoność obliczeniowa takiej operacji czyszczenia czatu wynosi 100n, gdzie n to liczba graczy obecnych na serwerze. Przykładowo, powyższe rozwiązanie dla 50 graczy będzie tworzyło pętlę wykonującą się 5000 razy, a to już jest dość duża liczba.

Jak najlepiej podejść do tego problemu? Radzę stworzyć sobie ciąg znaków (string) składający się z 99 przejść do nowej linii, a następnie zapisać sobie go w jakiejś zmiennej globalnej i wysyłać jedynie tę zmienną do wszystkich graczy.

Pokażę przykład poniżej jak można to zrobić.

# [...]
set {_clearChatText} to ""
loop 99 times:
	set {_clearChatText} to "%{_clearChatText}%%nl%"
set {clearChat::emptyLines} to {_clearChatText}
# [...]

Rzecz jasna, powyższy kod wystarczy wywołać jeden raz, aby móc używać tego napisu służącego do czyszczenia czatu kiedy tylko potrzebujemy. Nie ma potrzeby, a właściwie to nie powinien Pan wywoływać go przy każdym czyszczeniu czatu, gdyż jest to całkowicie zbędne.
Następnie, można się odwołać do tej zmiennej.

send {clearChat::emptyLines} to all players

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/57731-skrypt-na-czyszczenie-chatu/#findComment-343260
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ę...