Skip to content

Instantly share code, notes, and snippets.

@barik
Created January 31, 2013 04:28
Show Gist options
  • Save barik/4680192 to your computer and use it in GitHub Desktop.
Save barik/4680192 to your computer and use it in GitHub Desktop.
mIRC ZNC
alias -l config {
; Mandatory settings
; var %TIMESTAMP_PATTERN = ^\[(\d\d:\d\d:\d\d)\].*$
var %TIMESTAMP_PATTERN = ^\[(\d\d:\d\d:\d\d)\].*$
var %PLAYBACK_BEGIN = Buffer Playback...
var %PLAYBACK_END = Playback Complete.
var %VARIABLE_PREFIX = gbuffer
; Optional settings
; Indent wrapped lines
var %INDENT_LINES = $false
; Add the mode prefix to the nick (if possible)
var %PREFIX_NICKS = $true
; Are there other ON TEXT processors in place?
var %EXTERNAL_RENDERER = $false
; Possible values are NORMAL/LINESEP/NONE
var %STATUS_DISPLAY = NORMAL
; Make use of space-preserving spaces.dll
var %USE_SPACES_DLL = $true
return $eval( $+( %, $1 ), 2 )
}
alias -l makeNick {
var %nick = $nick( $1, $2 ).pnick
if ( ( 0 == $len( %nick ) ) || ( $true != $config( PREFIX_NICKS ) ) ) %nick = $2
return %nick
}
alias -l handleMessage {
var %chan = $1
var %nick = $2
var %color = $3
var %pattern = $4
var %text = $5
var %pnick = $makeNick( %chan, %nick )
; Buffered input
if ( $true == $eval( $+( %, $config( VARIABLE_PREFIX ), ., $cid, ., %chan, ., playback ), 2 ) ) {
noop $regex( %text, $config( TIMESTAMP_PATTERN ) ) )
var %timestamp = $chr(91) $+ $regml( 1 ) $+ $chr(93)
var %params
if ( $config( INDENT_LINES ) ) %params = $+( i, $calc( $len( %timestamp ) + $len( %pnick ) + 4 ) )
if ( %nick != $me ) %params = $+( %params, lmr )
if ( 0 != $len( %params ) ) %params = $+( -, %params )
if ( %nick == $me ) {
if ( $true == $config( USE_SPACES_DLL ) ) {
var %result
noop $regex( %text, ^.*? (.*)$ )
noop $regsub( %pattern, &TEXT&, $regml( 1 ), %result )
noop $regsub( %result , &NICK&, %pnick, %result )
noop $dll( spaces.dll, echo, $color( own ) %params $chan %timestamp %result )
}
else {
echo $color( own ) %params $chan %timestamp $replacecs( %pattern, &NICK&, %pnick, &TEXT&, $gettok( %text, 2-, 32 ) )
}
}
else {
if ( $true == $config( USE_SPACES_DLL ) ) {
var %result
noop $regex( %text, ^.*? (.*)$ )
noop $regsub( $regml( 1 ), /\\/g, \\\\, %result )
noop $regsub( %pattern, &TEXT&, %result, %result )
noop $regsub( %result , &NICK&, %pnick, %result )
noop $dll( spaces.dll, echo, $color( %color ) %params $chan %timestamp %result )
}
else {
echo $color( %color ) %params $chan %timestamp $replacecs( %pattern, &NICK&, %pnick, &TEXT&, $gettok( %text, 2-, 32 ) )
}
}
}
else {
; Current events (optional)
if ( $true == $config( EXTERNAL_RENDERER ) ) return $false
if ( $true == $config( USE_SPACES_DLL ) ) {
var %result
noop $regsub( %pattern, &NICK&, %pnick, %result )
noop $regsub( %text, /\\/g, \\\\, %text )
noop $regsub( %result, &TEXT&, %text, %result )
noop $dll( spaces.dll, echo, $color( %color ) $+( -i, $calc( $len( $timestamp ) + $len( %pnick ) + 5 ), lmrt ) $chan %result )
}
else {
echo $color( %color ) $+( -i, $calc( $len( $timestamp ) + $len( %pnick ) + 4 ), lmrt ) $chan $replacecs( %pattern, &NICK&, %pnick, &TEXT&, %text )
}
}
return $true
}
on ^*:text:*:#:{
; Handle savebuff output
if ( $nick == *savebuff ) {
var %nick = $gettok( $2, 1, $asc( ! ) )
var %timestamp = $asctime( $1, $timestampfmt )
if ( $3 == MODE ) echo $color( mode ) $chan %timestamp * %nick sets mode: $4-
elseif ( $3 == JOIN ) echo $color( join ) $chan %timestamp * %nick ( $+ $gettok( $2, 2, $asc( ! ) ) $+ ) has joined $chan
elseif ( $3 == QUIT ) echo $color( quit ) $chan %timestamp * %nick ( $+ $gettok( $2, 2, $asc( ! ) ) $+ ) Quit ( $+ $4- $+ )
elseif ( $3 == PART ) echo $color( part ) $chan %timestamp * %nick ( $+ $gettok( $2, 2, $asc( ! ) ) $+ ) has left $chan
elseif ( $3 == NICK ) echo $color( nick ) $chan %timestamp * %nick is now known as $4
elseif ( $3 == KICK ) echo $color( kick ) $chan %timestamp * $2 was kicked by $gettok( $4, 1, $asc( ! ) ) ( $+ $5- $+ )
else echo $color( erro ) $chan *** UNHANDLED LINE < $+ $1- $+ >
}
; Handle playback state notifications
elseif ( $nick == *** ) {
if ( $1- == $config( PLAYBACK_BEGIN ) ) {
set -e $+( %, $config( VARIABLE_PREFIX ), ., $cid, ., $chan, ., playback ) $true
}
elseif ( $1- == $config( PLAYBACK_END ) ) {
unset $eval( $+( %, $config( VARIABLE_PREFIX ), ., $cid, ., $chan, ., playback ), 1 )
}
if ( $config( STATUS_DISPLAY ) == NORMAL ) {
echo $color( notice ) $chan *** $1-
}
elseif ( $config( STATUS_DISPLAY ) == LINESEP ) {
linesep $chan
}
}
; Handle usual input
else {
var %pattern = ^:.*? :(.*)$
noop $regex( $rawmsg, %pattern )
if ( $false == $handleMessage( $chan, $nick, normal, <&NICK&> &TEXT&, $regml( 1 ) ) ) return
}
halt
}
on ^*:action:*:#:{
;noop $dll( spaces.dll, echo, $chan $rawmsg )
var %pattern = ^:.*? :\x01ACTION (.*)\x01$
noop $regex( $rawmsg, %pattern )
if ( $true == $handleMessage( $chan, $nick, action, * &NICK& &TEXT&, $regml( 1 ) ) ) halt
}
on ^*:notice:*:#:{
;noop $dll( spaces.dll, echo, $chan $rawmsg )
var %pattern = ^:.*? :(.*)$
noop $regex( $rawmsg, %pattern )
if ( $true == $handleMessage( $chan, $nick, notice, -&NICK&- &TEXT&, $regml( 1 ) ) ) halt
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment