irc2.txt

(12 KB) Pobierz
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...
Zgłoś jeśli naruszono regulamin