mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-10 10:50:24 +00:00
[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.
This commit is contained in:
+104
-47
@@ -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->Command) {
|
||||
case RELOADTASKS:
|
||||
entity_list.SaveAllClientsTaskState();
|
||||
switch (rts->reload_type) {
|
||||
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->Parameter == 0) {
|
||||
Log(Logs::General, Logs::Tasks, "[GLOBALLOAD] Reload ALL tasks");
|
||||
safe_delete(task_manager);
|
||||
task_manager = new TaskManager;
|
||||
task_manager->LoadTasks();
|
||||
if (!rts->task_id) {
|
||||
LogTasks("Global reload of 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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user