[Crash] Fix reload crashes (#2462)

This commit is contained in:
Chris Miles 2022-09-30 07:54:05 -05:00 committed by GitHub
parent 50fc4d68aa
commit 44f760d177
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 67 additions and 35 deletions

View File

@ -1896,20 +1896,26 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
} }
case ServerOP_ReloadAAData: case ServerOP_ReloadAAData:
{ {
if (zone && zone->IsLoaded()) {
zone->SendReloadMessage("Alternate Advancement Data"); zone->SendReloadMessage("Alternate Advancement Data");
zone->LoadAlternateAdvancement(); zone->LoadAlternateAdvancement();
}
break; break;
} }
case ServerOP_ReloadAlternateCurrencies: case ServerOP_ReloadAlternateCurrencies:
{ {
if (zone && zone->IsLoaded()) {
zone->SendReloadMessage("Alternate Currencies"); zone->SendReloadMessage("Alternate Currencies");
zone->LoadAlternateCurrencies(); zone->LoadAlternateCurrencies();
}
break; break;
} }
case ServerOP_ReloadBlockedSpells: case ServerOP_ReloadBlockedSpells:
{ {
if (zone && zone->IsLoaded()) {
zone->SendReloadMessage("Blocked Spells"); zone->SendReloadMessage("Blocked Spells");
zone->LoadZoneBlockedSpells(); zone->LoadZoneBlockedSpells();
}
break; break;
} }
case ServerOP_ReloadCommands: case ServerOP_ReloadCommands:
@ -1926,10 +1932,12 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
} }
case ServerOP_ReloadDoors: case ServerOP_ReloadDoors:
{ {
if (zone && zone->IsLoaded()) {
zone->SendReloadMessage("Doors"); zone->SendReloadMessage("Doors");
entity_list.RemoveAllDoors(); entity_list.RemoveAllDoors();
zone->LoadZoneDoors(); zone->LoadZoneDoors();
entity_list.RespawnAllDoors(); entity_list.RespawnAllDoors();
}
break; break;
} }
case ServerOP_ReloadDzTemplates: case ServerOP_ReloadDzTemplates:
@ -1943,8 +1951,10 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
} }
case ServerOP_ReloadGroundSpawns: case ServerOP_ReloadGroundSpawns:
{ {
if (zone && zone->IsLoaded()) {
zone->SendReloadMessage("Ground Spawns"); zone->SendReloadMessage("Ground Spawns");
zone->LoadGroundSpawns(); zone->LoadGroundSpawns();
}
break; break;
} }
case ServerOP_ReloadLevelEXPMods: case ServerOP_ReloadLevelEXPMods:
@ -1960,21 +1970,27 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
break; break;
} }
case ServerOP_ReloadMerchants: { case ServerOP_ReloadMerchants: {
if (zone && zone->IsLoaded()) {
zone->SendReloadMessage("Merchants"); zone->SendReloadMessage("Merchants");
entity_list.ReloadMerchants(); entity_list.ReloadMerchants();
}
break; break;
} }
case ServerOP_ReloadNPCEmotes: case ServerOP_ReloadNPCEmotes:
{ {
if (zone && zone->IsLoaded()) {
zone->SendReloadMessage("NPC Emotes"); zone->SendReloadMessage("NPC Emotes");
zone->LoadNPCEmotes(&zone->NPCEmoteList); zone->LoadNPCEmotes(&zone->NPCEmoteList);
}
break; break;
} }
case ServerOP_ReloadObjects: case ServerOP_ReloadObjects:
{ {
if (zone && zone->IsLoaded()) {
zone->SendReloadMessage("Objects"); zone->SendReloadMessage("Objects");
entity_list.RemoveAllObjects(); entity_list.RemoveAllObjects();
zone->LoadZoneObjects(); zone->LoadZoneObjects();
}
break; break;
} }
case ServerOP_ReloadPerlExportSettings: case ServerOP_ReloadPerlExportSettings:
@ -1990,13 +2006,15 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
break; break;
} }
case ServerOP_ReloadStaticZoneData: { case ServerOP_ReloadStaticZoneData: {
if (zone && zone->IsLoaded()) {
zone->SendReloadMessage("Static Zone Data"); zone->SendReloadMessage("Static Zone Data");
zone->ReloadStaticData(); zone->ReloadStaticData();
}
break; break;
} }
case ServerOP_ReloadTasks: case ServerOP_ReloadTasks:
{ {
if (RuleB(Tasks, EnableTaskSystem)) { if (RuleB(Tasks, EnableTaskSystem) && zone && zone->IsLoaded()) {
zone->SendReloadMessage("Tasks"); zone->SendReloadMessage("Tasks");
HandleReloadTasks(pack); HandleReloadTasks(pack);
} }
@ -2005,26 +2023,35 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
} }
case ServerOP_ReloadTitles: case ServerOP_ReloadTitles:
{ {
if (zone && zone->IsLoaded()) {
zone->SendReloadMessage("Titles"); zone->SendReloadMessage("Titles");
title_manager.LoadTitles(); title_manager.LoadTitles();
}
break; break;
} }
case ServerOP_ReloadTraps: case ServerOP_ReloadTraps:
{ {
if (zone && zone->IsLoaded()) {
zone->SendReloadMessage("Traps"); zone->SendReloadMessage("Traps");
entity_list.UpdateAllTraps(true, true); entity_list.UpdateAllTraps(true, true);
}
break; break;
} }
case ServerOP_ReloadVariables: case ServerOP_ReloadVariables:
{ {
if (zone && zone->IsLoaded()) {
zone->SendReloadMessage("Variables"); zone->SendReloadMessage("Variables");
database.LoadVariables(); database.LoadVariables();
}
break; break;
} }
case ServerOP_ReloadVeteranRewards: case ServerOP_ReloadVeteranRewards:
{ {
if (zone && zone->IsLoaded()) {
zone->SendReloadMessage("Veteran Rewards"); zone->SendReloadMessage("Veteran Rewards");
zone->LoadVeteranRewards(); zone->LoadVeteranRewards();
}
break; break;
} }
case ServerOP_ReloadWorld: case ServerOP_ReloadWorld:
@ -2037,15 +2064,19 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
} }
case ServerOP_ReloadZonePoints: case ServerOP_ReloadZonePoints:
{ {
if (zone && zone->IsLoaded()) {
zone->SendReloadMessage("Zone Points"); zone->SendReloadMessage("Zone Points");
content_db.LoadStaticZonePoints(&zone->zone_point_list, zone->GetShortName(), zone->GetInstanceVersion()); content_db.LoadStaticZonePoints(&zone->zone_point_list, zone->GetShortName(), zone->GetInstanceVersion());
}
break; break;
} }
case ServerOP_ReloadZoneData: case ServerOP_ReloadZoneData:
{ {
zone_store.LoadZones(content_db); zone_store.LoadZones(content_db);
if (zone && zone->IsLoaded()) {
zone->LoadZoneCFG(zone->GetShortName(), zone->GetInstanceVersion()); zone->LoadZoneCFG(zone->GetShortName(), zone->GetInstanceVersion());
zone->SendReloadMessage("Zone Data"); zone->SendReloadMessage("Zone Data");
}
break; break;
} }
case ServerOP_CameraShake: case ServerOP_CameraShake:

View File

@ -2872,7 +2872,8 @@ std::string Zone::GetZoneDescription()
} }
return fmt::format( return fmt::format(
"{} ({}){}{}", "PID ({}) {} ({}){}{}",
EQ::GetPID(),
GetLongName(), GetLongName(),
GetZoneID(), GetZoneID(),
( (