Skocz do zawartości

Skrypt na Przekleństwa - kolejny ;)


Rekomendowane odpowiedzi

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 przez luk4sMC
Odnośnik do komentarza
https://skript.pl/temat/44583-skrypt-na-przekle%C5%84stwa-kolejny/
Udostępnij na innych stronach

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.

 

Odnośnik do komentarza
https://skript.pl/temat/44583-skrypt-na-przekle%C5%84stwa-kolejny/#findComment-279752
Udostępnij na innych stronach

([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 przez luk4sMC
Odnośnik do komentarza
https://skript.pl/temat/44583-skrypt-na-przekle%C5%84stwa-kolejny/#findComment-279769
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ę...