This commit is contained in:
Chris Miles
2025-06-14 17:01:14 -05:00
parent b071bafdd8
commit 45d891d5b2
2 changed files with 13 additions and 25 deletions
+13 -24
View File
@@ -1337,37 +1337,29 @@ void ConsoleWWMarquee(
) )
{ {
if (args.size() < 2) { if (args.size() < 2) {
connection->SendLine("Usage: marquee <type> <message>"); connection->SendLine("Usage: wwmarquee <type> <message>");
return; return;
} }
const uint32 type = Strings::IsNumber(args[0]) ? Strings::ToUnsignedInt(args[0]) : 0; const uint32 type = Strings::IsNumber(args[0]) ? Strings::ToUnsignedInt(args[0]) : 0;
const uint32 priority = 1; std::string message = Strings::Join(std::vector<std::string>(args.begin() + 1, args.end()), " ");
const uint32 fade_in = 500;
const uint32 fade_out = 500;
const uint32 duration = 5000;
// Join message from args[1..]
std::string message = Strings::Join(std::vector<std::string>(args.begin() + 1, args.end()), " ");
if (message.empty()) { if (message.empty()) {
connection->SendLine("Message cannot be empty."); connection->SendLine("Message cannot be empty.");
return; return;
} }
// Build the CZMarquee_Struct for world broadcast (update_type = character, identifier = 0) auto pack = new ServerPacket(ServerOP_WWMarquee, sizeof(WWMarquee_Struct));
auto pack = new ServerPacket(ServerOP_CZMarquee, sizeof(CZMarquee_Struct)); auto* wwm = (WWMarquee_Struct*)pack->pBuffer;
auto* czm = (CZMarquee_Struct*)pack->pBuffer;
czm->update_type = CZUpdateType_Character; // world-wide wwm->type = type;
czm->update_identifier = 0; wwm->priority = 510;
czm->type = type; wwm->fade_in = 0;
czm->priority = priority; wwm->fade_out = 0;
czm->fade_in = fade_in; wwm->duration = 5000;
czm->fade_out = fade_out; wwm->min_status = AccountStatus::Player;
czm->duration = duration; wwm->max_status = AccountStatus::Player;
strn0cpy(czm->message, message.c_str(), sizeof(czm->message)); strn0cpy(wwm->message, message.c_str(), sizeof(wwm->message));
czm->client_name[0] = '\0'; // unused
zoneserver_list.SendPacket(pack); zoneserver_list.SendPacket(pack);
safe_delete(pack); safe_delete(pack);
@@ -1375,9 +1367,6 @@ void ConsoleWWMarquee(
connection->SendLine(fmt::format("Sent world marquee type {}: {}", type, message)); connection->SendLine(fmt::format("Sent world marquee type {}: {}", type, message));
} }
/** /**
* @param console * @param console
*/ */
-1
View File
@@ -3140,7 +3140,6 @@ void WorldServer::HandleMessage(uint16 opcode, const EQ::Net::Packet &p)
case ServerOP_WWMarquee: case ServerOP_WWMarquee:
{ {
auto s = (WWMarquee_Struct*) pack->pBuffer; auto s = (WWMarquee_Struct*) pack->pBuffer;
for (const auto& c : entity_list.GetClientList()) { for (const auto& c : entity_list.GetClientList()) {
if ( if (
c.second->Admin() >= s->min_status && c.second->Admin() >= s->min_status &&