diff --git a/src/common/Network/CommonActorControl.h b/src/common/Network/CommonActorControl.h index 32a00705..231a1591 100644 --- a/src/common/Network/CommonActorControl.h +++ b/src/common/Network/CommonActorControl.h @@ -185,7 +185,7 @@ enum ActorControlType : uint16_t LogMsg = 0x205, // LogMessage? AchievementMsg = 0x206, - SetItemLevel = 0x209, + SetItemLevel = 0x207, //updated 4.5 ( 0x209 before ) ChallengeEntryCompleteMsg = 0x20B, ChallengeEntryUnlockMsg = 0x20C, diff --git a/src/common/Network/PacketDef/Zone/ServerZoneDef.h b/src/common/Network/PacketDef/Zone/ServerZoneDef.h index 6556ccda..c949502c 100644 --- a/src/common/Network/PacketDef/Zone/ServerZoneDef.h +++ b/src/common/Network/PacketDef/Zone/ServerZoneDef.h @@ -158,7 +158,7 @@ struct FFXIVIpcServerNotice : FFXIVIpcBasePacket< ServerNotice > { /* 0000 */ uint8_t padding; - char message[307]; + char message[775]; }; struct FFXIVIpcSetOnlineStatus : @@ -783,8 +783,8 @@ struct FFXIVIpcInitUI : FFXIVIpcBasePacket< InitUI > unsigned int fishCaught; unsigned int useBaitCatalogId; unsigned int unknown28; - unsigned short unknownPvp2C; - unsigned short unknown3; + unsigned __int16 unknownPvp2C; + unsigned __int16 unknown3; unsigned int pvpFrontlineOverallCampaigns; unsigned int unknownTimestamp34; unsigned int unknownTimestamp38; @@ -793,122 +793,123 @@ struct FFXIVIpcInitUI : FFXIVIpcBasePacket< InitUI > unsigned int unknown44; float companionTimePassed; unsigned int unknown4C; - unsigned short unknown50; - unsigned short unknownPvp52[4]; - unsigned short playerCommendations; - unsigned short unknown5C; - unsigned short unknown5E; - unsigned short pvpFrontlineWeeklyCampaigns; - unsigned short enhancedAnimaGlassProgress; - unsigned short unknown64[4]; - unsigned short pvpRivalWingsTotalMatches; - unsigned short pvpRivalWingsTotalVictories; - unsigned short pvpRivalWingsWeeklyMatches; - unsigned short pvpRivalWingsWeeklyVictories; - unsigned char maxLevel; - unsigned char expansion; - unsigned char unknown76; - unsigned char race; - unsigned char tribe; - unsigned char gender; - unsigned char currentJob; - unsigned char currentClass; - unsigned char deity; - unsigned char namedayMonth; - unsigned char namedayDay; - unsigned char cityState; - unsigned char homepoint; - unsigned char unknown81; - unsigned char petHotBar; - unsigned char companionRank; - unsigned char companionStars; - unsigned char companionSp; - unsigned char companionUnk86; - unsigned char companionColor; - unsigned char companionFavoFeed; - unsigned char unknown89; - unsigned char unknown8A[4]; - unsigned char hasRelicBook; - unsigned char relicBookId; - unsigned char unknown90[4]; - unsigned char craftingMasterMask; - unsigned char unknown95[10]; - unsigned char unknown9F[2]; - unsigned char unknownA1[3]; + unsigned __int16 unknown50; + unsigned __int16 unknownPvp52[4]; + unsigned __int16 playerCommendations; + unsigned __int16 unknown5C; + unsigned __int16 unknown5E; + unsigned __int16 pvpFrontlineWeeklyCampaigns; + unsigned __int16 enhancedAnimaGlassProgress; + unsigned __int16 unknown64[4]; + unsigned __int16 pvpRivalWingsTotalMatches; + unsigned __int16 pvpRivalWingsTotalVictories; + unsigned __int16 pvpRivalWingsWeeklyMatches; + unsigned __int16 pvpRivalWingsWeeklyVictories; + unsigned __int8 maxLevel; + unsigned __int8 expansion; + unsigned __int8 unknown76; + unsigned __int8 race; + unsigned __int8 tribe; + unsigned __int8 gender; + unsigned __int8 currentJob; + unsigned __int8 currentClass; + unsigned __int8 deity; + unsigned __int8 namedayMonth; + unsigned __int8 namedayDay; + unsigned __int8 cityState; + unsigned __int8 homepoint; + unsigned __int8 unknown81; + unsigned __int8 petHotBar; + unsigned __int8 companionRank; + unsigned __int8 companionStars; + unsigned __int8 companionSp; + unsigned __int8 companionUnk86; + unsigned __int8 companionColor; + unsigned __int8 companionFavoFeed; + unsigned __int8 unknown89; + unsigned __int8 unknown8A[4]; + unsigned __int8 hasRelicBook; + unsigned __int8 relicBookId; + unsigned __int8 unknown90[4]; + unsigned __int8 craftingMasterMask; + unsigned __int8 unknown95[10]; + unsigned __int8 unknown9F[2]; + unsigned __int8 unknownA1[3]; unsigned int exp[26]; unsigned int unknown108; unsigned int pvpTotalExp; unsigned int unknownPvp110; unsigned int pvpExp; unsigned int pvpFrontlineOverallRanks[3]; + unsigned __int16 levels[26]; unsigned int exploratoryMissionNextTimestamp; - unsigned short levels[26]; - unsigned short unknown15C[9]; - unsigned short fishingRecordsFish[26]; - unsigned short fishingRecordsFishWeight[26]; - unsigned short beastExp[11]; - unsigned short unknown1EA[5]; - unsigned short pvpFrontlineWeeklyRanks[3]; - unsigned short unknownMask1FA[3]; - unsigned char companionName[21]; - unsigned char companionDefRank; - unsigned char companionAttRank; - unsigned char companionHealRank; - unsigned char mountGuideMask[17]; + unsigned __int16 unknown15C[9]; + unsigned __int16 fishingRecordsFish[26]; + unsigned __int16 fishingRecordsFishWeight[26]; + unsigned __int16 beastExp[11]; + unsigned __int16 unknown1EA[5]; + unsigned __int16 pvpFrontlineWeeklyRanks[3]; + unsigned __int16 unknownMask1FA[3]; + unsigned __int8 companionName[21]; + unsigned __int8 companionDefRank; + unsigned __int8 companionAttRank; + unsigned __int8 companionHealRank; + unsigned __int8 mountGuideMask[17]; char name[32]; - unsigned char unknownOword[16]; - unsigned char unknown258; - unsigned char unlockBitmask[64]; - unsigned char aetheryte[17]; - unsigned char discovery[421]; - unsigned char howto[33]; - unsigned char minions[40]; - unsigned char chocoboTaxiMask[8]; - unsigned char watchedCutscenes[115]; - unsigned char companionBardingMask[9]; - unsigned char companionEquippedHead; - unsigned char companionEquippedBody; - unsigned char companionEquippedLegs; - unsigned char unknown519[4]; - unsigned char unknownMask51D[11]; - unsigned char fishingGuideMask[89]; - unsigned char fishingSpotVisited[25]; - unsigned char unknown59A[15]; - unsigned char unknown5A9[2]; - unsigned char unknownPvp5AB[2]; - unsigned char pvpLevel; - unsigned char beastRank[11]; - unsigned char unknown5B9[11]; - unsigned char pose; - unsigned char weaponPose; - unsigned char unknownMask5C4[3]; - unsigned char unknown5C9[2]; - unsigned char challengeLogComplete[9]; - unsigned char unknown5D4[11]; - unsigned char unknownMask5DD[28]; - unsigned char relicCompletion[12]; - unsigned char sightseeingMask[26]; - unsigned char huntingMarkMask[55]; - unsigned char tripleTriadCards[30]; - unsigned char unknownMask673[10]; - unsigned char unknown67D; - unsigned char aetherCurrentMask[22]; - unsigned char unknown694[3]; - unsigned char orchestrionMask[40]; - unsigned char hallOfNoviceCompleteMask[3]; - unsigned char animaCompletion[11]; - unsigned char unknown6CD[16]; - unsigned char unknownMask6DB[11]; - unsigned char unlockedRaids[28]; - unsigned char unlockedDungeons[18]; - unsigned char unlockedGuildhests[10]; - unsigned char unlockedTrials[8]; - unsigned char unlockedPvp[5]; - unsigned char clearedRaids[28]; - unsigned char clearedDungeons[18]; - unsigned char clearedGuildhests[10]; - unsigned char clearedTrials[8]; - unsigned char clearedPvp[5]; + unsigned __int8 unknownOword[15]; + unsigned __int8 unlockBitmask[64]; + unsigned __int8 aetheryte[17]; + unsigned __int8 unknown258; + unsigned __int8 chocoboTaxiMask[8]; + unsigned __int8 unknown11111[118]; + unsigned __int8 companionBardingMask[9]; + unsigned __int8 companionEquippedHead; + unsigned __int8 companionEquippedBody; + unsigned __int8 companionEquippedLegs; + unsigned __int8 unknown519[4]; + unsigned __int8 unknownMask51D[11]; + unsigned __int8 fishingGuideMask[89]; + unsigned __int8 fishingSpotVisited[25]; + unsigned __int8 unknown59A[15]; + unsigned __int8 unknown5A9[2]; + unsigned __int8 unknownPvp5AB[2]; + unsigned __int8 beastRank[11]; + unsigned __int8 pose; + unsigned __int8 weaponPose; + unsigned __int8 unknownMask5C4[3]; + unsigned __int8 unknown5C9[2]; + unsigned __int8 challengeLogComplete[9]; + unsigned __int8 unknownMask5DD[28]; + unsigned __int8 tripleTriadCards[30]; + unsigned __int8 unknownMask673[10]; + unsigned __int8 unknown5B9[11]; + unsigned __int8 unknown5D4[11]; + unsigned __int8 unknown694[3]; + unsigned __int8 pvpLevel; + unsigned __int8 unknown67D; + unsigned __int8 howto[34]; + unsigned __int8 minions[42]; + unsigned __int8 watchedCutscenes[118]; + unsigned __int8 discovery[421]; + unsigned __int8 relicCompletion[12]; + unsigned __int8 sightseeingMask[26]; + unsigned __int8 huntingMarkMask[55]; + unsigned __int8 aetherCurrentMask[22]; + unsigned __int8 orchestrionMask[40]; + unsigned __int8 hallOfNoviceCompleteMask[3]; + unsigned __int8 animaCompletion[11]; + unsigned __int8 unknown6CD[16]; + unsigned __int8 unknownMask6DB[11]; + unsigned __int8 unlockedRaids[28]; + unsigned __int8 unlockedDungeons[18]; + unsigned __int8 unlockedGuildhests[10]; + unsigned __int8 unlockedTrials[8]; + unsigned __int8 unlockedPvp[5]; + unsigned __int8 clearedRaids[28]; + unsigned __int8 clearedDungeons[18]; + unsigned __int8 clearedGuildhests[10]; + unsigned __int8 clearedTrials[8]; + unsigned __int8 clearedPvp[5]; }; diff --git a/src/scripts/opening/OpeningGridania.cpp b/src/scripts/opening/OpeningGridania.cpp index 0623890a..20617ccb 100644 --- a/src/scripts/opening/OpeningGridania.cpp +++ b/src/scripts/opening/OpeningGridania.cpp @@ -56,8 +56,8 @@ private: auto item = player.addItem( itemId, 1, false, true ); - if( item ) - player.equipItem( Common::GearSetSlot::Ring2, item, true ); + //if( item ) + // player.equipItem( Common::GearSetSlot::Ring2, item, true ); player.setOpeningSequence( 1 ); Scene00001( player ); @@ -65,12 +65,13 @@ private: player.playScene( getId(), 0, NO_DEFAULT_CAMERA | INVIS_ENPC | CONDITION_CUTSCENE | HIDE_UI | - HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV, 0, 1, callback ); + HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV | SILENT_ENTER_TERRI_BGM | SILENT_ENTER_TERRI_SE | + DISABLE_SKIP | DISABLE_STEALTH, 0, 1, callback ); } void Scene00001( Entity::Player& player ) { - player.playScene( getId(), 1, NO_DEFAULT_CAMERA | HIDE_HOTBAR, 1, 0x32 ); + player.playScene( getId(), 1, NO_DEFAULT_CAMERA | HIDE_HOTBAR, 0, 0 ); } void Scene00020( Entity::Player& player ) diff --git a/src/scripts/opening/OpeningLimsa.cpp b/src/scripts/opening/OpeningLimsa.cpp index 73f9af52..67b56b1e 100644 --- a/src/scripts/opening/OpeningLimsa.cpp +++ b/src/scripts/opening/OpeningLimsa.cpp @@ -81,7 +81,8 @@ private: player.playScene( getId(), 0, NO_DEFAULT_CAMERA | INVIS_ENPC | CONDITION_CUTSCENE | HIDE_UI | - HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV, 0, 1, callback ); + HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV | SILENT_ENTER_TERRI_BGM | SILENT_ENTER_TERRI_SE | + DISABLE_SKIP | DISABLE_STEALTH, 0, 1, callback ); } void Scene00001( Entity::Player& player ) diff --git a/src/scripts/opening/OpeningUldah.cpp b/src/scripts/opening/OpeningUldah.cpp index 256d3b34..58890942 100644 --- a/src/scripts/opening/OpeningUldah.cpp +++ b/src/scripts/opening/OpeningUldah.cpp @@ -66,7 +66,8 @@ private: player.playScene( getId(), 0, NO_DEFAULT_CAMERA | INVIS_ENPC | CONDITION_CUTSCENE | HIDE_UI | - HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV, 0, 1, callback ); + HIDE_HOTBAR | SILENT_ENTER_TERRI_ENV | SILENT_ENTER_TERRI_BGM | SILENT_ENTER_TERRI_SE | + DISABLE_SKIP | DISABLE_STEALTH, 0, 1, callback ); } void Scene00001( Entity::Player& player ) diff --git a/src/world/Actor/Player.cpp b/src/world/Actor/Player.cpp index c5f70e4b..17d7850e 100644 --- a/src/world/Actor/Player.cpp +++ b/src/world/Actor/Player.cpp @@ -1694,19 +1694,18 @@ void Sapphire::Entity::Player::sendTitleList() void Sapphire::Entity::Player::sendZoneInPackets( uint32_t param1, uint32_t param2 = 0, uint32_t param3 = 0, uint32_t param4 = 0, - bool shouldSetStatus = false ) + bool shouldSetStatus = false ) { auto zoneInPacket = makeActorControl143( getId(), ZoneIn, param1, param2, param3, param4 ); auto SetStatusPacket = makeActorControl142( getId(), SetStatus, static_cast< uint8_t >( Common::ActorStatus::Idle ) ); if( !getGmInvis() ) - sendToInRangeSet( zoneInPacket, true ); + sendToInRangeSet( zoneInPacket ); + if( shouldSetStatus ) - sendToInRangeSet( SetStatusPacket ); - else - queuePacket( zoneInPacket ); - if( shouldSetStatus ) - queuePacket( SetStatusPacket ); + sendToInRangeSet( SetStatusPacket, true ); + + queuePacket( zoneInPacket ); setZoningType( Common::ZoneingType::None ); unsetStateFlag( PlayerStateFlag::BetweenAreas );