Protegendo seu GameMode (.amx)
__________________
Um dos grandes medos de um programador, é ver seus trabalhos nas mãos de outras pessoas sem seu consentimento.
O arquivo .pwn é o tesouro de qualquer programador pawn, e concerteza o mais protegido.
Porém, muitas vezes deixa-se de lado a proteção do .amx, o que não deveria ocorrer.
Não sei vocês, mas eu não gostaria de ver um servidor usando meu GameMode sem a minha devida permissão.
Muitos deixam 'comando secretos' em seus GM's para recuperar a rcon, porém isso não é um método tão eficaz quanto o que eu trago hoje, porque ele depende diretamente da paciência de procurar todos os servidores que usam o GM roubado, e depois entrar em cada um deles para usar o tal comando secreto.
Separei 4 métodos de proteção. São eles :
* Por Data
* Por Porta
* Por IP
* Por Senha
Antes de começar, uma explicação breve sobre duas funções que iremos utilizar :
- GetServerVarAsString (wiki.sa-mp.com/wiki/GetServerVarAsString) - Obtém um parâmetro (string) do server.cfg.
- GetServerVarAsInt (wiki.sa-mp.com/wiki/GetServerVarAsInt) - Obtém um parâmetro (inteiro) do server.cfg.
Proteção por data
Método onde damos ao GameMode prazo de válidade. Depois desse prazo, ele não será inicializado.
//Topo
//Com isso o GM funcionará até abril. A partir de maio ele não abre mais.
#define MES_LIMITE 4
public OnGameModeInit()
{
new Data[3];
getdate(Data[0], Data[1], Data[2]); // Ano, mes, dia
if(Data[1] > MES_LIMITE) // Se o mês atual é maior que o permitido, o servidor fechará.
{
printf("Proteção por Data ativada.");
printf("Você não tem permissão para usar este GameMode.");
SendRconCommand("exit");
return true;
}
//
return true;
}
Proteção por porta
Método onde verificamos se a porta do servidor é a mesma da porta permitida no GameMode.
//Topo
#define PORTA_PERMITIDA 7777
public OnGameModeInit()
{
new SERVER_PORT = GetServerVarAsInt("port"); //Obtém do server.cfg a porta em que o servidor será aberto.
if(SERVER_PORT != PORTA_PERMITIDA) // Se a porta obtida for diferente da permitida no GameMode, o servidor fechará.
{
printf("Proteção por Porta ativada.");
printf("Você não tem permissão para usar este GameMode.");
SendRconCommand("exit");
return true;
}
//
return true;
}
Proteção por IP
Método onde verificamos se o IP do servidor é o mesmo do permitido no GameMode.
É necessário que se acrescente isso no seu server.cfg :
bind 127.0.0.1
Nesse caso, o servidor só poderá ser caseiro. Troque pelo IP do seu host.
//Topo
#define IP_PERMITIDO "127.0.0.1"
public OnGameModeInit()
{
new SERVER_IP[16];
GetServerVarAsString("bind", SERVER_IP, sizeof SERVER_IP); // Armazena o conteúdo de 'bind' em SERVER_IP
if(strcmp(SERVER_IP,IP_PERMITIDO) || !strlen(SERVER_IP)) // Verifica se o IP contido em 'bind' é o mesmo que o permitido no GameMode e também se 'bind' existe no server.cfg
{
printf("Proteção por IP ativada.");
printf("Você não tem permissão para usar este GameMode.");
SendRconCommand("exit");
return true;
}
//
return true;
}
Proteção por Rcon
Método onde verificamos se a rcon do servidor é a mesma da permitida no GameMode.
//Topo
#define RCON_PERMITIDA "ViniBorn"
public OnGameModeInit()
{
GetServerVarAsString("rcon_password", SERVER_RCON, sizeof SERVER_RCON); // Armazena a rcon obtida do server.cfg em SERVER_RCON
if(strcmp(SERVER_RCON,RCON_PERMITIDA)) // Verifica se a Rcon contido no server.cfg é a mesma que a permitida no GameMode
{
printf("Proteção por Rcon ativada.");
printf("Você não tem permissão para usar este GameMode.");
SendRconCommand("exit");
return true;
}
//
return true;
}
Também é bom utilizar o famoso AntiDeAMX, que evita que o seu GM seja 'descompilado'
AntiDeAMX()
{
new a[][] = { "Unarmed (Fist)", "Brass K" };
#pragma unused a
}
//OnGameModeInit
AntiDeAMX();
Estas informações são muito úteis a todos, e principalmente para aqueles que não confiam muito no host onde irão hospedar seus servidores.
Não sou muito bom com tutoriais, mas espero que tenham entendido.
Qualquer dúvida é só perguntar.
__________________
Um dos grandes medos de um programador, é ver seus trabalhos nas mãos de outras pessoas sem seu consentimento.
O arquivo .pwn é o tesouro de qualquer programador pawn, e concerteza o mais protegido.
Porém, muitas vezes deixa-se de lado a proteção do .amx, o que não deveria ocorrer.
Não sei vocês, mas eu não gostaria de ver um servidor usando meu GameMode sem a minha devida permissão.
Muitos deixam 'comando secretos' em seus GM's para recuperar a rcon, porém isso não é um método tão eficaz quanto o que eu trago hoje, porque ele depende diretamente da paciência de procurar todos os servidores que usam o GM roubado, e depois entrar em cada um deles para usar o tal comando secreto.
Separei 4 métodos de proteção. São eles :
* Por Data
* Por Porta
* Por IP
* Por Senha
Antes de começar, uma explicação breve sobre duas funções que iremos utilizar :
- GetServerVarAsString (wiki.sa-mp.com/wiki/GetServerVarAsString) - Obtém um parâmetro (string) do server.cfg.
- GetServerVarAsInt (wiki.sa-mp.com/wiki/GetServerVarAsInt) - Obtém um parâmetro (inteiro) do server.cfg.
Proteção por data
Método onde damos ao GameMode prazo de válidade. Depois desse prazo, ele não será inicializado.
//Topo
//Com isso o GM funcionará até abril. A partir de maio ele não abre mais.
#define MES_LIMITE 4
public OnGameModeInit()
{
new Data[3];
getdate(Data[0], Data[1], Data[2]); // Ano, mes, dia
if(Data[1] > MES_LIMITE) // Se o mês atual é maior que o permitido, o servidor fechará.
{
printf("Proteção por Data ativada.");
printf("Você não tem permissão para usar este GameMode.");
SendRconCommand("exit");
return true;
}
//
return true;
}
Proteção por porta
Método onde verificamos se a porta do servidor é a mesma da porta permitida no GameMode.
//Topo
#define PORTA_PERMITIDA 7777
public OnGameModeInit()
{
new SERVER_PORT = GetServerVarAsInt("port"); //Obtém do server.cfg a porta em que o servidor será aberto.
if(SERVER_PORT != PORTA_PERMITIDA) // Se a porta obtida for diferente da permitida no GameMode, o servidor fechará.
{
printf("Proteção por Porta ativada.");
printf("Você não tem permissão para usar este GameMode.");
SendRconCommand("exit");
return true;
}
//
return true;
}
Proteção por IP
Método onde verificamos se o IP do servidor é o mesmo do permitido no GameMode.
É necessário que se acrescente isso no seu server.cfg :
bind 127.0.0.1
Nesse caso, o servidor só poderá ser caseiro. Troque pelo IP do seu host.
//Topo
#define IP_PERMITIDO "127.0.0.1"
public OnGameModeInit()
{
new SERVER_IP[16];
GetServerVarAsString("bind", SERVER_IP, sizeof SERVER_IP); // Armazena o conteúdo de 'bind' em SERVER_IP
if(strcmp(SERVER_IP,IP_PERMITIDO) || !strlen(SERVER_IP)) // Verifica se o IP contido em 'bind' é o mesmo que o permitido no GameMode e também se 'bind' existe no server.cfg
{
printf("Proteção por IP ativada.");
printf("Você não tem permissão para usar este GameMode.");
SendRconCommand("exit");
return true;
}
//
return true;
}
Proteção por Rcon
Método onde verificamos se a rcon do servidor é a mesma da permitida no GameMode.
//Topo
#define RCON_PERMITIDA "ViniBorn"
public OnGameModeInit()
{
GetServerVarAsString("rcon_password", SERVER_RCON, sizeof SERVER_RCON); // Armazena a rcon obtida do server.cfg em SERVER_RCON
if(strcmp(SERVER_RCON,RCON_PERMITIDA)) // Verifica se a Rcon contido no server.cfg é a mesma que a permitida no GameMode
{
printf("Proteção por Rcon ativada.");
printf("Você não tem permissão para usar este GameMode.");
SendRconCommand("exit");
return true;
}
//
return true;
}
Também é bom utilizar o famoso AntiDeAMX, que evita que o seu GM seja 'descompilado'
AntiDeAMX()
{
new a[][] = { "Unarmed (Fist)", "Brass K" };
#pragma unused a
}
//OnGameModeInit
AntiDeAMX();
Estas informações são muito úteis a todos, e principalmente para aqueles que não confiam muito no host onde irão hospedar seus servidores.
Não sou muito bom com tutoriais, mas espero que tenham entendido.
Qualquer dúvida é só perguntar.
1 comentários:
Mto bom..vlw msm tava precisando
Postar um comentário
- Sem Divulgar Links
- Sem Chingar ninguem
- Sem Falar de outro blog
- Obrigado -