Advertisement
Zydraxy

Untitled

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