ZOMBIEPLAGUE / CORE
Registro de desenvolvimento · v1.0

Cada correção.
Cada avanço.

O histórico do Zombie Plague C++: estabilidade, gameplay, desempenho e ferramentas para evoluir a base.

Referência estávelZombiePlague(STABLE).zip
Declarada funcional em 10 out 2026
Histórico consolidado até 12 out 2026
Windows x86 · Linux i386
60registros reunidos
41integrados ou validados
4registros de patches em teste
6decisões de reversão
Uma linha do tempo reconstruída. Conteúdo reunido das conversas disponíveis e do código da base fornecida. Não é uma transcrição integral de todos os logs. Addons Pawn relacionados aparecem identificados; propostas e reversões preservam seu status.
60 de 60 registros
12 out 2026·GameplayTeste

Congelamento individual bloqueia o knockback

Adicionadas zp_set_user_frozened(id, bool:status) e zp_get_user_frozened(id). Quando ativado, o core ignora o impulso de knockback daquele jogador, preservando o dano. O addon de gelo ativa e desativa o estado; a native não aplica o gelo.

Evidência e validaçãoSintaxe C++ e simulação verificadas nesta conversa. Sem confirmação de teste no servidor.src/player/knockback.cpp; src/player/state.cpp; src/player/events.cpp; addons/amxmodx/scripting/include/zp_frozened.inc
12 out 2026·EstabilidadeTeste

Estado de gelo não passa para outra vida

O estado frozened inicia false, é limpo no spawn e acompanha o reset central do slot na desconexão e na troca de mapa.

Evidência e validaçãoImplementação no patch ZombiePlague_LongJump_FrozenedNatives.zip. Ainda em teste.include/zombieplague/player/state.h; src/player/events.cpp
10 out 2026·GameplayTeste

Long Jump sem a exigência de IN_DUCK

Ativação passou a exigir apenas IN_JUMP. Mantidos o cooldown individual, a força, a altura, a restrição de chão e as proteções de água e vida.

Evidência e validaçãoPedido e patch desta conversa. Data em America/Sao_Paulo; o registro UTC corresponde a 11/10. Servidor não validado.src/player/jump.cpp
10 out 2026·DesempenhoTeste

Long Jump respeita o cooldown sem espera extra de 0,5 s

Removido o temporizador interno de 0,5 s da leitura do salto. O comando é preparado antes do intervalo periódico e o impulso aplicado depois da GameDLL. LongJumpDelay de cada classe permanece independente; aterrissar continua necessário.

Evidência e validaçãoSintaxe e simulação passaram, incluindo comando curto, prazo do cooldown e filtros de água/morte. Patch ZombiePlague_LongJump_SemDuck_DelayFix.zip.src/player/jump.cpp; src/player/prethink.cpp
10 out 2026·VersõesValidado

Nova base estável recebida

ZombiePlague(STABLE).zip foi apresentada pelo usuário como a nova base estável e totalmente funcional. É a referência usada nesta página; os dois patches posteriores ficam separados como testes.

Evidência e validaçãoDeclaração explícita do usuário nesta conversa.ZombiePlague(STABLE).zip
5 out 2026·MenusIntegrado

Menu administrativo ampliado

Menu inclui ações para cargos, tickets, cash, XP e eventos, além de modos, classe, restart, tempo, iluminação, respawn e packs.

Evidência e validaçãoHistórico do pedido e estrutura encontrada na base fornecida.src/main/menu_admin.cpp
5 out 2026·MenusIntegrado

Permissões e organização das páginas do admin

Acesso por CVars para cada ação e organização do menu em páginas. Cargos e eventos usam pontos de integração com addons; a lógica completa de cargos pertence ao plugin correspondente.

Evidência e validaçãoCVars e rótulos conferidos no código da base.src/main/menu_admin.cpp
Início de out 2026·RecursosIntegrado

Precache correto de arquivos MP3

MP3 usa PrecacheGeneric com caminho sound/, aceita entrada com ou sem esse prefixo e verifica o arquivo. O retorno 0 de PrecacheGeneric não é tratado como falha no helper de som.

