Update to Client::QueuePacket to not attempt to send a packet to a BoT. Not clean, but a broad solution.

This commit is contained in:
neckkola
2022-01-06 17:18:34 -04:00
parent 42ef4a2891
commit fdb23f1a5f
3 changed files with 41 additions and 24 deletions
+35 -15
View File
@@ -10121,25 +10121,45 @@ void Bot::ProcessRaidInvite(Bot* player_accepting_invite, Client* b_owner) {
if (group) {//add us all if (group) {//add us all
uint32 free_group_id = raid->GetFreeGroup(); uint32 free_group_id = raid->GetFreeGroup();
Client* addClient = nullptr; Client* addClient = nullptr;
Bot* addBot = nullptr;
for (int x = 0; x < 6; x++) { for (int x = 0; x < 6; x++) {
if (group->members[x]) { if (group->members[x]) {
Client* c = nullptr; Client* c = nullptr;
if (group->members[x]->IsBot()) Bot* b = nullptr;
if (group->members[x]->IsBot()) {
b = group->members[x]->CastToBot();
if (x == 0) {
raid->AddBot(b, free_group_id, false, true, false);
raid->SetGroupLeader(b->GetName());
}
else {
raid->AddBot(b, free_group_id, false, false, false);
}
}
else if (group->members[x]->IsClient()) {
c = group->members[x]->CastToClient(); c = group->members[x]->CastToClient();
if (x == 0) {
if (!addClient) raid->AddMember(c, free_group_id, false, true, false);
{ raid->SetGroupLeader(c->GetName());
addClient = c; }
raid->SetGroupLeader(addClient->GetName()); else {
raid->AddMember(c, free_group_id, false, false, false);
}
} }
raid->SendRaidCreate(b_owner); //if (!addClient)
raid->SendMakeLeaderPacketTo(raid->leadername, b_owner); //{
if (group->IsLeader(group->members[x])) // addClient = c;
raid->AddMember(c, free_group_id, false, true); // raid->SetGroupLeader(addClient->GetName());
else //}
raid->AddMember(c, free_group_id);
raid->SendBulkRaid(b_owner); //raid->SendRaidCreate(b_owner);
//raid->SendMakeLeaderPacketTo(raid->leadername, b_owner);
//if (group->IsLeader(group->members[x]))
// raid->AddMember(c, free_group_id, false, true);
// else
// raid->AddMember(c, free_group_id);
//raid->SendRaidGroupAdd(b_owner->GetName(), free_group_id);
if (raid->IsLocked()) { if (raid->IsLocked()) {
raid->SendRaidLockTo(b_owner); raid->SendRaidLockTo(b_owner);
} }
@@ -10149,7 +10169,7 @@ void Bot::ProcessRaidInvite(Bot* player_accepting_invite, Client* b_owner) {
group->DisbandGroup(true); group->DisbandGroup(true);
raid->GroupUpdate(free_group_id); raid->GroupUpdate(free_group_id);
} }
else { else { // Jan 6 this also now works. One player already in a raid, invites one or many bots.
//raid->SendRaidCreate(b_owner); //raid->SendRaidCreate(b_owner);
//raid->SendMakeLeaderPacketTo(raid->leadername, b_owner); //raid->SendMakeLeaderPacketTo(raid->leadername, b_owner);
raid->AddBot(player_accepting_invite); raid->AddBot(player_accepting_invite);
@@ -10346,7 +10366,7 @@ void Bot::ProcessRaidInvite(Bot* player_accepting_invite, Client* b_owner) {
raid->SendRaidLockTo(b_owner); raid->SendRaidLockTo(b_owner);
} }
} }
else { // neither has a group else { // neither has a group - Jan 6 this appears to work now. One ungrouped player, one/many ungrouped bots
raid = new Raid(b_owner); raid = new Raid(b_owner);
entity_list.AddRaid(raid); entity_list.AddRaid(raid);
raid->SetRaidDetails(); raid->SetRaidDetails();
+1 -1
View File
@@ -813,7 +813,7 @@ void Client::QueuePacket(const EQApplicationPacket* app, bool ack_req, CLIENT_CO
AddPacket(app, ack_req); AddPacket(app, ack_req);
} }
else else
if(eqs) if(eqs && !IsBot()) //Mitch added the BoTcheck for a fail safe on trying to send a packet to a BoT!
eqs->QueuePacket(app, ack_req); eqs->QueuePacket(app, ack_req);
} }
+5 -8
View File
@@ -188,7 +188,7 @@ void Raid::AddBot(Bot* b, uint32 group, bool rleader, bool groupleader, bool loo
} }
if (group != RAID_GROUPLESS && groupleader) { if (group != RAID_GROUPLESS && groupleader) {
database.SetRaidGroupLeaderInfo(group, GetID()); database.SetRaidGroupLeaderInfo(group, GetID());
UpdateGroupAAs(group); //UpdateGroupAAs(group);
} }
if (group < 12) if (group < 12)
GroupUpdate(group); GroupUpdate(group);
@@ -1227,12 +1227,7 @@ void Raid::SendBulkRaid(Client *to)
{ {
if(strlen(members[x].membername) > 0 && (strcmp(members[x].membername, to->GetName()) != 0)) //don't send ourself if(strlen(members[x].membername) > 0 && (strcmp(members[x].membername, to->GetName()) != 0)) //don't send ourself
{ {
#ifdef BOTSS
if(!entity_list.GetBotByBotName(members[x].membername))
SendRaidAdd(members[x].membername, to); SendRaidAdd(members[x].membername, to);
#else
SendRaidAdd(members[x].membername, to);
#endif
} }
} }
} }
@@ -1342,8 +1337,10 @@ void Raid::GroupUpdate(uint32 gid, bool initial)
if(strlen(members[x].membername) > 0){ if(strlen(members[x].membername) > 0){
if(members[x].GroupNumber == gid){ if(members[x].GroupNumber == gid){
if(members[x].member) { if(members[x].member) {
SendGroupUpdate(members[x].member); if (members[x].member->IsClient()) { //Mitch added
SendGroupLeadershipAA(members[x].member, gid); SendGroupUpdate(members[x].member);
SendGroupLeadershipAA(members[x].member, gid);
}
} }
} }
} }