1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-04 17:57:47 +00:00

switch from binary to blobs, fix known array sizes in player obj

This commit is contained in:
NotAdam 2019-07-06 15:00:13 +10:00
parent bd6c2d8531
commit bd1130fe73
5 changed files with 51 additions and 31 deletions

View file

@ -0,0 +1,15 @@
-- Migration generated at 2019/07/06 03:52:54
-- 20190706035254_ConvertFixedSizeDataToBlobs.sql
ALTER TABLE `charainfo`
CHANGE COLUMN `TitleList` `TitleList` BLOB NULL DEFAULT NULL AFTER `ActiveTitle`,
CHANGE COLUMN `Achievement` `Achievement` BLOB NULL DEFAULT NULL AFTER `TitleList`,
CHANGE COLUMN `Aetheryte` `Aetheryte` BLOB NULL DEFAULT NULL AFTER `Achievement`,
CHANGE COLUMN `HowTo` `HowTo` BLOB NULL DEFAULT NULL AFTER `Aetheryte`,
CHANGE COLUMN `Minions` `Minions` BLOB NULL DEFAULT NULL AFTER `HowTo`,
CHANGE COLUMN `Mounts` `Mounts` BLOB NULL DEFAULT NULL AFTER `Minions`,
CHANGE COLUMN `Orchestrion` `Orchestrion` BLOB NULL DEFAULT NULL AFTER `Mounts`,
CHANGE COLUMN `QuestCompleteFlags` `QuestCompleteFlags` BLOB NULL DEFAULT NULL AFTER `ConfigFlags`,
CHANGE COLUMN `QuestTracking` `QuestTracking` BLOB NULL DEFAULT NULL AFTER `OpeningSequence`,
CHANGE COLUMN `Discovery` `Discovery` BLOB NULL DEFAULT NULL AFTER `GrandCompanyRank`,
CHANGE COLUMN `Unlocks` `Unlocks` BLOB NULL DEFAULT NULL AFTER `Pose`;

View file

@ -22,7 +22,8 @@ void Sapphire::Db::ZoneDbConnection::doPrepareStatements()
m_stmts.resize( MAX_STATEMENTS );
/// CHARA
prepareStatement( CHARA_SEL, "SELECT ContentId, Name, Hp, Mp, Tp, Gp, Mode, Mount, InvincibleGM, Voice, "
prepareStatement( CHARA_SEL,
"SELECT ContentId, Name, Hp, Mp, Tp, Gp, Mode, Mount, InvincibleGM, Voice, "
"Customize, ModelMainWeapon, ModelSubWeapon, ModelSystemWeapon, "
"ModelEquip, EmoteModeType, FirstLoginTime, Language, IsNewGame, "
"IsNewAdventurer, TerritoryType, TerritoryId, PosX, PosY, PosZ, PosR, "
@ -33,7 +34,8 @@ void Sapphire::Db::ZoneDbConnection::doPrepareStatements()
"QuestCompleteFlags, OpeningSequence, QuestTracking, GrandCompany, "
"GrandCompanyRank, Discovery, GMRank, EquipDisplayFlags, Unlocks, CFPenaltyUntil, "
"Pose "
"FROM charainfo WHERE CharacterId = ?;", CONNECTION_SYNC );
"FROM charainfo WHERE CharacterId = ?;",
CONNECTION_SYNC );
prepareStatement( CHARA_UP,
@ -47,14 +49,18 @@ void Sapphire::Db::ZoneDbConnection::doPrepareStatements()
"ActiveTitle = ?, TitleList = ?, Achievement = ?, Aetheryte = ?, HowTo = ?, Minions = ?, Mounts = ?, Orchestrion = ?, "
"EquippedMannequin = ?, ConfigFlags = ?, QuestCompleteFlags = ?, OpeningSequence = ?, "
"QuestTracking = ?, GrandCompany = ?, GrandCompanyRank = ?, Discovery = ?, GMRank = ?, EquipDisplayFlags = ?, Unlocks = ?, "
"CFPenaltyUntil = ?, Pose = ? WHERE CharacterId = ?;", CONNECTION_ASYNC );
"CFPenaltyUntil = ?, Pose = ? WHERE CharacterId = ?;",
CONNECTION_ASYNC );
prepareStatement( CHARA_SEL_MINIMAL, "SELECT Name, Customize, ModelMainWeapon, ModelSubWeapon, ModelEquip, TerritoryType, GuardianDeity, "
prepareStatement( CHARA_SEL_MINIMAL,
"SELECT Name, Customize, ModelMainWeapon, ModelSubWeapon, ModelEquip, TerritoryType, GuardianDeity, "
"Class, ContentId, BirthDay, BirthMonth, EquipDisplayFlags "
"FROM charainfo WHERE CharacterId = ?;", CONNECTION_SYNC );
"FROM charainfo WHERE CharacterId = ?;",
CONNECTION_SYNC );
prepareStatement( CHARA_INS, "INSERT INTO charainfo (AccountId, CharacterId, ContentId, Name, Hp, Mp, "
prepareStatement( CHARA_INS,
"INSERT INTO charainfo (AccountId, CharacterId, ContentId, Name, Hp, Mp, "
"Customize, Voice, IsNewGame, TerritoryType, PosX, PosY, PosZ, PosR, ModelEquip, "
"IsNewAdventurer, GuardianDeity, Birthday, BirthMonth, Class, Status, FirstClass, "
"HomePoint, StartTown, Discovery, HowTo, QuestCompleteFlags, Unlocks, QuestTracking, "

View file

@ -152,7 +152,7 @@ namespace Sapphire::Network::Packets
CharaNameReq = 0x0198, // updated 5.0
// nb: see #565 on github
UpdateRetainerItemSalePrice = 0x019D, // updated 5.0
UpdateRetainerItemSalePrice = 0x019F, // updated 5.0
SetLevelSync = 0x1186, // not updated for 4.4, not sure what it is anymore

View file

@ -1036,19 +1036,19 @@ namespace Sapphire::Entity
uint16_t m_activeTitle;
uint8_t m_titleList[48];
uint8_t m_howTo[33];
uint8_t m_howTo[34];
uint8_t m_minions[40];
uint8_t m_mountGuide[17];
uint8_t m_mountGuide[19];
uint8_t m_homePoint;
uint8_t m_startTown;
uint16_t m_townWarpFstFlags;
uint8_t m_questCompleteFlags[476];
uint8_t m_discovery[421];
uint8_t m_discovery[445];
uint32_t m_playTime;
uint16_t m_classArray[26];
uint32_t m_expArray[26];
uint8_t m_aetheryte[17];
uint16_t m_classArray[28];
uint32_t m_expArray[28];
uint8_t m_aetheryte[21];
uint8_t m_unlocks[64];
uint8_t m_orchestrion[40];

View file

@ -48,7 +48,6 @@ namespace Sapphire::Network::Packets::Server
m_data.pose = player.getPose();
memset( &m_data.name[ 0 ], 0, sizeof( m_data.name ) );
strcpy( &m_data.name[ 0 ], player.getName().c_str() );
memcpy( m_data.aetheryte, player.getAetheryteArray(), sizeof( m_data.aetheryte ) );