Advertisement
Parranoia

World Chat

Sep 7th, 2012
4,289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.27 KB | None | 0 0
  1. #include "ScriptPCH.h"
  2. #include "Chat.h"
  3.  
  4. #define FACTION_SPECIFIC 0
  5.  
  6. std::string GetNameLink(Player* player)
  7. {
  8.         std::string name = player->GetName();
  9.         std::string color;
  10.         switch(player->getClass())
  11.         {
  12.         case CLASS_DEATH_KNIGHT:
  13.                 color = "|cffC41F3B";
  14.                 break;
  15.         case CLASS_DRUID:
  16.                 color = "|cffFF7D0A";
  17.                 break;
  18.         case CLASS_HUNTER:
  19.                 color = "|cffABD473";
  20.                 break;
  21.         case CLASS_MAGE:
  22.                 color = "|cff69CCF0";
  23.                 break;
  24.         case CLASS_PALADIN:
  25.                 color = "|cffF58CBA";
  26.                 break;
  27.         case CLASS_PRIEST:
  28.                 color = "|cffFFFFFF";
  29.                 break;
  30.         case CLASS_ROGUE:
  31.                 color = "|cffFFF569";
  32.                 break;
  33.         case CLASS_SHAMAN:
  34.                 color = "|cff0070DE";
  35.                 break;
  36.         case CLASS_WARLOCK:
  37.                 color = "|cff9482C9";
  38.                 break;
  39.         case CLASS_WARRIOR:
  40.                 color = "|cffC79C6E";
  41.                 break;
  42.         }
  43.         return "|Hplayer:"+name+"|h|cffFFFFFF["+color+name+"|cffFFFFFF]|h|r";
  44. }
  45.  
  46. class cs_world_chat : public CommandScript
  47. {
  48.         public:
  49.                 cs_world_chat() : CommandScript("cs_world_chat"){}
  50.  
  51.         ChatCommand * GetCommands() const
  52.         {
  53.                 static ChatCommand WorldChatCommandTable[] =
  54.                 {
  55.                         {"chat",        rbac::RBAC_PERM_COMMAND_WORLD_CHAT,             true,           &HandleWorldChatCommand,        "", NULL},
  56.                         {"c",   rbac::RBAC_PERM_COMMAND_WORLD_CHAT,             true,           &HandleWorldChatCommand,        "", NULL},
  57.                         {"world",       rbac::RBAC_PERM_COMMAND_WORLD_CHAT,             true,           &HandleWorldChatCommand,        "", NULL},
  58.                         {"w",   rbac::RBAC_PERM_COMMAND_WORLD_CHAT,             true,           &HandleWorldChatCommand,        "", NULL},
  59.                         {NULL,          0,                              false,          NULL,                                           "", NULL}
  60.                 };
  61.  
  62.                 return WorldChatCommandTable;
  63.         }
  64.  
  65.         static bool HandleWorldChatCommand(ChatHandler * handler, const char * args)
  66.         {
  67.                 if (!handler->GetSession()->GetPlayer()->CanSpeak())
  68.                         return false;
  69.                 std::string temp = args;
  70.  
  71.                 if (!args || temp.find_first_not_of(' ') == std::string::npos)
  72.                         return false;
  73.  
  74.                 std::string msg = "";
  75.                 Player * player = handler->GetSession()->GetPlayer();
  76.  
  77.                 switch(player->GetSession()->GetSecurity())
  78.                 {
  79.                         // Player
  80.                         case SEC_PLAYER:
  81.                                 if (player->GetTeam() == ALLIANCE)
  82.                                 {
  83.                                         msg += "|cff0000ff[Alliance] ";
  84.                                         msg += GetNameLink(player);
  85.                                         msg += " |cfffaeb00";
  86.                                 }
  87.  
  88.                                 else
  89.                                 {
  90.                                         msg += "|cffff0000[Horde] ";
  91.                                         msg += GetNameLink(player);
  92.                                         msg += " |cfffaeb00";
  93.                                 }
  94.                                 break;
  95.                         // Moderator/trial
  96.                         case SEC_MODERATOR:
  97.                                 msg += "|cffff8a00[Mod] ";
  98.                                 msg += GetNameLink(player);
  99.                                 msg += " |cfffaeb00";
  100.                                 break;
  101.                         // GM
  102.                         case SEC_GAMEMASTER:
  103.                                 msg += "|cff00ffff[GM] ";
  104.                                 msg += GetNameLink(player);
  105.                                 msg += " |cfffaeb00";
  106.                                 break;
  107.                         // Admin
  108.                         case SEC_ADMINISTRATOR:
  109.                                 msg += "|cfffa9900[Admin] ";
  110.                                 msg += GetNameLink(player);
  111.                                 msg += " |cfffaeb00";
  112.                                 break;
  113.  
  114.                 }
  115.                        
  116.                 msg += args;
  117.                 if (FACTION_SPECIFIC)
  118.                 {
  119.                         SessionMap sessions = sWorld->GetAllSessions();
  120.                         for (SessionMap::iterator itr = sessions.begin(); itr != sessions.end(); ++itr)
  121.                                 if (Player* plr = itr->second->GetPlayer())
  122.                                         if (plr->GetTeam() == player->GetTeam())
  123.                                                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg.c_str(), plr);
  124.                 }
  125.                 else
  126.                         sWorld->SendServerMessage(SERVER_MSG_STRING, msg.c_str(), 0);  
  127.  
  128.                 return true;
  129.         }
  130. };
  131.  
  132. void AddSC_cs_world_chat()
  133. {
  134.         new cs_world_chat();
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement