Portal SAMP
Fixado: Códigos Úteis - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: Fixado: Códigos Úteis (/showthread.php?tid=73)

Páginas: 1 2 3 4 5 6


RE: Códigos Úteis - Alfarr Heimrik - 06/07/2024

(12/05/2022 11:47)White_Blue Escreveu: Script para detecção de players com IP estrangeiro( ANTI-VPN )
Lembrando que só funcionará caso a gamemode estiver conectada em uma host.

Código:

Código PHP:
// Topo do script
#define MAX_COUNTRY_NAME 64

public OnPlayerConnect(playerid) {
    if(strcmp("127.0.0.1"GetPlayerIPEx(playerid), true) != 0) {
    
format(STRX128"ip-api.com/json/%s"GetPlayerIPEx(playerid));
    
HTTP(playeridHTTP_GETSTRX"""HTTP_Connect");
    }
    return 1;
}

forward HTTP_Connect(playeridresponse_codecdata[]);
public 
HTTP_Connect(playeridresponse_codecdata[]) {
    if(
response_codec != 200) {
        
SetPVarString(playerid"Pais""Desconhecido"), SetPVarString(playerid"Estado""Desconhecido"), SetPVarString(playerid"Cidade""Desconhecida");
        return 
1;
    }

       new string[128], pos;
       if(strfind(data"Reserved"true) == -&& strlen(data) >= 15) {
        if((
pos strfind(data"\"country\":")) != -1)
        {
        
    pos += 11;
            
strmid(stringdataposstrfind(data"\""truepos));
            
SetPVarString(playerid"Pais"string);
        }
        if((
pos strfind(data"\"regionName\":")) != -1)
        {
            pos += 14;
            
strmid(stringdataposstrfind(data"\""truepos));
            
SetPVarString(playerid"Estado"string);
        }
        if((
pos strfind(data"\"city\":")) != -1)
        {
        
    pos += 8;
            
strmid(stringdataposstrfind(data"\""truepos));
            
SetPVarString(playerid"Cidade"string);
        }
    }

    
GetPVarString(playerid"Pais"stringMAX_COUNTRY_NAME);
    if(
strfind(string"Brazil"true) == -&& strfind(string"Portugal"true) == -&& strfind(string"France"true) == -&&  strfind(string"Desconhecido"true) == -1)
    {
    
        SendClientMessage(playerid0xFF0000AA"A entrada de seu IP não é permitida.");
             
Kick(playerid);
    }
    return 
0;
}

stock GetPlayerCountry(playerid)
{
    new 
string[MAX_COUNTRY_NAME];
    
GetPVarString(playerid"Pais"stringMAX_COUNTRY_NAME);
    return 
string;
}

stock GetPlayerRegion(playerid)
{
    new 
string[MAX_COUNTRY_NAME];
    
GetPVarString(playerid"Estado"stringMAX_COUNTRY_NAME);
    return 
string;
}
stock GetPlayerCity(playerid)
{
    new 
string[MAX_COUNTRY_NAME];
        GetPVarString(playerid"Cidade"stringMAX_COUNTRY_NAME);
    return 
string;



Boa noite. Ésó criar as variáveis normalmente, ou tem que fazer alguma outra coisa?
Código:
C:\Users\alfar\OneDrive\Área de Trabalho\Independente Hard RP\gamemodes\GMIHRP.pwn(514) : error 017: undefined symbol "GetPlayerIPEx"
C:\Users\alfar\OneDrive\Área de Trabalho\Independente Hard RP\gamemodes\GMIHRP.pwn(515) : error 017: undefined symbol "STRX"
C:\Users\alfar\OneDrive\Área de Trabalho\Independente Hard RP\gamemodes\GMIHRP.pwn(516) : error 017: undefined symbol "HTTP"
Pawn compiler 3.2.3664              Copyright (c) 1997-2006, ITB CompuPhase


3 Errors.



RE: Códigos Úteis - White_Blue - 06/07/2024

(06/07/2024 00:06)Alfarr Heimrik Escreveu:
(12/05/2022 11:47)White_Blue Escreveu: Script para detecção de players com IP estrangeiro( ANTI-VPN )
Lembrando que só funcionará caso a gamemode estiver conectada em uma host.

Código:

Código PHP:
// Topo do script
#define MAX_COUNTRY_NAME 64

public OnPlayerConnect(playerid) {
    if(strcmp("127.0.0.1"GetPlayerIPEx(playerid), true) != 0) {
    
format(STRX128"ip-api.com/json/%s"GetPlayerIPEx(playerid));
    
HTTP(playeridHTTP_GETSTRX"""HTTP_Connect");
    }
    return 1;
}

forward HTTP_Connect(playeridresponse_codecdata[]);
public 
HTTP_Connect(playeridresponse_codecdata[]) {
    if(
response_codec != 200) {
        
SetPVarString(playerid"Pais""Desconhecido"), SetPVarString(playerid"Estado""Desconhecido"), SetPVarString(playerid"Cidade""Desconhecida");
        return 
1;
    }

       new string[128], pos;
       if(strfind(data"Reserved"true) == -&& strlen(data) >= 15) {
        if((
pos strfind(data"\"country\":")) != -1)
        {
        
    pos += 11;
            
strmid(stringdataposstrfind(data"\""truepos));
            
SetPVarString(playerid"Pais"string);
        }
        if((
pos strfind(data"\"regionName\":")) != -1)
        {
            pos += 14;
            
strmid(stringdataposstrfind(data"\""truepos));
            
SetPVarString(playerid"Estado"string);
        }
        if((
pos strfind(data"\"city\":")) != -1)
        {
        
    pos += 8;
            
strmid(stringdataposstrfind(data"\""truepos));
            
SetPVarString(playerid"Cidade"string);
        }
    }

    
GetPVarString(playerid"Pais"stringMAX_COUNTRY_NAME);
    if(
strfind(string"Brazil"true) == -&& strfind(string"Portugal"true) == -&& strfind(string"France"true) == -&&  strfind(string"Desconhecido"true) == -1)
    {
    
        SendClientMessage(playerid0xFF0000AA"A entrada de seu IP não é permitida.");
             
Kick(playerid);
    }
    return 
0;
}

stock GetPlayerCountry(playerid)
{
    new 
string[MAX_COUNTRY_NAME];
    
GetPVarString(playerid"Pais"stringMAX_COUNTRY_NAME);
    return 
string;
}

stock GetPlayerRegion(playerid)
{
    new 
string[MAX_COUNTRY_NAME];
    
GetPVarString(playerid"Estado"stringMAX_COUNTRY_NAME);
    return 
string;
}
stock GetPlayerCity(playerid)
{
    new 
string[MAX_COUNTRY_NAME];
        GetPVarString(playerid"Cidade"stringMAX_COUNTRY_NAME);
    return 
string;



Boa noite. Ésó criar as variáveis normalmente, ou tem que fazer alguma outra coisa?
Código:
C:\Users\alfar\OneDrive\Área de Trabalho\Independente Hard RP\gamemodes\GMIHRP.pwn(514) : error 017: undefined symbol "GetPlayerIPEx"
C:\Users\alfar\OneDrive\Área de Trabalho\Independente Hard RP\gamemodes\GMIHRP.pwn(515) : error 017: undefined symbol "STRX"
C:\Users\alfar\OneDrive\Área de Trabalho\Independente Hard RP\gamemodes\GMIHRP.pwn(516) : error 017: undefined symbol "HTTP"
Pawn compiler 3.2.3664              Copyright (c) 1997-2006, ITB CompuPhase


3 Errors.

Olá. Não recomendo a utilização desse script, pois é algo bem antigo e tem alguns problemas, como, por exemplo, o fato de que a detecção de VPN é feita através do país do jogador, o que não é eficaz. Existem APIs que fazem essa verificação através do provedor e de bancos de dados de IPs não residenciais. Fiz uma edição para consertar esses problemas, mas ainda assim existem opções mais eficazes.

Recomendo a utilização deste script para detecção de VPN: https://github.com/Southclaws/samp-geoip ou https://github.com/Whitetigerswt/SAMP-geoip para dados mais específicos do IP do jogador, como estado e cidade.


RE: Códigos Úteis - Alfarr Heimrik - 06/07/2024

(06/07/2024 00:36)White_Blue Escreveu:
(06/07/2024 00:06)Alfarr Heimrik Escreveu:
(12/05/2022 11:47)White_Blue Escreveu: Script para detecção de players com IP estrangeiro( ANTI-VPN )
Lembrando que só funcionará caso a gamemode estiver conectada em uma host.

Código:

Código PHP:
// Topo do script
#define MAX_COUNTRY_NAME 64

public OnPlayerConnect(playerid) {
    if(strcmp("127.0.0.1"GetPlayerIPEx(playerid), true) != 0) {
    
format(STRX128"ip-api.com/json/%s"GetPlayerIPEx(playerid));
    
HTTP(playeridHTTP_GETSTRX"""HTTP_Connect");
    }
    return 1;
}

forward HTTP_Connect(playeridresponse_codecdata[]);
public 
HTTP_Connect(playeridresponse_codecdata[]) {
    if(
response_codec != 200) {
        
SetPVarString(playerid"Pais""Desconhecido"), SetPVarString(playerid"Estado""Desconhecido"), SetPVarString(playerid"Cidade""Desconhecida");
        return 
1;
    }

       new string[128], pos;
       if(strfind(data"Reserved"true) == -&& strlen(data) >= 15) {
        if((
pos strfind(data"\"country\":")) != -1)
        {
        
    pos += 11;
            
strmid(stringdataposstrfind(data"\""truepos));
            
SetPVarString(playerid"Pais"string);
        }
        if((
pos strfind(data"\"regionName\":")) != -1)
        {
            pos += 14;
            
strmid(stringdataposstrfind(data"\""truepos));
            
SetPVarString(playerid"Estado"string);
        }
        if((
pos strfind(data"\"city\":")) != -1)
        {
        
    pos += 8;
            
strmid(stringdataposstrfind(data"\""truepos));
            
SetPVarString(playerid"Cidade"string);
        }
    }

    
GetPVarString(playerid"Pais"stringMAX_COUNTRY_NAME);
    if(
strfind(string"Brazil"true) == -&& strfind(string"Portugal"true) == -&& strfind(string"France"true) == -&&  strfind(string"Desconhecido"true) == -1)
    {
    
        SendClientMessage(playerid0xFF0000AA"A entrada de seu IP não é permitida.");
             
Kick(playerid);
    }
    return 
0;
}

stock GetPlayerCountry(playerid)
{
    new 
string[MAX_COUNTRY_NAME];
    
GetPVarString(playerid"Pais"stringMAX_COUNTRY_NAME);
    return 
string;
}

stock GetPlayerRegion(playerid)
{
    new 
string[MAX_COUNTRY_NAME];
    
GetPVarString(playerid"Estado"stringMAX_COUNTRY_NAME);
    return 
string;
}
stock GetPlayerCity(playerid)
{
    new 
string[MAX_COUNTRY_NAME];
        GetPVarString(playerid"Cidade"stringMAX_COUNTRY_NAME);
    return 
string;



Boa noite. Ésó criar as variáveis normalmente, ou tem que fazer alguma outra coisa?
Código:
C:\Users\alfar\OneDrive\Área de Trabalho\Independente Hard RP\gamemodes\GMIHRP.pwn(514) : error 017: undefined symbol "GetPlayerIPEx"
C:\Users\alfar\OneDrive\Área de Trabalho\Independente Hard RP\gamemodes\GMIHRP.pwn(515) : error 017: undefined symbol "STRX"
C:\Users\alfar\OneDrive\Área de Trabalho\Independente Hard RP\gamemodes\GMIHRP.pwn(516) : error 017: undefined symbol "HTTP"
Pawn compiler 3.2.3664              Copyright (c) 1997-2006, ITB CompuPhase


3 Errors.

Olá. Não recomendo a utilização desse script, pois é algo bem antigo e tem alguns problemas, como, por exemplo, o fato de que a detecção de VPN é feita através do país do jogador, o que não é eficaz. Existem APIs que fazem essa verificação através do provedor e de bancos de dados de IPs não residenciais. Fiz uma edição para consertar esses problemas, mas ainda assim existem opções mais eficazes.

Recomendo a utilização deste script para detecção de VPN: https://github.com/Southclaws/samp-geoip ou https://github.com/Whitetigerswt/SAMP-geoip para dados mais específicos do IP do jogador, como estado e cidade.

Entendido, obrigado. Vou estudar sobre o assunto.
O problema com os erros que mostrei acima, eu resolvi. Era algo muito trivial que eu tinha deixado escapar.
Com sua recomendação, eu deixarei esse script e estudarei sobre as novas funções que me passou. Obrigado mesmo Smile