Skip to content

Instantly share code, notes, and snippets.

@AndrioCelos
Last active August 29, 2015 14:00
Show Gist options
  • Save AndrioCelos/12606c41ab4c68cfbde4 to your computer and use it in GitHub Desktop.
Save AndrioCelos/12606c41ab4c68cfbde4 to your computer and use it in GitHub Desktop.
A buffer playback script for KVIrc. It displays all messages from buffer playback in different colours, and stops them from highlighting you. It also assumes that you have PrependTimestamp set, and works with *buffextras (though not completely).
event(OnKVIrcStartup,_ZNCBufferPlayback)
{
%NicknameColours = $array($k(0,1), $k(0,2), $k(0,3), $k(0,4), $k(0,5), $k(0,6), $k(0,10), $k(0,12), $k(0,14), $k(1,0), $k(1,4), $k(1,7), $k(1,8), $k(1,9), $k(1,11), $k(1,15), $k(2,0), $k(2,4), $k(2,7), $k(2,8), $k(2,9), $k(2,11), $k(2,15), $k(3,8), $k(3,9), $k(3,0), $k(3,15), $k(4,0), $k(4,1), $k(4,8), $k(4,9), $k(4,11), $k(4,15), $k(5,0), $k(5,7), $k(5,8), $k(5,15), $k(6,0), $k(6,7), $k(6,8), $k(6,9), $k(6,10), $k(6,11), $k(6,15), $k(7,1), $k(7,2), $k(7,5), $k(7,6), $k(7,14), $k(8,1), $k(8,2), $k(8,3), $k(8,4), $k(8,5), $k(8,6), $k(8,7), $k(8,10), $k(8,12), $k(8,14), $k(9,1), $k(9,2), $k(9,3), $k(9,5), $k(9,6), $k(9,14), $k(10,1), $k(10,2), $k(11,1), $k(11,2), $k(11,3), $k(11,5), $k(11,6), $k(11,14), $k(12,0), $k(12,7), $k(12,8), $k(12,9), $k(12,10), $k(12,11), $k(12,15), $k(13,0), $k(13,1), $k(13,6), $k(13,8), $k(13,11), $k(13,15), $k(14,0), $k(14,8), $k(14,11), $k(14,15), $k(15,1), $k(15,2), $k(15,3), $k(15,6), $k(15,14))
}
event(OnChannelMessage,_ZNCBufferPlayback)
{
if ($0 == "***") {
if ($3 == "Buffer Playback...") {
%BufferPlayback{$context.networkName/$chan.name} = $true;
return;
} else if ($3 == "Playback Complete.") {
%BufferPlayback{$context.networkName/$chan.name} = $null;
return;
}
}
if (%BufferPlayback{$context.networkName/$chan.name}) {
if ($0 == "*buffextras") {
%fields = $str.split(" ", $3)
if (%fields[2] == "joined") {
echo -i=20 -n "$k(14)%fields[0] $k(2)$b\r!nc\r$mask.nick(%fields[1])\r$b joined. ($mask.user(%fields[1])@\r!h\r$mask.host(%fields[1])\r)";
} else if (%fields[2] == "quit") {
if (%fields[4] == "message:") {
echo -i=34 -n "$k(14)%fields[0] $b\r!nc\r$mask.nick(%fields[1])\r$b disappeared. ($mask.user(%fields[1])@\r!h\r$mask.host(%fields[1])\r - $str.mid(%fields[5], 1, $($str.length(%fields[5]) - 2)))";
} else {
echo -i=34 -n "$k(14)%fields[0] $b\r!nc\r$mask.nick(%fields[1])\r$b disappeared. ($mask.user(%fields[1])@\r!h\r$mask.host(%fields[1])\r)";
}
} else if (%fields[2] == "parted") {
if (%fields[4] == "message:") {
echo -i=21 -n "$k(14)%fields[0] $b\r!nc\r$mask.nick(%fields[1])\r$b fled. ($mask.user(%fields[1])@\r!h\r$mask.host(%fields[1])\r - $str.mid(%fields[5], 1, $($str.length(%fields[5]) - 2)))";
} else {
echo -i=21 -n "$k(14)%fields[0] $b\r!nc\r$mask.nick(%fields[1])\r$b fled. ($mask.user(%fields[1])@\r!h\r$mask.host(%fields[1])\r))";
}
} else if (%fields[4] == "known") {
echo -i=37 -n "$k(14)%fields[0] $k(6)$mask.nick(%fields[1]) [$mask.user(%fields[1])@\r!h\r$mask.host(%fields[1])\r] changed nickname to $b()\r!nc\r%fields[6]\r$b().";
} else {
echo -n "$k(14)\[––:––:––\] $k(15)$str.replace($3, $o(), $o()$k(15))"
}
} else {
%total = 0;
for (%i = 0; %i < $str.length($0); %i++) %total += $unicode($str.mid($0, %i, 1));
echo -i=25 -n "$k(14)$str.mid($3, 0, 10) $k($str.split(",", %NicknameColours[$(%total % 95)])[1])\r!nc\r$0\r$o()$k(15): $str.replace($str.mid($3, 11), $o(), $o()$k(15,99))"
}
halt;
}
}
event(OnAction,_ZNCBufferPlayback)
{
if (%BufferPlayback{$context.networkName/$chan.name}) {
echo -i=$msgtype(Action) -n "$k(6)$str.mid($4, 0, 10) \r!nc\r$0\r$o()$k(6) $str.replace($str.mid($4, 11), $o(), $o()$k(6,99))"
halt;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment