My Ban and Unban Script
When a user gets unbanned, and I am in a common channel with the user, I'll let him or less likely her know that he or she is unbanned. If I'm not in a common channel, I /notice.
But, when the user gets banned, they have to be in the channel in order for me to pick them up. This is based on the philosophy that, if a user is unbanned, he or she can (and shall, if want to), join immediately!
I might have to made some minor edits or arrangements.
* Nick sets mode: +b 1 person
* Nick sets mode: +b 2 people
Ban affects person 1, person 2.
* Nick sets mode: -b 1 person
-Person 1- [Script] You have been unbanned in #Channel (Nick sets mode: -b 1 person)
on *:ban:#: { if ($banmask == *!*@*) { /halt } if ($bnick) { /halt } var %b = 1, %bannick, %bnick while ($ialchan($banmask,#,%b).nick) { /set %bannick $+($gettok(%bannick,1,33),$chr(44),$chr(32),$gettok($v1,1,33)) inc %b } if ($gettok($mid(%bannick,2),0,44) == 1) { /echo # Ban affects $mid(%bannick,3) $+ . /set %bannick $mid(%bannick,3) /set %bnick $+ $chan $+ %bannick $banmask } if ($gettok($mid(%bannick,2),0,44) > 1) { /echo # Ban affects: $mid(%bannick,3) $+ . var %bn = 2 while ($ialchan($banmask,$chan,%bn).nick) { /set %bnick $+ $chan $+ $ifmatch $banmask inc %bn } } while ($ial($banmask,%b).nick) { /set %globalbannick $+($gettok(%globalbannick,1,33),$chr(44),$chr(32),$gettok($v1,1,33)) inc %b } if ($gettok($mid(%globalbannick,2),0,44) > 0) { /echo # Ban also affects $remove($mid(%globalbannick,3),[ %bannick ]) $+ . | /unset %globalbannick } } on *:unban:#: { if ($banmask == *!*@*) { /halt } if ($bnick) { if ($bnick !ison $chan) && (. !isin $nick) { /notice $bnick [Script] You have been unbanned in $chan ( $+ $nick sets mode: -b $banmask $+ ). | /halt } } var %b = 1,%unbannick while ($ialchan($banmask,#,%b).nick) { /set %unbannick $+($gettok(%unbannick,1,33),$chr(44),$chr(32),$gettok($v1,1,33)) inc %b } if ($gettok($mid(%unbannick,2),0,44) == 1) { /echo # Unban affects $mid(%unbannick,3) $+ . if ($gettok($mid(%unbannick,2),0,44) > 1) { if ($istok(%UnbanAnnounce,$chan,44)) { /msg $chan Unban affects $mid(%unbannick,3) $+ . } } } while ($ial($banmask,%b).nick) { /set %globalunbannick $+($gettok(%globalunbannick,1,33),$chr(44),$chr(32),$gettok($v1,1,33)) inc %b } var %i = 0 while (%i <= $var($eval(% $+ bnick $+ $chan $+ *),0)) { inc %i if ($banmask == $var($eval(% $+ bnick $+ $chan $+ *),%i).value) { if ($mode(0).unban == 1) { /echo $chan Unban nick is $remove($var($eval(% $+ bnick $+ $chan $+ *),%i),$chr(37),bnick,$chan) $+ . if ($remove($var($eval(% $+ bnick $+ $chan $+ *),%i),$chr(37),bnick,$chan) !ison $chan) { if ($comchan($remove($var($eval(% $+ bnick $+ $chan $+ *),%i),$chr(37),bnick,$chan),1)) && (!$istok(%BadChannel,$comchan($remove($var($eval(% $+ bnick $+ $chan $+ *),%i),$chr(37),bnick,$chan),1),44)) { if (!%banflood) && (. !isin $nick) { /msg $comchan($remove($var($eval(% $+ bnick $+ $chan $+ *),%i),$chr(37),bnick,$chan),1) [Script] $remove($var($eval(% $+ bnick $+ $chan $+ *),%i),$chr(37),bnick,$chan) you have been unbanned in $chan ( $+ $nick sets mode: -b $banmask $+ ) | inc -u1 %banflood | /unset $var($eval(% $+ bnick $+ $chan $+ *),%i) } } elseif (!$comchan($remove($var($eval(% $+ bnick $+ $chan $+ *),%i),$chr(37),bnick,$chan),1)) || (!$istok(%BadChannel,$comchan($remove($var($eval(% $+ bnick $+ $chan $+ *),%i),$chr(37),bnick,$chan),1),44)) { if (!%banflood2) && (. !isin $nick) { /notice $remove($var($eval(% $+ bnick $+ $chan $+ *),%i),$chr(37),bnick,$chan) [Script] You have been unbanned in $chan ( $+ $nick sets mode: -b $banmask $+ ) | inc -u3 %banflood2 | /unset $var($eval(% $+ bnick $+ $chan $+ *),%i) } } } if ($remove($var($eval(% $+ bnick $+ $chan $+ *),%i),$chr(37),bnick,$chan) ison $chan) { /unset $var($eval(% $+ bnick $+ $chan $+ *),%i) } } elseif ($mode(0).unban > 1) { /set %cumulativelist $addtok(%cumulativelist,$remove($var($eval(% $+ bnick $+ $chan $+ *),%i),$chr(37),bnick,$chan),32) /.timerUnbanEffect 1 2 /DisplayUnbanEffect $!decode($encode($chan,m),m) } } /unset $var($eval(% $+ bnick $+ $chan $+ *),%i) } if ($gettok($mid(%globalunbannick,2),0,44) > 0) { /echo # Unban also affects $remove($mid(%globalunbannick,3),[ %unbannick ]) $+ . if ($gettok($mid(%globalunbannick,2),0,44) > 1) { if ($istok(%UnbanAnnounce,$chan,44)) { /msg $chan Unban also affects $remove($mid(%globalunbannick,3),[ %unbannick ]) $+ . } } /unset %globalunbannick } } alias DisplayUnbanEffect { if ($istok(%UnbanAnnounce,$1,44)) { /msg $1 Unban affects %cumulativelist $+ . } if ($gettok(%cumulativelist,0,32) > 1) { var %i = 0 while (%i <= $calc($gettok(%cumulativelist,0,32)) -2) { inc %i if ($gettok(%cumulativelist,%i,32) !ison $1) { /timernotice $+ %i 1 %i /notice $gettok(%cumulativelist,%i,32) [Script] You were unbanned in $1 } } } /unset %cumulativelist }