I wrote a tiny script to support CAP znc.in/self-message so that playback of query buffers displays the full conversation, not just messages from the remote party.

It prints messages to the appropriate query window, in the correct color, and with the correct timestamp (format).

ACTIONs are also formatted properly so they can be differentiated from normal messages.

It seems to work well with one caveat: I can't get mIRC to stop opening a blank query window to myself ($me) despite using halt.

Any ideas on how to correct the issue and feedback/suggestions on the code in general would be appreciated.

Code:
; mIRC znc.in/self-message CAP support script by Mouse
; http://forums.mirc.com/ubbthreads.php/topics/252752
; v0.2 2015-05-08

; If server offers znc.in/self-message capability then request it.
raw CAP:*LS*znc.in/self-message*:{ .raw CAP REQ :znc.in/self-message }

; Process all private messages delivered to $me for which $me is not the target/recipient AND
; when no window for $me exists.
on ^*:OPEN:?:{
  if ($target != $me) {
    ; Make sure we have a query window to print to.
    if (!$window($target)) { query $target }
    ; Print message with proper formatting after checking if it's an ACTION.
    if ($gettok($rawmsg,4,32) == : $+ $chr(1) $+ ACTION) {
      echo $color(own text) -bfmt $+ $msgstamp $target * $nick $1-
    }
    else { echo $color(own text) -bfmt $+ $msgstamp $target < $+ $nick $+ > $1- }
    ; Halt further processing.
    halt
  }
}

; Process all private messages delivered to $me for which $me is not the target/recipient AND
; when a window for $me exists.
on ^*:TEXT:*:?:{
  if ($target != $me) {
    ; Make sure we have a query window to print to.
    if (!$window($target)) { query $target }
    ; Print message with proper formatting after checking if it's an ACTION.
    if ($gettok($rawmsg,4,32) == : $+ $chr(1) $+ ACTION) {
      echo $color(own text) -bfmt $+ $msgstamp $target * $nick $1-
    }
    else { echo $color(own text) -bfmt $+ $msgstamp $target < $+ $nick $+ > $1- }
    ; Halt further processing.
    halt
  }
}


This was tested with mIRC v7.41 and ZNC 1.6.0

Last edited by Mouse; 08/05/15 11:09 PM. Reason: Updated script to handle ACTIONs