From d120cf8a403577a4c5f0f015e0d044f1ccbe3d28 Mon Sep 17 00:00:00 2001 From: Kinglykrab <89047260+Kinglykrab@users.noreply.github.com> Date: Tue, 10 May 2022 06:19:07 -0400 Subject: [PATCH] [Commands] #reload Command Overhaul. (#2162) * [Commands] #reload Command Overhaul. - Consolidated #reloadaa, #reloadallrules, #reloadcontentflags, #reloademote, #reloadlevelmods, #reloadmerchants, #reloadperlexportsettings, #reloadqst, #reloadstatic, #reloadtitles, #relaodtraps, #reloadworld, and #reloadzps in to one command. - #reload has 15 different sub commands you may use, including Log Settings and Tasks reloading. - All the reload commands are a part of the Developer Tools Menu messages now, as well as part of the documentation. - Fixes the commands that weren't actually sending their packet to zone server to globally reload stuff. - Added Variables table reloading to command. * Consistency. * Hot reload. * Final big push. --- common/servertalk.h | 75 ++- world/zoneserver.cpp | 43 +- zone/client.cpp | 580 +++++++++++++++++- zone/client.h | 2 + zone/command.cpp | 30 +- zone/command.h | 15 +- zone/entity.cpp | 2 +- zone/gm_commands/logs.cpp | 5 +- zone/gm_commands/reload.cpp | 290 +++++++++ zone/gm_commands/reloadaa.cpp | 11 - zone/gm_commands/reloadallrules.cpp | 13 - zone/gm_commands/reloadcontentflags.cpp | 15 - zone/gm_commands/reloademote.cpp | 9 - zone/gm_commands/reloadlevelmods.cpp | 15 - zone/gm_commands/reloadmerchants.cpp | 10 - zone/gm_commands/reloadperlexportsettings.cpp | 13 - zone/gm_commands/reloadqst.cpp | 23 - zone/gm_commands/reloadstatic.cpp | 10 - zone/gm_commands/reloadtitles.cpp | 13 - zone/gm_commands/reloadtraps.cpp | 65 -- zone/gm_commands/reloadworld.cpp | 40 -- zone/gm_commands/reloadworldrules.cpp | 13 - zone/gm_commands/reloadzps.cpp | 10 - zone/gm_commands/updatechecksum.cpp | 39 +- zone/gm_commands/zheader.cpp | 10 +- zone/worldserver.cpp | 151 +++-- zone/worldserver.h | 2 +- zone/zone.cpp | 92 ++- zone/zone.h | 8 +- 29 files changed, 1081 insertions(+), 523 deletions(-) create mode 100644 zone/gm_commands/reload.cpp delete mode 100755 zone/gm_commands/reloadaa.cpp delete mode 100755 zone/gm_commands/reloadallrules.cpp delete mode 100755 zone/gm_commands/reloadcontentflags.cpp delete mode 100755 zone/gm_commands/reloademote.cpp delete mode 100755 zone/gm_commands/reloadlevelmods.cpp delete mode 100755 zone/gm_commands/reloadmerchants.cpp delete mode 100755 zone/gm_commands/reloadperlexportsettings.cpp delete mode 100755 zone/gm_commands/reloadqst.cpp delete mode 100755 zone/gm_commands/reloadstatic.cpp delete mode 100755 zone/gm_commands/reloadtitles.cpp delete mode 100755 zone/gm_commands/reloadtraps.cpp delete mode 100755 zone/gm_commands/reloadworld.cpp delete mode 100755 zone/gm_commands/reloadworldrules.cpp delete mode 100755 zone/gm_commands/reloadzps.cpp diff --git a/common/servertalk.h b/common/servertalk.h index 15be489221..bcc4d739f0 100644 --- a/common/servertalk.h +++ b/common/servertalk.h @@ -83,17 +83,15 @@ #define ServerOP_UpdateSpawn 0x003f #define ServerOP_SpawnStatusChange 0x0040 #define ServerOP_DropClient 0x0041 // DropClient -#define ServerOP_ReloadTasks 0x0060 -#define ServerOP_DepopAllPlayersCorpses 0x0061 -#define ServerOP_ReloadTitles 0x0062 -#define ServerOP_QGlobalUpdate 0x0063 -#define ServerOP_QGlobalDelete 0x0064 -#define ServerOP_DepopPlayerCorpse 0x0065 -#define ServerOP_RequestTellQueue 0x0066 // client asks for it's tell queues -#define ServerOP_ChangeSharedMem 0x0067 -#define ServerOP_WebInterfaceEvent 0x0068 -#define ServerOP_WebInterfaceSubscribe 0x0069 -#define ServerOP_WebInterfaceUnsubscribe 0x0070 +#define ServerOP_DepopAllPlayersCorpses 0x0060 +#define ServerOP_QGlobalUpdate 0x0061 +#define ServerOP_QGlobalDelete 0x0062 +#define ServerOP_DepopPlayerCorpse 0x0063 +#define ServerOP_RequestTellQueue 0x0064 // client asks for it's tell queues +#define ServerOP_ChangeSharedMem 0x0065 +#define ServerOP_WebInterfaceEvent 0x0066 +#define ServerOP_WebInterfaceSubscribe 0x0067 +#define ServerOP_WebInterfaceUnsubscribe 0x0068 #define ServerOP_RaidAdd 0x0100 //in use #define ServerOP_RaidRemove 0x0101 //in use @@ -213,27 +211,36 @@ #define ServerOP_LauncherZoneStatus 0x3002 #define ServerOP_DoZoneCommand 0x3003 -#define ServerOP_UCSMessage 0x4000 -#define ServerOP_UCSMailMessage 0x4001 -#define ServerOP_ReloadRules 0x4002 -#define ServerOP_ReloadRulesWorld 0x4003 -#define ServerOP_CameraShake 0x4004 -#define ServerOP_QueryServGeneric 0x4005 -#define ServerOP_ReloadWorld 0x4006 -#define ServerOP_ReloadLogs 0x4007 -#define ServerOP_ReloadPerlExportSettings 0x4008 -#define ServerOP_UCSServerStatusRequest 0x4009 -#define ServerOP_UCSServerStatusReply 0x4010 -#define ServerOP_HotReloadQuests 0x4011 -#define ServerOP_UpdateSchedulerEvents 0x4012 -#define ServerOP_ReloadContentFlags 0x4013 -#define ServerOP_ReloadVariablesWorld 0x4014 -#define ServerOP_ReloadLevelEXPMods 0x4015 -#define ServerOP_ReloadMerchants 0x4016 -#define ServerOP_ReloadAAData 0x4017 -#define ServerOP_ReloadTraps 0x4018 -#define ServerOP_ReloadZonePoints 0x4019 -#define ServerOP_ReloadStaticZoneData 0x4020 +#define ServerOP_CameraShake 0x4000 +#define ServerOP_HotReloadQuests 0x4001 +#define ServerOP_QueryServGeneric 0x4002 +#define ServerOP_UCSMailMessage 0x4003 +#define ServerOP_UCSMessage 0x4004 +#define ServerOP_UCSServerStatusReply 0x4005 +#define ServerOP_UCSServerStatusRequest 0x4006 +#define ServerOP_UpdateSchedulerEvents 0x4007 + +#define ServerOP_ReloadAAData 0x4100 +#define ServerOP_ReloadAlternateCurrencies 0x4101 +#define ServerOP_ReloadBlockedSpells 0x4102 +#define ServerOP_ReloadContentFlags 0x4103 +#define ServerOP_ReloadDoors 0x4104 +#define ServerOP_ReloadGroundSpawns 0x4105 +#define ServerOP_ReloadLevelEXPMods 0x4106 +#define ServerOP_ReloadLogs 0x4107 +#define ServerOP_ReloadMerchants 0x4108 +#define ServerOP_ReloadNPCEmotes 0x4109 +#define ServerOP_ReloadObjects 0x4110 +#define ServerOP_ReloadPerlExportSettings 0x4111 +#define ServerOP_ReloadRules 0x4112 +#define ServerOP_ReloadStaticZoneData 0x4113 +#define ServerOP_ReloadTasks 0x4114 +#define ServerOP_ReloadTitles 0x4115 +#define ServerOP_ReloadTraps 0x4116 +#define ServerOP_ReloadVariables 0x4117 +#define ServerOP_ReloadVeteranRewards 0x4118 +#define ServerOP_ReloadWorld 0x4119 +#define ServerOP_ReloadZonePoints 0x4120 #define ServerOP_CZDialogueWindow 0x4500 #define ServerOP_CZLDoNUpdate 0x4501 @@ -1012,8 +1019,8 @@ struct ServerOP_Consent_Struct { }; struct ReloadTasks_Struct { - uint32 Command; - uint32 Parameter; + uint8 reload_type; + uint32 task_id; }; struct ServerDepopAllPlayersCorpses_Struct diff --git a/world/zoneserver.cpp b/world/zoneserver.cpp index 387347dcd9..88e3dfcf03 100644 --- a/world/zoneserver.cpp +++ b/world/zoneserver.cpp @@ -876,29 +876,6 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { client_list.SendClientVersionSummary(srcvss->Name); break; } - case ServerOP_ReloadLogs: { - zoneserver_list.SendPacket(pack); - LogSys.LoadLogDatabaseSettings(); - break; - } - case ServerOP_ReloadRules: { - zoneserver_list.SendPacket(pack); - RuleManager::Instance()->LoadRules(&database, "default", true); - break; - } - case ServerOP_ReloadContentFlags: { - zoneserver_list.SendPacket(pack); - content_service.SetExpansionContext()->ReloadContentFlags(); - break; - } - case ServerOP_ReloadRulesWorld: { - RuleManager::Instance()->LoadRules(&database, "default", true); - break; - } - case ServerOP_ReloadVariablesWorld: { - database.LoadVariables(); - break; - } case ServerOP_FriendsWho: { auto sfw = (ServerFriendsWho_Struct*) pack->pBuffer; client_list.SendFriendsWho(sfw, this); @@ -1327,11 +1304,21 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { case ServerOP_RaidSay: case ServerOP_RefreshCensorship: case ServerOP_ReloadAAData: + case ServerOP_ReloadAlternateCurrencies: + case ServerOP_ReloadBlockedSpells: + case ServerOP_ReloadDoors: + case ServerOP_ReloadGroundSpawns: case ServerOP_ReloadLevelEXPMods: case ServerOP_ReloadMerchants: + case ServerOP_ReloadNPCEmotes: + case ServerOP_ReloadObjects: case ServerOP_ReloadPerlExportSettings: + case ServerOP_ReloadRules: case ServerOP_ReloadStaticZoneData: case ServerOP_ReloadTitles: + case ServerOP_ReloadTraps: + case ServerOP_ReloadVariables: + case ServerOP_ReloadVeteranRewards: case ServerOP_ReloadWorld: case ServerOP_ReloadZonePoints: case ServerOP_RezzPlayerAccept: @@ -1350,6 +1337,16 @@ void ZoneServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) { zoneserver_list.SendPacket(pack); break; } + case ServerOP_ReloadContentFlags: { + zoneserver_list.SendPacket(pack); + content_service.SetExpansionContext()->ReloadContentFlags(); + break; + } + case ServerOP_ReloadLogs: { + zoneserver_list.SendPacket(pack); + LogSys.LoadLogDatabaseSettings(); + break; + } case ServerOP_ReloadTasks: { shared_task_manager.LoadTaskData(); zoneserver_list.SendPacket(pack); diff --git a/zone/client.cpp b/zone/client.cpp index 8ff9b8f873..6324db2a03 100644 --- a/zone/client.cpp +++ b/zone/client.cpp @@ -9514,63 +9514,202 @@ void Client::CheckVirtualZoneLines() void Client::ShowDevToolsMenu() { - std::string menu_commands_search; - std::string menu_commands_show; - std::string reload_commands_show; - std::string devtools_toggle; + std::string menu_search; + std::string menu_show; + std::string menu_reload_one; + std::string menu_reload_two; + std::string menu_reload_three; + std::string menu_reload_four; + std::string menu_reload_five; + std::string menu_reload_six; + std::string menu_reload_seven; + std::string menu_reload_eight; + std::string menu_toggle; /** * Search entity commands */ - menu_commands_search += "[" + EQ::SayLinkEngine::GenerateQuestSaylink("#list npcs", false, "NPC") + "] "; - menu_commands_search += "[" + EQ::SayLinkEngine::GenerateQuestSaylink("#list players", false, "Players") + "] "; - menu_commands_search += "[" + EQ::SayLinkEngine::GenerateQuestSaylink("#list corpses", false, "Corpses") + "] "; - menu_commands_search += "[" + EQ::SayLinkEngine::GenerateQuestSaylink("#list doors", false, "Doors") + "] "; - menu_commands_search += "[" + EQ::SayLinkEngine::GenerateQuestSaylink("#list objects", false, "Objects") + "] "; - menu_commands_search += "[" + EQ::SayLinkEngine::GenerateQuestSaylink("#fz", false, "Zones") + "] "; - menu_commands_search += "[" + EQ::SayLinkEngine::GenerateQuestSaylink("#fi", false, "Items") + "] "; + menu_search += EQ::SayLinkEngine::GenerateQuestSaylink("#list corpses", false, "Corpses"); + menu_search += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#list doors", false, "Doors"); + menu_search += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#finditem", false, "Items"); + menu_search += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#list npcs", false, "NPC"); + menu_search += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#list objects", false, "Objects"); + menu_search += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#list players", false, "Players"); + menu_search += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#findzone", false, "Zones"); /** * Show */ - menu_commands_show += "[" + EQ::SayLinkEngine::GenerateQuestSaylink("#showzonepoints", false, "Zone Points") + "] "; - menu_commands_show += "[" + EQ::SayLinkEngine::GenerateQuestSaylink("#showzonegloballoot", false, "Zone Global Loot") + "] "; + menu_show += EQ::SayLinkEngine::GenerateQuestSaylink("#showzonepoints", false, "Zone Points"); + menu_show += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#showzonegloballoot", false, "Zone Global Loot"); /** * Reload */ - reload_commands_show += "[" + EQ::SayLinkEngine::GenerateQuestSaylink("#rq", false, "Quests") + "] "; - reload_commands_show += "[" + EQ::SayLinkEngine::GenerateQuestSaylink("#reloadmerchants", false, "Merchants") + "] "; - reload_commands_show += "[" + EQ::SayLinkEngine::GenerateQuestSaylink("#reloadallrules", false, "Rules Globally") + "] "; - reload_commands_show += "[" + EQ::SayLinkEngine::GenerateQuestSaylink("#reloadstatic", false, "Ground Spawns") + "] "; - reload_commands_show += "[" + EQ::SayLinkEngine::GenerateQuestSaylink("#reloadstatic", false, "Alternate Currencies") + "] "; - reload_commands_show += "[" + EQ::SayLinkEngine::GenerateQuestSaylink("#reloadstatic", false, "DB Emotes") + "] "; - reload_commands_show += "[" + EQ::SayLinkEngine::GenerateQuestSaylink("#reloadstatic", false, "Doors") + "] "; - reload_commands_show += "[" + EQ::SayLinkEngine::GenerateQuestSaylink("#reloadtraps", false, "Traps") + "] "; - reload_commands_show += "[" + EQ::SayLinkEngine::GenerateQuestSaylink("#reloadzps", false, "Zone Points") + "] "; + menu_reload_one += EQ::SayLinkEngine::GenerateQuestSaylink("#reload aa", false, "AAs"); + menu_reload_one += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#reload alternate_currencies", false, "Alternate Currencies"); + menu_reload_one += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#reload blocked_spells", false, "Blocked Spells"); + menu_reload_one += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#reload content_flags", false, "Content Flags"); + + menu_reload_two += EQ::SayLinkEngine::GenerateQuestSaylink("#reload doors", false, "Doors"); + menu_reload_two += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#reload ground_spawns", false, "Ground Spawns"); + + menu_reload_three += EQ::SayLinkEngine::GenerateQuestSaylink("#reload logs", false, "Level Based Experience Modifiers"); + menu_reload_three += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#reload logs", false, "Log Settings"); + + menu_reload_four += EQ::SayLinkEngine::GenerateQuestSaylink("#reload merchants", false, "Merchants"); + menu_reload_four += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#reload npc_emotes", false, "NPC Emotes"); + menu_reload_four += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#reload objects", false, "Objects"); + + menu_reload_five += EQ::SayLinkEngine::GenerateQuestSaylink("#reload perl_export", false, "Perl Event Export Settings"); + menu_reload_five += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#reload quest", false, "Quests"); + + menu_reload_six += EQ::SayLinkEngine::GenerateQuestSaylink("#reload rules", false, "Rules"); + menu_reload_six += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#reload static", false, "Static Zone Data"); + menu_reload_six += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#reload tasks", false, "Tasks"); + + menu_reload_seven += EQ::SayLinkEngine::GenerateQuestSaylink("#reload titles", false, "Titles"); + menu_reload_seven += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#reload traps 1", false, "Traps"); + menu_reload_seven += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#reload variables", false, "Variables"); + menu_reload_seven += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#reload veteran_rewards", false, "Veteran Rewards"); + + menu_reload_eight += EQ::SayLinkEngine::GenerateQuestSaylink("#reload world", false, "World"); + menu_reload_eight += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#reload zone", false, "Zone"); + menu_reload_eight += " | " + EQ::SayLinkEngine::GenerateQuestSaylink("#reload zone_points", false, "Zone Points"); /** * Show window status */ - devtools_toggle = "Disabled [" + EQ::SayLinkEngine::GenerateQuestSaylink("#devtools enable", false, "Enable") + "] "; + menu_toggle = EQ::SayLinkEngine::GenerateQuestSaylink("#devtools enable", false, "Enable"); if (IsDevToolsEnabled()) { - devtools_toggle = "Enabled [" + EQ::SayLinkEngine::GenerateQuestSaylink("#devtools disable", false, "Disable") + "] "; + menu_toggle = EQ::SayLinkEngine::GenerateQuestSaylink("#devtools disable", false, "Disable"); } /** * Print menu */ SendChatLineBreak(); + + Message(Chat::White, "Developer Tools Menu"); + Message( - Chat::White, "| [Devtools] %s Show this menu with %s | Current expansion [%s]", - devtools_toggle.c_str(), - EQ::SayLinkEngine::GenerateQuestSaylink("#dev", false, "#dev").c_str(), - content_service.GetCurrentExpansionName().c_str() + Chat::White, + fmt::format( + "Current Expansion | {}", + content_service.GetCurrentExpansionName() + ).c_str() ); - Message(Chat::White, "| [Devtools] Search %s", menu_commands_search.c_str()); - Message(Chat::White, "| [Devtools] Show %s", menu_commands_show.c_str()); - Message(Chat::White, "| [Devtools] Reload %s", reload_commands_show.c_str()); - Message(Chat::White, "| [Devtools] Search commands with #help "); + + Message( + Chat::White, + fmt::format( + "Show Menu | {}", + EQ::SayLinkEngine::GenerateQuestSaylink("#dev", false, "#dev") + ).c_str() + ); + + Message( + Chat::White, + fmt::format( + "Toggle | {}", + menu_toggle + ).c_str() + ); + + Message( + Chat::White, + fmt::format( + "Search | {}", + menu_search + ).c_str() + ); + + Message( + Chat::White, + fmt::format( + "Show | {}", + menu_show + ).c_str() + ); + + Message( + Chat::White, + fmt::format( + "Reload | {}", + menu_reload_one + ).c_str() + ); + + Message( + Chat::White, + fmt::format( + "Reload | {}", + menu_reload_two + ).c_str() + ); + + Message( + Chat::White, + fmt::format( + "Reload | {}", + menu_reload_three + ).c_str() + ); + + Message( + Chat::White, + fmt::format( + "Reload | {}", + menu_reload_four + ).c_str() + ); + + Message( + Chat::White, + fmt::format( + "Reload | {}", + menu_reload_five + ).c_str() + ); + + Message( + Chat::White, + fmt::format( + "Reload | {}", + menu_reload_six + ).c_str() + ); + + Message( + Chat::White, + fmt::format( + "Reload | {}", + menu_reload_seven + ).c_str() + ); + + Message( + Chat::White, + fmt::format( + "Reload | {}", + menu_reload_eight + ).c_str() + ); + + auto help_link = EQ::SayLinkEngine::GenerateQuestSaylink( + "#help", + false, + "#help" + ); + + Message( + Chat::White, + fmt::format( + "Note: You can search for commands with {} [Search String]", + help_link + ).c_str() + ); + SendChatLineBreak(); } @@ -11049,6 +11188,383 @@ void Client::ReconnectUCS() safe_delete(outapp); } +void Client::SendReloadCommandMessages() { + SendChatLineBreak(); + + auto aa_link = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload aa", + false, + "#reload aa" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} - Reloads Alternate Advancement Data globally", + aa_link + ).c_str() + ); + + auto alternate_currencies_link = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload alternate_currencies", + false, + "#reload alternate_currencies" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} - Reloads Alternate Currencies globally", + alternate_currencies_link + ).c_str() + ); + + auto blocked_spells_link = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload blocked_spells", + false, + "#reload blocked_spells" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} - Reloads Blocked Spells globally", + blocked_spells_link + ).c_str() + ); + + auto content_flags_link = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload content_flags", + false, + "#reload content_flags" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} - Reloads Content Flags globally", + content_flags_link + ).c_str() + ); + + auto doors_link = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload doors", + false, + "#reload doors" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} - Reloads Doors globally", + doors_link + ).c_str() + ); + + auto ground_spawns_link = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload ground_spawns", + false, + "#reload ground_spawns" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} - Reloads Ground Spawns globally", + ground_spawns_link + ).c_str() + ); + + auto level_mods_link = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload level_mods", + false, + "#reload level_mods" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} - Reloads Level Based Experience Modifiers globally", + level_mods_link + ).c_str() + ); + + auto logs_link = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload logs", + false, + "#reload logs" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} - Reloads Log Settings globally", + logs_link + ).c_str() + ); + + auto merchants_link = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload merchants", + false, + "#reload merchants" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} - Reloads Merchants globally", + merchants_link + ).c_str() + ); + + auto npc_emotes_link = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload npc_emotes", + false, + "#reload npc_emotes" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} - Reloads NPC Emotes globally", + npc_emotes_link + ).c_str() + ); + + auto objects_link = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload objects", + false, + "#reload objects" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} - Reloads Objects globally", + objects_link + ).c_str() + ); + + auto perl_export_link = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload perl_export", + false, + "#reload perl_export" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} - Reloads Perl Event Export Settings globally", + perl_export_link + ).c_str() + ); + + auto quest_link_one = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload quest", + false, + "#reload quest" + ); + + auto quest_link_two = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload quest", + false, + "0" + ); + + auto quest_link_three = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload quest 1", + false, + "1" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} [{}|{}] - Reloads Quests and Timers in your current zone if specified (0 = Do Not Reload Timers, 1 = Reload Timers)", + quest_link_one, + quest_link_two, + quest_link_three + ).c_str() + ); + + auto rules_link = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload rules", + false, + "#reload rules" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} - Reloads Rules globally", + rules_link + ).c_str() + ); + + auto static_link = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload static", + false, + "#reload static" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} - Reloads Static Zone Data globally", + static_link + ).c_str() + ); + + auto tasks_link = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload tasks", + false, + "#reload tasks" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} [Task ID] - Reloads Tasks globally or by ID if specified", + tasks_link + ).c_str() + ); + + auto titles_link = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload titles", + false, + "#reload titles" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} - Reloads Titles globally", + titles_link + ).c_str() + ); + + auto traps_link_one = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload traps", + false, + "#reload traps" + ); + + auto traps_link_two = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload traps", + false, + "0" + ); + + auto traps_link_three = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload traps 1", + false, + "1" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} [{}|{}] - Reloads Traps in your current zone or globally if specified", + traps_link_one, + traps_link_two, + traps_link_three + ).c_str() + ); + + auto variables_link = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload variables", + false, + "#reload variables" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} - Reloads Variables globally", + variables_link + ).c_str() + ); + + auto veteran_rewards_link = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload veteran_rewards", + false, + "#reload veteran_rewards" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} - Reloads Veteran Rewards globally", + veteran_rewards_link + ).c_str() + ); + + auto world_link_one = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload world", + false, + "#reload world" + ); + + auto world_link_two = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload world", + false, + "0" + ); + + auto world_link_three = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload world 1", + false, + "1" + ); + + auto world_link_four = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload world 2", + false, + "2" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} [{}|{}|{}] - Reloads Quests and repops globally if specified (0 = No Repop, 1 = Repop, 2 = Force Repop)", + world_link_one, + world_link_two, + world_link_three, + world_link_four + ).c_str() + ); + + auto zone_link = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload zone", + false, + "#reload zone" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} [Zone ID] [Version] - Reloads Zone configuration for your current zone, can load another Zone's configuration if specified", + zone_link + ).c_str() + ); + + auto zone_points_link = EQ::SayLinkEngine::GenerateQuestSaylink( + "#reload zone_points", + false, + "#reload zone_points" + ); + + Message( + Chat::White, + fmt::format( + "Usage: {} - Reloads Zone Points globally", + zone_points_link + ).c_str() + ); + + SendChatLineBreak(); +} + bool Client::CheckMerchantDataBucket(uint8 bucket_comparison, std::string bucket_value, std::string player_value) { std::vector bucket_checks; diff --git a/zone/client.h b/zone/client.h index 8036e148b9..2841226222 100644 --- a/zone/client.h +++ b/zone/client.h @@ -1503,6 +1503,8 @@ class Client : public Mob bool GroupFollow(Client* inviter); inline bool GetRunMode() const { return runmode; } + void SendReloadCommandMessages(); + void SendItemRecastTimer(int32 recast_type, uint32 recast_delay = 0); void SetItemRecastTimer(int32 spell_id, uint32 inventory_slot); bool HasItemRecastTimer(int32 spell_id, uint32 inventory_slot); diff --git a/zone/command.cpp b/zone/command.cpp index b8117d5ff0..43e755a7c3 100755 --- a/zone/command.cpp +++ b/zone/command.cpp @@ -283,20 +283,7 @@ int command_init(void) command_add("raidloot", "[All|GroupLeader|RaidLeader|Selected] - Sets your Raid Loot Type if you have permission to do so.", AccountStatus::Player, command_raidloot) || command_add("randomfeatures", "- Temporarily randomizes the Facial Features of your target", AccountStatus::QuestTroupe, command_randomfeatures) || command_add("refreshgroup", "- Refreshes Group for you or your player target.", AccountStatus::Player, command_refreshgroup) || - command_add("reloadaa", "Reloads Alternate Advancement data globally", AccountStatus::GMMgmt, command_reloadaa) || - command_add("reloadallrules", "Executes a reload of all rules globally.", AccountStatus::QuestTroupe, command_reloadallrules) || - 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", "Reloads level based experience modifiers globally", AccountStatus::Max, command_reloadlevelmods) || - 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) || - command_add("reloadstatic", "- Reload Static Zone Data globally", AccountStatus::GMLeadAdmin, command_reloadstatic) || - command_add("reloadtraps", "[0|1] - Reloads and repops traps, globally if specified (1 = global)", AccountStatus::QuestTroupe, command_reloadtraps) || - command_add("reloadtitles", "- Reload player titles from the database", AccountStatus::GMLeadAdmin, command_reloadtitles) || - command_add("reloadworld", "[0|1|2] - Reload quests global and repop NPCs if specified (0 = No Repop, 1 = Repop, 2 = Force Repop)", AccountStatus::Max, command_reloadworld) || - command_add("reloadzps", "- Reload zone points from database globally", AccountStatus::GMLeadAdmin, command_reloadzps) || + command_add("reload", "Reloads different types of server data globally, use no argument for help menu.", AccountStatus::GMMgmt, command_reload) || command_add("removeitem", "[Item ID] [Amount] - Removes the specified Item ID by Amount from you or your player target's inventory (Amount defaults to 1 if not used)", AccountStatus::GMAdmin, command_removeitem) || command_add("repop", "[Force] - Repop the zone with optional force repop", AccountStatus::GMAdmin, command_repop) || command_add("resetaa", "- Resets a Player's AA in their profile and refunds spent AA's to unspent, may disconnect player.", AccountStatus::GMMgmt, command_resetaa) || @@ -1311,20 +1298,7 @@ void command_bot(Client *c, const Seperator *sep) #include "gm_commands/raidloot.cpp" #include "gm_commands/randomfeatures.cpp" #include "gm_commands/refreshgroup.cpp" -#include "gm_commands/reloadaa.cpp" -#include "gm_commands/reloadallrules.cpp" -#include "gm_commands/reloadcontentflags.cpp" -#include "gm_commands/reloademote.cpp" -#include "gm_commands/reloadlevelmods.cpp" -#include "gm_commands/reloadmerchants.cpp" -#include "gm_commands/reloadperlexportsettings.cpp" -#include "gm_commands/reloadqst.cpp" -#include "gm_commands/reloadstatic.cpp" -#include "gm_commands/reloadtitles.cpp" -#include "gm_commands/reloadtraps.cpp" -#include "gm_commands/reloadworld.cpp" -#include "gm_commands/reloadworldrules.cpp" -#include "gm_commands/reloadzps.cpp" +#include "gm_commands/reload.cpp" #include "gm_commands/removeitem.cpp" #include "gm_commands/repop.cpp" #include "gm_commands/resetaa.cpp" diff --git a/zone/command.h b/zone/command.h index 6a7b13bbab..ab25202ba4 100644 --- a/zone/command.h +++ b/zone/command.h @@ -204,20 +204,7 @@ void command_race(Client *c, const Seperator *sep); void command_raidloot(Client *c, const Seperator *sep); void command_randomfeatures(Client *c, const Seperator *sep); void command_refreshgroup(Client *c, const Seperator *sep); -void command_reloadaa(Client *c, const Seperator *sep); -void command_reloadallrules(Client *c, const Seperator *sep); -void command_reloadcontentflags(Client *c, const Seperator *sep); -void command_reloademote(Client *c, const Seperator *sep); -void command_reloadlevelmods(Client *c, const Seperator *sep); -void command_reloadmerchants(Client *c, const Seperator *sep); -void command_reloadperlexportsettings(Client *c, const Seperator *sep); -void command_reloadqst(Client *c, const Seperator *sep); -void command_reloadstatic(Client *c, const Seperator *sep); -void command_reloadtitles(Client *c, const Seperator *sep); -void command_reloadtraps(Client *c, const Seperator *sep); -void command_reloadworld(Client *c, const Seperator *sep); -void command_reloadworldrules(Client *c, const Seperator *sep); -void command_reloadzps(Client *c, const Seperator *sep); +void command_reload(Client *c, const Seperator *sep); void command_removeitem(Client *c, const Seperator *sep); void command_repop(Client *c, const Seperator *sep); void command_resetaa(Client *c, const Seperator *sep); diff --git a/zone/entity.cpp b/zone/entity.cpp index bbc05975ed..1f786cb4c8 100644 --- a/zone/entity.cpp +++ b/zone/entity.cpp @@ -4614,7 +4614,7 @@ uint16 EntityList::CreateDoor(const char *model, const glm::vec4& position, uint auto door = new Doors(model, position, opentype, size); RemoveAllDoors(); - zone->LoadZoneDoors(zone->GetShortName(), zone->GetInstanceVersion()); + zone->LoadZoneDoors(); entity_list.AddDoor(door); entity_list.RespawnAllDoors(); diff --git a/zone/gm_commands/logs.cpp b/zone/gm_commands/logs.cpp index ed7e0ab913..2460ab62dc 100755 --- a/zone/gm_commands/logs.cpp +++ b/zone/gm_commands/logs.cpp @@ -130,12 +130,9 @@ void command_logs(Client *c, const Seperator *sep) ); } } else if (is_reload) { + c->Message(Chat::White, "Attempting to reload Log Settings globally."); auto pack = new ServerPacket(ServerOP_ReloadLogs, 0); worldserver.SendPacket(pack); - c->Message( - Chat::White, - "Reloaded log settings worldwide." - ); safe_delete(pack); } else if (is_set && sep->IsNumber(3)) { auto logs_set = false; diff --git a/zone/gm_commands/reload.cpp b/zone/gm_commands/reload.cpp new file mode 100644 index 0000000000..16526152e0 --- /dev/null +++ b/zone/gm_commands/reload.cpp @@ -0,0 +1,290 @@ +#include "../client.h" + +void command_reload(Client *c, const Seperator *sep) +{ + int arguments = sep->argnum; + if (!arguments) { + c->SendReloadCommandMessages(); + return; + } + + bool is_aa = !strcasecmp(sep->arg[1], "aa"); + bool is_alternate_currencies = !strcasecmp(sep->arg[1], "alternate_currencies"); + bool is_blocked_spells = !strcasecmp(sep->arg[1], "blocked_spells"); + bool is_content_flags = !strcasecmp(sep->arg[1], "content_flags"); + bool is_doors = !strcasecmp(sep->arg[1], "doors"); + bool is_ground_spawns = !strcasecmp(sep->arg[1], "ground_spawns"); + bool is_level_mods = !strcasecmp(sep->arg[1], "level_mods"); + bool is_logs = !strcasecmp(sep->arg[1], "logs"); + bool is_merchants = !strcasecmp(sep->arg[1], "merchants"); + bool is_npc_emotes = !strcasecmp(sep->arg[1], "npc_emotes"); + bool is_objects = !strcasecmp(sep->arg[1], "objects"); + bool is_perl_export = !strcasecmp(sep->arg[1], "perl_export"); + bool is_quest = !strcasecmp(sep->arg[1], "quest"); + bool is_rules = !strcasecmp(sep->arg[1], "rules"); + bool is_static = !strcasecmp(sep->arg[1], "static"); + bool is_tasks = !strcasecmp(sep->arg[1], "tasks"); + bool is_titles = !strcasecmp(sep->arg[1], "titles"); + bool is_traps = !strcasecmp(sep->arg[1], "traps"); + bool is_variables = !strcasecmp(sep->arg[1], "variables"); + bool is_veteran_rewards = !strcasecmp(sep->arg[1], "veteran_rewards"); + bool is_world = !strcasecmp(sep->arg[1], "world"); + bool is_zone = !strcasecmp(sep->arg[1], "zone"); + bool is_zone_points = !strcasecmp(sep->arg[1], "zone_points"); + + if ( + !is_aa && + !is_alternate_currencies && + !is_blocked_spells && + !is_content_flags && + !is_doors && + !is_ground_spawns && + !is_level_mods && + !is_logs && + !is_merchants && + !is_npc_emotes && + !is_objects && + !is_perl_export && + !is_quest && + !is_rules && + !is_static && + !is_tasks && + !is_titles && + !is_traps && + !is_variables && + !is_veteran_rewards && + !is_world && + !is_zone && + !is_zone_points + ) { + c->SendReloadCommandMessages(); + return; + } + + auto pack = new ServerPacket; + + if (is_aa) { + c->Message(Chat::White, "Attempting to reload Alternate Advancement Data globally."); + pack = new ServerPacket(ServerOP_ReloadAAData, 0); + } else if (is_alternate_currencies) { + c->Message(Chat::White, "Attempting to reload Alternate Currencies globally."); + pack = new ServerPacket(ServerOP_ReloadAlternateCurrencies, 0); + } else if (is_blocked_spells) { + c->Message(Chat::White, "Attempting to reload Blocked Spells globally."); + pack = new ServerPacket(ServerOP_ReloadBlockedSpells, 0); + } else if (is_content_flags) { + c->Message(Chat::White, "Attempting to reload Content Flags globally."); + pack = new ServerPacket(ServerOP_ReloadContentFlags, 0); + } else if (is_doors) { + c->Message(Chat::White, "Attempting to reload Doors globally."); + pack = new ServerPacket(ServerOP_ReloadDoors, 0); + } else if (is_ground_spawns) { + c->Message(Chat::White, "Attempting to reload Ground Spawns globally."); + pack = new ServerPacket(ServerOP_ReloadGroundSpawns, 0); + } else if (is_level_mods) { + if (!RuleB(Zone, LevelBasedEXPMods)) { + c->Message(Chat::White, "Level Based Experience Modifiers are disabled."); + return; + } + + c->Message(Chat::White, "Attempting to reload Level Based Experience Modifiers globally."); + pack = new ServerPacket(ServerOP_ReloadLevelEXPMods, 0); + } else if (is_logs) { + c->Message(Chat::White, "Attempting to reload Log Settings globally."); + pack = new ServerPacket(ServerOP_ReloadLogs, 0); + } else if (is_merchants) { + c->Message(Chat::White, "Attempting to reload Merchants globally."); + pack = new ServerPacket(ServerOP_ReloadMerchants, 0); + } else if (is_npc_emotes) { + c->Message(Chat::White, "Attempting to reload NPC Emotes globally."); + pack = new ServerPacket(ServerOP_ReloadNPCEmotes, 0); + } else if (is_objects) { + c->Message(Chat::White, "Attempting to reload Objects globally."); + pack = new ServerPacket(ServerOP_ReloadObjects, 0); + } else if (is_perl_export) { + c->Message(Chat::White, "Attempting to reload Perl Event Export Settings globally."); + pack = new ServerPacket(ServerOP_ReloadPerlExportSettings, 0); + } else if (is_quest) { + bool stop_timers = false; + + if (sep->IsNumber(2)) { + stop_timers = std::stoi(sep->arg[2]) != 0 ? true : false; + } + + std::string stop_timers_message = stop_timers ? " and timers stopped" : ""; + + c->Message( + Chat::Yellow, + fmt::format( + "Quests reloaded{} for {}.", + stop_timers_message, + zone->GetZoneDescription() + ).c_str() + ); + + entity_list.ClearAreas(); + parse->ReloadQuests(stop_timers); + } else if (is_rules) { + c->Message(Chat::White, "Attempting to reload Rules globally."); + pack = new ServerPacket(ServerOP_ReloadRules, 0); + } else if (is_static) { + c->Message(Chat::White, "Attempting to reload Static Zone Data globally."); + pack = new ServerPacket(ServerOP_ReloadStaticZoneData, 0); + } else if (is_tasks) { + uint32 task_id = 0; + if (!sep->IsNumber(2)) { + c->Message(Chat::White, "Attempting to reload Tasks globally."); + pack = new ServerPacket(ServerOP_ReloadTasks, sizeof(ReloadTasks_Struct)); + } else { + task_id = std::stoul(sep->arg[2]); + } + + auto rts = (ReloadTasks_Struct*) pack->pBuffer; + rts->reload_type = RELOADTASKS; + rts->task_id = task_id; + } else if (is_titles) { + c->Message(Chat::White, "Attempting to reload Titles globally."); + pack = new ServerPacket(ServerOP_ReloadTitles, 0); + } else if (is_traps) { + if (arguments < 2 || !sep->IsNumber(2)) { + entity_list.UpdateAllTraps(true, true); + c->Message( + Chat::Yellow, + fmt::format( + "Traps reloaded for {}.", + zone->GetZoneDescription() + ).c_str() + ); + return; + } + + bool global = std::stoi(sep->arg[2]) ? true : false; + + if (!global) { + entity_list.UpdateAllTraps(true, true); + c->Message( + Chat::Yellow, + fmt::format( + "Traps reloaded for {}.", + zone->GetZoneDescription() + ).c_str() + ); + return; + } + + c->Message(Chat::White, "Attempting to reload Traps globally."); + pack = new ServerPacket(ServerOP_ReloadTraps, 0); + } else if (is_variables) { + c->Message(Chat::White, "Attempting to reload Variables globally."); + pack = new ServerPacket(ServerOP_ReloadVariables, 0); + } else if (is_veteran_rewards) { + c->Message(Chat::White, "Attempting to reload Veteran Rewards globally."); + pack = new ServerPacket(ServerOP_ReloadVeteranRewards, 0); + } else if (is_world) { + uint8 global_repop = ReloadWorld::NoRepop; + + if (sep->IsNumber(2)) { + global_repop = static_cast(std::stoul(sep->arg[2])); + + if (global_repop > ReloadWorld::ForceRepop) { + global_repop = ReloadWorld::ForceRepop; + } + } + + c->Message( + Chat::White, + fmt::format( + "Attempting to reload Quests {}worldwide.", + ( + global_repop ? + ( + global_repop == ReloadWorld::Repop ? + "and repop NPCs " : + "and forcefully repop NPCs " + ) : + "" + ) + ).c_str() + ); + + pack = new ServerPacket(ServerOP_ReloadWorld, sizeof(ReloadWorld_Struct)); + auto RW = (ReloadWorld_Struct *) pack->pBuffer; + RW->global_repop = global_repop; + } else if (is_zone) { + if (arguments < 2) { + c->Message( + Chat::White, + fmt::format( + "Zone Header Load {} | Zone: {}", + ( + zone->LoadZoneCFG(zone->GetShortName(), zone->GetInstanceVersion()) ? + "Suceeded" : + "Failed" + ), + zone->GetZoneDescription() + ).c_str() + ); + return; + } + + auto zone_id = ( + sep->IsNumber(2) ? + std::stoul(sep->arg[2]) : + ZoneID(sep->arg[2]) + ); + if (!zone_id) { + c->Message( + Chat::White, + fmt::format( + "Zone ID {} could not be found.", + zone_id + ).c_str() + ); + return; + } + + auto zone_short_name = ZoneName(zone_id); + auto zone_long_name = ZoneLongName(zone_id); + auto version = ( + sep->IsNumber(3) ? + std::stoul(sep->arg[3]) : + 0 + ); + + auto outapp = new EQApplicationPacket(OP_NewZone, sizeof(NewZone_Struct)); + memcpy(outapp->pBuffer, &zone->newzone_data, outapp->size); + entity_list.QueueClients(c, outapp); + safe_delete(outapp); + + c->Message( + Chat::White, + fmt::format( + "Zone Header Load {} | Zone: {} ({}){}", + ( + zone->LoadZoneCFG(zone_short_name, version) ? + "Suceeded" : + "Failed" + ), + zone_long_name, + zone_short_name, + ( + version ? + fmt::format( + " Version: {}", + version + ) : + "" + ) + ).c_str() + ); + } else if (is_zone_points) { + c->Message(Chat::White, "Attempting to reloading Zone Points globally."); + pack = new ServerPacket(ServerOP_ReloadZonePoints, 0); + } + + if (pack->opcode) { + worldserver.SendPacket(pack); + } + + safe_delete(pack); +} diff --git a/zone/gm_commands/reloadaa.cpp b/zone/gm_commands/reloadaa.cpp deleted file mode 100755 index 4f6f29907f..0000000000 --- a/zone/gm_commands/reloadaa.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include "../client.h" -#include "../../common/file_util.h" - -void command_reloadaa(Client *c, const Seperator *sep) -{ - c->Message(Chat::White, "Attempted to reload Alternate Advancement data globally."); - auto pack = new ServerPacket(ServerOP_ReloadAAData, 0); - worldserver.SendPacket(pack); - safe_delete(pack); -} - diff --git a/zone/gm_commands/reloadallrules.cpp b/zone/gm_commands/reloadallrules.cpp deleted file mode 100755 index 01d86a8b87..0000000000 --- a/zone/gm_commands/reloadallrules.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "../client.h" -#include "../worldserver.h" - -extern WorldServer worldserver; - -void command_reloadallrules(Client *c, const Seperator *sep) -{ - c->Message(Chat::White, "Attempting to reload all rules globally."); - auto pack = new ServerPacket(ServerOP_ReloadRules, 0); - worldserver.SendPacket(pack); - safe_delete(pack); -} - diff --git a/zone/gm_commands/reloadcontentflags.cpp b/zone/gm_commands/reloadcontentflags.cpp deleted file mode 100755 index 2098fa3299..0000000000 --- a/zone/gm_commands/reloadcontentflags.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "../client.h" -#include "../worldserver.h" - -extern WorldServer worldserver; - -void command_reloadcontentflags(Client *c, const Seperator *sep) -{ - if (c) { - auto pack = new ServerPacket(ServerOP_ReloadContentFlags, 0); - worldserver.SendPacket(pack); - c->Message(Chat::Red, "Successfully sent the packet to world to reload content flags globally."); - safe_delete(pack); - } -} - diff --git a/zone/gm_commands/reloademote.cpp b/zone/gm_commands/reloademote.cpp deleted file mode 100755 index 3003776e49..0000000000 --- a/zone/gm_commands/reloademote.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#include "../client.h" - -void command_reloademote(Client *c, const Seperator *sep) -{ - zone->NPCEmoteList.Clear(); - zone->LoadNPCEmotes(&zone->NPCEmoteList); - c->Message(Chat::White, "NPC emotes reloaded."); -} - diff --git a/zone/gm_commands/reloadlevelmods.cpp b/zone/gm_commands/reloadlevelmods.cpp deleted file mode 100755 index 87217744f2..0000000000 --- a/zone/gm_commands/reloadlevelmods.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "../client.h" - -void command_reloadlevelmods(Client *c, const Seperator *sep) -{ - if (!RuleB(Zone, LevelBasedEXPMods)) { - c->Message(Chat::White, "Level based experience modifiers are disabled."); - return; - } - - c->Message(Chat::White, "Attempted to reload level based experience modifiers globally."); - auto pack = new ServerPacket(ServerOP_ReloadLevelEXPMods, 0); - worldserver.SendPacket(pack); - safe_delete(pack); -} - diff --git a/zone/gm_commands/reloadmerchants.cpp b/zone/gm_commands/reloadmerchants.cpp deleted file mode 100755 index d13d8d0169..0000000000 --- a/zone/gm_commands/reloadmerchants.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include "../client.h" - -void command_reloadmerchants(Client *c, const Seperator *sep) -{ - 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/gm_commands/reloadperlexportsettings.cpp b/zone/gm_commands/reloadperlexportsettings.cpp deleted file mode 100755 index 90f907be6a..0000000000 --- a/zone/gm_commands/reloadperlexportsettings.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "../client.h" -#include "../worldserver.h" - -extern WorldServer worldserver; - -void command_reloadperlexportsettings(Client *c, const Seperator *sep) -{ - c->Message(Chat::White, "Attempting to reload Perl event export settings globally."); - auto pack = new ServerPacket(ServerOP_ReloadPerlExportSettings, 0); - worldserver.SendPacket(pack); - safe_delete(pack); -} - diff --git a/zone/gm_commands/reloadqst.cpp b/zone/gm_commands/reloadqst.cpp deleted file mode 100755 index 48909377a9..0000000000 --- a/zone/gm_commands/reloadqst.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "../client.h" -#include "../quest_parser_collection.h" - -void command_reloadqst(Client *c, const Seperator *sep) -{ - bool stop_timers = false; - - if (sep->IsNumber(1)) { - stop_timers = std::stoi(sep->arg[1]) != 0 ? true : false; - } - - std::string stop_timers_message = stop_timers ? " and stopping timers" : ""; - c->Message( - Chat::White, - fmt::format( - "Clearing quest memory cache{}.", - stop_timers_message - ).c_str() - ); - entity_list.ClearAreas(); - parse->ReloadQuests(stop_timers); -} - diff --git a/zone/gm_commands/reloadstatic.cpp b/zone/gm_commands/reloadstatic.cpp deleted file mode 100755 index e1ab6de146..0000000000 --- a/zone/gm_commands/reloadstatic.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include "../client.h" - -void command_reloadstatic(Client *c, const Seperator *sep) -{ - c->Message(Chat::White, "Attempting to reload static zone data globally."); - auto pack = new ServerPacket(ServerOP_ReloadStaticZoneData, 0); - worldserver.SendPacket(pack); - safe_delete(pack); -} - diff --git a/zone/gm_commands/reloadtitles.cpp b/zone/gm_commands/reloadtitles.cpp deleted file mode 100755 index 93af6a95f0..0000000000 --- a/zone/gm_commands/reloadtitles.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "../client.h" -#include "../worldserver.h" - -extern WorldServer worldserver; - -void command_reloadtitles(Client *c, const Seperator *sep) -{ - c->Message(Chat::White, "Attempting to reload titles globally."); - auto pack = new ServerPacket(ServerOP_ReloadTitles, 0); - worldserver.SendPacket(pack); - safe_delete(pack); -} - diff --git a/zone/gm_commands/reloadtraps.cpp b/zone/gm_commands/reloadtraps.cpp deleted file mode 100755 index 3712c8e04e..0000000000 --- a/zone/gm_commands/reloadtraps.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "../client.h" - -void command_reloadtraps(Client *c, const Seperator *sep) -{ - int arguments = sep->argnum; - if (!arguments) { - entity_list.UpdateAllTraps(true, true); - c->Message( - Chat::Yellow, - fmt::format( - "Traps reloaded for {}{}.", - fmt::format( - "{} ({})", - zone->GetLongName(), - zone->GetZoneID() - ), - ( - zone->GetInstanceID() ? - fmt::format( - " (Instance ID {})", - zone->GetInstanceID() - ) : - "" - ) - ).c_str() - ); - return; - } - - bool global = false; - - if (sep->IsNumber(1)) { - global = std::stoi(sep->arg[1]) ? true : false; - } - - if (!global) { - entity_list.UpdateAllTraps(true, true); - c->Message( - Chat::Yellow, - fmt::format( - "Traps reloaded for {}{}.", - fmt::format( - "{} ({})", - zone->GetLongName(), - zone->GetZoneID() - ), - ( - zone->GetInstanceID() ? - fmt::format( - " (Instance ID {})", - zone->GetInstanceID() - ) : - "" - ) - ).c_str() - ); - return; - } - - c->Message(Chat::White, "Attempting to reload traps globally."); - auto pack = new ServerPacket(ServerOP_ReloadTraps, 0); - worldserver.SendPacket(pack); - safe_delete(pack); -} - diff --git a/zone/gm_commands/reloadworld.cpp b/zone/gm_commands/reloadworld.cpp deleted file mode 100755 index 4cc67ec569..0000000000 --- a/zone/gm_commands/reloadworld.cpp +++ /dev/null @@ -1,40 +0,0 @@ -#include "../client.h" -#include "../worldserver.h" - -extern WorldServer worldserver; - -void command_reloadworld(Client *c, const Seperator *sep) -{ - uint8 global_repop = ReloadWorld::NoRepop; - - if (sep->IsNumber(1)) { - global_repop = static_cast(std::stoul(sep->arg[1])); - - if (global_repop > ReloadWorld::ForceRepop) { - global_repop = ReloadWorld::ForceRepop; - } - } - - c->Message( - Chat::White, - fmt::format( - "Attempting to reload quests {}worldwide.", - ( - global_repop ? - ( - global_repop == ReloadWorld::Repop ? - "and repop NPCs " : - "and forcefully repop NPCs " - ) : - "" - ) - ).c_str() - ); - - auto pack = new ServerPacket(ServerOP_ReloadWorld, sizeof(ReloadWorld_Struct)); - ReloadWorld_Struct *RW = (ReloadWorld_Struct *) pack->pBuffer; - RW->global_repop = global_repop; - worldserver.SendPacket(pack); - safe_delete(pack); -} - diff --git a/zone/gm_commands/reloadworldrules.cpp b/zone/gm_commands/reloadworldrules.cpp deleted file mode 100755 index 0ea36737d8..0000000000 --- a/zone/gm_commands/reloadworldrules.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include "../client.h" -#include "../worldserver.h" - -extern WorldServer worldserver; - -void command_reloadworldrules(Client *c, const Seperator *sep) -{ - c->Message(Chat::White, "Attempting to reload world only rules."); - auto pack = new ServerPacket(ServerOP_ReloadRulesWorld, 0); - worldserver.SendPacket(pack); - safe_delete(pack); -} - diff --git a/zone/gm_commands/reloadzps.cpp b/zone/gm_commands/reloadzps.cpp deleted file mode 100755 index b7929e26ce..0000000000 --- a/zone/gm_commands/reloadzps.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include "../client.h" - -void command_reloadzps(Client *c, const Seperator *sep) -{ - c->Message(Chat::White, "Attempting to reloading server zone points globally."); - auto pack = new ServerPacket(ServerOP_ReloadZonePoints, 0); - worldserver.SendPacket(pack); - safe_delete(pack); -} - diff --git a/zone/gm_commands/updatechecksum.cpp b/zone/gm_commands/updatechecksum.cpp index 3550eb7e2c..f84fafb28e 100755 --- a/zone/gm_commands/updatechecksum.cpp +++ b/zone/gm_commands/updatechecksum.cpp @@ -6,30 +6,23 @@ extern WorldServer worldserver; void command_updatechecksum(Client *c, const Seperator *sep) { - if (c) { - // if account found - auto account = AccountRepository::FindOne(database, c->AccountID()); - if (account.id > 0) { - database.SetVariable("crc_eqgame", account.crc_eqgame); - database.SetVariable("crc_skillcaps", account.crc_skillcaps); - database.SetVariable("crc_basedata", account.crc_basedata); - - // reload rules (world) - auto pack = new ServerPacket(ServerOP_ReloadRulesWorld, 0); - worldserver.SendPacket(pack); - c->Message(Chat::Red, "Successfully sent the packet to world to reload rules. (only world)"); - safe_delete(pack); + auto account = AccountRepository::FindOne(database, c->AccountID()); + if (!account.id) { + c->Message(Chat::White, "Your account was not found!"); + return; + } - // reload variables (world) - pack = new ServerPacket(ServerOP_ReloadVariablesWorld, 0); - worldserver.SendPacket(pack); - c->Message(Chat::Red, "Successfully sent the packet to world to reload variables. (only world)"); - safe_delete(pack); + database.SetVariable("crc_eqgame", account.crc_eqgame); + database.SetVariable("crc_skillcaps", account.crc_skillcaps); + database.SetVariable("crc_basedata", account.crc_basedata); - return; - } + c->Message(Chat::White, "Attempting to reload Rules globally."); + auto pack = new ServerPacket(ServerOP_ReloadRules, 0); + worldserver.SendPacket(pack); + safe_delete(pack); - // we should never see this - c->Message(Chat::Red, "Error: Your account was not found!"); - } + c->Message(Chat::White, "Attempting to reload Variables globally."); + pack = new ServerPacket(ServerOP_ReloadVariables, 0); + worldserver.SendPacket(pack); + safe_delete(pack); } diff --git a/zone/gm_commands/zheader.cpp b/zone/gm_commands/zheader.cpp index f04672e63a..6965a758aa 100755 --- a/zone/gm_commands/zheader.cpp +++ b/zone/gm_commands/zheader.cpp @@ -9,9 +9,9 @@ void command_zheader(Client *c, const Seperator *sep) } auto zone_id = ( - sep->IsNumber(1) ? - std::stoul(sep->arg[1]) : - ZoneID(sep->arg[1]) + sep->IsNumber(2) ? + std::stoul(sep->arg[2]) : + ZoneID(sep->arg[2]) ); if (!zone_id) { c->Message( @@ -27,8 +27,8 @@ void command_zheader(Client *c, const Seperator *sep) auto zone_short_name = ZoneName(zone_id); auto zone_long_name = ZoneLongName(zone_id); auto version = ( - sep->IsNumber(2) ? - std::stoul(sep->arg[2]) : + sep->IsNumber(3) ? + std::stoul(sep->arg[3]) : 0 ); diff --git a/zone/worldserver.cpp b/zone/worldserver.cpp index db361dd6ea..1f16228c05 100644 --- a/zone/worldserver.cpp +++ b/zone/worldserver.cpp @@ -1894,17 +1894,43 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) break; } case ServerOP_ReloadAAData: - { + { zone->SendReloadMessage("Alternate Advancement Data"); zone->LoadAlternateAdvancement(); break; } + case ServerOP_ReloadAlternateCurrencies: + { + zone->SendReloadMessage("Alternate Currencies"); + zone->LoadAlternateCurrencies(); + break; + } + case ServerOP_ReloadBlockedSpells: + { + zone->SendReloadMessage("Blocked Spells"); + zone->LoadZoneBlockedSpells(); + break; + } case ServerOP_ReloadContentFlags: { zone->SendReloadMessage("Content Flags"); content_service.SetExpansionContext()->ReloadContentFlags(); break; } + case ServerOP_ReloadDoors: + { + zone->SendReloadMessage("Doors"); + entity_list.RemoveAllDoors(); + zone->LoadZoneDoors(); + entity_list.RespawnAllDoors(); + break; + } + case ServerOP_ReloadGroundSpawns: + { + zone->SendReloadMessage("Ground Spawns"); + zone->LoadGroundSpawns(); + break; + } case ServerOP_ReloadLevelEXPMods: { zone->SendReloadMessage("Level Based Experience Modifiers"); @@ -1922,6 +1948,19 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) entity_list.ReloadMerchants(); break; } + case ServerOP_ReloadNPCEmotes: + { + zone->SendReloadMessage("NPC Emotes"); + zone->LoadNPCEmotes(&zone->NPCEmoteList); + break; + } + case ServerOP_ReloadObjects: + { + zone->SendReloadMessage("Objects"); + entity_list.RemoveAllObjects(); + zone->LoadZoneObjects(); + break; + } case ServerOP_ReloadPerlExportSettings: { zone->SendReloadMessage("Perl Event Export Settings"); @@ -1960,6 +1999,18 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) entity_list.UpdateAllTraps(true, true); break; } + case ServerOP_ReloadVariables: + { + zone->SendReloadMessage("Variables"); + database.LoadVariables(); + break; + } + case ServerOP_ReloadVeteranRewards: + { + zone->SendReloadMessage("Veteran Rewards"); + zone->LoadVeteranRewards(); + break; + } case ServerOP_ReloadWorld: { auto* reload_world = (ReloadWorld_Struct*)pack->pBuffer; @@ -3084,12 +3135,12 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p) zone->SetQuestHotReloadQueued(true); } else if (request_zone_short_name == "all") { std::string reload_quest_saylink = EQ::SayLinkEngine::GenerateQuestSaylink( - "#reloadquest", + "#reload quest", false, "Locally" ); std::string reload_world_saylink = EQ::SayLinkEngine::GenerateQuestSaylink( - "#reloadworld", + "#reload world", false, "Globally" ); @@ -3353,69 +3404,75 @@ bool WorldServer::RezzPlayer(EQApplicationPacket* rpack, uint32 rezzexp, uint32 return ret; } -void WorldServer::SendReloadTasks(int Command, int TaskID) { +void WorldServer::SendReloadTasks(uint8 reload_type, uint32 task_id) { auto pack = new ServerPacket(ServerOP_ReloadTasks, sizeof(ReloadTasks_Struct)); - ReloadTasks_Struct* rts = (ReloadTasks_Struct*)pack->pBuffer; + auto rts = (ReloadTasks_Struct*) pack->pBuffer; - rts->Command = Command; - rts->Parameter = TaskID; + rts->reload_type = reload_type; + rts->task_id = task_id; SendPacket(pack); } void WorldServer::HandleReloadTasks(ServerPacket *pack) { - ReloadTasks_Struct* rts = (ReloadTasks_Struct*)pack->pBuffer; + auto rts = (ReloadTasks_Struct*) pack->pBuffer; - Log(Logs::General, Logs::Tasks, "[GLOBALLOAD] Zone received ServerOP_ReloadTasks from World, Command %i", rts->Command); + LogTasks("Global reload of tasks received with Reload Type [{}] Task ID [{}]", rts->reload_type, rts->task_id); + + switch (rts->reload_type) { + case RELOADTASKS: + { + entity_list.SaveAllClientsTaskState(); - switch (rts->Command) { - case RELOADTASKS: - entity_list.SaveAllClientsTaskState(); + // TODO: Reload at the world level for shared tasks - // TODO: Reload at the world level for shared tasks + if (!rts->task_id) { + LogTasks("Global reload of all Tasks"); + safe_delete(task_manager); + task_manager = new TaskManager; + task_manager->LoadTasks(); - if (rts->Parameter == 0) { - Log(Logs::General, Logs::Tasks, "[GLOBALLOAD] Reload ALL tasks"); - safe_delete(task_manager); - task_manager = new TaskManager; - task_manager->LoadTasks(); + if (zone) { + task_manager->LoadProximities(zone->GetZoneID()); + } + + entity_list.ReloadAllClientsTaskState(); + } else { + LogTasks("Global reload of Task ID [{}]", rts->task_id); + task_manager->LoadTasks(rts->task_id); + entity_list.ReloadAllClientsTaskState(rts->task_id); + } + + break; + } + case RELOADTASKPROXIMITIES: + { if (zone) { + LogTasks("Global reload of all Task Proximities"); task_manager->LoadProximities(zone->GetZoneID()); } - entity_list.ReloadAllClientsTaskState(); + + break; } - else { - Log(Logs::General, Logs::Tasks, "[GLOBALLOAD] Reload only task %i", rts->Parameter); - task_manager->LoadTasks(rts->Parameter); - entity_list.ReloadAllClientsTaskState(rts->Parameter); + case RELOADTASKGOALLISTS: + { + LogTasks("Global reload of all Task Goal Lists"); + task_manager->ReloadGoalLists(); + break; } - - break; - - case RELOADTASKPROXIMITIES: - if (zone) { - Log(Logs::General, Logs::Tasks, "[GLOBALLOAD] Reload task proximities"); - task_manager->LoadProximities(zone->GetZoneID()); + case RELOADTASKSETS: + { + LogTasks("Global reload of all Task Sets"); + task_manager->LoadTaskSets(); + break; + } + default: + { + LogTasks("Unhandled global reload of Tasks Reload Type [{}] Task ID [{}]", rts->reload_type, rts->task_id); + break; } - break; - - case RELOADTASKGOALLISTS: - Log(Logs::General, Logs::Tasks, "[GLOBALLOAD] Reload task goal lists"); - task_manager->ReloadGoalLists(); - break; - - case RELOADTASKSETS: - Log(Logs::General, Logs::Tasks, "[GLOBALLOAD] Reload task sets"); - task_manager->LoadTaskSets(); - break; - - default: - Log(Logs::General, Logs::Tasks, "[GLOBALLOAD] Unhandled ServerOP_ReloadTasks command %i", rts->Command); - } - - } diff --git a/zone/worldserver.h b/zone/worldserver.h index bcccb67b7d..49b1514008 100644 --- a/zone/worldserver.h +++ b/zone/worldserver.h @@ -51,7 +51,7 @@ class WorldServer { void SetLaunchedName(const char *n) { m_launchedName = n; } void SetLauncherName(const char *n) { m_launcherName = n; } - void SendReloadTasks(int Command, int TaskID=0); + void SendReloadTasks(uint8 reload_type, uint32 task_id = 0); void HandleReloadTasks(ServerPacket *pack); void UpdateLFP(uint32 LeaderID, uint8 Action, uint8 MatchFilter, uint32 FromLevel, uint32 ToLevel, uint32 Classes, const char *Comments, GroupLFPMemberEntry *LFPMembers); diff --git a/zone/zone.cpp b/zone/zone.cpp index 59c8c8dc74..553940bd5a 100755 --- a/zone/zone.cpp +++ b/zone/zone.cpp @@ -86,7 +86,7 @@ Zone* zone = 0; void UpdateWindowTitle(char* iNewTitle); -bool Zone::Bootup(uint32 iZoneID, uint32 iInstanceID, bool iStaticZone) { +bool Zone::Bootup(uint32 iZoneID, uint32 iInstanceID, bool is_static) { const char* zonename = ZoneName(iZoneID); if (iZoneID == 0 || zonename == 0) @@ -103,7 +103,7 @@ bool Zone::Bootup(uint32 iZoneID, uint32 iInstanceID, bool iStaticZone) { zone = new Zone(iZoneID, iInstanceID, zonename); //init the zone, loads all the data, etc - if (!zone->Init(iStaticZone)) { + if (!zone->Init(is_static)) { safe_delete(zone); std::cerr << "Zone->Init failed" << std::endl; worldserver.SetZoneData(0); @@ -151,14 +151,14 @@ bool Zone::Bootup(uint32 iZoneID, uint32 iInstanceID, bool iStaticZone) { LogInfo("---- Zone server [{}], listening on port:[{}] ----", zonename, ZoneConfig::get()->ZonePort); LogInfo("Zone Bootup: [{}] [{}] ([{}]: [{}])", - (iStaticZone) ? "Static" : "Dynamic", zonename, iZoneID, iInstanceID); + (is_static) ? "Static" : "Dynamic", zonename, iZoneID, iInstanceID); parse->Init(); UpdateWindowTitle(nullptr); // Dynamic zones need to Sync here. // Static zones sync when they connect in worldserver.cpp. // Static zones cannot sync here as request is ignored by worldserver. - if (!iStaticZone) + if (!is_static) { zone->GetTimeSync(); } @@ -925,21 +925,19 @@ void Zone::Shutdown(bool quiet) } } -void Zone::LoadZoneDoors(const char* zone, int16 version) +void Zone::LoadZoneDoors() { - LogInfo("Loading doors for [{}] ", zone); + LogInfo("Loading doors for [{}] ", GetShortName()); - auto door_entries = content_db.LoadDoors(zone, version); - if (door_entries.empty()) - { + auto door_entries = content_db.LoadDoors(GetShortName(), GetInstanceVersion()); + if (door_entries.empty()) { LogInfo("No doors loaded"); return; } - for (const auto& entry : door_entries) - { - auto newdoor = new Doors(entry); - entity_list.AddDoor(newdoor); + for (const auto &entry : door_entries) { + auto d = new Doors(entry); + entity_list.AddDoor(d); LogDoorsDetail("Door added to entity list, db id: [{}], door_id: [{}]", entry.id, entry.doorid); } } @@ -1081,14 +1079,14 @@ Zone::~Zone() { } //Modified for timezones. -bool Zone::Init(bool iStaticZone) { - SetStaticZone(iStaticZone); +bool Zone::Init(bool is_static) { + SetStaticZone(is_static); //load the zone config file. - if (!LoadZoneCFG(zone->GetShortName(), zone->GetInstanceVersion())) { // try loading the zone name... + if (!LoadZoneCFG(GetShortName(), GetInstanceVersion())) { // try loading the zone name... LoadZoneCFG( - zone->GetFileName(), - zone->GetInstanceVersion() + GetFileName(), + GetInstanceVersion() ); } // if that fails, try the file name, then load defaults @@ -1099,9 +1097,9 @@ bool Zone::Init(bool iStaticZone) { } } - zone->zonemap = Map::LoadMapFile(zone->map_name); - zone->watermap = WaterMap::LoadWaterMapfile(zone->map_name); - zone->pathing = IPathfinder::Load(zone->map_name); + zonemap = Map::LoadMapFile(map_name); + watermap = WaterMap::LoadWaterMapfile(map_name); + pathing = IPathfinder::Load(map_name); LogInfo("Loading spawn conditions"); if(!spawn_conditions.LoadSpawnConditions(short_name, instanceid)) { @@ -1158,8 +1156,8 @@ bool Zone::Init(bool iStaticZone) { LogInfo("Flushing old respawn timers"); database.QueryDatabase("DELETE FROM `respawn_times` WHERE (`start` + `duration`) < UNIX_TIMESTAMP(NOW())"); - zone->LoadZoneDoors(zone->GetShortName(), zone->GetInstanceVersion()); - zone->LoadZoneBlockedSpells(zone->GetZoneID()); + LoadZoneDoors(); + LoadZoneBlockedSpells(); //clear trader items if we are loading the bazaar if (strncasecmp(short_name, "bazaar", 6) == 0) { @@ -1167,30 +1165,31 @@ bool Zone::Init(bool iStaticZone) { database.DeleteBuyLines(0); } - zone->LoadLDoNTraps(); - zone->LoadLDoNTrapEntries(); - zone->LoadVeteranRewards(); - zone->LoadAlternateCurrencies(); - zone->LoadNPCEmotes(&NPCEmoteList); + LoadLDoNTraps(); + LoadLDoNTrapEntries(); + LoadVeteranRewards(); + LoadAlternateCurrencies(); + LoadNPCEmotes(&NPCEmoteList); LoadAlternateAdvancement(); content_db.LoadGlobalLoot(); //Load merchant data - zone->GetMerchantDataForZoneLoad(); + GetMerchantDataForZoneLoad(); //Load temporary merchant data - zone->LoadTempMerchantData(); + LoadTempMerchantData(); // Merc data if (RuleB(Mercs, AllowMercs)) { - zone->LoadMercTemplates(); - zone->LoadMercSpells(); + LoadMercTemplates(); + LoadMercSpells(); } - if (RuleB(Zone, LevelBasedEXPMods)) - zone->LoadLevelEXPMods(); + if (RuleB(Zone, LevelBasedEXPMods)) { + LoadLevelEXPMods(); + } petition_list.ClearPetitions(); petition_list.ReadDatabase(); @@ -1202,9 +1201,9 @@ bool Zone::Init(bool iStaticZone) { Expedition::CacheAllFromDatabase(); LogInfo("Loading timezone data"); - zone->zone_time.setEQTimeZone(content_db.GetZoneTZ(zoneid, GetInstanceVersion())); + zone_time.setEQTimeZone(content_db.GetZoneTZ(zoneid, GetInstanceVersion())); - LogInfo("Init Finished: ZoneID = [{}], Time Offset = [{}]", zoneid, zone->zone_time.getEQTimeZone()); + LogInfo("Init Finished: ZoneID = [{}], Time Offset = [{}]", zoneid, zone_time.getEQTimeZone()); LoadGrids(); LoadTickItems(); @@ -1219,7 +1218,6 @@ void Zone::ReloadStaticData() { LogInfo("Reloading Zone Static Data"); LogInfo("Reloading static zone points"); - zone_point_list.Clear(); if (!content_db.LoadStaticZonePoints(&zone_point_list, GetShortName(), GetInstanceVersion())) { LogError("Loading static zone points failed"); } @@ -1245,19 +1243,19 @@ void Zone::ReloadStaticData() { } entity_list.RemoveAllDoors(); - zone->LoadZoneDoors(zone->GetShortName(), zone->GetInstanceVersion()); + LoadZoneDoors(); entity_list.RespawnAllDoors(); - zone->LoadVeteranRewards(); - zone->LoadAlternateCurrencies(); + LoadVeteranRewards(); + LoadAlternateCurrencies(); NPCEmoteList.Clear(); - zone->LoadNPCEmotes(&NPCEmoteList); + LoadNPCEmotes(&NPCEmoteList); //load the zone config file. - if (!LoadZoneCFG(zone->GetShortName(), zone->GetInstanceVersion())) { // try loading the zone name... + if (!LoadZoneCFG(GetShortName(), GetInstanceVersion())) { // try loading the zone name... LoadZoneCFG( - zone->GetFileName(), - zone->GetInstanceVersion() + GetFileName(), + GetInstanceVersion() ); } // if that fails, try the file name, then load defaults @@ -2101,13 +2099,13 @@ void Zone::SetGraveyard(uint32 zoneid, const glm::vec4& graveyardPosition) { m_Graveyard = graveyardPosition; } -void Zone::LoadZoneBlockedSpells(uint32 zone_id) +void Zone::LoadZoneBlockedSpells() { if (!blocked_spells) { - zone_total_blocked_spells = content_db.GetBlockedSpellsCount(zone_id); + zone_total_blocked_spells = content_db.GetBlockedSpellsCount(GetZoneID()); if (zone_total_blocked_spells > 0) { blocked_spells = new ZoneSpellsBlocked[zone_total_blocked_spells]; - if (!content_db.LoadBlockedSpells(zone_total_blocked_spells, blocked_spells, zone_id)) { + if (!content_db.LoadBlockedSpells(zone_total_blocked_spells, blocked_spells, GetZoneID())) { LogError(" Failed to load blocked spells"); ClearBlockedSpells(); } diff --git a/zone/zone.h b/zone/zone.h index 253514e025..8450b0f18a 100755 --- a/zone/zone.h +++ b/zone/zone.h @@ -94,7 +94,7 @@ class MobMovementManager; class Zone { public: - static bool Bootup(uint32 iZoneID, uint32 iInstanceID, bool iStaticZone = false); + static bool Bootup(uint32 iZoneID, uint32 iInstanceID, bool is_static = false); static void Shutdown(bool quiet = false); Zone(uint32 in_zoneid, uint32 in_instanceid, const char *in_short_name); @@ -125,7 +125,7 @@ class Zone { ); bool HasGraveyard(); bool HasWeather(); - bool Init(bool iStaticZone); + bool Init(bool is_static); bool IsCity() const { return (is_city); } bool IsHotzone() const { return (is_hotzone); } bool IsLoaded(); @@ -264,7 +264,7 @@ class Zone { void LoadAdventureFlavor(); void LoadAlternateAdvancement(); void LoadAlternateCurrencies(); - void LoadZoneBlockedSpells(uint32 zone_id); + void LoadZoneBlockedSpells(); void LoadLDoNTrapEntries(); void LoadLDoNTraps(); void LoadLevelEXPMods(); @@ -276,7 +276,7 @@ class Zone { void LoadTempMerchantData(); void LoadTickItems(); void LoadVeteranRewards(); - void LoadZoneDoors(const char *zone, int16 version); + void LoadZoneDoors(); void ReloadStaticData(); void ReloadWorld(uint8 global_repop); void RemoveAuth(const char *iCharName, const char *iLSKey);