Skocz do zawartości

Skrypt na /friends


Rekomendowane odpowiedzi

Wstawiam tutaj bo nie wiem, gdzie indziej będzie pasować
Prosty skrypt na komendę /friend
Taki co sobie machnąłem na localhoście na szybko

Na ten moment skrypt zawiera:

  • /friend add [nick] - Wysyła zaproszenie do znajomych do wpisanego gracza
  • /friend remove [nick] - Usuwa gracza ze znajomych
  • /friend list - Wyświetla listę znajomych z podziałem na tych online i tych offline (nie zrobiłem podziału na strony, bo w moim przypadku tej potrzeby nie było)
  • /friend accept [nick] - Akceptuje zaproszenie od gracza
  • /friend reject [nick] - Odrzuca zaproszenie od gracza blokując mu na 5 minut możliwość zapraszania
  • /friend [nick] - skrót komendy /friend add, stosowany na wielu serwerach

 

Pluginy/Addony:

  • Skript (kto by pomyślał)
  • LuckPerms (rangi i ich prefixy)
  • SkUniversal (dzięki temu addonowi używam prefixów z LP)

Rzeczy, których na pewno nie będzie w tym skrypcie (bo mi się nie chce ich dodawać):

  • Podział listy znajomych na strony
  • Informacja na jakim serwerze/świecie znajduje się nasz przyjaciel, jeżeli jest online
  • Tab Completer (no dobra, tego akurat nie umiem)

Jest tanio? Jest tanio.
Jest dobrze? Jest tanio.


A jeżeli serio jakiś update bym miał zrobić do tego skryptu, to możecie zostawić propozycję, chętnie poczytam i może coś z nich zrobię.

Odnośnik do komentarza
https://skript.pl/temat/58833-skrypt-na-friends/
Udostępnij na innych stronach

@wikt0r3k

Skrypt wygląda całkiem obiecująco, ale znajdują się w nim cztery rzeczy, nad którymi należałoby się pochylić:

  1. Komenda /friend [nazwa] nie zadziała w przypadku graczy, którzy mają nazwę addremovelistaccept i reject. Prawdopodobieństwo, że gracz mający jedną z wymienionych nazw dołączy do serwera jest bardzo małe, jednakże trzeba o tym pamiętać. Aby to nie sprawiało problemu, sugeruję usunięcie tego "skrótu" i używanie pełnej formy, to znaczy /friend add [nazwa].
  2. W przypadku stosowania opóźnień w kodzie należy być ostrożnym i mieć na uwadze to czy skrypt poprawnie będzie działał po restarcie serwera. Od razu mogę powiedzieć, że restart serwera w trakcie oczekiwania na wygaśnięcie zaproszenia sprawi, że nigdy do niego nie dojdzie. W tej sytuacji można zastosować wymienione dalej rozwiązania:
    • horologe.sk - pozwala na tworzenie opóźnień, które są zapisywane przy zatrzymaniu serwera i kontynuowane po jego ponownym starcie,
    • cykliczne zadanie (np. every 1 second) odliczające 60 sekund i zapisujące opóźnienie w zmiennej przypisanej do gracza,
    • można też po prostu unieważnić zaproszenie przy zatrzymaniu serwera (zdarzenie on server stop), co wydaje się najlepsze.
  3. Cooldown nie powinien być zmniejszany co sekundę gdy gracz jest na serwerze, ponieważ sprawia to, że nie będzie on aktualizowany gdy gracz jest offline. Powinno być to zastąpione obliczaniem różnicy czasu. Poradnik opisujący to można znaleźć tutaj.
  4. Nie wiem czy można ponownie dołączyć do serwera (tzw. rejoin) w czasie krótszym niż sekunda, ale jeśli tak, istnieje ryzyko, że wiele instancji tej samej pętli while może działać dla jednego gracza jeśli wykona on rejoin np. w 0.9 sekundy (18 ticków) i przy okazji "ominie" wykonanie pętli. Jeśli moje obawy tutaj są uzasadnione, należałoby na przykład generować losowe UUID przy każdym rozpoczęciu pętli i zapisywać w zmiennej globalnej, i przy każdym jej wykonaniu sprawdzać czy UUID się zmieniło - jeśli tak, należy wyjść z pętli, czyli zakończyć ją.

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/58833-skrypt-na-friends/#findComment-347024
Udostępnij na innych stronach

