All pastes #361087 Raw Edit

Stuff

public text v1 · immutable
·published 2007-02-17 22:28 UTC
rendered paste body
;======================================================
;                  Relay by Cameron
;======================================================
;
;    This will allow you to relay, or link, if you
; will, two or more channels across two or more 
; networks.
;  
;
; Configuration:
;  Relay.networks, this is a list, seperated by a 
;    space, of all the networks we are going to be 
;    relaying across.
alias -l relay.networks { return 1andallIRC mIRCAddict Pharos-IRC Replica }
;
;  Relay.channels, this is a list, seperated by a 
;    space, of the channel names that we are going 
;    to be relaying, the channel names corrispond to 
;    the relay.networks above.
alias -l relay.channels { return #Chat #Chat #Chat #Chat }
;
;  Relay.fmt.text, this is the format of normal 
;    relayed text.
;    $1  = Nick
;    $2  = Channel
;    $3  = Network
;    $4- = Text
alias -l relay.fmt.text { return $+(12<4,$1,12@4,$3,12>)  $4- }
;
;  Relay.fmt.action, this is the format of /me 
;    relayed text.
;    $1  = Nick
;    $2  = Channel
;    $3  = Network
;    $4- = Text
alias -l relay.fmt.action { return 13* $+($1,@,$3,) $4- }
;
;  Relay.fmt.quit, this is the format of relayed
;    quits.
;    $1  = Nick
;    $2  = Channel
;    $3  = Network
;    $4- = Quit Message
;
alias -l relay.fmt.quit { return 9* $+($1,@,$3) Quit $4- }
;
;  Relay.fmt.join, this is the format of relayed 
;    joins.
;    $1  = Nick
;    $2  = Channel
;    $3  = Network
alias -l relay.fmt.join { return 6* $+($1,@,$3) Joins $2 }
;
;  Relay.fmt.part, this is the format of relayed
;    parts.
;    $1  = Nick
;    $2  = Channel
;    $3  = Network
;    $4- = Part Message (if available)
alias -l relay.fmt.part { return 7* $+($1,@,$3) Parts $2 ( $+ $4- $+ ) }
;
;  Relay.fmt.kick, this is the format of relayed
;    parts.
;    $1  = Nick
;    $2  = Channel
;    $3  = Network
;    $4  = Kicker
;    $5- = Kick Message
alias -l relay.fmt.kick { return 4* $+($4,@,$3) Kicks $+($1,@,$3) Out of $2  ( $+ $5- $+ ) }
;
;  Relay.fmt.mode, this is the format of relayed 
;    modes.
;    $1  = Nick
;    $2  = Channel
;    $3  = Network
;    $4- = Modes
alias -l relay.fmt.mode { /mode #Chat $4- }
;
;  Relay.fmt.topic, this is the format of relayed 
;    topics.
;    $1  = Nick
;    $2  = Channel
;    $3  = Network
;    $4- = Topic
alias -l relay.fmt.topic { if ($nick == $me) { HALT } 
/topic #Chat $4- 7( $+ $+($1,@,$3) $+ ) }
;
;

on *:text:*:#:{ 
  var %tok = $findtok($relay.networks,$network,1,32) 
  if ($chan == $gettok($relay.channels,%tok,32)) { 
    var %lcv = 1 
    var %tot = $gettok($relay.networks,0,32) 
    while (%lcv <= %tot) { 
      var %cid = $cid 
      var %ncid = $getcidfromnet($gettok($relay.networks,%lcv,32)) 
      if (%ncid != %cid) { 
        var %net = $network 
        scid %ncid 
        msg $gettok($relay.channels,%lcv,32) $relay.fmt.text($nick,$chan,%net,$1-) 
        scid %cid 
      } 
      inc %lcv 
    } 
  } 
} 
on *:action:*:#: { 
  var %tok = $findtok($relay.networks,$network,1,32) 
  if ($chan == $gettok($relay.channels,%tok,32)) { 
    var %lcv = 1 
    var %tot = $gettok($relay.networks,0,32) 
    while (%lcv <= %tot) { 
      var %cid = $cid 
      var %ncid = $getcidfromnet($gettok($relay.networks,%lcv,32)) 
      if (%ncid != %cid) { 
        var %net = $network 
        scid %ncid 
        msg $gettok($relay.channels,%lcv,32) $relay.fmt.action($nick,$chan,%net,$1-)
        scid %cid 
      } 
      inc %lcv 
    } 
  } 
} 
on *:quit: { 
  var %tok = $findtok($relay.networks,$network,1,32) 
  if ($nick ison $gettok($relay.channels,%tok,32)) { 
    var %lcv = 1 
    var %tot = $gettok($relay.networks,0,32) 
    while (%lcv <= %tot) { 
      var %cid = $cid 
      var %ncid = $getcidfromnet($gettok($relay.networks,%lcv,32)) 
      if (%ncid != %cid) { 
        var %net = $network 
        scid %ncid 
        msg $gettok($relay.channels,%lcv,32) $relay.fmt.quit($nick,$gettok($relay.channels,%tok,32),%net,$1-)
        scid %cid 
      } 
      inc %lcv 
    } 
  } 
} 
on *:join:#: { 
  if ($nick != $me) { 
    var %tok = $findtok($relay.networks,$network,1,32) 
    if ($chan == $gettok($relay.channels,%tok,32)) { 
      var %lcv = 1 
      var %tot = $gettok($relay.networks,0,32) 
      while (%lcv <= %tot) { 
        var %cid = $cid 
        var %ncid = $getcidfromnet($gettok($relay.networks,%lcv,32)) 
        if (%ncid != %cid) { 
          var %net = $network 
          scid %ncid 
          msg $gettok($relay.channels,%lcv,32) $relay.fmt.join($nick,$chan,%net)
          scid %cid 
        } 
        inc %lcv 
      } 
    } 
  } 
} 
on *:part:#: { 
  if ($nick != $me) { 
    var %tok = $findtok($relay.networks,$network,1,32) 
    if ($chan == $gettok($relay.channels,%tok,32)) { 
      var %lcv = 1 
      var %tot = $gettok($relay.networks,0,32) 
      while (%lcv <= %tot) { 
        var %cid = $cid 
        var %ncid = $getcidfromnet($gettok($relay.networks,%lcv,32)) 
        if (%ncid != %cid) { 
          var %net = $network 
          scid %ncid 
          msg $gettok($relay.channels,%lcv,32) $relay.fmt.part($nick,$chan,%net,$1-) 
          scid %cid 
        } 
        inc %lcv 
      } 
    } 
  } 
} 
on *:KICK:#: { 
  var %tok = $findtok($relay.networks,$network,1,32) 
  if ($chan == $gettok($relay.channels,%tok,32)) { 
    var %lcv = 1 
    var %tot = $gettok($relay.networks,0,32) 
    while (%lcv <= %tot) { 
      var %cid = $cid 
      var %ncid = $getcidfromnet($gettok($relay.networks,%lcv,32)) 
      if (%ncid != %cid) { 
        var %net = $network 
        scid %ncid 
        msg $gettok($relay.channels,%lcv,32) $relay.fmt.kick($knick,$chan,%net,$nick,$1-) 
        scid %cid 
      } 
      inc %lcv 
    } 
  } 
} 
on *:rawmode:#: { 
  var %tok = $findtok($relay.networks,$network,1,32) 
  if ($chan == $gettok($relay.channels,%tok,32)) { 
    var %lcv = 1 
    var %tot = $gettok($relay.networks,0,32) 
    while (%lcv <= %tot) { 
      var %cid = $cid 
      var %ncid = $getcidfromnet($gettok($relay.networks,%lcv,32)) 
      if (%ncid != %cid) { 
        var %net = $network 
        scid %ncid 
        $relay.fmt.mode($nick,$chan,%net,$1-)
        scid %cid 
      } 
      inc %lcv 
    } 
  } 
} 
on *:topic:#: { 
  var %tok = $findtok($relay.networks,$network,1,32) 
  if ($chan == $gettok($relay.channels,%tok,32)) { 
    var %lcv = 1 
    var %tot = $gettok($relay.networks,0,32) 
    while (%lcv <= %tot) { 
      var %cid = $cid 
      var %ncid = $getcidfromnet($gettok($relay.networks,%lcv,32)) 
      if (%ncid != %cid) { 
        var %net = $network 
        scid %ncid 
        $relay.fmt.topic($nick,$chan,%net,$1-) 
        scid %cid 
      } 
      inc %lcv 
    } 
  } 
} 
alias -l getcidfromnet { 
  var %lcv = 1 
  var %tot = $scon(0) 
  while (%lcv <= %tot) { 
    if ($scon(%lcv).network == $1) { return $scon(%lcv).cid } 
    inc %lcv 
  } 
} 

on *:TEXT:!servers:* { 
  msg $nick Current Networks: $relay.networks
  closemsg
} 

on *:TEXT:!help*:* {
  if ($2- == $null) { 
    msg $nick These commands can be used: !rkick (Channel Ops Only) !rwhois !servers !users
    msg $nick You can type !help <command> in a PM for more information on the command. Most commands can only be sent in a PM.
    closemsg
  }
  if ($2- == !rkick) {
    msg $nick !rkick <network> <nick> This command will kick <nick> from the channel on <network>. (Operators Only)
    closemsg
  }
  if ($2- == !rwhois) {
    msg $nick !rwhois <network> <nick> This returns WHOIS (/whois) information on <nick> from <network>.
    closemsg 
  }
  if ($2- == !servers) {
    msg $nick !servers This command will show all servers currently connected to the relay.
    closemsg
  }
  if ($2- == !users) {
    msg $nick !users This command will return all users currently on the relay, accross all servers.
    closemsg
  }
}