Jump to content

[Patch]Announcement


Guest Diantonix

Recommended Posts

This patch is for the Announcement in the chat.

1º Command: Send an announcement to online Gamemasters.

2º Command: Send an announcement to all online GM''s, displaying the name of the sender.

3º Command: Send an announcement to all online players, displaying the name of the sender.

New Link: http://pastebin.com/JnQz6BAG

2c973d37315bab9fe1690c37671b422865ac48f3
src/game/Chat.cpp   |    3 +++
src/game/Chat.h     |    3 +++
src/game/Level1.cpp |   29 +++++++++++++++++++++++++++++
3 files changed, 35 insertions(+), 0 deletions(-)

diff --git a/src/game/Chat.cpp b/src/game/Chat.cpp
index d526d26..8b9c8db 100644
--- a/src/game/Chat.cpp
+++ b/src/game/Chat.cpp
@@ -688,6 +688,9 @@ ChatCommand * ChatHandler::getCommandTable()

        { "aura",           SEC_ADMINISTRATOR,  false, &ChatHandler::HandleAuraCommand,                "", NULL },
        { "unaura",         SEC_ADMINISTRATOR,  false, &ChatHandler::HandleUnAuraCommand,              "", NULL },
+        { "nameannounce",   SEC_MODERATOR,      false, &ChatHandler::HandleNameAnnounceCommand,        "", NULL },
+        { "gmnameannounce", SEC_MODERATOR,      false, &ChatHandler::HandleGMNameAnnounceCommand,      "", NULL },
+        { "gmannounce",     SEC_MODERATOR,      true,  &ChatHandler::HandleGMAnnounceCommand,          "", NULL },
        { "announce",       SEC_MODERATOR,      true,  &ChatHandler::HandleAnnounceCommand,            "", NULL },
        { "notify",         SEC_MODERATOR,      true,  &ChatHandler::HandleNotifyCommand,              "", NULL },
        { "goname",         SEC_MODERATOR,      false, &ChatHandler::HandleGonameCommand,              "", NULL },
diff --git a/src/game/Chat.h b/src/game/Chat.h
index d85c3e7..5511ef3 100644
--- a/src/game/Chat.h
+++ b/src/game/Chat.h
@@ -510,6 +510,9 @@ class ChatHandler
        bool HandleGonameCommand(char* args);
        bool HandleGroupgoCommand(char* args);
        bool HandleRecallCommand(char* args);
+        bool HandleNameAnnounceCommand(char* args);
+        bool HandleGMNameAnnounceCommand(char* args);
+        bool HandleGMAnnounceCommand(char* args);
        bool HandleAnnounceCommand(char* args);
        bool HandleNotifyCommand(char* args);
        bool HandleGPSCommand(char* args);
diff --git a/src/game/Level1.cpp b/src/game/Level1.cpp
index 2831ac0..68dcf3e 100644
--- a/src/game/Level1.cpp
+++ b/src/game/Level1.cpp
@@ -120,6 +120,26 @@ bool ChatHandler::HandleNpcWhisperCommand(char* args)
}
//----------------------------------------------------------

+bool ChatHandler::HandleNameAnnounceCommand(const char* args)
+{
+    WorldPacket data;
+    if (!*args)
+        return false;
+
+    sWorld.SendWorldText(LANG_ANNOUNCE_COLOR, m_session->GetPlayer()->GetName(), args);
+    return true;
+}
+
+bool ChatHandler::HandleGMNameAnnounceCommand(const char* args)
+{
+    WorldPacket data;
+    if (!*args)
+        return false;
+
+    sWorld.SendGMText(LANG_GM_ANNOUNCE_COLOR, m_session->GetPlayer()->GetName(), args);
+    return true;
+}
+
// global announce
bool ChatHandler::HandleAnnounceCommand(char* args)
{
@@ -130,6 +150,15 @@ bool ChatHandler::HandleAnnounceCommand(char* args)
    return true;
}

