01/09/2022 12:10
Meu anti divulgação de IPs está kickando pessoas inoscentes, pessoas que nem estavam divulgando, só mandaram uns numeros tão tomando kick
Alguém tem ou sabe fazer um melhor pra bloquear links e/ou ips?
Alguém tem ou sabe fazer um melhor pra bloquear links e/ou ips?
Código:
if(FindIpPattern(playerid,ver_string)) {
new string[128];
format(string,sizeof(string),"%s kickado por divulgação", PlayerName(playerid));
SendClientMessageToAll(COLOR_LIGHTRED, string);
Kick(playerid);
return 0;
}
Código:
forward FindIpPattern(playerid,const string[]); public FindIpPattern(playerid,const string[]) {
new stringNumeric = false, stringBegin, ipDigits = 0;
for(new i=0; i<strlen(string); i++) {
if(string[i]<='9' && string[i]>='0')
{
if(!stringNumeric) // first digit
{
stringNumeric=true;
stringBegin=i;
if(i==strlen(string)-1) // string ends with one digit number
{
ipDigits++;
if(ipDigits>3) // 4 digits
return 1;
}
}
else
{
if(i==strlen(string)-1) // string ends with the last digit
{
new stringn[256];
new number;
for(new j=stringBegin; j<i+1; j++)
stringn[j-stringBegin]=string[j];
stringn[i-stringBegin+1]=0;
number=strval(stringn);
if(number>=0 && number<256) // our case
{
ipDigits++;
if(ipDigits>3) // 4 digits
return 1;
}
}
}
}
else
{
if(stringNumeric) // last digit+1
{
stringNumeric=false;
new stringn[256];
new number;
for(new j=stringBegin; j<i; j++)
stringn[j-stringBegin]=string[j];
stringn[i-stringBegin]=0;
number=strval(stringn);
if(number>=0 && number<256) // our case
{
ipDigits++;
if(ipDigits>3) // 4 digits
return 1;
}
else // not in ip-group range
{
ipDigits=0; // reset ip digit counter;
}
}
}
}
return 0;
}