Description This mIRC script can be used to automatically relay all activity from one channel to another. It has built in anti-flooding and anti-CTCP measures. I noticed renewed interest in it, so I figured I'd put it on here. Thanks to elevator and the CT relayers for helping out when I first wrote it, back in the day. Bugs If you find bugs, I would appreciate it if you could report them to me. I can be found on irc.netgamers.net, find me by using: /msg P info mz Licence I release this (de)script(ion) into the public domain, so do whatever the hell you like. Script To make the script work, create a new remote script in mIRC, and copy paste the following script into it: on *:JOIN:%fromchan: { if ($nick == $me) { set %who $true | .who $chan | .timerwho 1 3 set %who $false resetrelay } writerelay %tochan Join: $nick - $address($nick,5) } on *:NICK: { if ($newnick ison %fromchan) { writerelay %tochan Nick: $nick -> $newnick - $address($newnick,5) } } on *:QUIT: { if ($nick ison %fromchan) { writerelay %tochan Quit: $nick - $address($nick,5) } } on *:PART:%fromchan: { writerelay %tochan Part: $nick - $address($nick,5) } on *:NOTICE:*:%fromchan: { writerelay %tochan Notice: $nick - $1- } on *:INPUT:%fromchan: { if (($left($1,1) != $chr(47)) || ($ctrlenter)) { writerelay %tochan < $+ $me $+ > $1- } elseif ($1 == /me) { writerelay %tochan * $me $2- } } on *:TEXT:*:%fromchan: { writerelay %tochan < $+ $nick $+ > $1- } on *:ACTION:*:%fromchan: { writerelay %tochan * $nick $1- } on *:TOPIC:%fromchan:{ writerelay %tochan Topic: $nick - $1- } on *:MODE:%fromchan:{ writerelay %tochan Mode: $nick - $1- } on *:SERVERMODE:%fromchan:{ writerelay %tochan Mode: $nick - $1- } on *:OP:%fromchan:{ writerelay %tochan Op: $nick - $opnick } on *:SERVEROP:%fromchan:{ writerelay %tochan Op: $nick - $opnick } on *:DEOP:%fromchan:{ writerelay %tochan Deop: $nick - $opnick } on *:VOICE:%fromchan:{ writerelay %tochan Voice: $nick - $vnick } on *:SERVERVOICE:%fromchan:{ writerelay %tochan Voice: $nick - $vnick } on *:DEVOICE:%fromchan:{ writerelay %tochan Devoice: $nick - $vnick } on *:BAN:%fromchan:{ writerelay %tochan Ban: $nick - $banmask } on *:UNBAN:%fromchan:{ writerelay %tochan Unban: $nick - $banmask } on *:KICK:%fromchan:{ writerelay %tochan Kick: $nick - $kmask } ctcp ^*:*:%tochan:{ echo 4 -st * $chan was CTCP'ed by $address($nick,5) $+ ! | halt } raw ^352:*:{ if (%who) { haltdef } } alias -l writerelay { echo 3 -sg $timestamp Saving... write relay.log $1- if (%waiting) { set %waiting $false relayrelay } } alias relayrelay { if ($lines(relay.log) != 0) { set %waiting $false var %chantext = $read(relay.log,t,1) write -dl1 relay.log var %delay = $min(5000,$calc(%prevdelay / 2 + 500 + 2 * $len(%chantext))) set %prevdelay %delay .notice %chantext echo 4 -sg $timestamp Relaying... .timerrelay -m 1 %delay relayrelay } else { set %waiting $true set %prevdelay 0 echo 7 -sg $timestamp Waiting... } } alias resetrelay { echo 3 -sg $timestamp Resetting... write -c relay.log set %waiting $true set %prevdelay 0 } alias min return $iif($$1 < $$2,$1,$2) Then go to your variables tab, and paste the following two lines into it: %fromchan #private %tochan #public Change the channel names to get the behaviour you want. The above example relays from #private to #public.