+// announce to logged in GMs
+bool ChatHandler::HandleGMAnnounceCommand(const char* args)
+{
+    if (!*args)
+        return false;
+
+    sWorld.SendGMText(LANG_GM_BROADCAST,args);
+    return true;
+}
diff --git a/sql/updates/xxxxx_01_mangos_command.sql b/sql/updates/xxxxx_01_mangos_command.sql
new file mode 100644
index 0000000..b23c2ff
--- /dev/null
+++ b/sql/updates/xxxxx_01_mangos_command.sql
@@ -0,0 +1,4 @@
+INSERT INTO `command` VALUES
+('gmannounce',1,'Syntax: .gmannounce $announcement\\r\\nSend an announcement to online Gamemasters.'),
+('gmnameannounce',1,'Syntax: .gmnameannounce $announcement.\\r\\nSend an announcement to all online GM''s, displaying the name of the sender.'),
+('nameannounce',1,'Syntax: .nameannounce $announcement.\\nSend an announcement to all online players, displaying the name of the sender.');
\\ No newline at end of file

Link to comment
Share on other sites

  • 1 month later...

This is from trinity :

World.cpp:

void World::SendGMText(int32 string_id, ...)
{
   va_list ap;
   va_start(ap, string_id);

   Trinity::WorldWorldTextBuilder wt_builder(string_id, &ap);
   Trinity::LocalizedPacketListDo<Trinity::WorldWorldTextBuilder> wt_do(wt_builder);
   for (SessionMap::iterator itr = m_sessions.begin(); itr != m_sessions.end(); ++itr)
   {
       if (!itr->second || !itr->second->GetPlayer() || !itr->second->GetPlayer()->IsInWorld())
           continue;

       if (itr->second->GetSecurity() < SEC_MODERATOR)
           continue;

       wt_do(itr->second->GetPlayer());
   }

   va_end(ap);
}

Link to comment
Share on other sites

for MaNGOS?

void World::SendGMText(int32 string_id, ...)
{
   va_list ap;
   va_start(ap, string_id);

   MaNGOS::WorldWorldTextBuilder wt_builder(string_id, &ap);
   MaNGOS::LocalizedPacketListDo<MaNGOS::WorldWorldTextBuilder> wt_do(wt_builder);
   for (SessionMap::iterator itr = m_sessions.begin(); itr != m_sessions.end(); ++itr)
   {
       if (!itr->second || !itr->second->GetPlayer() || !itr->second->GetPlayer()->IsInWorld())
           continue;

       if (itr->second->GetSecurity() < SEC_MODERATOR)
           continue;

       wt_do(itr->second->GetPlayer());
   }

   va_end(ap);
}

Link to comment
Share on other sites

  • 3 weeks later...

This works fine :

To World.cpp :

void World::SendGMText(int32 string_id, ...)
{
   va_list ap;
   va_start(ap, string_id);

   MaNGOS::WorldWorldTextBuilder wt_builder(string_id, &ap);
   MaNGOS::LocalizedPacketListDo<MaNGOS::WorldWorldTextBuilder> wt_do(wt_builder);
   for(SessionMap::const_iterator itr = m_sessions.begin(); itr != m_sessions.end(); ++itr)
   {
       if(!itr->second || !itr->second->GetPlayer() || !itr->second->GetPlayer()->IsInWorld() )
           continue;

       if (itr->second->GetSecurity() < SEC_MODERATOR)
           continue;

       wt_do(itr->second->GetPlayer());
   }

   va_end(ap);
}

To World.h :

void SendGMText(int32 string_id, ...);

Cordially,

MacWarrior.

Link to comment
Share on other sites

  • 5 weeks later...

This is the final version I made and use :

diff --git a/src/game/Chat.cpp b/src/game/Chat.cpp
index 9702808..82c40d0 100644
--- a/src/game/Chat.cpp
+++ b/src/game/Chat.cpp
@@ -713,6 +713,7 @@ ChatCommand * ChatHandler::getCommandTable()
        { "aura",           SEC_ADMINISTRATOR,  false, &ChatHandler::HandleAuraCommand,                "", NULL },
        { "unaura",         SEC_ADMINISTRATOR,  false, &ChatHandler::HandleUnAuraCommand,              "", NULL },
        { "announce",       SEC_MODERATOR,      true,  &ChatHandler::HandleAnnounceCommand,            "", NULL },
+		{ "gmannounce",  	SEC_MODERATOR,  	true,  &ChatHandler::HandleGmAnnounceCommand,          "", NULL },
        { "notify",         SEC_MODERATOR,      true,  &ChatHandler::HandleNotifyCommand,              "", NULL },
        { "goname",         SEC_MODERATOR,      false, &ChatHandler::HandleGonameCommand,              "", NULL },
        { "namego",         SEC_MODERATOR,      false, &ChatHandler::HandleNamegoCommand,              "", NULL },
