mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-28 07:07:45 +00:00
Merge pull request #437 from XeAri/housing
saving player names in map to reduce SQL query
This commit is contained in:
commit
7562cb5879
3 changed files with 28 additions and 3 deletions
|
@ -1533,6 +1533,13 @@ uint32_t Core::Entity::Player::getTerritoryTypeId() const
|
||||||
|
|
||||||
void Core::Entity::Player::sendZonePackets()
|
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 );
|
getCurrentZone()->onBeforePlayerZoneIn( *this );
|
||||||
|
|
||||||
auto initPacket = makeZonePacket< FFXIVIpcInit >( getId() );
|
auto initPacket = makeZonePacket< FFXIVIpcInit >( getId() );
|
||||||
|
|
|
@ -365,15 +365,31 @@ bool Core::ServerMgr::isRunning() const
|
||||||
return m_bRunning;
|
return m_bRunning;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string Core::ServerMgr::getPlayerNameFromDb( uint32_t playerId )
|
std::string Core::ServerMgr::getPlayerNameFromDb( uint32_t playerId, bool forceDbLoad )
|
||||||
{
|
{
|
||||||
|
if( !forceDbLoad )
|
||||||
|
{
|
||||||
|
auto it = m_playerNameMapById.find( playerId );
|
||||||
|
|
||||||
|
if( it != m_playerNameMapById.end() )
|
||||||
|
return ( it->second );
|
||||||
|
}
|
||||||
|
|
||||||
auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >();
|
auto pDb = g_fw.get< Db::DbWorkerPool< Db::ZoneDbConnection > >();
|
||||||
auto res = pDb->query( "SELECT name FROM charainfo WHERE characterid = " + std::to_string( playerId ) );
|
auto res = pDb->query( "SELECT name FROM charainfo WHERE characterid = " + std::to_string( playerId ) );
|
||||||
|
|
||||||
if( !res->next() )
|
if( !res->next() )
|
||||||
return "Unknown";
|
return "Unknown";
|
||||||
|
|
||||||
return res->getString( 1 );
|
std::string playerName = res->getString( 1 );
|
||||||
|
updatePlayerName( playerId, playerName );
|
||||||
|
|
||||||
|
return playerName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Core::ServerMgr::updatePlayerName( uint32_t playerId, const std::string & playerNewName )
|
||||||
|
{
|
||||||
|
m_playerNameMapById[ playerId ] = playerNewName;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Core::ServerMgr::loadBNpcTemplates()
|
void Core::ServerMgr::loadBNpcTemplates()
|
||||||
|
|
|
@ -44,7 +44,8 @@ public:
|
||||||
Entity::BNpcTemplatePtr getBNpcTemplate( const std::string& key );
|
Entity::BNpcTemplatePtr getBNpcTemplate( const std::string& key );
|
||||||
Entity::BNpcTemplatePtr getBNpcTemplate( uint32_t id );
|
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:
|
private:
|
||||||
uint16_t m_port;
|
uint16_t m_port;
|
||||||
|
@ -59,6 +60,7 @@ private:
|
||||||
|
|
||||||
std::map< uint32_t, SessionPtr > m_sessionMapById;
|
std::map< uint32_t, SessionPtr > m_sessionMapById;
|
||||||
std::map< std::string, SessionPtr > m_sessionMapByName;
|
std::map< std::string, SessionPtr > m_sessionMapByName;
|
||||||
|
std::map< uint32_t, std::string > m_playerNameMapById;
|
||||||
std::map< uint32_t, uint32_t > m_zones;
|
std::map< uint32_t, uint32_t > m_zones;
|
||||||
std::map< std::string, Entity::BNpcTemplatePtr > m_bNpcTemplateMap;
|
std::map< std::string, Entity::BNpcTemplatePtr > m_bNpcTemplateMap;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue