#version 1.1.2 /* * autocycle.irc - EPIC4 script to automatically cycle empty channels * Copyright (c) 2002 Brian Weiss * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. All redistributions, whether of source code or in binary form must * retain the above copyright notice, the above paragraph (the one * permitting redistribution), this list of conditions, and the following * disclaimer. * 2. The names of the author(s) may not be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHORS `AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ /* * This script uses serial number 425 for all /ON hooks. * * Automatically cycles empty and opless channels. Users should be aware that * this feature has been known to be trouble. Especially when connected to * multiple servers within a single session. Use at your own risk. */ /****** CONFIG SECTION ******/ assign AUTO_CYCLE_CHANS 0 /****** END CONFIG SECTION ******/ alias autocycle.cycle (chan, void) { if (AUTO_CYCLE_CHANS && matchitem(autocycle.synced_channels $chan) > -1 && !ischanop($servernick() $chan) && numonchannel($chan) <= 2) { xecho -b Auto-cycling $chan to gain ops @ :key = key($chan) //part $chan wait //join $chan $key } } /****** ON HOOKS ******/ on #-channel_signoff 425 "*" { unless ([$1] == servernick()) { autocycle.cycle $0 $1 } } /* * Store the names of synced channels so we can make sure * not to prematurely cycle. */ on #-channel_sync 425 "*" { @ setitem(autocycle.synced_channels $numitems(autocycle.synced_channels) $0) } on #-leave 425 "*" { unless ([$0] == servernick()) { autocycle.cycle $1 } } /* * Cleanup the autocycle.synced_channels array. */ on #-leave 425 '$servernick() *' { for itm in ($getmatches(autocycle.synced_channels $1)) { @ delitem(synced_channels $itm) } }