Advertisement
Guest User

Untitled

a guest
Sep 12th, 2010
755
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 21.45 KB | None | 0 0
  1. # HG changeset patch
  2. # User SergeySV
  3. # Date 1284310748 -14400
  4. # Branch With Anti-Cheat v0.9
  5. # Node ID f5a8be0a98199f14b7bdeb659804559bd25f94a5
  6. # Parent  096461d826c3f31349de4b4a0670588510166453
  7. chatspy2_by_SV
  8.  
  9. diff -r 096461d826c3 -r f5a8be0a9819 src/server/game/Chat/Channels/Channel.cpp
  10. --- a/src/server/game/Chat/Channels/Channel.cpp Sun Sep 12 13:48:35 2010 +0400
  11. +++ b/src/server/game/Chat/Channels/Channel.cpp Sun Sep 12 20:59:08 2010 +0400
  12. @@ -668,6 +668,11 @@
  13.      }
  14.      else
  15.      {
  16. +        // ChatSpy
  17. +        for(PlayerList::iterator itr = players.begin(); itr != players.end(); ++itr)
  18. +            if(Player* pl = sObjectMgr.GetPlayer(itr->first))
  19. +                pl->HandleChatSpyMessage(what, CHAT_MSG_CHANNEL, lang, plr, GetName());
  20. +
  21.          uint32 messageLength = strlen(what) + 1;
  22.  
  23.          WorldPacket data(SMSG_MESSAGECHAT, 1+4+8+4+m_name.size()+1+8+4+messageLength+1);
  24. diff -r 096461d826c3 -r f5a8be0a9819 src/server/game/Chat/Chat.cpp
  25. --- a/src/server/game/Chat/Chat.cpp Sun Sep 12 13:48:35 2010 +0400
  26. +++ b/src/server/game/Chat/Chat.cpp Sun Sep 12 20:59:08 2010 +0400
  27. @@ -65,6 +65,15 @@
  28.  
  29.  ChatCommand * ChatHandler::getCommandTable()
  30.  {
  31. +    static ChatCommand chatspyCommandTable[] =
  32. +    {
  33. +        { "reset",          SEC_ADMINISTRATOR,  false, &ChatHandler::HandleChatSpyResetCommand,        "", NULL },
  34. +        { "cancel",         SEC_ADMINISTRATOR,  false, &ChatHandler::HandleChatSpyCancelCommand,       "", NULL },
  35. +        { "status",         SEC_ADMINISTRATOR,  false, &ChatHandler::HandleChatSpyStatusCommand,       "", NULL },
  36. +        { "",               SEC_ADMINISTRATOR,  false, &ChatHandler::HandleChatSpySetCommand,          "", NULL },
  37. +        { NULL,             0,                  false, NULL,                                           "", NULL }
  38. +    };
  39. +
  40.      static ChatCommand accountSetCommandTable[] =
  41.      {
  42.          { "addon",          SEC_ADMINISTRATOR,  true,  &ChatHandler::HandleAccountSetAddonCommand,     "", NULL },
  43. @@ -727,6 +736,7 @@
  44.          { "reset",          SEC_ADMINISTRATOR,  true,  NULL,                                           "", resetCommandTable    },
  45.          { "instance",       SEC_ADMINISTRATOR,  true,  NULL,                                           "", instanceCommandTable },
  46.          { "server",         SEC_ADMINISTRATOR,  true,  NULL,                                           "", serverCommandTable   },
  47. +        { "chatspy",        SEC_ADMINISTRATOR,  false, NULL,                                           "", chatspyCommandTable  },
  48.  
  49.          { "channel",        SEC_ADMINISTRATOR, true, NULL,                                             "", channelCommandTable  },
  50.  
  51. diff -r 096461d826c3 -r f5a8be0a9819 src/server/game/Chat/Chat.h
  52. --- a/src/server/game/Chat/Chat.h   Sun Sep 12 13:48:35 2010 +0400
  53. +++ b/src/server/game/Chat/Chat.h   Sun Sep 12 20:59:08 2010 +0400
  54. @@ -608,6 +608,12 @@
  55.          bool HandleTempGameObjectCommand(const char* args);
  56.          bool HandleTempAddSpwCommand(const char* args);
  57.  
  58. +        // ChatSpy
  59. +        bool HandleChatSpyResetCommand(const char * args);
  60. +        bool HandleChatSpyCancelCommand(const char * args);
  61. +        bool HandleChatSpySetCommand(const char * args);
  62. +        bool HandleChatSpyStatusCommand(const char * args);
  63. +
  64.          //! Development Commands
  65.  
  66.          /*bool HandleQuestAdd(const char * args);
  67. diff -r 096461d826c3 -r f5a8be0a9819 src/server/game/Chat/Commands/Level3.cpp
  68. --- a/src/server/game/Chat/Commands/Level3.cpp  Sun Sep 12 13:48:35 2010 +0400
  69. +++ b/src/server/game/Chat/Commands/Level3.cpp  Sun Sep 12 20:59:08 2010 +0400
  70. @@ -7447,3 +7447,116 @@
  71.      m_session->GetPlayer()->StopCastingBindSight();
  72.      return true;
  73.  }
  74. +bool ChatHandler::HandleChatSpySetCommand(const char *args)
  75. +{
  76. +    if(!args)
  77. +        return false;
  78. +
  79. +    char* name = strtok((char*)args, " ");
  80. +    std::string cname;
  81. +    Player* target = NULL;
  82. +
  83. +    if(name)
  84. +    {
  85. +        cname = name;
  86. +        normalizePlayerName(cname);
  87. +        target = sObjectMgr.GetPlayer(cname.c_str());
  88. +    }
  89. +    else
  90. +        target = getSelectedPlayer();
  91. +
  92. +    if(!target || target->GetSession() == m_session)
  93. +    {
  94. +        SendSysMessage(LANG_PLAYER_NOT_FOUND);
  95. +        SetSentErrorMessage(true);
  96. +        return false;
  97. +    }
  98. +
  99. +    target->m_chatSpyGuid = m_session->GetPlayer()->GetGUID();
  100. +    PSendSysMessage(LANG_CHATSPY_APEENDED, target->GetName(), target->GetGUIDLow());
  101. +    return true;
  102. +}
  103. +bool ChatHandler::HandleChatSpyResetCommand(const char* /*args*/)
  104. +{
  105. +    HashMapHolder<Player>::MapType &m = HashMapHolder<Player>::GetContainer();
  106. +    HashMapHolder<Player>::MapType::iterator itr = m.begin();
  107. +    for(; itr != m.end(); ++itr)
  108. +    {
  109. +        Player* plr = itr->second->GetSession()->GetPlayer();
  110. +        if (plr && plr->m_chatSpyGuid)
  111. +        {
  112. +            if(Player* spy = sObjectMgr.GetPlayer(plr->m_chatSpyGuid))
  113. +                if(spy->IsInWorld())
  114. +                    ChatHandler(spy).PSendSysMessage(LANG_CHATSPY_CANCELLEDMASSIVE,
  115. +                        plr->GetName(), plr->GetGUIDLow());
  116. +            plr->m_chatSpyGuid = 0;
  117. +        }
  118. +    }
  119. +    SendSysMessage("All |cff00cc00ChatSpy|rs reset.");
  120. +    return true;
  121. +}
  122. +bool ChatHandler::HandleChatSpyCancelCommand(const char* args)
  123. +{
  124. +    if(!args)
  125. +        return false;
  126. +
  127. +    char* name = strtok((char*)args, " ");
  128. +    std::string cname;
  129. +    Player* target = NULL;
  130. +
  131. +    if(name)
  132. +    {
  133. +        cname = name;
  134. +        normalizePlayerName(cname);
  135. +        target = sObjectMgr.GetPlayer(cname.c_str());
  136. +    }
  137. +    else
  138. +        target = getSelectedPlayer();
  139. +
  140. +    if(!target || target->GetSession() == m_session)
  141. +    {
  142. +        SendSysMessage(LANG_PLAYER_NOT_FOUND);
  143. +        SetSentErrorMessage(true);
  144. +        return false;
  145. +    }
  146. +
  147. +    // ok, player found
  148. +    if(!target->m_chatSpyGuid)
  149. +    {
  150. +        PSendSysMessage(LANG_CHATSPY_NOCHATSPY, target->GetName(), target->GetGUIDLow());
  151. +        SetSentErrorMessage(true);
  152. +        return false;
  153. +    }
  154. +    if(target->m_chatSpyGuid == m_session->GetPlayer()->GetGUID())
  155. +        SendSysMessage(LANG_CHATSPY_YOURCANCELLED);
  156. +    else
  157. +    {
  158. +        Player* spy = sObjectMgr.GetPlayer(target->m_chatSpyGuid);
  159. +        PSendSysMessage(LANG_CHATSPY_SMBCANCELLED, (spy ? spy->GetName() : "ERROR"), (spy ? spy->GetGUIDLow() : 0));
  160. +    }
  161. +    target->m_chatSpyGuid = 0;
  162. +    return true;
  163. +}
  164. +bool ChatHandler::HandleChatSpyStatusCommand(const char* args)
  165. +{
  166. +    uint32 spynr = 0;
  167. +    SendSysMessage(LANG_CHATSPY_LISTOFSPYS);
  168. +
  169. +    HashMapHolder<Player>::MapType &m = HashMapHolder<Player>::GetContainer();
  170. +    HashMapHolder<Player>::MapType::iterator itr = m.begin();
  171. +    for(; itr != m.end(); ++itr)
  172. +    {
  173. +        Player* plr = itr->second->GetSession()->GetPlayer();
  174. +        if (plr && plr->m_chatSpyGuid)
  175. +        {
  176. +            Player* spy = sObjectMgr.GetPlayer(plr->m_chatSpyGuid);
  177. +            PSendSysMessage(LANG_CHATSPY_ONESPYSANOTHER,
  178. +                (spy ? spy->GetName() : "ERROR"), (spy ? spy->GetGUIDLow() : 0),
  179. +                plr->GetName(), plr->GetGUIDLow()
  180. +            );
  181. +            spynr++;
  182. +        }
  183. +    }
  184. +    PSendSysMessage(LANG_CHATSPY_TOTAL, spynr);
  185. +    return true;
  186. +}
  187. \ No newline at end of file
  188. diff -r 096461d826c3 -r f5a8be0a9819 src/server/game/Entities/Player/Player.cpp
  189. --- a/src/server/game/Entities/Player/Player.cpp    Sun Sep 12 13:48:35 2010 +0400
  190. +++ b/src/server/game/Entities/Player/Player.cpp    Sun Sep 12 20:59:08 2010 +0400
  191. @@ -621,6 +621,8 @@
  192.  
  193.      m_lastFallTime = 0;
  194.      m_lastFallZ = 0;
  195. +  
  196. +   m_chatSpyGuid = 0;
  197.  
  198.      m_ControlledByPlayer = true;
  199.      m_isWorldObject = true;
  200. @@ -18648,10 +18650,61 @@
  201.      *data << (uint8)chatTag();
  202.  }
  203.  
  204. + const char* chatNameColors[MAX_CHAT_MSG_TYPE][2] = {
  205. +     { NULL,     NULL        },
  206. +     { "ffffff", "Say"       },
  207. +     { "aaaaff", "Party"     },
  208. +     { "ff7f00", "Raid"      },
  209. +     { "40ff40", "Guild"     },
  210. +     { "40c040", "GOfficer"  },
  211. +     { "ff4040", "Yell"      },
  212. +     { "8e08c2", "W From Smb"},
  213. +     { NULL,     NULL        },
  214. +     { "ff20fc", "W To Smb"  },
  215. +     { "ff8040", "Emote"     }, // Standard emote, not used by ChatSpy ?
  216. +     { "ff8040", "TEmote"    }, // Text emote ("/me", "/e", "/em")
  217. +     { NULL,     NULL        },
  218. +     { NULL,     NULL        },
  219. +     { NULL,     NULL        },
  220. +     { NULL,     NULL        },
  221. +     { NULL,     NULL        },
  222. +     { "ffc0c0", "Channel"   },
  223. +     { NULL,     NULL        },
  224. +     { NULL,     NULL        },
  225. +     { NULL,     NULL        },
  226. +     { NULL,     NULL        },
  227. +     { NULL,     NULL        },
  228. +     { NULL,     NULL        },
  229. +     { NULL,     NULL        },
  230. +     { NULL,     NULL        },
  231. +     { NULL,     NULL        },
  232. +     { NULL,     NULL        },
  233. +     { NULL,     NULL        },
  234. +     { NULL,     NULL        },
  235. +     { NULL,     NULL        },
  236. +     { NULL,     NULL        },
  237. +     { NULL,     NULL        },
  238. +     { NULL,     NULL        },
  239. +     { NULL,     NULL        },
  240. +     { NULL,     NULL        },
  241. +     { NULL,     NULL        },
  242. +     { NULL,     NULL        },
  243. +     { NULL,     NULL        },
  244. +     { "ff4809", "R Leader"  },
  245. +     { "ff4800", "R Warning" },
  246. +     { NULL,     NULL        },
  247. +     { NULL,     NULL        },
  248. +     { NULL,     NULL        },
  249. +     { "ff7f00", "BG Leader" },
  250. +     { "ffdbb7", "BG"        },
  251. +     { NULL,     NULL        }
  252. + };
  253. +
  254. +
  255.  void Player::Say(const std::string& text, const uint32 language)
  256.  {
  257.      sScriptMgr.OnPlayerChat(this, CHAT_MSG_SAY, language, text);
  258. -
  259. +   HandleChatSpyMessage(text, CHAT_MSG_SAY, language);
  260.      WorldPacket data(SMSG_MESSAGECHAT, 200);
  261.      BuildPlayerChat(&data, CHAT_MSG_SAY, text, language);
  262.      SendMessageToSetInRange(&data,sWorld.getFloatConfig(CONFIG_LISTEN_RANGE_SAY),true);
  263. @@ -18660,7 +18713,7 @@
  264.  void Player::Yell(const std::string& text, const uint32 language)
  265.  {
  266.      sScriptMgr.OnPlayerChat(this, CHAT_MSG_YELL, language, text);
  267. -
  268. +   HandleChatSpyMessage(text, CHAT_MSG_YELL, language);
  269.      WorldPacket data(SMSG_MESSAGECHAT, 200);
  270.      BuildPlayerChat(&data, CHAT_MSG_YELL, text, language);
  271.      SendMessageToSetInRange(&data,sWorld.getFloatConfig(CONFIG_LISTEN_RANGE_YELL),true);
  272. @@ -18669,7 +18722,7 @@
  273.  void Player::TextEmote(const std::string& text)
  274.  {
  275.      sScriptMgr.OnPlayerChat(this, CHAT_MSG_EMOTE, LANG_UNIVERSAL, text);
  276. -
  277. +   HandleChatSpyMessage(text, CHAT_MSG_EMOTE, LANG_UNIVERSAL);
  278.      WorldPacket data(SMSG_MESSAGECHAT, 200);
  279.      BuildPlayerChat(&data, CHAT_MSG_EMOTE, text, LANG_UNIVERSAL);
  280.      SendMessageToSetInRange(&data,sWorld.getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE),true, !sWorld.getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHAT));
  281. @@ -18690,6 +18743,7 @@
  282.          WorldPacket data(SMSG_MESSAGECHAT, 200);
  283.          BuildPlayerChat(&data, CHAT_MSG_WHISPER, text, language);
  284.          rPlayer->GetSession()->SendPacket(&data);
  285. +       rPlayer->HandleChatSpyMessage(text, CHAT_MSG_WHISPER, language, this);
  286.  
  287.          // not send confirmation for addon messages
  288.          if (language != LANG_ADDON)
  289. @@ -18697,6 +18751,7 @@
  290.              data.Initialize(SMSG_MESSAGECHAT, 200);
  291.              rPlayer->BuildPlayerChat(&data, CHAT_MSG_WHISPER_INFORM, text, language);
  292.              GetSession()->SendPacket(&data);
  293. +          
  294.          }
  295.      }
  296.      else
  297. @@ -18720,6 +18775,69 @@
  298.          ToggleDND();
  299.  }
  300.  
  301. +void Player::HandleChatSpyMessage(const std::string& msg, uint8 type, uint32 lang, Player* sender, std::string special)
  302. +{
  303. +    if(!m_chatSpyGuid || lang == LANG_ADDON || sender == this)
  304. +        return;
  305. +
  306. +    if(m_chatSpyGuid == GetGUID())
  307. +    {
  308. +        m_chatSpyGuid = 0;
  309. +        return;
  310. +    }
  311. +
  312. +    Player *plr = sObjectMgr.GetPlayer(m_chatSpyGuid);
  313. +
  314. +    if(!plr || !plr->IsInWorld())
  315. +        return;
  316. +
  317. +    // Channels
  318. +    const char* channelColor = chatNameColors[type][0];
  319. +    const char* channelDesc = fmtstring("|cff%s(%s%s)|r", channelColor, chatNameColors[type][1], (type == CHAT_MSG_CHANNEL ? fmtstring(" '%s'", special.c_str()) : ""));
  320. +
  321. +    // Recipients
  322. +    const char* from = fmtstring("|cffff0000%s|r", GetName());
  323. +    const char* to = channelDesc;
  324. +
  325. +    // Special cases
  326. +    switch(type)
  327. +    {
  328. +        // Public channels
  329. +        case CHAT_MSG_CHANNEL:
  330. +        case CHAT_MSG_SAY:
  331. +        case CHAT_MSG_YELL:
  332. +        case CHAT_MSG_EMOTE:
  333. +        case CHAT_MSG_TEXT_EMOTE:
  334. +        case CHAT_MSG_PARTY:
  335. +        case CHAT_MSG_RAID:
  336. +        case CHAT_MSG_RAID_LEADER:
  337. +        case CHAT_MSG_RAID_WARNING:
  338. +        case CHAT_MSG_GUILD:
  339. +        case CHAT_MSG_BATTLEGROUND:
  340. +        case CHAT_MSG_BATTLEGROUND_LEADER:
  341. +            if(sender)
  342. +            {
  343. +                from = sender->GetName();
  344. +                to = fmtstring("|cffff0000%s|r %s", GetName(), channelDesc);
  345. +            }
  346. +            break;
  347. +        // Private channels
  348. +        case CHAT_MSG_WHISPER:
  349. +            from = sender->GetName();
  350. +            to = fmtstring("|cffff0000%s|r %s", GetName(), channelDesc);
  351. +            break;
  352. +        case CHAT_MSG_REPLY:
  353. +            //from = to;
  354. +            to = fmtstring("%s %s", sender->GetName(), channelDesc);
  355. +            break;
  356. +        default:
  357. +            sLog.outError("ChatSpy: unknown msg type(%u), sender %u", type, (sender ? sender->GetGUIDLow() : 0));
  358. +            return;
  359. +    }
  360. +
  361. +    ChatHandler(plr->GetSession()).PSendSysMessage("%s => %s: %s", from, to, msg.c_str());
  362. +}
  363. +
  364.  void Player::PetSpellInitialize()
  365.  {
  366.      Pet* pet = GetPet();
  367. diff -r 096461d826c3 -r f5a8be0a9819 src/server/game/Entities/Player/Player.h
  368. --- a/src/server/game/Entities/Player/Player.h  Sun Sep 12 13:48:35 2010 +0400
  369. +++ b/src/server/game/Entities/Player/Player.h  Sun Sep 12 20:59:08 2010 +0400
  370. @@ -2222,6 +2222,10 @@
  371.  
  372.          WorldLocation GetStartPosition() const;
  373.  
  374. +        // ChatSpy
  375. +        void HandleChatSpyMessage(const std::string& msg, uint8 type, uint32 lang, Player* sender = NULL, std::string special = "");
  376. +        uint64 m_chatSpyGuid;
  377. +
  378.          // currently visible objects at player client
  379.          typedef std::set<uint64> ClientGUIDs;
  380.          ClientGUIDs m_clientGUIDs;
  381. diff -r 096461d826c3 -r f5a8be0a9819 src/server/game/Guilds/Guild.cpp
  382. --- a/src/server/game/Guilds/Guild.cpp  Sun Sep 12 13:48:35 2010 +0400
  383. +++ b/src/server/game/Guilds/Guild.cpp  Sun Sep 12 20:59:08 2010 +0400
  384. @@ -585,7 +585,10 @@
  385.              Player *pl = ObjectAccessor::FindPlayer(MAKE_NEW_GUID(itr->first, 0, HIGHGUID_PLAYER));
  386.  
  387.              if (pl && pl->GetSession() && HasRankRight(pl->GetRank(),GR_RIGHT_OFFCHATLISTEN) && !pl->GetSocial()->HasIgnore(session->GetPlayer()->GetGUIDLow()))
  388. +            {
  389.                  pl->GetSession()->SendPacket(&data);
  390. +                pl->HandleChatSpyMessage(msg, CHAT_MSG_OFFICER, language, session->GetPlayer());
  391. +            }
  392.          }
  393.      }
  394.  }
  395. diff -r e57d02adb66d -r 3434a66d57ad src/server/game/Miscellaneous/Language.h
  396. --- a/src/server/game/Miscellaneous/Language.h  Sun Sep 12 21:05:51 2010 +0400
  397. +++ b/src/server/game/Miscellaneous/Language.h  Sun Sep 12 21:07:43 2010 +0400
  398. @@ -1053,7 +1053,15 @@
  399.      // Use for custom patches             11000-11999
  400.      LANG_AUTO_BROADCAST                 = 11000,
  401.      LANG_INVALID_REALMID                = 11001,
  402. -
  403. +    LANG_CHATSPY_APEENDED               = 11600,
  404. +    LANG_CHATSPY_CANCELLEDMASSIVE       = 11601,
  405. +    LANG_CHATSPY_ALLRESET               = 11602,
  406. +    LANG_CHATSPY_NOCHATSPY              = 11603,
  407. +    LANG_CHATSPY_YOURCANCELLED          = 11604,
  408. +    LANG_CHATSPY_SMBCANCELLED           = 11605,
  409. +    LANG_CHATSPY_LISTOFSPYS             = 11606,
  410. +    LANG_CHATSPY_TOTAL                  = 11607,
  411. +    LANG_CHATSPY_ONESPYSANOTHER         = 11608,
  412.      // NOT RESERVED IDS                   12000-1999999999
  413.      // `db_script_string` table index     2000000000-2000009999 (MIN_DB_SCRIPT_STRING_ID-MAX_DB_SCRIPT_STRING_ID)
  414.      // For other tables maybe             2000010000-2147483647 (max index)
  415. diff -r 096461d826c3 -r f5a8be0a9819 src/server/game/Miscellaneous/SharedDefines.h
  416. --- a/src/server/game/Miscellaneous/SharedDefines.h Sun Sep 12 13:48:35 2010 +0400
  417. +++ b/src/server/game/Miscellaneous/SharedDefines.h Sun Sep 12 20:59:08 2010 +0400
  418. @@ -2467,7 +2467,8 @@
  419.      CHAT_MSG_ACHIEVEMENT            = 0x30,
  420.      CHAT_MSG_GUILD_ACHIEVEMENT      = 0x31,
  421.      CHAT_MSG_ARENA_POINTS           = 0x32,
  422. -    CHAT_MSG_PARTY_LEADER           = 0x33
  423. +    CHAT_MSG_PARTY_LEADER           = 0x33,
  424. +   CHAT_MSG_REPLY                  = 0x34
  425.  };
  426.  
  427.  #define MAX_CHAT_MSG_TYPE 0x34
  428. diff -r 096461d826c3 -r f5a8be0a9819 src/server/game/Server/Protocol/Handlers/ChatHandler.cpp
  429. --- a/src/server/game/Server/Protocol/Handlers/ChatHandler.cpp  Sun Sep 12 13:48:35 2010 +0400
  430. +++ b/src/server/game/Server/Protocol/Handlers/ChatHandler.cpp  Sun Sep 12 20:59:08 2010 +0400
  431. @@ -304,6 +304,12 @@
  432.  
  433.              sScriptMgr.OnPlayerChat(GetPlayer(), type, lang, msg, group);
  434.  
  435. +            // ChatSpy
  436. +            GetPlayer()->HandleChatSpyMessage(msg, CHAT_MSG_PARTY, lang);
  437. +            for(GroupReference *itr = group->GetFirstMember(); itr != NULL; itr = itr->next())
  438. +                if(Player *pl = itr->getSource())
  439. +                    pl->HandleChatSpyMessage(msg, CHAT_MSG_PARTY, lang, GetPlayer());
  440. +
  441.              WorldPacket data;
  442.              ChatHandler::FillMessageData(&data, this, type, lang, NULL, 0, msg.c_str(), NULL);
  443.              group->BroadcastPacket(&data, false, group->GetMemberGroup(GetPlayer()->GetGUID()));
  444. @@ -331,8 +337,10 @@
  445.                  if (Guild *guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId()))
  446.                  {
  447.                      sScriptMgr.OnPlayerChat(GetPlayer(), type, lang, msg, guild);
  448. -
  449. +                   {
  450.                      guild->BroadcastToGuild(this, msg, lang == LANG_ADDON ? LANG_ADDON : LANG_UNIVERSAL);
  451. +                     GetPlayer()->HandleChatSpyMessage(msg, CHAT_MSG_OFFICER, lang);
  452. +                 }
  453.                  }
  454.              }
  455.  
  456. @@ -360,8 +368,10 @@
  457.                  if (Guild *guild = sObjectMgr.GetGuildById(GetPlayer()->GetGuildId()))
  458.                  {
  459.                      sScriptMgr.OnPlayerChat(GetPlayer(), type, lang, msg, guild);
  460. -
  461. +                   {
  462.                      guild->BroadcastToOfficers(this, msg, lang == LANG_ADDON ? LANG_ADDON : LANG_UNIVERSAL);
  463. +                     GetPlayer()->HandleChatSpyMessage(msg, CHAT_MSG_OFFICER, lang);
  464. +                 }
  465.                  }
  466.              }
  467.              break;
  468. @@ -394,6 +404,18 @@
  469.  
  470.              sScriptMgr.OnPlayerChat(GetPlayer(), type, lang, msg, group);
  471.  
  472. +            // ChatSpy
  473. +            GetPlayer()->HandleChatSpyMessage(msg, CHAT_MSG_RAID, lang);
  474. +            for(GroupReference *itr = group->GetFirstMember(); itr != NULL; itr = itr->next())
  475. +                if(Player *pl = itr->getSource())
  476. +                    pl->HandleChatSpyMessage(msg, CHAT_MSG_RAID, lang, GetPlayer());
  477. +
  478. +            // ChatSpy
  479. +            GetPlayer()->HandleChatSpyMessage(msg, CHAT_MSG_RAID_LEADER, lang);
  480. +            for(GroupReference *itr = group->GetFirstMember(); itr != NULL; itr = itr->next())
  481. +                if(Player *pl = itr->getSource())
  482. +                    pl->HandleChatSpyMessage(msg, CHAT_MSG_RAID_LEADER, lang, GetPlayer());
  483. +
  484.              WorldPacket data;
  485.              ChatHandler::FillMessageData(&data, this, CHAT_MSG_RAID, lang, "", 0, msg.c_str(), NULL);
  486.              group->BroadcastPacket(&data, false);
  487. @@ -426,6 +448,18 @@
  488.  
  489.              sScriptMgr.OnPlayerChat(GetPlayer(), type, lang, msg, group);
  490.  
  491. +            // ChatSpy
  492. +            GetPlayer()->HandleChatSpyMessage(msg, CHAT_MSG_RAID_WARNING, lang);
  493. +            for(GroupReference *itr = group->GetFirstMember(); itr != NULL; itr = itr->next())
  494. +                if(Player *pl = itr->getSource())
  495. +                    pl->HandleChatSpyMessage(msg, CHAT_MSG_RAID_WARNING, lang, GetPlayer());
  496. +
  497. +            // ChatSpy
  498. +            GetPlayer()->HandleChatSpyMessage(msg, CHAT_MSG_BATTLEGROUND, lang);
  499. +            for(GroupReference *itr = group->GetFirstMember(); itr != NULL; itr = itr->next())
  500. +                if(Player *pl = itr->getSource())
  501. +                    pl->HandleChatSpyMessage(msg, CHAT_MSG_BATTLEGROUND, lang, GetPlayer());
  502. +
  503.              WorldPacket data;
  504.              ChatHandler::FillMessageData(&data, this, CHAT_MSG_RAID_LEADER, lang, "", 0, msg.c_str(), NULL);
  505.              group->BroadcastPacket(&data, false);
  506. @@ -447,6 +481,12 @@
  507.  
  508.              sScriptMgr.OnPlayerChat(GetPlayer(), type, lang, msg, group);
  509.  
  510. +            // ChatSpy
  511. +            GetPlayer()->HandleChatSpyMessage(msg, CHAT_MSG_BATTLEGROUND_LEADER, lang);
  512. +            for(GroupReference *itr = group->GetFirstMember(); itr != NULL; itr = itr->next())
  513. +                if(Player *pl = itr->getSource())
  514. +                    pl->HandleChatSpyMessage(msg, CHAT_MSG_BATTLEGROUND_LEADER, lang, GetPlayer());
  515. +
  516.              WorldPacket data;
  517.              //in battleground, raid warning is sent only to players in battleground - code is ok
  518.              ChatHandler::FillMessageData(&data, this, CHAT_MSG_RAID_WARNING, lang, "", 0, msg.c_str(), NULL);
  519. @@ -523,8 +563,10 @@
  520.                  if (Channel *chn = cMgr->GetChannel(channel, _player))
  521.                  {
  522.                      sScriptMgr.OnPlayerChat(_player, type, lang, msg, chn);
  523. -
  524. +                   {
  525.                      chn->Say(_player->GetGUID(), msg.c_str(), lang);
  526. +                     GetPlayer()->HandleChatSpyMessage(msg, CHAT_MSG_CHANNEL, lang, NULL, channel);
  527. +                 }
  528.                  }
  529.              }
  530.          } break;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement