Advertisement
LucasRed

IRC Echo com plugin!!

Jul 12th, 2017
308
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.90 KB | None | 0 0
  1. /*
  2.     ----- IRC Script -----
  3.     Essencial pra quem deseja conectar um bot a dois canais simultaneamente.
  4.     Para usar esse script serão necessários:
  5.       - IRC Plugin: https://bitbucket.org/Thijn41/0.4-irc (Para a pasta plugins);
  6.       - DLL ssleay32: https://www.dll-files.com/ssleay32.dll.html (Para a pasta principal do server);
  7.       - DLL libeay32: https://pt.dll-files.com/libeay32.dll.html (Para a pasta principal do server).
  8. */
  9. g_IRC <- null;
  10.  
  11. // CHANGEME
  12. IRC_SERVER          <- "irc.gtanet.com"; // Servidor de IRC a conectar (GTANet)
  13. IRC_ECHO_CHANNEL    <- "#script.br"; // Canal #1
  14. IRC_STAFF_CHANNEL   <- "#script.staff"; // Canal #2
  15. IRC_NICKNAME        <- "ScriptBOT"; // Nick do bot
  16. IRC_PASS            <- "botpassword"; // Senha do bot
  17. IRC_ECHO_PASS       <- ""; // Senha do canal #1
  18. IRC_STAFF_PASS      <- ""; // Senha do canal #2
  19.  
  20. const USER = 1;
  21. const VOICE = 2;
  22. const HALFOP = 3;
  23. const OP = 4;
  24. const SOP = 5;
  25. const OWNER = 6;
  26.  
  27. const IRC_COL_WHITE = "\x000300";
  28. const IRC_COL_BLACK = "\x000301";
  29. const IRC_COL_DARKBLUE = "\x000302";
  30. const IRC_COL_DARKGREEN = "\x000303";
  31. const IRC_COL_RED = "\x000304";
  32. const IRC_COL_BROWN = "\x000305";
  33. const IRC_COL_PURPLE = "\x000306";
  34. const IRC_COL_ORANGE = "\x000307";
  35. const IRC_COL_YELLOW = "\x000308";
  36. const IRC_COL_GREEN = "\x000309";
  37. const IRC_COL_AQUA = "\x000310";
  38. const IRC_COL_CYAN = "\x000311";
  39. const IRC_COL_BLUE = "\x000312";
  40. const IRC_COL_PINK = "\x000313";
  41. const IRC_COL_DARKGREY = "\x000314";
  42. const IRC_COL_LIGHTGREY = "\x000315";
  43. const IRC_COL        = "\x0003";
  44. const IRC_COL_BOLD    = "\x0002";
  45.  
  46. function onScriptLoad()
  47. {  
  48.     g_IRC <- IRC_Init();
  49.    
  50.     IRC_SetIP( g_IRC, IRC_SERVER );
  51.     IRC_SetPort( g_IRC, 6667 );
  52.     IRC_SetNick( g_IRC, IRC_NICKNAME );
  53.     IRC_SetUser( g_IRC, IRC_NICKNAME );
  54.     IRC_SetRealname( g_IRC, IRC_NICKNAME );
  55.  
  56.     IRC_Connect( g_IRC, false );
  57. }
  58.  
  59. function EchoMessage( out )
  60. {
  61.     IRC_PrivMsg( g_IRC, IRC_ECHO_CHANNEL, out );
  62. }
  63.  
  64. function EchoNotice( nick, out )
  65. {
  66.     IRC_Notice( g_IRC, nick, out );
  67. }
  68.  
  69. function AdminMessage( string_text )
  70. {
  71.     IRC_PrivMsg( g_IRC, IRC_STAFF_CHANNEL, string_text );
  72. }
  73.  
  74. function EMessage( text )
  75. {
  76.     Message( text );
  77.     EchoMessage( text );
  78. }
  79.  
  80. function GetIRCLevel( Level )
  81. {
  82.     local Name = "User";
  83.     switch( Level )
  84.     {
  85.         case 1:
  86.             Name = "User";
  87.             break;
  88.         case 2:
  89.             Name = "Voice";
  90.             break;
  91.         case 3:
  92.             Name = "Half-Op";
  93.             break;
  94.         case 4:
  95.             Name = "Op";
  96.             break;
  97.         case 5:
  98.             Name = "Manager";
  99.             break;
  100.         case 6:
  101.             Name = "Owner";
  102.             break;
  103.     }
  104.     return Name;
  105. }
  106.  
  107. function IRC_onNumeric( irc, numeric, host, data )
  108. {
  109.     if ( numeric == 001 )
  110.     {
  111.         // Entrar nos canais
  112.         IRC_Join( irc, IRC_ECHO_CHANNEL, IRC_ECHO_PASS );
  113.         IRC_Join( irc, IRC_STAFF_CHANNEL, IRC_STAFF_PASS );
  114.         IRC_PrivMsg( irc, "NICKSERV", "IDENTIFY " + IRC_PASS );
  115.     }
  116. }
  117.  
  118. function IRC_onPrivMsg( irc, host, channel, message )
  119. {
  120.     local nick = split( host, "!:" )[0];
  121.        
  122.     local cmd = split( message, " " )[0];
  123.    
  124.     local L = IRC_GetUserModes( irc, channel, nick );
  125.     local Level, level;
  126.     if ( L.len() > 1 ) Level = L.slice( 0, 1 );
  127.     else Level = L;
  128.     if ( Level.find( "q" ) != null ) level = 6;
  129.     else if ( Level.find( "a" ) != null ) level = 5;
  130.     else if ( Level.find( "o" ) != null ) level = 4;
  131.     else if ( Level.find( "h" ) != null ) level = 3;
  132.     else if ( Level.find( "v" ) != null ) level = 2;
  133.     else level = 1;
  134.    
  135.     local
  136.     player    = nick,
  137.     msg        = message,
  138.     idnet     = irc, user    = player, cmd = split( msg, " " )[0],
  139.     text    = split( msg," " ).len() > 1 ? msg.slice( msg.find( " " ) + 1 ) : null;
  140.     cmd     = cmd.tolower();
  141.    
  142.     local plr, params, i;
  143.     if ( text )
  144.     {
  145.         plr = FindPlayer( text );
  146.         params = split( text, " " );
  147.         i = params.len();
  148.     }
  149.  
  150.  
  151.     // ----- Comandos do canal público.
  152.     if ( channel == IRC_ECHO_CHANNEL )
  153.     {
  154.         if ( cmd == "!players" )
  155.         {
  156.             EchoMessage( GetPlayers() + " players online."  );
  157.         }
  158.  
  159.         else if ( cmd == "!ping" )
  160.         {
  161.             if ( !text ) EchoNotice( user,"Syntax: " + cmd + " <player> " );
  162.             else
  163.             {
  164.                 local plr = IsNum( text ) ? FindPlayer( text.tointeger() ) : FindPlayer( text );
  165.                 if ( !plr ) EchoNotice( user,"Error: Unknown player." );
  166.                 else EchoMessage( plr.Name + "'s Ping: " + plr.Ping );
  167.             }
  168.         }
  169.  
  170.         // Falar com .
  171.         else if ( cmd.slice( 0, 1 ) == "." )
  172.         {
  173.             if ( text = msg.slice( msg.find( "." ) + 1 ) ) SendIRCMessage( player, level, text );
  174.         }
  175.        
  176.     }
  177.  
  178.    // ----- Comandos para o canal administrativo.
  179.     else if ( channel == IRC_STAFF_CHANNEL )
  180.     {
  181.         if ( cmd == "!banlist" )
  182.         {
  183.             if ( level < OP ) AdminMessage( "No, you are not allowed to use this command." );
  184.             else
  185.             {
  186.                 AdminMessage( "Fool! There are no banned players." );
  187.             }
  188.         }
  189.  
  190.         else if ( cmd == "!lockserver" )
  191.         {
  192.             if ( level < OP ) AdminMessage( "No, you are not allowed to use this command." );
  193.             else if ( !text ) AdminMessage( "Syntax: " + cmd + " [password]" );
  194.             else
  195.             {
  196.                 SetPassword( text );
  197.                 AdminMessage( "Server locked!" );
  198.             }
  199.         }
  200.     }
  201. }
  202.  
  203. function SendIRCMessage( nick, level, text )
  204. {
  205.     local des_cp = level;
  206.     if ( des_cp == OWNER ) des_cp = "Owner";
  207.     else if ( des_cp == SOP ) des_cp = "Manager";
  208.     else if ( des_cp == OP ) des_cp = "Admin";
  209.     else if ( des_cp == HALFOP ) des_cp = "Moderator";
  210.     else if ( des_cp == VOICE ) des_cp = "Voice";
  211.     else if ( des_cp == USER ) des_cp = "User";
  212.    
  213.     ClientMessageToAll( "> (" + des_cp + ") " + nick + ": " + text, 255, 0, 0 );
  214.     EchoMessage( "12(" + des_cp + ") " + nick + ": " + text );
  215. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement