kusanagy

Anti_adv

Nov 12th, 2019
789
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.71 KB | None | 0 0
  1. // Unknown creator
  2. // Some errors fixed by CyBeR-PrO
  3. // Edited by Rochet2
  4.  
  5. #include "Channel.h"
  6. #include "Chat.h"
  7.  
  8. // only use lowercase letters
  9. // The strings are trimmed of whitespace and compared lowercase
  10. // To add more checks, just add a new line to the checks array
  11. static const char* checks[] = {
  12.     "sytes",
  13.     "instant",
  14.     "dyndns",
  15.     "no-ip",
  16.     "http:",
  17.     ".com",
  18.     ".net",
  19.     ".org",
  20.     ".eu",
  21.     ".fr",
  22.     ".bg",
  23.     ".info",
  24.     ".br",
  25.     "https:",
  26.     "wow",
  27.     "www.",
  28.     "no-ip",
  29.     ".zapto",
  30.     ".biz",
  31.     ".servegame",
  32.  
  33.     "trevonwow",
  34.     "megawow",
  35.     "fatalwow",
  36.     "uniforgiven-wow",
  37.     "wow-autolouco",
  38.     "heaven-wow",
  39.     "fireballwow",
  40.     "wowbrasilpa",
  41.     "fatalitywow",
  42.     "demonic-wow",
  43.     "revenge-wow",
  44.     "heavenwow",
  45.     "undead-wow",
  46.     "linebr",
  47.     "azralon",
  48.     "black-wow",
  49. };
  50.  
  51. static const size_t checksize = sizeof(checks) / sizeof(*checks);
  52. class System_Censure : public PlayerScript
  53. {
  54. public:
  55.     System_Censure() : PlayerScript("System_Censure") { }
  56.  
  57.     void CheckMessage(Player* player, std::string& msg, uint32 lang)
  58.     {
  59.         //if (player->isGameMaster() || lang == LANG_ADDON)
  60.         //    return;
  61.  
  62.         // remove all space characters and transform to lowercase for simpler checking
  63.         std::string checkmsg = msg;
  64.         checkmsg.erase(remove_if(checkmsg.begin(), checkmsg.end(), ::isspace), checkmsg.end());
  65.         std::transform(checkmsg.begin(), checkmsg.end(), checkmsg.begin(), ::tolower);
  66.  
  67.         for (size_t i = 0; i < checksize; ++i)
  68.         {
  69.             if (checkmsg.find(checks[i]) != std::string::npos)
  70.             {
  71.                 msg = "";
  72.                 ChatHandler(player->GetSession()).PSendSysMessage("Links/Advertisements are not allowed!");
  73.                 return;
  74.             }
  75.         }
  76.     };
  77.  
  78.     void OnChat(Player* player, uint32 /*type*/, uint32 lang, std::string& msg) override
  79.     {
  80.         CheckMessage(player, msg, lang);
  81.     }
  82.  
  83.     void OnChat(Player* player, uint32 /*type*/, uint32 lang, std::string& msg, Player* /*receiver*/) override
  84.     {
  85.         CheckMessage(player, msg, lang);
  86.     }
  87.  
  88.     void OnChat(Player* player, uint32 /*type*/, uint32 lang, std::string& msg, Group* /*group*/) override
  89.     {
  90.         CheckMessage(player, msg, lang);
  91.     }
  92.  
  93.     void OnChat(Player* player, uint32 /*type*/, uint32 lang, std::string& msg, Guild* /*guild*/) override
  94.     {
  95.         CheckMessage(player, msg, lang);
  96.     }
  97.  
  98.     void OnChat(Player* player, uint32 /*type*/, uint32 lang, std::string& msg, Channel* /*channel*/) override
  99.     {
  100.         CheckMessage(player, msg, lang);
  101.     }
  102. };
  103.  
  104. void AddSC_System_Censure()
  105. {
  106.     new System_Censure();
  107. }
Advertisement
Add Comment
Please, Sign In to add comment