18/10/2022 08:37
Peguei meu anti divulgação de IPs de outros servidores da net, mas está kickando pessoas inocentes, pessoas que nem estavam divulgando, só mandaram uns numeros tão tomando kick...
Alguém que tenha um funcional que não bane inocente, poderia me passar esse script?
meu script:
Alguém que tenha um funcional que não bane inocente, poderia me passar esse script?
meu script:
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;
}