{"id":28936466,"url":"https://github.com/ocalasans/cbug-detection","last_synced_at":"2026-02-03T15:33:15.258Z","repository":{"id":298423381,"uuid":"985532508","full_name":"ocalasans/cbug-detection","owner":"ocalasans","description":"Cbug Detection is an include for SA-MP (San Andreas Multiplayer) that detects the C-Bug exploit, allowing identification of actions that provide unfair advantages in combat.","archived":false,"fork":false,"pushed_at":"2025-05-24T10:09:02.000Z","size":104,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-22T20:38:12.547Z","etag":null,"topics":["gta","gtasa","include","open-mp","openmp","pawn","sa-mp","sa-mp-development","sa-mp-library","samp"],"latest_commit_sha":null,"homepage":"","language":"Pawn","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ocalasans.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-18T01:02:51.000Z","updated_at":"2025-05-24T10:09:05.000Z","dependencies_parsed_at":"2025-06-11T03:39:11.981Z","dependency_job_id":"9741b962-fc75-4ecb-b450-46d46c56b023","html_url":"https://github.com/ocalasans/cbug-detection","commit_stats":null,"previous_names":["ocalasans/cbug-detection"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ocalasans/cbug-detection","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocalasans%2Fcbug-detection","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocalasans%2Fcbug-detection/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocalasans%2Fcbug-detection/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocalasans%2Fcbug-detection/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ocalasans","download_url":"https://codeload.github.com/ocalasans/cbug-detection/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ocalasans%2Fcbug-detection/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29047907,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T15:19:55.533Z","status":"ssl_error","status_checked_at":"2026-02-03T15:13:09.723Z","response_time":96,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gta","gtasa","include","open-mp","openmp","pawn","sa-mp","sa-mp-development","sa-mp-library","samp"],"created_at":"2025-06-22T20:30:37.090Z","updated_at":"2026-02-03T15:33:15.249Z","avatar_url":"https://github.com/ocalasans.png","language":"Pawn","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cbug Detection\r\n\r\nO **Cbug Detection** é um include flexível para **San Andreas Multiplayer (SA-MP)** projetado para detectar o **exploit C-Bug**, uma técnica que permite aos jogadores atirar mais rápido do que o previsto ao explorar mecânicas do jogo. Este **include** oferece aos **desenvolvedores de servidores** uma ferramenta confiável para identificar o uso de **C-Bug**, possibilitando integração com sistemas como anti-cheat, monitoramento de comportamento ou regras personalizadas de jogabilidade.\r\n\r\nNo contexto do **SA-MP**, o **C-Bug** é uma prática que envolve ações rápidas, como agachar ou trocar de arma, após disparar certas armas, reduzindo o tempo de recarga e conferindo vantagem injusta em combates. Este **include** detecta essas ações de forma precisa, sendo útil em servidores **Roleplay (RP)**, **Team Deathmatch (TDM)**, **Deathmatch (DM)**, minigames ou qualquer cenário que exija controle rigoroso das mecânicas de jogo. Sua versatilidade permite usos além do anti-cheat, como análise de jogabilidade ou criação de mecânicas únicas.\r\n\r\n\u003e [!NOTE]\r\n\u003e O **Cbug Detection** não se limita a bloquear **C-Bug**; ele pode ser integrado em sistemas de monitoramento, eventos específicos ou minigames com regras customizadas. **Em resumo, são os desenvolvedores que decidem qual ação deve ocorrer quando um player for detectado usando C-Bug**, permitindo uma ampla flexibilidade na aplicação da detecção conforme o contexto do servidor.\r\n\r\n## Idiomas\r\n\r\n- Deutsch: [README](translations/Deutsch/README.md)\r\n- English: [README](translations/English/README.md)\r\n- Español: [README](translations/Espanol/README.md)\r\n- Français: [README](translations/Francais/README.md)\r\n- Italiano: [README](translations/Italiano/README.md)\r\n- Polski: [README](translations/Polski/README.md)\r\n- Русский: [README](translations/Русский/README.md)\r\n- Svenska: [README](translations/Svenska/README.md)\r\n- Türkçe: [README](translations/Turkce/README.md)\r\n\r\n## Índice\r\n\r\n- [Cbug Detection](#cbug-detection)\r\n  - [Idiomas](#idiomas)\r\n  - [Índice](#índice)\r\n  - [Funcionalidades](#funcionalidades)\r\n  - [Como Funciona](#como-funciona)\r\n    - [Lógica de Detecção](#lógica-de-detecção)\r\n    - [Eventos Monitorados](#eventos-monitorados)\r\n    - [Configurações (Defines)](#configurações-defines)\r\n  - [Estrutura do Código](#estrutura-do-código)\r\n  - [Instalação e Configuração](#instalação-e-configuração)\r\n    - [Instalação](#instalação)\r\n    - [Configuração](#configuração)\r\n  - [Como Utilizar](#como-utilizar)\r\n    - [Ativação por Jogador](#ativação-por-jogador)\r\n    - [Desativação por Jogador](#desativação-por-jogador)\r\n    - [Verificação de Estado](#verificação-de-estado)\r\n    - [Integração com Anti-Cheat](#integração-com-anti-cheat)\r\n    - [Registro de Detecções](#registro-de-detecções)\r\n    - [Exemplo em Minigame](#exemplo-em-minigame)\r\n  - [Aplicações Possíveis](#aplicações-possíveis)\r\n  - [Personalização](#personalização)\r\n    - [Ajuste de Defines](#ajuste-de-defines)\r\n    - [Personalização do Callback](#personalização-do-callback)\r\n  - [Testes e Validação](#testes-e-validação)\r\n  - [Limitações e Considerações](#limitações-e-considerações)\r\n  - [Licença](#licença)\r\n    - [Condições:](#condições)\r\n\r\n## Funcionalidades\r\n\r\n- **Detecção Abrangente de C-Bug**: Identifica as seguintes variantes:\r\n  - Clássico\r\n  - Rollbug\r\n  - Quick C-switch\r\n  - Jumpbug\r\n  - Run Bug\r\n  - Slide C-Bug\r\n  - Disparos rápidos\r\n- **Controle por Jogador**: Ativa ou desativa a detecção individualmente para cada jogador.\r\n- **Ajuste por Ping**: Adapta os tempos de detecção com base no ping do jogador, minimizando falsos positivos.\r\n- **Proteção contra Falsos Positivos**: Valida estado do jogador, arma, munição e animações para garantir precisão.\r\n- **Configurações Personalizáveis**: Define parâmetros de detecção via constantes (`defines`), embora os valores padrão sejam otimizados.\r\n- **Callback Extensível**: O callback `CbugDetection_OnDetected` permite integração com sistemas personalizados.\r\n- **Leve e Otimizado**: Usa apenas `OnPlayerKeyStateChange` e `OnPlayerWeaponShot`, com impacto mínimo no desempenho.\r\n\r\n## Como Funciona\r\n\r\nO include monitora ações dos jogadores por meio dos callbacks **OnPlayerKeyStateChange** e **OnPlayerWeaponShot**, utilizando um sistema de **pontuação de suspeita** (`cbug_d_suspicion_score`) para identificar padrões de C-Bug. Quando a pontuação ultrapassa um limite configurável (`CBUG_D_SUSPICION_THRESHOLD`), o callback `CbugDetection_OnDetected` é acionado.\r\n\r\n\u003e [!IMPORTANT]\r\n\u003e O sistema é projetado para ser robusto, com validações rigorosas que minimizam **falsos positivos**, **embora casos raros possam ocorrer**, conforme detalhado na seção de limitações.\r\n\r\n### Lógica de Detecção\r\n1. **Pontuação de Suspeita**:\r\n   - Ações suspeitas (e.g., agachar, trocar arma, disparos rápidos) incrementam `cbug_d_suspicion_score` com pesos específicos.\r\n   - Exemplo: Agachar após disparar adiciona **4.0** pontos; disparos rápidos adicionam **3.0** pontos.\r\n   - A pontuação decai com o tempo (`CBUG_D_SUSPICION_DECAY = 0.5` por segundo) para evitar acumulação de ações não relacionadas.\r\n\r\n2. **Janelas de Tempo**:\r\n   - Ações são consideradas suspeitas se ocorrerem logo após um disparo (`CBUG_D_SEQUENCE_INTERVAL = 1500ms`).\r\n   - Disparos rápidos são detectados se ocorrerem dentro de `CBUG_D_SHOT_INTERVAL = 200ms`.\r\n\r\n3. **Validações**:\r\n   - Monitora apenas armas específicas (`CBUG_D_VALID_WEAPONS`: **Desert Eagle**, **Shotgun**, **SPAS-12**, **Rifle**, **Sniper**).\r\n   - A detecção é desativada se:\r\n     - O jogador não está a pé (`PLAYER_STATE_ONFOOT`).\r\n     - O jogador está correndo ou pulando (verificado por animações).\r\n     - Não há munição (`GetPlayerAmmo(playerid) \u003c= 0`).\r\n     - A detecção está desativada para o jogador (`cbug_d_player_status`).\r\n\r\n4. **Ajuste por Ping**:\r\n   - A função `CbugDetection_GetPingAdjtThresh` ajusta os tempos com base no ping:\r\n     ```pawn\r\n     static stock Float:CbugDetection_GetPingAdjtThresh(playerid, cbug_d_base_threshold)\r\n         return float(cbug_d_base_threshold) + (float(GetPlayerPing(playerid)) * CBUG_D_PING_MULTIPLIER);\r\n     ```\r\n   - Isso garante justiça para jogadores com maior latência (e.g., **200**-**300ms**).\r\n\r\n5. **Cooldown**:\r\n   - Um intervalo (`CBUG_D_COOLDOWN_TIME = 1500ms`) evita detecções repetidas para a mesma sequência.\r\n\r\n### Eventos Monitorados\r\n- **OnPlayerKeyStateChange**:\r\n  - Rastreia teclas pressionadas (agachar, correr, esquerda/direita) e trocas de arma.\r\n  - Detecta padrões como agachar ou rolar após disparar.\r\n  - Exemplo:\r\n    ```pawn\r\n    if ((newkeys \u0026 KEY_CROUCH) \u0026\u0026 !(oldkeys \u0026 KEY_CROUCH)) {\r\n        cbug_d_score_increment = 4.0;\r\n        // Verificações adicionais para Rollbug, Quick C-switch, etc.\r\n    }\r\n    ```\r\n\r\n- **OnPlayerWeaponShot**:\r\n  - Monitora disparos e sequências rápidas.\r\n  - Atualiza a pontuação para disparos consecutivos rápidos.\r\n  - Exemplo:\r\n    ```pawn\r\n    if (cbug_d_time_since_last_shot \u003c= cbug_d_adjusted_shot_threshold) {\r\n        cbug_d_suspicion_score[playerid] += 3.0;\r\n        cbug_d_shot_count[playerid]++;\r\n        cbug_d_last_action_time[playerid] = cbug_d_current_time;\r\n    }\r\n    ```\r\n\r\n- **OnPlayerConnect**:\r\n  - Inicializa o estado de detecção do jogador como desativado e reseta variáveis:\r\n    ```pawn\r\n    cbug_d_player_status[playerid] = false;\r\n    CbugDetection_ResetVariables(playerid);\r\n    ```\r\n\r\n### Configurações (Defines)\r\nOs defines controlam o comportamento da detecção. Os valores padrão são otimizados e recomendados:\r\n\r\n| Define                        | Valor Padrão         | Descrição                                                                              |\r\n|-------------------------------|----------------------|----------------------------------------------------------------------------------------|\r\n| `CBUG_D_SUSPICION_THRESHOLD`  | 10.0                 | Pontuação necessária para detecção. Valores maiores reduzem sensibilidade.             |\r\n| `CBUG_D_SUSPICION_DECAY`      | 0.5                  | Decaimento da pontuação por segundo.                                                   |\r\n| `CBUG_D_SEQUENCE_INTERVAL`    | 1500                 | Janela (**ms**) para ações após disparo serem consideradas suspeitas.                  |\r\n| `CBUG_D_SHOT_INTERVAL`        | 200                  | Janela (**ms**) para detectar disparos rápidos consecutivos.                           |\r\n| `CBUG_D_COOLDOWN_TIME`        | 1500                 | Cooldown (**ms**) entre detecções para evitar repetições.                              |\r\n| `CBUG_D_PING_MULTIPLIER`      | 0.01                 | Multiplicador para ajuste de ping nos tempos.                                          |\r\n| `CBUG_D_WEAPON_BUFFER_TIME`   | 500                  | Buffer (**ms**) para detecção de troca de arma após disparo.                           |\r\n| `CBUG_D_SCORE_RESET_TIME`     | 2000                 | Tempo (**ms**) após última ação para resetar pontuação.                                |\r\n| `CBUG_D_VALID_WEAPONS`        | {24, 25, 27, 33, 34} | Armas monitoradas (**Desert Eagle**, **Shotgun**, **SPAS-12**, **Rifle**, **Sniper**). |\r\n\r\n\u003e [!WARNING]\r\n\u003e Não é recomendado alterar os valores dos defines, pois os padrões foram cuidadosamente calibrados para balancear precisão e desempenho.\r\n\r\n## Estrutura do Código\r\n\r\nO include é organizado em seções distintas, cada uma com uma função específica:\r\n\r\n1. **Cabeçalho**:\r\n   - Define o include guard (`_cbug_detection_included`) e verifica a inclusão de `a_samp` ou `open.mp`.\r\n\r\n2. **Configurações (Defines)**:\r\n   - Define constantes para parâmetros de detecção (e.g., `CBUG_D_SUSPICION_THRESHOLD`).\r\n   - Usa `#if defined` para evitar conflitos de redefinição.\r\n\r\n3. **Variáveis Globais**:\r\n   - Armazena estados dos jogadores:\r\n     ```pawn\r\n     static bool:cbug_d_player_status[MAX_PLAYERS]; // Estado por jogador\r\n     static Float:cbug_d_suspicion_score[MAX_PLAYERS]; // Pontuação de suspeita\r\n     static cbug_d_last_fire_time[MAX_PLAYERS]; // Último disparo\r\n     // ... outras variáveis para rastreamento\r\n     ```\r\n\r\n4. **Funções Utilitárias (Static Stock)**:\r\n   - Funções internas para lógica de detecção:\r\n     - `CbugDetection_GetPingAdjtThresh`: Ajusta tempos por ping.\r\n     - `CbugDetection_IsCbugWeapon`: Verifica armas monitoradas.\r\n     - `CbugDetection_IsJumping`: Detecta animações de pulo.\r\n     - `CbugDetection_IsRunning`: Detecta animações de corrida.\r\n     - `CbugDetection_ResetVariables`: Reseta variáveis do jogador.\r\n   - Exemplo:\r\n     ```pawn\r\n     static stock bool:CbugDetection_ResetVariables(playerid)\r\n     {\r\n         if (cbug_d_suspicion_score[playerid] != 0.0)\r\n             cbug_d_suspicion_score[playerid] = 0.0;\r\n\r\n         if (cbug_d_last_fire_time[playerid] != 0)\r\n             cbug_d_last_fire_time[playerid] = 0;\r\n\r\n         if (cbug_d_last_roll_time[playerid] != 0)\r\n             cbug_d_last_roll_time[playerid] = 0;\r\n\r\n         // ... outras variáveis a ser resetadas...\r\n\r\n         return true;\r\n     }\r\n     ```\r\n\r\n5. **Funções Públicas (Stock)**:\r\n   - Funções para controle do sistema:\r\n     - `CbugDetection_Player`: Ativa ou desativa a detecção para um jogador específico.\r\n     - `CbugDetection_IsActive`: Verifica se a detecção está ativa para um jogador.\r\n   - Exemplo:\r\n     ```pawn\r\n     stock bool:CbugDetection_Player(playerid, bool:cbug_d_enable) {\r\n         if (!IsPlayerConnected(playerid))\r\n             return false;\r\n\r\n         if (cbug_d_enable) {\r\n             if (cbug_d_player_status[playerid])\r\n                 return false;\r\n\r\n             cbug_d_player_status[playerid] = true;\r\n\r\n             return true;\r\n         }\r\n         else {\r\n             if (!cbug_d_player_status[playerid])\r\n                 return false;\r\n\r\n             cbug_d_player_status[playerid] = false;\r\n             CbugDetection_ResetVariables(playerid);\r\n\r\n             return true;\r\n         }\r\n     }\r\n     ```\r\n\r\n6. **Callbacks**:\r\n   - Implementa a lógica em `OnPlayerKeyStateChange`, `OnPlayerWeaponShot`, `OnPlayerConnect`, e `OnPlayerDisconnect`.\r\n   - Fornece `CbugDetection_OnDetected` para personalização.\r\n   - Exemplo:\r\n     ```pawn\r\n     forward CbugDetection_OnDetected(playerid);\r\n     ```\r\n\r\n7. **Hooks ALS**:\r\n   - Integra callbacks padrão do SA-MP para compatibilidade:\r\n     ```pawn\r\n     #if defined _ALS_OnPlayerConnect\r\n         #undef OnPlayerConnect\r\n     #else\r\n         #define _ALS_OnPlayerConnect\r\n     #endif\r\n     #define OnPlayerConnect CBUG_D_OnPlayerConnect\r\n\r\n     // ... outros ALS a serem definidos...\r\n     ```\r\n\r\n## Instalação e Configuração\r\n\r\n### Instalação\r\n1. **Baixe o Include**:\r\n   - Coloque o arquivo `cbug-detection.inc` no diretório `pawno/include`.\r\n\r\n2. **Inclua no Gamemode**:\r\n   - Adicione ao início do gamemode:\r\n     ```pawn\r\n     #include \u003ca_samp\u003e\r\n     #include \u003ccbug-detection\u003e\r\n     ```\r\n\r\n\u003e [!WARNING]\r\n\u003e Certifique-se de incluir `a_samp` ou `open.mp` antes do `cbug-detection.inc`, ou o compilador reportará erros.\r\n\r\n3. **Compile o Gamemode**:\r\n   - Use o compilador **Pawn** para compilar o gamemode, verificando a ausência de erros.\r\n\r\n### Configuração\r\n- **Defina o Callback**:\r\n  - Implemente `CbugDetection_OnDetected` no gamemode para lidar com detecções:\r\n    ```pawn\r\n    public CbugDetection_OnDetected(playerid) {\r\n        new string[100];\r\n\r\n        format(string, sizeof(string), \"Jogador %d detectado usando C-Bug!\", playerid);\r\n        SendClientMessageToAll(-1, string);\r\n\r\n        return 1;\r\n    }\r\n    ```\r\n\r\n## Como Utilizar\r\n\r\nO include oferece controle individual para detecção de C-Bug por jogador. Abaixo, exemplos práticos de uso:\r\n\r\n### Ativação por Jogador\r\n- Ative para um jogador específico, e.g., em um evento de combate:\r\n  ```pawn\r\n  CbugDetection_Player(playerid, true);\r\n  ```\r\n\r\n### Desativação por Jogador\r\n- Desative para um jogador específico, e.g., para administradores:\r\n  ```pawn\r\n  CbugDetection_Player(playerid, false);\r\n  ```\r\n\r\n### Verificação de Estado\r\n- Verifique se a detecção está ativa para um jogador:\r\n  ```pawn\r\n  if (CbugDetection_IsActive(playerid))\r\n      SendClientMessage(playerid, -1, \"Detecção está ativa para você.\");\r\n  ```\r\n\r\n### Integração com Anti-Cheat\r\n- Aplique punições em `CbugDetection_OnDetected`:\r\n  ```pawn\r\n  public CbugDetection_OnDetected(playerid) {\r\n      new string[110], name[MAX_PLAYER_NAME];\r\n      GetPlayerName(playerid, name, sizeof(name));\r\n\r\n      format(string, sizeof(string), \"Jogador %s (ID: %d) detectado usando C-Bug!\", name, playerid);\r\n      SendClientMessageToAll(-1, string);\r\n\r\n      Kick(playerid);\r\n\r\n      return 1;\r\n  }\r\n  ```\r\n\r\n### Registro de Detecções\r\n- Registre detecções em um arquivo:\r\n  ```pawn\r\n  public CbugDetection_OnDetected(playerid) {\r\n      new string[128], name[MAX_PLAYER_NAME], \r\n          File:log = fopen(\"cbug_detections.log\", io_append);\r\n\r\n      format(string, sizeof(string), \"[%s] Jogador %s (ID: %d) detectado usando C-Bug\\n\", GetCurrentDateTime(), name, playerid);\r\n\r\n      fwrite(log, string);\r\n      fclose(log);\r\n\r\n      return 1;\r\n  }\r\n  ```\r\n\r\n### Exemplo em Minigame\r\n- Ative a detecção apenas para jogadores específicos em um minigame:\r\n  ```pawn\r\n  CMD:iniciarminigame(playerid, params[]) {\r\n      CbugDetection_Player(playerid, true);\r\n      SendClientMessage(playerid, -1, \"Detecção de C-Bug ativada para você no minigame!\");\r\n\r\n      return 1;\r\n  }\r\n\r\n  CMD:finalizarminigame(playerid, params[]) {\r\n      CbugDetection_Player(playerid, false);\r\n      SendClientMessage(playerid, -1, \"Detecção de C-Bug desativada para você!\");\r\n\r\n      return 1;\r\n  }\r\n  ```\r\n\r\n\u003e [!TIP]\r\n\u003e Use `CbugDetection_IsActive` para verificar o estado da detecção antes de executar ações condicionais, como alertas ou punições.\r\n\r\n## Aplicações Possíveis\r\n\r\nO **Cbug Detection** é altamente versátil e pode ser usado em diversos contextos:\r\n\r\n- **Servidores Roleplay (RP)**: Reforce regras contra **C-Bug** para combates realistas.\r\n- **Servidores TDM/DM**: Garanta equilíbrio em combates detectando **C-Bug**.\r\n- **Monitoramento**: Analise comportamento dos jogadores ou identifique infratores frequentes.\r\n- **Minigames e Eventos**: Controle **C-Bug** apenas em eventos específicos.\r\n- **Mecânicas Personalizadas**: Integre com sistemas de pontuação ou penalidades.\r\n\r\n\u003e [!NOTE]\r\n\u003e A capacidade de preservar configurações individuais ao ativar ou desativar globalmente torna o include ideal para servidores com regras dinâmicas.\r\n\r\n## Personalização\r\n\r\nEmbora o include seja otimizado com configurações padrão, é possível ajustar os defines ou o callback `CbugDetection_OnDetected`.\r\n\r\n\u003e [!WARNING]\r\n\u003e Alterar os defines ou outras configurações **não é recomendado**, pois os valores padrão foram testados e balanceados para máxima eficácia. Modificações podem causar falsos positivos, detecções imprecisas ou até mesmo impedir o funcionamento adequado.\r\n\r\n### Ajuste de Defines\r\n- **Servidores com Ping Alto**:\r\n  ```pawn\r\n  #define CBUG_D_SEQUENCE_INTERVAL 2000\r\n  #define CBUG_D_SHOT_INTERVAL 300\r\n  ```\r\n\r\n- **Detecção Mais Rigorosa**:\r\n  ```pawn\r\n  #define CBUG_D_SUSPICION_THRESHOLD 15.0\r\n  ```\r\n\r\n- **Armas Personalizadas**:\r\n  ```pawn\r\n  #define CBUG_D_VALID_WEAPONS {24, 25, 27, 33, 34}\r\n  ```\r\n\r\n### Personalização do Callback\r\n- Adicione lógica avançada:\r\n  ```pawn\r\n  public CbugDetection_OnDetected(playerid) {\r\n      new string[128], name[MAX_PLAYER_NAME];\r\n      static warnings[MAX_PLAYERS];\r\n\r\n      GetPlayerName(playerid, name, sizeof(name));\r\n      warnings[playerid]++;\r\n\r\n      format(string, sizeof(string), \"Aviso %d: Jogador %s (ID: %d) detectado usando C-Bug!\", warnings[playerid], name, playerid);\r\n      SendClientMessageToAll(-1, string);\r\n\r\n      if (warnings[playerid] \u003e= 3)\r\n          BanEx(playerid, \"Uso repetido de C-Bug\");\r\n      \r\n      return 1;\r\n  }\r\n  ```\r\n\r\n## Testes e Validação\r\n\r\nPara garantir o funcionamento correto, execute os seguintes testes:\r\n\r\n- **Detecção de C-Bug**:\r\n  - Teste todas as variantes listadas com armas monitoradas.\r\n  - Confirme que `CbugDetection_OnDetected` é acionado após **2**-**3** sequências.\r\n\r\n- **Falsos Positivos**:\r\n  - Execute ações como correr, pular ou atirar sem agachar.\r\n  - Verifique que não há detecções para ações não relacionadas ao **C-Bug**.\r\n\r\n- **Controle por Jogador**:\r\n  - Teste `CbugDetection_Player` para ativação/desativação por jogador.\r\n  - Confirme que a detecção só ocorre para jogadores com `cbug_d_player_status` ativo.\r\n\r\n- **Verificação de Estado**:\r\n  - Use `CbugDetection_IsActive` para confirmar o estado por jogador.\r\n\r\n- **OnPlayerConnect**:\r\n  - Verifique se novos jogadores iniciam com detecção desativada (`cbug_d_player_status = false`).\r\n\r\n- **Ping Alto**:\r\n  - Simule ping de **200**-**300ms** e verifique a precisão da detecção.\r\n\r\n- **Desempenho**:\r\n  - Teste com **50**+ jogadores para confirmar eficiência.\r\n\r\n\u003e [!TIP]\r\n\u003e Teste em um ambiente controlado com poucos jogadores antes de implantar em servidores lotados.\r\n\r\n## Limitações e Considerações\r\n\r\n- **Dependência de Callbacks**:\r\n  - Depende de `OnPlayerWeaponShot` e `OnPlayerKeyStateChange`, que podem ser afetados por lag ou outros includes.\r\n- **Ping Extremo**:\r\n  - Latências muito altas (\u003e**500ms**) podem exigir ajustes em `CBUG_D_PING_MULTIPLIER`.\r\n- **Animações**:\r\n  - A detecção de corrida/pulo usa índices de animação, que podem variar em clientes modificados.\r\n- **Falsos Positivos**:\r\n  - Apesar de robusto, **falsos positivos podem ocorrer em casos raros**, como ações legítimas em sequência rápida, o que é considerado normal.\r\n\r\n\u003e [!IMPORTANT]\r\n\u003e **Falsos positivos** são minimizados pelas validações, mas podem ocorrer em cenários atípicos. Monitore detecções para ajustar o uso, se necessário.\r\n\r\n## Licença\r\n\r\nEste include está protegido sob a Licença Apache 2.0, que permite:\r\n\r\n- ✔️ Uso comercial e privado\r\n- ✔️ Modificação do código fonte\r\n- ✔️ Distribuição do código\r\n- ✔️ Concessão de patentes\r\n\r\n### Condições:\r\n\r\n- Manter o aviso de direitos autorais\r\n- Documentar alterações significativas\r\n- Incluir cópia da licença Apache 2.0\r\n\r\nPara mais detalhes sobre a licença: http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n**Copyright (c) Calasans - Todos os direitos reservados**","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Focalasans%2Fcbug-detection","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Focalasans%2Fcbug-detection","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Focalasans%2Fcbug-detection/lists"}