Evidência e validaçãoComportamento conferido na base enviada. Dia exato da integração não determinado.src/main/precache.cpp
Início de out 2026·RodadasIntegrado

Reverificação ao entrar em espectador

Ao sair do jogo ativo para espectador, o core marca a contagem como alterada e verifica a condição de vitória do modo ativo. Trata o caso do último participante de um time abandonar a rodada.

Evidência e validaçãoPedido registrado no histórico e chamada de verificação encontrada no fluxo de troca de time.src/player/team.cpp; src/main/round.cpp
Início de out 2026·RodadasIntegrado

Menos mensagens de diagnóstico de rodada

Removido o spam de mensagens [ROUND INFO] sobre início do modo.

Evidência e validaçãoPedido no histórico; texto [ROUND INFO] ausente do código de rodadas fornecido.src/main/round.cpp
2 out 2026·RodadasValidado

TimerDeadlineFix: encerramento em 0:00

Deadline própria da fase jogável evita depender de mudanças posteriores em round_start_time. Ao expirar: nenhum vivo = Draw; humanos e zumbis vivos = Draw; somente zumbis = Zombie Win; somente humanos = Human Win.

Evidência e validaçãoUsuário validou o TimerDeadlineFix e informou não perceber impacto de desempenho. Deadline encontrada na base.src/main/round_time.cpp; src/main/round.cpp
2 out 2026·VersõesHistórico

Backup estável antes das otimizações experimentais

ZP1.0_STABLE_BACKUP_2026-10-02.zip foi mantido como referência antes da sequência de testes. O usuário informou já ter baixado o backup.

Evidência e validaçãoDecisão registrada nas conversas de otimização. Não representa solicitação de um novo backup.ZP1.0_STABLE_BACKUP_2026-10-02.zip
2 out 2026·DesempenhoHistórico

Oito atualizações propostas em uma versão de testes

Plano: ClientCommand unificado, ExecuteServerStringCmd unificado, cache de CVars, StartSound sob demanda, DefaultDeploy unificado, cache de lifecycle/bot-HLTV, alive bitmask e redução experimental de Aura/NVG por opção.

Evidência e validaçãoHistórico relata entrega de hooks/caches em testes, mas não confirma adoção de todos os oito na base estável. Não contabilizados como oito melhorias validadas.
2 out 2026·RodadasRevertido

Alternativa de watchdog com round_start_time_real

Proposta para mudar a referência temporal do watchdog foi descartada. A decisão foi continuar da base anterior até novo pedido.

Evidência e validaçãoReversão explícita no histórico. Não confundir com o TimerDeadlineFix posteriormente validado.
Fim de set / início de out 2026·DadosIntegrado

Persistência conjunta de XP, packs, cash e tickets

Dados do jogador são preparados no mesmo documento de persistência. O salvamento reúne packs, XP e moedas em vez de realizar ciclos separados para cada sistema.

Evidência e validaçãoFluxo de staging e gravação conferido no código.src/player/persistence.cpp; include/zombieplague/player/database.h
Fim de set / início de out 2026·DadosIntegrado

Documento JSON em cache por mapa

Documento carregado em memória, com controle de alterações e flush quando necessário. Na desativação do mapa, o core salva dados e invalida o cache para a próxima leitura.

Evidência e validaçãoImplementação conferida na base; não implica ausência de gravação síncrona em toda desconexão.src/player/persistence.cpp
Fim de set / início de out 2026·DadosIntegrado

Moedas cash e tickets com acesso por natives

Cash e tickets foram adicionados ao estado do jogador, ao carregamento e salvamento, com natives para consulta e alteração por addons Pawn.

Evidência e validaçãoCódigo de moedas e persistência presentes na base fornecida.src/player/currencies.cpp; src/player/persistence.cpp
Fim de set / início de out 2026·ClassesIntegrado

Consulta de classe por ID e tipo

Adicionadas zp_get_user_classid(player) e zp_get_user_class(player, tipo), permitindo que addons consultem a classe atual.

Evidência e validaçãoRegistro das natives conferido no código.src/class/classes.cpp
30 set / 1 out 2026·InterfaceRevertidoAddon Pawn

HUD 100% por eventos descartado

Protótipos addon_hud_eventdriven.sma e addon_hud_eventdriven_xpforwards.sma foram rejeitados após pior resultado de desempenho. Mantida a referência do HUD periódico otimizado.

Evidência e validaçãoReversão explícita do usuário nas conversas de HUD.addon_hud_eventdriven.sma; addon_hud_eventdriven_xpforwards.sma
30 set / 1 out 2026·InterfaceHistóricoAddon Pawn

HUD periódico leve como referência

Addon de HUD usa uma task global periódica, cache de rank/XP e atualização quando o texto muda. A referência aceita no histórico usa intervalo de 0,25 s.

Evidência e validaçãoAddon separado; não é uma alteração comprovada no HUD nativo de toda versão do core.addon_hud_optimized.sma
1 out 2026·InterfaceHistóricoAddon Pawn

Configuração de duração do chat

Criado zp_chat_fps_config.sma para solicitar hud_saytext_time = 2 ao conectar. O usuário havia observado queda de FPS com chat/HUD ativos.

Evidência e validaçãoPlugin independente; observações de FPS são relatos do usuário, sem benchmark controlado da base.zp_chat_fps_config.sma
30 set 2026·EstabilidadeValidado

Proteções contra vetores NaN e Inf

Guardas validam origem, velocidade e direção em operações como drops e Long Jump, evitando propagar vetores inválidos e controlando diagnóstico.

Evidência e validaçãoUsuário confirmou que a correção parou o flood nos bots. Um relato posterior envolvendo EBOT não prova que todas as causas de NaN foram eliminadas.include/zombieplague/common/vector_guard.h; src/player/items.cpp; src/player/jump.cpp
30 set 2026·MenusIntegrado

Seleção do menu M independente do idioma

Fluxo de ações e seleção do menu principal separado do texto traduzido, corrigindo opções incorretas ao trocar para inglês.

Evidência e validaçãoCorreção registrada no histórico; enumeração de ações e menu de idioma conferidos na base.src/main/menus.cpp
Fim de set 2026·GameplayIntegrado

Visão noturna desligada ao trocar de classe

A classe configura a permissão e a cor da NVG, mas deixa enabled = false. O jogador precisa ativar a visão noturna manualmente.

Evidência e validaçãoAtribuição explícita encontrada em ApplyClass.src/class/classes.cpp; src/player/lighting.cpp
Fim de set 2026·DesempenhoIntegrado

Long Jump ignora estado inativo

PreThink retorna cedo quando Long Jump está desligado e não há contagem de salto pendente. Finish só trabalha quando o contexto pede ativação.

Evidência e validaçãoBase e patch recente preservam o filtro; o patch recente remove apenas a espera artificial na leitura do comando.src/player/jump.cpp
Fim de set 2026·DesempenhoIntegrado

Unlimited clip com intervalo próprio

Reposição de clip usa controle temporal e acompanhamento de jogadores com o recurso ativo. Na base fornecida, kUnlimitedClipUpdateInterval está em 2,0 s.

Evidência e validaçãoValor atual lido no código; intervalo não deve ser confundido com o cooldown do Long Jump.src/player/attributes.cpp
Fim de set 2026·IluminaçãoRevertido

Experiências com ELIGHT e ScreenFade

Testes para trocar DLIGHT por ELIGHT e depois usar ScreenFade para NVG foram abandonados. A decisão foi retornar ao comportamento visual anterior com DLIGHT.

Evidência e validaçãoReversões registradas no histórico. Não apresentados como recursos adotados.
29 set 2026·DesempenhoHistórico

Revisão de caminhos frequentes e callbacks

Foram trabalhados callbacks compartilhados de menus, respawn aguardando prazo, menos verificações de lanterna e acompanhamento de recursos ativos.

Evidência e validaçãoEntregas e testes locais registrados. Não há medida confiável de ganho percentual de FPS nem confirmação de manutenção de cada variante.
28 set 2026·DesempenhoValidado

PreThink centralizado

Sistemas de jogador passaram a compartilhar o hook de PreThink, preservando a execução da GameDLL e a ordem necessária para aplicar o impulso de Long Jump depois do salto normal.

Evidência e validaçãoUsuário confirmou funcionamento e zero travadas após centralização de PreThink + StartFrame.src/player/prethink.cpp
28 set 2026·DesempenhoValidado

StartFrame centralizado

Ordem de processamento preservada: Lighting, Thunder, Config, Respawn e Gamemode. Reduz a distribuição de callbacks independentes do core.

Evidência e validaçãoValidação do usuário no histórico; sistema central presente na base.src/main/start_frame.cpp
Fim de set 2026·IluminaçãoRevertido

Lighting Guard / Aura-NVG descartado

A versão ZombiePlague1.0Linux_PreThink_StartFrame_LightingGuard_IPProtectOff.zip foi rejeitada. A referência retornou à versão centralizada anterior.

Evidência e validaçãoDecisão explícita do usuário. Filtragens atuais no código não comprovam adoção desse pacote descartado.
Fim de set 2026·ClassesValidado

Limpeza de efeitos residuais ao trocar de classe

Antes de aplicar a nova classe, SetUserClass limpa EF_BRIGHT_LIGHT e EF_NO_DRAW e restaura take_damage para DAMAGE_AIM. Corrige brilho residual na fog e estados visuais/de dano herdados.

Evidência e validaçãoUsuário validou o fix de brilho; reset encontrado na base.src/class/classes.cpp
Fim de set 2026·AmbienteIntegrado

Cold start, configuração e ambiente

Correções no fluxo de inicialização/configuração e aplicação de ambiente passaram a compor a referência Linux com JSONCache_Environment_ClassStateReset.

Evidência e validaçãoBaseline descrita no histórico; detalhes de cada variante não possuem confirmação individual recuperada.src/main/config.cpp; src/environment/environment.cpp
25 set 2026·PortabilidadeValidado

Build Linux i386 com GCC e Ninja

Port Linux retomado com toolchain de 32 bits, preset de CMake e script de compilação. O histórico registra compilação final com GCC 11.4.0. A biblioteca JSON passou a exigir CMake 3.23 ou superior.

Evidência e validaçãoHistórico de compilação do usuário. Não é validação da build atual com qualquer versão de ferramenta.CMakeLists.txt; CMakePresets.json; cmake/toolchains/linux-i386-gcc.cmake; Compilar-ZombiePlague-Linux.sh
25 set 2026·IdiomasIntegrado

Natives de idioma PT, EN e ES

Idioma por jogador com mapeamento 0 = bp, 1 = en e 2 = es. Menus e mensagens utilizam o idioma do destinatário.

Evidência e validaçãoGetUserLanguageNative aparece como referência Linux; natives atuais conferidas na base.src/main/menus.cpp; src/main/language.cpp
Fim de set 2026·MenusIntegrado

Voltar de espectador restaura o fluxo do jogo

Ajustes no caminho de entrada a partir de espectador para restaurar time, HUD e timer conforme o estado da partida.

Evidência e validaçãoCorreção registrada no histórico e caminho JoinGameFromObserver presente na base.src/player/team.cpp; src/main/menus.cpp
Fim de set 2026·RodadasRevertido

Variantes de checagem solo/team descartadas

Pacotes JoinFromSpec_GamemodeWinCheckFix e GetUserLanguageNative_GamemodeSoloTeamCheck foram descartados naquele estágio.

Evidência e validaçãoReversão histórica; checagens posteriores devem ser avaliadas por sua própria versão, sem reintroduzir automaticamente aqueles patches.
24 set 2026·VersõesValidado

Zombie Plague v1.0 Stable Windows

ZombiePlague.10Win_Final_Lifecycle_InfectionDistanceAlert_ClassAbilityHud.zip foi declarada baseline oficial. Teste relatado com 30 bots e cerca de 110 MB de RAM.

Evidência e validaçãoDeclaração e observação do usuário; valor de memória é daquele teste Windows, não garantia de consumo atual.
Setembro 2026 — consolidação·EstabilidadeIntegrado

Guardas de lifecycle e forwards

Controle de entrada, desconexão, spawn e morte evita execuções duplicadas e organiza forwards PRE/POST. Registros de forwards são reinicializados por mapa.

Evidência e validaçãoHistórico de correções e guards presentes nos sistemas da base; dia individual não recuperado.src/player/events.cpp; src/class/classes.cpp
Setembro 2026 — consolidação·EstabilidadeIntegrado

Proteção contra recursão de SetUserClass

Trava de mudança por jogador impede reentrada da troca de classe durante callbacks, evitando recursão até estourar a pilha.

Evidência e validaçãoGuard de mudança de classe conferido no código.src/class/classes.cpp
Setembro 2026 — consolidação·AmbienteIntegrado

Fog não vaza entre mapas

Lista de fogs é limpa no reset do ambiente, evitando acumular entidades/estados de mapas anteriores.

Evidência e validaçãofogs_.clear() conferido no ambiente da base.src/environment/environment.cpp
Setembro 2026 — consolidação·MenusIntegrado

Segurança dos itens de menu após callbacks

Dados de itens são resolvidos novamente depois de callbacks PRE/POST, evitando reutilizar ponteiros que podem ter sido invalidados.

Evidência e validaçãoFix registrado no histórico de estabilização.src/main/menu_items.cpp
Setembro 2026 — consolidação·ClassesIntegrado

Classes padrão no ingresso e no spawn

Pré-seleções humanas e zumbis são inicializadas ao conectar e a classe é aplicada no spawn/respawn.

Evidência e validaçãoHistórico e fluxo de ApplySpawnRespawnClass presente na base.src/player/events.cpp; src/class/respawn.cpp; src/class/classes.cpp
Setembro 2026 — consolidação·RecursosIntegrado

Faca acompanha a troca de classe

Modelos de faca podem ser atualizados ao mudar a classe mesmo com a faca em mãos. Recursos de modelos e sons passam pelo precache.

Evidência e validaçãoFix de deploy e precache registrado no histórico.src/player/knife.cpp; src/class/classes.cpp; src/main/precache.cpp
Setembro 2026 — consolidação·InterfaceIntegrado

Dicas de habilidades acima do timer

HUD de classe informa a habilidade de Long Jump e visão noturna por tradução. Os rótulos devem acompanhar o comando configurado na versão usada.

Evidência e validaçãoHUD nativo conferido; o texto antigo CTRL + E não foi alterado nos patches recentes porque o arquivo de traduções não acompanha o ZIP.src/main/hud.cpp
Setembro 2026 — consolidação·AmbienteIntegrado

Fog, céu e iluminação configuráveis

CVars para habilitar fog, cor, densidade e reset por modo; céu customizado e luz padrão ao iniciar rodada.

Evidência e validaçãoDesenvolvimento registrado e sistemas separados presentes no core.src/environment/fog_config.cpp; src/environment/custom_sky.cpp; src/environment/default_light.cpp
Setembro 2026 — consolidação·GameplayIntegrado

Bloqueio de suicídio e armas de mapa

Tratamento do comando de suicídio e controle de uso de func_tank/armas do mapa por zumbis.

Evidência e validaçãoHistórico de correções e implementações presentes.src/player/suicide_prevention.cpp; src/player/map_weapon.cpp
Setembro 2026 — consolidação·GameplayIntegrado

Movimento e disparo durante freeze-time

Core permite gameplay durante o freeze configurado da rodada, inclusive para quem nasce durante esse período. Não se trata do congelamento por granada de gelo.

Evidência e validaçãoFluxo MaintainFreezeGameplay e aplicação no spawn conferidos.src/player/freeze_gameplay.cpp; src/player/events.cpp
Setembro 2026 — consolidação·GameplayIntegrado

Dano por queda e controle por hitgroup

Regras de dano para humanos/zumbis e sistema de multiplicadores por região atingida, com configuração própria.

Evidência e validaçãoDesenvolvimentos registrados e arquivos presentes; sem alegação de benchmark novo.src/player/damage_control.cpp; src/player/attributes.cpp
Setembro 2026 — consolidação·InterfaceIntegrado

