So this is untest.

Code:
on *:part:#: {
  /set -u3600 %jnick $+ $nick $address
}

on *:join:#: {
  var %i = 0
  while (%i <= $var($eval(% $+ jnick $+ $nick $+ *),0)) {
    inc %i
    if ($address == $var($eval(% $+ jnick $+ $nick $+ *),%i).value) {
      if ($nick !iswm $remove($var($eval(% $+ jnick $+ $nick $+ *),%i),$chr(37),jnick)) && ($remove($var($eval(% $+ jnick $+ $nick $+ *),%i),$chr(37),jnick) !iswm $nick) {
        /echo $chan $nick joined previously as $remove($var($eval(% $+ jnick $+ $nick $+ *),%i),$chr(37),jnick) $+ .
      }
    }
  }
}


Several things.

So in your variables sheet, you will see things like:

%jnickNeal $address
%jnickasmodeo <Your $address>

I understand a lot of peole may use %variables for nicks, so this won't cause that duplication confusion.

I also use the %bnickNick $banmask, so... a jnick works perfect for me.

Also, I didn't want to have something like..

Someone-Away has joined channel.
Someone-Away previously joined as Someone.

Or even Someone`.

Or Someone``.

So, I used the !iswm check for sure.

So it will only work if the new nick is not in the old and the old is not in the new - so totally random new nick.

Now I'll use this for my own p.m. event to check if no comchans, then for part chans. May even store one for on quit event. smirk