W dniu 15.08.2025 o 00:55, wikt0r3k napisał:

Wstawiam tutaj bo nie wiem, gdzie indziej będzie pasować
Prosty skrypt na komendę /friend
Taki co sobie machnąłem na localhoście na szybko

Na ten moment skrypt zawiera:

  • /friend add [nick] - Wysyła zaproszenie do znajomych do wpisanego gracza
  • /friend remove [nick] - Usuwa gracza ze znajomych
  • /friend list - Wyświetla listę znajomych z podziałem na tych online i tych offline (nie zrobiłem podziału na strony, bo w moim przypadku tej potrzeby nie było)
  • /friend accept [nick] - Akceptuje zaproszenie od gracza
  • /friend reject [nick] - Odrzuca zaproszenie od gracza blokując mu na 5 minut możliwość zapraszania
  • /friend [nick] - skrót komendy /friend add, stosowany na wielu serwerach

 

Pluginy/Addony:

  • Skript (kto by pomyślał)
  • LuckPerms (rangi i ich prefixy)
  • SkUniversal (dzięki temu addonowi używam prefixów z LP)

Rzeczy, których na pewno nie będzie w tym skrypcie (bo mi się nie chce ich dodawać):

  • Podział listy znajomych na strony
  • Informacja na jakim serwerze/świecie znajduje się nasz przyjaciel, jeżeli jest online
  • Tab Completer (no dobra, tego akurat nie umiem)

Jest tanio? Jest tanio.
Jest dobrze? Jest tanio.


A jeżeli serio jakiś update bym miał zrobić do tego skryptu, to możecie zostawić propozycję, chętnie poczytam i może coś z nich zrobię.

on tab completer on "/friend":
    if tab argument 2 is not set:
        set tab argument for position 1 to "add","list","remove","accept","reject"
 

Odnośnik do komentarza
https://skript.pl/temat/58833-skrypt-na-friends/#findComment-347032
Udostępnij na innych stronach

W dniu 15.08.2025 o 12:59, Kormic napisał:

Skrypt wygląda całkiem obiecująco, ale znajdują się w nim cztery rzeczy, nad którymi należałoby się pochylić:

  1. Komenda /friend [nazwa] nie zadziała w przypadku graczy, którzy mają nazwę addremovelistaccept i reject. Prawdopodobieństwo, że gracz mający jedną z wymienionych nazw dołączy do serwera jest bardzo małe, jednakże trzeba o tym pamiętać. Aby to nie sprawiało problemu, sugeruję usunięcie tego "skrótu" i używanie pełnej formy, to znaczy /friend add [nazwa].
  2. W przypadku stosowania opóźnień w kodzie należy być ostrożnym i mieć na uwadze to czy skrypt poprawnie będzie działał po restarcie serwera. Od razu mogę powiedzieć, że restart serwera w trakcie oczekiwania na wygaśnięcie zaproszenia sprawi, że nigdy do niego nie dojdzie. W tej sytuacji można zastosować wymienione dalej rozwiązania:
    • horologe.sk - pozwala na tworzenie opóźnień, które są zapisywane przy zatrzymaniu serwera i kontynuowane po jego ponownym starcie,
    • cykliczne zadanie (np. every 1 second) odliczające 60 sekund i zapisujące opóźnienie w zmiennej przypisanej do gracza,
    • można też po prostu unieważnić zaproszenie przy zatrzymaniu serwera (zdarzenie on server stop), co wydaje się najlepsze.
  3. Cooldown nie powinien być zmniejszany co sekundę gdy gracz jest na serwerze, ponieważ sprawia to, że nie będzie on aktualizowany gdy gracz jest offline. Powinno być to zastąpione obliczaniem różnicy czasu. Poradnik opisujący to można znaleźć tutaj.
  4. Nie wiem czy można ponownie dołączyć do serwera (tzw. rejoin) w czasie krótszym niż sekunda, ale jeśli tak, istnieje ryzyko, że wiele instancji tej samej pętli while może działać dla jednego gracza jeśli wykona on rejoin np. w 0.9 sekundy (18 ticków) i przy okazji "ominie" wykonanie pętli. Jeśli moje obawy tutaj są uzasadnione, należałoby na przykład generować losowe UUID przy każdym rozpoczęciu pętli i zapisywać w zmiennej globalnej, i przy każdym jej wykonaniu sprawdzać czy UUID się zmieniło - jeśli tak, należy wyjść z pętli, czyli zakończyć ją.

