For fullname, /who will work as well, saving u about 2-4 lines of text per user.. Just do a who on the channel, and then from there read all the raw events. here is a lil example..
on 1:JOIN:#: {
if ($nick == $me) /who $chan
}
raw 352:*: {
/set -u0 %realname $9-
/echo -a %realname
}
As for the whois each user, you could use something like....
on 1:JOIN:#: {
if ($nick == $me) {
/set %badchans 1
/set -u0 %user 1
while (%user <= $nick($chan, 0)) {
if ($nick($chan, %user) != $me) .timer 1 $calc(%user * 2) /whois $nick($chan, %user)
/inc -u0 %user
}
}
else {
/set %badchans 1
/whois $nick
}
}
; Real name / Address
raw 311:*: {
if (%badchans) {
/set -u0 %realname $6-
; search for bad names
/haltdef
}
}
; Channel reply
raw 319:*: {
if (%badchans) {
/set -u0 %chanlist $3-
; look for channels
/haltdef
}
}
raw 307:*: { if (%badchans) /haltdef } | ;registered name
raw 312:*: { if (%badchans) /haltdef } | ; server name
raw 313:*: { if (%badchans) /haltdef } | ; is a Network Service
raw 317:*: { if (%badchans) /haltdef } | ; idle/online
raw 318:*: { if (%badchans) { /unset %badchans | /haltdef } } | ; /whois end
the var %badchans suppresses the whois echo so you don't see all those lines. The timer is just to *help* prevent a lot of lag with server. The timers will whois a new user every 2 seconds. If you want a longer/shorter delay, you can play with that.
I may not have all the whois raws so u can just add them as need be. I did a whois on a few ppl on my netowrk, and just looked up the raw.
Hope that helps.