Quote:
But that's fairly useless because I have to be ON the channel, I think. And it still doesn't help with access denied.
check this with "if ($me ison $1)"
In addition: tricky brackets: not "if ($1(!ischan))" but "if ($1 !ischan)... wink

To make the server reply "Access denied" a "conditional" part of your script - no way. At least no simple one smile ...Don't want too much at first.
Alias are processesd linear, that is: until they are finished or return something, or were stoped. You cannot tell a single alias "now wait for a notice of chanserv" etc.. One could code this with raw events and/or timers; but imho thats not woth the effort.

Quote:
Also, for the /i alias, is there some way to make it use the IAL and a /whois if the person isn't sharing a channel with you?
This is an analogical problem smile Better remove the whole "is a user in my address list" condition if you like to invite users you don't share a channel with.

The unban thingie:
Code:
alias unban {
  ; if 2nd parameter is given, use it for "channel". if not, use the active window for "channel".
  var %chan = $iif(($2),#$2,$active)

  ; 1st parameter is a user in your internal address list, and you are on "channel"
  if (($ial($1)) && ($me ison %chan)) { 

    ; use the user's fulladdress for "address"
    var %address = $v1

    ; loop all bans of "channel" (using mIRCs internal banlist)
    var %nr = 1
    while ($ibl(%chan,%nr)) {

      ; if the ban affects "address", remove that ban
      if ($v1 iswm %address) { mode %chan -b $v1 }
      inc %nr
    }

  }
  else { echo -a unban: syntax is /unban <nick> [<#chan>] - You need to share a chan with <nick>, and have to be on <#chan>. }
}