Pozdrawiam.

[1] Jest to jakieś rozwiązanie problemu, który jak sam zresztą wspomniałeś - jest mało prawdopodobne, że się wydarzy, lecz dalej nie rozumiem sensu wyrzucenia "skrótowej" wersji tej komendy, skoro obie formy działają. Po prostu dla tych 5 nicków niestety trzeba pisać te dłuższą wersję.

[2] Poczytałem, popróbowałem i finalnie postawiłem na tą drugą opcję. Możliwe, że na dniach wrzucę już wersję z tą poprawą.

[3] Akurat za ten punkt to dziękuję z całego serca, przydał się przy okazji w innych skryptach 😄

[4] Z tego co mi się wydaje, nie jest to możliwe przez to jak działa łączenie na serwer (Nawiązywanie nowego połączenia, ładowanie pozycji gracza itp.)

Odnośnik do komentarza
https://skript.pl/temat/58833-skrypt-na-friends/#findComment-347033
Udostępnij na innych stronach

3 godziny temu, tylkopodskrypty napisał:

on tab completer on "/friend":
    if tab argument 2 is not set:
        set tab argument for position 1 to "add","list","remove","accept","reject"

Miałem nie dodawać tab completera, ale tak sobie patrzę na tę odpowiedź i w sumie co mi szkodzi ¯\_(ツ)_/¯
Jak wrzucę nową wersję to już z tab completerem.

Odnośnik do komentarza
https://skript.pl/temat/58833-skrypt-na-friends/#findComment-347034
Udostępnij na innych stronach

21 godzin temu, wikt0r3k napisał:

Miałem nie dodawać tab completera, ale tak sobie patrzę na tę odpowiedź i w sumie co mi szkodzi ¯\_(ツ)_/¯
Jak wrzucę nową wersję to już z tab completerem.

jeśli nie będzie działało to pobierz jeszcze SkBee

Odnośnik do komentarza
https://skript.pl/temat/58833-skrypt-na-friends/#findComment-347036
Udostępnij na innych stronach

W dniu 18.08.2025 o 12:45, wikt0r3k napisał:

[1] Jest to jakieś rozwiązanie problemu, który jak sam zresztą wspomniałeś - jest mało prawdopodobne, że się wydarzy, lecz dalej nie rozumiem sensu wyrzucenia "skrótowej" wersji tej komendy, skoro obie formy działają. Po prostu dla tych 5 nicków niestety trzeba pisać te dłuższą wersję.

[2] Poczytałem, popróbowałem i finalnie postawiłem na tą drugą opcję. Możliwe, że na dniach wrzucę już wersję z tą poprawą.

[3] Akurat za ten punkt to dziękuję z całego serca, przydał się przy okazji w innych skryptach 😄

[4] Z tego co mi się wydaje, nie jest to możliwe przez to jak działa łączenie na serwer (Nawiązywanie nowego połączenia, ładowanie pozycji gracza itp.)

Ad 1. Dobrze, ale zauważ, że znasz rozwiązanie tylko dlatego, bo wiesz jak wygląda kod definiujący komendę. Zwykły gracz nie będzie tego wiedział. Bądź co bądź, zgodziliśmy się, że prawdopodobieństwo dołączenia graczy o tych nazwach jest skrajnie małe, więc możesz to zignorować.

Ad 4. Też mam takie przeczucie, niemniej jednak w przypadku takich stwierdzeń należy być ostrożnym, bo w rachubę wchodzi tu wiele zmiennych, między innymi: specyfikacja maszyny serwera, obciążenie, silnik, zainstalowane wtyczki, itd. Dobra praktyka nakazywałaby obsługę wszystkich, nawet najmniej prawdopodobnych scenariuszy, ale na mniejszym serwerze sądzę, że nigdy do tego nie dojdzie.

Odpowiadając na ogół wiadomości, cieszę się, że moje wskazówki okazały się pomocne.

Pozdrawiam.

Odnośnik do komentarza
https://skript.pl/temat/58833-skrypt-na-friends/#findComment-347037
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
Dodaj odpowiedź do tematu...

×   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ę...