←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Konta dla zmiennych IP - brak infa w konsoli

  • +
  • -
Turtle - zdjęcie Turtle 19.03.2012

Witam serdecznie,
mam problem z wyświetleniem infa w konsoli po otrzymaniu kicka z serwera,
próbowałem już wiele opcji jednak nadal nic,
dlatego prosiłbym was o drobną pomoc.


#include <amxmodx>
#include <amxmisc>
#include <netdb>
#define PLUGIN "Konta IP"
#define VERSION "2.0"
#define AUTHOR "Sn!ff3r"
public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_cvar("amx_konto_msg", "Zablokowane IP - sprawdz konsole! ")
}

public client_authorized(id)
{
	   
	    if(get_user_flags(id) & ADMIN_RESERVATION) return PLUGIN_CONTINUE
	   
	    if(access(id,ADMIN_LEVEL_H) && access(id,ADMIN_USER))
	    {
	    remove_user_flags(id,ADMIN_LEVEL_H)
	    return PLUGIN_CONTINUE
	    }
	    new authid[32]
	    get_user_authid(id, authid, 35)
	    if(have_user_nonsteam(authid))
	    {
	    new ip[16], host[50]  
	    get_user_ip(id,ip , 15 , 1)  
	    netdb_gethostbyaddr(ip,host,49)
	   
	    if( ( contain(host,"adsl") != -1 || contain(host,"dynamic") != -1  && contain(host,"dynamic.chello") == -1 )	  
			    {
			    new kickmsg[512]
			    get_cvar_string("amx_konto_msg", kickmsg, 512)
	  client_print(id, print_console, "* * * Masz zmienne IP !")
			    server_cmd("wait;wait;wait;wait;wait;kick #%d ^"%s^"", get_user_userid(id), kickmsg)
			    }
	    }
	    return PLUGIN_CONTINUE
}
stock have_user_nonsteam(authid[])
{
	    if(containi(authid, "VALVE_ID") != -1
	    || containi(authid, "STEAM_ID") != -1
	    || containi(authid, "STEAM_0:3") != -1
	    || containi(authid, "STEAM_0:4") != -1
	    || containi(authid, "VALVE_0:") != -1)
		  return 1;
		 
	    return 0;
}

Chodzi o to że nie ukazuję się w konsoli napis "* * * Masz zmienne IP !"
Reszta działa jak należy.

Z góry dziękuje za okazaną pomoc
Odpowiedz

  • +
  • -
ogieR8 - zdjęcie ogieR8 19.03.2012

Można prosić netdb.inl / netdb.inc ? Bo tak to nawet nie skompiluje by sprawdzić swoje postępy w pomocy ; d
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 19.03.2012

Nie wyświetlisz graczowi czegoś w konsoli dopóki nie wybierze on jakiejś drużyny, czy tam dopóki nie zniknie mu powitalne motd, dokładnie nie wiem jak to jest, ale w każdym razie najlepszym sposobem będzie tutaj task.
#include <amxmodx>
#include <amxmisc>
#include <netdb>

#define PLUGIN "Konta IP"
#define VERSION "2.0"
#define AUTHOR "Sn!ff3r"

public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
register_cvar("amx_konto_msg", "Zablokowane IP - sprawdz konsole!");
}

public client_putinserver(id) {
set_task(5.0, "sprawdz_gracza", id);
}

public sprawdz_gracza(id) {
if(!is_user_connected(id) || get_user_flags(id) & ADMIN_RESERVATION)
return PLUGIN_CONTINUE;

if(access(id,ADMIN_LEVEL_H) && access(id,ADMIN_USER)) {
remove_user_flags(id, ADMIN_LEVEL_H);
return PLUGIN_CONTINUE;
}

new authid[32]; get_user_authid(id, authid, 31);
if(!is_steam(authid)) {
new ip[16], host[50];
get_user_ip(id,ip , 15 , 1);
netdb_gethostbyaddr(ip, host, 49);

if((contain(host, "adsl") != -1 || contain(host, "dynamic") != -1) && contain(host, "dynamic.chello") == -1) {
new kickmsg[512];
get_cvar_string("amx_konto_msg", kickmsg, 511);
console_print(id, "* * * Masz zmienne IP !");
server_cmd("wait;wait;wait;wait;wait;kick #%d %s", get_user_userid(id), kickmsg);
}
}

return PLUGIN_CONTINUE;
}

stock bool:is_steam(auth[]) {
if(contain(auth, "STEAM_0:0:") != -1 || contain(auth, "STEAM_0:1:") != -1)
return true;

return false;
}

Zamieniłem też stock odpowiedzialny za sprawdzanie, czy gracz posiada steama.
Odpowiedz

  • +
  • -
Turtle - zdjęcie Turtle 19.03.2012

netdb pobrałem już skompilowane, więc nie mam tej wersji bibliotek.

powyższe rozwiązanie działa w 100% dzięki wielkie!

mam jeszcze jedno pytanie, bo czasem zdarzają się ISP którzy nie mają hostów,
więc rodzi się pytanie czy dało by rade dopisać dane pule adresowe, aby były także blokowane poza tymi hostami co są teraz?
np 83.9.0.0-83.9.255.255 ??
Użytkownik Turtle edytował ten post 19.03.2012 22:28
Odpowiedz

  • +
  • -
sebul - zdjęcie sebul 19.03.2012

W sumie jeden warunek dla mnie jest tutaj trochę dziwny, "dynamic.chello" należy do stałych ip? Spróbuj może zamienić
if((contain(host, "adsl") != -1 || contain(host, "dynamic") != -1) && contain(host, "dynamic.chello") == -1) {

na
if(containi(host, "adsl") != -1 || containi(host, "dynamic") != -1) {
Odpowiedz

  • +
  • -
Turtle - zdjęcie Turtle 20.03.2012

jest dobrze, dynamic chello jest zmieniane raz na rok, lub poprzez jedną wymuszoną próbę pobierając nowy adres przez modem.

a da rade blokować zakresy?
Odpowiedz