1#!/usr/local/bin/perl -w 2 3## Bugreports and Licence disclaimer. 4# 5# For bugreports and other improvements contact Geert Hauwaerts <geert@irssi.org> 6# 7# This program is free software; you can redistribute it and/or modify 8# it under the terms of the GNU General Public License as published by 9# the Free Software Foundation; either version 2 of the License, or 10# (at your option) any later version. 11# 12# This program is distributed in the hope that it will be useful, 13# but WITHOUT ANY WARRANTY; without even the implied warranty of 14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15# GNU General Public License for more details. 16# 17# You should have received a copy of the GNU General Public License 18# along with this script; if not, write to the Free Software 19# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20# 21## 22 23use strict; 24use Irssi; 25use vars qw($VERSION %IRSSI); 26 27$VERSION = "0.05"; 28 29%IRSSI = ( 30 authors => 'Geert Hauwaerts', 31 contact => 'geert@irssi.org', 32 name => 'fuckem.pl', 33 description => 'Simulates the BitchX /FUCKEM command. Deop/Dehalfop everyone on the channel including you.', 34 license => 'GNU General Public License', 35 url => 'http://irssi.hauwaerts.be/fuckem.pl', 36 changed => 'Wed Sep 17 23:00:11 CEST 2003', 37); 38 39Irssi::theme_register([ 40 'fuckem_loaded', '%R>>%n %_Scriptinfo:%_ Loaded $0 version $1 by $2.' 41]); 42 43sub fuckem { 44 45 my ($data, $server, $channel) = @_; 46 my ($hops, $ops, $hcount, $ocount, $mode, $users); 47 48 if (!$server) { 49 $channel->print("You are not connected to a server."); 50 return; 51 } elsif (!$channel || $channel->{type} ne "CHANNEL") { 52 $channel->print("No active channel in this window."); 53 return; 54 } elsif (!$channel->{ownnick}{op}) { 55 $channel->print("You're no channel operator."); 56 return; 57 } 58 59 foreach my $nick ($channel->nicks()) { 60 if ($nick->{halfop}) { 61 $hops .= "$nick->{nick} "; 62 $hcount++; 63 } elsif ($nick->{op}) { 64 $ops .= "$nick->{nick} "; 65 $ocount++; 66 } 67 } 68 69 if ($ops) { 70 $mode .= 'o' x $ocount; 71 $users .= "$ops "; 72 } 73 74 if ($hops) { 75 $mode .= 'h' x $hcount; 76 $users .= "$hops "; 77 } 78 79 $mode .= 'o'; 80 $users .= "$server->{nick}"; 81 82 $channel->command("mode -$mode $users"); 83} 84 85Irssi::command_bind('fuckem', 'fuckem'); 86Irssi::printformat(MSGLEVEL_CLIENTCRAP, 'fuckem_loaded', $IRSSI{name}, $VERSION, $IRSSI{authors}); 87