From 333ec303bd1c16e9f115841688338b92bc8911a2 Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Sun, 22 Apr 2018 00:49:32 +1000 Subject: [PATCH 01/11] Fixed making new zones --- src/servers/sapphire_zone/Zone/TerritoryMgr.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp index b6ee10f4..8e5cee2a 100644 --- a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp +++ b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp @@ -161,8 +161,9 @@ Core::ZonePtr Core::TerritoryMgr::createTerritoryInstance( uint32_t territoryTyp auto pZone = make_Zone( territoryTypeId, getNextInstanceId(), pTeri->name, pPlaceName->name ); pZone->init(); - m_territoryInstanceMap[pZone->getTerritoryId()][pZone->getGuId()] = pZone; m_instanceIdToZonePtrMap[pZone->getGuId()] = pZone; + m_territoryInstanceMap[pZone->getTerritoryId()][pZone->getGuId()] = pZone; + m_zoneSet.insert( { pZone } ); return pZone; } From a9c3f6794473f8fa2f8cab5527baacc71c863b30 Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Sun, 22 Apr 2018 00:50:04 +1000 Subject: [PATCH 02/11] Added Zone GuId to gm teri_info and fixed spacing --- .../sapphire_zone/Network/Handlers/GMCommandHandlers.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp b/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp index 7f1d99d0..9ceeebef 100644 --- a/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp @@ -467,10 +467,11 @@ void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPac auto pCurrentZone = player.getCurrentZone(); player.sendNotice( "ZoneId: " + std::to_string( player.getZoneId() ) + "\nName: " + pCurrentZone->getName() + "\nInternalName: " + - pCurrentZone->getInternalName() + "\nPopCount: " + + pCurrentZone->getInternalName() + "\nGuId: " + + std::to_string( pCurrentZone->getGuId() ) + "\nPopCount: " + std::to_string( pCurrentZone->getPopCount() ) + - "\nCurrentWeather:" + std::to_string( static_cast< uint8_t >( pCurrentZone->getCurrentWeather() ) ) + - "\nNextWeather:" + std::to_string( static_cast< uint8_t >( pCurrentZone->getNextWeather() ) ) ); + "\nCurrentWeather: " + std::to_string( static_cast< uint8_t >( pCurrentZone->getCurrentWeather() ) ) + + "\nNextWeather: " + std::to_string( static_cast< uint8_t >( pCurrentZone->getNextWeather() ) ) ); break; } case GmCommand::Jump: From c38ab3a445627110996e85f8475e0197f5715911 Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Sun, 22 Apr 2018 01:13:37 +1000 Subject: [PATCH 03/11] Now erase zone from the set and removed count like talked about --- src/servers/sapphire_zone/Zone/TerritoryMgr.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp index 8e5cee2a..5083d6b8 100644 --- a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp +++ b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp @@ -206,8 +206,8 @@ bool Core::TerritoryMgr::removeTerritoryInstance( uint32_t instanceId ) m_instanceIdToZonePtrMap.erase( pZone->getGuId() ); - if( m_instanceZoneSet.count( pZone ) ) - m_instanceZoneSet.erase( pZone ); + m_instanceZoneSet.erase( pZone ); + m_zoneSet.erase( pZone ); if( isInstanceContentTerritory( pZone->getTerritoryId() ) ) { From ff6eeef68aacf5b83fb6d4c85b05f69256caa0f9 Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Sun, 22 Apr 2018 18:21:22 +1000 Subject: [PATCH 04/11] GM Raise uses the new zoneinpacket system --- .../sapphire_zone/Network/Handlers/GMCommandHandlers.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp b/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp index 9ceeebef..2c88206e 100644 --- a/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp @@ -538,10 +538,8 @@ void Core::Network::GameConnection::gm2Handler( const Packets::GamePacket& inPac targetPlayer->resetHp(); targetPlayer->resetMp(); targetPlayer->setStatus( Entity::Chara::ActorStatus::Idle ); + targetPlayer->sendZoneInPackets( 0x01, 0x01, 0, 113, true ); - targetPlayer->sendToInRangeSet( ActorControlPacket143( player.getId(), ZoneIn, 0x01, 0x01, 0, 113 ), true ); - targetPlayer->sendToInRangeSet( ActorControlPacket142( player.getId(), SetStatus, - static_cast< uint8_t >( Entity::Chara::ActorStatus::Idle ) ), true ); player.sendNotice( "Raised " + targetPlayer->getName() ); break; } From 990a8e231f5ece3405b5c59f3067633ee8997eee Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Sun, 22 Apr 2018 18:22:45 +1000 Subject: [PATCH 05/11] [GM] chat now looks for the onlinestatus instead --- .../sapphire_zone/Network/Handlers/PacketHandlers.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp b/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp index 76fb6a99..70c4c86b 100644 --- a/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp @@ -515,7 +515,7 @@ void Core::Network::GameConnection::chatHandler( const Packets::GamePacket& inPa { case ChatType::Say: { - if (player.getGmRank() > 0) + if (player.getOnlineStatus() == OnlineStatus::GameMaster || player.getOnlineStatus() == OnlineStatus::GameMaster1 || player.getOnlineStatus() == OnlineStatus::GameMaster2 ) chatPacket.data().chatType = ChatType::GMSay; player.getCurrentZone()->queueOutPacketForRange( player, 50, chatPacket ); @@ -523,7 +523,7 @@ void Core::Network::GameConnection::chatHandler( const Packets::GamePacket& inPa } case ChatType::Yell: { - if( player.getGmRank() > 0 ) + if( player.getOnlineStatus() == OnlineStatus::GameMaster || player.getOnlineStatus() == OnlineStatus::GameMaster1 || player.getOnlineStatus() == OnlineStatus::GameMaster2 ) chatPacket.data().chatType = ChatType::GMYell; player.getCurrentZone()->queueOutPacketForRange( player, 6000, chatPacket ); @@ -531,7 +531,7 @@ void Core::Network::GameConnection::chatHandler( const Packets::GamePacket& inPa } case ChatType::Shout: { - if( player.getGmRank() > 0 ) + if( player.getOnlineStatus() == OnlineStatus::GameMaster || player.getOnlineStatus() == OnlineStatus::GameMaster1 || player.getOnlineStatus() == OnlineStatus::GameMaster2 ) chatPacket.data().chatType = ChatType::GMShout; player.getCurrentZone()->queueOutPacketForRange( player, 6000, chatPacket ); From 1172861d4d0d7606ec912227d80b4f6b8d21a023 Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Sun, 1 Jul 2018 21:31:26 +1000 Subject: [PATCH 06/11] label now comes before getter in //gm teri --- .../Network/Handlers/GMCommandHandlers.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp b/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp index 2c88206e..22fc41b9 100644 --- a/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp @@ -465,11 +465,11 @@ void Core::Network::GameConnection::gm1Handler( const Packets::GamePacket& inPac case GmCommand::TeriInfo: { auto pCurrentZone = player.getCurrentZone(); - player.sendNotice( "ZoneId: " + std::to_string( player.getZoneId() ) + "\nName: " + - pCurrentZone->getName() + "\nInternalName: " + - pCurrentZone->getInternalName() + "\nGuId: " + - std::to_string( pCurrentZone->getGuId() ) + "\nPopCount: " + - std::to_string( pCurrentZone->getPopCount() ) + + player.sendNotice( "ZoneId: " + std::to_string( player.getZoneId() ) + + "\nName: " + pCurrentZone->getName() + + "\nInternalName: " + pCurrentZone->getInternalName() + + "\nGuId: " + std::to_string( pCurrentZone->getGuId() ) + + "\nPopCount: " + std::to_string( pCurrentZone->getPopCount() ) + "\nCurrentWeather: " + std::to_string( static_cast< uint8_t >( pCurrentZone->getCurrentWeather() ) ) + "\nNextWeather: " + std::to_string( static_cast< uint8_t >( pCurrentZone->getNextWeather() ) ) ); break; From 54be80a26b531117ab59aa68ffaf34e5dd8beeeb Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Sun, 1 Jul 2018 21:31:49 +1000 Subject: [PATCH 07/11] add isActingAsGm in Player --- src/servers/sapphire_zone/Actor/Player.cpp | 5 +++++ src/servers/sapphire_zone/Actor/Player.h | 2 ++ 2 files changed, 7 insertions(+) diff --git a/src/servers/sapphire_zone/Actor/Player.cpp b/src/servers/sapphire_zone/Actor/Player.cpp index 1e72fcb3..57bdc6f3 100644 --- a/src/servers/sapphire_zone/Actor/Player.cpp +++ b/src/servers/sapphire_zone/Actor/Player.cpp @@ -142,6 +142,11 @@ void Core::Entity::Player::setGmInvis( bool invis ) m_gmInvis = invis; } +const bool Core::Entity::Player::isActingAsGm() +{ + return getOnlineStatus() == OnlineStatus::GameMaster || getOnlineStatus() == OnlineStatus::GameMaster1 || getOnlineStatus() == OnlineStatus::GameMaster2; +} + uint8_t Core::Entity::Player::getMode() const { return m_mode; diff --git a/src/servers/sapphire_zone/Actor/Player.h b/src/servers/sapphire_zone/Actor/Player.h index 7bb5b8d0..8a6be745 100644 --- a/src/servers/sapphire_zone/Actor/Player.h +++ b/src/servers/sapphire_zone/Actor/Player.h @@ -551,6 +551,8 @@ public: bool getGmInvis() const; void setGmInvis( bool invis ); + const bool isActingAsGm(); + uint8_t getMode() const; void setMode( uint8_t mode ); From 3daeffbb1167cb865009eb949b61fc28e6eae12c Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Sun, 1 Jul 2018 21:33:37 +1000 Subject: [PATCH 08/11] change [GM] chat to isActingAsGm instead of directly checking Status --- .../sapphire_zone/Network/Handlers/PacketHandlers.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp b/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp index 70c4c86b..e28f4195 100644 --- a/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp @@ -515,7 +515,7 @@ void Core::Network::GameConnection::chatHandler( const Packets::GamePacket& inPa { case ChatType::Say: { - if (player.getOnlineStatus() == OnlineStatus::GameMaster || player.getOnlineStatus() == OnlineStatus::GameMaster1 || player.getOnlineStatus() == OnlineStatus::GameMaster2 ) + if ( player.isActingAsGm() ) chatPacket.data().chatType = ChatType::GMSay; player.getCurrentZone()->queueOutPacketForRange( player, 50, chatPacket ); @@ -523,7 +523,7 @@ void Core::Network::GameConnection::chatHandler( const Packets::GamePacket& inPa } case ChatType::Yell: { - if( player.getOnlineStatus() == OnlineStatus::GameMaster || player.getOnlineStatus() == OnlineStatus::GameMaster1 || player.getOnlineStatus() == OnlineStatus::GameMaster2 ) + if( player.isActingAsGm() ) chatPacket.data().chatType = ChatType::GMYell; player.getCurrentZone()->queueOutPacketForRange( player, 6000, chatPacket ); @@ -531,7 +531,7 @@ void Core::Network::GameConnection::chatHandler( const Packets::GamePacket& inPa } case ChatType::Shout: { - if( player.getOnlineStatus() == OnlineStatus::GameMaster || player.getOnlineStatus() == OnlineStatus::GameMaster1 || player.getOnlineStatus() == OnlineStatus::GameMaster2 ) + if( player.isActingAsGm() ) chatPacket.data().chatType = ChatType::GMShout; player.getCurrentZone()->queueOutPacketForRange( player, 6000, chatPacket ); From 7ee18f713fda5d3b10f452c0211e9658d3ed619d Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Sun, 1 Jul 2018 21:36:35 +1000 Subject: [PATCH 09/11] Rename m_territoryInstanceMap to m_territoryIdToInstanceGuidMap --- src/servers/sapphire_zone/Zone/TerritoryMgr.cpp | 10 +++++----- src/servers/sapphire_zone/Zone/TerritoryMgr.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp index 5083d6b8..6ec35837 100644 --- a/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp +++ b/src/servers/sapphire_zone/Zone/TerritoryMgr.cpp @@ -132,7 +132,7 @@ bool Core::TerritoryMgr::createDefaultTerritories() InstanceIdToZonePtrMap instanceMap; instanceMap[guid] = pZone; m_instanceIdToZonePtrMap[guid] = pZone; - m_territoryInstanceMap[territoryId] = instanceMap; + m_territoryIdToInstanceGuidMap[territoryId] = instanceMap; m_zoneSet.insert( { pZone } ); } @@ -162,7 +162,7 @@ Core::ZonePtr Core::TerritoryMgr::createTerritoryInstance( uint32_t territoryTyp pZone->init(); m_instanceIdToZonePtrMap[pZone->getGuId()] = pZone; - m_territoryInstanceMap[pZone->getTerritoryId()][pZone->getGuId()] = pZone; + m_territoryIdToInstanceGuidMap[pZone->getTerritoryId()][pZone->getGuId()] = pZone; m_zoneSet.insert( { pZone } ); return pZone; @@ -215,7 +215,7 @@ bool Core::TerritoryMgr::removeTerritoryInstance( uint32_t instanceId ) m_instanceContentToInstanceMap[instance->getInstanceContentId()].erase( pZone->getGuId() ); } else - m_territoryInstanceMap[pZone->getTerritoryId()].erase( pZone->getGuId() ); + m_territoryIdToInstanceGuidMap[pZone->getTerritoryId()].erase( pZone->getGuId() ); return true; @@ -276,8 +276,8 @@ Core::ZonePositionPtr Core::TerritoryMgr::getTerritoryPosition( uint32_t territo Core::ZonePtr Core::TerritoryMgr::getZoneByTerriId( uint32_t territoryId ) const { - auto zoneMap = m_territoryInstanceMap.find( territoryId ); - if( zoneMap == m_territoryInstanceMap.end() ) + auto zoneMap = m_territoryIdToInstanceGuidMap.find( territoryId ); + if( zoneMap == m_territoryIdToInstanceGuidMap.end() ) return nullptr; // TODO: actually select the proper one diff --git a/src/servers/sapphire_zone/Zone/TerritoryMgr.h b/src/servers/sapphire_zone/Zone/TerritoryMgr.h index c4602e5e..32d5532d 100644 --- a/src/servers/sapphire_zone/Zone/TerritoryMgr.h +++ b/src/servers/sapphire_zone/Zone/TerritoryMgr.h @@ -135,7 +135,7 @@ namespace Core TerritoryTypeDetailCache m_territoryTypeDetailCacheMap; /*! map holding actual instances of default territories */ - TerritoryIdToInstanceMap m_territoryInstanceMap; + TerritoryIdToInstanceMap m_territoryIdToInstanceGuidMap; /*! map holding actual instances of InstanceContent */ InstanceContentIdToInstanceMap m_instanceContentToInstanceMap; From 667ab110b98239de779bec942ea1da550c7a1434 Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Sun, 1 Jul 2018 21:43:50 +1000 Subject: [PATCH 10/11] Update isActingAsGm so we don't call getOnlineStatus 3 times --- src/servers/sapphire_zone/Actor/Player.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/servers/sapphire_zone/Actor/Player.cpp b/src/servers/sapphire_zone/Actor/Player.cpp index 57bdc6f3..e1f7cbfb 100644 --- a/src/servers/sapphire_zone/Actor/Player.cpp +++ b/src/servers/sapphire_zone/Actor/Player.cpp @@ -144,7 +144,8 @@ void Core::Entity::Player::setGmInvis( bool invis ) const bool Core::Entity::Player::isActingAsGm() { - return getOnlineStatus() == OnlineStatus::GameMaster || getOnlineStatus() == OnlineStatus::GameMaster1 || getOnlineStatus() == OnlineStatus::GameMaster2; + auto status = getOnlineStatus(); + return status == OnlineStatus::GameMaster || status == OnlineStatus::GameMaster1 || status == OnlineStatus::GameMaster2; } uint8_t Core::Entity::Player::getMode() const From 062566f8481eb62724b55c1c6a9083430899d0eb Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Mon, 2 Jul 2018 07:31:23 +1000 Subject: [PATCH 11/11] change isActingAsGm const location and add const to getOnlineStatus --- src/servers/sapphire_zone/Actor/Player.cpp | 4 ++-- src/servers/sapphire_zone/Actor/Player.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/servers/sapphire_zone/Actor/Player.cpp b/src/servers/sapphire_zone/Actor/Player.cpp index e1f7cbfb..97936ada 100644 --- a/src/servers/sapphire_zone/Actor/Player.cpp +++ b/src/servers/sapphire_zone/Actor/Player.cpp @@ -142,7 +142,7 @@ void Core::Entity::Player::setGmInvis( bool invis ) m_gmInvis = invis; } -const bool Core::Entity::Player::isActingAsGm() +bool Core::Entity::Player::isActingAsGm() const { auto status = getOnlineStatus(); return status == OnlineStatus::GameMaster || status == OnlineStatus::GameMaster1 || status == OnlineStatus::GameMaster2; @@ -173,7 +173,7 @@ bool Core::Entity::Player::isMarkedForRemoval() const return m_markedForRemoval; } -Core::Common::OnlineStatus Core::Entity::Player::getOnlineStatus() +Core::Common::OnlineStatus Core::Entity::Player::getOnlineStatus() const { auto pExdData = g_fw.get< Data::ExdDataGenerated >(); if( !pExdData ) diff --git a/src/servers/sapphire_zone/Actor/Player.h b/src/servers/sapphire_zone/Actor/Player.h index 8a6be745..d7ec1496 100644 --- a/src/servers/sapphire_zone/Actor/Player.h +++ b/src/servers/sapphire_zone/Actor/Player.h @@ -325,7 +325,7 @@ public: /*! sets players combat state */ void setInCombat( bool mode ); /*! return current online status depending on current state / activity */ - Common::OnlineStatus getOnlineStatus(); + Common::OnlineStatus getOnlineStatus() const; /*! sets the players zone, initiating a zoning process */ void setZone( uint32_t zoneId ); /*! sets the players instance & initiates zoning process */ @@ -551,7 +551,7 @@ public: bool getGmInvis() const; void setGmInvis( bool invis ); - const bool isActingAsGm(); + bool isActingAsGm() const; uint8_t getMode() const; void setMode( uint8_t mode );