v2.6.0 — build 24784646
A API sobrevive a atualizacao do jogo, e o SDK inteiro vai no pacote.
SOBREVIVER AO PATCH — era a meta declarada, e estava marcada como feita com uma definicao que a mascarava ("recusa carregar se a build mudar", que e o oposto de sobreviver). tools/assinaturas.py acha GUObjectArray, FNamePool e ProcessEvent por PADRAO DE BYTES, lendo o .exe no disco: sem servidor de pe, sem pid, sem palpite. Taxa de resolucao cega 3/3. Calibrado nos dois sentidos — alvo movido +0x10000 numa copia e a ancora ACOMPANHA (0x9F1C920 vira 0x9F2C920); bytes estaveis corrompidos e ela PARA de achar. O que ainda nao esta provado esta escrito no proprio codigo: que o codigo em volta sobreviva a uma recompilacao real da Funcom. corpus/ guarda o executavel para medir contra um par real no proximo patch, e QUANDO-O-JOGO-ATUALIZAR.md tem o procedimento em seis passos.
O ConanSDK.h ENTROU NO PACOTE. O README o anunciava ha semanas e ele nunca esteve la dentro: o header emitia ConanApi::Call<>, que so existia na libconanapi.a, entao inclui-lo obrigava a linkar a nossa biblioteca — o oposto do modelo de tabela. A v6 fechou o que faltava (ChamarFuncaoEx, para parametro de SAIDA, presente em 6.157 das 36.757 assinaturas). O plugin precisa de uma linha: ConanApi::UsarTabela(api).
TIPAGEM 85% para 88,8% (+1.148 funcoes). Retorno FString/FText/TArray virou parametro de saida — a tabela aceita indice -1 para o slot de retorno — e UPARAM(ref) de texto passou a funcionar. Provado com resultado verificavel: Conv_IntToString(42) devolve "42", Split("conan|api") devolve "conan"+"api", BreakVector(11,22,33) devolve 11/22/33.
INSTALAR SEM DERRUBAR O SERVIDOR: copie a pasta para Plugins/ e crie o arquivo CARREGAR-NOVOS. Provado com o servidor no ar, mesmo processo de pe antes e depois. Recarregar plugin existente NAO foi feito, e e decisao: DLL com hook armado descarregada faz o jogo saltar para memoria desmapeada depois, longe da causa.
COMANDO RESPONDE NA HORA: ConanPluginRegistrar recebe a tabela e HookProcessEvent enfileira antes de haver mundo. Provado no log — hook armado 6 segundos ANTES de o plugin ser ativado, e RemoverHook confirmou que ele estava na mesa (id que so ficasse na fila nao passaria).
PLUGIN PRESO A BUILD ANTIGA: o autor declara BuildDoJogo e UsaOffsetsCrus, e o carregador recusa em vez de deixar ler memoria errada calado. Provado 3/3 no servidor — e a primeira versao anunciava recusa e carregava assim mesmo, porque a fase que carrega rele a pasta do zero.
45.930 acessores com cache atomico (era data race formal). 712 atalhos legiveis para campos de UserDefinedStruct que vem com GUID colado no nome.
Build do Conan Exiles Enhanced: 24784646
Tabela da API: v6
Plugins compilados contra uma tabela igual ou anterior continuam funcionando —
campos novos entram sempre no fim da struct e nada e removido nem reordenado.