Banimentos: IP, conta e outras estratégias
O Ban() nativo bane o IP e pronto. Para um servidor sério, isso é pouco: IPs mudam, jogadores legítimos compartilham IP (mesma casa, lan house, operadora) e não há histórico. Um sistema de banimentos próprio resolve.
Tipos de banimento
Por conta
O mais importante: a conta fica bloqueada, independente do IP. Salvo no banco:
CREATE TABLE banimentos (
id INT AUTO_INCREMENT PRIMARY KEY,
conta_id INT NULL,
ip VARCHAR(45) NULL,
motivo VARCHAR(128) NOT NULL,
admin_id INT NOT NULL,
criado_em DATETIME DEFAULT CURRENT_TIMESTAMP,
expira_em DATETIME NULL, -- NULL = permanente
ativo TINYINT NOT NULL DEFAULT 1
);
Por IP
Dificulta criar contas novas. Mas atenção: muitas operadoras usam CGNAT, e várias pessoas saem pelo mesmo IP. Um ban de IP pode atingir inocentes.
Por faixa de IP
Para quem troca de IP toda hora dentro da mesma faixa. Use com muito cuidado, porque o risco de atingir inocentes é maior.
Por identificadores do cliente
Alguns servidores usam identificadores fornecidos pelo cliente (como o gpci do SA-MP) como sinal adicional. Não são infalíveis nem únicos. Use como indício, nunca como prova isolada.
Bans temporários
Nem toda infração merece ban permanente. Use escalas:
- Aviso;
- Kick;
- Ban de 1 dia;
- Ban de 7 dias;
- Ban permanente.
Na conexão, verifique se há ban ativo e não expirado.
Verificando na conexão
public OnPlayerConnect(playerid)
{
new ip[16], query[200];
GetPlayerIp(playerid, ip, sizeof(ip));
mysql_format(Banco, query, sizeof(query),
"SELECT motivo FROM banimentos WHERE ativo = 1 AND ip = '%e' \
AND (expira_em IS NULL OR expira_em > NOW()) LIMIT 1", ip);
mysql_tquery(Banco, query, "OnVerificarBan", "i", playerid);
return 1;
}
Depois do login, verifique também o ban por conta.
Mostre o motivo
Ao banir, informe: motivo, duração, nome do admin (ou um código) e como apelar. Isso reduz discussões e dá transparência.
Apelações
Tenha um canal de revisão (fórum ou Discord). Erros acontecem, e revisar bans ajuda a detectar abuso de staff.
Hospede seu servidor com a VittHost
Os planos OPENMP-BR da VittHost incluem MySQL para seu sistema de banimentos, com servidores no Brasil, painel Pterodactyl, proteção DDoS, compatibilidade total com scripts SA-MP e teste grátis de 3 dias.