kusanagy

World Channel C++

Jun 12th, 2016
423
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.08 KB | None | 0 0
  1. #include "Chat.h"
  2. #include "Player.h"
  3. #include "Config.h"
  4. #include "WorldSession.h"
  5.  
  6. #define MSG_COLOR_BLUEVIOLET "|cFF8A2BE2"
  7. const char* CLASS_ICON;
  8. const char* RACE_ICON;
  9.  
  10. #define FACTION_SPECIFIC 0
  11.  
  12. std::string GetNameLink(Player* player)
  13. {
  14.     std::string name = player->GetName();
  15.     std::string color;
  16.  
  17.     switch (player->getRace())
  18.     {
  19.         // Done - Bloodelf
  20.     case RACE_BLOODELF:
  21.         if (player->getGender() == GENDER_MALE)
  22.             RACE_ICON = "|TInterface/ICONS/Achievement_Character_Bloodelf_Male:15|t";
  23.         else
  24.             RACE_ICON = "|TInterface/ICONS/Achievement_Character_Bloodelf_Female:15|t";
  25.         break;
  26.         // Done - Dranei
  27.     case RACE_DRAENEI:
  28.         if (player->getGender() == GENDER_FEMALE)
  29.             RACE_ICON = "|TInterface/ICONS/Achievement_Character_Draenei_Female:15|t";
  30.         else
  31.             RACE_ICON = "|TInterface/ICONS/Achievement_Character_Draenei_Male:15|t";
  32.         break;
  33.     case RACE_DWARF:
  34.         if (player->getGender() == GENDER_FEMALE)
  35.             RACE_ICON = "|TInterface/ICONS/Achievement_Character_Dwarf_Female:15|t";
  36.         else
  37.             RACE_ICON = "|TInterface/ICONS/Achievement_Character_Dwarf_Male:15|t";
  38.         break;
  39.         // Done - Gnome
  40.     case RACE_GNOME:
  41.         if (player->getGender() == GENDER_FEMALE)
  42.             RACE_ICON = "|TInterface/ICONS/Achievement_Character_Gnome_Female:15|t";
  43.         else
  44.             RACE_ICON = "|TInterface/ICONS/Achievement_Character_Gnome_Male:15|t";
  45.         break;
  46.         // Done - Human
  47.     case RACE_HUMAN:
  48.         if (player->getGender() == GENDER_FEMALE)
  49.             RACE_ICON = "|TInterface/ICONS/Achievement_Character_Human_Female:15|t";
  50.         else
  51.             RACE_ICON = "|TInterface/ICONS/Achievement_Character_Human_Male:15|t";
  52.         break;
  53.     case RACE_NIGHTELF:
  54.         if (player->getGender() == GENDER_FEMALE)
  55.             RACE_ICON = "|TInterface/ICONS/Achievement_Character_Nightelf_Female:15|t";
  56.         else
  57.             RACE_ICON = "|TInterface/ICONS/Achievement_Character_Nightelf_Male:15|t";
  58.         break;
  59.     case RACE_ORC:
  60.         if (player->getGender() == GENDER_FEMALE)
  61.             RACE_ICON = "|TInterface/ICONS/Achievement_Character_Orc_Female:15|t";
  62.         else
  63.             RACE_ICON = "|TInterface/ICONS/Achievement_Character_Orc_Male:15|t";
  64.         break;
  65.         // Done - Tauren
  66.     case RACE_TAUREN:
  67.         if (player->getGender() == GENDER_FEMALE)
  68.             RACE_ICON = "|TInterface/ICONS/Achievement_Character_Tauren_Female:15|t";
  69.         else
  70.             RACE_ICON = "|TInterface/ICONS/Achievement_Character_Tauren_Male:15|t";
  71.         break;
  72.     case RACE_TROLL:
  73.         if (player->getGender() == GENDER_FEMALE)
  74.             RACE_ICON = "|TInterface/ICONS/Achievement_Character_Troll_Female:15|t";
  75.         else
  76.             RACE_ICON = "|TInterface/ICONS/Achievement_Character_Troll_Male:15|t";
  77.         break;
  78.     case RACE_UNDEAD_PLAYER:
  79.         if (player->getGender() == GENDER_FEMALE)
  80.             RACE_ICON = "|TInterface/ICONS/Achievement_Character_Undead_Female:15|t";
  81.         else
  82.             RACE_ICON = "|TInterface/ICONS/Achievement_Character_Undead_Male:15|t";
  83.         break;
  84.     }
  85.  
  86.     switch (player->getClass())
  87.     {
  88.     case CLASS_DEATH_KNIGHT:
  89.         color = "|cffC41F3B";
  90.         //CLASS_ICON = "|TInterface\\icons\\Spell_Deathknight_ClassIcon:15|t|r";
  91.         break;
  92.     case CLASS_DRUID:
  93.         color = "|cffFF7D0A";
  94.         //CLASS_ICON = "|TInterface\\icons\\Ability_Druid_Maul:15|t|r";
  95.         break;
  96.     case CLASS_HUNTER:
  97.         color = "|cffABD473";
  98.         //CLASS_ICON = "|TInterface\\icons\\INV_Weapon_Bow_07:15|t|r";
  99.         break;
  100.     case CLASS_MAGE:
  101.         color = "|cff69CCF0";
  102.         //CLASS_ICON = "|TInterface\\icons\\INV_Staff_13:15|t|r";
  103.         break;
  104.     case CLASS_PALADIN:
  105.         color = "|cffF58CBA";
  106.         //CLASS_ICON = "|TInterface\\icons\\INV_Hammer_01:15|t|r";
  107.         break;
  108.     case CLASS_PRIEST:
  109.         color = "|cffFFFFFF";
  110.         //CLASS_ICON = "|TInterface\\icons\\INV_Staff_30:15|t|r";
  111.         break;
  112.     case CLASS_ROGUE:
  113.         color = "|cffFFF569";
  114.         //CLASS_ICON = "|TInterface\\icons\\INV_ThrowingKnife_04:15|t|r";
  115.         break;
  116.     case CLASS_SHAMAN:
  117.         color = "|cff0070DE";
  118.         //CLASS_ICON = "|TInterface\\icons\\Spell_Nature_BloodLust:15|t|r";
  119.         break;
  120.     case CLASS_WARLOCK:
  121.         color = "|cff9482C9";
  122.         //CLASS_ICON = "|TInterface\\icons\\Spell_Nature_FaerieFire:15|t|r";
  123.         break;
  124.     case CLASS_WARRIOR:
  125.         color = "|cffC79C6E";
  126.         //CLASS_ICON = "|TInterface\\icons\\INV_Sword_27.png:15|t|r";
  127.         break;
  128.     }
  129.     return "|Hplayer:" + name + "|h" + RACE_ICON + "|cffFFFFFF[" + color + name + "|cffFFFFFF]|h|r";
  130. }
  131.  
  132. class cs_world_chat : public CommandScript
  133. {
  134. public:
  135.     cs_world_chat() : CommandScript("cs_world_chat"){}
  136.  
  137.     ChatCommand * GetCommands() const
  138.     {
  139.         static ChatCommand WorldChatCommandTable[] =
  140.         {
  141.             {"chat", rbac::RBAC_PERM_COMMAND_CUSTOM_CHAT, true, &HandleWorldChatCommand, "", NULL },
  142.             { NULL, 0                                   ,false, NULL                   , "", NULL }
  143.         };
  144.  
  145.         return WorldChatCommandTable;
  146.     }
  147.  
  148.     static bool HandleWorldChatCommand(ChatHandler * handler, const char * args)
  149.     {
  150.         if (sWorld->getIntConfig(CONFIG_WORLD_CHAT_ENABLED) == 0)
  151.         {
  152.             handler->PSendSysMessage("World chat is disabled");
  153.             handler->SetSentErrorMessage(true);
  154.             return false;
  155.         }
  156.  
  157.         if (!handler->GetSession()->GetPlayer()->CanSpeak())
  158.             return false;
  159.         std::string temp = args;
  160.  
  161.         if (!args || temp.find_first_not_of(' ') == std::string::npos)
  162.             return false;
  163.  
  164.  
  165.         std::string msg = "";
  166.         Player * player = handler->GetSession()->GetPlayer();
  167.  
  168.         switch (player->GetSession()->GetSecurity())
  169.         {
  170.             // Player
  171.         case SEC_PLAYER:
  172.             if (player->GetTeam() == ALLIANCE)
  173.             {
  174.                 msg += "|cff00ff00[World] ";   
  175.                 msg += "|cfffa9900[Player]";
  176.                 msg += "|cff0000ff|TInterface\\pvpframe\\pvp-currency-alliance:17|t|r ";
  177.                 msg += GetNameLink(player);
  178.                 msg += ":|cfffaeb00";
  179.             }
  180.  
  181.             else
  182.             {
  183.                 msg += "|cff00ff00[World] ";
  184.                 msg += "|cfffa9900[Player]";
  185.                 msg += "|cffff0000|TInterface\\pvpframe\\pvp-currency-horde:17|t|r ";
  186.                 msg += GetNameLink(player);
  187.                 msg += ": |cfffaeb00";
  188.             }
  189.             break;
  190.         case SEC_MODERATOR:
  191.             msg += "|cff00ff00[World]";
  192.             msg += "|cff00ffff[Trial GM]";
  193.             msg += " |TINTERFACE/CHATFRAME/UI-CHATICON-BLIZZ:15|t|r ";
  194.             msg += GetNameLink(player);
  195.             msg += ": |cfffaeb00";
  196.             break;
  197.             // GM
  198.         case SEC_GAMEMASTER:
  199.             msg += "|cff00ff00[World]";
  200.             msg += "|cff00ffff[GM]";
  201.             msg += " |TINTERFACE/CHATFRAME/UI-CHATICON-BLIZZ:15|t|r ";
  202.             msg += GetNameLink(player);
  203.             msg += ": |cfffaeb00";
  204.             break;
  205.             // Admin
  206.         case SEC_ADMINISTRATOR:
  207.             msg += "|cff00ff00[World]";
  208.             msg += "|cfffa9900[Owner]";
  209.             msg += " |TINTERFACE/CHATFRAME/UI-CHATICON-BLIZZ:15|t|r ";
  210.             msg += GetNameLink(player);
  211.             msg += ": |cfffaeb00";
  212.             break;
  213.  
  214.         }
  215.  
  216.         msg += args;
  217.         if (FACTION_SPECIFIC)
  218.         {
  219.             SessionMap sessions = sWorld->GetAllSessions();
  220.             for (SessionMap::iterator itr = sessions.begin(); itr != sessions.end(); ++itr)
  221.                 if (Player* plr = itr->second->GetPlayer())
  222.                     if (plr->GetTeam() == player->GetTeam())
  223.                         sWorld->SendServerMessage(SERVER_MSG_STRING, msg.c_str(), plr);
  224.         }
  225.         else
  226.             sWorld->SendServerMessage(SERVER_MSG_STRING, msg.c_str(), 0);
  227.  
  228.         return true;
  229.     }
  230. };
  231.  
  232. void AddSC_cs_world_chat()
  233. {
  234.     new cs_world_chat();
  235. }
Advertisement
Add Comment
Please, Sign In to add comment