mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-11 11:48:37 +00:00
[Crash] Fix for crash in Raid::QueuePacket (#3145)
* [Crash] Fix for crash in Raid::QueuePacket * bots can't be a part of BalanceMana * corrected additions * adding additional is_bot gates * updating raid for loops to be range based. * typo * formatting * formatting
This commit is contained in:
+138
-103
@@ -294,12 +294,19 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
case VoiceMacroRaid: {
|
||||
Raid *r = entity_list.GetRaidByID(svm->RaidID);
|
||||
|
||||
if (!r)
|
||||
if (!r) {
|
||||
break;
|
||||
}
|
||||
|
||||
for (int i = 0; i < MAX_RAID_MEMBERS; i++)
|
||||
if (r->members[i].member)
|
||||
r->members[i].member->QueuePacket(outapp);
|
||||
for (const auto& m: r->members) {
|
||||
if (m.is_bot) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (m.member) {
|
||||
m.member->QueuePacket(outapp);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -1055,7 +1062,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
{
|
||||
auto outapp =
|
||||
new EQApplicationPacket(OP_GroupUpdate, sizeof(GroupJoin_Struct));
|
||||
GroupJoin_Struct* outgj = (GroupJoin_Struct*)outapp->pBuffer;
|
||||
auto outgj = (GroupJoin_Struct*)outapp->pBuffer;
|
||||
strcpy(outgj->membername, Inviter->GetName());
|
||||
strcpy(outgj->yourname, Inviter->GetName());
|
||||
outgj->action = groupActInviteInitial; // 'You have formed the group'.
|
||||
@@ -1095,7 +1102,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
Inviter->CastToClient()->UpdateLFP();
|
||||
|
||||
auto pack2 = new ServerPacket(ServerOP_GroupJoin, sizeof(ServerGroupJoin_Struct));
|
||||
ServerGroupJoin_Struct* gj = (ServerGroupJoin_Struct*)pack2->pBuffer;
|
||||
auto gj = (ServerGroupJoin_Struct*)pack2->pBuffer;
|
||||
gj->gid = group->GetID();
|
||||
gj->zoneid = zone->GetZoneID();
|
||||
gj->instance_id = zone->GetInstanceID();
|
||||
@@ -1213,7 +1220,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
break;
|
||||
}
|
||||
case ServerOP_GroupJoin: {
|
||||
ServerGroupJoin_Struct* gj = (ServerGroupJoin_Struct*)pack->pBuffer;
|
||||
auto gj = (ServerGroupJoin_Struct*)pack->pBuffer;
|
||||
if (zone) {
|
||||
if (gj->zoneid == zone->GetZoneID() && gj->instance_id == zone->GetInstanceID())
|
||||
break;
|
||||
@@ -1259,7 +1266,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
break;
|
||||
}
|
||||
case ServerOP_RaidAdd: {
|
||||
ServerRaidGeneralAction_Struct* rga = (ServerRaidGeneralAction_Struct*)pack->pBuffer;
|
||||
auto rga = (ServerRaidGeneralAction_Struct*)pack->pBuffer;
|
||||
if (zone) {
|
||||
if (rga->zoneid == zone->GetZoneID() && rga->instance_id == zone->GetInstanceID())
|
||||
break;
|
||||
@@ -1274,7 +1281,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
break;
|
||||
}
|
||||
case ServerOP_RaidRemove: {
|
||||
ServerRaidGeneralAction_Struct* rga = (ServerRaidGeneralAction_Struct*)pack->pBuffer;
|
||||
auto rga = (ServerRaidGeneralAction_Struct*)pack->pBuffer;
|
||||
if (zone) {
|
||||
if (rga->zoneid == zone->GetZoneID() && rga->instance_id == zone->GetInstanceID())
|
||||
break;
|
||||
@@ -1294,7 +1301,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
break;
|
||||
}
|
||||
case ServerOP_RaidDisband: {
|
||||
ServerRaidGeneralAction_Struct* rga = (ServerRaidGeneralAction_Struct*)pack->pBuffer;
|
||||
auto rga = (ServerRaidGeneralAction_Struct*)pack->pBuffer;
|
||||
if (zone) {
|
||||
if (rga->zoneid == zone->GetZoneID() && rga->instance_id == zone->GetInstanceID())
|
||||
break;
|
||||
@@ -1309,7 +1316,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
break;
|
||||
}
|
||||
case ServerOP_RaidLockFlag: {
|
||||
ServerRaidGeneralAction_Struct* rga = (ServerRaidGeneralAction_Struct*)pack->pBuffer;
|
||||
auto rga = (ServerRaidGeneralAction_Struct*)pack->pBuffer;
|
||||
if (zone) {
|
||||
if (rga->zoneid == zone->GetZoneID() && rga->instance_id == zone->GetInstanceID())
|
||||
break;
|
||||
@@ -1326,7 +1333,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
break;
|
||||
}
|
||||
case ServerOP_RaidChangeGroup: {
|
||||
ServerRaidGeneralAction_Struct* rga = (ServerRaidGeneralAction_Struct*)pack->pBuffer;
|
||||
auto rga = (ServerRaidGeneralAction_Struct*)pack->pBuffer;
|
||||
if (zone) {
|
||||
if (rga->zoneid == zone->GetZoneID() && rga->instance_id == zone->GetInstanceID())
|
||||
break;
|
||||
@@ -1354,7 +1361,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
break;
|
||||
}
|
||||
case ServerOP_UpdateGroup: {
|
||||
ServerRaidGeneralAction_Struct* rga = (ServerRaidGeneralAction_Struct*)pack->pBuffer;
|
||||
auto rga = (ServerRaidGeneralAction_Struct*)pack->pBuffer;
|
||||
if (zone) {
|
||||
if (rga->zoneid == zone->GetZoneID() && rga->instance_id == zone->GetInstanceID())
|
||||
break;
|
||||
@@ -1367,7 +1374,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
break;
|
||||
}
|
||||
case ServerOP_RaidGroupLeader: {
|
||||
ServerRaidGeneralAction_Struct* rga = (ServerRaidGeneralAction_Struct*)pack->pBuffer;
|
||||
auto rga = (ServerRaidGeneralAction_Struct*)pack->pBuffer;
|
||||
if (zone) {
|
||||
if (rga->zoneid == zone->GetZoneID() && rga->instance_id == zone->GetInstanceID())
|
||||
break;
|
||||
@@ -1375,7 +1382,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
break;
|
||||
}
|
||||
case ServerOP_RaidLeader: {
|
||||
ServerRaidGeneralAction_Struct* rga = (ServerRaidGeneralAction_Struct*)pack->pBuffer;
|
||||
auto rga = (ServerRaidGeneralAction_Struct*)pack->pBuffer;
|
||||
if (zone) {
|
||||
if (rga->zoneid == zone->GetZoneID() && rga->instance_id == zone->GetInstanceID())
|
||||
break;
|
||||
@@ -1395,7 +1402,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
break;
|
||||
}
|
||||
case ServerOP_DetailsChange: {
|
||||
ServerRaidGeneralAction_Struct* rga = (ServerRaidGeneralAction_Struct*)pack->pBuffer;
|
||||
auto rga = (ServerRaidGeneralAction_Struct*)pack->pBuffer;
|
||||
if (zone) {
|
||||
if (rga->zoneid == zone->GetZoneID() && rga->instance_id == zone->GetInstanceID())
|
||||
break;
|
||||
@@ -1410,7 +1417,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
break;
|
||||
}
|
||||
case ServerOP_RaidGroupDisband: {
|
||||
ServerRaidGeneralAction_Struct* rga = (ServerRaidGeneralAction_Struct*)pack->pBuffer;
|
||||
auto rga = (ServerRaidGeneralAction_Struct*)pack->pBuffer;
|
||||
if (zone) {
|
||||
if (rga->zoneid == zone->GetZoneID() && rga->instance_id == zone->GetInstanceID())
|
||||
break;
|
||||
@@ -1420,7 +1427,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
{
|
||||
auto outapp =
|
||||
new EQApplicationPacket(OP_GroupUpdate, sizeof(GroupUpdate_Struct));
|
||||
GroupUpdate_Struct* gu = (GroupUpdate_Struct*)outapp->pBuffer;
|
||||
auto gu = (GroupUpdate_Struct*)outapp->pBuffer;
|
||||
gu->action = groupActDisband;
|
||||
strn0cpy(gu->leadersname, c->GetName(), 64);
|
||||
strn0cpy(gu->yourname, c->GetName(), 64);
|
||||
@@ -1430,27 +1437,26 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
break;
|
||||
}
|
||||
case ServerOP_RaidGroupAdd: {
|
||||
ServerRaidGroupAction_Struct* rga = (ServerRaidGroupAction_Struct*)pack->pBuffer;
|
||||
auto rga = (ServerRaidGroupAction_Struct*)pack->pBuffer;
|
||||
if (zone) {
|
||||
Raid *r = entity_list.GetRaidByID(rga->rid);
|
||||
if (r) {
|
||||
r->LearnMembers();
|
||||
r->VerifyRaid();
|
||||
auto outapp = new EQApplicationPacket(OP_GroupUpdate, sizeof(GroupJoin_Struct));
|
||||
GroupJoin_Struct* gj = (GroupJoin_Struct*)outapp->pBuffer;
|
||||
auto gj = (GroupJoin_Struct*)outapp->pBuffer;
|
||||
strn0cpy(gj->membername, rga->membername, 64);
|
||||
gj->action = groupActJoin;
|
||||
|
||||
for (int x = 0; x < MAX_RAID_MEMBERS; x++)
|
||||
{
|
||||
if (r->members[x].member)
|
||||
{
|
||||
if (strcmp(r->members[x].member->GetName(), rga->membername) != 0) {
|
||||
if ((rga->gid < 12) && rga->gid == r->members[x].group_number)
|
||||
{
|
||||
strn0cpy(gj->yourname, r->members[x].member->GetName(), 64);
|
||||
r->members[x].member->QueuePacket(outapp);
|
||||
}
|
||||
for (const auto& m : r->members) {
|
||||
if (m.is_bot) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (m.member && strcmp(m.member->GetName(), rga->membername) != 0) {
|
||||
if ((rga->gid < MAX_RAID_GROUPS) && rga->gid == m.group_number) {
|
||||
strn0cpy(gj->yourname, m.member->GetName(), 64);
|
||||
m.member->QueuePacket(outapp);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1460,27 +1466,26 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
break;
|
||||
}
|
||||
case ServerOP_RaidGroupRemove: {
|
||||
ServerRaidGroupAction_Struct* rga = (ServerRaidGroupAction_Struct*)pack->pBuffer;
|
||||
auto rga = (ServerRaidGroupAction_Struct*)pack->pBuffer;
|
||||
if (zone) {
|
||||
Raid *r = entity_list.GetRaidByID(rga->rid);
|
||||
if (r) {
|
||||
r->LearnMembers();
|
||||
r->VerifyRaid();
|
||||
auto outapp = new EQApplicationPacket(OP_GroupUpdate, sizeof(GroupJoin_Struct));
|
||||
GroupJoin_Struct* gj = (GroupJoin_Struct*)outapp->pBuffer;
|
||||
auto gj = (GroupJoin_Struct*)outapp->pBuffer;
|
||||
strn0cpy(gj->membername, rga->membername, 64);
|
||||
gj->action = groupActLeave;
|
||||
|
||||
for (int x = 0; x < MAX_RAID_MEMBERS; x++)
|
||||
{
|
||||
if (r->members[x].member)
|
||||
{
|
||||
if (strcmp(r->members[x].member->GetName(), rga->membername) != 0) {
|
||||
if ((rga->gid < 12) && rga->gid == r->members[x].group_number)
|
||||
{
|
||||
strn0cpy(gj->yourname, r->members[x].member->GetName(), 64);
|
||||
r->members[x].member->QueuePacket(outapp);
|
||||
}
|
||||
for (const auto& m : r->members) {
|
||||
if (m.is_bot) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (m.member && strcmp(m.member->GetName(), rga->membername) != 0) {
|
||||
if ((rga->gid < MAX_RAID_GROUPS) && rga->gid == m.group_number) {
|
||||
strn0cpy(gj->yourname, m.member->GetName(), 64);
|
||||
m.member->QueuePacket(outapp);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1490,21 +1495,19 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
break;
|
||||
}
|
||||
case ServerOP_RaidGroupSay: {
|
||||
ServerRaidMessage_Struct* rmsg = (ServerRaidMessage_Struct*)pack->pBuffer;
|
||||
auto rmsg = (ServerRaidMessage_Struct*)pack->pBuffer;
|
||||
if (zone) {
|
||||
Raid *r = entity_list.GetRaidByID(rmsg->rid);
|
||||
if (r)
|
||||
{
|
||||
for (int x = 0; x < MAX_RAID_MEMBERS; x++)
|
||||
{
|
||||
if (r->members[x].member) {
|
||||
if (strcmp(rmsg->from, r->members[x].member->GetName()) != 0)
|
||||
{
|
||||
if (r->members[x].group_number == rmsg->gid) {
|
||||
if (!r->members[x].is_bot && r->members[x].member->GetFilter(FilterGroupChat) != 0)
|
||||
{
|
||||
r->members[x].member->ChannelMessageSend(rmsg->from, r->members[x].member->GetName(), ChatChannel_Group, rmsg->language, rmsg->lang_skill, rmsg->message);
|
||||
}
|
||||
if (r) {
|
||||
for (const auto& m :r->members) {
|
||||
if (m.is_bot) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (m.member && strcmp(m.member->GetName(), rmsg->from) != 0) {
|
||||
if (m.group_number == rmsg->gid) {
|
||||
if (m.member->GetFilter(FilterGroupChat) != 0) {
|
||||
m.member->ChannelMessageSend(rmsg->from, m.member->GetName(), ChatChannel_Group, rmsg->language, rmsg->lang_skill, rmsg->message);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1514,20 +1517,20 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
break;
|
||||
}
|
||||
case ServerOP_RaidSay: {
|
||||
ServerRaidMessage_Struct* rmsg = (ServerRaidMessage_Struct*)pack->pBuffer;
|
||||
if (zone)
|
||||
{
|
||||
auto rmsg = (ServerRaidMessage_Struct*)pack->pBuffer;
|
||||
if (zone) {
|
||||
Raid *r = entity_list.GetRaidByID(rmsg->rid);
|
||||
if (r)
|
||||
{
|
||||
for (int x = 0; x < MAX_RAID_MEMBERS; x++)
|
||||
{
|
||||
if (r->members[x].member) {
|
||||
if (strcmp(rmsg->from, r->members[x].member->GetName()) != 0)
|
||||
{
|
||||
if (!r->members[x].is_bot && r->members[x].member->GetFilter(FilterGroupChat) != 0)
|
||||
{
|
||||
r->members[x].member->ChannelMessageSend(rmsg->from, r->members[x].member->GetName(), ChatChannel_Raid, rmsg->language, rmsg->lang_skill, rmsg->message);
|
||||
|
||||
if (r) {
|
||||
for (const auto& m :r->members) {
|
||||
if (m.is_bot) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (m.member) {
|
||||
if (strcmp(rmsg->from, m.member->GetName()) != 0) {
|
||||
if (!m.is_bot && m.member->GetFilter(FilterGroupChat) != 0) {
|
||||
m.member->ChannelMessageSend(rmsg->from, m.member->GetName(), ChatChannel_Raid, rmsg->language, rmsg->lang_skill, rmsg->message);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2144,10 +2147,13 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
} else if (update_type == CZUpdateType_Raid) {
|
||||
auto client_raid = entity_list.GetRaidByID(update_identifier);
|
||||
if (client_raid) {
|
||||
for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) {
|
||||
if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) {
|
||||
auto raid_member = client_raid->members[member_index].member->CastToClient();
|
||||
DialogueWindow::Render(raid_member, message);
|
||||
for (const auto& m : client_raid->members) {
|
||||
if (m.is_bot) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (m.member && m.member->IsClient()) {
|
||||
DialogueWindow::Render( m.member->CastToClient(), message);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2235,24 +2241,27 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
} else if (update_type == CZUpdateType_Raid) {
|
||||
auto client_raid = entity_list.GetRaidByID(update_identifier);
|
||||
if (client_raid) {
|
||||
for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) {
|
||||
auto client_raid_member = client_raid->members[member_index].member;
|
||||
if (client_raid_member && client_raid_member->IsClient()) {
|
||||
for (const auto& m : client_raid->members) {
|
||||
if (m.is_bot) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (m.member && m.member->IsClient()) {
|
||||
switch (update_subtype) {
|
||||
case CZLDoNUpdateSubtype_AddLoss:
|
||||
client_raid_member->UpdateLDoNWinLoss(theme_id, false);
|
||||
m.member->UpdateLDoNWinLoss(theme_id, false);
|
||||
break;
|
||||
case CZLDoNUpdateSubtype_AddPoints:
|
||||
client_raid_member->UpdateLDoNPoints(theme_id, points);
|
||||
m.member->UpdateLDoNPoints(theme_id, points);
|
||||
break;
|
||||
case CZLDoNUpdateSubtype_AddWin:
|
||||
client_raid_member->UpdateLDoNWinLoss(theme_id, true);
|
||||
m.member->UpdateLDoNWinLoss(theme_id, true);
|
||||
break;
|
||||
case CZLDoNUpdateSubtype_RemoveLoss:
|
||||
client_raid_member->UpdateLDoNWinLoss(theme_id, false, true);
|
||||
m.member->UpdateLDoNWinLoss(theme_id, false, true);
|
||||
break;
|
||||
case CZLDoNUpdateSubtype_RemoveWin:
|
||||
client_raid_member->UpdateLDoNWinLoss(theme_id, true, true);
|
||||
m.member->UpdateLDoNWinLoss(theme_id, true, true);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -2365,9 +2374,13 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
} else if (update_type == CZUpdateType_Raid) {
|
||||
auto client_raid = entity_list.GetRaidByID(update_identifier);
|
||||
if (client_raid) {
|
||||
for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) {
|
||||
if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) {
|
||||
auto raid_member = client_raid->members[member_index].member->CastToClient();
|
||||
for (const auto& m : client_raid->members) {
|
||||
if (m.is_bot) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (m.member && m.member->IsClient()) {
|
||||
auto raid_member = m.member->CastToClient();
|
||||
raid_member->SendMarqueeMessage(type, priority, fade_in, fade_out, duration, message);
|
||||
}
|
||||
}
|
||||
@@ -2418,9 +2431,13 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
} else if (update_type == CZUpdateType_Raid) {
|
||||
auto client_raid = entity_list.GetRaidByID(update_identifier);
|
||||
if (client_raid) {
|
||||
for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) {
|
||||
if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) {
|
||||
auto raid_member = client_raid->members[member_index].member->CastToClient();
|
||||
for (const auto& m : client_raid->members) {
|
||||
if (m.is_bot) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (m.member && m.member->IsClient()) {
|
||||
auto raid_member = m.member->CastToClient();
|
||||
raid_member->Message(type, message);
|
||||
}
|
||||
}
|
||||
@@ -2486,9 +2503,13 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
} else if (update_type == CZUpdateType_Raid) {
|
||||
auto client_raid = entity_list.GetRaidByID(update_identifier);
|
||||
if (client_raid) {
|
||||
for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) {
|
||||
if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) {
|
||||
auto raid_member = client_raid->members[member_index].member->CastToClient();
|
||||
for (const auto& m : client_raid->members) {
|
||||
if (m.is_bot) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (m.member && m.member->IsClient()) {
|
||||
auto raid_member = m.member->CastToClient();
|
||||
switch (update_subtype) {
|
||||
case CZMoveUpdateSubtype_MoveZone:
|
||||
raid_member->MoveZone(zone_short_name);
|
||||
@@ -2567,9 +2588,13 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
} else if (update_type == CZUpdateType_Raid) {
|
||||
auto client_raid = entity_list.GetRaidByID(update_identifier);
|
||||
if (client_raid) {
|
||||
for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) {
|
||||
if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) {
|
||||
auto raid_member = client_raid->members[member_index].member->CastToClient();
|
||||
for (const auto& m : client_raid->members) {
|
||||
if (m.is_bot) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (m.member && m.member->IsClient()) {
|
||||
auto raid_member = m.member->CastToClient();
|
||||
raid_member->SetEntityVariable(variable_name, variable_value);
|
||||
}
|
||||
}
|
||||
@@ -2601,7 +2626,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
}
|
||||
case ServerOP_CZSignal:
|
||||
{
|
||||
CZSignal_Struct* CZS = (CZSignal_Struct*) pack->pBuffer;
|
||||
auto CZS = (CZSignal_Struct*) pack->pBuffer;
|
||||
uint8 update_type = CZS->update_type;
|
||||
int update_identifier = CZS->update_identifier;
|
||||
int signal_id = CZS->signal_id;
|
||||
@@ -2624,10 +2649,13 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
} else if (update_type == CZUpdateType_Raid) {
|
||||
auto client_raid = entity_list.GetRaidByID(update_identifier);
|
||||
if (client_raid) {
|
||||
for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) {
|
||||
if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) {
|
||||
auto raid_member = client_raid->members[member_index].member->CastToClient();
|
||||
raid_member->Signal(signal_id);
|
||||
for (const auto& m : client_raid->members) {
|
||||
if (m.is_bot) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (m.member && m.member->IsClient()) {
|
||||
m.member->CastToClient()->Signal(signal_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2696,9 +2724,13 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
} else if (update_type == CZUpdateType_Raid) {
|
||||
auto client_raid = entity_list.GetRaidByID(update_identifier);
|
||||
if (client_raid) {
|
||||
for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) {
|
||||
if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) {
|
||||
auto raid_member = client_raid->members[member_index].member->CastToClient();
|
||||
for (const auto& m : client_raid->members) {
|
||||
if (m.is_bot) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (m.member && m.member->IsClient()) {
|
||||
auto raid_member = m.member->CastToClient();
|
||||
switch (update_subtype) {
|
||||
case CZSpellUpdateSubtype_Cast:
|
||||
raid_member->ApplySpellBuff(spell_id);
|
||||
@@ -2825,9 +2857,12 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
|
||||
} else if (update_type == CZUpdateType_Raid) {
|
||||
auto client_raid = entity_list.GetRaidByID(update_identifier);
|
||||
if (client_raid) {
|
||||
for (int member_index = 0; member_index < MAX_RAID_MEMBERS; member_index++) {
|
||||
if (client_raid->members[member_index].member && client_raid->members[member_index].member->IsClient()) {
|
||||
auto raid_member = client_raid->members[member_index].member->CastToClient();
|
||||
for (const auto& m : client_raid->members) {
|
||||
if (m.is_bot) {
|
||||
continue;
|
||||
}
|
||||
if (m.member && m.member->IsClient()) {
|
||||
auto raid_member = m.member->CastToClient();
|
||||
switch (update_subtype) {
|
||||
case CZTaskUpdateSubtype_ActivityReset:
|
||||
raid_member->ResetTaskActivity(task_identifier, task_subidentifier);
|
||||
|
||||
Reference in New Issue
Block a user