;====================================================== ; 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 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  This command will kick from the channel on . (Operators Only) closemsg } if ($2- == !rwhois) { msg $nick !rwhois  This returns WHOIS (/whois) information on from . 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 } }