Core/PacketIO: Updated packets to 7.1.0.22900
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,3 @@
|
||||
UPDATE `realmlist` SET `gamebuild`=22900 WHERE `gamebuild`=22810;
|
||||
|
||||
ALTER TABLE `realmlist` CHANGE `gamebuild` `gamebuild` int(10) unsigned NOT NULL DEFAULT '22900';
|
||||
@@ -0,0 +1,9 @@
|
||||
ALTER TABLE `character_cuf_profiles`
|
||||
CHANGE `unk146` `topPoint` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'Frame top alignment' AFTER `boolOptions`,
|
||||
CHANGE `unk147` `bottomPoint` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'Frame bottom alignment' AFTER `topPoint`,
|
||||
CHANGE `unk148` `leftPoint` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'Frame left alignment' AFTER `bottomPoint`,
|
||||
CHANGE `unk150` `topOffset` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Frame position offset from top' AFTER `leftPoint`,
|
||||
CHANGE `unk152` `bottomOffset` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Frame position offset from bottom' AFTER `topOffset`,
|
||||
CHANGE `unk154` `leftOffset` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Frame position offset from left' AFTER `bottomOffset`;
|
||||
|
||||
UPDATE `character_cuf_profiles` SET `boolOptions`=((`boolOptions`&0x1800000)<<2)|(`boolOptions`&0x67FFFFF);
|
||||
@@ -0,0 +1 @@
|
||||
ALTER TABLE `quest_objectives` ADD `Flags2` int(10) unsigned NOT NULL DEFAULT '0' AFTER `Flags`;
|
||||
@@ -626,8 +626,8 @@ void CharacterDatabaseConnection::DoPrepareStatements()
|
||||
PrepareStatement(CHAR_DEL_CHAR_VOID_STORAGE_ITEM_BY_SLOT, "DELETE FROM character_void_storage WHERE slot = ? AND playerGuid = ?", CONNECTION_ASYNC);
|
||||
|
||||
// CompactUnitFrame profiles
|
||||
PrepareStatement(CHAR_SEL_CHAR_CUF_PROFILES, "SELECT id, name, frameHeight, frameWidth, sortBy, healthText, boolOptions, unk146, unk147, unk148, unk150, unk152, unk154 FROM character_cuf_profiles WHERE guid = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_REP_CHAR_CUF_PROFILES, "REPLACE INTO character_cuf_profiles (guid, id, name, frameHeight, frameWidth, sortBy, healthText, boolOptions, unk146, unk147, unk148, unk150, unk152, unk154) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_SEL_CHAR_CUF_PROFILES, "SELECT id, name, frameHeight, frameWidth, sortBy, healthText, boolOptions, topPoint, bottomPoint, leftPoint, topOffset, bottomOffset, leftOffset FROM character_cuf_profiles WHERE guid = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_REP_CHAR_CUF_PROFILES, "REPLACE INTO character_cuf_profiles (guid, id, name, frameHeight, frameWidth, sortBy, healthText, boolOptions, topPoint, bottomPoint, leftPoint, topOffset, bottomOffset, leftOffset) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_DEL_CHAR_CUF_PROFILES_BY_ID, "DELETE FROM character_cuf_profiles WHERE guid = ? AND id = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(CHAR_DEL_CHAR_CUF_PROFILES, "DELETE FROM character_cuf_profiles WHERE guid = ?", CONNECTION_ASYNC);
|
||||
|
||||
|
||||
@@ -578,8 +578,6 @@ void BattlegroundMgr::SendBattlegroundList(Player* player, ObjectGuid const& gui
|
||||
battlefieldList.MaxLevel = bgTemplate->MaxLevel;
|
||||
battlefieldList.PvpAnywhere = guid.IsEmpty();
|
||||
battlefieldList.HasRandomWinToday = player->GetRandomWinner();
|
||||
battlefieldList.HasHolidayWinToday = false;
|
||||
battlefieldList.IsRandomBG = bgTypeId == BATTLEGROUND_RB;
|
||||
player->SendDirectMessage(battlefieldList.Write());
|
||||
}
|
||||
|
||||
|
||||
@@ -26507,6 +26507,7 @@ void Player::SendMovementSetCollisionHeight(float height)
|
||||
setCollisionHeight.Height = height;
|
||||
setCollisionHeight.Scale = GetObjectScale();
|
||||
setCollisionHeight.MountDisplayID = GetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID);
|
||||
setCollisionHeight.ScaleDuration = GetUInt32Value(UNIT_FIELD_SCALE_DURATION);
|
||||
setCollisionHeight.Reason = WorldPackets::Movement::UPDATE_COLLISION_HEIGHT_MOUNT;
|
||||
SendDirectMessage(setCollisionHeight.Write());
|
||||
|
||||
|
||||
@@ -225,11 +225,11 @@ enum CUFBoolOptions
|
||||
CUF_AUTO_ACTIVATE_40_PLAYERS,
|
||||
CUF_AUTO_ACTIVATE_SPEC_1,
|
||||
CUF_AUTO_ACTIVATE_SPEC_2,
|
||||
CUF_AUTO_ACTIVATE_SPEC_3,
|
||||
CUF_AUTO_ACTIVATE_SPEC_4,
|
||||
CUF_AUTO_ACTIVATE_PVP,
|
||||
CUF_AUTO_ACTIVATE_PVE,
|
||||
|
||||
// The unks is _LOCKED and _SHOWN and _DYNAMIC, unknown order
|
||||
|
||||
CUF_BOOL_OPTIONS_COUNT,
|
||||
};
|
||||
|
||||
|
||||
@@ -3894,8 +3894,8 @@ void ObjectMgr::LoadQuests()
|
||||
}
|
||||
|
||||
// Load `quest_objectives`
|
||||
// 0 1 2 3 4 5 6 7 8
|
||||
result = WorldDatabase.Query("SELECT ID, QuestID, Type, StorageIndex, ObjectID, Amount, Flags, ProgressBarWeight, Description FROM quest_objectives ORDER BY StorageIndex ASC");
|
||||
// 0 1 2 3 4 5 6 7 8 9
|
||||
result = WorldDatabase.Query("SELECT ID, QuestID, Type, StorageIndex, ObjectID, Amount, Flags, Flags2, ProgressBarWeight, Description FROM quest_objectives ORDER BY StorageIndex ASC");
|
||||
|
||||
if (!result)
|
||||
{
|
||||
|
||||
@@ -39,6 +39,7 @@ void WorldSession::SendAuthResponse(uint32 code, bool queued, uint32 queuePos)
|
||||
response.SuccessInfo->AccountExpansionLevel = GetExpansion();
|
||||
response.SuccessInfo->ActiveExpansionLevel = GetExpansion();
|
||||
response.SuccessInfo->VirtualRealmAddress = GetVirtualRealmAddress();
|
||||
response.SuccessInfo->Time = int32(time(nullptr));
|
||||
|
||||
// Send current home realm. Also there is no need to send it later in realm queries.
|
||||
response.SuccessInfo->VirtualRealms.emplace_back(GetVirtualRealmAddress(), true, false,
|
||||
|
||||
@@ -198,8 +198,9 @@ void Quest::LoadQuestObjective(Field* fields)
|
||||
obj.ObjectID = fields[4].GetInt32();
|
||||
obj.Amount = fields[5].GetInt32();
|
||||
obj.Flags = fields[6].GetUInt32();
|
||||
obj.ProgressBarWeight = fields[7].GetFloat();
|
||||
obj.Description = fields[8].GetString();
|
||||
obj.Flags2 = fields[7].GetUInt32();
|
||||
obj.ProgressBarWeight = fields[8].GetFloat();
|
||||
obj.Description = fields[9].GetString();
|
||||
|
||||
Objectives.push_back(obj);
|
||||
}
|
||||
|
||||
@@ -268,6 +268,7 @@ struct QuestObjective
|
||||
int32 ObjectID = 0;
|
||||
int32 Amount = 0;
|
||||
uint32 Flags = 0;
|
||||
uint32 Flags2 = 0;
|
||||
float ProgressBarWeight = 0.0f;
|
||||
std::string Description;
|
||||
std::vector<int32> VisualEffects;
|
||||
|
||||
@@ -97,6 +97,7 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write()
|
||||
_worldPacket << uint32(SuccessInfo->AvailableClasses->size());
|
||||
_worldPacket << uint32(SuccessInfo->Templates.size());
|
||||
_worldPacket << uint32(SuccessInfo->CurrencyID);
|
||||
_worldPacket << int32(SuccessInfo->Time);
|
||||
|
||||
for (auto& race : *SuccessInfo->AvailableRaces)
|
||||
{
|
||||
|
||||
@@ -130,6 +130,7 @@ namespace WorldPackets
|
||||
uint32 VirtualRealmAddress = 0; ///< a special identifier made from the Index, BattleGroup and Region.
|
||||
uint32 TimeSecondsUntilPCKick = 0; ///< @todo research
|
||||
uint32 CurrencyID = 0; ///< this is probably used for the ingame shop. @todo implement
|
||||
int32 Time = 0;
|
||||
|
||||
BillingInfo Billing;
|
||||
|
||||
|
||||
@@ -219,9 +219,7 @@ WorldPacket const* WorldPackets::Battleground::BattlefieldList::Write()
|
||||
_worldPacket.append(Battlefields.data(), Battlefields.size());
|
||||
|
||||
_worldPacket.WriteBit(PvpAnywhere);
|
||||
_worldPacket.WriteBit(HasHolidayWinToday);
|
||||
_worldPacket.WriteBit(HasRandomWinToday);
|
||||
_worldPacket.WriteBit(IsRandomBG);
|
||||
_worldPacket.FlushBits();
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
@@ -271,15 +271,13 @@ namespace WorldPackets
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
uint8 MaxLevel = 0;
|
||||
bool PvpAnywhere = false;
|
||||
ObjectGuid BattlemasterGuid;
|
||||
bool IsRandomBG = false;
|
||||
uint8 MinLevel = 0;
|
||||
bool HasHolidayWinToday = false;
|
||||
int32 BattlemasterListID = 0;
|
||||
bool HasRandomWinToday = false;
|
||||
uint8 MinLevel = 0;
|
||||
uint8 MaxLevel = 0;
|
||||
std::vector<int32> Battlefields; // Players cannot join a specific battleground instance anymore - this is always empty
|
||||
bool PvpAnywhere = false;
|
||||
bool HasRandomWinToday = false;
|
||||
};
|
||||
|
||||
class GetPVPOptionsEnabled final : public ClientPacket
|
||||
|
||||
@@ -388,6 +388,11 @@ WorldPacket const* WorldPackets::Character::CharacterLoginFailed::Write()
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
void WorldPackets::Character::LogoutRequest::Read()
|
||||
{
|
||||
IdleLogout = _worldPacket.ReadBit();
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Character::LogoutResponse::Write()
|
||||
{
|
||||
_worldPacket << int32(LogoutResult);
|
||||
@@ -396,12 +401,6 @@ WorldPacket const* WorldPackets::Character::LogoutResponse::Write()
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Character::LogoutComplete::Write()
|
||||
{
|
||||
_worldPacket << SwitchToCharacter;
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
void WorldPackets::Character::LoadingScreenNotify::Read()
|
||||
{
|
||||
_worldPacket >> MapID;
|
||||
|
||||
@@ -477,7 +477,9 @@ namespace WorldPackets
|
||||
public:
|
||||
LogoutRequest(WorldPacket&& packet) : ClientPacket(CMSG_LOGOUT_REQUEST, std::move(packet)) { }
|
||||
|
||||
void Read() override { }
|
||||
void Read() override;
|
||||
|
||||
bool IdleLogout = false;
|
||||
};
|
||||
|
||||
class LogoutResponse final : public ServerPacket
|
||||
@@ -494,11 +496,9 @@ namespace WorldPackets
|
||||
class LogoutComplete final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
LogoutComplete() : ServerPacket(SMSG_LOGOUT_COMPLETE, 2) { }
|
||||
LogoutComplete() : ServerPacket(SMSG_LOGOUT_COMPLETE, 0) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
ObjectGuid SwitchToCharacter;
|
||||
WorldPacket const* Write() override { return &_worldPacket; }
|
||||
};
|
||||
|
||||
class LogoutCancel final : public ClientPacket
|
||||
|
||||
@@ -145,6 +145,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Inspect::PVPBracketData c
|
||||
data << int32(bracket.SeasonPlayed);
|
||||
data << int32(bracket.SeasonWon);
|
||||
data << int32(bracket.WeeklyBestRating);
|
||||
data << int32(bracket.Unk710);
|
||||
data << uint8(bracket.Bracket);
|
||||
|
||||
return data;
|
||||
|
||||
@@ -126,6 +126,7 @@ namespace WorldPackets
|
||||
int32 SeasonPlayed = 0;
|
||||
int32 SeasonWon = 0;
|
||||
int32 WeeklyBestRating = 0;
|
||||
int32 Unk710 = 0;
|
||||
uint8 Bracket = 0;
|
||||
};
|
||||
|
||||
|
||||
@@ -653,7 +653,7 @@ namespace WorldPackets
|
||||
|
||||
void Read() override;
|
||||
|
||||
std::vector<std::unique_ptr<CUFProfile>> CUFProfiles;
|
||||
Array<std::unique_ptr<CUFProfile>, MAX_CUF_PROFILES> CUFProfiles;
|
||||
};
|
||||
|
||||
class LoadCUFProfiles final : public ServerPacket
|
||||
|
||||
@@ -658,6 +658,7 @@ WorldPacket const* WorldPackets::Movement::MoveSetCollisionHeight::Write()
|
||||
_worldPacket << float(Height);
|
||||
_worldPacket << float(Scale);
|
||||
_worldPacket << uint32(MountDisplayID);
|
||||
_worldPacket << int32(ScaleDuration);
|
||||
_worldPacket.WriteBits(Reason, 2);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
|
||||
@@ -413,6 +413,7 @@ namespace WorldPackets
|
||||
uint32 MountDisplayID = 0;
|
||||
UpdateCollisionHeightReason Reason = UPDATE_COLLISION_HEIGHT_MOUNT;
|
||||
uint32 SequenceIndex = 0;
|
||||
int32 ScaleDuration = 0;
|
||||
float Height = 1.0f;
|
||||
};
|
||||
|
||||
|
||||
@@ -47,7 +47,6 @@ void WorldPackets::Party::PartyInviteClient::Read()
|
||||
_worldPacket >> PartyIndex;
|
||||
_worldPacket >> ProposedRoles;
|
||||
_worldPacket >> TargetGUID;
|
||||
_worldPacket >> TargetCfgRealmID;
|
||||
|
||||
targetNameLen = _worldPacket.ReadBits(9);
|
||||
targetRealmLen = _worldPacket.ReadBits(9);
|
||||
@@ -419,6 +418,7 @@ WorldPacket const* WorldPackets::Party::GroupNewLeader::Write()
|
||||
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Party::PartyPlayerInfo const& playerInfo)
|
||||
{
|
||||
data.WriteBits(playerInfo.Name.size(), 6);
|
||||
data.WriteBit(playerInfo.FromSocialQueue);
|
||||
data << playerInfo.GUID;
|
||||
data << uint8(playerInfo.Status);
|
||||
data << uint8(playerInfo.Subgroup);
|
||||
|
||||
@@ -49,7 +49,6 @@ namespace WorldPackets
|
||||
|
||||
int8 PartyIndex = 0;
|
||||
int32 ProposedRoles = 0;
|
||||
int32 TargetCfgRealmID = 0;
|
||||
std::string TargetName;
|
||||
std::string TargetRealm;
|
||||
ObjectGuid TargetGUID;
|
||||
@@ -492,6 +491,7 @@ namespace WorldPackets
|
||||
uint8 Subgroup = 0u;
|
||||
uint8 Flags = 0u;
|
||||
uint8 RolesAssigned = 0u;
|
||||
bool FromSocialQueue = false;
|
||||
};
|
||||
|
||||
struct PartyLFGInfo
|
||||
|
||||
@@ -38,6 +38,7 @@ WorldPacket const* WorldPackets::Pet::PetSpells::Write()
|
||||
_worldPacket << int32(cooldown.SpellID);
|
||||
_worldPacket << int32(cooldown.Duration);
|
||||
_worldPacket << int32(cooldown.CategoryDuration);
|
||||
_worldPacket << float(cooldown.ModRate);
|
||||
_worldPacket << uint16(cooldown.Category);
|
||||
}
|
||||
|
||||
@@ -45,6 +46,7 @@ WorldPacket const* WorldPackets::Pet::PetSpells::Write()
|
||||
{
|
||||
_worldPacket << int32(history.CategoryID);
|
||||
_worldPacket << int32(history.RecoveryTime);
|
||||
_worldPacket << float(history.ChargeModRate);
|
||||
_worldPacket << int8(history.ConsumedCharges);
|
||||
}
|
||||
|
||||
|
||||
@@ -83,6 +83,7 @@ namespace WorldPackets
|
||||
int32 SpellID = 0;
|
||||
int32 Duration = 0;
|
||||
int32 CategoryDuration = 0;
|
||||
float ModRate = 1.0f;
|
||||
uint16 Category = 0;
|
||||
};
|
||||
|
||||
@@ -90,6 +91,7 @@ namespace WorldPackets
|
||||
{
|
||||
int32 CategoryID = 0;
|
||||
int32 RecoveryTime = 0;
|
||||
float ChargeModRate = 1.0f;
|
||||
int8 ConsumedCharges = 0;
|
||||
};
|
||||
|
||||
|
||||
@@ -161,6 +161,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write()
|
||||
_worldPacket << int32(questObjective.ObjectID);
|
||||
_worldPacket << int32(questObjective.Amount);
|
||||
_worldPacket << uint32(questObjective.Flags);
|
||||
_worldPacket << uint32(questObjective.Flags2);
|
||||
_worldPacket << float(questObjective.ProgressBarWeight);
|
||||
|
||||
_worldPacket << int32(questObjective.VisualEffects.size());
|
||||
|
||||
@@ -645,6 +645,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellCooldownStru
|
||||
{
|
||||
data << uint32(cooldown.SrecID);
|
||||
data << uint32(cooldown.ForcedCooldown);
|
||||
data << float(cooldown.ModRate);
|
||||
return data;
|
||||
}
|
||||
|
||||
@@ -666,6 +667,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellHistoryEntry
|
||||
data << uint32(historyEntry.Category);
|
||||
data << int32(historyEntry.RecoveryTime);
|
||||
data << int32(historyEntry.CategoryRecoveryTime);
|
||||
data << float(historyEntry.ModRate);
|
||||
data.WriteBit(historyEntry.unused622_1.is_initialized());
|
||||
data.WriteBit(historyEntry.unused622_2.is_initialized());
|
||||
data.WriteBit(historyEntry.OnHold);
|
||||
@@ -709,6 +711,7 @@ WorldPacket const* WorldPackets::Spells::SetSpellCharges::Write()
|
||||
_worldPacket << int32(Category);
|
||||
_worldPacket << uint32(NextRecoveryTime);
|
||||
_worldPacket << uint8(ConsumedCharges);
|
||||
_worldPacket << float(ChargeModRate);
|
||||
_worldPacket.WriteBit(IsPet);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
@@ -719,6 +722,7 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Spells::SpellChargeEntry
|
||||
{
|
||||
data << uint32(chargeEntry.Category);
|
||||
data << uint32(chargeEntry.NextRecoveryTime);
|
||||
data << float(chargeEntry.ChargeModRate);
|
||||
data << uint8(chargeEntry.ConsumedCharges);
|
||||
return data;
|
||||
}
|
||||
@@ -821,7 +825,7 @@ WorldPacket const* WorldPackets::Spells::ResurrectRequest::Write()
|
||||
_worldPacket << uint32(ResurrectOffererVirtualRealmAddress);
|
||||
_worldPacket << uint32(PetNumber);
|
||||
_worldPacket << int32(SpellID);
|
||||
_worldPacket.WriteBits(Name.length(), 6);
|
||||
_worldPacket.WriteBits(Name.length(), 11);
|
||||
_worldPacket.WriteBit(UseTimer);
|
||||
_worldPacket.WriteBit(Sickness);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
@@ -639,6 +639,7 @@ namespace WorldPackets
|
||||
|
||||
uint32 SrecID = 0;
|
||||
uint32 ForcedCooldown = 0;
|
||||
float ModRate = 1.0f;
|
||||
};
|
||||
|
||||
class SpellCooldown : public ServerPacket
|
||||
@@ -660,6 +661,7 @@ namespace WorldPackets
|
||||
uint32 Category = 0;
|
||||
int32 RecoveryTime = 0;
|
||||
int32 CategoryRecoveryTime = 0;
|
||||
float ModRate = 1.0f;
|
||||
bool OnHold = false;
|
||||
Optional<uint32> unused622_1; ///< This field is not used for anything in the client in 6.2.2.20444
|
||||
Optional<uint32> unused622_2; ///< This field is not used for anything in the client in 6.2.2.20444
|
||||
@@ -707,12 +709,14 @@ namespace WorldPackets
|
||||
uint32 Category = 0;
|
||||
uint32 NextRecoveryTime = 0;
|
||||
uint8 ConsumedCharges = 0;
|
||||
float ChargeModRate = 1.0f;
|
||||
};
|
||||
|
||||
struct SpellChargeEntry
|
||||
{
|
||||
uint32 Category = 0;
|
||||
uint32 NextRecoveryTime = 0;
|
||||
float ChargeModRate = 1.0f;
|
||||
uint8 ConsumedCharges = 0;
|
||||
};
|
||||
|
||||
|
||||
@@ -49,21 +49,35 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write()
|
||||
_worldPacket.WriteBit(Unk67);
|
||||
_worldPacket.WriteBit(WillKickFromWorld);
|
||||
_worldPacket.WriteBit(KioskModeEnabled);
|
||||
_worldPacket.WriteBit(CompetitiveModeEnabled);
|
||||
_worldPacket.WriteBit(RaceClassExpansionLevels.is_initialized());
|
||||
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
if (EuropaTicketSystemStatus)
|
||||
{
|
||||
_worldPacket.WriteBit(EuropaTicketSystemStatus->TicketsEnabled);
|
||||
_worldPacket.WriteBit(EuropaTicketSystemStatus->BugsEnabled);
|
||||
_worldPacket.WriteBit(EuropaTicketSystemStatus->ComplaintsEnabled);
|
||||
_worldPacket.WriteBit(EuropaTicketSystemStatus->SuggestionsEnabled);
|
||||
|
||||
_worldPacket << uint32(EuropaTicketSystemStatus->ThrottleState.MaxTries);
|
||||
_worldPacket << uint32(EuropaTicketSystemStatus->ThrottleState.PerMilliseconds);
|
||||
_worldPacket << uint32(EuropaTicketSystemStatus->ThrottleState.TryCount);
|
||||
_worldPacket << uint32(EuropaTicketSystemStatus->ThrottleState.LastResetTimeBeforeNow);
|
||||
_worldPacket.WriteBit(QuickJoinConfig.ToastsDisabled);
|
||||
_worldPacket << float(QuickJoinConfig.ToastDuration);
|
||||
_worldPacket << float(QuickJoinConfig.DelayDuration);
|
||||
_worldPacket << float(QuickJoinConfig.QueueMultiplier);
|
||||
_worldPacket << float(QuickJoinConfig.PlayerMultiplier);
|
||||
_worldPacket << float(QuickJoinConfig.PlayerFriendValue);
|
||||
_worldPacket << float(QuickJoinConfig.PlayerGuildValue);
|
||||
_worldPacket << float(QuickJoinConfig.ThrottleInitialThreshold);
|
||||
_worldPacket << float(QuickJoinConfig.ThrottleDecayTime);
|
||||
_worldPacket << float(QuickJoinConfig.ThrottlePrioritySpike);
|
||||
_worldPacket << float(QuickJoinConfig.ThrottleMinThreshold);
|
||||
_worldPacket << float(QuickJoinConfig.ThrottlePvPPriorityNormal);
|
||||
_worldPacket << float(QuickJoinConfig.ThrottlePvPPriorityLow);
|
||||
_worldPacket << float(QuickJoinConfig.ThrottlePvPHonorThreshold);
|
||||
_worldPacket << float(QuickJoinConfig.ThrottleLfgListPriorityDefault);
|
||||
_worldPacket << float(QuickJoinConfig.ThrottleLfgListPriorityAbove);
|
||||
_worldPacket << float(QuickJoinConfig.ThrottleLfgListPriorityBelow);
|
||||
_worldPacket << float(QuickJoinConfig.ThrottleLfgListIlvlScalingAbove);
|
||||
_worldPacket << float(QuickJoinConfig.ThrottleLfgListIlvlScalingBelow);
|
||||
_worldPacket << float(QuickJoinConfig.ThrottleRfPriorityAbove);
|
||||
_worldPacket << float(QuickJoinConfig.ThrottleRfIlvlScalingAbove);
|
||||
_worldPacket << float(QuickJoinConfig.ThrottleDfMaxItemLevel);
|
||||
_worldPacket << float(QuickJoinConfig.ThrottleDfBestPriority);
|
||||
}
|
||||
|
||||
if (SessionAlert)
|
||||
@@ -80,6 +94,19 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatus::Write()
|
||||
_worldPacket.append(RaceClassExpansionLevels->data(), RaceClassExpansionLevels->size());
|
||||
}
|
||||
|
||||
if (EuropaTicketSystemStatus)
|
||||
{
|
||||
_worldPacket.WriteBit(EuropaTicketSystemStatus->TicketsEnabled);
|
||||
_worldPacket.WriteBit(EuropaTicketSystemStatus->BugsEnabled);
|
||||
_worldPacket.WriteBit(EuropaTicketSystemStatus->ComplaintsEnabled);
|
||||
_worldPacket.WriteBit(EuropaTicketSystemStatus->SuggestionsEnabled);
|
||||
|
||||
_worldPacket << uint32(EuropaTicketSystemStatus->ThrottleState.MaxTries);
|
||||
_worldPacket << uint32(EuropaTicketSystemStatus->ThrottleState.PerMilliseconds);
|
||||
_worldPacket << uint32(EuropaTicketSystemStatus->ThrottleState.TryCount);
|
||||
_worldPacket << uint32(EuropaTicketSystemStatus->ThrottleState.LastResetTimeBeforeNow);
|
||||
}
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
@@ -94,6 +121,7 @@ WorldPacket const* WorldPackets::System::FeatureSystemStatusGlueScreen::Write()
|
||||
_worldPacket.WriteBit(WillKickFromWorld);
|
||||
_worldPacket.WriteBit(IsExpansionPreorderInStore);
|
||||
_worldPacket.WriteBit(KioskModeEnabled);
|
||||
_worldPacket.WriteBit(CompetitiveModeEnabled);
|
||||
_worldPacket.WriteBit(false); // not accessed in handler
|
||||
_worldPacket.WriteBit(TrialBoostEnabled);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
@@ -52,6 +52,33 @@ namespace WorldPackets
|
||||
int32 DisplayTime = 0;
|
||||
};
|
||||
|
||||
struct SocialQueueConfig
|
||||
{
|
||||
bool ToastsDisabled = false;
|
||||
float ToastDuration = 0.0f;
|
||||
float DelayDuration = 0.0f;
|
||||
float QueueMultiplier = 0.0f;
|
||||
float PlayerMultiplier = 0.0f;
|
||||
float PlayerFriendValue = 0.0f;
|
||||
float PlayerGuildValue = 0.0f;
|
||||
float ThrottleInitialThreshold = 0.0f;
|
||||
float ThrottleDecayTime = 0.0f;
|
||||
float ThrottlePrioritySpike = 0.0f;
|
||||
float ThrottleMinThreshold = 0.0f;
|
||||
float ThrottlePvPPriorityNormal = 0.0f;
|
||||
float ThrottlePvPPriorityLow = 0.0f;
|
||||
float ThrottlePvPHonorThreshold = 0.0f;
|
||||
float ThrottleLfgListPriorityDefault = 0.0f;
|
||||
float ThrottleLfgListPriorityAbove = 0.0f;
|
||||
float ThrottleLfgListPriorityBelow = 0.0f;
|
||||
float ThrottleLfgListIlvlScalingAbove = 0.0f;
|
||||
float ThrottleLfgListIlvlScalingBelow = 0.0f;
|
||||
float ThrottleRfPriorityAbove = 0.0f;
|
||||
float ThrottleRfIlvlScalingAbove = 0.0f;
|
||||
float ThrottleDfMaxItemLevel = 0.0f;
|
||||
float ThrottleDfBestPriority = 0.0f;
|
||||
};
|
||||
|
||||
FeatureSystemStatus() : ServerPacket(SMSG_FEATURE_SYSTEM_STATUS, 48) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
@@ -85,8 +112,10 @@ namespace WorldPackets
|
||||
bool TutorialsEnabled = false;
|
||||
bool NPETutorialsEnabled = false;
|
||||
bool KioskModeEnabled = false;
|
||||
bool CompetitiveModeEnabled = false;
|
||||
|
||||
Optional<std::vector<uint8>> RaceClassExpansionLevels;
|
||||
SocialQueueConfig QuickJoinConfig;
|
||||
};
|
||||
|
||||
class FeatureSystemStatusGlueScreen final : public ServerPacket
|
||||
@@ -105,6 +134,7 @@ namespace WorldPackets
|
||||
bool WillKickFromWorld = false; // NYI
|
||||
bool IsExpansionPreorderInStore = false; // NYI
|
||||
bool KioskModeEnabled = false; // NYI
|
||||
bool CompetitiveModeEnabled = false; // NYI
|
||||
bool TrialBoostEnabled = false; // NYI
|
||||
int32 TokenPollTimeSeconds = 0; // NYI
|
||||
int32 TokenRedeemIndex = 0; // NYI
|
||||
|
||||
@@ -29,6 +29,9 @@ WorldPacket const* WorldPackets::Totem::TotemCreated::Write()
|
||||
_worldPacket << Totem;
|
||||
_worldPacket << int32(Duration);
|
||||
_worldPacket << int32(SpellID);
|
||||
_worldPacket << float(TimeMod);
|
||||
_worldPacket.WriteBit(CannotDismiss);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
@@ -47,6 +47,8 @@ namespace WorldPackets
|
||||
int32 SpellID = 0;
|
||||
int32 Duration = 0;
|
||||
int8 Slot = 0;
|
||||
float TimeMod = 1.0f;
|
||||
bool CannotDismiss = false;
|
||||
};
|
||||
|
||||
class TotemMoved final : public ServerPacket
|
||||
|
||||
@@ -795,7 +795,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_HANDLER(CMSG_TWITTER_CONNECT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_TWITTER_DISCONNECT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_TWITTER_POST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_UI_TIME_REQUEST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleUITimeRequest);
|
||||
DEFINE_HANDLER(CMSG_UI_TIME_REQUEST, STATUS_AUTHED, PROCESS_INPLACE, &WorldSession::HandleUITimeRequest);
|
||||
DEFINE_HANDLER(CMSG_UNACCEPT_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnacceptTradeOpcode);
|
||||
DEFINE_HANDLER(CMSG_UNDELETE_CHARACTER, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharUndeleteOpcode);
|
||||
DEFINE_HANDLER(CMSG_UNLEARN_SKILL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnlearnSkillOpcode);
|
||||
@@ -979,7 +979,6 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_SEND_EVENT, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_SEND_NUM_PENDING, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAMERA_EFFECT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAMERA_SHAKE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_AUTO_REPEAT, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_COMBAT, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_ORPHAN_SPELL_VISUAL, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
@@ -1533,7 +1532,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PETITION_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PET_NAME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PLAYER_NAME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_QUEST_INFO_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_QUEST_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_QUEST_REWARD_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_TIME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_COMPLETION_NPC_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -315,7 +315,7 @@ void WorldSession::LogUnexpectedOpcode(WorldPacket* packet, const char* status,
|
||||
}
|
||||
|
||||
/// Logging helper for unexpected opcodes
|
||||
void WorldSession::LogUnprocessedTail(WorldPacket* packet)
|
||||
void WorldSession::LogUnprocessedTail(WorldPacket const* packet)
|
||||
{
|
||||
if (!sLog->ShouldLog("network.opcode", LOG_LEVEL_TRACE) || packet->rpos() >= packet->wpos())
|
||||
return;
|
||||
|
||||
@@ -1113,7 +1113,7 @@ class TC_GAME_API WorldSession
|
||||
|
||||
void Handle_NULL(WorldPackets::Null& null); // not used
|
||||
void Handle_EarlyProccess(WorldPacket& recvPacket); // just mark packets processed in WorldSocket::OnRead
|
||||
void LogUnprocessedTail(WorldPacket* packet);
|
||||
void LogUnprocessedTail(WorldPacket const* packet);
|
||||
|
||||
void HandleCharEnum(PreparedQueryResult result);
|
||||
void HandleCharEnumOpcode(WorldPackets::Character::EnumCharacters& /*enumCharacters*/);
|
||||
|
||||
Reference in New Issue
Block a user