O que está feito e o que falta
Gerado automaticamente a partir das rondas de trabalho e da auditoria do cliente contra o servidor. Ordenado por impacto e, dentro do mesmo impacto, pelo esforço menor. Actualizado em 04/09/2026 17:22.
Por fazer
-
XXX (conta 5060): modo historia completo e todos os mapas
Alto rápido pedido do donoXXX (CharacterUID 506, conta 5060, classe 8) estava no passo 7 de 2.571 da campanha, nivel 1 no mapa do tutorial, e a conta 5060 nao esta em nenhuma das listas criativas (CONTAS_CRIATIVAS_MAPA/ADM_CONTAS/CONTAS_PVP_TESTE, todas por env com default 5022[,5028]).
FEITO: quest_main_tb do 506 100000050 -> 211010400 (ultimo passo), por scripts/liberar-historia-conta.py, restauro em /opt/mir4/backup/20260903-134131-antes-liberar-historia/. FALTA: correr scripts/liberar-tudo-xxx.py (n
-
Treino Celeste: 'Erro na tabela da Uniao Universal' ao treinar do nivel 0
Alto rápido pedido do donoservidor/treino_celeste.py tratava o table_id do cliente como NIVEL-ALVO e exigia `== actual+1`; o cliente manda a linha do nivel ACTUAL (Level 0 tem custo/materiais/probabilidades = custo de sair do 0). Todo treino a partir do zero era recusado com HT_TABLE_ERROR. So' apareceu hoje porque treino_ce
servidor/treino_celeste.py: (1) _level_up: table_id e' a linha do nivel ACTUAL -> nivel_pedido == nivel_actual, alvo = actual+1, custo/sorteio da linha actual; (2) HIPOTESE do referencial do grau, sustentada pelo cliente
-
Painel de GM /admin -- botao Remover item
Alto rápido pedido do donoO dono relatou que o botao Remover 'nao esta funcional': aparecia apagado e o clique nao abria a caixa. Diagnostico: o botao nascia disabled quando tem<1, e o catalogo tem 7.814 itens contra ~241 (XXX) / 742 (MirXAdmin) distintos na mochila -- por isso quase todo cartao mostrava o Remover morto. A l
(1) filtro 'Mostrar: catalogo inteiro / so o que ele tem' (?mochila=1), que viaja na paginacao e na volta do POST; (2) botao Remover nunca mais nasce disabled; (3) gm_remover_item deixa de recusar quando se pede mais do
-
Artefato Sagrado Ancestral (HOLYSTUFF) -- grau e nivel sem atributo
Alto médioSubir grau e nivel do Artefato queima material e nao move um ponto: os blocos Status01..04 das duas tabelas nunca foram extraidos, e o SkillID do grau tambem nao e concedido.
Regerar os dois ficheiros com as colunas Status e soma-las em _extras_atributos(), concedendo tambem o SkillID do grau.
-
Bau do Chefe (DROP_REWARD_BOX_TYPE_PIE + DROP_REWARD_OBJECT_GROUP)
Alto médioA cadeia esta tracada de ponta a ponta e tudo a jusante ja existe (os objectos estao em objetos_coleta.json e as tabelas de queda em loot.json); falta o elo do meio -- na morte, ler a accao 26 do AiIndex, sortear quantos baus e qual objecto, e injectar as entidades no mundo com APPEAR_OBJECT.
Extrair as tres tabelas e, na morte, assentar N objectos a volta do corpo pelo caminho de `assentar_objeto`, usando o Object_Drop_Datum_Point_Range como raio enquanto as posicoes absolutas nao forem decididas.
-
Ascensao da Pedra Magica (60086) -- dados prontos, opcode mudo
Alto médioOs dados ja estao gerados e ninguem os le; o opcode cai no par automatico com corpo vazio, que em proto3 e um sucesso mentiroso.
Escrever o handler 60086 -> 12069 com custo/taxa/destruicao do trance_custo e somar o trance_atrib em atributos().
-
Passivas de atributo puro (SKILL_PASSIVE.AbilityType)
Alto médioO gerador descarta, por regra escrita, toda a passiva sem BuffLink -- e e exactamente ai que vivem os bonus de atributo das habilidades (classe 8: 91 de 94 descartadas).
Exportar AbilityType/AbilityValue/LevelUpAbilityValue e soma-los aos atributos enquanto a condicao valer.
-
Acerto e Esquiva (AddAccuracy 28 / AddDodge 29)
Alto médioNao existe sorteio de acerto em lado nenhum: todo golpe acerta sempre, do jogador no monstro e do monstro no jogador. Falta a conta precisao-vs-esquiva antes da mitigacao e o STRUCK de falha.
Sortear o acerto com o par 28/29 antes da mitigacao e emitir o codigo de reaccao 4 (Esquiva) no STRUCK quando falha.
-
Atributos de dano e mitigacao nunca entram no golpe()
Alto médio`golpe()` desempacota 9 campos e usa 5. Ficam de fora 34/35, 38/39, 40/42, 41/43, 44/45, 46/47, 54/55/56, 58/59 e 74, e do lado do alvo DefSkillDamage/DefSmiteSkillDamage/DefAllDamage. Um anel de +DANO DE CHEFE muda o numero do painel e nao muda o dano.
Aplicar as familias de aumento e reducao no calculo do dano, com o tecto do par correspondente.
-
Buffs que o golpe poe em QUEM LANCA (BuffTarget = 1)
Alto médioA metade "no alvo" esta ligada; a metade "no proprio" esta escrita e desligada. Falta o estado do jogador e a chamada que aplica e envia estes buffs.
Criar o estado de buff do jogador e chamar, no fim do golpe, as tres funcoes que ja existem.
-
Conquistas (ACHIEVEMENT + ACHIEVEMENT_LEVEL)
Alto médioO resgate e recusado por regra -- o que contraria o modo criativo -- e o nivel de conquista nao existe: perdem-se os bonus de status permanentes de ACHIEVEMENT_LEVEL, alem de 1.470 conquistas com item.
Gravar progresso, entregar o premio no 60009 e somar o ACHIEVEMENT_LEVEL em atributos().
-
Ascensao da Peca Mistica (60089) e do Tesouro de Espirito (60088)
Alto médioO 60089 nao tem nada -- nem gerador, nem dados, nem handler. O 60088 responde sucesso FALSO ao adm ("sem efeito numerico modelado") alegando que nao ha tabela; a tabela existe.
Gerar as duas tabelas, gravar o degrau por item, consumir material, sortear e somar o StatusValue do degrau.
-
Entrar em qualquer mapa mesmo com a mensagem de bloqueio
Alto médio pedido do donoA mensagem de requisito DEVE aparecer (e' o jogo), mas o adm em modo criativo tem de conseguir entrar na mesma, e o mapa tem de funcionar. Vale para todos os mapas, incluindo 4F/5F, Dominacao e Expedicao, e o 11F/12F da Praca Magica.
No portao de entrada de cada conteudo, deixar passar a conta adm depois de mandar a mensagem, em vez de recusar.
-
Skills que nao dao dano
Alto médio pedido do donoO dono lanca skills e o alvo nao perde vida. Na lista ja constam as causas provaveis: atributos de dano nao entram em golpe() (#7), passivas de atributo puro descartadas (#5), acerto/esquiva inexistentes (#6), e a cobertura da classe 8 nas tabelas de skill. ACHADO 03/09 no log: os golpes sem dano do
Medir com o dono: classe, skill (SkillId), alvo, e o STRUCK/dano no log; reproduzir com sonda-combate/sonda-dano; consertar a tabela ou o golpe() e provar com dano > 0 no log.
-
Ascensao da Pedra Magica (60086) -- handler em modulo, por ligar
Alto médio pedido do donoItem 5 da lista: o 60086 caia no par automatico (sucesso mentiroso).
servidor/pedra_ascensao.py (60086->12069, custo/taxa/destruicao de trance_custo; adm sem custo e sucesso garantido; degrau em mirx_item_trance_tb; atributos_extra soma trance_atrib); scripts/testar-pedra-ascensao.py verd
-
Mapa-mundi nao abre ao clicar
Alto médio pedido do donoPara conta NORMAL os blocos 13123/13125 vao VAZIOS (17 B) e o cliente funciona. Para conta ADM (`_conta_e_adm`) vao com o corpo sintetico de conquistas_gm.json: ou sao deitados fora pelo tecto (cliente sem o bloco -> mapa/montaria nao inicializam) ou, com o tecto levantado, chegam a dizer 'tudo comp
gateway.py: CONQUISTAS_GM_SINTETICAS (env MIRX_CONQUISTAS_GM_SINTETICAS, default 0); s_conquistas_concluidas/s_play_data devolvem b'' tambem para adm. testar-quadros-tecto.py verde (0 B). Depois de publicar: dono FECHA o
-
Skills bugadas e sem animacao
Alto médio pedido do donoQueixa do dono: skills sem animacao. No log o combate sai com atk_id marcado '(?)' e dano total=0 em varios lancamentos.
A investigar pelo agente qa-debug junto com o cooldown e a evasao de emergencia.
-
Painel GM: botao Remover, atalho 50.000 e alcance ao XXX
Alto médio pedido do donoSo' havia Adicionar; a caixa de quantidade nao tinha 50.000; o painel so' abria para jogador_teste e -- achado -- gm_personagem_da_conta() nao travava por conta nenhuma (qualquer CharacterUID do servidor era alvo de escrita).
site/inc/gm.php: gm_remover_item (lapide em item_delete_tb, StackCnt nunca negativo, SELECT FOR UPDATE, log com Quantidade negativa), gm_quantidade_item, gm_inventario_por_idx; MIRX_GM_CONTAS += 'Fenrir'; MIRX_GM_CONTAS_
-
XXX (506) true end game: nivel, skills das 8 classes, mitico por classe, pets
Alto médio pedido do donoDono: 'deixa o cliente XXX tudo topado ... skills todas no 12 de cada classe, tudo mitico com melhor aprimoramento e reforja ... true end game ... todos os pets'. Antes: nivel 200, 13 skills no nivel 1, sem nenhuma fase de skill/equipamento gravada, encaixes 11-15 grau 5 SEM atributos nem aprimorame
scripts/topar-personagem.py (restauro em /opt/mir4/backup/20260903-181618-antes-topar-506). Nivel 250 (tecto de combate.json), 13 skills x 8 classes no tecto da tabela do CLIENTE (10 nas classes 1-5, 12 nas 6-8 -- MaxSki
-
XXX (506) true end game -- 2a leva: sistemas de progressao
Alto médio pedido do donoDepois do nivel/skills/equipamento, o 506 tinha ZERO linhas em todos os sistemas de poder: constituicao, bencao do dragao, espiritos, forca, treino do ermo, potencial, treino celeste.
scripts/topar-progressao.py (restauro em /opt/mir4/backup/20260903-182629-antes-progressao-506). Maximos DERIVADOS das tabelas do cliente, nao escritos a martelo: constituicao 7x135 + tier 27; bencao 10 slots x 25; espir
-
Cliente pede missao principal ja' feita (Mestre Desconhecido, Vale dos Isolados) -- e a montaria morta: MESMA causa
Alto médio pedido do donoDono no XXX (506): 'mestre desconhecido no vale dos isolados esta pedindo pra eu fazer essa missao principal, porem eu ja fiz a missao principal completa' e, antes, 'montaria nao ta funcionando'. MEDIDO: o banco JA' diz campanha terminada -- quest_main_tb do 506 esta' em 211010400 ('O Elo Quebrado d
Ligar servidor/playdata.py (progresso REAL derivado, ja' escrito por outra sessao, com dados/playdata.json e tres funcoes novas em banco.py) a s_play_data/s_conquistas_concluidas em vez do corpo vazio. NADA disto esta' p
-
XXX (506): encaixes todos destrancados e equipados
Alto médio pedido do donoPrints de 04/09: Pedra Magica 12 slots com cadeados e nenhuma pedra; Espirito 3/10; Pedaco Mistico 1/12; Esfera da Alma Magica 8/11; E.T. 0/10; Artefato Sagrado Ancestral 4/5. (Artefato de Dragao ja' 10/10 +20 Nv.25.)
servidor/encaixes_livres.py + scripts/topar-encaixes.py: destrancar todos os slots pelos tectos das tabelas do cliente e equipar tudo; conferir o bloco de LOGIN proprio de cada familia (causa conhecida do 'quando cai, de
-
Advento do Dragao Divino esta' 'so visualmente feito, mas bugado'
Alto médio pedido do donoO dono nao disse o que esta' partido. A tela mostra 8 pontos de pressao (7 dourados), 10 atributos com selo SS e os botoes Anseio / Desbloquear Novamente. Hipoteses: atributos que nao entram no calculo; botoes que recusam ou dao sucesso falso; quadro acima de 2048 B; alarme 731003 que insiste; banco
Sonda + teste que falha antes e passa depois, por defeito encontrado.
-
Evasao/esquiva (vigor) deixou de funcionar
Alto médio pedido do donoQueixa do dono, 04/09/2026: 'a evasao de energia nao funciona mais'. A esquiva gasta vigor (dados/esquiva.json: skill 89010, custo 100, cooldown 1,0 s por classe) e o servidor tem de devolver o vigor pelo 22544 -- o cliente NAO regenera sozinho (CLASS.RegenerationVigor e' lido no arranque e nunca ma
Reproduzir primeiro, depois consertar. Suspeitos pela ordem: (1) gateway.armar_vigor/_devolver_vigor deixou de ser chamado no caminho do golpe; (2) a guarda dentro de _devolver_vigor passou a barrar; (3) a skill 89010/89
-
Importar os atributos de TODOS os personagens, sempre actualizados
Alto médio pedido do donoA fotografia so era escrita para quem estivesse ligado e mexesse em algo; qualquer personagem que nao tivesse entrado ficava com os 51 campos vazios no painel.
servidor/status_fotografia.py: varre quem esta sem fotografia ou com mais de 5 min, recalcula com a MESMA atributos() e grava -- le do banco, nao precisa do jogador ligado. Import protegido, arranque nas duas portas, e e
-
Encaixes de opcao do equipamento (60809 / 60810 / 60811)
Alto grandeSo o GET existe e responde sempre "nada pendente". Alterar a opcao do encaixe, decidir/confirmar e herdar encaixes entre pecas nao tem handler, com as seis tabelas completas no pak.
Implementar os tres opcodes com sorteio por RandomOptionGroupId, custo de material e heranca por MaterialTierNRate.
-
Efeitos de atributo dos buffs (BUFF.BuffIndexType)
Alto grandeO servidor aplica, empilha, promove e anuncia buffs -- e nenhum buff altera um numero. A Distorcao (80010) e aplicada e o monstro continua a correr a mesma velocidade.
Criar uma camada de estado do portador que entre em atributos() e golpe(), e emitir os campos 10/11/12 do _buff_info.
-
Escudo de chefe e absorcao de dano
Alto grandeNem a barra de escudo do monstro, nem o tecto de dano por golpe, nem os campos de escudo no pacote de dano: o chefe hoje e HP puro.
Guardar o escudo por instancia, descontar antes do HP, emitir os campos 15/16/17 e aplicar o buff de quebra.
-
MONSTER_AI -- o guiao inteiro (morte, limiar de vida, FSM, agressao)
Alto grandeA tabela e ignorada de ponta a ponta. Alem do bau: 913 linhas com CheckType 4 (na morte) invocam outro monstro; ha accoes por percentagem de vida (o enraivecer do chefe); e o SearchingType nunca extraido faz com que 178 monstros marcados como agressivos nunca agridam por aproximacao. Facto que simpl
Copiar AiIndex/FSMIndex para o catalogo e correr um avaliador simples das linhas cujo CheckType/CheckValue casam, no dano e na morte.
-
Missoes secundarias, Pedidos e Missoes de Relacao
Alto grandeAceitar devolve eco e mais nada: nao grava, nao conta progresso, nao conclui, nao paga. Cerca de 6.000 passos de conteudo inertes, e a QUESTOPEN_CONDITION que decide o que abre nunca e lida.
Extrair as tabelas, persistir estado e contagem, e fechar o passo com recompensa.
-
Modo Historia completo, do inicio ao fim
Alto grande pedido do donoO dono quer a campanha inteira, do primeiro passo ate' ao ultimo que existe hoje, a funcionar de ponta a ponta. A cadeia ja' foi regenerada do Global (2.571 passos) e o passo inatingivel e' fechado, mas nao ha' prova de que a cadeia corre toda.
Percorrer a cadeia passo a passo num teste, fechar os que travam, e dar ao adm um caminho para saltar o que nao for alcancavel.
-
TODOS os mapas a funcionar, mobs no lugar certo
Alto grande pedido do donostages.json tem 732 mapas; stage_spawn.json cobre 662 -- 70 ficam SEM spawn nenhum, e 53 desses tem StageType numerico ('3') em vez de nome, sinal de coluna mal lida na geracao. Falta prova de que os monstros de cada mapa sao os daquele mapa.
Inventario mapa a mapa em docs/; corrigir a GERACAO (scripts/gerar-*.py) e nao o sintoma; conferir nivel/grau contra StageLevel; conferir chefes unicos nao semeados como populacao (scripts/testar-chefes-unicos.py).
-
XXX (506): todas as conquistas e misterios concluidos, montarias e trajes libertados
Alto ? pedido do donoJanela de montarias mostra a condicao a vermelho em 0/1: 'Misterio - Concluir Coragem Imprudente', 'Derrotar Raide de Boss do Rei Nefariox', 'Capturar Vale Oculto 1 vez', 'Aprimorar Habilidade 60 vezes' (0/60), 'Tornar-se Rei vencendo um Cerco do castelo', 'Tornar-se Imperador vencendo o Confronto d
Progresso real no banco a partir de ACHIEVEMENT/PLAYDATA/ACHIEVEMENT_LEVEL do cliente + serializacao PAGINADA de 13123/13125 (o corpo sintetico de 03/09 partiu mapas/montarias/skills e esta' desligado por bandeira). Cada
-
XXX (506): Conquista (10 predios), Uniao Universal, Imperador de Sabuk, Rei de Bicheon e Vale Oculto da Lunula de Sangue
Alto ? pedido do donoTela Conquista com os 10 predios 'Bloqueado'/'Lv.0 Name' e cronometro coreano; Uniao Universal trancada; Castelo Sabuk com 'Imperador: MirXAdmin' em texto mas retrato vazio e 'expectativa da ascensao'; Castelo Bicheon sem cla a ocupar e Rei vazio; os 3 Vales Ocultos sem cla ocupante.
Estado REAL de dominio no banco (nao so' o texto): predios no degrau maximo, Uniao Universal aberta, e os titulos RETIRADOS do MirXAdmin (467) e passados ao XXX (506) numa operacao atomica -- o dono disse 'remova esses t
-
Encaixes do Pedaco Mistico (60740) -- modulo novo e codigo morto
Médio rápidoencaixes_slot.py foi escrito para cobrar o custo real em Tabuletas e NUNCA e chamado: o `miudos` reclama o mesmo opcode e e testado primeiro. O que corre e o caminho velho, que abre de graca para o adm e recusa os outros com uma justificacao falsa.
Tirar o 60740 da familia do miudos (ou testar encaixes_slot primeiro) e apagar o caminho velho.
-
Mapa Divino / Holy Puzzle -- a lista nunca sai
Médio rápidoO RESTORE esta feito, mas a lista (57171) so pode ser empurrada pelo servidor e ninguem a empurra: o que o jogador restaurou desaparece da tela ao relogar. As pecas restauradas tambem nao valem atributo.
Chamar a funcao no despejo pos-login e somar Status_Id/Value e o PassiveId do puzzle completo.
-
Bonus de conjunto do Treino Ermo (CLOSED_TRAINING_COLLECT)
Médio rápidoOs 40 degraus de coleccao estao lidos e servem so para desenhar o numero do degrau; nenhum dos oito pares atributo/valor entra no status.
Somar os pares do degrau atingido em _extras_atributos().
-
Poder de combate das habilidades (SKILL_COST.SkillCombatPoint)
Médio rápidoO poder so soma atributos vezes peso; falta a parcela que vem do nivel das habilidades e das passivas (classe 8: 32.908 de poder no nivel maximo).
Somar o `poder` das habilidades aprendidas e extrair o SKILL_PASSIVE_BATTLEPOINT.
-
Codex -- 39 coleccoes periodicas activas descartadas
Médio rápidoO gerador descarta por regra todas as coleccoes datadas; 39 delas estao DENTRO da janela hoje e essas abas aparecem vazias.
Incluir as periodicas com a janela de datas e filtrar por data em tempo de execucao.
-
Peso de escolha do golpe do monstro (AttackRate_0..3)
Médio rápidoO cliente define um vector de pesos por golpe e o servidor sorteia uniformemente: no 'Renascido Baluarte' o golpe que devia sair 60% das vezes sai 20%.
Guardar os pesos no catalogo e trocar random.choice por random.choices.
-
Goblin bonus na morte (SummonGoblinRate02 / GoblinId02)
Médio rápidoO bicho-bonus que aparece de vez em quando ao matar nao existe: nada sorteia nem invoca, e a invocacao nem precisa de protocolo novo.
Copiar as duas colunas e sortear a invocacao no ramo da morte.
-
STAGE_SECTOR.RewardDropRate -- taxa de queda por grau do sector
Médio rápidoCada mapa esta dividido em sectores de grau 1..4 com taxa 200/300/400/500: matar no sector bom devia render 2,5x mais. O servidor ja carrega a geometria desses mesmos sectores e usa-a so para nao por monstro dentro da parede.
Multiplicar a probabilidade do sorteio pelo grau do sector onde o corpo nasceu (o SectorID bate 1-para-1 entre os dois lados).
-
Raide -- ponto de entrada lido do sitio errado
Médio rápidoO jogador e largado no primeiro gerador de monstro do mapa quando a tabela tem a porta de entrada explicita.
Guardar as PositionLocation em raide_masmorras.json e usar a primeira na entrada.
-
Milhagem (moeda 6) nunca e creditada
Médio rápido25 artigos da vitrine ligada custam Milhagem e nao ha uma unica fonte de Milhagem no servidor.
Copiar MileageId/MileageValue nos dois geradores e creditar na compra e no sorteio.
-
Mercado Unificado -- quatro abas de historico
Médio rápidoDetalhe do anuncio, historico de liquidacoes, favoritos e historico de compras nao tem handler; os dados ja existem em mirx_mercado_tb.
Listar do banco com o tecto e a janela da SYSTEM_DATA.
-
COMBO (contador de acertos encadeados)
Médio rápidoSistema inteiro em falta: contador por jogador, faixas e o buff de dano que cada faixa concede (ate +5% de todo o dano).
Contar acertos por janela, aplicar o BuffLink da faixa e limpar ao falhar.
-
Cargos do cla -- o BuffId de cada cargo nunca e aplicado
Médio rápidoO cargo e validado, gravado e tratado como exclusivo (para nao duplicar o bonus, diz o proprio comentario) e o bonus nunca e concedido. O dono e lider: qualquer cargo que se atribua nao lhe da nada.
Aplicar o BuffId do cargo ao membro enquanto o tiver.
-
Aura de pet inexistente (XXX sem pet)
Médio rápido pedido do donoMEDIDO: as quatro tabelas de pet e a de luxury estao VAZIAS para o XXX (506), logo o servidor nao lhe mandava campo de pet nenhum. O MirXAdmin (467) MANDA pet 100201 (Darknyan, resolvido do luxury equipado idx 110720003).
servidor/aparencia.py: luxury_costume_pet_id passa a ir SEMPRE, mesmo a zero. Em proto3 omitir nao diz 'nao tem', diz 'nao te digo nada', e o cliente que ja' desenhou o Espirito do personagem anterior nunca recebe ordem
-
Nivel de cla congelado em 1
Médio médioNao existe coluna de XP de cla e o nivel e constante no codigo. Consequencia directa para o dono: 63 dos 67 nos da Torre da Conquista exigem nivel 2..40 e ficam trancados para sempre -- so quatro sao alcancaveis. O XP de cla que a doacao ja calcula e deitado fora.
Criar a coluna GuildExp, derivar o nivel de GUILD_LEVEL e passa-lo a guild_dev_aberto e ao tecto de membros.
-
Doacao ao cla e contribuicao do membro sempre a zero
Médio médioA doacao credita o cofre e manda o premio, mas nunca aplica o EXP de cla nem a contribuicao; e o campo guild_contribution que vai para o cliente le uma chave que NUNCA existe no dicionario do personagem, logo e sempre 0.
Carregar a coluna, creditar exp_taxa e contribuicao na doacao e ligar o premio por escalao.
-
Torre da Conquista -- bonus de META do cla (kind = 4)
Médio médioOs bonus de personagem ja sao somados; os de kind 4, que sao propriedade do cla (+30 membros, +99.000.000 de capacidade de cofre, +18 aliancas), nao sao lidos por ninguem.
Somar os atributos kind 4 dos degraus ja construidos aos tectos de membros, cofre e alianca.
-
Premio de classificacao (RANKING_REWARD)
Médio médio60577 e 60675 nao tem handler: o botao de recolher premio nao faz nada. O dono, unico jogador, e rank 1 em todas as categorias e devia ter buffs diarios permanentes mais os premios semanais e de epoca por carta.
Implementar o resgate e a atribuicao periodica dos buffs de rank.
-
Passiva e Poder de Combate do Potencial
Médio médio432 linhas concedem uma habilidade passiva e 900 de poder por no; o gerador guardou o campo e o servidor nunca o le.
Conceder a passiva do no e somar o Passive_CombatPoint.
-
Esferas da Alma Magica -- a habilidade do nivel 12 nao existe
Médio médioAs 187 esferas prometem uma passiva ao chegar ao nivel 12 e o premio nunca chega; as colunas nem foram extraidas.
Levar PetSkillId/OpenLv/PassiveLv para o ficheiro e conceder o bonus no nivel de abertura.
-
Coleccao de Esferas da Alma Magica (PLAYDATA_COLLECTION)
Médio médio241 coleccoes que dao atributo permanente ao entregar a esfera do chefe correspondente: faltam as tres pernas -- os PlayDataId nao sao enviados nem contados, os itens nao caem e nao ha handler de registo.
Extrair a tabela, acrescentar os PlayDataId e os itens ao espolio e implementar o registo.
-
Elemento do golpe (DamageAttribute) e defesas elementais
Médio médioO canal elemental do golpe e lido da tabela, viaja ate ao motor de dano e e deitado fora. As defesas elementais por classe tambem estao geradas e mortas -- a Invocadora tem Holydefense -1000 (fraqueza) e Darkdefense +500.
Passar o canal a mitigacao e aplicar a defesa elemental do alvo.
-
Tectos de atributo e par Add/Ratio (STATUS_CALCULATE / STATUS_LIMIT / STD)
Médio médioOs atributos sao somados sem tecto e sem a multiplicacao pelo par percentual: um Ratio* nunca multiplica nada e um Add* pode passar o maximo que o cliente aceita.
Aplicar o par e o clamp no fim de atributos(), usando as funcoes que ja existem.
-
Resistencia a controlo (ConGrade e Def*Per)
Médio médioO controlo e aplicado sempre e com a duracao cheia: atordoar um mob de HitConGrade 500 e um chefe de 20000 da exactamente o mesmo. Do lado do jogador nem existe estado de controlo.
Comparar grau contra grau, sortear com os pares 48/49, 50/51, 52/53 e 119/120, e criar o estado do jogador.
-
Condicoes das passivas (CastingCondition) e passivas no proprio
Médio médioSo 4 das 18 condicoes correm e, dentro dessas, tudo o que nao seja "no alvo" e descartado em silencio. A maior fatia que falta e a 131 (ao usar a habilidade).
Implementar a condicao 131 e o ramo em='eu' das condicoes ja executadas.
-
BUFF_ATTACK -- o golpe periodico do buff
Médio médioUm buff com BuffAttackID devia bater sozinho (dano em area ou aplicar controlo) enquanto durar; e assim que o 'Atordoar' atordoa de facto. Nada corre e os dois opcodes que o cliente espera nunca saem.
Criar o tique do buff que aplica dano e controlo, e emitir os dois opcodes.
-
Usar item -- 167 pocoes de buff e os bilhetes
Médio médioO handler so trata cura, caixas e pergaminho de regresso; todo o resto e recusado com "sem efeito implementado": 167 pocoes e elixires de buff, 6 impulsionadores de EXP, 5 bilhetes de bolsa, 3 licencas de mineracao, entre outros.
Ligar o BuffId do item ao sistema de buffs e implementar as familias de bilhete.
-
Durabilidade -- desgaste, quebra e reparo (60459)
Médio médioO servidor so usa a durabilidade maxima ao criar o item: nao ha consumo, nao ha niveis de quebra (o 3 tira 20% de status, o 4 destroi o item) e nao ha reparo.
Extrair as duas tabelas, consumir durabilidade, aplicar a penalidade de status e implementar o reparo.
-
Opcao de Selo (StampOptionGroupId, 60741)
Médio médio254 itens tem uma opcao de Selo definida e o grupo de sorteio existe; o gerador nem le a coluna e o opcode nao tem handler -- a janela fica muda.
Exportar a coluna e implementar o 60741 com o sorteio do grupo.
-
Passiva fixa e passiva aleatoria do item
Médio médio302 itens dao uma passiva fixa (mais 40 com uma segunda e 8 com uma terceira) e 64 dao passiva aleatoria -- nada e aplicado. E a hipotese registada de que o ITEM_PASSIVE_RANDOM nao tinha ligacao esta errada: a coluna esta no ITEM_ATTRIBUTE.
Exportar as colunas, ligar o grupo aleatorio ao item e aplicar as passivas.
-
Mitico / Despertar do Artefato Ancestral (60790)
Médio médioSistema completo em tabela -- despertar por NPC, escada de promocao mitica e efeito de conjunto -- sem uma linha no servidor; os 136 itens MainType 26 so somam o atributo base.
Extrair as tres tabelas e implementar o despertar, a promocao e o efeito de conjunto.
-
Troca Especial (60655) e Troca Aleatoria (60084)
Médio médioDuas janelas de troca de item por item com custo e sorteio, todas as tabelas prontas, nenhum handler. O 60084 tem par declarado e responde vazio ("correu bem e nada aconteceu"); o 60655 nao tem par nenhum -- botao morto.
Gerar os dois ficheiros e implementar os handlers com o corte por classe.
-
Sublime / MAKE_LOFTY (60805)
Médio médioFusao de tres materiais com grande-sucesso e grupo de recompensa, 434 linhas de tabela, sem handler.
Gerar os dados e implementar o 60805.
-
Fabrico Draco (60571)
Médio médioSeparador proprio da janela de fabrico, distinto do ITEM_MAKE que ja esta feito, sem handler.
Acrescentar a tabela ao gerador e implementar o handler.
-
Colunas de OBJECT que mudam o comportamento
Médio médioobjetos_coleta.json guarda 8 campos de 56 colunas. Ficam de fora 40 objectos ja colocados que deviam gerar um monstro ao serem colhidos (MonGenValue 10000 = 100%), 70 que dao buff a quem colhe, 92 com tempo de vida e 42 com condicao de activacao -- hoje qualquer objecto e sempre colhivel.
Extrair as colunas e ligar geracao de monstro, buff, tempo de vida e condicao de colheita.
-
MONSTER_RAREACTION -- escudo, marcador de minimapa e recuperacao
Médio médio328 monstros do mundo tem linha e nenhuma coluna e lida: 17 chefes com escudo, 107 com marcador de minimapa e 328 com RecoveryHPPer 2500, a recuperacao de vida ao largar o alvo que o servidor tambem nao faz.
Extrair a tabela e ligar escudo, marcador e recuperacao.
-
Pergaminho do Demonio (OBJECT_INTERACTION_MON_GEN)
Médio médioO item existe no mapa do servidor e nao faz nada: usar devia criar o objecto na posicao do jogador e interagir com ele devia fazer nascer o grupo de monstros.
Implementar o uso do item e a injeccao do objecto e do grupo de monstros.
-
Janelas do chefe de mundo (60408 / 60409 / 60410 / 60412)
Médio médioO 60413 (lista de chefes de pe) esta feito; as quatro janelas a volta -- lista do evento, zona, contribuicao e o que o chefe larga -- caem no par automatico e saem vazias.
Responder as quatro janelas a partir da agenda que ja esta em dados/raide.json e do loot do chefe.
-
Aparencia / Customizacao (60097 e 60206)
Médio médioA customizacao so e escrita uma vez, na criacao do personagem, e nunca mais muda: os dois opcodes caem no par automatico.
Implementar os dois handlers validando contra CUSTOMIZING_TYPE e gravando em customize_tb.
-
INSTANCE_DUNGEON_SETTING -- so os cronometros sao usados
Médio médioO gerador so extrai Timer1..4; ficam por usar o teleporte dos jogadores para a arena quando o chefe aparece, as cinematicas e os avisos na tela.
Extrair as colunas e aplicar o warp e os avisos no aparecimento do chefe.
-
Recompensa de primeira limpeza e recompensa de cla das raides
Médio médioAs 38 raides definem 4-5 itens de primeira limpeza (equipamento por classe), 3 recompensas de cla, o presente para os membros e os pontos por sucesso, falha e morte do chefe; nada disso e entregue -- so o espolio corrente.
Extrair as colunas, gravar a primeira limpeza por personagem e entregar.
-
Compra rapida do SHOP_ITEM (lotes de pocoes por Cobre)
Médio médioA lista chega vazia e o comprar devolve sucesso sem cobrar nem entregar.
Gerar os dados e implementar as duas mensagens.
-
Produto por Periodo (pacote de 14 dias)
Médio médioO artigo compra-se na Loja e o premio nunca chega: 60130 e 60298 caem no par automatico.
Registar a compra com data e entregar o premio inicial e o diario.
-
QUEST_DROP_ITEM lido da versao Topaz
Médio médioO servidor decidiu nao largar o item da missao porque leu a tabela do Topaz (131 linhas, todas QuestType 6). O pak tem 1.618 linhas e 63 sao de campanha -- o contrario do que o comentario afirma. Atenua o impacto: hoje so 2 passos da cadeia activa sao desse tipo.
Regerar do pak e voltar a sortear o item nos passos de campanha.
-
Cargos do cla: lider com permissao total e usar cargo a cargo
Médio médio pedido do donoO dono aparece so' com TITULO, sem o cargo, e quer poder usar cada cargo do cla e entrar no Saque.
Dar-lhe o cargo de lider com todas as autoridades e permitir trocar de cargo no painel.
-
Uniao Universal por libertar
Médio médio pedido do donoO icone aparece trancado no painel de Treino. Ja' medido antes: ContentsId 7300/7301, condicao 1100101, sem opcode proprio no protocolo.
Confirmar se o cliente a destranca por contents_esta_aberto; se sim, abrir para o adm.
-
Bau do chefe (DROP_REWARD_BOX) nunca implementado
Médio médio pedido do donoO chefe morre e larga espolio directo, mas nao larga o BAU. O cliente tem o sistema inteiro: /OBJECT.csv IsBossDropRewardBox (1.320 objectos), /DROP_REWARD_BOX_TYPE_PIE.csv (1.031), /DROP_REWARD_OBJECT_GROUP.csv (2.246) e /DROP_REWARD_BOX_POSITION.csv (109.189 posicoes).
Na morte do chefe, sortear os baus do grupo e cria-los como objectos colhiveis a volta do corpo.
-
Invocacoes de cracha nao funcionam
Médio médio pedido do donoAs abas Cracha de Demonio e Cracha dos Abandonados nao respondem.
Medir o opcode no log e tratar a familia, como se fez para a Pedra Magica.
-
Sistema de libertar os outros pets
Médio médio pedido do donoO dono quer o caminho normal de desbloquear pets a funcionar.
Ligar a peca de invocacao ao desbloqueio, em vez de dar todos abertos.
-
Correr a linha de base das 69 sondas (nunca correu)
Médio médio pedido do donoExistem 69 sondas (scripts/sonda-*.py) que medem o servidor vivo, mas nunca foram corridas todas de uma vez para fixar uma linha de base; sem ela nao se sabe o que uma publicacao partiu.
Um roteiro que corre as 69 em sequencia contra o VPS (so' leitura), grava o resultado em docs/sondas-base.json e compara com a corrida anterior.
-
Mobs sem animacao (ataque/idle)
Médio médio pedido do donoMonstros deslizam ou batem sem animacao. Rasto: ataques_cobertura.json com 1.539 de 2.614 attack_id cobertos (501 sem linha, 574 vazios); provocar_monstro desiste em silencio; 16001 ATTACK antes do 16002 STRUCK 'so-confirmar'.
Completar a tabela de attack_id por monstro a partir do MONSTER/SKILL_ATTACK do pak; para os sem linha, usar o ataque basico da familia; nunca desistir em silencio (log + fallback).
-
Cooldown padrao do servidor em todas as contas, EXCEPTO troca de classe
Médio médio pedido do donoO dono quer o cooldown NORMAL (do jogo) a valer para todas as contas, incluindo a dele -- menos o cooldown da TROCA DE CLASSE (60537), que deve ficar sem espera.
Localizar onde o cooldown e' isento/reduzido para adm e passar a aplicar o padrao; abrir excepcao unica para a troca de classe.
-
Codex e Salao das Escrituras do 506 -- por medir antes de topar
Médio médio pedido do donoSao os dois unicos sistemas de poder que ficaram por topar. O Codex responde num quadro so', sem paginacao (~5766 entradas em codex.json); o Salao pode chegar a ~1290 linhas. O tecto de envio e' 2048 B e um quadro acima disso e' deitado fora EM SILENCIO -- e' o padrao do acidente das conquistas sint
Medir o quadro de s_codex_data e do Salao com a carga cheia (o mesmo metodo usado para o 49001 dos pets) e, se passar dos 2048, paginar o handler ANTES de gravar seja o que for.
-
Discord da comunidade MirX -- avisos de actualizacao, chat, loja de pacotes
Médio médio pedido do donoNao existe servidor Discord proprio nem qualquer integracao no codigo. O site so menciona o Discord como canal de suporte (faq.php, comunidade.php). Nao ha bot, nao ha webhook, nao ha loja.
Tres blocos independentes: (1) estrutura do servidor Discord -- canais, cargos, regras, template de reporte de bug; (2) bot/webhook de avisos automaticos -- estado dos servicos (7000/31002/33001), nova versao do lancador
-
XXX (506): Codex, Salao das Escrituras 1 e 2 e Misterios a 100%
Médio médio pedido do donoOs dois unicos sistemas de poder que ficaram por topar no 506 (pedido antigo 'por medir antes de topar'). O Codex responde num quadro so' (~5.766 entradas) e o tecto de envio e' 2048 B em silencio. | Print 04/09: Salao 2 com grupos parciais -- Subjugador da Lamina 3/6, Golpe Acelerado 1/6, Bodhidhar
Medir o quadro com carga cheia, paginar ANTES de gravar progresso, e so' depois encher.
-
Cores dos trajes: gravar a tintura e garantir traje na classe certa
Médio médio pedido do donoA cor tingida perde-se e ha' suspeita de traje a aparecer em classe errada. Existem DOIS pares de opcode de cor e so' um e' tratado: 60048->7019 grava em mirx_costume_color_tb; 60042->7005 nao tem handler. Alem disso a troca de classe (60537) desequipa tudo e repoe de mirx_phase_equip_tb -- se a cor
servidor/traje_cores.py trata o par em falta e a persistencia; auditoria traje x classe x grupo de paleta pelas tabelas do cliente (COSTUME/COSTUME_ITEM/COSTUME_PALETTE/COLOR_INDEX, as 8 classes); teste de ida-e-volta de
-
Janela de Eventos do jogador (USER_EVENT / EVENTDATA / Bingo / Bencao)
Médio grandeNenhum handler: o par automatico responde corpo vazio, que em proto3 e "nao tens evento nenhum" -- a janela abre em branco. Nota honesta: quase todas as datas destas tabelas sao de 2020-2024, logo qualquer implementacao tem de redatar as janelas.
Escolher os eventos que fazem sentido, redatar as janelas e implementar a familia.
-
Passe de Batalha, Passe de Evento, Passe de Missao e Ficha de Temporada
Médio grandeQuatro familias sem handler e sem ficheiro de dados. Nao e conteudo caducado: ha seis passes activos hoje (janela de 31/08 a 30/09/2026) com 528 linhas de recompensa.
Gerar os dados, contar pontos de missao e implementar o resgate por degrau.
-
STAGE_MON_GEN -- eventos de mapa (Torre do Dragao Negro)
Médio grande148 linhas de eventos por mapa, 60 dos 63 stages sao servidos, incluindo 20 linhas com EventWarpUsable -- o evento que arrasta o jogador para outro sitio. Dentro do andar da Torre nenhum evento dispara.
Extrair as duas tabelas e disparar os eventos dentro do andar.
-
Servidor MirX LOCAL no PC do dono ('Dreamscape local'): jogar sem VPS, com painel de GM
Médio grande pedido do donoO dono quer entrar e divertir-se localmente, com painel de GM para por o que quiser. O pacote Dreamscape (Downloads) e' so' um cliente inicial (Mir4G.exe 1.127.1, TA_486179, launcher para dl.dreamscapemir.com) -- nao traz servidor; os bugs sao todos do nosso servidor. Ja existe MySQL 8 portatil em C
Arrancar frontserver+gateway locais contra C:\mysql, patch de IP do cliente para localhost (com atalho separado), painel de GM local (php -S) ou continuar a usar o /admin da VPS apontado ao banco local.
-
Painel de GM: mostrar o que e negociavel; escolher trade/vinculado
Médio grande pedido do donoO dono quer ver o que e trade e escolher entregar como vinculado.
MOSTRAR: feito e publicado -- o cartao diz negociavel/nao negociavel a partir do TradeType (elegibilidade de categoria para o Mercado Unificado, provado pela sonda-mercado.py). ESCOLHER: NAO FEITO de proposito -- o pacot
-
Aprimoramento multiplo (60521 / 60751)
Baixo rápidoO botao de aprimorar em serie nao tem handler, apesar de o aprimoramento simples ja ter toda a regra carregada (2.414 regras).
Repetir o 60065 em ciclo, com o mesmo debito e a mesma resposta.
-
Lista de tutoriais concluidos quando pedida em jogo (60112)
Baixo rápidoO empurrao do login esta certo, mas o PEDIDO cai no par automatico e devolve corpo vazio -- que, pelo proprio docstring do servidor, quer dizer "nenhum tutorial concluido". Quem reabre a interface volta a apanhar as instrucoes.
Acrescentar `if op == 60112` a chamar a funcao que ja existe.
-
Codex -- botao Registar tudo (60782)
Baixo rápidoO registo unitario esta implementado; o registo em massa nao tem handler nem par, logo o botao nao faz nada e nem devolve erro.
Repetir o registo unitario em ciclo sobre os itens elegiveis.
-
Titulo Infinito (ENDLESSTITLE)
Baixo rápidoO pacote de login vai vazio ("nenhum titulo") e trocar de titulo nao obtem resposta nenhuma.
Preencher o 13153 e implementar o 62021.
-
Esconder a arma secundaria do traje (60676)
Baixo rápidoOs irmaos 60047 (esconder traje) e 60051 (esconder vestivel) estao feitos; so este ficou de fora.
Clonar o handler do 60047, persistindo a flag e difundindo-a.
-
NFT / selagem de personagem (60770 e 60804)
Baixo rápidoServidor privado sem blockchain: o correcto e responder "indisponivel", nao calar. Hoje sai o par automatico de corpo vazio, que em proto3 afirma tudo zero e sucesso.
Responder uma recusa com corpo valido.
-
Tempo de recarga de item (ITEM.CoolTime, 60087)
Baixo rápidoUsar item nao respeita recarga nenhuma nem o tecto de uso multiplo, e o opcode de sincronizacao e mudo -- permite spam de pocao e de bilhete.
Guardar o instante do ultimo uso por item e recusar dentro da recarga.
-
Expansao de bolsa e armazem
Baixo rápidoA expansao e dada de graca porque o codigo diz nao saber o custo, mas o pak tem a escada de custo por faixa e o caminho por bilhete. Os cinco bilhetes de expansao tambem nao fazem nada.
Ler a escada de custo e o caminho por bilhete.
-
Recarga de bilhete de graca e sem tecto
Baixo rápidoO handler existe mas ignora as colunas: nao cobra o custo (que sobe com a recarga do dia), nao conta recargas e nao respeita o tecto. Qualquer conta recarrega indefinidamente.
Contar recargas do dia, cobrar o custo da linha e travar no tecto.
-
Loja de NPC -- limite de compras por periodo nao e aplicado
Baixo rápido813 das 1.024 linhas tem limite e o servidor so trava ajuste e nivel: o "restante N" que o cliente desenha e decorativo. Para a conta adm e deliberado; para qualquer outra conta o limite nao existe.
Contar por periodo, como a Loja e a Loja do Cla ja fazem.
-
CLASS.IgnoreStatus e MainStatusList
Baixo rápidoA tabela diz que atributos cada classe ignora e quais sao os principais; os dois campos sao gerados e nao tem leitor. A Invocadora ignora o 20 e o servidor continua a soma-lo em ataque_fisico().
Filtrar o atributo ignorado no calculo e no painel.
-
Constituicao -- CapStepStatus8
Baixo rápidoO gerador le so CapStepStatus1..7 e 78 linhas usam o oitavo -- todas nas classes 3, 5 e 7, portanto a do dono nao e afectada.
Mudar o intervalo para 1..8 e regerar.
-
MONEY.csv -- politicas por moeda ignoradas
Baixo rápidoAs oito colunas Policy_* nao existem em lado nenhum do projecto, e o handler de anuncio aceita a moeda que vier no pacote sem lista branca: um pacote forjado poe a venda em qualquer moeda.
Extrair as politicas e validar a moeda do anuncio contra a lista branca.
-
Mercado -- tecto de preco e preco de referencia
Baixo rápidoSo ha piso de preco; o tecto, a espera imposta a quem passa dele e a exclusao de extremos na media nao sao usados.
Aplicar o tecto, a espera e a exclusao de extremos.
-
Suprimento do Cla (GUILD_SUPPLY)
Baixo rápidoOs dois opcodes tem par e respondem vazio: a aba fica em branco.
Gerar os dados e implementar os dois handlers.
-
guilda.json gerado do Topaz
Baixo rápidoDeriva medida contra o pak: falta a autoridade 181 (a unica com Can_War = 1, recusada em silencio), falta o MaxGrade2MemberCount, a GUILD_MEMBER_GRADE nunca foi extraida, e a chave `loja` (79 artigos) esta desactualizada face aos 81 do pak -- codigo morto que engana quem a ler, ja que a Loja do Cla
Regerar do pak e apagar a chave `loja`.
-
MonAttackDamage e MonDefense nunca extraidas
Baixo rápidoDuas colunas de combate por monstro, distintas de PhysicalAttack/PhysicalDefense, que nunca entraram no catalogo. HIPOTESE, nao medida: sao o ataque e a defesa efectivos usados contra jogadores.
Extrair as duas colunas e medir em jogo qual delas o dano segue antes de trocar.
-
Chefes de raide agendados no saguao do 11F/12F
Baixo rápidoraide.json agenda os chefes 51620/51820/51921/52222 (todos 'Monstro Transparente') e 52906 nos mapas 201301101 e 201301201, que sao os SAGUOES do 11F e do 12F -- sem catalogo de spawns. A cada janela o log diz 'fica SEM CORPO'.
Confirmar que sao gatilhos invisiveis e tira-los do agendamento de raide (ou dar-lhes corpo mudo) para o log parar de gritar.
-
Aviso do Dragao Divino insiste com tudo no maximo
Baixo rápido pedido do donoO ponto de exclamacao continua a notificar como se faltasse subir, mesmo com os 6 furos no tecto. Ja' medido: e' o CONTENTS_ALARM 731003 tipo 3, que quer dizer 'ha' material disponivel'.
Confirmar se o servidor pode calar o alarme; se for so' do cliente, registar como limite.
-
Aura de pet a aparecer sem pet equipado
Baixo rápido pedido do donoScreenshot do personagem XXX com um efeito de aura/orbe a arder ao lado, sem nenhum pet equipado. Efeito visual fantasma.
Ver o que o servidor anuncia ao entrar no mundo (appear/buff/pet) quando nao ha' pet: provavelmente manda um pet_id/efeito por omissao em vez de omitir o campo.
-
Detalhe de origem dos atributos (60210)
Baixo médioO cliente pergunta de onde vem cada atributo e recebe o par automatico de 17 B -- em proto3 isso e o servidor a afirmar "nao vem de lado nenhum".
Instrumentar atributos() para devolver a origem de cada parcela e responder o 17533.
-
Colunas de STAGE que definem a regra do mapa
Baixo médio12 de 90 colunas sao guardadas. Ficam por ler KillZone (quem cai pelo mapa nao morre nunca), DeathPenalty_*, PkOnOff, CanMeditation, EXPPenalty e SafetyArea.
Extrair as colunas e aplicar pelo menos o KillZone e a regra de PK por mapa.
-
MONSTER_PHASING -- bloco de atributos alternativo
Baixo médio1.249 linhas com um bloco completo de atributos por monstro; 40 correspondem a monstros do mundo servido. Fica registado para nao voltar a ser "descoberto".
Decidir se o bloco substitui os atributos base nesses 40 e, se sim, extrair.
-
Fabrico por encomenda e artesanato de NPC (60569 / 60570 / 60685)
Baixo médioDuas variantes do fabrico sem handler: a agencia (limites por mundo, tentativa e periodo, com premios de consolacao por falha) e o craft de NPC.
Acrescentar as tabelas ao gerador e implementar os handlers.
-
Loja pop-up (UI_SHOP_POPUPSTORE)
Baixo médioA montra temporaria nao abre: o 60743 nao tem handler nem par, logo o pedido morre sem resposta.
Acrescentar a tabela ao gerador e implementar o handler com as condicoes de abertura.
-
Quadro (Painting) -- evento de coleccao e troca no cla
Baixo médioO evento de juntar os oito quadros e os cinco opcodes de troca entre membros do cla caem no par automatico.
Implementar o evento a solo e deixar a troca para quando houver membros.
-
Loja de NPC do cla e as restantes janelas de cla sem handler
Baixo médioA banca de NPC do cla (60376-60380) e mais uma duzia de opcodes de cla abrem janela em branco; a marca do cla tambem nao e validada contra a tabela.
Implementar a banca e validar a marca contra GUILD_MARK.
-
Prendas / Presente do Cla (GUILD_GIFT)
Baixo médioCinco opcodes caem no par automatico e a aba fica em branco: 63 baus com ate 20 entradas ponderadas e uma escada de 80 niveis que consome XP e chaves douradas.
Gerar os dados, acumular o GiftExp e implementar a abertura.
-
Missoes diarias e cooperativas do cla
Baixo médioDuas abas inteiras do painel do cla em branco, com 1.858 linhas por tras. O grupo cooperativo exige o no 101015, hoje inalcancavel por causa do achado do nivel de cla.
Implementar as missoes diarias primeiro (rendem a solo) e deixar as cooperativas para quando houver membros.
-
Chat -- bloqueio de utilizador e filtro de linguagem
Baixo médioOs tres opcodes da lista de bloqueio nao tem handler e nenhuma das cinco tabelas de filtro e usada -- nem no chat, nem na validacao de nome de personagem ou de cla.
Aplicar o filtro nos nomes (rende a solo) e implementar a lista de bloqueio quando houver mais jogadores.
-
CONTENTS_ALARM -- os 82 avisos nunca sao enviados
Baixo médioA tabela define os avisos e pontos vermelhos de cada conteudo (condicao mais texto); o servidor nunca envia o pacote de alarme.
Avaliar as condicoes e emitir o 17515.
-
Ficha de Temporada (SEASONTOKEN_MAKE)
Baixo médioQuatro opcodes sem par nenhum: silencio total.
Gerar os dados e implementar a troca -- depende de redatar o CloseTime.
-
Armazem/Selagem Draco e sacola de compras
Baixo grandeNove opcodes sem handler. Nada disto e RMT: a selagem e so uma cobranca de moeda para trancar o item e a sacola e onde a compra fica antes de ser levantada.
Implementar a selagem primeiro e a sacola depois.
-
Grupo (PARTY) -- so a criacao da sala existe
Baixo grandeOs 21 opcodes seguintes nao tem handler: a sala criada nao se desfaz nem se enche e as telas Procurar Grupo e Info do Grupo ficam em branco. Sem efeito enquanto o dono jogar sozinho -- inclui o BUFF_PARTY, cujo bonus so comeca em dois membros.
Implementar quando houver um segundo jogador.
-
PK -- karma, penalidade, roubo ao morrer e Procurado
Baixo grandeSo o MODO de PK esta implementado. Falta o grau e o karma, a penalidade de XP, o que se rouba ao morrer e o sistema de Procurado; o pk_modo.json tambem so guarda 4 dos 18 modos e 10 das 26 colunas.
Implementar quando houver um segundo jogador.
-
Guerra de Cla, Cerco, Sabuk, Torneio e Alianca
Baixo grandeAs telas de info list ja estao simuladas e as 13 escritas de dominio recusam com motivo -- isso esta feito e honesto. Falta o resto: cerca de 60 opcodes com 26 tabelas por tras.
Implementar quando houver um segundo cla.
-
Raide Competitiva, Masmorra Infinita e Masmorra de Elite
Baixo grandeTres conteudos temporizados definidos no cliente sem nada do lado do servidor. Os mapas de Elite existem em mundo_spawns.json, mas a lista e a entrada directa nao.
A Infinita e a de Elite rendem a solo e valem primeiro; a Competitiva pede 20 pessoas.
Achados da auditoria já consertados
- Tesouro de Espirito -- 186 dos 276 recusados [prioridade 2] publicado · 03/09/2026 · pet_tesouro.json regenerado do pak: 450 itens, 7 degraus (scripts/gerar-pet-tesouro-global.py)
- Classificacao -- categorias das classes 6/7/8 devolvem lista vazia [prioridade 3] publicado · 03/09/2026 · RANKING_POR_CLASSE_PODER/NIVEL estendidos a 10107-10109/10407-10409; classes.json com os 8 nomes
- Recompensas da campanha -- fonte Topaz e indice de classe travado em 4 publicado · 03/09/2026 · gerar-recompensas.py le os 31 QUEST_*.csv do pak; 541 -> 1.108 passos com premio; indice min(7, classe-1) (aplicar-recompensa-8-classes.py)
- Segunda tabela de queda dos monstros com nome (NameTagDropItemId) publicado · 03/09/2026 · gerar-loot-nome-monstros.py: loot2 em 1.213 monstros do catalogo; loot.json 5.158 -> 5.404 tabelas; largar_loot rola as duas (aplicar-loot-segunda-tabela.py)
- Torre do Dragao Negro -- 3 dos 5 registos publicado · 03/09/2026 · gerar-torre-dragao.py: 5 registos (4F e Campo de Batalha); nivel_min alinhado; entrada livre do Campo para conta normal (aplicar-torre-campo-batalha-livre.py)
- Bilhetes de masmorra -- 4 dos 11 tipos publicado · 03/09/2026 · gerar-bilhetes-global.py le /DUNGEON_TICKET.csv do pak: 4 -> 11 tipos; banco.py carrega-os de bilhetes.json e gastar_bilhete passou a contar linhas (antes devolvia sucesso com saldo 0)
- Bonus de Esmagar -- RESOLVIDO 03/09/2026 publicado · 03/09/2026 · SYSTEM_DATA.Base_Smite=500 (+50%) + SKILL_PASSIVE AbilityType 57 por habilidade e nivel (+15% a +90%), teto Smite_Amplify_Max 25000; esmagar_amp() em habilidades.py (aplicar-esmagar-real.py, 43 testes)
- Aprimoramento (+N) -- ganho de atributo [prioridade 1] publicado · 03/09/2026 · aprimoramento.json regenerado do pak (1.757 perfis, 4.160 itens com ganho); ancora +0->+1 = 730 de poder
- Pico Secreto -- 4 andares e a Iniciacao em falta publicado · 03/09/2026 · gerar-pico-secreto.py le /SECRET_DUNGEON.csv + /STAGE.csv + /WARP_LOCATION.csv do pak: 8 -> 13 registos (Iniciacao + 12 andares); RowId%1000==0 e' a Iniciacao (colidia com o 1F) -- aplicar-pico-secreto-mapeamento.py; 139
- Forja -- Pedras Magicas encaixadas geradas do Topaz publicado · 03/09/2026 · gerar-joias.py le ITEM/ITEM_ATTRIBUTE/ITEM_JEWEL_TIER/ITEM_JEWEL_SLOTCOLOR do pak com filtro MainType==8: 72 -> 198 pedras, 2.301 -> 3.065 pecas com encaixe; as 72 antigas dao o mesmo resultado (testar-forja-pedras.py)
- Pets -- 38 dos 99 espiritos com as passivas a zero por publicar · 03/09/2026 · scripts/gerar-pets-global.py alargado: cadeia PET.SkillId -> PET_SKILL -> SKILL_PASSIVE grava SkillAttrs dos 38 pets Global (46 vazios -> 8 legitimamente sem passiva); 61 KR byte a byte iguais (scripts/pets-kr-baseline.j
- Treino Celeste (HEAVEN_TRAINING) publicado · 04/09/2026 · servidor/treino_celeste.py com os 16 opcodes da familia + dados/treino_celeste.json (grade/nivel do HEAVEN_TRAINING_*.csv do cliente Global). O modulo estava publicado sem o .json e recusava tudo em silencio; o .json ent
- Pico Secreto -- cp_min e nivel_min inventados publicado · 03/09/2026 · nivel_min = STAGE.EnableLevel (32; 10 na Iniciacao) e cp_min = max(SDgnPCPower, EnableCombatPower) nos 13 andares, do pak
- Estender tempo do Pico Secreto (60425) publicado · 03/09/2026 · 60425 SECRET_DUNGEON_TIME_EXTEND -> 44712 em servidor/miudos.py, clone do 60421 da Praca (+1800 s) -- aplicar-pico-secreto-tempo.py
- Correio -- apagar carta(s) seleccionada(s) (60171) publicado · 04/09/2026 · servidor/social_pvp.py _mail_del: 60171 -> 15213, apaga pelo banco.correio_apagar (uma carta por uid pedido) e devolve ERRO_OK + a lista do que foi mesmo apagado.
- Pico Secreto -- 12F e Iniciacao sem monstros; 9F/10F/11F com 6 pontos publicado · 03/09/2026 · gerar-spawns-pico-e-campo.py (sessao paralela): mundo_spawns.json com Pico Secreto 13 andares >=100 pontos e 24 mapas de campo; 0 chefe unico como populacao
- Cobertura de pacotes -- servidor responder a tudo o que o cliente Global envia feito e publicado · 04/09/2026 · 13 modulos de familia novos (rmt_desativado, guilda_extra, eventos_extra, guerra_cla_leitura, personagem_extra, item_extra, party, treino_celeste, quest_extra, buracos_criticos, social_pvp, zona_espera, masmorra_extra).
- Incenso da combinacao (25/25) -- deve dar o GRAU SEGUINTE, nao uma caixa publicado · 03/09/2026 · ALVO CORRIGIDO: o '25/25' e' o Queimador de Incenso da COMBINACAO (resgatar_pontos_combinacao, 60085->12067), nao o gacha. promessa.premio_incenso(tipo, regras, catalogo): cada ponto_tipo pertence a uma regra de grau G c
- Promessa do Dragao Divino -- Lendario deve dar MITICO publicado · 03/09/2026 · servidor/promessa.py: no sorteio 10045 (Invocacao de Pedra de Espirito Lendaria) a troca da Promessa entrega pet Tier 6 (Mitico, hipotese por eliminacao: 7 pets, nunca transcendem) via item 1701200000+PetId//100 (56 pare
- Materiais nao sao subtraidos ao criar publicado · 03/09/2026 · scripts/aplicar-materiais-adm.py: no ramo adm do fabrico (criar/trocar) a receita deixa de ter mat/mat_esp vazios -- os materiais sao conferidos e consumidos como para qualquer jogador; moeda gratis e sucesso garantido m
- Loja: precos reais (simbolicos) e LIMITE de compra a contar publicado · 03/09/2026 · dados/loja.json regenerado (gerar-loja.py --criativo --limites-reais): 692 artigos na vitrine, 678 com limite real (antes 15), precos simbolicos mantidos; o contador/limite por periodo ja' existia no gateway (mirx_loja_c
- WEMIX PLAY Webshop: mesmos precos simbolicos e mesmo limite feito · 03/09/2026 · Medido: UI_SHOP_WEBSHOP.csv (114 GoodsId) e' so' um mapa GoodsId->URL externa e tem 100% de overlap com UI_SHOP_GOODS.csv: os mesmos artigos ja' estao em dados/loja.json com preco simbolico e limite real (49 na vitrine).
- Tirar a credencial em texto limpo dos 34 ficheiros feito · 03/09/2026 · scripts/credenciais.py (senha_vps/host_vps/usuario_vps; env MIRX_VPS_PASS ou %LOCALAPPDATA%\MirXps.cred com ACL so' do utilizador); 54 scripts reescritos mecanicamente (3 guardas por ficheiro) + 40 .pyc contaminados apa
- Por o projecto em git feito · 03/09/2026 · git local em Dropbox/MIR4/.git (branch main, sem remoto), 2 commits (10.577 ficheiros, .git 34 MB); .gitignore exclui backup/, saida-pak/, *.antes*, *.bak, *.hex, caches; testar-credenciais.py passou antes do commit. Reg
- Juntar os 4 backlogs num so' feito · 03/09/2026 · scripts/gerar-lista-mestra.py junta HANDOFF (rondas), AUDITORIA-CLIENTE, auditoria-feitos.json, pedidos-dono.json e triagem-pendentes.json em docs/LISTA-MESTRA.md + lista-mestra.json + site/estado.json; corre a cada actu
- Refazer a medicao de cobertura contando os modulos feito · 04/09/2026 · scripts/placar-cobertura.py passou a somar os _OPCODES_FAMILIA dos modulos servidor/*.py (nova funcao opcodes_dos_modulos, le a arvore, nao importa). O numero publicado subiu de 255/666 para 559/666, e os opcodes 'sem fo
- Impregnacao do Pedaco Mistico -- janela de resultado com atributos vazios publicado · 03/09/2026 · servidor/impregnacao.py: 60741 sorteia opcoes novas do StampOptionGroupId (3103-3105; 254 pecas) e deixa pendente; 60742 grava so' com is_new_option=1 e devolve o item com as opcoes (26 testes)
- Actualizar o lancador no site (instalar/actualizar noutro PC) publicado · 03/09/2026 · Lancador 1.1.0 no site (MirX-lancador.zip 11,2 MB, sha 35107d4a...) e manifesto 2026.09.03-1: reconhece a build 1.131.1 (rev 490408) do MIR4 Global pela tabela e builds futuras pelos padroes de bytes (cifra x2 + anti-che
- Personagem ZZZZZ em Bicheon, nivel 200 publicado · 03/09/2026 · aplicar-zzz-bicheon-200.py: CharacterUID 470 Lev 4->200, Exp 0, StageIdx 101001010 (Bicheon), pos (4021,-10133,589); ponto de restauracao antes
- Equipamento a desequipar sozinho (ainda acontece em 03/09) publicado · 03/09/2026 · Causa medida no log: cada troca de classe (60537) chama desequipar_tudo ('[classe] 17 pecas desequipadas (eram da classe 8)') e esquecia o que saiu. Agora banco.fase_equip_guardar/fase_equip_carregar (tabela nova mirx_ph
- Status (atributos) que nao funcionam RESOLVIDO e publicado 04/09/2026: gateway.status_gm(p) lia p['CharacterUID'] e a sessao so tem character_uid minusculo -- o override do painel nunca era lido. Uma palavra. Por confirmar em jogo pelo dono. · ·
- Mobs no lugar errado / mapa com monstro errado publicado · 03/09/2026 · Parte resolvida com dados: scripts/gerar-spawns-pico-e-campo.py regenerou dados/mundo_spawns.json (Pico Secreto Iniciacao/9F-12F com 106-108 pontos cada; 21 dos 24 mapas de campo do bug n.3 povoados; 1001/400003 sem terr
- Painel GM /admin nao lista todos os personagens (ex.: ZZZZZ) feito · 03/09/2026 · site/inc/gm.php (gm_personagens sem filtro de conta + gm_personagem_da_conta so' verifica existencia) e site/admin.php (call site, seletor com conta/UID). 1 -> 21 personagens; ZZZZZ visivel e editavel.
- Sincronizar personagens (visibilidade mutua) e PvP de teste publicado · 03/09/2026 · servidor/gateway.py (aplicar-zona-partilhada.py + aplicar-pvp-area.py + PvP de teste). Sem trava de zona segura. 47 testes verdes, dano PvP simulado 54931->20922. Publicado com reinicio.
- ZZZZZ com a missao principal no mesmo passo do MirXAdmin publicado · 03/09/2026 · aplicar-zzz-missao-igual.py (le o passo do 467 em runtime; ponto de restauracao antes). Os dois ja' estavam em Bicheon nivel 200.
- Sincronizar SEMPRE ZZZZZ com MirXAdmin (cron) publicado · 03/09/2026 · sync-zzz-mirxadmin.sh no VPS (/opt/mir4/scripts/) por cron a cada 3 min; copia nivel, mapa e missao principal do 467 para o 470 so' quando o ZZZZZ esta' offline (nao mexe em sessao viva). Log em /var/log/mir4/sync-zzz.lo
- ZZZZZ aceder a todos os mapas (como MirXAdmin) publicado · 03/09/2026 · servidor/gateway.py (aplicar-mapas-criativos.py); 10 testes verdes.
- Especificacao funcional completa do MIR4 (55 partes) + referencia tecnica MirX/UE5 feito · 03/09/2026 · Lancados 03/09 ~09:30: A visao geral/personagem/power (1,2,43-46), B movimento/combate/dano/skills/buffs (3-6,42), C classes (7), D equipamento..codex/mysteries (8-15), E missoes/autocombat/IA/monstros/loot/party/morte (
- Formula oficial de combate do MirX (implementada em Python) publicado · 03/09/2026 · servidor/mirx_dano.py ligado ao golpe() vivo (aplicar-formula-combate.py, flag MIRX_FORMULA_OFICIAL=1). Todo o dano PvE+PvP usa a formula; adm continua imortal. 26 testes da formula + pvp-visibilidade verdes; PvP guard v
- Air Walk / voo nao sincroniza para os outros jogadores (remoto ve a andar no chao) publicado · 03/09/2026 · Aplicado 03/09 ~11:0x; testar-sync-airwalk.py 31/31; regressao verde. Limitacao: o cliente e' o oficial (Wemade), nao ha' log [LOCAL]/[REMOTE] nosso -- prova em jogo com 2 personagens + captura. Publicacao pela sessao pc
- Dash nao aparece para os outros jogadores + leve atraso ao iniciar movimentos publicado · 03/09/2026 · Publicado ~12:1x pela pc-a7 (43/43 no teste offline). Prova em jogo: dash visivel ao outro; atraso ao iniciar a medir pelo dono (hipotese Nagle).
- Orientacao multiplayer: dash e skills saem para o lado/atras na tela dos outros publicado · 03/09/2026 · APLICADO no gateway.py em 03/09 ~11:3x (dono: 'pode aplicar'; ensaio em copia + guarda md5 + regressao verde). Publicacao no lote da sessao pc-8b (Invocadora). Sem log [LOCAL]/[REMOTE] (cliente Wemade): prova em jogo nas
- Leve travada no movimento remoto (dead reckoning) publicado · 03/09/2026 · Aplicado ~11:3x com aplicar_lote_movimento.py; por publicar (lote pc-8b). Afinar LOOKAHEAD em jogo: parar bruscamente e inverter (overshoot). PUBLICADO pela pc-8b ~11:20 (lote conjunto com as 4 correcoes da Invocadora; b
- Auditoria Spirit Summoner -- correcoes 1 a 4 publicado · 03/09/2026 · aplicar-summoner-1a4.py + testar-summoner-1a4.py (24/24); combate-global 76/76; bateria conjunta 53/54. Publicado com reinicio 11:20. Decisoes: totens fieis ao original (ponto de origem, NAO entidades); contagem de hits
- Dash: 'buga a localizacao' no remoto (volta ao inicio do dash) publicado · 03/09/2026 · Validado em copia (65/65). APLICADO ~11:5x (janela concedida pela pc-8b; md5 247fd6c1; regressao verde). POR PUBLICAR: sai no lote da pc-8b (CC + multi-hit). PUBLICADO pela pc-8b ~12:31 (lote CC + multi-hit); VPS = local
- Cooldown padrao em todas as contas, menos troca de classe FEITO e publicado 03/09/2026 · ·
- Treino Celeste recusava tudo (achado, nao pedido) FEITO e publicado 03/09/2026 · ·
- Regressao apos lotes de 15:52/16:4x: mapas, montarias, skills resolvido por revert (pc-8b, ~17:10); a confirmar pelo dono · ·
- Mapa-mundi (F10) nao abre e nome da missao principal nao aparece publicado 04/09 ~01:55 (gateway fe9d5b58); por confirmar em jogo · · Causa medida: passo terminal 211010400 (Level 500, sem seguinte) marcado State=2 e fechado no login -> cliente sem missao corrente -> CONTENTS_OPEN tipo 2 tranca mapa e tracker. Conserto: passo_terminal fica ACTIVO (gate
- Painel de GM: caixa do Remover -- contagem real e 'Remover tudo' feito e publicado · ·
- Painel de GM: 'Remover tudo' aparecia na caixa de Adicionar feito e publicado · ·
- Painel de GM: status compacto com as duas bolinhas, como no jogo feito e publicado · ·
- Painel de GM: filtro na Trilha (ultimas concessoes) feito e publicado · ·
- Painel de GM: botao Moedas parecia texto solto feito e publicado · ·
- Painel de GM: mostrar no site os status calculados do jogo feito e PUBLICADO 04/09/2026: site no ar, mirx_status_atual_tb criada, gateway e banco publicados (4 servicos activos, 4 portas a escutar, sonda de campanha entrou no jogo). A fotografia enche no proximo login/mudanca de status. · ·
- Ponte do painel de GM: item nao chegava ao jogo (so ao relogar) RESOLVIDO e publicado; confirmado pelo dono em jogo e no banco (8 pedidos seguidos em Estado=1, entregues em 1-2 s) · ·
- Painel de GM: trocar a pagina do status arrastando feito e publicado · ·
- Painel de GM: filtro Negociavel na lista de itens feito e publicado · ·
- Barra de filtros esfarrapada (site inteiro) feito e publicado · ·
- Caixa de quantidade: o botao Remover saia da moldura feito e publicado · ·
- Estaticos: cache do CSS/JS presa a um numero escrito a mao feito e publicado · ·
Rondas publicadas
Caixa de Seleção: vinha sempre a primeira pedra (Vigor) e sem aviso no ecrã. CAUSA: CLIENT_GAME_USE_ITEM tem QUATRO campos {1 use_item_uid, 2 use_item_count, 3 is_inven_use, 4 select_get_id} e o handler passava o campo 2 (a quantidade, sempre 1) como escolha — casava sempre com o SortNo 1 do grupo. Agora usa o campo 4. AVISO: GAME_CLIENT_NOTIFY_ITEM_GAIN (2500) nunca era enviado; s_notify_item_gain/avisos_de_ganho mandam um aviso por item DISTINTO com a soma das unidades. Teste novo: scripts/testar-caixa-escolha.py
três pedidos do dono, todos publicados: • **Caixas**: 9.999 Caixa de Seleção de Pedra Mágica Lendária (604020088) e 9.999 Épica (604020087) na mochila do 467 (empilháveis, uma linha cada; scripts/aplicar-caixas-pedra-467.py, ponto 20260903-0158). Ao abrir dão a escolher entre 10 pedras (uma por família, Tier II). ATENÇÃO: elas não abririam — dados/caixas_escolha.json tinha só 2 grupos de 108; regenerado do pak actual (gerar-caixas.py) e publicado. • **Atributos aleatórios**: com melhor=True toda pedra saía com o ME
Pedra Mágica: os atributos secundários nunca existiram. MEDIDO: a única linha que aparecia ("Aumento de Todo o DANO DE ATAQUE +6,7%") NÃO vem do fio — é o Attribute1 de /ITEM_ATTRIBUTE.csv, que o cliente desenha sozinho. As outras são RandomOptionCountMax (= Grau − 1; 4 na Lendária de Ascensão) tiradas de RandomOptionGroupId, e viajam no campo 8 random_option_list do 13104. Nenhum caminho de criação de item escrevia em item_option_tb (sortear_encantamento só é chamado pela janela de Encantar). Conserto: servidor/pe
Pedra Mágica: o baralho 0 não existe no cliente. MEDIDO: mirx_magic_stone_tb tinha 10 linhas em DeckIndex 0 e 2 em 1; o 8007 DECK_LIST saía com active_deck_index 0 e um deck_info de deck_index 0, que o cliente não desenha (roda vazia, poder 0, botão "Alterar baralho (0)") — e o bloco de login 13164 lia o mesmo 0, daí "volta vazio todos". Agora: banco.pedra_magica_deck_ativo devolve 1 por omissão; PEDRA_MAGICA_DECK_MIN=1 e _pedra_magica_deck(uid, deck) normalizam tudo o que chegue <= 0 para o baralho activo; a lista
lista B inteira publicada, 28/28 testes verdes: • **Ponto de Pressão** (Advento do Dragão Divino): garantir_dragao_criativo abre os 6 furos no tecto (grau 5, 10 atributos do pool da Ânsia 24xxx) uma vez por sessão no 60746; "Desbloquear Novamente" e Ânsia do adm no mesmo tecto, sem recusa. Alternativa por banco: scripts/aplicar-pontos-pressao-467.py. • **Espólio da masmorra**: servidor/espolio.py (60205 DROP_RECEIVE_INFO_LIST, mirx_espolio_tb) — a janela deixa de dizer "Ainda sem nenhum espólio". • **Dominação**: s
Moedas identificadas em /MONEY.csv: 6 Milhagem, 19 Jade de Dragão, 13 Pedra da Guerra, 14 Pontos de PvP, 15 Moeda do Clã, 16 Pontos de Amizade, 17 Moedas do Clã, 21 Emblema de Cavalo, 22 Ponto de Admiração, 23 Aço de Dragão (3 sem nome, 7 "Fugir"); saldos do adm em 1 B (scripts/aplicar-jade-milhagem-467.py, ponto 20260903-0040). Janela Evento: o cliente faz POST /event/list?lang=pt na API 7000 e recebia "endpoint nao implementado" (67 B); agora nginx serve o ficheiro em POST (location = /event/list, conf .antes-eve
print do dono (Cheonho "1/1" devia ir a "0/1"): a peça é material puro, o espírito existe sem ela → reserva ZERO (gasta até 0, em falha e sucesso). Adm com 0 peças segue sem recusa e sem gastar; não-adm sem peça é recusado antes de pagar. Nota: garantir_pets_criativos repõe 1 peça por espírito no login (uma vez por sessão) — o adm volta a ter 1/1 ao religar.
medido no log/BD que a peça FOI gasta (item_stack_tb 2 → 1) mas a janela continuou a mostrar 2 — o cliente não aplica o campo 4 (del_item) à cópia local da bolsa. Agora a resposta 49025 vem seguida da mochila inteira (INVEN START/DATA/END) sempre que alguma pilha é tocada. Só existe um item por espírito (UseId 1701000049 → 1701200049).
promover Espírito (60572 PET_UPGRADE) agora gasta a peça do próprio espírito (PET_LEVEL.LvUpNeedPetItemCount → regra "pecas_pet"; item = PET_PECAS[tid].item_id, ex. Wooska 4901 → 1701200049) em FALHA e em SUCESSO, com reserva de 1 (o próprio espírito; consumir até 0 apagava o alvo e garantir_pets_criativos repunha). Adm nunca recebe result≠0 (com 1 peça segue sem gastar, com log); não-adm é recusado ANTES de pagar moeda/material. A peça vai no campo 4 (del_item) da 49025. Teste: scripts/testar-pets.py (+10 conferên
Loja arrumada por categoria — só a vitrine ACTUAL do Global fica ligada (692 artigos; 5.778 fora de cartaz desligados; era isso o "bagunçado"/repetido), preço estético = centavos do Global em Moeda de Ouro, adm não é cobrado (igual ao Mercado). Raides: 38/38 com chefe (INSTANCE_DUNGEON_INFO.DungeonBossMonsterId; posição de BossAppearPlayer1WarpXYZ), 32 mapas novos da campanha povoados, 70 mapas nomeados (stages.json agora publicado). Purgatório: as 16 stages UNDERWORLD já tinham ~1.000 monstros (2F-7F por confirmar
Técnica do Clã — "Cooperar" já era tratado (60363, +10 exp por clique, teto 8.700 = 870 cliques); agora para o adm um Cooperar enche a barra e a obra (LEVELUP_START) é instantânea; 60369 SKILL_START + bónus de atributo via servidor/tecnica_cla.py (mirx_guild_tecnica_skill_tb). Aparência: servidor/aparencia.py ligado — CHARACTER_INFO_LOGIN_GLOBAL leva 16 costume_list e 22 luxury_costume_pet_id (Vestível→Pet por NOME, hipótese) e APPEAR_USER leva 13 vehicle_id e 30 equip_costume_list. Aura do Espírito: PET.csv não te
Oração (NPC_PRAY 11/21: 60788 PRAY_ITEM -> 12101, 60789 BONUS -> 12102, bloco de login 13175 CHARACTER_PRAY_SYSTEM_DATA que ia VAZIO; dados/oracao.json; mirx_pray_tb; adm 100% de sucesso); 13137 MAP_WAYPOINT_DATA deixa de ser recusado (QUADROS_GRANDES 16 KB); todos os 10 Grandes Prédios do CLÃ TESTE no degrau máximo (Forja, Mina, Árvore, Santuários, Torres, Portão — aplicar-predios-cla-todos.py). 6 agentes em curso: Desencantar, Técnica do Clã, aparência (vestível/ aura/montarias/classes), raides c/ chefe + mapas n
armazém do 467 fundido (528 -> 35 itens; 493 sacos x1 somados em 4 pilhas; cópia *-antes-fundir-armazem); spawns do Pico Secreto 1-8F e Torre (11 stages) no chão real (1.117 pontos, área Secret_02/FD_BlackDragonTower), chefes grade>=4 colapsados para 1x (eram 3 linhas n=10); mundo_spawns.json + area_mapas.json agora no publicador. Pendente: "x93" do Nefariox não reproduzido nos dados (suspeita: acumulação em runtime/respawn); Purgatório sem spawns.
Pico Secreto aceita os ids do cliente (SECRET_DUNGEON RowId 1000/1001..8001 -> andar = id//1000; antes "masmorra pico_secreto/1001 desconhecida"); raides sem mapa em mundo_spawns (34/38) entram pela posição do 1º WARP_LOCATION do mapa (dados/warps_por_stage.json, 1.104 mapas; sem chefe dentro ainda); História: passo final 109207300 (Level 500, inatingível — teto 250) é fechado pelo servidor para o adm ao entrar (fechar_passo_inatingivel). Pendentes do mesmo diagnóstico: chefe dentro da raide (D3), Torre "Retornar"
Marcadores antigos verificados como resolvidos
- 5000 da Caixa de Energia já na conta — dono tem de relogardocs/HANDOFF.md:161 — ItemId 601100309, pilha de 5000 no uid 467, conferida no banco `[(1383003, 601100309, 0, 5000, 0)]`; o inventário só carrega no login.
- Testar a Promessa (medidor do tipo 1 em 999/1000)servidor/gateway.py:23948-23972 — ganho_promessa, `promessa_agora`, bloco de troca e `banco.sorteio_promessa_definir` (definido em servidor/banco.py:4051); campo 11 sempre enviado
- Treino Ermo: handler 60573/60574servidor/gateway.py:28490-28494 despacha CLOSED_TRAINING_INFO/UPGRADE para `treino_ermo_info` (gateway.py:18352) e `treino_ermo_aprimorar` (gateway.py:18365); persistência em servi
- Bug nº1 (skill): sem sintoma concreto do donodocs/HANDOFF.md:535 regista que as "12 falhas de skill" foram inventadas por uma sonda com o personagem errado, parado numa cidade; a medição própria está em scripts/sonda-skills-t
- Dono corre publicar-mercado-infinito.py (mercado infinito + bolsa sem tecto + Loja criativa)docs/HANDOFF.md:1173-1176 — "Publicado 02/09 14:04 (`publicar-mercado-infinito.py`, ponto /opt/mir4/backup/20260902-1404-antes-mercado-infinito): gateway/banco com ... lojas NPC, e
- Dono corre aplicar-moedas-bigint.py (tira o 65.535 e o 2,1/4,2 bi)docs/HANDOFF.md:718-721 — "**Energia/moedas bigint** aplicado 17:29 pelo Coordenador com autorização explícita do dono (sql_mode relaxado na sessão por causa do DEFAULT zero de Log
- Status editável no painel — falta correr publicar-mercado-infinito.py (cria mirx_status_tb)A tabela foi criada no publish das 14:04 (docs/HANDOFF.md:1176 "tabelas mirx_status_tb + 3 de coleção criadas"; SQL listado em scripts/publicar-mercado-infinito.py:116). Painel em
- Dano "3 skills por mob" para CONTAS_GM (dano_modo_criativo)servidor/gateway.py:11008 `dano_modo_criativo(m, dano_normal)` (fatia hp_max/2,6 para mob e /12 para chefe, janela de 0,8 s por skill) aplicado em gateway.py:14912-14913; publicado
- Mercado "lagando" — instrumentação diria no próximo publishInstrumentação no código publicado: servidor/gateway.py:22624 `print("[mercado] procura cat=%d: %d tipo(s), %d quadro(s), %.0f ms")` e gateway.py:22657 `"[mercado] preco medio pedi
- Constituição: 60820 MULTI e 60060 LEVEL_LIMIT sem handler (+ aba Chi/SCRIPTUREHALL)servidor/gateway.py:20338 handler de CLIENT_GAME_UPGRADE_MASTERY_MULTI (60820, "Subir tudo", topa no MaxLv do tier) e gateway.py:20379 handler de CLIENT_GAME_UPGRADE_MASTERY_LEVEL_
- Constituição: zerar níveis do MirXAdmin para testar do inícioscripts/aplicar-reset-constituicao.py (mysqldump da mastery_tb → UPDATE MasteryCnt=0 do uid 467 → SELECT de prova) e docs/HANDOFF.md:716 "Constituição zerada a pedido (aplicar-rese
- Esfera da Alma Mágica Especial: não desequipa (e poder -21)servidor/gateway.py:25496 — handler CLIENT_GAME_MAGIC_ORB_DEL_DECK (60683) chama banco.desequipar_te(deck 23 e 28), devolve 58064 + CHANGE_STAT; o -21 vinha de itens que somavam 0
- Nenhuma caixa abre (sacos de ouro, baús de montaria/joia)servidor/gateway.py:5799 recompensas_da_caixa + 5858 abrir_caixa (tipos 1/2/3, ITEM_RANDOM_GET_1/2, ITEM_SELECT_GET, ITEM_PACKAGE) e gateway.py:25772 no 60069 USE_ITEM -> 12018 OPE
- Cadeado na troca de classe (classes 'Owned' com cadeado)servidor/gateway.py:21672-21689 — no 60538 INFO o adm recebe a lista 1..8 por definição (fase_abrir_todas + fallback que ignora o banco e avisa no log), 60536/60537 nunca recusam;
- Oração (Pedra de Espírito Mítica) não funcionaservidor/gateway.py:3454-3458 (60788 PRAY_ITEM -> 12101, 60789 BONUS -> 12102, bloco de login 13175) e o handler em gateway.py:25523-25576 (adm 100% de sucesso, sem consumo, grava
- Mercador de Criação: <Criação de Esfera da Alma Mágica> não cria o Pergaminhoservidor/gateway.py:24370-24418 — 60070 MAKE_ITEM e 60081 EXCHANGE_ITEM partilham handler e para o adm a receita é copiada com mat/mat_esp/custo vazios, so_por_tipo=None e sucesso
- NPC Porquínio: Troca de Pedaço de Tesouro (Floresta, Terra, Luz)servidor/gateway.py:24371 — o 60081 (Trocar) é gémeo do 60070 e usa a mesma receita, com adm sem material nem custo (24398-24414); as receitas 3001003/05/07/10/13 estão em dados/fa
- "Onde obter": decidir entre comando /onde e página no siteDecidido pela página: scripts/gerar-onde-obter-site.py:1-25 gera site/static/dados/onde/<ItemId>.json a partir de dados/onde_obter.json (15 MB) e o botão foi publicado na enciclopé
- Transcender Espírito derruba o cliente (Roxion I -> II, erro crítico 1)servidor/gateway.py:26490-26503 — comentário 'MEDIDO 02/09 18:2x: a RECUSA aqui derrubou o cliente'; para o adm responde result=0 sem mudar o nível em vez de recusar, e dados/pet_n
- Salão dos Desafiadores: dono quer ser Top 1servidor/gateway.py:25440-25465 — 60816/60817 deixaram o par automático e respondem 59320/59321 com uma única entrada: rank 1, character_uid, NickName, classe, guilda e ranking_val
- Combinação: Pedra Mágica Épico II não entra em combinação nenhumascripts/gerar-composicao-global.py:1-8 regenera dados/composicao.json do TA_490408.pak (ITEM_MATERIAL_COMPOSE/_LIST/_POINT) exactamente por causa do 801100008; o ficheiro actual te
- Modo História: TP da missão volta ao Pântano da Grande Centopeia (passo depois do 109207300)dados/cadeia_missoes.json tem 2.571 passos e scripts/testar-cadeia-global.py:286 exige que o sucessor de 109207300 seja o 110000000 "Terra Proibida — Falar com o Mestre" (stage 109
- Animação de ataque dos monstros/chefes (ronda 33) — 16001 antes do 16002servidor/gateway.py:16005 monta s_attack(uid, {1:[11] state, 2:[0] skill, 3:[attack_id], 6:[alvo PC]}) e envia GAME_CLIENT_ATTACK antes do GAME_CLIENT_STRUCK, com fallback se o pac
- "Cálculo real do poder e status" + "contar o XP na barra"combate.json regenerado e conferido contra o TA_490408 na ronda 39 (dados/combate.json tem niveis/classes/combatpoint/exibidos/status_limites/status_limit; scripts/gerar-combate-gl
- Chefes: golpes + animação (ronda 38) — 97 chefes de raide.json por doador, skill=0 no 16001scripts/gerar-chefes-golpes.py documenta a medição (179 grade 4/5, só Turkan/Nerkan sem golpe; 97 classid de raide.json corrigidos por doador) e scripts/testar-chefes-golpes.py gar
- Dragão Divino "!" — pôr as opções no grau máximo (mirx_divine_dragon)servidor/gateway.py:8113 garantir_dragao_criativo abre os 6 furos no tecto (grau 5, DRAGAO_HOLE_MAX_GRAU5 atributos do pool da Ânsia 24xxx) uma vez por sessão, chamado no 60746 (ga
- Confirmar no fio: campos reais do 60820/60060, caixas tipo 1/3, selo GET/GET_ALLos três já têm handler e instrumentação: gateway.py:20346 imprime "[constituicao] 60820 campos=%r" e gateway.py:20386 o mesmo para o 60060; caixas tipo 1 e tipo 3 estão implementad
- Desencantar não funciona como deveriaservidor/desencantar.py:84/486 (60780→12096, adm nunca recusa, sem custo, degrau máximo) despachado em servidor/gateway.py:19617; teste scripts/testar-desencantar.py; HANDOFF:812 m
- Espólio da masmorra não vai para o saquinhoservidor/espolio.py:85/112 (60205→17516, stage_type 103/104/110, persistência mirx_espolio_tb) + gateway.py:15188-15213 (largar_loot alimenta espolio_acumulado) e gateway.py:20446-
- Mobs em posições erradas na Câmara de Experiência IIIdados/salas_praca.json (regerado 02/09 21:04, chave _correcao_02_09; a sala '[1F] Câmara de Experiência III' = 201300110 com caixa_chao/âncora nova) por scripts/gerar-salas-praca.p
- Loja 'Oferta Limitada'/IAPservidor/gateway.py:24036-24105 (60657/60659/60693/60694 → 31612/31614/31617/31618 com total_price, 60658/60660 verify ok, 60289 → 31506+31507 paginado) e scripts/testar-loja-iap.p
- Modo História travado (Terra Proibida — Aguardar o Mestre)servidor/gateway.py:16131-16155 fechar_passo_inatingivel (passo 109207300 tipo Level alvo 500 > teto 250 fechado para o adm), chamado no entrar em jogo em gateway.py:19934; HANDOFF
- Constituição: subir Tier + 'Subir tudo'servidor/gateway.py:20338-20377 (60820 MULTI 'Subir tudo', campos medidos 02/09 17:5x) e 20379-20404 (60060 LEVEL_LIMIT, tier em mastery_tb slot 255, adm sem material/moeda); adm i
- Quebrar o selo: a caixa não entra no encaixeservidor/gateway.py:25290-25315 (60445 LIST, 60446 REGISTER com start_time -86400 = pronto na hora, 60447/60451/60453), estado por sessão p['_selo']; HANDOFF:711 [x] 'Quebrar o sel
- Técnica do Clã não sobe (Salão de Artes Marciais)servidor/gateway.py:15596-15616 (60363 DONATION: para o adm um Cooperar enche a barra até exp_para_subir) + servidor/tecnica_cla.py:80-90 (60369 SKILL_START, único sem handler) e b
- Montarias repetidas na Coleçãoservidor/gateway.py:3076-3080 s_lista_montarias exclui as duplicadas de dados/colecao.json['oculto'] = {'2015':1,'22011':1} (scripts/gerar-colecao-oculto.py); HANDOFF:826 ronda 41
- Status real somando TUDOservidor/gateway.py:9186-9299 _extras_atributos soma encantamento (opcoes_equipadas), Treino Ermo, Potencial, traje e montaria equipados, vestíveis e encaixes próprios, chamado em
- E.T. ainda derruba o cliente (slot 301-305) + Pedra Mágica não ocupa o encaixe da rodaservidor/gateway.py:21235-21256 desvia MainType 24 ANTES de qualquer 8001 para _equipar_encaixe_proprio/mirx_te_equip_tb (e 21173-21184 manda o desequipar por 8019, nunca 8023); a
- "Quando o jogo cai, desequipa" (artefatos slots 11-15 vazios)servidor/banco.py:1068-1112: equipar_item e desequipar_item passaram a correr leitura+REPLACE/DELETE numa SÓ transação (atómico e idempotente, com o pedido do dono citado no docstr
- Agente em curso: Espíritos (pets) — publicar quando terminaremservidor/gateway.py:4223 s_pet_list (61 pets, todos desbloqueados) + garantir_pets_criativos em gateway.py:4086-4132 (peças de invocação e 10 encaixes do baralho para a conta adm,
- 13137 MAP_WAYPOINT_DATA recusado no login (7.099 B > 2.048)servidor/gateway.py:7381 QUADROS_GRANDES = {13137: 16000} (tecto do cliente 16 KB) consultado na trava de envio em servidor/gateway.py:13524 (tecto = QUADROS_GRANDES.get(op_r, TAMA
- Espólio de masmorra não fica salvo ("Ainda sem nenhum espólio obtido")servidor/espolio.py (módulo novo de 03/09: stage_type correcto 103/104/110, persistência do saco em mirx_espolio_tb entre religações), tabela em scripts/mirx-espolio.sql:19, teste
- Graça do Artefato de Dragão ("não é possível receber")servidor/gateway.py:5334-5337 (59301 DRAGON_BLESS_INFO empurrado no login/após equipar e 60777 GROW com adm sem custo e 10 slots activos, dados/dragon_bless.json, mirx_dragon_bless
- Advento do Dragão Divino (DIVINE_DRAGON 60746-60749, zero handlers)servidor/gateway.py:7848-7893 com os quatro handlers (60746 INFO, 60747 OPEN, 60748 OPTION_CHANGE, 60749 OPTION_ACCEPT -> 50501-50504), dados/divine_dragon.json (scripts/gerar-divi
- Janela Evento: "não foi possível carregar"scripts/publicar-evento-api.py:1-17 publica o EventList real ({EventId, UiButtonText, UiInPresetUrl, WebEventUrl} -> /evento) e scripts/publicar-evento-nginx.py:1-7 acrescenta o `l
- Jade de Dragão por identificar entre os tipos 3/7/19scripts/aplicar-jade-milhagem-467.py:3-4 regista a leitura directa de /MONEY.csv (TA_490408.pak, 03/09): 19 = Jade de Dragão, 6 = Milhagem, 23 = Aço de Dragão etc., e semeia 1e9 de
- Dominação — entrar a qualquer horaservidor/dominacao_extra.py:69-79 (_OPCODES_FAMILIA 60612/60613/60638), interruptor MIRX_DOMINACAO_SEMPRE_ABERTA=adm|todos|0 em :88-90, despacho em servidor/gateway.py:19621, teste
- Expediçãoservidor/interserver.py:82-90 e :543 tratam 60508 SERVER_EXPEDITION_INFO -> 1351, 60509 WORLD_LIST -> 1353 e 60510 START -> 1355; família em :91-102, despacho em servidor/gateway.p
- Inter-server — simulado aceiteservidor/interserver.py cobre a família inteira do inter-server (Mapa das Forças 60476, Santuário 60578, Altar 60600, Cerco 60542, Saque 60609, Escolta 60692) com estado simulado a
- Boss x3 — Executor do Clã Twinway nasce 3-4 vezesscripts/aplicar-boss-unico-praca.py (cabeçalho: "Um chefe por sala nas salas SINTETIZADAS da Praça Mágica ('Boss x3')", causa medida: gerar-praca-andares-novos.py copiou geradores
- Janela de espólio da masmorra ("Ainda sem nenhum espólio obtido")servidor/espolio.py:82-85 trata 60205 REQUEST_DROP_RECEIVE_INFO_LIST -> 17516 com persistência em mirx_espolio_tb (:112, :249; DDL em scripts/mirx-espolio.sql:19), stage_type corri
- Limpar os 3.499 itens do MirXArqueiroscripts/aplicar-limpar-arqueiro.py (lápide em item_delete_tb para todo ItemIdx ausente de dados/site/ITEM.json, equipados intactos) foi corrido: docs/HANDOFF.md:777-781 regista 17.
- Confirmar em jogo: ressuscitar (3B.4) e tornado espalhado (3B.5)Ressuscitar: HANDOFF:1222-1224 marca [x] no código (RESULT com revived_type/uid + BROADCAST_REVIVAL 17501 + ALIVE_CHECK + warp para zona segura mesmo no próprio mapa) e :1173-1175
Encontrou algo que não está aqui? Diga na comunidade com a versão do lançador e os passos para reproduzir.