From ee86001132f2b294d26626e5732897c245b804f3 Mon Sep 17 00:00:00 2001 From: Kinglykrab <89047260+Kinglykrab@users.noreply.github.com> Date: Fri, 6 May 2022 20:48:46 -0400 Subject: [PATCH] [Commands] Cleanup #reloadmerchants Command. (#2123) * [Commands] Cleanup #reloadmerchants Command. - Cleanup messages and logic. - Make the reloading of merchants global instead of zone specific. * Update worldserver.cpp * Update worldserver.cpp --- common/servertalk.h | 1 + world/zoneserver.cpp | 5 +++++ zone/command.cpp | 2 +- zone/gm_commands/reloadmerchants.cpp | 6 ++++-- zone/worldserver.cpp | 31 ++++++++++++++++++++++++++++ 5 files changed, 42 insertions(+), 3 deletions(-) diff --git a/common/servertalk.h b/common/servertalk.h index 8da15b3f9..ba50142fb 100644 --- a/common/servertalk.h +++ b/common/servertalk.h @@ -228,6 +228,7 @@ #define ServerOP_UpdateSchedulerEvents 0x4012 #define ServerOP_ReloadContentFlags 0x4013 #define ServerOP_ReloadVariablesWorld 0x4014 +#define ServerOP_ReloadMerchants 0x4016 #define ServerOP_ReloadStaticZoneData 0x4020 #define ServerOP_CZDialogueWindow 0x4500 diff --git a/world/zoneserver.cpp b/world/zoneserver.cpp index 741d8b695..7281a843f 100644 --- a/world/zoneserver.cpp +++ b/world/zoneserver.cpp @@ -889,6 +889,11 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { zoneserver_list.SendPacket(pack); break; } + case ServerOP_ReloadMerchants: + { + zoneserver_list.SendPacket(pack); + break; + } case ServerOP_ReloadStaticZoneData: { zoneserver_list.SendPacket(pack); diff --git a/zone/command.cpp b/zone/command.cpp index bb308166d..e7e73fce7 100755 --- a/zone/command.cpp +++ b/zone/command.cpp @@ -292,7 +292,7 @@ int command_init(void) command_add("reloadcontentflags", "Executes a reload of all expansion and content flags", AccountStatus::QuestTroupe, command_reloadcontentflags) || command_add("reloademote", "Reloads NPC Emotes", AccountStatus::QuestTroupe, command_reloademote) || command_add("reloadlevelmods", nullptr, AccountStatus::Max, command_reloadlevelmods) || - command_add("reloadmerchants", nullptr, AccountStatus::Max, command_reloadmerchants) || + command_add("reloadmerchants", "Reloads merchant lists globally", AccountStatus::Max, command_reloadmerchants) || command_add("reloadperlexportsettings", "Reloads Perl event export settings globally", AccountStatus::Max, command_reloadperlexportsettings) || command_add("reloadqst", " - Clear quest cache (any argument causes it to also stop all timers)", AccountStatus::GMLeadAdmin, command_reloadqst) || command_add("reloadrulesworld", "Executes a reload of all rules in world specifically.", AccountStatus::QuestTroupe, command_reloadworldrules) || diff --git a/zone/gm_commands/reloadmerchants.cpp b/zone/gm_commands/reloadmerchants.cpp index 560551682..d13d8d016 100755 --- a/zone/gm_commands/reloadmerchants.cpp +++ b/zone/gm_commands/reloadmerchants.cpp @@ -2,7 +2,9 @@ void command_reloadmerchants(Client *c, const Seperator *sep) { - entity_list.ReloadMerchants(); - c->Message(Chat::Yellow, "Reloading merchants."); + c->Message(Chat::White, "Attempting to reload merchants globally."); + auto pack = new ServerPacket(ServerOP_ReloadMerchants, 0); + worldserver.SendPacket(pack); + safe_delete(pack); } diff --git a/zone/worldserver.cpp b/zone/worldserver.cpp index b14a024db..d7463fd1c 100644 --- a/zone/worldserver.cpp +++ b/zone/worldserver.cpp @@ -2073,6 +2073,36 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) parse->LoadPerlEventExportSettings(parse->perl_event_export_settings); break; } + + case ServerOP_ReloadMerchants: { + if (zone) { + worldserver.SendEmoteMessage( + 0, + 0, + AccountStatus::GMAdmin, + Chat::Yellow, + fmt::format( + "Merchants reloaded for {}{}.", + fmt::format( + "{} ({})", + zone->GetLongName(), + zone->GetZoneID() + ), + ( + zone->GetInstanceID() ? + fmt::format( + " (Instance ID {})", + zone->GetInstanceID() + ) : + "" + ) + ).c_str() + ); + + entity_list.ReloadMerchants(); + } + break; + } case ServerOP_ReloadStaticZoneData: { if (zone) { worldserver.SendEmoteMessage( @@ -2097,6 +2127,7 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) ) ).c_str() ); + zone->ReloadStaticData(); } break;