diff --git a/bin/config/settings_rest.xml b/bin/config/settings_rest.xml index e3059921..ddadaf67 100644 --- a/bin/config/settings_rest.xml +++ b/bin/config/settings_rest.xml @@ -6,7 +6,7 @@ 127.0.0.1 - H:\\SteamLibrary\\steamapps\\common\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack\\ffxiv + C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack\\ffxiv 127.0.0.1 diff --git a/bin/config/settings_zone.xml b/bin/config/settings_zone.xml index a16b685d..f50c18ce 100644 --- a/bin/config/settings_zone.xml +++ b/bin/config/settings_zone.xml @@ -5,7 +5,7 @@ 127.0.0.1 - H:\\SteamLibrary\\steamapps\\common\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack\\ffxiv + C:\\SquareEnix\\FINAL FANTASY XIV - A Realm Reborn\\game\\sqpack\\ffxiv diff --git a/sql/update.sql b/sql/update.sql index a2a9c38e..dee39387 100644 --- a/sql/update.sql +++ b/sql/update.sql @@ -42,3 +42,7 @@ MODIFY COLUMN UPDATE_DATE DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURR ALTER TABLE charainfo ADD `Orchestrion` binary(38) DEFAULT NULL AFTER `Mounts`; + +ALTER TABLE `charainfo` CHANGE `Mounts` `Mounts` BINARY(14) NULL DEFAULT NULL; +ALTER TABLE `charainfo` CHANGE `Orchestrion` `Orchestrion` BINARY(40) NULL DEFAULT NULL; +ALTER TABLE `charainfo` CHANGE `Minions` `Minions` BINARY(35) NULL DEFAULT NULL; diff --git a/src/servers/Server_Common/Network/PacketDef/Zone/ServerZoneDef.h b/src/servers/Server_Common/Network/PacketDef/Zone/ServerZoneDef.h index 6df1e762..d70120b7 100644 --- a/src/servers/Server_Common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/servers/Server_Common/Network/PacketDef/Zone/ServerZoneDef.h @@ -678,12 +678,12 @@ struct FFXIVIpcInitZone : FFXIVIpcBasePacket struct FFXIVIpcInitUI : FFXIVIpcBasePacket { uint64_t contentId; - uint32_t unknown_8; - uint32_t unknown_9; + uint32_t unknown8; + uint32_t unknownC; uint32_t charId; uint32_t restedExp; - uint16_t unknown_12; - uint8_t unknown_13; + uint16_t unknown18; + uint8_t maxLevel; uint8_t expansion; uint8_t race; uint8_t tribe; @@ -693,9 +693,9 @@ struct FFXIVIpcInitUI : FFXIVIpcBasePacket uint8_t deity; uint8_t namedayMonth; uint8_t namedayDay; - Common::GrandCompany grandCompany; + uint8_t cityState; uint8_t homepoint; - uint8_t unknown_19; + uint8_t unknown26; uint8_t petHotBar; uint8_t companionRank; uint8_t companionStars; @@ -703,36 +703,36 @@ struct FFXIVIpcInitUI : FFXIVIpcBasePacket uint8_t companionUnk1; uint8_t companionColor; uint8_t companionFavoFeed; - uint8_t companionUnk2[2]; + uint16_t companionUnk2; float companionTimePassed; uint32_t companionCurrentExp; - uint32_t unknown_1b; + uint32_t unknown38; + uint32_t unknown3C; uint32_t fishCaught; uint32_t useBaitCatalogId; - uint32_t unknown_1c; uint16_t pvpWolfFoldMatches; uint16_t pvpWolfFoldVictories; uint16_t pvpWolfFoldWeeklyMatches; uint16_t pvpWolfFoldWeeklyVictories; + uint16_t pvpStats[6]; uint16_t playerCommendations; - uint8_t pvpStats[14]; + uint16_t pvpStats1; uint32_t frontlineCampaigns; uint16_t frontlineCampaignsWeekly; - uint8_t unknown_112; + uint8_t currentRelic; + uint8_t currentBook; uint8_t masterCrafterMask; - uint8_t unknown_001; - uint8_t unknown_002; - uint8_t unknown_003; - uint8_t unknown_004; - uint16_t unknown_005; - uint8_t unknown_114; - uint8_t padding_114; - uint8_t unknown_1141[61]; + uint8_t unknown69; + uint8_t unknown6A; + uint8_t unknown6B; + uint32_t unknown6C; + uint8_t unknown70[61]; uint8_t preNamePadding; char name[32]; - uint8_t unknown_54[16]; - uint8_t unknown55[4]; + uint8_t unknownOword[16]; + uint8_t unknownDE[2]; uint16_t levels[25]; + uint16_t levelsPadding; uint32_t exp[25]; uint8_t unlockBitmask[64]; uint8_t aetheryte[16]; @@ -741,6 +741,8 @@ struct FFXIVIpcInitUI : FFXIVIpcBasePacket uint8_t minions[35]; uint8_t chocoboTaxiMask[8]; uint8_t contentClearMask[105]; + uint8_t contentClearPadding; + uint16_t unknown422[8]; uint8_t companionBardingMask[8]; uint8_t companionEquippedHead; uint8_t companionEquippedBody; @@ -750,13 +752,14 @@ struct FFXIVIpcInitUI : FFXIVIpcBasePacket uint8_t companionDefRank; uint8_t companionAttRank; uint8_t companionHealRank; - uint8_t mountGuideMask[13]; - uint8_t fishingGuideMask[77]; + uint8_t mountGuideMask[14]; + uint8_t fishingGuideMask[89]; uint8_t fishingSpotVisited[25]; - uint8_t unknown_41; uint16_t fishingRecordsFish[26]; uint16_t fishingRecordsFishWeight[26]; - uint8_t unknown_590[62]; + uint8_t unknownMask4[15]; + uint8_t unknownMask4Padding; + uint8_t unknown55C[19]; uint8_t rankAmalJaa; uint8_t rankSylph; uint8_t rankKobold; @@ -765,6 +768,7 @@ struct FFXIVIpcInitUI : FFXIVIpcBasePacket uint8_t rankVanu; uint8_t rankVath; uint8_t rankMoogle; + uint8_t rankKojin; uint16_t expAmalJaa; uint16_t expSylph; uint16_t expKobold; @@ -773,28 +777,43 @@ struct FFXIVIpcInitUI : FFXIVIpcBasePacket uint16_t expVanu; uint16_t expVath; uint16_t expMoogle; - uint8_t unknown_0341[20]; - uint8_t unknownMask0[5]; - uint8_t unknown_0342[15]; - uint8_t unknownMask1[28]; - uint32_t unknownDword0; - uint8_t unknown_0343[12]; - uint8_t sightseeingMask[19]; - uint8_t unknown_421; + uint16_t expKojin; + uint8_t unknown58A[10]; + uint16_t unknown594[5]; + uint8_t unknownMask59E[5]; + uint8_t unknown5A3[16]; + uint8_t unknownMask5B3[28]; + uint8_t unknown_03411; + uint32_t unknownDword5D0; + uint8_t relicBookCompletion[12]; + uint8_t sightseeingMask[26]; + uint16_t unknown_XXX; uint32_t pvpFrontlineOverall1st; uint32_t pvpFrontlineOverall2nd; uint32_t pvpFrontlineOverall3rd; uint16_t pvpFrontlineWeekly1st; uint16_t pvpFrontlineWeekly2nd; uint16_t pvpFrontlineWeekly3rd; - uint8_t unknownRest[32]; - uint8_t tripleTriadCards[26]; - uint8_t unknownRest1[21]; - uint8_t orchestrionMask[38]; + uint8_t unknown60E; + uint8_t unknown60F[32]; + uint8_t unknown62F[22]; + uint8_t tripleTriadCards[27]; + uint8_t unknown660[11]; + uint8_t unknownMask66B[22]; + uint8_t unknown681[3]; + uint8_t orchestrionMask[40]; uint8_t hallOfNoviceCompleteMask[3]; - uint8_t unknownMask2[11]; - uint8_t unknownMask3[16]; - uint8_t unknown_500[9]; + uint8_t unknownMask6AF[11]; + uint8_t unknownMask6BA[16]; + uint8_t unknown6CA[13]; + uint8_t unlockedRaids[28]; + uint8_t unlockedDungeons[18]; + uint8_t unlockedGuildhests[10]; + uint8_t unlockedTrails[7]; + uint8_t unlockedPvp[5]; + uint8_t unknownMask71B[28]; + uint8_t unknownMask737[18]; + uint8_t unknown749[23]; }; /** diff --git a/src/servers/Server_Zone/Actor/Player.h b/src/servers/Server_Zone/Actor/Player.h index a7b7400b..c00cc37f 100644 --- a/src/servers/Server_Zone/Actor/Player.h +++ b/src/servers/Server_Zone/Actor/Player.h @@ -579,8 +579,8 @@ private: uint16_t m_activeTitle; uint8_t m_titleList[48]; uint8_t m_howTo[33]; - uint8_t m_minions[33]; - uint8_t m_mountGuide[13]; + uint8_t m_minions[35]; + uint8_t m_mountGuide[14]; uint8_t m_homePoint; uint8_t m_startTown; uint16_t m_townWarpFstFlags; @@ -592,7 +592,7 @@ private: uint32_t m_expArray[25]; uint8_t m_aetheryte[16]; uint8_t m_unlocks[64]; - uint8_t m_orchestrion[38]; + uint8_t m_orchestrion[40]; uint8_t m_openingSequence; diff --git a/src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h index 37244eb2..bac40501 100644 --- a/src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h +++ b/src/servers/Server_Zone/Network/PacketWrappers/InitUIPacket.h @@ -42,11 +42,9 @@ private: m_data.namedayMonth = player.getBirthMonth(); m_data.namedayDay = player.getBirthDay(); // TODO: Support grand company status. - m_data.grandCompany = static_cast< Common::GrandCompany >( player.getGc() ); + m_data.cityState = player.getStartTown(); //m_data.gcRank = GCRank::None; - // TODO: Support starting city. - //m_data.startCity = Town::Gridania; m_data.homepoint = player.getHomepoint(); memset( &m_data.name[0], 0, sizeof( m_data.name ) ); @@ -72,16 +70,10 @@ private: memcpy( m_data.howto, player.getHowToArray(), sizeof( m_data.howto ) ); - m_data.unknown_13 = 0x46; + // possibly max level or current level + m_data.unknown1A = 0x46; m_data.expansion = 2; - //memset( m_data.unlockBitmask, 0xFF, sizeof( m_data.unlockBitmask ) ); - //memset( m_data.unknown_0344, 0xFF, sizeof( m_data.unknown_0344 ) ); - //memset( m_data.unknown_F4, 0xFF, sizeof( m_data.unknown_F4 ) ); - //m_data.pos.x = player->getPos().getX(); - //m_data.pos.y = player->getPos().getY(); - //m_data.pos.z = player->getPos().getZ(); - }; };