[Fix] Update trader add/remove packets to limits for RoF2 (#4595)

* Update trader add/remove to limit for RoF2

Update trader add/remove to limit for RoF2

* Update for feedback

---------

Co-authored-by: Mitch Freeman <neckkola@gmail.com>
This commit is contained in:
Mitch Freeman
2025-01-19 18:37:09 -04:00
committed by GitHub
parent 035c51944f
commit d47bf687d0
3 changed files with 32 additions and 16 deletions
+25 -16
View File
@@ -3912,21 +3912,8 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
auto in = (TraderMessaging_Struct *) pack->pBuffer;
for (auto const &c: entity_list.GetClientList()) {
if (c.second->ClientVersion() >= EQ::versions::ClientVersion::RoF2) {
auto outapp = new EQApplicationPacket(OP_BecomeTrader, sizeof(BecomeTrader_Struct));
auto out = (BecomeTrader_Struct *) outapp->pBuffer;
switch (in->action) {
case TraderOn: {
out->action = AddTraderToBazaarWindow;
break;
}
case TraderOff: {
out->action = RemoveTraderFromBazaarWindow;
break;
}
default: {
out->action = 0;
}
}
auto outapp = new EQApplicationPacket(OP_BecomeTrader, sizeof(BecomeTrader_Struct));
auto out = (BecomeTrader_Struct *) outapp->pBuffer;
out->entity_id = in->entity_id;
out->zone_id = in->zone_id;
@@ -3934,7 +3921,29 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
out->trader_id = in->trader_id;
strn0cpy(out->trader_name, in->trader_name, sizeof(out->trader_name));
c.second->QueuePacket(outapp, true, Mob::CLIENT_CONNECTED);
switch (in->action) {
case TraderOn: {
out->action = AddTraderToBazaarWindow;
if (c.second->GetTraderCount() <
EQ::constants::StaticLookup(c.second->ClientVersion())->BazaarTraderLimit) {
c.second->IncrementTraderCount();
c.second->QueuePacket(outapp, true, Mob::CLIENT_CONNECTED);
}
break;
}
case TraderOff: {
out->action = RemoveTraderFromBazaarWindow;
c.second->DecrementTraderCount();
c.second->QueuePacket(outapp, true, Mob::CLIENT_CONNECTED);
break;
}
default: {
out->action = 0;
c.second->QueuePacket(outapp, true, Mob::CLIENT_CONNECTED);
}
}
safe_delete(outapp);
}
if (zone && zone->GetZoneID() == Zones::BAZAAR && in->instance_id == zone->GetInstanceID()) {