17/05/2025 23:06
(Esta mensagem foi modificada pela última vez a: 18:14 por White_Blue.)
Cbug Detection
Introdução
O Cbug Detection é um include desenvolvido para SA-MP (San Andreas Multiplayer) e open.mp, tendo como finalidade primária a detecção do C-Bug. Essa técnica permite que jogadores efetuem disparos em cadências mais rápidas que o convencional ao explorar mecânicas de animação e troca rápida de estado (como agachar).
O foco principal deste include é identificar padrões de comportamento que configuram o uso do C-Bug. Ele age como uma ferramenta de monitoramento e sinalização, acionando um callback específico em seu script quando detecta tal atividade.
É crucial salientar: O Cbug Detection não bane, kicka ou toma qualquer outra medida punitiva automaticamente. A decisão e implementação das ações subsequentes à detecção (como advertir, registrar, penalizar) são de total responsabilidade e discricionariedade do desenvolvedor do servidor, permitindo integração flexível com sistemas existentes.
Recursos Principais
- Detecção Ampla: Capaz de identificar várias variantes comuns do C-Bug (Classic, Rollbug, Quick C-switch, etc.).
- Controle por Jogador: Habilite ou desabilite a detecção individualmente para jogadores específicos via funções dedicadas.
- Ajuste de Latência (Ping): Parâmetros de detecção são adaptados com base no ping do jogador para maior precisão e redução de falsos positivos em conexões variadas.
- Validações Internas: Considera o estado atual do jogador (a pé, animações de corrida/pulo), arma equipada e munição disponível para refinar a detecção.
- Otimizado: Opera com baixo impacto no desempenho, utilizando primariamente os callbacks nativos OnPlayerKeyStateChange e OnPlayerWeaponShot.
- Callback de Detecção Customizável: O callback CbugDetection_OnDetected permite executar qualquer lógica de script desejada ao ocorrer uma detecção.
Princípio de Funcionamento
O sistema monitora a sequência de eventos de tecla e disparos do jogador. Utiliza um sistema interno de pontuação que aumenta quando ações típicas do C-Bug são detectadas em curtos intervalos após um disparo (ex: agachar rapidamente, trocar de arma, múltiplos disparos rápidos). Essa pontuação decai com o tempo.
Ao atingir um limiar configurado e respeitar períodos de cooldown para evitar detecções repetidas da mesma ação, o include considera a ocorrência de C-Bug potencial e invoca o callback CbugDetection_OnDetected(playerid), fornecendo o ID do jogador detectado.
Validadores adicionais impedem detecções enquanto o jogador está correndo, pulando ou em veículos, ou usando armas que não são associadas a técnica.
Instalação
1. Obtenha o arquivo "cbug-detection.inc".
2. Mova o arquivo para a subpasta "pawno/include" do seu servidor.
3. Edite seu script principal (gamemode ou filterscript). Adicione a linha para incluir o arquivo APÓS as includes primárias (a_samp ou open.mp) e outras includes básicas:
Código:
#include <a_samp> // Ou <open.mp>
// Outras includes aqui...
#include <cbug-detection> // Adicionar ESTA include AQUI!
4. Compile seu script.
Importante: A inclusão de "<cbug-detection>" deve ser feita após "<a_samp>" ou "<open.mp>" para evitar erros de compilação relacionados a definições duplicadas ou inexistentes.
Uso Básico
Para utilizar a detecção, é necessário implementar a ação desejada no callback de detecção e ativar o sistema para os jogadores.
1. Implemente o Callback CbugDetection_OnDetected: Esta função será chamada sempre que a detecção identificar um padrão de C-Bug para um jogador:
Código:
// O 'forward' para este callback é declarado na include,
// mas você precisa definir a função 'public' no seu script:
// public CbugDetection_OnDetected(playerid) { // etc }
public CbugDetection_OnDetected(playerid)
{
new nome[MAX_PLAYER_NAME];
GetPlayerName(playerid, nome, sizeof(nome));
printf("[Cbug Detection]: Jogador "%s" (ID: %d) possivelmente usou C-Bug.", nome, playerid); // Exemplo: printar no console do servidor
// --- Defina AQUI as acoes a serem executadas apos a deteccao ---
// Exemplos comuns incluem:
// SendClientMessage(playerid, -1, "Evite o uso de tecnicas rapidas de disparo."); // Aviso ao jogador
// Criar uma funcao baseado em "anti-cheat" para lidar com isso, como congelar o jogador, ou algo do genero
// Punições (geralmente graduais: aviso -> kick -> ban); tenha em mente que "kick" ou "ban" nao é recomendavel
// ---------------------------------------------------------------
return 1;
}
2. Controle por Jogador: A detecção não inicia automaticamente para nenhum jogador. Use a função CbugDetection_Player para ativar ou desativar o sistema individualmente:
Código:
// Ativar a detecção para um jogador:
// CbugDetection_Player(playerid, true);
// Desativar a detecção para um jogador:
// CbugDetection_Player(playerid, false);
// Verificar se a detecção está ativa para um jogador:
// CbugDetection_IsActive(playerid);
// Exemplos de uso:
// No inicio de um round/minigame: CbugDetection_Player(playerid, true);
// Ao sair do combate/entrar em area segura: CbugDetection_Player(playerid, false);
// Em OnPlayerConnect (se seu servidor é focado em DM): CbugDetection_Player(playerid, true);
Considerações
- O desempenho e a precisão podem ser influenciados por scripts que modificam ou interceptam de forma não padrão os callbacks OnPlayerKeyStateChange e OnPlayerWeaponShot.
- Embora ajustes baseados no ping sejam aplicados, latências significativamente altas podem impactar a detecção.
- Detecções baseadas em heurística, como esta, inerentemente podem apresentar casos falsos positivos sob circunstâncias atípicas ou ações legítimas muito rápidas em sequência. É recomendado que a resposta configurada no callback leve isso em consideração (ex: aplicar advertências cumulativas em vez de punição imediata no primeiro aviso).
- O include possui configurações ajustáveis via defines, mas a modificação dos valores padrão é desencorajada devido ao risco de desequilibrar a precisão ou aumentar falsos positivos.
Informações Adicionais
Para um entendimento completo do include, detalhes técnicos sobre os defines, lógica de detecção, testes e licença, por favor, consulte a documentação completa (README) no repositório oficial.
Desenvolvedor: Calasans
Repositório: https://github.com/ocalasans/cbug-detection
GitHub: https://github.com/ocalasans
Community: https://abre.ai/spc-samp