[Tutorial]Protegendo seu Gm ( .amx )

segunda-feira, 28 de janeiro de 2013
Unknown
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.

1 comentários:

Anônimo disse...

Mto bom..vlw msm tava precisando

Postar um comentário

- Sem Divulgar Links
- Sem Chingar ninguem
- Sem Falar de outro blog
- Obrigado -

PikeenoOo Designer