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(STRX, 128, "ip-api.com/json/%s", GetPlayerIPEx(playerid)); HTTP(playerid, HTTP_GET, STRX, "", "HTTP_Connect"); } return 1; }
forward HTTP_Connect(playerid, response_codec, data[]); public HTTP_Connect(playerid, response_codec, data[]) { 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) == -1 && strlen(data) >= 15) { if((pos = strfind(data, "\"country\":")) != -1) { pos += 11; strmid(string, data, pos, strfind(data, "\"", true, pos)); SetPVarString(playerid, "Pais", string); } if((pos = strfind(data, "\"regionName\":")) != -1) { pos += 14; strmid(string, data, pos, strfind(data, "\"", true, pos)); SetPVarString(playerid, "Estado", string); } if((pos = strfind(data, "\"city\":")) != -1) { pos += 8; strmid(string, data, pos, strfind(data, "\"", true, pos)); SetPVarString(playerid, "Cidade", string); } }
GetPVarString(playerid, "Pais", string, MAX_COUNTRY_NAME); if(strfind(string, "Brazil", true) == -1 && strfind(string, "Portugal", true) == -1 && strfind(string, "France", true) == -1 && strfind(string, "Desconhecido", true) == -1) { SendClientMessage(playerid, 0xFF0000AA, "A entrada de seu IP não é permitida."); Kick(playerid); } return 0; }
stock GetPlayerCountry(playerid) { new string[MAX_COUNTRY_NAME]; GetPVarString(playerid, "Pais", string, MAX_COUNTRY_NAME); return string; }
stock GetPlayerRegion(playerid) { new string[MAX_COUNTRY_NAME]; GetPVarString(playerid, "Estado", string, MAX_COUNTRY_NAME); return string; } stock GetPlayerCity(playerid) { new string[MAX_COUNTRY_NAME]; GetPVarString(playerid, "Cidade", string, MAX_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(STRX, 128, "ip-api.com/json/%s", GetPlayerIPEx(playerid)); HTTP(playerid, HTTP_GET, STRX, "", "HTTP_Connect"); } return 1; }
forward HTTP_Connect(playerid, response_codec, data[]); public HTTP_Connect(playerid, response_codec, data[]) { 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) == -1 && strlen(data) >= 15) { if((pos = strfind(data, "\"country\":")) != -1) { pos += 11; strmid(string, data, pos, strfind(data, "\"", true, pos)); SetPVarString(playerid, "Pais", string); } if((pos = strfind(data, "\"regionName\":")) != -1) { pos += 14; strmid(string, data, pos, strfind(data, "\"", true, pos)); SetPVarString(playerid, "Estado", string); } if((pos = strfind(data, "\"city\":")) != -1) { pos += 8; strmid(string, data, pos, strfind(data, "\"", true, pos)); SetPVarString(playerid, "Cidade", string); } }
GetPVarString(playerid, "Pais", string, MAX_COUNTRY_NAME); if(strfind(string, "Brazil", true) == -1 && strfind(string, "Portugal", true) == -1 && strfind(string, "France", true) == -1 && strfind(string, "Desconhecido", true) == -1) { SendClientMessage(playerid, 0xFF0000AA, "A entrada de seu IP não é permitida."); Kick(playerid); } return 0; }
stock GetPlayerCountry(playerid) { new string[MAX_COUNTRY_NAME]; GetPVarString(playerid, "Pais", string, MAX_COUNTRY_NAME); return string; }
stock GetPlayerRegion(playerid) { new string[MAX_COUNTRY_NAME]; GetPVarString(playerid, "Estado", string, MAX_COUNTRY_NAME); return string; } stock GetPlayerCity(playerid) { new string[MAX_COUNTRY_NAME]; GetPVarString(playerid, "Cidade", string, MAX_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(STRX, 128, "ip-api.com/json/%s", GetPlayerIPEx(playerid)); HTTP(playerid, HTTP_GET, STRX, "", "HTTP_Connect"); } return 1; }
forward HTTP_Connect(playerid, response_codec, data[]); public HTTP_Connect(playerid, response_codec, data[]) { 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) == -1 && strlen(data) >= 15) { if((pos = strfind(data, "\"country\":")) != -1) { pos += 11; strmid(string, data, pos, strfind(data, "\"", true, pos)); SetPVarString(playerid, "Pais", string); } if((pos = strfind(data, "\"regionName\":")) != -1) { pos += 14; strmid(string, data, pos, strfind(data, "\"", true, pos)); SetPVarString(playerid, "Estado", string); } if((pos = strfind(data, "\"city\":")) != -1) { pos += 8; strmid(string, data, pos, strfind(data, "\"", true, pos)); SetPVarString(playerid, "Cidade", string); } }
GetPVarString(playerid, "Pais", string, MAX_COUNTRY_NAME); if(strfind(string, "Brazil", true) == -1 && strfind(string, "Portugal", true) == -1 && strfind(string, "France", true) == -1 && strfind(string, "Desconhecido", true) == -1) { SendClientMessage(playerid, 0xFF0000AA, "A entrada de seu IP não é permitida."); Kick(playerid); } return 0; }
stock GetPlayerCountry(playerid) { new string[MAX_COUNTRY_NAME]; GetPVarString(playerid, "Pais", string, MAX_COUNTRY_NAME); return string; }
stock GetPlayerRegion(playerid) { new string[MAX_COUNTRY_NAME]; GetPVarString(playerid, "Estado", string, MAX_COUNTRY_NAME); return string; } stock GetPlayerCity(playerid) { new string[MAX_COUNTRY_NAME]; GetPVarString(playerid, "Cidade", string, MAX_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
|