THis is a simple script which unbans people from a particular channel if they ctcp UNBAN you so make sure that only those people you trust know about this CTCP trigger.
I cant take full credit for this snippet as xDaemon and Russelb helped me out in fixing its original version :)
Cheers guys ;)
NOTE: Replace #chan with the name of the channel you want..
ctcp *:unban:?: {
if ($address($nick,1) isban #chan) { mode #chan -b $address($nick,1) | if ($address($nick,2) isban #chan) { mode #chan -b $address($nick,2) } | if ($address($nick,3) isban #chan) { mode #chan -b $address($nick,3) } | if ($address($nick,4) isban #chan) { mode #chan -b $address($nick,4) } | if ($address($nick,5) isban #chan) { mode #chan -b $address($nick,5) } }
if ($address($nick,2) isban #chan) { mode #chan -b $address($nick,2) | if ($address($nick,3) isban #chan) { mode #chan -b $address($nick,3) } | if ($address($nick,4) isban #chan) { mode #chan -b $address($nick,4) } | if ($address($nick,5) isban #chan) { mode #chan -b $address($nick,5) } | if ($address($nick,1) isban #chan) { mode #chan -b $address($nick,1) } }
if ($address($nick,3) isban #chan) { mode #chan -b $address($nick,3) | if ($address($nick,2) isban #chan) { mode #chan -b $address($nick,2) } | if ($address($nick,4) isban #chan) { mode #chan -b $address($nick,4) } | if ($address($nick,5) isban #chan) { mode #chan -b $address($nick,5) } | if ($address($nick,1) isban #chan) { mode #chan -b $address($nick,1) } }
if ($address($nick,4) isban #chan) { mode #chan -b $address($nick,4) | if ($address($nick,2) isban #chan) { mode #chan -b $address($nick,2) } | if ($address($nick,3) isban #chan) { mode #chan -b $address($nick,3) } | if ($address($nick,5) isban #chan) { mode #chan -b $address($nick,5) } | if ($address($nick,1) isban #chan) { mode #chan -b $address($nick,1) } }
if ($address($nick,5) isban #chan) { mode #chan -b $address($nick,5) | if ($address($nick,1) isban #chan) { mode #chan -b $address($nick,1) } | if ($address($nick,2) isban #chan) { mode #chan -b $address($nick,2) } | if ($address($nick,3) isban #chan) { mode #chan -b $address($nick,3) } | if ($address($nick,4) isban #chan) { mode #chan -b $address($nick,4) } } }
you could also do it like this as well to reduce mode flood
ctcp *:unban:?: {
if ($3 !ischan) { .msg $Nick You must select a channel. | halt }
var %a = $Ibl($3,0), %b = 0
while ( %b <= %a ) {
if ($Ibl($3,%b) iswm $address($2,5)) { var %unbann $addtok(%unbann,$IfMatch,32) }
inc %b
}
mode $3 - $+ $str(b,%b) %unbann
}
read the help file about $ibl type /help $ibl in ur mirc %a is a var he set to use in the while loop... var %a = 0
so what this line is doing.. if ($Ibl($3,%a) $ibl = internal ban list $3 = channel %a = 0 - how many bans are in the list so say there is 5 bans in the ban list it will check 0 - 5
just read up in ur help file about it
no problem, it uses a while loop to search through the ban list, entry by entry.
if ($Ibl($3,%a) iswm $address($2,5)) { mode $3 -b $IfMatch }
that checks each entry in the ban list against the nicks address using a wildcard match since most bans have some sort of wildcard string in them. if it matches in unbans the user.
if you got any other questions or need help just let me know.
gecko