diff --git a/world/console.cpp b/world/console.cpp index e25be5050..f2cce0000 100644 --- a/world/console.cpp +++ b/world/console.cpp @@ -778,8 +778,14 @@ void ConsoleWorldShutdown( zoneserver_list.WorldShutDown(0, 0); } else if (strcasecmp(args[0].c_str(), "disable") == 0) { - connection->SendLine(":SYSTEM MSG:World shutdown aborted."); - zoneserver_list.SendEmoteMessage(0, 0, 0, 15, ":SYSTEM MSG:World shutdown aborted."); + connection->SendLine("[SYSTEM] World shutdown has been aborted."); + zoneserver_list.SendEmoteMessage( + 0, + 0, + 0, + Chat::Yellow, + "[SYSTEM] World shutdown has been aborted." + ); zoneserver_list.shutdowntimer->Disable(); zoneserver_list.reminder->Disable(); } diff --git a/world/console.old.cpp b/world/console.old.cpp index d7589d6eb..5917b506f 100644 --- a/world/console.old.cpp +++ b/world/console.old.cpp @@ -750,8 +750,20 @@ void Console::ProcessCommand(const char* command) { zoneserver_list.WorldShutDown(0, 0); } else if(strcasecmp(sep.arg[1], "disable") == 0) { - SendEmoteMessage(0,0,0,15,":SYSTEM MSG:World shutdown aborted."); - zoneserver_list.SendEmoteMessage(0,0,0,15,":SYSTEM MSG:World shutdown aborted."); + SendEmoteMessage( + 0, + 0, + 0, + Chat::Yellow, + "[SYSTEM] World shutdown has been aborted." + ); + zoneserver_list.SendEmoteMessage( + 0, + 0, + 0, + Chat::Yellow, + "[SYSTEM] World shutdown has been aborted." + ); zoneserver_list.shutdowntimer->Disable(); zoneserver_list.reminder->Disable(); } diff --git a/world/zonelist.cpp b/world/zonelist.cpp index 9e1239a6c..400c07854 100644 --- a/world/zonelist.cpp +++ b/world/zonelist.cpp @@ -110,7 +110,16 @@ void ZSList::Process() { } if (reminder && reminder->Check() && shutdowntimer) { - SendEmoteMessage(0, 0, 0, 15, ":SYSTEM MSG:World coming down, everyone log out now. World will shut down in %i minutes...", ((shutdowntimer->GetRemainingTime() / 1000) / 60)); + SendEmoteMessage( + 0, + 0, + 0, + Chat::Yellow, + fmt::format( + "[SYSTEM] World will be shutting down in {} minutes.", + ((shutdowntimer->GetRemainingTime() / 1000) / 60) + ).c_str() + ); } } @@ -677,7 +686,16 @@ void ZSList::UpdateUCSServerAvailable(bool ucss_available) { void ZSList::WorldShutDown(uint32 time, uint32 interval) { if (time > 0) { - SendEmoteMessage(0, 0, 0, 15, ":SYSTEM MSG:World coming down in %i minutes, everyone log out before this time.", (time / 60)); + SendEmoteMessage( + 0, + 0, + 0, + Chat::Yellow, + fmt::format( + "[SYSTEM] World will be shutting down in {} minutes.", + (time / 60) + ).c_str() + ); time *= 1000; interval *= 1000; @@ -690,7 +708,7 @@ void ZSList::WorldShutDown(uint32 time, uint32 interval) reminder->Start(); } else { - SendEmoteMessage(0, 0, 0, 15, ":SYSTEM MSG:World coming down, everyone log out now."); + SendEmoteMessage(0, 0, 0, 15, "[SYSTEM] World is shutting down."); auto pack = new ServerPacket; pack->opcode = ServerOP_ShutdownAll; pack->size = 0; diff --git a/zone/command.cpp b/zone/command.cpp index 272f1d4e6..400aee524 100755 --- a/zone/command.cpp +++ b/zone/command.cpp @@ -3197,46 +3197,65 @@ void command_ai(Client *c, const Seperator *sep) void command_worldshutdown(Client *c, const Seperator *sep) { // GM command to shutdown world server and all zone servers - uint32 time=0; - uint32 interval=0; + uint32 time = 0; + uint32 interval = 0; if (worldserver.Connected()) { - if(sep->IsNumber(1) && sep->IsNumber(2) && ((time=atoi(sep->arg[1]))>0) && ((interval=atoi(sep->arg[2]))>0)) { - worldserver.SendEmoteMessage(0,0,15,":SYSTEM MSG:World coming down in %i minutes, everyone log out before this time.", (time / 60 )); - c->Message(Chat::White, "Sending shutdown packet now, World will shutdown in: %i minutes with an interval of: %i seconds", (time / 60), interval); + if ( + sep->IsNumber(1) && + sep->IsNumber(2) && + (time = std::stoi(sep->arg[1]) > 0) && + (interval = std::stoi(sep->arg[2]) > 0) + ) { + int time_minutes = (time / 60); + quest_manager.WorldWideMessage( + Chat::Yellow, + fmt::format( + "[SYSTEM] World will be shutting down in {} minutes.", + time_minutes + ).c_str() + ); + c->Message( + Chat::White, + fmt::format( + "World will be shutting down in {} minutes, notifying every {} seconds", + time_minutes, + interval + ).c_str() + ); auto pack = new ServerPacket(ServerOP_ShutdownAll, sizeof(WorldShutDown_Struct)); WorldShutDown_Struct* wsd = (WorldShutDown_Struct*)pack->pBuffer; - wsd->time=time*1000; - wsd->interval=(interval*1000); + wsd->time = (time * 1000); + wsd->interval = (interval * 1000); worldserver.SendPacket(pack); safe_delete(pack); - } - else if(strcasecmp(sep->arg[1], "now") == 0){ - worldserver.SendEmoteMessage(0,0,15,":SYSTEM MSG:World coming down, everyone log out now."); - c->Message(Chat::White, "Sending shutdown packet"); + } else if (!strcasecmp(sep->arg[1], "now")){ + quest_manager.WorldWideMessage( + Chat::Yellow, + "[SYSTEM] World is shutting down now." + ); + c->Message(Chat::White, "World is shutting down now."); auto pack = new ServerPacket; pack->opcode = ServerOP_ShutdownAll; - pack->size=0; + pack->size = 0; worldserver.SendPacket(pack); safe_delete(pack); - } - else if(strcasecmp(sep->arg[1], "disable") == 0){ - c->Message(Chat::White, "Shutdown prevented, next time I may not be so forgiving..."); + } else if (!strcasecmp(sep->arg[1], "disable")) { + c->Message(Chat::White, "World shutdown has been aborted."); auto pack = new ServerPacket(ServerOP_ShutdownAll, sizeof(WorldShutDown_Struct)); WorldShutDown_Struct* wsd = (WorldShutDown_Struct*)pack->pBuffer; - wsd->time=0; - wsd->interval=0; + wsd->time = 0; + wsd->interval = 0; worldserver.SendPacket(pack); safe_delete(pack); - } - else{ + } else { c->Message(Chat::White,"#worldshutdown - Shuts down the server and all zones."); c->Message(Chat::White,"Usage: #worldshutdown now - Shuts down the server and all zones immediately."); c->Message(Chat::White,"Usage: #worldshutdown disable - Stops the server from a previously scheduled shut down."); - c->Message(Chat::White,"Usage: #worldshutdown [timer] [interval] - Shuts down the server and all zones after [timer] seconds and sends warning every [interval] seconds."); + c->Message(Chat::White,"Usage: #worldshutdown [timer] [interval] - Shuts down the server and all zones after [timer] seconds and notifies players every [interval] seconds."); } + } else { + c->Message(Chat::White, "Error: World server is disconnected."); } - else - c->Message(Chat::White, "Error: World server disconnected"); } void command_sendzonespawns(Client *c, const Seperator *sep)