Controle do ícone de dinheiro e valores do HUD

Opção para esconder o sprite de dinheiro e sincronização de packs com o HUD.

Evidência e validaçãoHistórico e aplicação no spawn encontrados na base.src/player/money_hud.cpp; src/player/events.cpp
Setembro 2026 — consolidação·RodadasIntegrado

Defaults do servidor e atraso de encerramento

Core aplica defaults de CVars para o fluxo Zombie Plague e integra zp_endround_delay com o reinício da rodada.

Evidência e validaçãoSistemas de server defaults e end round delay presentes.src/main/server_defaults.cpp; src/main/end_round_delay.cpp
Setembro 2026 — consolidação·GameplayIntegrado

Inflação dos itens extras

Faixas e percentuais configuráveis alteram preços dos itens; opção de informação no menu/HUD.

Evidência e validaçãoDesenvolvimento registrado no histórico da base.src/main/menu_items.cpp; src/item/extra_items.cpp
23 set 2026·RecursosHistórico

Sons de faca universais no JSON

Configuração Zombie Hand reúne habilitação e sons de ataque, parede e jogador, com precache. O usuário preferiu configuração universal às variantes por classe.

Evidência e validaçãoDecisão recuperada das conversas; não presumir que todos os sistemas de som usam a mesma política.src/class/classes.cpp; src/player/sound.cpp
23 set 2026·RecursosHistórico

Correção do caminho de emissão de som

Após erro de modelo não precacheado associado à variante SV_EmitSound2, a correção retornou ao caminho EmitSound de engine/Metamod.

Evidência e validaçãoRegistro histórico de regressão e correção; sem atribuir ganho de desempenho medido.
20 set 2026·RecursosValidado

Reprodução 2D de WAV corrigida

A reprodução de WAV foi ajustada de spk para play, com confirmação do usuário de que o som passou a emitir corretamente.

Evidência e validaçãoConfirmação recuperada no histórico. O escopo final de sons de infecção tem registros conflitantes e não foi presumido aqui.
Setembro 2026 — decisão·EstabilidadeRevertido

Superotimizações abandonadas em favor da estabilidade

O usuário decidiu retornar à base estável anterior e seguir com alterações graduais. Também houve pausa inicial do port Linux após travadas em runtime.

Evidência e validaçãoDecisões históricas; o port Linux foi retomado posteriormente. Não indicam defeito atual da base de 10/10.
14 set 2026·DadosIntegrado

Configuração JSON nativa

Configurações de ambiente, classes, sons e persistência migraram para leitura nativa pelo core, com defaults e validações. Corrigido o caminho duplicado addons/addons.

Evidência e validaçãoPedido e fix de caminho recuperados no histórico.include/zombieplague/json/settings.h; src/json/natives.cpp
12 set 2026·GameplayValidado

Multi-jump e Long Jump integrados ao C++

Natives de quantidade de saltos, consulta de contagem e Long Jump. Long Jump deixou de exigir velocidade mínima na integração inicial.

Evidência e validaçãoUsuário confirmou funcionamento no histórico. A remoção de IN_DUCK em outubro é um patch posterior ainda em teste.src/player/jump.cpp
12 set 2026·APIsHistórico

APIs de jogador, time, som, modelo e itens

Expansão do acesso Pawn ao core para equipes/espectador, contagens, efeitos, model/body/skin, sons e itens.

Evidência e validaçãoHistórico da fase inicial; nomes e assinaturas atuais devem ser consultados no código/include da versão utilizada.src/player/team.cpp; src/player/count.cpp; src/player/model.cpp; src/player/sound.cpp; src/player/items.cpp
Setembro 2026 — consolidação·PortabilidadeHistórico

Alvos Windows x86 e Linux i386

Projeto usa MSVC no Windows e GCC no Linux, com presets de CMake, bibliotecas SDK locais e saídas AMXX de 32 bits.

Evidência e validaçãoBuild configuration conferida. Windows mantém /std:c++latest; Linux usa C++23. Isso não significa uso integral de recursos C++26.CMakeLists.txt; CMakePresets.json