fix(net): S_CHAR_INFO so' aplica em si mesmo (anti name overwrite por proxy)
Bug: handler aceitava qualquer S_CHAR_INFO do server (proprio + catch-up de proxies pre-existentes) e sobrescrevia o PlayerState local. Resultado: nome do ultimo proxy recebido virava o nome do char local na tela. Fix: bail se InEntityId != ZeusEntityId (proxies remotos sao roteados pelo registry no UZeusWorldSubsystem; nameplate por EntityId fica pra futuro).
This commit is contained in:
@@ -432,6 +432,17 @@ void AZeusCharacter::HandleZeusCharInfo(const int64 InEntityId, const FString& C
|
||||
TEXT("AZeusCharacter: S_CHAR_INFO recebido EntityId=%lld name=%s guild=%s"),
|
||||
InEntityId, *CharName, *GuildName);
|
||||
|
||||
// 2026-06-03 fix: server envia S_CHAR_INFO de TODOS os players (proprio +
|
||||
// catch-up de proxies pre-existentes). Sem este filtro, o nome do ultimo
|
||||
// proxy recebido sobrescrevia o do pawn local (ex: player Mateuus loga e
|
||||
// ve "Olatudook" em si mesmo porque o catch-up do Olatudook chegou depois
|
||||
// do S_CHAR_INFO proprio). Proxies remotos sao roteados pelo registry no
|
||||
// UZeusWorldSubsystem (futuro nameplate por EntityId).
|
||||
if (ZeusEntityId != 0 && InEntityId != ZeusEntityId)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
APlayerState* PS = GetPlayerState();
|
||||
if (!PS)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user