diff --git a/src/game/Chat.h b/src/game/Chat.h
index c9d4af7..9999b01 100644
--- a/src/game/Chat.h
+++ b/src/game/Chat.h
@@ -523,6 +523,7 @@ class ChatHandler
        bool HandleGroupgoCommand(char* args);
        bool HandleRecallCommand(char* args);
        bool HandleAnnounceCommand(char* args);
+		bool HandleGmAnnounceCommand(char* args);
        bool HandleNotifyCommand(char* args);
        bool HandleGPSCommand(char* args);
        bool HandleTaxiCheatCommand(char* args);
diff --git a/src/game/Language.h b/src/game/Language.h
index b4f6f47..c86b489 100644
--- a/src/game/Language.h
+++ b/src/game/Language.h
@@ -943,6 +943,8 @@ enum MangosStrings
    //                                    10000-10999

    // Use for custom patches             11000-11999
+	// GmAnnounce
+	LANG_GMSYSTEMMESSAGE				  = 11000,

    // NOT RESERVED IDS                   12000-1999999999
    // `db_script_string` table index     2000000000-2000009999 (MIN_DB_SCRIPT_STRING_ID-MAX_DB_SCRIPT_STRING_ID)
diff --git a/src/game/Level1.cpp b/src/game/Level1.cpp
index c1c7517..bdf2cca 100644
--- a/src/game/Level1.cpp
+++ b/src/game/Level1.cpp
@@ -130,6 +130,16 @@ bool ChatHandler::HandleAnnounceCommand(char* args)
    return true;
}

+// Gm announce
+bool ChatHandler::HandleGmAnnounceCommand(char* args)
+{
+    if(!*args)
+        return false;
+
+    sWorld.SendGMText(LANG_GMSYSTEMMESSAGE,args);
+    return true;
+}
+
//notification player at the screen
bool ChatHandler::HandleNotifyCommand(char* args)
{
diff --git a/src/game/World.cpp b/src/game/World.cpp
index 7445c2d..fafca2b 100644
--- a/src/game/World.cpp
+++ b/src/game/World.cpp
@@ -1626,6 +1626,24 @@ void World::SendWorldText(int32 string_id, ...)
    va_end(ap);
}

+void World::SendGMText(int32 string_id, ...)
+{
+    va_list ap;
+    va_start(ap, string_id);
+
+    MaNGOS::WorldWorldTextBuilder wt_builder(string_id, &ap);
+    MaNGOS::LocalizedPacketListDo<MaNGOS::WorldWorldTextBuilder> wt_do(wt_builder);
+    for(SessionMap::const_iterator itr = m_sessions.begin(); itr != m_sessions.end(); ++itr)
+    {
+        if(!itr->second || !itr->second->GetPlayer() || !itr->second->GetPlayer()->IsInWorld() && itr->second->GetSecurity() =< SEC_MODERATOR)
+            continue;
+
+        wt_do(itr->second->GetPlayer());
+    }
+
+    va_end(ap);
+}
+
/// DEPRICATED, only for debug purpose. Send a System Message to all players (except self if mentioned)
void World::SendGlobalText(const char* text, WorldSession *self)
{
diff --git a/src/game/World.h b/src/game/World.h
index d382489..342f14d 100644
--- a/src/game/World.h
+++ b/src/game/World.h
@@ -500,6 +500,7 @@ class World
        void LoadConfigSettings(bool reload = false);

        void SendWorldText(int32 string_id, ...);
+		void SendGMText(int32 string_id, ...);
        void SendGlobalText(const char* text, WorldSession *self);
        void SendGlobalMessage(WorldPacket *packet, WorldSession *self = 0, uint32 team = 0);
        void SendZoneMessage(uint32 zone, WorldPacket *packet, WorldSession *self = 0, uint32 team = 0);

And the SQL :

DELETE FROM `command` WHERE name = 'gmannounce';
INSERT INTO `command` (name, security, help) VALUES
('gmannounce', 12, 'Display a message to every connected GM. Affiche un message à tous les Mj connectés.');

DELETE FROM mangos_string WHERE entry = 11000;
INSERT INTO mangos_string (entry, content_default, content_loc1, content_loc2, content_loc3, content_loc4, content_loc5, content_loc6, content_loc7, content_loc8) VALUES
(11000,'|cffff0000[GM Announce]: %s|r',NULL,'|cffff0000[Annonce Mj]: %s|r',NULL,NULL,NULL,NULL,NULL,NULL);

Have Fun !

Cordially,

MacWarrior.

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use