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
}