luk4sMC 10 Opublikowano 14 stycznia 2021 Udostępnij Opublikowano 14 stycznia 2021 (edytowane) Witam. Zanim napisałem swój pierwszy skrypt w: Skript, wykorzystywałem skrypt bash do sprawdzania logów i słów zakazanych. Żeby nie przedłużać, posłużę się przykładem: if słowo pasujące do wzorca *[Kk]urw*) spam_detected;; *[Zz]aj[eo]b*) spam_detected;; function spam_detected W BASH'u mogłem wykorzystać: wzorce, wyrażenia regularne: *[Kk]urw*) pasuje do grupy słów: kurw, kurwa, skurwiel, skurwiały, skurwiony, skurwysyn itd. *[Zz]aj[eo]b*) pasuje do: zajob jak i zajebie, zajebany, zajebał mi ity itd. Zauważyłem, że do zbudowania szybkiego i mocno skutecznego słownika, należy dodawać do zmiennej słowa zaczynając od najdłuższych do najkrótszych... Zauważyłem też, że nie trzeba dodawać wszystkich słów, a wystarczy np. kurw co w efekcie da mi: ***, ***a, ***y, ***o, słowo skurwysyn zamieni na ***, ***y i ***u. kurw[a,y,o] skurwiał[y,a] kurwysyn skurwysyn[y,u] kurwisz[cze] kurwisz[on[y]] zakurwist[y,a] pokurwion[y,a] spam.yml kurwa skurwiały kurwysyn Nie interesuje mnie zabawa "A zrób tak, żeby był pierwszy i ostatni znak" bo to niepotrzebnie będzie obciążało serwer. Przetwarzanie danych na tak niskim poziomie (liczenie ilości znaków w słowie itd.) nie da żadnego realnego efektu... Wiec zrobiłem tak: on chat: loop {spam::*}: #set {first_sign} to first characters of "%loop-value%" #set {last_sign} to last characters of "%loop-value%" #replace "%loop-value%" with "%{first_sign}%***%{last_sign} %" in message replace "%loop-value%" with "***" in message Co w efekcie przy prostym słowniku i tak maskuje 80,90% śmieci. Przy budowaniu słownika z czasem będą go musiał poprawiać. Dlatego najlepiej robić to edytując plik słownika. Potrzebuje listę ze zmiennej {spam::*} zapisać do pliku jak w przykładzie wyżej i odczytać z tego pliku. Przerobiłem wszystkie tematy zaczynając od niewspieranych dodatków po aktualne skUtilities.v0.9.2.jar, ale nie widzę tego co mi potrzeba... Edytowane 15 stycznia 2021 przez luk4sMC Odnośnik do komentarza https://skript.pl/temat/44583-skrypt-na-przekle%C5%84stwa-kolejny/ Udostępnij na innych stronach Więcej opcji udostępniania...
Kormic 1951 Opublikowano 14 stycznia 2021 Udostępnij Opublikowano 14 stycznia 2021 Wykorzystaj wyrażenie regularne (regex), powinny pomóc w rozwiązaniu problemu. https://skriptlang.github.io/Skript/conditions.html#CondMatches Co do tego jak ich używać, w internecie masz wiele poradników. luk4sMC 1 Odnośnik do komentarza https://skript.pl/temat/44583-skrypt-na-przekle%C5%84stwa-kolejny/#findComment-279752 Udostępnij na innych stronach Więcej opcji udostępniania...
luk4sMC 10 Opublikowano 14 stycznia 2021 Autor Udostępnij Opublikowano 14 stycznia 2021 (edytowane) ([Jj]+\s*([Ee]+|[Oo]+)\s*[Bb]+)" Powyższy wzorzec może oznaczać: .* dowolna liczba wszystkich znaków lub wcale poprzedzająca [przekleństwo] [Jj]+ jedno lub wielokrotne wystąpienie litery J lub j \s* dowolna liczba spacji lub wcale ([Ee]+|[Oo]+) jedno lub wielokrotne wystąpienie liter E,e lub O,o Co w efekcie pasuje do !!!zjeb!!! >>zajob<< Z a JeBię Cię czy nawet zZZZZ Aa jeb IĘ Zdanie: doIebie Ci na Arenie!!! wyświetli się dojebie ci na Arenie!!! nie wyświetli się "([Kk]+\s*[Uu]+\s*[Rr]+\s*[Ww]+)" Powyższy wzorzec może oznaczać: .* dowolna liczba wszystkich znaków lub wcale poprzedzająca [przekleństwo] słowo KURWA pisane w dowolny sposób tj kU rWa, Kur WA!!!, kurwiszon ale nie obejmuje słowa KURA. on chat: if message partially matches "([Dd]+\s*[Ee]+\s*[Bb]+\s*[Ii]+)": cancel event set {_message} to message send "" to player send " &cSPAM: &f%{_message}%" to player send "" to player if message partially matches "([Jj]+\s*([Ee]+|[Oo]+)\s*[Bb]+)": cancel event set {_message} to message send "" to player send " &cSPAM: &f%{_message}%" to player send "" to player if message partially matches "([Kk]+\s*[Uu]+\s*[Rr]+\s*[Ww]+)": cancel event set {_message} to message send "" to player send " &cSPAM: &f%{_message}%" to player send "" to player if message partially matches "([Hh]+\s*[Uu]+\s*[Jj]+)": cancel event set {_message} to message send "" to player send " &cSPAM: &f%{_message}%" to player send "" to player #jezeli message = [ciąg znaków] po którym występuje znak [.] lub [kropka] po którym występuje me, ME. mE, M e itd if message partially matches "((\.|krop.*)\s*[Mm]+\s*[Ee]+)": cancel event kick player due to "Powód: REKLAMA!%nl% Od: Administracja" Wysyła tylko do gracza, więc nie spami czatu. Myślę, że dałoby się zabezpieczyć przed jednym lub wielokrotnym wystąpieniem spacji tj. Z jE b Edytowane 16 stycznia 2021 przez luk4sMC Odnośnik do komentarza https://skript.pl/temat/44583-skrypt-na-przekle%C5%84stwa-kolejny/#findComment-279769 Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi