on 1:CLOSE:@Irc2:{ sockclose irc set %close.x 1 :loop set %cur.win $window(@#*,%close.x) if %cur.win == $null { goto privwins } window -c $window(@#*,%close.x) inc %close.x goto loop :privwins set %close.x 1 :loop1 if $window(@C*,%close.x) == $null { goto end } window -c $window(@C*,%close.x) inc %close.x goto loop1 :end echo -s Disconnecting from Irc Server 2! } on 1:CLOSE:@#*:{ set %target $target set %target $remove(%target,@) sockwrite -n irc PART %target } on 1:input:@#*:{ if $1 == /me { goto action } if $left($1,1) == / { irccommand $1- } set %talk.chan $active set %talk.chan $remove(%talk.chan,@) sockwrite -n irc privmsg %talk.chan : $+ $1- aline -p $active $timestamp < $+ %irc2.nick $+ > $1- halt :action set %talk.chan $active set %talk.chan $remove(%talk.chan,@) sockwrite -n irc privmsg %talk.chan : $+ $chr(1) $+ ACTION $2- $+ $chr(1) aline -p $active 11 $+ $timestamp * %irc2.nick $2- halt } on 1:input:@Irc2:{ if $left($1,1) == / { irccommand $1- } aline @Irc2 8*** Please Dont Talk in the status Window aline @Irc2 11- halt } on 1:sockopen:irc:{ if $sockerr > 0 { halt } sockwrite -n irc user $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) $+ $rand(a,z) sockwrite -n irc nick %irc2.nick window -e @Irc2 } alias irccommand { set %prefix $1 if %prefix == /nick { set %irc2.nick $2- } if %prefix == /msg { sockwrite -n irc privmsg $2 : $+ $3- halt } set %prefix $remove(%prefix,/) sockwrite -n irc %prefix $2 : $+ $3- halt } alias ircchanmode { set %source $gettok(%var,1,32) set %source $left(%source,$pos(%source,!,1)) set %source $remove(%source,!,:) set %mode $gettok(%var,4,32) set %tmode $gettok(%var,5,32) aline -p @ $+ $gettok(%var,3,32) 3 $+ $timestamp *** %source Sets Mode %mode %tmode set %chan $gettok(%var,3,32) set %wind.chan @ $+ %chan set %person.nick %tmode set %person.nick1 * $+ %tmode if %mode == +o { rline -l %wind.chan $fline(%wind.chan,%person.nick1,1,1) @ $+ %person.nick } if %mode == -o { rline -l %wind.chan $fline(%wind.chan,%person.nick1,1,1) %person.nick } if %mode == +v { rline -l %wind.chan $fline(%wind.chan,%person.nick1,1,1) + $+ %person.nick } if %mode == -v { rline -l %wind.chan $fline(%wind.chan,%person.nick1,1,1) %person.nick } } on 1:sockread:irc:{ sockread %var set %server.name $gettok(%var,1,32) set %server.name $remove(%server.name,:) if QUIT == $gettok(%var,2,32) { quitirc } if PING == $gettok(%var,1,32) { set %2 $gettok(%var,2,32) sockwrite -n irc pong %2 aline @Irc2 8PING? PONG! aline @Irc2 11- halt } if JOIN == $gettok(%var,2,32) { set %irc2.chan $gettok(%var,3,32) set %irc2.chan $remove(%irc2.chan,:) ircjoinchan %irc2.chan } if KICK == $gettok(%var,2,32) { irckick } if 0 isin $gettok(%var,2,32) || 1 isin $gettok(%var,2,32) || 2 isin $gettok(%var,2,32) || 3 isin $gettok(%var,2,32) || 4 isin $gettok(%var,3,32) || 5 isin $gettok(%var,2,32) || 6 isin $gettok(%var,2,32) || 7 isin $gettok(%var,2,32) || 8 isin $gettok(%var,2,32) || 9 isin $gettok(%var,2,32) { rawcommand } if PART == $gettok(%var,2,32) { ircpart } if NICK == $gettok(%var,2,32) { ircnick } if MODE == $gettok(%var,2,32) { if $chr(35) == $left($gettok(%var,3,32),1) { ircchanmode } if $chr(35) != $left($gettok(%var,3,32),1) { set %mode $gettok(%var,4,32) set %mode $remove(%mode,:) echo @Irc2 8 $+ *** %irc2.nick Sets Mode %mode } halt } if PRIVMSG == $gettok(%var,2,32) { ircchanmsg %var } if NOTICE AUTH == $gettok(%var,2-3,32) { connectnotice } if TOPIC == $gettok(%var,2,32) { set %nick.topic $gettok(%var,1,32) set %nick.topic $left(%nick.topic,$pos(%nick.topic,!,1)) set %nick.topic $remove(%nick.topic,:,!) set %new.topic $gettok(%var,4-1000,32) set %new.topic $right(%new.topic,$calc($len(%new.topic) - 1)) aline -p @ $+ $gettok(%var,3,32) 3 $+ $timestamp *** %nick.Topic Changes Topic To ' $+ %new.topic $+ ' halt } if NOTICE == $gettok(%var,2,32) { set %say.not $gettok(%var,4-1000,32) set %nick.not $gettok(%var,1,32) set %nick.not $left(%nick.not,$pos(%nick.not,!,1)) set %nick.not $remove(%nick.not,!,:) aline -p @Irc2 11 $+ $timestamp *** - $+ %nick.not $+ - %say.not aline @Irc2 11- halt } if %var == $null { aline @Irc2 12- | halt } aline @Irc2 %var aline @Irc2 11- :end halt } alias quitirc { set %win.x 1 set %quit.reason $gettok(%var,3-1000,32) set %quit.reason $right(%quit.reason,$calc($len(%quit.reason) - 1)) set %quit.nick $gettok(%var,1,32) set %quit.host %quit.nick set %quit.nick $left(%quit.nick,$pos(%quit.nick,!,1)) set %quit.nick $remove(%quit.nick,!,:) set %quit.host $right(%quit.host,$calc($len(%quit.host) - 1)) set %person.nick1 * $+ %quit.nick set %person.nick1 $remove(%person.nick1,:) :loop set %wind.chan $window(@*,%win.x) if $window(@*,%win.x) == $null { halt } aline -p $window(@*,%win.x) 2 $+ $timestamp *** Quits: %quit.nick ( $+ %quit.host $+ ) Has quit IRC: ( $+ %quit.reason $+ ) if $window(@*,%win.x) == @Irc2 { aline @Irc2 11- } set %nick.line $fline(%wind.chan,%person.nick1,1,1) if %nick.line != $null { dline -l %wind.chan %nick.line } inc %win.x goto loop :end halt } alias ircnick { set %win.x 1 set %person.nick $gettok(%var,1,32) set %person.nick $left(%person.nick,$pos(%person.nick,!,1)) set %person.nick $remove(%person.nick,!,:) set %newnick $gettok(%var,3,32) set %newnick $remove(%newnick,:) :loop set %win.nick $window(@*,%win.x) if %win.nick == $null { goto end } if %win.nick != @Irc2 { set %person.nick3 * $+ %person.nick set %line.nick $fline(%win.nick,%person.nick3,1,1) if %line.nick != $null { aline -p %win.nick 8 $+ $timestamp *** %person.nick Is Now Known as %newnick rline -l %win.nick %line.nick %newnick } } inc %win.x goto loop :end halt } alias irckick { set %person.nick $gettok(%var,1,32) set %chan $gettok(%var,3,32) set %chan %chan set %kicked.nick $gettok(%var,4,32) set %kicked.reason $gettok(%var,5-1000,32) if %person.nick != %irc2.nick { set %chan $gettok(%var,3,32) set %kicked.nick $gettok(%var,4,32) set %kicked.reason $gettok(%var,5-1000,32) set %kicked.reason $remove(%kicked.reason,:) set %person.nick $left(%person.nick,$pos(%person.nick,!,1)) set %person.nick $remove(%person.nick,!,:) aline -p @ $+ %chan 8 $+ $timestamp *** %kicked.nick Was Kicked From %chan By %person.nick ( $+ %kicked.reason $+ ) set %wind.chan @ $+ %chan set %person1.nick * $+ %kicked.nick dline -l %wind.chan $fline(%wind.chan,%person1.nick,1,1) } if %kicked.nick == %irc2.nick { window -c @ $+ %chan set %person.host $gettok(%var,1,32) set %person.host1 $left(%person.host,$pos(%person.host,!,1)) set %person.nick1 $left(%person.host,$pos(%person.host,!,1)) set %person.host2 $remove(%person.host,%person.nick1) aline -p @Irc2 8 $+ $timestamp *** You were Kicked from %chan by %person.nick ( $+ %kicked.reason $+ ) aline @Irc2 11- } } alias ircjoinchan { set %chan $1 set %irc2.chan $gettok(%var,3,32) set %irc2.chan $remove(%irc2.chan,:) set %person.nick $gettok(%var,1,32) set %person.nick $left(%person.nick,$pos(%person.nick,!,1)) set %person.nick $remove(%person.nick,!,:) if %person.nick == %irc2.nick { window -g1Sel10 @ $+ %chan halt } set %chan $1 set %person.host $gettok(%var,1,32) set %person.host1 $left(%person.host,$pos(%person.host,!,1)) set %person.nick1 $left(%person.host,$pos(%person.host,!,1)) set %person.host2 $remove(%person.host,%person.nick1) aline -p @ $+ %chan 8 $+ $timestamp *** %person.nick ( $+ %person.host2 $+ ) Has Joined $1 aline -l @ $+ %chan %person.nick set %chan. $+ %chan %chan. [ $+ [ %chan ] ] %person.nick halt } alias ircpart { set %person.nick $gettok(%var,1,32) set %person.nick $left(%person.nick,$pos(%person.nick,!,1)) set %person.nick $remove(%person.nick,!,:) set %chan $gettok(%var,3,32) if %person.nick != %irc2.nick { set %chan %chan set %person.host $gettok(%var,1,32) set %person.host1 $left(%person.host,$pos(%person.host,!,1)) set %person.nick1 $left(%person.host,$pos(%person.host,!,1)) set %person.host2 $remove(%person.host,%person.nick1) set %person.nick1 * $+ %person.nick aline -p @ $+ %chan 8 $+ $timestamp *** %person.nick ( $+ %person.host2 $+ ) Has Left %chan set %wind.chan @ $+ %chan dline -l %wind.chan $fline(%wind.chan,%person.nick1,1,1) set %chan. $+ %wind.chan $remove(%chan [ $+ [ %wind.chan ] ],%person.nick) } if %person.nick == %irc2.nick { unset %chan. $+ %chan } halt } alias listnicks { set %all.nicks $2- set %chan.list $1 set %chan. $+ %chan.list %all.nicks set %all.nicks $remove(%all.nicks,:) set %nick.x 1 :loop set %nick.1 $gettok(%all.nicks,%nick.x,32) if %nick.1 == $null { goto end } aline -l @ $+ %chan.list %nick.1 inc %nick.x goto loop :end } alias rawcommand { if 332 == $gettok(%var,2,32) { set %topic $gettok(%var,5-1000,32) aline -p @ $+ $gettok(%var,4,32) 3 $+ $timestamp Now Topi...
dzikut