Advertisement
Guest User

Untitled

a guest
Aug 27th, 2021
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.59 KB | None | 0 0
  1. /*
  2. * orginal code by ??
  3. * developed for last rev && added more option by irancore.ir
  4. *
  5. * import to database - auth - allow to player use cmd
  6.  
  7. REPLACE INTO `rbac_linked_permissions` (`id`, `linkedId`) VALUES (195, 525);
  8.  
  9. * import to database - world - Passive report chat cencured to gms
  10.  
  11. REPLACE INTO `trinity_string` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`) VALUES (17000, 'Player |cff00ff00%s|r Chat Cencured : |cffff0000%s', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
  12.  
  13. * My Discord : Ac_Dev#8552
  14. */
  15. #include "Rbac.h"
  16. #include "Config.h"
  17. #include "WorldSession.h"
  18. #include "Player.h"
  19. #include "Chat.h"
  20. #include "World.h"
  21. #include "DatabaseEnv.h"
  22. #define Playedtimetochat 1500
  23. #define mutetimecencure 300
  24. #define mutetimeantispam 10
  25.  
  26. #define FACTION_SPECIFIC 0
  27. using namespace std;
  28. const char* CLASS_ICON;
  29. const char* RACE_ICON;
  30.  
  31. std::string GetNameLink(Player* player)
  32. {
  33. std::string name = player->GetName();
  34. std::string color;
  35. std::string icon;
  36. switch (player->GetRace())
  37. {
  38. // Done - Bloodelf
  39. case RACE_BLOODELF:
  40. if (player->GetGender() == GENDER_MALE)
  41. RACE_ICON = "|TInterface/ICONS/Achievement_Character_Bloodelf_Male:15|t";
  42. else
  43. RACE_ICON = "|TInterface/ICONS/Achievement_Character_Bloodelf_Female:15|t";
  44. break;
  45. // Done - Dranei
  46. case RACE_DRAENEI:
  47. if (player->GetGender() == GENDER_FEMALE)
  48. RACE_ICON = "|TInterface/ICONS/Achievement_Character_Draenei_Female:15|t";
  49. else
  50. RACE_ICON = "|TInterface/ICONS/Achievement_Character_Draenei_Male:15|t";
  51. break;
  52. case RACE_DWARF:
  53. if (player->GetGender() == GENDER_FEMALE)
  54. RACE_ICON = "|TInterface/ICONS/Achievement_Character_Dwarf_Female:15|t";
  55. else
  56. RACE_ICON = "|TInterface/ICONS/Achievement_Character_Dwarf_Male:15|t";
  57. break;
  58. // Done - Gnome
  59. case RACE_GNOME:
  60. if (player->GetGender() == GENDER_FEMALE)
  61. RACE_ICON = "|TInterface/ICONS/Achievement_Character_Gnome_Female:15|t";
  62. else
  63. RACE_ICON = "|TInterface/ICONS/Achievement_Character_Gnome_Male:15|t";
  64. break;
  65. // Done - Human
  66. case RACE_HUMAN:
  67. if (player->GetGender() == GENDER_FEMALE)
  68. RACE_ICON = "|TInterface/ICONS/Achievement_Character_Human_Female:15|t";
  69. else
  70. RACE_ICON = "|TInterface/ICONS/Achievement_Character_Human_Male:15|t";
  71. break;
  72. case RACE_NIGHTELF:
  73. if (player->GetGender() == GENDER_FEMALE)
  74. RACE_ICON = "|TInterface/ICONS/Achievement_Character_Nightelf_Female:15|t";
  75. else
  76. RACE_ICON = "|TInterface/ICONS/Achievement_Character_Nightelf_Male:15|t";
  77. break;
  78. case RACE_ORC:
  79. if (player->GetGender() == GENDER_FEMALE)
  80. RACE_ICON = "|TInterface/ICONS/Achievement_Character_Orc_Female:15|t";
  81. else
  82. RACE_ICON = "|TInterface/ICONS/Achievement_Character_Orc_Male:15|t";
  83. break;
  84. // Done - Tauren
  85. case RACE_TAUREN:
  86. if (player->GetGender() == GENDER_FEMALE)
  87. RACE_ICON = "|TInterface/ICONS/Achievement_Character_Tauren_Female:15|t";
  88. else
  89. RACE_ICON = "|TInterface/ICONS/Achievement_Character_Tauren_Male:15|t";
  90. break;
  91. case RACE_TROLL:
  92. if (player->GetGender() == GENDER_FEMALE)
  93. RACE_ICON = "|TInterface/ICONS/Achievement_Character_Troll_Female:15|t";
  94. else
  95. RACE_ICON = "|TInterface/ICONS/Achievement_Character_Troll_Male:15|t";
  96. break;
  97. case RACE_UNDEAD_PLAYER:
  98. if (player->GetGender() == GENDER_FEMALE)
  99. RACE_ICON = "|TInterface/ICONS/Achievement_Character_Undead_Female:15|t";
  100. else
  101. RACE_ICON = "|TInterface/ICONS/Achievement_Character_Undead_Male:15|t";
  102. break;
  103. }
  104.  
  105. switch (player->GetClass())
  106. {
  107. case CLASS_DEATH_KNIGHT:
  108. color = "|cffC41F3B";
  109. //CLASS_ICON = "|TInterface\\icons\\Spell_Deathknight_ClassIcon:15|t|r";
  110. break;
  111. case CLASS_DRUID:
  112. color = "|cffFF7D0A";
  113. // CLASS_ICON = "|TInterface\\icons\\Ability_Druid_Maul:15|t|r";
  114. break;
  115. case CLASS_HUNTER:
  116. color = "|cffABD473";
  117. // CLASS_ICON = "|TInterface\\icons\\INV_Weapon_Bow_07:15|t|r";
  118. break;
  119. case CLASS_MAGE:
  120. color = "|cff69CCF0";
  121. //CLASS_ICON = "|TInterface\\icons\\INV_Staff_13:15|t|r";
  122. break;
  123. case CLASS_PALADIN:
  124. color = "|cffF58CBA";
  125. // CLASS_ICON = "|TInterface\\icons\\INV_Hammer_01:15|t|r";
  126. break;
  127. case CLASS_PRIEST:
  128. color = "|cffFFFFFF";
  129. // CLASS_ICON = "|TInterface\\icons\\INV_Staff_30:15|t|r";
  130. break;
  131. case CLASS_ROGUE:
  132. color = "|cffFFF569";
  133. // CLASS_ICON = "|TInterface\\icons\\INV_ThrowingKnife_04:15|t|r";
  134. break;
  135. case CLASS_SHAMAN:
  136. color = "|cff0070DE";
  137. // CLASS_ICON = "|TInterface\\icons\\Spell_Nature_BloodLust:15|t|r";
  138. break;
  139. case CLASS_WARLOCK:
  140. color = "|cff9482C9";
  141. // CLASS_ICON = "|TInterface\\icons\\Spell_Nature_FaerieFire:15|t|r";
  142. break;
  143. case CLASS_WARRIOR:
  144. color = "|cffC79C6E";
  145. // CLASS_ICON = "|TInterface\\icons\\INV_Sword_27.png:15|t|r";
  146. break;
  147. }
  148. return "|Hplayer:" + name + "|h" + RACE_ICON + "|cffFFFFFF[" + color + name + "|cffFFFFFF]|h|r";
  149. }
  150.  
  151. void _SendWorldChat(Player* player, string message)
  152. {
  153. size_t stringpos;
  154.  
  155. if (message.find("|TInterface") != string::npos)
  156. return;
  157.  
  158. if (message.find("\n") != string::npos)
  159. return;
  160.  
  161. if ((stringpos = message.find("|Hquest:")) != string::npos)
  162. return;
  163.  
  164. if ((stringpos = message.find("|Htrade:")) != string::npos)
  165. return;
  166.  
  167. if ((stringpos = message.find("|Htalent:")) != string::npos)
  168. return;
  169.  
  170. if ((stringpos = message.find("|Henchant:")) != string::npos)
  171. return;
  172.  
  173. if ((stringpos = message.find("|Hachievement:")) != string::npos)
  174. return;
  175.  
  176. if ((stringpos = message.find("|Hglyph:")) != string::npos)
  177. return;
  178.  
  179. if ((stringpos = message.find("|Hspell:")) != string::npos)
  180. return;
  181.  
  182. if ((stringpos = message.find("Hitem:")) != string::npos)
  183. return;
  184.  
  185. if (message.find("|c") != string::npos && message.find("|r") != string::npos)
  186. return;
  187.  
  188. if (message.find("|c") != string::npos && message.find("|h") != string::npos)
  189. return;
  190.  
  191. uint8 cheksSize = 118;//Change these if you want to add more words to the array.
  192. std::string checks[118];//Change these if you want to add more words to the array.
  193. // Strony (Sites)
  194. // Strony (Sites)
  195. checks[0] = "http://";
  196. checks[1] = ".com";
  197. checks[2] = ".net";
  198. checks[3] = ".org";
  199. checks[4] = "www.";
  200. checks[5] = "wow-";
  201. checks[6] = "-wow";
  202. checks[7] = "no-ip";
  203. checks[8] = ".zapto";
  204. checks[9] = ".biz";
  205. checks[10] = ".servegame";
  206. checks[11] = ".ir";
  207. checks[12] = "com.br";
  208.  
  209. checks[13] = "h t t p : / /";
  210. checks[14] = ". c o m";
  211. checks[15] = ". n e t";
  212. checks[16] = ". o r g";
  213. checks[17] = "w w w .";
  214. checks[18] = " w o w -";
  215. checks[19] = "- w o w";
  216. checks[20] = "n o - i p";
  217. checks[21] = ". z a p t o";
  218. checks[22] = ". b i z";
  219. checks[23] = ". s e r v e g a m e";
  220. checks[24] = ". b r";
  221. checks[25] = "c o m . b r";
  222.  
  223. checks[26] = "h t t p : / /";
  224. checks[27] = ". c o m";
  225. checks[28] = ". n e t";
  226. checks[29] = ". o r g";
  227. checks[30] = "w w w .";
  228. checks[31] = " w o w -";
  229. checks[32] = "- w o w";
  230. checks[33] = "n o - i p";
  231. checks[34] = ". z a p t o";
  232. checks[35] = ". b i z";
  233. checks[36] = ". s e r v e g a m e";
  234. checks[37] = ". b r";
  235. checks[38] = "c o m . b r";
  236.  
  237. checks[39] = "h t t p : / /";
  238. checks[40] = ". c o m";
  239. checks[41] = ". n e t";
  240. checks[42] = ". o r g";
  241. checks[43] = "w w w .";
  242. checks[44] = " w o w -";
  243. checks[45] = "- w o w";
  244. checks[46] = "n o - i p";
  245. checks[47] = ". z a p t o";
  246. checks[48] = ". b i z";
  247. checks[49] = ". s e r v e g a m e";
  248. checks[50] = ". b r";
  249. checks[51] = " c o m . b r";
  250.  
  251. checks[52] = "h t t p : / /";
  252. checks[53] = ". c o m";
  253. checks[54] = ". n e t";
  254. checks[55] = ". o r g";
  255. checks[56] = "w w w .";
  256. checks[57] = "w o w -";
  257. checks[58] = "- w o w";
  258. checks[59] = "n o - i p";
  259. checks[60] = ". z a p t o";
  260. checks[61] = ". b i z";
  261. checks[62] = ". s e r v e g a m e";
  262. checks[63] = ". b r";
  263. checks[64] = "c o m . b r";
  264.  
  265. checks[65] = "trevon";
  266. checks[66] = "megawow";
  267. checks[67] = "fatalwow";
  268. checks[68] = "uniforgiven-wow";
  269. checks[69] = "wow-autolouco";
  270. checks[70] = "heaven-wow";
  271. checks[71] = "fireballwow";
  272. checks[72] = "wowbrasilpa";
  273. checks[73] = "fatalitywow";
  274. checks[74] = "demonic-wow";
  275. checks[75] = "revenge-wow";
  276. checks[76] = "heavenwow";
  277. checks[77] = "logon.";
  278. checks[78] = "linebr";
  279. checks[79] = "azralon";
  280. checks[80] = "ultra";
  281. checks[81] = "ultra-wow";
  282.  
  283. checks[82] = "t r e v o n";
  284. checks[83] = "m e g a w o w";
  285. checks[84] = "f a t a l w o w";
  286. checks[85] = "u n i f o r g i v e n - w o w";
  287. checks[86] = "w o w - a u t o l o u c o";
  288. checks[87] = "h e a v e n - w o w";
  289. checks[88] = "f i r e b a l l w o w";
  290. checks[89] = "w o w b r a s i l p a";
  291. checks[90] = "f a t a l i t y w o w";
  292. checks[91] = "d e m o n i c - w o w";
  293. checks[92] = "r e v e n g e - w o w";
  294. checks[93] = "h e a v e n w o w";
  295. checks[94] = "u n d e a d - w o w";
  296. checks[95] = "l i n e b r";
  297. checks[96] = "a z r a l o n";
  298. checks[97] = "b l a c k - w o w";
  299. checks[98] = "t r e v o n w o w";
  300.  
  301. checks[99] = "t r e v o n";
  302. checks[100] = "m e g a w o w";
  303. checks[101] = "f a t a l w o w";
  304. checks[102] = "u n i f o r g i v e n - w o w";
  305. checks[103] = "w o w - a u t o l o u c o";
  306. checks[104] = "h e a v e n - w o w";
  307. checks[105] = "f i r e b a l l w o w";
  308. checks[106] = "w o w b r a s i l p a";
  309. checks[107] = "f a t a l i t y w o w";
  310. checks[108] = "d e m o n i c - w o w";
  311. checks[109] = "r e v e n g e - w o w";
  312. checks[110] = "h e a v e n w o w";
  313. checks[111] = "u n d e a d - w o w";
  314. checks[112] = "l i n e b r";
  315. checks[113] = "a z r a l o n";
  316. checks[114] = "b l a c k - w o w";
  317. checks[115] = "t r e v o n w o w";
  318.  
  319. checks[116] = " [The Lightbringer's Redemption]"; // old source code will crashed with this macro we cencured this
  320. checks[117] = "[The Lightbringer's Redemption]"; // old source code will crashed with this macro we cencured this
  321.  
  322. for (int i = 0; i < cheksSize; ++i)
  323. {
  324. if (message.find(checks[i]) != string::npos)
  325. {
  326. std::string say = "";
  327. std::string str = "";
  328. say = message;
  329. sWorld->SendGMText(17000, player->GetName().c_str(), say.c_str()); // sned passive report to gm
  330. say = "";
  331. ChatHandler(player->GetSession()).PSendSysMessage("Links or Bad Words are not allowed on the server.");
  332. LoginDatabasePreparedStatement* mt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_MUTE_TIME);
  333. int64 muteTime = time(NULL) + mutetimecencure; // muted player if use bad words
  334. player->GetSession()->m_muteTime = muteTime;
  335. mt->setInt64(0, muteTime);
  336. return;
  337. }
  338. }
  339.  
  340. string msg;
  341. ostringstream chat_string;
  342.  
  343. if (player->GetTotalPlayedTime() <= Playedtimetochat) // New If - Played Time Need For Use This Cmd
  344. {
  345. std::string adStr = secsToTimeString(Playedtimetochat - player->GetTotalPlayedTime());
  346. player->GetSession()->SendNotification("You Must %s seconds played To use world chat!", adStr.c_str());
  347. return;
  348. }
  349.  
  350. // if you have vip script can enable this option and will work eazy like amdwow
  351. /*switch (player->GetSession()->GetVipLevel()) // vip cases aded
  352. {
  353. case 1: // Vip Rank 1
  354. msg += "|cffffffff[VIP Bronze]";
  355. break;
  356. case 2: // Vip Rank 1
  357. msg += "|cffbbbbbb[VIP Silver]";
  358. break;
  359. case 3: // Vip Rank 1
  360. msg += "|cffff00ff[VIP Gold]";
  361. break;
  362. case 4: // Vip Rank 1
  363. msg += "|cffff6060[VIP Platinum]";
  364. break;
  365. case 5: // Vip Rank 1
  366. msg += "|cff0000ff[VIP Diamond]";
  367. break;
  368. case 6: // Vip Rank 1
  369. msg += "|cffff0000[VIP Warlord]";
  370. break;
  371. }*/
  372. switch (player->GetSession()->GetSecurity())
  373. {
  374. // Player
  375. case SEC_PLAYER:
  376. if (player->GetTeam() == ALLIANCE)
  377. {
  378. msg += "|cff00ff00[World] ";
  379. msg += "|cfffa9900[Player]";
  380. msg += "|cff0000ff|TInterface\\pvpframe\\pvp-currency-alliance:17|t|r ";
  381. msg += GetNameLink(player);
  382. msg += ":|cfffaeb00";
  383. }
  384.  
  385. else
  386. {
  387. msg += "|cff00ff00[World] ";
  388. msg += "|cfffa9900[Player]";
  389. msg += "|cffff0000|TInterface\\pvpframe\\pvp-currency-horde:17|t|r ";
  390. msg += GetNameLink(player);
  391. msg += ":|cfffaeb00";
  392. }
  393. break;
  394. // Moderator
  395. case SEC_MODERATOR:
  396. msg += "|cff00ff00[World]";
  397. msg += "|cffFF8C00[Moderator]";
  398. msg += " |TINTERFACE/CHATFRAME/UI-CHATICON-BLIZZ:15|t|r ";
  399. msg += GetNameLink(player);
  400. msg += ":|cfffaeb00";
  401. break;
  402. case SEC_GAMEMASTER:
  403. msg += "|cff00ff00[World]";
  404. msg += "|cffFF8C00[GM]";
  405. msg += " |TINTERFACE/CHATFRAME/UI-CHATICON-BLIZZ:15|t|r ";
  406. msg += GetNameLink(player);
  407. msg += ":|cfffaeb00";
  408. break;
  409. case SEC_ADMINISTRATOR:
  410. msg += "|cff00ff00[World]";
  411. msg += "|cffFF8C00[Head GM]";
  412. msg += " |TINTERFACE/CHATFRAME/UI-CHATICON-BLIZZ:15|t|r ";
  413. msg += GetNameLink(player);
  414. msg += ":|cfffaeb00";
  415. break;
  416. case SEC_CONSOLE:
  417. msg += "|cff00ff00[World]";
  418. msg += "|cffFF0000[ConSOle]";
  419. msg += " |TINTERFACE/CHATFRAME/UI-CHATICON-BLIZZ:15|t|r ";
  420. msg += GetNameLink(player);
  421. msg += ":|cfffaeb00";
  422. break;
  423. }
  424.  
  425. chat_string << msg << " " << message;
  426.  
  427. char c_msg[1024];
  428.  
  429. snprintf(c_msg, 1024, chat_string.str().c_str());
  430.  
  431. if (FACTION_SPECIFIC)
  432. {
  433. SessionMap sessions = sWorld->GetAllSessions();
  434. for (SessionMap::iterator itr = sessions.begin(); itr != sessions.end(); ++itr)
  435. if (Player* plr = itr->second->GetPlayer())
  436. if (plr->GetTeam() == player->GetTeam())
  437. sWorld->SendServerMessage(SERVER_MSG_STRING, msg.c_str(), plr);
  438. }
  439. else
  440. sWorld->SendGlobalText(c_msg, NULL);
  441. }
  442.  
  443. class cs_world_chat : public CommandScript
  444. {
  445. public:
  446. cs_world_chat() : CommandScript("cs_world_chat") {}
  447.  
  448. static bool HandleWorldChatCommand(ChatHandler* handler, const char* args)
  449. {
  450. if (!*args)
  451. return false;
  452.  
  453. Player* player = handler->GetSession()->GetPlayer();
  454.  
  455. _SendWorldChat(handler->GetSession()->GetPlayer(), args);
  456. // add mute time for stop spam
  457. LoginDatabasePreparedStatement* mt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_MUTE_TIME);
  458. int64 muteTime = time(NULL) + mutetimeantispam;
  459. player->GetSession()->m_muteTime = muteTime;
  460. mt->setInt64(0, muteTime);
  461. return true;
  462. }
  463. std::vector<ChatCommand> GetCommands() const override
  464. {
  465. static std::vector<ChatCommand> cs_world_chat =
  466. {
  467. {"chat", rbac::RBAC_PERM_COMMAND_SAVE, true, &HandleWorldChatCommand, "" },
  468. {"c", rbac::RBAC_PERM_COMMAND_SAVE, true, &HandleWorldChatCommand, "" },
  469. {"world", rbac::RBAC_PERM_COMMAND_SAVE, true, &HandleWorldChatCommand, "" },
  470. };
  471.  
  472. return cs_world_chat;
  473. }
  474. };
  475. void AddSC_cs_world_chat()
  476. {
  477. new cs_world_chat;
  478. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement