• Bem vindo à nossa comunidade - Quer se juntar ao resto dos nossos membros? Registre-se*Registros aprovados pela adminitração

Dúvida [EP8] Personagem entra no mundo, joga, mas o cliente fecha em ~50s (ChatNode: GetPresenceData invalid charIdx)

Vergus

Novato XPZ
Fala pessoal! Servidor EP8 (repack/binários XPZONE) rodando em Docker (container CentOS) na VPS, com MSSQL nativo. Login, seleção de canal e entrada no mundo funcionam — o personagem anda, mata mob e loota normalmente. PORÉM o cliente fecha sozinho ~50 segundos depois de entrar no mundo.

=== LOGS NO MOMENTO DO DISCONNECT ===

ChatNode_01.log:
Enter(): insert ok. charIdx(9), guildNo(0), (dorimeq)
[##ERROR##] GetPresenceData(): invalid charIdx <- 1 segundo após o Enter
Leave(): charIdx(9), guildNo(0), (dorimeq) <- ~48s depois, cliente fecha

WorldSvr: entra normal, GetInitializePacket OK, personagem spawna e joga. NÃO loga "close user" no disconnect (a conexão do WorldSvr fica viva — só o ChatNode faz Leave).

GlobalMgrSvr: não registra nada do usuário na entrada (trace só mostra contagem de canal 6007/6008). Ou seja, a presença do char nunca é propagada WorldSvr -> GMS -> ChatNode.

=== O QUE JÁ TESTEI (sem sucesso) ===

- NormalClientMagicKey 1168110 e 543957823 (login funciona com os dois, chat cai igual)
- UpdateInterval 300000 / 1000 / 8000
- NoIncomingCharDeleteTickCount aumentado
- Timeouts do ChatNode (NoNotifyTimeLimit, NoResponseTimeout, NoActiveLimitTime) em 1h
- Restart limpo de todo o stack na ordem correta
- Confirmei ServerNationIdx=1, ChatNodeIdx=1, BroadCastOverServerNation=0 (ChatNode) batendo com WorldSvr ServerIdx=1
- Troquei os binários ChatNode/WorldSvr/LoginSvr por versões pristinas de outro repack EP8 (os meus eram um set de versões misturadas: o GMS batia com o pristino mas ChatNode/WorldSvr/LoginSvr eram builds diferentes). Mesmo com o set consistente, o disconnect continua igual.
- Comparei as configs (ChatNode_01.ini, GlobalMgrSvr.ini, Common.ini) contra 3 repacks EP8 diferentes — idênticas nas settings de presença. Não é config.
- Corrigi um bug de SP no banco (cabal_sp_ems_get_firstJoinedUserNum chamava uma SP inexistente) — erro parou, mas não afetou o disconnect.

=== DIAGNÓSTICO ISOLADO ===

- Acontece com qualquer personagem (testei char novo nível 1 limpo — mesmo erro)
- Acontece em canal normal (ChannelType=0 — mesmo erro)
- O link TCP WorldSvr -> ChatNode (38121) está UP (ChatNode aceita as conexões)
- No trace do ChatNode, NENHUM IPC de registro de presença chega pro charIdx antes do Enter do cliente — só o Enter do cliente (8006/8007 OK) e depois o Leave
- O GlobalMgrSvr não registra o usuário na entrada

Resumindo: a presença WorldSvr -> GMS -> ChatNode não é propagada por usuário.

=== PERGUNTAS ===

1. O que faz o WorldSvr/GMS propagar a presença do personagem pro ChatNode? Tem alguma config (.ini) que ativa isso?
2. O GetPresenceData(): invalid charIdx é a causa do disconnect ou é benigno?
3. Tem relação com o banco (alguma stored procedure / tabela de presença que precisa existir)?
4. Alguém já passou por esse "entra e cai em ~50s com GetPresenceData invalid charIdx"? Como resolveu?

=== AMBIENTE ===

- EP8, binários do repack XPZONE
- Cliente: CabalMain "Snake" v1.0.0.374, modo husky
- MSSQL nativo, banco restaurado de backup

Valeu demais pela ajuda!
 
Topo Bottom