From 05273f521b0ec3436a652b84f30a0af18c0e1e16 Mon Sep 17 00:00:00 2001 From: Rushi <44952533+Skyliegirl33@users.noreply.github.com> Date: Mon, 29 Nov 2021 18:54:16 +0100 Subject: [PATCH 01/12] Fix undeclared types --- deps/datReader/zlib.h | 1 + src/world/Action/ActionLut.h | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/deps/datReader/zlib.h b/deps/datReader/zlib.h index 97c368f2..6d81153e 100644 --- a/deps/datReader/zlib.h +++ b/deps/datReader/zlib.h @@ -1,6 +1,7 @@ #ifndef XIV_UTILS_ZLIB_H #define XIV_UTILS_ZLIB_H +#include #include #include diff --git a/src/world/Action/ActionLut.h b/src/world/Action/ActionLut.h index a7e37d51..46d5bdf5 100644 --- a/src/world/Action/ActionLut.h +++ b/src/world/Action/ActionLut.h @@ -1,5 +1,6 @@ #pragma once +#include #include namespace Sapphire::World::Action @@ -25,4 +26,4 @@ namespace Sapphire::World::Action static Lut m_actionLut; }; -} \ No newline at end of file +} From 8781b3a024abcb1a43798d37dfdae1c7e956060d Mon Sep 17 00:00:00 2001 From: Mordred Date: Tue, 30 Nov 2021 16:27:27 +0100 Subject: [PATCH 02/12] Fixed struct missmatch for emotes --- deps/datReader/Exd/Structs.h | 1 + 1 file changed, 1 insertion(+) diff --git a/deps/datReader/Exd/Structs.h b/deps/datReader/Exd/Structs.h index 878876e5..ac96c764 100644 --- a/deps/datReader/Exd/Structs.h +++ b/deps/datReader/Exd/Structs.h @@ -617,6 +617,7 @@ namespace Component::Excel struct Emote { EmoteTextStruct Text; + uint32_t Unknown; int32_t TimelineID; int32_t TimelineID_Begin; int32_t TimelineID_End; From e845f03ba4d29d12aa0a4e91f2dd972d429ac399 Mon Sep 17 00:00:00 2001 From: Mordred Date: Tue, 30 Nov 2021 16:29:21 +0100 Subject: [PATCH 03/12] Set companion details on spawn --- src/world/Network/PacketWrappers/PlayerSpawnPacket.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/world/Network/PacketWrappers/PlayerSpawnPacket.h b/src/world/Network/PacketWrappers/PlayerSpawnPacket.h index c539575d..f01bd401 100644 --- a/src/world/Network/PacketWrappers/PlayerSpawnPacket.h +++ b/src/world/Network/PacketWrappers/PlayerSpawnPacket.h @@ -78,8 +78,8 @@ namespace Sapphire::Network::Packets::WorldPackets::Server m_data.Title = player.getTitle(); m_data.Voice = player.getVoiceId(); - //m_data.activeMinion = player.getCurrentCompanion(); - //m_data.activeMinion = 0; + m_data.Companion = player.getCurrentCompanion(); + m_data.Mount.Id = player.getCurrentMount(); m_data.OnlineStatus = static_cast< uint8_t >( player.getOnlineStatus() ); @@ -90,7 +90,7 @@ namespace Sapphire::Network::Packets::WorldPackets::Server m_data.ObjType = 4; if( target.getId() == player.getId() ) { - m_data.Index = 0x00; + m_data.Index = 0; } else { From e672e4a51cf3cc54e3eb9c3e7e5dd5985f45094b Mon Sep 17 00:00:00 2001 From: Mordred Date: Tue, 30 Nov 2021 16:29:57 +0100 Subject: [PATCH 04/12] Unify log prints more --- src/world/Territory/Territory.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/world/Territory/Territory.cpp b/src/world/Territory/Territory.cpp index 4c652573..e021b98c 100644 --- a/src/world/Territory/Territory.cpp +++ b/src/world/Territory/Territory.cpp @@ -508,7 +508,7 @@ void Sapphire::Territory::updateSessions( uint64_t tickCount, bool changedWeathe // this session is not linked to this area anymore, remove it from zone session list if( ( !pPlayer->getCurrentTerritory() ) || ( pPlayer->getCurrentTerritory() != shared_from_this() ) ) { - Logger::debug( "removeActor( pPlayer );" ); + Logger::debug( "[{}] removeActor( pPlayer );", pPlayer->getId() ); removeActor( pPlayer ); return; } @@ -733,12 +733,12 @@ void Sapphire::Territory::updateInRangeSet( Entity::GameObjectPtr pActor, CellPt void Sapphire::Territory::onPlayerZoneIn( Entity::Player& player ) { - Logger::debug( "Territory::onEnterTerritory: Territory#{0}|{1}, Entity#{2}", getGuId(), getTerritoryTypeId(), player.getId() ); + Logger::debug( "[{2}] Territory::onEnterTerritory: Territory#{0}|{1}", getGuId(), getTerritoryTypeId(), player.getId() ); } void Sapphire::Territory::onLeaveTerritory( Entity::Player& player ) { - Logger::debug( "Territory::onLeaveTerritory: Territory#{0}|{1}, Entity#{2}", getGuId(), getTerritoryTypeId(), player.getId() ); + Logger::debug( "[{2}] Territory::onLeaveTerritory: Territory#{0}|{1}", getGuId(), getTerritoryTypeId(), player.getId() ); } void Sapphire::Territory::onUpdate( uint64_t tickCount ) From 0f7c27f0a330e2ebd9a46e047afec94331551938 Mon Sep 17 00:00:00 2001 From: Mordred Date: Wed, 1 Dec 2021 00:05:34 +0100 Subject: [PATCH 05/12] No longer send zone packet twice on initial login --- src/world/Network/Handlers/PacketHandlers.cpp | 7 ++++--- src/world/Network/PacketWrappers/PlayerSpawnPacket.h | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/world/Network/Handlers/PacketHandlers.cpp b/src/world/Network/Handlers/PacketHandlers.cpp index c84d56f6..3fde0d16 100644 --- a/src/world/Network/Handlers/PacketHandlers.cpp +++ b/src/world/Network/Handlers/PacketHandlers.cpp @@ -436,12 +436,13 @@ void Sapphire::Network::GameConnection::loginHandler( const Packets::FFXIVARR_PA Entity::Player& player ) { auto& teriMgr = Common::Service< World::Manager::TerritoryMgr >::ref(); - teriMgr.joinWorld( player ); - // init handler means this is a login procedure player.setIsLogin( true ); + teriMgr.joinWorld( player ); - player.sendZonePackets(); + + + //player.sendZonePackets(); } diff --git a/src/world/Network/PacketWrappers/PlayerSpawnPacket.h b/src/world/Network/PacketWrappers/PlayerSpawnPacket.h index f01bd401..084eaae4 100644 --- a/src/world/Network/PacketWrappers/PlayerSpawnPacket.h +++ b/src/world/Network/PacketWrappers/PlayerSpawnPacket.h @@ -128,7 +128,6 @@ namespace Sapphire::Network::Packets::WorldPackets::Server } // m_data.currentMount = player.getCurrentMount(); - // m_data.persistentEmote = player.getPersistentEmote(); m_data.MainTarget = player.getTargetId(); //m_data.type = 1; From 2fa9e2c11a6d556ffe7d3638bb91abcebb3f5a8e Mon Sep 17 00:00:00 2001 From: Mordred Date: Wed, 1 Dec 2021 01:03:36 +0100 Subject: [PATCH 06/12] Fixed persistant emotes --- src/common/Network/PacketDef/Zone/ServerZoneDef.h | 8 +++++--- src/world/Actor/Player.cpp | 11 ++++++----- src/world/Network/Handlers/PacketHandlers.cpp | 10 ++-------- src/world/Network/PacketWrappers/PlayerSpawnPacket.h | 3 ++- 4 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index e5603ccd..2f883670 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -698,14 +698,16 @@ namespace Sapphire::Network::Packets::WorldPackets::Server uint8_t LinkFamily; uint8_t LinkParent; uint8_t PoseEmote; + uint8_t __padding3; + uint16_t Flag; uint8_t __padding2; - uint32_t Flag; + uint8_t __padding4; Common::StatusWork Status[30]; MountStruct Mount; uint8_t Name[32]; uint8_t Customize[26]; - uint8_t __padding3; - uint8_t __padding4; + uint8_t __padding5; + uint8_t __padding6; uint32_t Equipment[10]; float Pos[3]; uint8_t FreeCompanyTag[6]; diff --git a/src/world/Actor/Player.cpp b/src/world/Actor/Player.cpp index ca7eead9..4ad1e8c3 100644 --- a/src/world/Actor/Player.cpp +++ b/src/world/Actor/Player.cpp @@ -998,7 +998,12 @@ void Sapphire::Entity::Player::spawn( Entity::PlayerPtr pTarget ) { Logger::debug( "[{0}] Spawning {1} for {2}", pTarget->getId(), getName(), pTarget->getName() ); - pTarget->queuePacket( std::make_shared< PlayerSpawnPacket >( *this, *pTarget ) ); + auto spawnPacket = std::make_shared< PlayerSpawnPacket >( *this, *pTarget ); + FILE *fp; + fp = fopen( "spawnPacket1.bin", "wb" ); + fwrite( spawnPacket->getData().data(), spawnPacket->getData().size(), 1, fp ); + fclose( fp ); + pTarget->queuePacket( spawnPacket ); } // despawn @@ -1628,10 +1633,6 @@ void Sapphire::Entity::Player::sendZonePackets() queuePacket( contentFinderList ); auto statusPacket = makePlayerSetup( *this ); - /*FILE *fp; - fp = fopen( "statusDump.bin", "wb" ); - fwrite( statusPacket->getData().data(), statusPacket->getData().size(), 1, fp ); - fclose( fp );*/ queuePacket( statusPacket ); diff --git a/src/world/Network/Handlers/PacketHandlers.cpp b/src/world/Network/Handlers/PacketHandlers.cpp index 3fde0d16..7193f96f 100644 --- a/src/world/Network/Handlers/PacketHandlers.cpp +++ b/src/world/Network/Handlers/PacketHandlers.cpp @@ -432,22 +432,16 @@ void Sapphire::Network::GameConnection::newDiscoveryHandler( const Packets::FFXI -void Sapphire::Network::GameConnection::loginHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, - Entity::Player& player ) +void Sapphire::Network::GameConnection::loginHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { auto& teriMgr = Common::Service< World::Manager::TerritoryMgr >::ref(); // init handler means this is a login procedure player.setIsLogin( true ); teriMgr.joinWorld( player ); - - - - //player.sendZonePackets(); } -void Sapphire::Network::GameConnection::getBlacklistHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, - Entity::Player& player ) +void Sapphire::Network::GameConnection::getBlacklistHandler( const Packets::FFXIVARR_PACKET_RAW& inPacket, Entity::Player& player ) { const auto packet = ZoneChannelPacket< Client::FFXIVIpcGetBlacklist >( inPacket ); auto& data = packet.data(); diff --git a/src/world/Network/PacketWrappers/PlayerSpawnPacket.h b/src/world/Network/PacketWrappers/PlayerSpawnPacket.h index 084eaae4..c208222a 100644 --- a/src/world/Network/PacketWrappers/PlayerSpawnPacket.h +++ b/src/world/Network/PacketWrappers/PlayerSpawnPacket.h @@ -42,7 +42,8 @@ namespace Sapphire::Network::Packets::WorldPackets::Server m_data.Lv = player.getLevel(); m_data.GMRank = player.getGmRank(); - m_data.ModeArgs = player.getPose(); + m_data.ModeArgs = player.getPersistentEmote(); + m_data.PoseEmote = player.getPose(); if( player.isDirectorInitialized() ) { From 46809866a63cbf4c51fbdd84349d09ec4eec0628 Mon Sep 17 00:00:00 2001 From: Rushi <44952533+Skyliegirl33@users.noreply.github.com> Date: Wed, 1 Dec 2021 20:41:25 +0100 Subject: [PATCH 07/12] Fix `Item` exd struct --- deps/datReader/Exd/Structs.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/deps/datReader/Exd/Structs.h b/deps/datReader/Exd/Structs.h index 878876e5..41e0a316 100644 --- a/deps/datReader/Exd/Structs.h +++ b/deps/datReader/Exd/Structs.h @@ -65,7 +65,6 @@ namespace Component::Excel int8_t CNT; int8_t GEN; int8_t DEF; - int8_t padding0[2]; }; /* 33331 */ @@ -94,7 +93,7 @@ namespace Component::Excel uint16_t RecastTime; uint16_t Action; uint16_t Salvage; - int16_t BonusValue[6]; + int16_t BonusValue[7]; uint8_t Level; uint8_t EquipLevel; uint8_t EquipPvPRank; @@ -133,7 +132,7 @@ namespace Component::Excel uint8_t ConditionFemale : 1; uint8_t ConditionMale : 1; uint8_t DisableSameAccount : 1; - int8_t padding2[6]; + int8_t padding2[4]; }; /* 35156 */ From 763657c4356fa3bc15f91c3be4338f024d71e4b5 Mon Sep 17 00:00:00 2001 From: Rushi <44952533+Skyliegirl33@users.noreply.github.com> Date: Wed, 1 Dec 2021 20:42:50 +0100 Subject: [PATCH 08/12] Update ManWil002 (Close to Home) --- src/scripts/quest/ManWil002.cpp | 197 +++++++++++++++----------------- 1 file changed, 91 insertions(+), 106 deletions(-) diff --git a/src/scripts/quest/ManWil002.cpp b/src/scripts/quest/ManWil002.cpp index 63f56ca0..31d62137 100644 --- a/src/scripts/quest/ManWil002.cpp +++ b/src/scripts/quest/ManWil002.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include @@ -69,19 +70,19 @@ public: { if( actorId == Actor0 ) { - Scene00000( player ); + Scene00000( quest, player ); } else if( actorId == Actor1 ) { - Scene00003( player ); + Scene00003( quest, player ); } else if( actorId == Actor2 ) { - Scene00004( player ); + Scene00004( quest, player ); } else if( actorId == Actor3 ) { - Scene00008( player ); + Scene00008( quest, player ); } else if( actorId == Aetheryte0 ) { @@ -91,7 +92,7 @@ public: player.sendEventNotice( 0x050002, 0, 1, 0, 0 ); player.registerAetheryte( 2 ); player.learnAction( Common::UnlockEntry::Return ); - Scene00001( player ); + Scene00001( quest, player ); }, nullptr, getId() ); } @@ -99,7 +100,7 @@ public: private: - void checkQuestCompletion( Entity::Player& player, uint32_t varIdx ) + void checkQuestCompletion( World::Quest& quest, Entity::Player& player, uint32_t varIdx ) { if( varIdx == 1 ) { @@ -114,141 +115,125 @@ private: player.sendEventNotice( getId(), 0, 0, 0, 0 ); } - auto pQuest = player.getQuest( getId() ); - if( !pQuest ) - return; - - auto QUEST_VAR_ATTUNE = pQuest->getUI8AL(); - auto QUEST_VAR_CLASS = pQuest->getUI8BH(); - auto QUEST_VAR_TRADE = pQuest->getUI8BL(); + auto QUEST_VAR_ATTUNE = quest.getUI8AL(); + auto QUEST_VAR_CLASS = quest.getUI8BH(); + auto QUEST_VAR_TRADE = quest.getUI8BL(); if( QUEST_VAR_ATTUNE == 1 && QUEST_VAR_CLASS == 1 && QUEST_VAR_TRADE == 1 ) { - pQuest->setSeq( SeqFinish ); + quest.setSeq( SeqFinish ); } } - void Scene00000( Entity::Player& player ) + void Scene00000( World::Quest& quest, Entity::Player& player ) { - eventMgr().playScene( player, getId(), 0, HIDE_HOTBAR, - [ & ]( Entity::Player& player, const Event::SceneResult& result ) - { - if( result.getResult( 0 ) == 1 ) // accept quest - { - Scene00050( player ); - } - } ); + eventMgr().playQuestScene( player, getId(), 0, HIDE_HOTBAR, bindSceneReturn( &ManWil002::Scene00000Return ) ); } - void Scene00001( Entity::Player& player ) + void Scene00000Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) { - eventMgr().playScene( player, getId(), 1, HIDE_HOTBAR, - [ & ]( Entity::Player& player, const Event::SceneResult& result ) - { - Scene00002( player ); - } ); + if( result.getResult( 0 ) == 1 ) + { + Scene00050( quest, player ); + } } - void Scene00002( Entity::Player& player ) + void Scene00001( World::Quest& quest, Entity::Player& player ) { - eventMgr().playScene( player, getId(), 2, SET_EOBJ_BASE | HIDE_HOTBAR | INVIS_EOBJ, - [ & ]( Entity::Player& player, const Event::SceneResult& result ) - { - auto pQuest = player.getQuest( getId() ); - if( !pQuest ) - return; - pQuest->setUI8BL( 1 ); - checkQuestCompletion( player, 0 ); - } ); + eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &ManWil002::Scene00001Return ) ); } - void Scene00003( Entity::Player& player ) + void Scene00001Return ( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) { - eventMgr().playScene( player, getId(), 3, HIDE_HOTBAR, - [ & ]( Entity::Player& player, const Event::SceneResult& result ) - { - auto pQuest = player.getQuest( getId() ); - if( !pQuest ) - return; - pQuest->setUI8AL( 1 ); - checkQuestCompletion( player, 1 ); - } ); + Scene00002( quest, player ); } - void Scene00004( Entity::Player& player ) + void Scene00002( World::Quest& quest, Entity::Player& player ) { - eventMgr().playScene( player, getId(), 4, HIDE_HOTBAR, - [ & ]( Entity::Player& player, const Event::SceneResult& result ) - { - if( result.getResult( 0 ) == 1 ) - { - Scene00005( player ); - } - else - return; - } ); + eventMgr().playQuestScene( player, getId(), 2, SET_EOBJ_BASE | HIDE_HOTBAR | INVIS_EOBJ, bindSceneReturn( &ManWil002::Scene00002Return ) ); } - void Scene00005( Entity::Player& player ) + void Scene00002Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) { - eventMgr().playScene( player, getId(), 5, SET_EOBJ_BASE | HIDE_HOTBAR | INVIS_EOBJ, - [ & ]( Entity::Player& player, const Event::SceneResult& result ) - { - auto pQuest = player.getQuest( getId() ); - if( !pQuest ) - return; - pQuest->setUI8CH( 0 ); - pQuest->setUI8BH( 1 ); - checkQuestCompletion( player, 2 ); - } ); + quest.setUI8BL( 1 ); + checkQuestCompletion( quest, player, 0 ); } - void Scene00006( Entity::Player& player ) + void Scene00003( World::Quest& quest, Entity::Player& player ) { - eventMgr().playScene( player, getId(), 6, HIDE_HOTBAR, - [ & ]( Entity::Player& player, const Event::SceneResult& result ) - { - } ); + eventMgr().playQuestScene( player, getId(), 3, HIDE_HOTBAR, bindSceneReturn( &ManWil002::Scene00003Return ) ); } - void Scene00007( Entity::Player& player ) + void Scene00003Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) { - eventMgr().playScene( player, getId(), 7, HIDE_HOTBAR, - [ & ]( Entity::Player& player, const Event::SceneResult& result ) - { - } ); + quest.setUI8AL( 1 ); + checkQuestCompletion( quest, player, 1 ); } - void Scene00008( Entity::Player& player ) + void Scene00004( World::Quest& quest, Entity::Player& player ) { - eventMgr().playScene( player, getId(), 8, SET_EOBJ_BASE | HIDE_HOTBAR | INVIS_EOBJ, - [ & ]( Entity::Player& player, const Event::SceneResult& result ) - { - if( result.getResult( 0 ) == 1 ) - { - if( player.giveQuestRewards( getId(), 0 ) ) - { - player.finishQuest( getId() ); - } - } - } ); + eventMgr().playQuestScene( player, getId(), 4, HIDE_HOTBAR, bindSceneReturn( &ManWil002::Scene00004Return ) ); } - void Scene00050( Entity::Player& player ) + void Scene00004Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) { - eventMgr().playScene( player, getId(), 50, FADE_OUT | CONDITION_CUTSCENE | HIDE_UI, - [ & ]( Entity::Player& player, const Event::SceneResult& result ) - { - auto pQuest = player.getQuest( getId() ); - if( !pQuest ) - return; - // on quest accept - pQuest->setSeq( Seq1 ); - pQuest->setUI8CH( 1 ); // receive key item + if( result.getResult( 0 ) == 1 ) + { + Scene00005( quest, player ); + } + } - // teleport to real ul'dah - player.forceZoneing( 130 ); - } ); + void Scene00005( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 5, SET_EOBJ_BASE | HIDE_HOTBAR | INVIS_EOBJ, bindSceneReturn( &ManWil002::Scene00005Return ) ); + } + + void Scene00005Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + quest.setUI8CH( 0 ); + quest.setUI8BH( 1 ); + checkQuestCompletion( quest, player, 2 ); + } + + void Scene00006( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 6, HIDE_HOTBAR ); + } + + void Scene00007( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 7, HIDE_HOTBAR ); + } + + void Scene00008( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 8, SET_EOBJ_BASE | HIDE_HOTBAR | INVIS_EOBJ, bindSceneReturn( &ManWil002::Scene00008Return ) ); + } + + void Scene00008Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + if( result.getResult( 0 ) == 1 ) + { + if( player.giveQuestRewards( getId(), 0 ) ) + { + player.finishQuest( getId() ); + } + } + } + + void Scene00050( World::Quest& quest, Entity::Player& player ) + { + eventMgr().playQuestScene( player, getId(), 50, HIDE_HOTBAR, bindSceneReturn( &ManWil002::Scene00050Return ) ); + } + + void Scene00050Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + { + // On quest accept + quest.setSeq( Seq1 ); + quest.setUI8CH( 1 ); // Receive key item + + // Teleport to real ul'dah + player.forceZoneing( 130 ); } }; From 8b9339004d6085ddad8a0e3d949dc15c53334fe9 Mon Sep 17 00:00:00 2001 From: Rushi <44952533+Skyliegirl33@users.noreply.github.com> Date: Wed, 1 Dec 2021 20:43:20 +0100 Subject: [PATCH 09/12] Remove duplicate header inclusion --- src/world/Manager/ShopMgr.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/world/Manager/ShopMgr.cpp b/src/world/Manager/ShopMgr.cpp index a9e7b034..9c2610db 100644 --- a/src/world/Manager/ShopMgr.cpp +++ b/src/world/Manager/ShopMgr.cpp @@ -5,7 +5,6 @@ #include #include #include -#include using namespace Sapphire; From eec317c35d398e1d364528d8ab391fe916164c66 Mon Sep 17 00:00:00 2001 From: Rushi <44952533+Skyliegirl33@users.noreply.github.com> Date: Wed, 1 Dec 2021 21:37:00 +0100 Subject: [PATCH 10/12] Get bit fields in correct order --- src/world/Quest/Quest.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/world/Quest/Quest.cpp b/src/world/Quest/Quest.cpp index aad86b8e..2c012957 100644 --- a/src/world/Quest/Quest.cpp +++ b/src/world/Quest/Quest.cpp @@ -19,32 +19,38 @@ uint16_t Sapphire::World::Quest::getId() const bool Sapphire::World::Quest::getBitFlag8( uint8_t index ) { - return m_data.a.BitFlag8 & ( 1 << index ); + uint8_t realIdx = 8 - index; + return m_data.a.BitFlag8 & ( 1 << realIdx ); } bool Sapphire::World::Quest::getBitFlag16( uint8_t index ) { - return m_data.a.BitFlag16 & ( 1 << index ); + uint8_t realIdx = 8 - index; + return m_data.a.BitFlag16 & ( 1 << realIdx ); } bool Sapphire::World::Quest::getBitFlag24( uint8_t index ) { - return m_data.a.BitFlag24 & ( 1 << index ); + uint8_t realIdx = 8 - index; + return m_data.a.BitFlag24 & ( 1 << realIdx ); } bool Sapphire::World::Quest::getBitFlag32( uint8_t index ) { - return m_data.a.BitFlag32 & ( 1 << index ); + uint8_t realIdx = 8 - index; + return m_data.a.BitFlag32 & ( 1 << realIdx ); } bool Sapphire::World::Quest::getBitFlag40( uint8_t index ) { - return m_data.a.BitFlag40 & ( 1 << index ); + uint8_t realIdx = 8 - index; + return m_data.a.BitFlag40 & ( 1 << realIdx ); } bool Sapphire::World::Quest::getBitFlag48( uint8_t index ) { - return m_data.a.BitFlag48 & ( 1 << index ); + uint8_t realIdx = 8 - index; + return m_data.a.BitFlag48 & ( 1 << realIdx ); } uint8_t Sapphire::World::Quest::getUI8A() const From 9da566f19bb490b76b38b30f99fc2babd0867879 Mon Sep 17 00:00:00 2001 From: Rushi <44952533+Skyliegirl33@users.noreply.github.com> Date: Wed, 1 Dec 2021 21:42:54 +0100 Subject: [PATCH 11/12] Fix formatting and remove unnecessary header --- src/scripts/quest/ManWil002.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/scripts/quest/ManWil002.cpp b/src/scripts/quest/ManWil002.cpp index 31d62137..9f07d245 100644 --- a/src/scripts/quest/ManWil002.cpp +++ b/src/scripts/quest/ManWil002.cpp @@ -1,6 +1,5 @@ #include #include -#include #include #include @@ -143,7 +142,7 @@ private: eventMgr().playQuestScene( player, getId(), 1, HIDE_HOTBAR, bindSceneReturn( &ManWil002::Scene00001Return ) ); } - void Scene00001Return ( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) + void Scene00001Return( World::Quest& quest, Entity::Player& player, const Event::SceneResult& result ) { Scene00002( quest, player ); } From 6326991494726454be72acb3daf8213ff1e7e845 Mon Sep 17 00:00:00 2001 From: Mordred Date: Thu, 2 Dec 2021 00:08:33 +0100 Subject: [PATCH 12/12] Fixed inventory and gil --- src/world/Actor/PlayerInventory.cpp | 2 +- src/world/WorldServer.cpp | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/world/Actor/PlayerInventory.cpp b/src/world/Actor/PlayerInventory.cpp index f66a8fea..fb830971 100644 --- a/src/world/Actor/PlayerInventory.cpp +++ b/src/world/Actor/PlayerInventory.cpp @@ -522,7 +522,7 @@ void Sapphire::Entity::Player::writeInventory( InventoryType type ) query += "container_" + std::to_string( i ) + " = " + std::to_string( currItem ? currItem->getUId() : 0 ); } - query += " WHERE CharacterId = " + std::to_string( getId() ); + query += " WHERE CharacterId = " + std::to_string( getCharacterId() ); if( storage->isMultiStorage() ) query += " AND storageId = " + std::to_string( static_cast< uint16_t >( type ) ); diff --git a/src/world/WorldServer.cpp b/src/world/WorldServer.cpp index b7a9d310..d46ef801 100644 --- a/src/world/WorldServer.cpp +++ b/src/world/WorldServer.cpp @@ -611,8 +611,10 @@ Sapphire::Entity::PlayerPtr Sapphire::World::WorldServer::syncPlayer( uint64_t c // get db last write auto dbSync = pPlayer->getLastDBWrite(); + // db was updated and we lost track of it - update - if( dbSync != lastCacheSync ) + // @todo for now, always reload the player on login. + //if( dbSync != lastCacheSync ) { // clear current maps m_playerMapById[ pPlayer->getId() ] = nullptr;