I'm not saying that mIRC is playing 'keepaway' with your own fulladdress, I'm saying that it's standard practice for the IAL to be empty when you're not in any channels. So prior to joining a channel, yes $ial($me) is empty. Leave or get kicked out of $chan(1), and it's empty again.

And the part about scripting this, means that it's not forward-compatible or sideways compatible, while mIRC itself keeps up with the changing ways of how ircd's work. So when a script was written in the version 5.x era had the correct value for $nick, newer mIRC versions continued to have the correct string for $nick while older versions thought that unknown .pnick prefixes like '!' were part of the nick.

Also, for a script to work on all current networks, it would require the script to know about all the different kinds of current networks, which is something I assumed mIRC knew more about than a script could possibly know. So at Libera it would need to monitor raw events ACCOUNT,730,900 and save that info somewhere. At Undernet it would monitor 302 and 396. At networks which have a hostserv there would be something else to monitor, but since I don't have a vhost assigned by anyone's hostserv, I don't know. QuakeNet probably does it an additionally different way, and there are probably a bunch of other ways that a script would need to keep track of things in order to have a scripted self-fulladdress that works at them all.