Jump to content

[Patch]Announcement


Recommended Posts

Posted

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

Posted

Your patch isn't full, but interesting ;)

* "SendGmText" don't exist.

* You don't add GMAnnounce to chat.cpp

* You don't add GMAnnounce to chat.h

* You don't add LANG_GM_BROADCAST, LANG_ANNOUNCE_COLOR & LANG_GM_ANNOUNCE_COLOR to language.h

Cordially,

MacWarrior.

  • 1 month later...
Posted
The 'SendGmText' function is still missing from the patch :/

LANG_GM_BROADCAST, LANG_ANNOUNCE_COLOR & LANG_GM_ANNOUNCE_COLOR too.

Cordially,

MaWarrior.

Could you finish the patch.

Posted

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);
}

Posted

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);
}

  • 3 weeks later...
Posted

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.

  • 5 weeks later...
Posted

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.

×
×
  • 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