From 19dccd751acd8993ee38013e844003e1034b964e Mon Sep 17 00:00:00 2001 From: Emagi Date: Thu, 12 Dec 2024 15:38:27 -0500 Subject: [PATCH] restore changes to fix earlier clients seeing the name visuals (other than suffix which seems to be missing) --- source/WorldServer/Commands/Commands.cpp | 2 ++ source/WorldServer/Spawn.cpp | 37 ++++++++++++++++-------- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/source/WorldServer/Commands/Commands.cpp b/source/WorldServer/Commands/Commands.cpp index 64c1c5e..17f65fd 100644 --- a/source/WorldServer/Commands/Commands.cpp +++ b/source/WorldServer/Commands/Commands.cpp @@ -9346,6 +9346,8 @@ void Commands::Command_TitleSetSuffix(Client* client, Seperator* sep) database.SaveCharSuffixIndex(index, client->GetCharacterID()); client->SendTitleUpdate(); + client->GetPlayer()->info_changed = true; + client->GetPlayer()->GetZone()->AddChangedSpawn(client->GetPlayer()); } } diff --git a/source/WorldServer/Spawn.cpp b/source/WorldServer/Spawn.cpp index 3597edc..1c76bb7 100644 --- a/source/WorldServer/Spawn.cpp +++ b/source/WorldServer/Spawn.cpp @@ -470,18 +470,25 @@ void Spawn::InitializeFooterPacketData(Player* player, PacketStruct* footer) { if (strlen(appearance.name) < 1) strncpy(appearance.name,to_string(GetID()).c_str(),128); - - footer->setMediumStringByName("name", appearance.name); - footer->setMediumStringByName("guild", appearance.sub_title); - footer->setMediumStringByName("prefix", appearance.prefix_title); - footer->setMediumStringByName("suffix", appearance.suffix_title); - footer->setMediumStringByName("last_name", appearance.last_name); - if (appearance.attackable == 0 && GetLevel() > 0) - footer->setDataByName("spawn_type", 1); - else if (appearance.attackable == 0) - footer->setDataByName("spawn_type", 6); - else - footer->setDataByName("spawn_type", 3); + if(footer->GetVersion() > 561) { + footer->setMediumStringByName("name", appearance.name); + footer->setMediumStringByName("guild", appearance.sub_title); + footer->setMediumStringByName("prefix", appearance.prefix_title); + footer->setMediumStringByName("suffix", appearance.suffix_title); + footer->setMediumStringByName("last_name", appearance.last_name); + if (appearance.attackable == 0 && GetLevel() > 0) + footer->setDataByName("spawn_type", 1); + else if (appearance.attackable == 0) + footer->setDataByName("spawn_type", 6); + else + footer->setDataByName("spawn_type", 3); + } + else { + footer->setDataByName("guild", appearance.sub_title); + footer->setDataByName("prefix", appearance.prefix_title); + footer->setDataByName("suffix", appearance.suffix_title); + footer->setDataByName("last_name", appearance.last_name); + } } EQ2Packet* Spawn::spawn_serialize(Player* player, int16 version, int16 offset, int32 value, int16 offset2, int16 offset3, int16 offset4, int32 value2) { @@ -532,6 +539,7 @@ EQ2Packet* Spawn::spawn_serialize(Player* player, int16 version, int16 offset, i pos_struct->ResetData(); InitializePosPacketData(player, pos_struct); + if (version <= 283) { if (offset == 777) { info_struct->setDataByName("name", "This is a really long name\n"); @@ -2387,6 +2395,11 @@ void Spawn::InitializeInfoPacketData(Player* spawn, PacketStruct* packet) { bool spawnHiddenFromClient = false; int8 classicFlags = 0; + + if(version <= 561 && IsPlayer()) { + InitializeFooterPacketData(spawn, packet); + } + // radius of 0 is always seen, -1 is never seen (unless items/spells override), larger than 0 is a defined radius to restrict visibility sint32 radius = rule_manager.GetZoneRule(GetZoneID(), R_PVP, InvisPlayerDiscoveryRange)->GetSInt32(); if (radius != 0 && (Spawn*)spawn != this && this->IsPlayer() && !spawn->CanSeeInvis((Entity*)this))