1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-26 06:27:45 +00:00

Merge pull request #189 from goaaats/work

* Orchestrion + Mount SQL loading/saving
This commit is contained in:
Mordred 2017-12-03 18:13:21 +01:00 committed by GitHub
commit 0a0304d157
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 45 additions and 27 deletions

View file

@ -27,7 +27,7 @@ void Core::Db::CharaDbConnection::doPrepareStatements()
"OTerritoryType, OTerritoryId, OPosX, OPosY, OPosZ, OPosR, GuardianDeity, "
"BirthDay, BirthMonth, Class, Status, TotalPlayTime, FirstClass, HomePoint, "
"FavoritePoint, RestPoint, StartTown, ActiveTitle, TitleList, Achievement, "
"Aetheryte, HowTo, Minions, Mounts, EquippedMannequin, ConfigFlags, "
"Aetheryte, HowTo, Minions, Mounts, Orchestrion, EquippedMannequin, ConfigFlags, "
"QuestCompleteFlags, OpeningSequence, QuestTracking, GrandCompany, "
"GrandCompanyRank, Discovery, GMRank, Unlocks, CFPenaltyUntil "
"FROM charainfo WHERE CharacterId = ?;", CONNECTION_SYNC );
@ -41,7 +41,7 @@ void Core::Db::CharaDbConnection::doPrepareStatements()
"TerritoryType = ?, TerritoryId = ?, PosX = ?, PosY = ?, PosZ = ?, PosR = ?, "
"OTerritoryType = ?, OTerritoryId = ?, OPosX = ?, OPosY = ?, OPosZ = ?, OPosR = ?, "
"Class = ?, Status = ?, TotalPlayTime = ?, HomePoint = ?, FavoritePoint = ?, RestPoint = ?, "
"ActiveTitle = ?, TitleList = ?, Achievement = ?, Aetheryte = ?, HowTo = ?, Minions = ?, Mounts = ?, "
"ActiveTitle = ?, TitleList = ?, Achievement = ?, Aetheryte = ?, HowTo = ?, Minions = ?, Mounts = ?, Orchestrion = ?, "
"EquippedMannequin = ?, ConfigFlags = ?, QuestCompleteFlags = ?, OpeningSequence = ?, "
"QuestTracking = ?, GrandCompany = ?, GrandCompanyRank = ?, Discovery = ?, GMRank = ?, Unlocks = ?, "
"CFPenaltyUntil = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
@ -55,8 +55,8 @@ void Core::Db::CharaDbConnection::doPrepareStatements()
"Customize, Voice, IsNewGame, TerritoryId, PosX, PosY, PosZ, PosR, ModelEquip, "
"IsNewAdventurer, GuardianDeity, Birthday, BirthMonth, Class, Status, FirstClass, "
"HomePoint, StartTown, Discovery, HowTo, QuestCompleteFlags, Unlocks, QuestTracking, "
"Aetheryte, GMRank, UPDATE_DATE ) "
"VALUES ( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,NOW() );",
"Aetheryte, GMRank, Mounts, Orchestrion, UPDATE_DATE ) "
"VALUES ( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,NOW() );",
CONNECTION_SYNC );
prepareStatement( CHARA_UP_NAME, "UPDATE charainfo SET Name = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );

View file

@ -153,6 +153,8 @@ namespace Core {
std::vector< uint8_t > discovery( 411 );
std::vector< uint8_t > questComplete( 200 );
std::vector< uint8_t > unlocks( 64 );
std::vector< uint8_t > mountGuide( 13 );
std::vector< uint8_t > orchestrion( 38 );
std::vector< uint8_t > modelEquip( 40 );
std::vector< uint8_t > questTracking8( 10 );
std::vector< int16_t > questTracking = { -1, -1, -1, -1, -1 };
@ -255,6 +257,8 @@ namespace Core {
stmt->setBinary( 29, questTracking8 );
stmt->setBinary( 30, aetherytes );
stmt->setInt( 31, m_gmRank );
stmt->setBinary( 32, mountGuide );
stmt->setBinary( 33, orchestrion );
g_charaDb.directExecute( stmt );
auto stmtSearchInfo = g_charaDb.getPreparedStatement( Db::CharaDbStatements::CHARA_SEARCHINFO_INS );

View file

@ -1183,6 +1183,11 @@ const uint8_t * Core::Entity::Player::getOrchestrionBitmask() const
return m_orchestrion;
}
const uint8_t * Core::Entity::Player::getMountGuideBitmask() const
{
return m_mountGuide;
}
uint64_t Core::Entity::Player::getContentId() const
{
return m_contentId;

View file

@ -387,6 +387,8 @@ public:
const uint8_t* getUnlockBitmask() const;
/*! return a const pointer to the orchestrion bitmask array */
const uint8_t* getOrchestrionBitmask() const;
/*! return a const pointer to the mount guide bitmask array */
const uint8_t* getMountGuideBitmask() const;
// Spawn handling
@ -574,7 +576,7 @@ private:
uint8_t m_titleList[48];
uint8_t m_howTo[33];
uint8_t m_minions[33];
uint8_t m_mounts[13];
uint8_t m_mountGuide[13];
uint8_t m_homePoint;
uint8_t m_startTown;
uint16_t m_townWarpFstFlags;

View file

@ -152,6 +152,12 @@ bool Core::Entity::Player::load( uint32_t charId, Core::SessionPtr pSession )
auto titleList = res->getBlobVector( "TitleList" );
memcpy( reinterpret_cast< char* >( m_titleList ), titleList.data(), titleList.size() );
auto mountGuide = res->getBlobVector( "Mounts" );
memcpy( reinterpret_cast< char* >( m_mountGuide ), mountGuide.data(), mountGuide.size() );
auto orchestrion = res->getBlobVector( "Orchestrion" );
memcpy( reinterpret_cast< char* >( m_orchestrion ), orchestrion.data(), orchestrion.size() );
auto gcRank = res->getBlobVector( "GrandCompanyRank" );
memcpy( reinterpret_cast< char* >( m_gcRank ), gcRank.data(), gcRank.size() );
@ -296,10 +302,10 @@ void Core::Entity::Player::updateSql()
"TerritoryType 18, TerritoryId 19, PosX 20, PosY 21, PosZ 22, PosR 23, "
"OTerritoryType 24, OTerritoryId 25, OPosX 26, OPosY 27, OPosZ 28, OPosR 29, "
"Class 30, Status 31, TotalPlayTime 32, HomePoint 33, FavoritePoint 34, RestPoint 35, "
"ActiveTitle 36, TitleList 37, Achievement 38, Aetheryte 39, HowTo 40, Minions 41, Mounts 42, "
"EquippedMannequin 43, ConfigFlags 44, QuestCompleteFlags 45, OpeningSequence 46, "
"QuestTracking 47, GrandCompany 48, GrandCompanyRank 49, Discovery 50, GMRank 51, Unlocks 52, "
"CFPenaltyUntil 53"*/
"ActiveTitle 36, TitleList 37, Achievement 38, Aetheryte 39, HowTo 40, Minions 41, Mounts 42, Orchestrion 43, "
"EquippedMannequin 44, ConfigFlags 45, QuestCompleteFlags 46, OpeningSequence 47, "
"QuestTracking 48, GrandCompany 49, GrandCompanyRank 50, Discovery 51, GMRank 52, Unlocks 53, "
"CFPenaltyUntil 54"*/
auto stmt = g_charaDb.getPreparedStatement( Core::Db::CharaDbStatements::CHARA_UP );
stmt->setInt( 1, getHp() );
@ -370,40 +376,44 @@ void Core::Entity::Player::updateSql()
memcpy( minionsVec.data(), m_minions, sizeof( m_minions ) );
stmt->setBinary( 41, minionsVec );
std::vector< uint8_t > mountsVec( sizeof( m_mounts ) );
memcpy( mountsVec.data(), m_mounts, sizeof( m_mounts ) );
std::vector< uint8_t > mountsVec( sizeof( m_mountGuide ) );
memcpy( mountsVec.data(), m_mountGuide, sizeof( m_mountGuide ) );
stmt->setBinary( 42, mountsVec );
stmt->setInt( 43, 0 ); // EquippedMannequin
std::vector< uint8_t > orchestrionVec( sizeof( m_orchestrion ) );
memcpy( orchestrionVec.data(), m_orchestrion, sizeof( m_orchestrion ) );
stmt->setBinary( 42, mountsVec );
stmt->setInt( 44, 0 ); // DisplayFlags
stmt->setInt( 44, 0 ); // EquippedMannequin
stmt->setInt( 45, 0 ); // DisplayFlags
std::vector< uint8_t > questCompleteVec( sizeof( m_questCompleteFlags ) );
memcpy( questCompleteVec.data(), m_questCompleteFlags, sizeof( m_questCompleteFlags ) );
stmt->setBinary( 45, questCompleteVec );
stmt->setBinary( 46, questCompleteVec );
stmt->setInt( 46, m_openingSequence );
stmt->setInt( 47, m_openingSequence );
std::vector< uint8_t > questTrackerVec( sizeof( m_questTracking ) );
memcpy( questTrackerVec.data(), m_questTracking, sizeof( m_questTracking ) );
stmt->setBinary( 47, questTrackerVec );
stmt->setBinary( 48, questTrackerVec );
stmt->setInt( 48, m_gc ); // DisplayFlags
stmt->setInt( 49, m_gc ); // DisplayFlags
stmt->setBinary( 49, { m_gcRank[0], m_gcRank[1], m_gcRank[2] } );
stmt->setBinary( 50, { m_gcRank[0], m_gcRank[1], m_gcRank[2] } );
std::vector< uint8_t > discoveryVec( sizeof( m_discovery ) );
memcpy( discoveryVec.data(), m_discovery, sizeof( m_discovery ) );
stmt->setBinary( 50, discoveryVec );
stmt->setBinary( 51, discoveryVec );
stmt->setInt( 51, m_gmRank );
stmt->setInt( 52, m_gmRank );
std::vector< uint8_t > unlockVec( sizeof( m_unlocks ) );
memcpy( unlockVec.data(), m_unlocks, sizeof( m_unlocks ) );
stmt->setBinary( 52, unlockVec );
stmt->setBinary( 53, unlockVec );
stmt->setInt( 53, m_cfPenaltyUntil );
stmt->setInt( 54, m_cfPenaltyUntil );
stmt->setInt( 54, m_id );
stmt->setInt( 55, m_id );
g_charaDb.execute( stmt );
@ -416,8 +426,6 @@ void Core::Entity::Player::updateSql()
////// Class
updateDbClass();
memset( m_orchestrion, 0, sizeof( m_orchestrion ) );
}
void Core::Entity::Player::updateDbClass() const

View file

@ -64,8 +64,7 @@ private:
memcpy( m_data.orchestrionMask, player->getOrchestrionBitmask(), sizeof( m_data.orchestrionMask ) );
memset( m_data.mountGuideMask, 0xFF, sizeof( m_data.mountGuideMask) );
memset( m_data.fishingGuideMask, 0xFF, sizeof( m_data.fishingGuideMask ) );
memcpy( m_data.mountGuideMask, player->getMountGuideBitmask(), sizeof( m_data.mountGuideMask) );
memcpy( m_data.unlockBitmask, player->getUnlockBitmask(), sizeof( m_data.unlockBitmask ) );