Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
- - - - -

AntyBot oparty na pytaniach.


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
8 odpowiedzi w tym temacie

#1 NoLiFeR

    Wszechobecny

  • Użytkownik

Reputacja: 103
Zaawansowany

  • Postów:483
  • GG:
  • Imię:Adrian
  • Lokalizacja:Sosnowiec
Offline

Napisano 13.08.2015 02:20

opis
Plugin powoduje wyrzucenie gracza, jeżeli ten nie odpowie na zadane pytanie. (nie kliknie "Tak")
Ułożenie odpowiedzi nie jest stałe przez co spamowanie za pomocą botów jest skutecznie blokowane...

Także nie odpowiedzenie na pytanie w ciągu 5 sekund (Patrz Cvary) powoduje wyrzucenie gracza z serwera z powodem "Nieprawidłowa odpowiedz / brak odpowiedzi".

 

instalacja

 

Standardowa.

 

konfiguracja

 

Pytań jest pięć, można je zmieniać edytując odpowiednie linijki w sma.

 

cvary

 

timetokick "5.0" - Czas po którym zostanie wyrzucony gracz który nie odpowie na zadane mu pytanie.

wlaczlogikickowania "1" - Jeżeli wlaczone, w logach zostanie zapisane ip oraz nick delikwenta.

 

download

1.1

Załączony plik  antybot.sma   2,59 KB  203 Ilość pobrań
  antybot.amxx

 

1.0

Załączony plik  antybot.sma   3,49 KB  199 Ilość pobrań
  antybot.amxx

 

 

Wszelkie bugi (których jednak być nie powinno ;) ) proszę zgłaszać w tym temacie.

 

  • +
  • -
  • 0

#2 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 18.08.2015 08:49

Przemyśl funkcję: public menuantybota(id), bo wygląda ona tragicznie. Czy nie może ona wyglądać na przykład tak jak poniżej?
public menuantybota(id){
	id -= TASK_SHOW;
	if(is_user_connected(id)){
		new buffer[400];
		
		formatex(buffer, charsmax(buffer), g_pytania[random(5)]);
		
		new x = random(7);
		if(last == x){
			x = random(7);
		}
		
		last = x;
		
		format(buffer, charsmax(buffer), "%s^n^n^t\r(\d%d\r) \yT\ra\yk", buffer, (x + 1));
		menuencoding[id] = x;
		
		format(buffer, charsmax(buffer), "%s^n^n\dPamietaj aby czytac co klikasz :)", buffer);
		show_menu(id, KLAWISZE, buffer, -1, "InfaHandler");
		set_task(get_pcvar_float(Czas), "outtimedmenu", id + TASK_MENU); // Pobierz raz wartość cvara w plugin_cfg, tak samo z pozostałymi cvarami.
	}
}

  • +
  • -
  • 0

If you can dream it, you can do it.


#3 Asiap

    Wszechpomocny

  • Girl

Reputacja: 171
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

Napisano 18.08.2015 12:16

random() czesto zwraca ta sama wartosc lepiej uzyc random_num()


  • +
  • -
  • 0

#4 Linux'

    Pan Pomocny

  • Power User

Reputacja: 549
Wszechwiedzący

  • Postów:1 501
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:AmxMod i SourceMod
Offline

Napisano 18.08.2015 13:07

Sa duzo bardziej skuteczne sposoby weryfikacji gracza czy jest botem. Dla mnie zbedne.


  • +
  • -
  • 0

b35020692_qesnxqa.png


#5 NoLiFeR

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 103
Zaawansowany

  • Postów:483
  • GG:
  • Imię:Adrian
  • Lokalizacja:Sosnowiec
Offline

Napisano 18.08.2015 14:19

Przemyśl funkcję: public menuantybota(id), bo wygląda ona tragicznie. Czy nie może ona wyglądać na przykład tak jak poniżej?

