0 Members and 2 Guests are viewing this topic.
ON ^*:TEXT:*:#:if ( $nick == OmnomIRC ) { echo $chan $iif($regsubex($readini($mircini,options,n4),/(^(.+?,){11}(.+?).*)/,\3) == 1,$timestamp,) $iif( $mid($1-,2,1) == $chr(35) , (4 $+ $chr(35) $+ ) $+ $mid($1-,4), (12O) $+ $mid($1-,7) ) | haltdef }
ON ^*:TEXT:*:#:{ var %timestamp $chr(20) if ($regsubex($readini($mircini,options,n4),/(^(.+?,){11}(.+?).*)/,\3) == 1) { var %timestamp $timestamp } if ( $nick == OmnomIRC ) { echo $chan %timestamp $iif( $mid($1-,2,1) == $chr(35) , (4 $+ $chr(35) $+ ) $+ $mid($1-,4), (12O) $+ $mid($1-,7) ) | haltdef } if ( $nick == Saxjax ) { echo $chan %timestamp $regsubex( $1- ,\((.)\).\[(.+?)\] (.*),( $+ 5\1 $+ $+ ) <\2> \3) | haltdef }}
#include "xchat-plugin.h"#include <string>#include <cstdlib>#include <regex>#include <iostream>#define PNAME "OmnomIRC Integration"#define PDESC "Integrates OmnomIRC into X-Chat"#define PVERSION "0.1"static xchat_plugin *ph; /* plugin handle */static int enable = 1;static char omnomIRC_Name[] = "OmnomIRC";using namespace std::tr1;using namespace std;//#define debugstatic void dbgPrint(const char *message){#ifdef debug xchat_print(ph,message);#endif}static void dbgPrint(string message){#ifdef debug xchat_print(ph,message.c_str());#endif}static string getMessageType(string message){ if (regex_search(message.begin(),message.end(),regex("^.{0,3}\\((.)\\).{0,1}<(.+?)> (.*)"))) return "message"; if (regex_search(message.begin(),message.end(),regex("^.{0,4}\\((.)\\)([^:space:]{0,4})\\* ?(.*)"))) return "action"; return "";}static char* getNameColor(const char *name){ char *rcolors[] = {"19", "20", "22", "24", "25", "26", "27", "28", "29"}; int sum = 0, i = 0; while (name[i] != '\x00') sum += name[i++]; sum %= 9; return rcolors[sum];}static int on_text_cb(char *word[], void *userdata){ if (strcmp(word[0],omnomIRC_Name)) { string messageType = getMessageType(word[2]).c_str(); string type = word[0]; cmatch parts; if (strcmp(messageType.c_str(),"message") == 0) { regex rx("^.{0,3}\\((.)\\).{0,1}<(.+?)> (.*)"); regex_search(word[2],parts,rx); bool omnomirc = parts[1].str().c_str()[0] == 'O'; string name; if (omnomirc) { name.append("\x03""(\x03""12O\x03"")\x03"); name.append(getNameColor(parts[2].str().c_str())); } else { name.append("\x03""(\x03""4#\x03"")\x03"); name.append(getNameColor(parts[2].str().c_str())); } name.append(parts[2]); string msg;; msg.append(parts[3]); parts[2].str(); if (xchat_nickcmp(ph,xchat_get_info(ph,"nick"),parts[2].str().c_str()) == 0) xchat_emit_print(ph, "Channel Message",name.c_str(), msg.c_str(), "@", NULL); //Don't highlight on local messages else xchat_emit_print(ph, type.c_str(), name.c_str(), msg.c_str(), "@", NULL); return XCHAT_EAT_ALL; } else if (strcmp(messageType.c_str(),"action") == 0) { regex rx("^.{0,3}\\((.)\\)([^:space:]{0,4})\\* ?(.*)"); regex_search(word[2],parts,rx); bool omnomirc = parts[1].str().c_str()[0] == 'O'; string name = "\x03""\x03"; if (omnomirc) name.append("12O\x03""18 *"); else name.append("04#\x03""18 *"); string message(parts[2]); message.append(parts[3]); xchat_emit_print(ph, type.c_str(), name.c_str(), message.c_str(), "@", NULL); return XCHAT_EAT_ALL; } } return XCHAT_EAT_NONE;}void xchat_plugin_get_info(char **name, char **desc, char **version, void **reserved){ *name = PNAME; *desc = PDESC; *version = PVERSION;}int xchat_plugin_init(xchat_plugin *plugin_handle, char **plugin_name, char **plugin_desc, char **plugin_version, char *arg){ /* we need to save this for use with any xchat_* functions */ ph = plugin_handle; /* tell xchat our info */ *plugin_name = PNAME; *plugin_desc = PDESC; *plugin_version = PVERSION; xchat_hook_print(ph, "Channel Message", XCHAT_PRI_NORM, on_text_cb, NULL); xchat_hook_print(ph, "Channel Msg Hilight", XCHAT_PRI_NORM, on_text_cb, NULL); xchat_print(ph, "OmnomIRC Integration loaded successfully!\n"); return 1;}
I have one attached to the first post in the thread.I also just put the source to the x-chat plugin in there.Right now, it just manipulates the text to be easier to read. I want to get userlist integration too, but I'm not sure I can manipulate those in X-Chat and mIRC.
You hadn't attached it when I posted, but I see now, thanks.
No xchat_plugin_init symbol; is this really an xchat plugin?
The issue I have with stripping a bunch of extra nicks is that every time the bots are down, someone inevitably impersonates the bot and screws with stuff.
Nice stuff! Just a friendly poke that XChat can support Python, Perl, and TCL (the former being the most popular), so you can have a bit more portability. (I can't compile that plugin until I dig out some archives for the needed headers - surprisingly, XChat on Linux doesn't come with them, but they are installed when compiling XChat2 source.)
#include <string>
#include <cstring>
using namespace std::tr1;
gcc -Wl,--export-dynamic -Wall -O1 -shared -fPIC -std=c++0x xchat_omnomirc.cpp -o xchat_omnomirc.so