Hover Info

By NIGathan on Nov 07, 2008

Update: Now uses $duration for the idle calc for faster and more accurate idle checking.

Updated: Now it will display any clones matching their address. (See first pic)

This script will allow you to easily get info of a user without whois'ing them! (No matter their oper status, they wont be able to see it)

Just hover your mouse over someones nick for a few seconds. Note: It will not work in the userlist.

It will display the following info: -Full name -Address -Server -Registered -Operator status -Bot status (+B) -Away status -Current idle time Note: Not all of these will display for every server. Some servers dont let you get this info wothout an actual /whois. Although I have only come across one network like this.

If you have any raw 352 events that echo then you may want to add the if statement in this script to that raw so you dont see it every time you use this.

To install just copy to a new remote and save if you like then click ok.

Note: For best results use mIRC v6.34+. Earliest working version tested is 6.31 but the pic window didn't fully work.

Update: Helped fix a slight bug when looking up info on a user when there is a very similar nick in the same channel. Note: This isn't fully fixed, but it is a step towards it. Right now it will work as long as all of the similar nicks all have the same +q/a/o/h/v modes set so they are next to each other on the list. If there is a single nick between them, it may look up the wrong person.

raw 352:*:{ if (%iwho.hide == 1) { .tokenize 32 $2- | iwho dis $1- | haltdef } }
raw 315:*:{ if (%iwho.hide == 1) haltdef }

on ^*:HOTLINK:*:*: {
  if (!$timer(iwho)) {
    var %g 1
    .tokenize 32 $strip($1-)
    while (%g <= $nick($active,0)) {
      var %gh $nick($active,%g)
      if (%gh isin $1) {
        var %gq 1
        while ($nick($active,$calc(%g + %gq)) isin $1) {
          var %ghc 1
          inc %gq
        }
        if (%ghc == 1) {
          var %gq $calc(%gq - 1)
          var %gh $nick($active,$calc(%g + %gq))
          goto one
        }
      }
      if (%gh isin $1 && $calc($len(%gh)-2) <= $len($1)) goto one
      inc %g
    }
  }
  halt
  :one
  .timeriwho 1 1 iwho %gh
  set %iwho.nick %gh
  set %iwho.x $calc($mouse.dx -1)
  set %iwho.y $calc($mouse.dy -1)
  halt
}

alias iwho {
  if ($isid) return
  if ($1 != dis) {
    if ($calc($mouse.dy - %iwho.y) <= 10) && ($calc($mouse.dy - %iwho.y) >= -6) {
      if ($calc($mouse.dx - %iwho.x) <= 20) && ($calc($mouse.dx - %iwho.x) >= -20) {
        set %iwho.hide 1
        who $1
      }
    }
  }
  else if ($6 == %iwho.nick) {
    var %iwho.chan $2
    .tokenize 32 $+($3,@,$4) $5-
    if ($window(@UserInfo)) clear @UserInfo
    var %iwho.len.add $calc($len($1)*6)
    var %iwho.len.name $calc($len(Name $6-)*6)
    var %iwho.len.serv $calc($len(Server: $2)*6)
    var %iwho.len.nick $calc($len(User info for $3 $+ :)*6)
    var %iwho.height 80
    var %iwho.extra 0
    if (r isincs $4) {
      var %iwho.height $calc(%iwho.height + 15)
      inc %iwho.extra
    }
    if (* isin $4) {
      var %iwho.height $calc(%iwho.height + 15)
      var %iwho.len.oper $calc($len($3 is an operator.)*6)
      var %iwho.cor.oper $calc((15 * %iwho.extra) + 60)
      inc %iwho.extra
    }
    else { var %iwho.len.oper 0 }
    if (B isincs $4) {
      var %iwho.height $calc(%iwho.height + 15)
      var %iwho.len.net $calc($len(This is a bot on $network $+ .)*6)
      var %iwho.cor.net $calc((15 * %iwho.extra) + 60)
      inc %iwho.extra
    }
    else { var %iwho.len.net 0 }
    if (G isincs $4) {
      var %iwho.height $calc(%iwho.height + 15)
      var %iwho.len.away $calc($len($3 is marked as away.)*6)
      var %iwho.cor.away $calc((15 * %iwho.extra) + 60)
      inc %iwho.extra
    }
    else { var %iwho.len.away 0 }
    if ($me ison %iwho.chan && $nick(%iwho.chan,$3).idle < $nick($active,$3).idle) var %iwho.idle $duration($nick(%iwho.chan,$3).idle)
    else var %iwho.idle Idle: $duration($nick($active,$3).idle)
    var %iwho.len.idle $calc($len(%iwho.idle)*6)
    if ($ial($address($3,2),0) > 1) {
      var %iwho.clones $ifmatch
      var %iwho.clone 1
      var %iwho.height $calc(%iwho.height + 15)
      while (%iwho.clone <= %iwho.clones) {
        var %iwho.clonea $ial($address($3,2),%iwho.clone).nick
        if (%iwho.clonea != $3) {
          var %iwho.clone.tok $addtok(%iwho.clone.tok,%iwho.clonea,32)
          var %iwho.height $calc(%iwho.height + 15)
        }
        inc %iwho.clone
      }
    }
    if ($greatest(%iwho.len.add,%iwho.len.name,%iwho.len.serv,%iwho.len.nick,%iwho.len.net,%iwho.len.oper,%iwho.len.away,%iwho.len.idle) <= 180) window -adBpow0 +feL @UserInfo %iwho.x %iwho.y 180 %iwho.height
    else window -adBpow0 +feL @UserInfo %iwho.x %iwho.y $ifmatch %iwho.height
    drawfill -r @UserInfo $rgb(236,233,216) $rgb(236,233,216) 0 0
    drawtext -p @UserInfo 1 Arial 11 0 0 User info for $3 $+ :
    drawtext -p @UserInfo 1 Arial 11 0 15 Name: $6-
    drawtext -p @UserInfo 1 Arial 11 0 30 $1
    drawtext -p @UserInfo 1 Arial 11 0 45 Server: $2
    if (r isincs $4) drawtext -p @UserInfo 1 Arial 11 0 60 This is a registered nick.
    if (* isincs $4) drawtext -p @UserInfo 1 Arial 11 0 %iwho.cor.oper $3 is an operator.
    if (B isincs $4) drawtext -p @UserInfo 1 Arial 11 0 %iwho.cor.net This is a bot on $network $+ .
    if (G isincs $4) drawtext -p @UserInfo 1 Arial 11 0 %iwho.cor.away $3 is marked as away.
    if ($numtok(%iwho.clone.tok,32) > 0) {
      drawtext @UserInfo -p 1 Arial 11 0 $calc((%iwho.height - 35)-($numtok(%iwho.clone.tok,32)*15)) %iwho.idle
      drawtext @UserInfo -p 1 Arial 11 0 $calc((%iwho.height - 20)-($numtok(%iwho.clone.tok,32)*15)) Possible clones:
      var %iwho... 0
      while (%iwho... <= $numtok(%iwho.clone.tok,32)) {
        drawtext -p @UserInfo 1 Arial 11 5 $calc((%iwho.height - 20)-(%iwho... * 15)) $gettok(%iwho.clone.tok,$calc(%iwho... + 1),32)
        inc %iwho...
      }
    }
    else drawtext -p @UserInfo 1 Arial 11 0 $calc(%iwho.height - 20) %iwho.idle
    unset %iwho.nick
    .timeriwho1 1 1 unset %iwho*
  }
}

on *:ACTIVE:*: { if ($lactive == @UserInfo) window -c @UserInfo }
on *:APPACTIVE: { if ($window(@UserInfo)) window -c @UserInfo }

alias greatest {
  if (!$isid) halt
  var %o 1
  var %ao 0
  while (%o <= $0) {
    if ($ [ $+ [ %o ] ] >= %ao) var %ao $ifmatch
    inc %o
  }
  return %ao
}
Sign in to comment.
kushman420TC   -  Mar 04, 2012
  • /drawtext: insufficient parameters (line 116, script2.mrc)

    PotBot Hr I@m.Kushmans.Bot :0 ...

    - I get this error, any ideas?

line 116: else drawtext -p @UserInfo 1 Arial 11 0 $calc(%iwho.height - 20) %iwho.idle

 Respond  
Cheiron   -  Nov 08, 2009

thought of a useful edit to be done for this script.. user editable timer for the delay in it showing up.. as a slightest hint of the mouse over a name atm will trigger it.

 Respond  
Cold_Fussion   -  Nov 08, 2009

nice code... must say... never be a great coder... ppl ask to many things in return ^_^

10/10 even though my rates dnt count... ill add 2+ to Spanky's rate for him i use my old trusting faithfull 6.2... and works well... maybe cos my mirc is to hardcore :D

 Respond  
Spanky   -  May 28, 2009

er nvm, it was my mirc :) nice rates 8/10 + like

 Respond  
Spanky   -  May 23, 2009
  • /drawtext: insufficient parameters (line 116, script20.mrc) ———————————————————— when i hover over my name, and when i tried it on my empty mirc.

  • /drawtext: insufficient parameters (line 112, hovinfo.mrc)

    opers Spencer Hr* spencer @ netadmin.spencirc.net :0 spencer

and im using 6.35 but yea nice rates 7/10

 Respond  
lunarpolitiks   -  May 22, 2009

ok.... it works now, weird

 Respond  
NIGathan   -  Apr 30, 2009

Do you have any other scripts loaded?

An easy way to tell if you have any other scripts that utilize the same raw events, you should see a line somewhere when you hover over someones nick. If you do see a line, then you'll need to remove the raw events from this script file, and find the other raw events of same numeric, and add the contents from these raws to them at the begining.

If you dont see a line anywhere, and youre not using any other scripts, try using it on a different server.

 Respond  
lunarpolitiks   -  Apr 30, 2009

lol, rizon ftl?

 Respond  
Cheiron   -  Apr 25, 2009

odd. i have not had this issue myself lunar. what server daemon are you using it on ?

 Respond  
lunarpolitiks   -  Apr 25, 2009

this script causes mirc to disconnect, yes im using the most recent.

 Respond  
NIGathan   -  Nov 16, 2008

Ya, who != whois

 Respond  
jonesy44   -  Nov 16, 2008

Aaaah, my bad! thanks for clearing that one up Cheiron.

 Respond  
Cheiron   -  Nov 16, 2008

it uses the who command not the whois with a few bits added. Opers can see the whois command as part of mode +W .. the /who command is different

 Respond  
jonesy44   -  Nov 16, 2008

"This script will allow you to easily get info of a user without whois'ing them! (No matter their oper status, they wont be able to see it)"

I don't understand this because there are raws in the script, which come from whois :/

 Respond  
NIGathan   -  Nov 16, 2008

Update: Now the lag should be completely gone.

 Respond  
_timisdrunk_   -  Nov 16, 2008

Cheers mate! It works :O Lol i did actually put it in there ealier but it never worked then for some reason :/ Thanks for your help :)

 Respond  
Cheiron   -  Nov 16, 2008

you need to be using mIRC version 6.34 or 6.35 for this script to work correctly.

press ALT + R to open the mIRC's script editor function. the script is to be copy and pasted into a fresh remote file. if the remotes page is empty, then transfer it direct.

if there is a remote there already.... click file, new. that will create a new blank remote page for you to paste into :)

 Respond  
_timisdrunk_   -  Nov 16, 2008

Ok where do i put this sorry i'm a newb :/

 Respond  
Cheiron   -  Nov 15, 2008

cheers. i will update my mirc when i finish dj'ing in 90 mins

 Respond  
NIGathan   -  Nov 15, 2008

Done. Thanks to that debugging I found it would constantly set the vars in the hotlink for the user repeatedly causing 4 or 5 seconds before anything would actually happen. It should all be fixed now :D

Please let me know if you find any more bugs or lag issues.

 Respond  
Cheiron   -  Nov 15, 2008

sounds like just the server lag then on the one i am using. sorry for the fruitless debug there but it had to be eliminated :) still one blinder of a script though :D

 Respond  
NIGathan   -  Nov 15, 2008

Well I added a long series of /write's to the script and this was the final result of it after the pic window had appeared.

1 -3:40:32- Found user Neptune 2 -3:40:33- Checking if mouse has moved... 3 -3:40:33- Calling the actual who on Neptune 4 -3:40:33- Successfully looked up who for Neptune: #mIRC_Or_GTFO cass72 XXXXX.dynamic.dsl.as9105.com chatscape.chat.server Neptune H@ 0 Sam Cass 5 -3:40:33- Generating the pic window from the previous who info 6 -3:40:33- Set needed vars 7 -3:40:33- Successfully determined idle time 8 -3:40:33- Finished determining clones 9 -3:40:33- Formed the pic window 10 -3:40:33- Drew minimal lines to pic window 11 -3:40:33- Drew all flags 12 -3:40:33- Drew clones 13 -3:40:33- Finished.

As you can see, everything is happening within one second.

 Respond  
Cheiron   -  Nov 15, 2008

that sounds like just a case of server lag then i would have thought NIGathan from the host server and the IRC Daemon it is running. it seems to be all that is left not looked at

 Respond  
NIGathan   -  Nov 15, 2008

So far from debugging, the hotlink is not the cause of the lag, the actual who itself is not the cause either, and the alias to open the pic win also doesn't cause it... So Im just about stumped. But that doesnt mean Im gonna stop looking.

 Respond  
NIGathan   -  Nov 15, 2008

Cheiron, yes, the /who was the main point of the entire script. If you whois someone with +W (on unreal) they will get a server notice alerting them of it. A /who does NOT. All servers show at least H or G meaning not away or away, respectively. Also they will ALWAYS show * if they have an oline. If they are marked as a bot, it should also be displayed with B, the only mode that is usually hidden by some servers, is the r meaning registered. There is also a ! flag, Im not sure if this one is hidden or not, I have only ever come across it with a single person on one server and yet to figure out what it means. If anyone knows please let me know.

Thanks mountaindew, I knew there was a command for that, I just couldnt think of it at the time.

 Respond  
mountaindew   -  Nov 15, 2008
var %gq $calc(%gq - 1)

You could use /dec

 Respond  
Cheiron   -  Nov 15, 2008

hmm i just noticed you using the /who command there. i think that why the info returned is limited also. alot of servers limit the amount of info returned on a who by the addition to mode +i on connecting users. could it be that contributing to the delay?

 Respond  
NIGathan   -  Nov 15, 2008

Ah, alright, Im gonna start trying to find whats causing that lag now.

 Respond  
Cheiron   -  Nov 15, 2008

yeah i see what you are saying. it no biggy as i use a sepearate noop popup for idle return or i do the /whois nick nick to check.

was just out of curiousity that was all :)

 Respond  
NIGathan   -  Nov 15, 2008

Well, the idle prop in $nick ($nick($chan,$nick).idle) will only work for channels both of you are on, and a who returns a channel that they are on. I was hoping it would return the channel they were most recently active on, but thats just not the case. So the most accurate idle time I could get using that would have to check each channel your on to see if they're on it aswell and, if so, check it across all the other channels and find the smallest one. It wouldnt be completely accurate depending on channels you don't see though.

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.