public menuantybota(id){
	id -= TASK_SHOW;
	if(is_user_connected(id)){
		new buffer[400];
		
		formatex(buffer, charsmax(buffer), g_pytania[random(5)]);
		
		new x = random(7);
		if(last == x){
			x = random(7);
		}
		
		last = x;
		
		format(buffer, charsmax(buffer), "%s^n^n^t\r(\d%d\r) \yT\ra\yk", buffer, (x + 1));
		menuencoding[id] = x;
		
		format(buffer, charsmax(buffer), "%s^n^n\dPamietaj aby czytac co klikasz :)", buffer);
		show_menu(id, KLAWISZE, buffer, -1, "InfaHandler");
		set_task(get_pcvar_float(Czas), "outtimedmenu", id + TASK_MENU); // Pobierz raz wartość cvara w plugin_cfg, tak samo z pozostałymi cvarami.
	}
}

Ehh.. Już to tłumaczyłem. Gdzie wtedy będą odpowiedzi "nie" ? :)

 

To zadziała na każdy nowy "gatunek" botów, przy których inne antyboty zawiodą :) A jeżeli ktoś zapragnie sobie obejść zabezpieczenie 1'nego cs'a (nwm czy to możliwe, ale raczej tak :) ) i napadnie na serwer w ten sposób ? :)


speedkill (18.08.2015 15:11):
A widzisz jakiś problem w dodaniu do tego kodu powyżej odpowiedzi nie?

  • +
  • -
  • 0

#6 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 18.08.2015 15:23

random() czesto zwraca ta sama wartosc lepiej uzyc random_num()

Skąd taka pewność, robiłaś testy? Czy jest to po prostu informacja napisana tak o?

random:
Spoiler


random_num:
Spoiler

  • +
  • -
  • 3

If you can dream it, you can do it.


#7 NoLiFeR

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 103
Zaawansowany

  • Postów:483
  • GG:
  • Imię:Adrian
  • Lokalizacja:Sosnowiec
Offline

Napisano 18.08.2015 22:11

Nie, nie widze :) Poprawie kod, jak będe miał czasu ciutkę ;)


  • +
  • -
  • 0

#8 Misiaczek ;c

    /dev/null

  • Moderator

Reputacja: 1 678
Godlike

  • Postów:2 496
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Napisano 24.08.2015 12:01

Nie, nie widze :) Poprawie kod, jak będe miał czasu ciutkę ;)

	client_print(id, print_console, "|--------------------------------------|");
	client_print(id, print_console, "|-|Boty nie maja tutaj wstepu :)|-|");
	client_print(id, print_console, "|--------------------------------------|");

zamień na

new szTxT[ 256 ];
formatex( szTxT, charsmax( szTxT ), "|--------------------------------------|^n|-|Boty nie maja tutaj wstepu :)|-|^n|--------------------------------------|" );
console_print( id, szTxt );
	new name[33], ip[33];
	get_user_name(id, name, 32);
	get_user_ip(id, ip, 32);

zamień na

	new Dane[ 2 ][ 33 ]
	get_user_name( id, Dane[ 0 ], 32 );
	get_user_ip( id, Dane[ 1 ], 20, 1);
new last, Czas, logs;

zamień na

new last, pCvar[ 2 ];
	Czas = register_cvar("timetokick","5.0");
	logs = register_cvar("wlaczlogikickowania","1");

zamień na

	pCvar[ 0 ] = register_cvar("timetokick","5.0");
	pCvar[ 1 ] = register_cvar("wlaczlogikickowania","1");
	set_task(get_pcvar_float(Czas), "outtimedmenu", id+TASK_MENU);

zamień na:

	set_task(get_pcvar_float( pCvar[ 0 ] ), "outtimedmenu", id+TASK_MENU);
if(get_pcvar_num(logs)) 

zamień na

if( get_pcvar_num( pCvar[ 0 ] ) )

  • +
  • -
  • 0

#9 NoLiFeR

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 103
Zaawansowany

  • Postów:483
  • GG:
  • Imię:Adrian
  • Lokalizacja:Sosnowiec
Offline

Napisano 24.08.2015 13:39

V 1.1

Poprawki :

Zaimplementowane zostały poprawki z postu Misiaczek ;c.
Przy formatowaniu tablicy zastosowana została pętla (wieksza optymalnosc kodu końcowego oraz czytelność).

Załączony plik  antybot.sma   2,59 KB  179 Ilość pobrań
  antybot.amxx


Użytkownik NoLiFeR edytował ten post 24.08.2015 13:40

  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych