mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-16 13:09:50 -04:00
Core/PacketIO: Updated and enabled SMSG_RAID_GROUP_ONLY opcode
This commit is contained in:
@@ -21689,14 +21689,9 @@ void Player::UpdateHomebindTime(uint32 time)
|
||||
// GMs never get homebind timer online
|
||||
if (m_InstanceValid || IsGameMaster())
|
||||
{
|
||||
if (m_HomebindTimer) // instance valid, but timer not reset
|
||||
{
|
||||
// hide reminder
|
||||
WorldPacket data(SMSG_RAID_GROUP_ONLY, 4+4);
|
||||
data << uint32(0);
|
||||
data << uint32(0);
|
||||
GetSession()->SendPacket(&data);
|
||||
}
|
||||
if (m_HomebindTimer) // instance valid, but timer not reset
|
||||
SendRaidGroupOnlyMessage(RAID_GROUP_ERR_NONE, 0);
|
||||
|
||||
// instance is valid, reset homebind timer
|
||||
m_HomebindTimer = 0;
|
||||
}
|
||||
@@ -21715,10 +21710,7 @@ void Player::UpdateHomebindTime(uint32 time)
|
||||
// instance is invalid, start homebind timer
|
||||
m_HomebindTimer = 60000;
|
||||
// send message to player
|
||||
WorldPacket data(SMSG_RAID_GROUP_ONLY, 4+4);
|
||||
data << uint32(m_HomebindTimer);
|
||||
data << uint32(1);
|
||||
GetSession()->SendPacket(&data);
|
||||
SendRaidGroupOnlyMessage(RAID_GROUP_ERR_REQUIREMENTS_UNMATCH, m_HomebindTimer);
|
||||
TC_LOG_DEBUG("maps", "PLAYER: Player '%s' (%s) will be teleported to homebind in 60 seconds", GetName().c_str(), GetGUID().ToString().c_str());
|
||||
}
|
||||
}
|
||||
@@ -26766,3 +26758,12 @@ void Player::SendSpellCategoryCooldowns()
|
||||
|
||||
SendDirectMessage(cooldowns.Write());
|
||||
}
|
||||
|
||||
void Player::SendRaidGroupOnlyMessage(RaidGroupReason reason, int32 delay)
|
||||
{
|
||||
WorldPackets::Instance::RaidGroupOnly raidGroupOnly;
|
||||
raidGroupOnly.Delay = delay;
|
||||
raidGroupOnly.Reason = reason;
|
||||
|
||||
GetSession()->SendPacket(raidGroupOnly.Write());
|
||||
}
|
||||
|
||||
@@ -2051,6 +2051,7 @@ class Player : public Unit, public GridObject<Player>
|
||||
static Difficulty CheckLoadedDungeonDifficultyID(Difficulty difficulty);
|
||||
static Difficulty CheckLoadedRaidDifficultyID(Difficulty difficulty);
|
||||
static Difficulty CheckLoadedLegacyRaidDifficultyID(Difficulty difficulty);
|
||||
void SendRaidGroupOnlyMessage(RaidGroupReason reason, int32 delay);
|
||||
|
||||
bool UpdateSkill(uint32 skill_id, uint32 step);
|
||||
bool UpdateSkillPro(uint16 skillId, int32 chance, uint32 step);
|
||||
|
||||
@@ -155,9 +155,7 @@ bool MapManager::CanPlayerEnter(uint32 mapid, Player* player, bool loginCheck)
|
||||
if ((!group || !group->isRaidGroup()) && !sWorld->getBoolConfig(CONFIG_INSTANCE_IGNORE_RAID))
|
||||
{
|
||||
/// @todo this is not a good place to send the message
|
||||
WorldPacket data(SMSG_RAID_GROUP_ONLY);
|
||||
data << uint32(0) << uint32(2);
|
||||
player->GetSession()->SendPacket(&data);
|
||||
player->SendRaidGroupOnlyMessage(RAID_GROUP_ERR_ONLY, 0);
|
||||
TC_LOG_DEBUG("maps", "MAP: Player '%s' must be in a raid group to enter instance '%s'", player->GetName().c_str(), mapName);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -4940,11 +4940,12 @@ enum TokenResult
|
||||
};
|
||||
|
||||
enum RaidGroupReason
|
||||
{
|
||||
RAID_GROUP_ERR_LOWLEVEL = 1,
|
||||
RAID_GROUP_ERR_ONLY = 2,
|
||||
RAID_GROUP_ERR_FULL = 3,
|
||||
RAID_GROUP_ERR_REQUIREMENTS_UNMATCH = 4
|
||||
{
|
||||
RAID_GROUP_ERR_NONE = 0,
|
||||
RAID_GROUP_ERR_LOWLEVEL = 1, // "You are too low level to enter this instance."
|
||||
RAID_GROUP_ERR_ONLY = 2, // "You must be in a raid group to enter this instance."
|
||||
RAID_GROUP_ERR_FULL = 3, // "The instance is full."
|
||||
RAID_GROUP_ERR_REQUIREMENTS_UNMATCH = 4 // "You do not meet the requirements to enter this instance."
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -85,3 +85,11 @@ void WorldPackets::Instance::InstanceLockResponse::Read()
|
||||
{
|
||||
AcceptLock = _worldPacket.ReadBit();
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Instance::RaidGroupOnly::Write()
|
||||
{
|
||||
_worldPacket << Delay;
|
||||
_worldPacket << Reason;
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
@@ -125,6 +125,17 @@ namespace WorldPackets
|
||||
|
||||
bool AcceptLock = false;
|
||||
};
|
||||
|
||||
class RaidGroupOnly final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
RaidGroupOnly() : ServerPacket(SMSG_RAID_GROUP_ONLY, 4 + 4) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
int32 Delay = 0;
|
||||
uint32 Reason = 0;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1534,7 +1534,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_FAILED_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAF_EMAIL_ENABLED_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAID_DIFFICULTY_SET, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAID_GROUP_ONLY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAID_GROUP_ONLY, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAID_INSTANCE_MESSAGE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RAID_MARKERS_CHANGED, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RANDOM_ROLL, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
|
||||
Reference in New Issue
Block a user