+++ /dev/null
-# Display kills with more understandable messages.
-# for irssi 0.7.98 by Timo Sirainen
-
-# There's one kind of nick collision this script doesn't handle - if the
-# collision is detected by the server you're connected to, it won't use
-# kill as quit reason, but "Nick collision(new)" or "..(old)". This is pretty
-# easy to understand already, happens hardly ever(?) and it can be faked
-# so I thought better not change it to kill message.
-
-# There's a pretty good explanation of (ircnet) ircd's server kills in
-# http://www.irc.org/tech_docs/ircnet/kills.html
-
-use Irssi;
-use vars qw($VERSION %IRSSI);
-
-$VERSION = "1.00";
-%IRSSI = (
- authors => 'Timo Sirainen',
- name => 'kills',
- description => 'Displays kills with more understandable messages',
- license => 'Public Domain',
- changed => 'Sun Mar 10 23:18 EET 2002'
-);
-
-Irssi::theme_register([
- 'kill_public', '{channick $0} {chanhost $1} killed by {nick $2}$3 {reason $4}'
-]);
-
-sub msg_quit {
- my ($server, $nick, $addr, $data) = @_;
-
- my $localkill;
- if ($data =~ /^Killed \(([^ ]*) \((.*)\)\)$/) {
- # remote kill
- $localkill = 0;
- } elsif ($data =~ /^Local Kill by ([^ ]*) \((.*)\)/) {
- # local kill
- $localkill = 1;
- } else {
- return;
- }
-
- my $killer = $1;
- my $killmsg = $2;
- my $msg = "\002Nick collision\002: ";
-
- my @printargs = ();
- if ($killmsg =~ /([^ ]*) != (.*)/) {
- # 1 != 2
- my $server1 = $1, $server2 = $2;
-
- $server1 =~ s/([^\[]*)\[([^\]]*)\]/\1/;
- $msg .= "$2 != $server2";
- } elsif ($killmsg =~ /([^ ]*) <- (.*)/) {
- # 1 <- 2
- my $server1 = $1, $server2 = $2;
-
- if ($server1 =~ /^\(/) {
- # (addr1)server1 <- (add2)server2
- $server1 =~ s/^\(([^\)]*)\)//;
- my $nick1 = $1;
- $server2 =~ s/^\(([^\)]*)\)//;
- my $nick2 = $1;
-
- $msg .= "server $server1";
- $msg .= " (nick from $nick1)" if $nick1;
- $msg .= " <- ";
- $msg .= "\002$server2\002";
- $msg .= " (nick from \002$nick2\002)" if $nick2;
- } elsif ($server1 =~ /\)$/ || $server2 =~ /\)$/) {
- # server1(nick) <- server2
- # server1 <- server2(nick)
- $server1 =~ s/\(([^\)]*)\)$//;
- my $oldnick = $1;
- $server2 =~ s/\(([^\)]*)\)$//;
- $oldnick = $1 if $1;
- $msg = "\002Nick change collision\002: $server1 <- \002$server2\002 (old nick \002$oldnick\002)";
- } else {
- # server1 <- server2
- $msg = "\002Nick/server collision\002: $server1 <- \002$server2\002";
- }
- } else {
- # something else, just show it as-is
- $msg = $killmsg;
- }
-
- @list = $server->nicks_get_same($nick);
- while (@list) {
- $channel = $list[0];
- shift @list;
- # skip nick record
- shift @list;
-
- $channel->printformat(MSGLEVEL_QUITS, 'kill_public',
- $nick, $addr, $killer,
- $localkill ? " (local)" : "", $msg);
- }
-
- Irssi::signal_stop();
-}
-
-Irssi::signal_add('message quit', 'msg_quit');