From 333ec303bd1c16e9f115841688338b92bc8911a2 Mon Sep 17 00:00:00 2001 From: Biscuit Boy Date: Sun, 22 Apr 2018 00:49:32 +1000 Subject: [PATCH 01/31] 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/31] 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/31] 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/31] 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/31] [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 faebcc8290cc79a210085d1c9e75f660b049250d Mon Sep 17 00:00:00 2001 From: Dantestyle Date: Mon, 14 May 2018 04:55:58 +0200 Subject: [PATCH 06/31] ManSea002 now work properly --- src/servers/Scripts/quest/ManSea002.cpp | 25 +- .../quest/subquest/limsa/SubSea001.cpp | 250 ++++++++++++++++++ 2 files changed, 264 insertions(+), 11 deletions(-) create mode 100644 src/servers/Scripts/quest/subquest/limsa/SubSea001.cpp diff --git a/src/servers/Scripts/quest/ManSea002.cpp b/src/servers/Scripts/quest/ManSea002.cpp index 9817969a..e8ae6aec 100644 --- a/src/servers/Scripts/quest/ManSea002.cpp +++ b/src/servers/Scripts/quest/ManSea002.cpp @@ -35,23 +35,26 @@ private: void Scene00000( Entity::Player& player ) { - auto callback = [&]( Entity::Player& player, const Event::SceneResult& result ) + player.playScene(getId(), 0, HIDE_HOTBAR, + [&]( Entity::Player& player, const Event::SceneResult& result) { if( result.param2 == 1 ) // accept quest - Scene00050( player ); - }; - - player.playScene( getId(), 0, HIDE_HOTBAR, 0, 0, callback ); + Scene00001( player ); + } ); } void Scene00001( Entity::Player& player ) { - auto callback = [&]( Entity::Player& player, const Event::SceneResult& result ) + player.playScene( getId(), 1, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, + [&](Entity::Player& player, const Event::SceneResult& result) { + // on quest accept + player.updateQuest(getId(), 1); + player.setQuestUI8CH(getId(), 1); // receive key item - }; - - player.playScene( getId(), 1, NONE, callback ); + //player.forceZoneing(128); // teleport to real limsa + //player.playSceneChain(getId(), 2, NONE, bindScene( &ManSea002::Scene00050 ) ); + } ); } void Scene00002( Entity::Player& player ) @@ -128,12 +131,12 @@ private: { auto callback = [&]( Entity::Player& player, const Event::SceneResult& result ) { - // on quest accept + /*// on quest accept player.updateQuest( getId(), 1 ); player.setQuestUI8CH( getId(), 1 ); // receive key item // teleport to real limsa - player.forceZoneing( 128 ); + player.forceZoneing( 128 );*/ }; player.playScene( getId(), 50, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, 0, 0, callback ); diff --git a/src/servers/Scripts/quest/subquest/limsa/SubSea001.cpp b/src/servers/Scripts/quest/subquest/limsa/SubSea001.cpp new file mode 100644 index 00000000..51dea5cd --- /dev/null +++ b/src/servers/Scripts/quest/subquest/limsa/SubSea001.cpp @@ -0,0 +1,250 @@ +#include