From bd315d9b45b6c107011b26bc0f1f280a391f6fbd Mon Sep 17 00:00:00 2001 From: AriAvery <41122212+AriAvery@users.noreply.github.com> Date: Fri, 23 Nov 2018 11:46:39 +0100 Subject: [PATCH] updates --- src/servers/sapphire_zone/Actor/Player.cpp | 7 +++++++ src/servers/sapphire_zone/ServerMgr.cpp | 14 +++++++------- src/servers/sapphire_zone/ServerMgr.h | 2 +- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/servers/sapphire_zone/Actor/Player.cpp b/src/servers/sapphire_zone/Actor/Player.cpp index 7aba3e56..0601a7df 100644 --- a/src/servers/sapphire_zone/Actor/Player.cpp +++ b/src/servers/sapphire_zone/Actor/Player.cpp @@ -1533,6 +1533,13 @@ uint32_t Core::Entity::Player::getTerritoryTypeId() const void Core::Entity::Player::sendZonePackets() { + if( isLogin() ) + { + //Update player map in servermgr - in case player name has been changed + auto pServerMgr = g_fw.get< Core::ServerMgr >(); + pServerMgr->updatePlayerName( getId(), getName() ); + } + getCurrentZone()->onBeforePlayerZoneIn( *this ); auto initPacket = makeZonePacket< FFXIVIpcInit >( getId() ); diff --git a/src/servers/sapphire_zone/ServerMgr.cpp b/src/servers/sapphire_zone/ServerMgr.cpp index 9003537d..de23e693 100644 --- a/src/servers/sapphire_zone/ServerMgr.cpp +++ b/src/servers/sapphire_zone/ServerMgr.cpp @@ -365,12 +365,15 @@ bool Core::ServerMgr::isRunning() const return m_bRunning; } -std::string Core::ServerMgr::getPlayerNameFromDb( uint32_t playerId ) +std::string Core::ServerMgr::getPlayerNameFromDb( uint32_t playerId, bool forceDbLoad ) { - auto it = m_playerNameMapById.find( playerId ); + if( !forceDbLoad ) + { + auto it = m_playerNameMapById.find( playerId ); - if( it != m_playerNameMapById.end() ) - return ( it->second ); + if( it != m_playerNameMapById.end() ) + return ( it->second ); + } auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); auto res = pDb->query( "SELECT name FROM charainfo WHERE characterid = " + std::to_string( playerId ) ); @@ -387,9 +390,6 @@ std::string Core::ServerMgr::getPlayerNameFromDb( uint32_t playerId ) void Core::ServerMgr::updatePlayerName( uint32_t playerId, const std::string & playerNewName ) { - auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >(); - pDb->execute( "UPDATE charainfo SET name = '" + playerNewName + "' WHERE characterid = " + std::to_string( playerId ) ); - m_playerNameMapById[ playerId ] = playerNewName; } diff --git a/src/servers/sapphire_zone/ServerMgr.h b/src/servers/sapphire_zone/ServerMgr.h index 861b5b7a..efdb4870 100644 --- a/src/servers/sapphire_zone/ServerMgr.h +++ b/src/servers/sapphire_zone/ServerMgr.h @@ -44,7 +44,7 @@ public: Entity::BNpcTemplatePtr getBNpcTemplate( const std::string& key ); Entity::BNpcTemplatePtr getBNpcTemplate( uint32_t id ); - std::string getPlayerNameFromDb( uint32_t playerId ); + std::string getPlayerNameFromDb( uint32_t playerId, bool forceDbLoad = false ); void updatePlayerName( uint32_t playerId, const std::string& playerNewName ); private: