mIRC Home    About    Download    Register    News    Help

Print Thread
Joined: Jul 2003
Posts: 1
D
DavidD Offline OP
Mostly harmless
OP Offline
Mostly harmless
D
Joined: Jul 2003
Posts: 1
A few quick suggestions after being a *registered* mIRC user for like 5+ years....

(I did a quick search and didn't see these already suggested, so please forgive me if they were.)

WHOIS Window -- It would be nice to have a seperate window for WHOIS responses, collected together from all the servers into one. This way I can minimize the status window(s) if I don't need them, and still get just the WHOIS when I want it. The advantage here is that it would be a little "smarter" also, and perhaps it could log it seperately from the status window, have search features, display properly regardless of the response (like if they're on 20 channels it will just show a ... instead of listing them), etc.

Multi-Server Status Window - I usually am logged on to 3 seperate networks at once, so I make use of the multi-server support that was added not too long ago. I'd like to see a single status window (as an option, 'cause everyone probably won't want this). This would reduce clutter and extra buttons on the task bar thingy. There'd have to be a drop-down menu or something for tellilng the window which server to send your commands to.

Notify List Network Name - On the notify window, I really don't care which server I'm on as much as I do the network. If I could change the full server name to just the network name, that'd be cool.

Ident-Based Notify - Since most networks don't support authentication, it'd be nice if I could specify an ident for a user on my Notify list -- that way if a different person comes on with the same nick it won't get my hopes up. smile

smile Thanks to everyone involved who's make mIRC so awesome.

-DavidD (on undernet)

Joined: Dec 2002
Posts: 2,809
C
Hoopy frood
Offline
Hoopy frood
C
Joined: Dec 2002
Posts: 2,809
WHOIS Window
This is problematic. Every network has different numerics associated with /whois, Undernet has a "logged in" numeric, DALnet has a "registered user" numeric, some servers have a "speaks SomeLanguage" numeric, there is no real way for mIRC to know which numerics are associated with a /whois other than those defined in RFC1459. So as a result, if this were added, you would see some of the /whois text in the status window, and some in the "whois window". Additionally, I think this would be more annoying than anything else. Why do I want a window to popup when ever I whois someone? Doesn't this go against your reasoning for the next suggestion (reducing clutter)? I prefer to have it displayed in the active window, that way the information is right were I want it... in front of my eyes. Additionally, if this were added then any number of other things must be added as well. A window for notices for example. If you really want this, it wouldn't be difficult to script and in fact it would actually be better if you script it because you can tailor it to the whois numerics on the network you use.

Multi-Server Status Window
I see this causing nothing but problems. How do you determine what server each message is associated with? When you see -NickServ- You must identify, how do you know which NickServ is saying that? It would require the design to be rewritten, something like
server.name -NickServ- You must identify, however this will break any and all scripts that use echo (which is maybe about 95% of scripts in existence). Also as you stated, how does mIRC know which server to send a command to? It will get complex and ugly really fast.

Notify List Network Name
Suggested numerous times.

Ident-Based Notify
nick!user@host based notify list entries have been suggested numerous times.

Joined: Dec 2002
Posts: 395
M
Fjord artisan
Offline
Fjord artisan
M
Joined: Dec 2002
Posts: 395
Here is a thread about "Multi-Server Status Window".

As for Ident-Based Notify, some networks (that support /WATCH) allow you to use entries in nick!user@hostname format. And as codemastr said, it has been suggested many times before, you can use Search.

Joined: Dec 2002
Posts: 1,321
H
Hoopy frood
Offline
Hoopy frood
H
Joined: Dec 2002
Posts: 1,321
WHOIS Window
  • The following algorithm doesn't rely on knowing which numerics will appear for any given network, provided they start with 311 and end with 318. To my knowledge, all IRCds do this currently.

    While any given /WHOIS command is being responded to by a server, no other types of messages can be sent by THAT server until all of the numerics are sent (s_user.c:m_whois completes). This means that, for that connection, the server will not send a PRIVMSG or whatever until it has completed sending all the WHOIS numerics.

    Note: This does not mean that another connected server cannot also be generating a WHOIS reply at the same time, thus intermingling the two servers' replies. This is extremely unlikely unless you do something to force it, such as //scon -at1 whois $me. Even then, if there's enough of a lag difference between all of the connections, the lines won't intermingle. In the rare instance where they might do so, I have included color coding, based on connection ID, to visually differentiate different connected servers' responses.

    The colors used are taken directly from the color choices that the user is already using. These colors are sorted and duplicates are removed. They will also wrap back to the beginning if the number of connections exceeds the number of colors, much like mIRC wraps color codes, where
    0 = 16 = 32 = 48 = 64 = 80 = 96.

    Thrillingly, there is also the optional line written below all that to simply hard-code in the list of colors you want to use, in the order you want them to be used.
Code:

raw *:*:{
  [color:#008400]
  ;  All /WHOIS numerics are in the 300 series (informational) of numerics. If this isn't one of them, or if we
  ;  are not in or just starting a WHOIS reply, let mIRC (or perhaps other scripts) handle it.
  ;[/color]
  if (3?? !iswm $numeric) return
  elseif (!$eval($+(%,InWhois.,$cid),2)) && ($numeric != 311) return
  [color:#008400]
  ;  Color choices should be based on those colors already in use by mIRC for this user. This example script also
  ;  sorts the number list first.
  ;[/color]
  var %color.list = $sorttok($readini($mircini, colors, n0), 44, n)
  [color:#008400]
  ;  Remove the duplicate color numbers.
  ;[/color]
  var %colors, %i = 1
  while ($gettok(%color.list, %i, 44) != $null) var %colors = $addtok(%colors, $ifmatch, 44), %i = %i + 1
  [color:#008400]
  ;  Since it's always nice to be able to read what's echoed, exclude the background color.
  ;[/color]
  var %colors = $remtok(%colors, $gettok(%color.list, 1, 44), 1, 44)
  [color:#008400]
  ;  THRILLING ALTERNATIVE!!!
  ;
  ;  An alternate method for picking colors would be simply to specify which colors you want to use and the order
  ;  in which you want them used. You can edit the following line and uncomment it to make this method active.
  ;[/color]
  ;  var %colors = 2,3,4,5,6,7,12
  [color:#008400]
  ;  From the non-duplicated list of colors, pick the color to be used for this cid and accounting for wrapping
  ;  the color list.
  ;[/color]
  var %color = $gettok(%colors, $calc($cid % $numtok(%colors, 44)), 44)
  [color:#008400]
  ;  Build the echo command parameters to be used for every /WHOIS echo.
  ;[/color]
  var %network = %color -bflirt @Whois $chr(2) $+ $network $+ $chr(2)
  [color:#008400]
  ;  Check to see if this is a Start of Whois to start WHOIS mode capturing.
  ;[/color]
  if ($numeric == 311) {
  [color:#008400]
    ;  Set the variable to let ourselves know that we're doing a whois list of numerics.
    ;[/color]
    set -u60 $+(%,InWhois.,$cid) 1
  [color:#008400]
    ;  Open the @Whois window, if it's not opened already.
    ;[/color]
    if (!$window(@Whois)) window -ek @WhoIs
  [color:#008400]
    ;  Echo out the formatted message.
    ;[/color]
    echo %network $2 is $+($3,@,$4) $5-
  }
  [color:#008400]
  ;  If we've reached the end of /WHOIS list, unset the variable so we don't capture any other numerics and echo
  ;  them to the @Whois window.
  ;[/color]
  elseif ($numeric == 318) {
  [color:#008400]
    ;  Echo out the message.
    ;[/color]
    echo %network $2-
  [color:#008400]
    ;  End of whois, so include a line separator.
    ;[/color]
    linesep @Whois
  [color:#008400]
    ;  Stop capturing numerics.
    ;[/color]
    unset $+(%,InWhois.,$cid)
  [color:#008400]
    ;  Highlight the @Whois button on the switchbar.
    ;[/color]
    window -g2 @Whois
  }
  
  elseif ($numeric == 319) $&
    echo %network $2 on $3-
  
  elseif ($numeric == 312) $&
    echo %network $2 using $3-
  
  elseif ($numeric == 317) $&
    echo %network $2 has been idle $duration($3) $+ , signed on $asctime($4, ddd mmm dd hh:nn:ss)
  
  else $&
    echo %network $2-  
}


DALnet: #HelpDesk and #m[color:#FF0000]IR[color:#EEEE00]C
Joined: Dec 2002
Posts: 2,809
C
Hoopy frood
Offline
Hoopy frood
C
Joined: Dec 2002
Posts: 2,809
Quote:
While any given /WHOIS command is being responded to by a server, no other types of messages can be sent by THAT server until all of the numerics are sent (s_user.c:m_whois completes). This means that, for that connection, the server will not send a PRIVMSG or whatever until it has completed sending all the WHOIS numerics.


That statement is untrue for most servers. The problem is SAFELIST. All the m_whois function does is call sendto_one, which subsequently BUFFERS the text to send, it doesn't actually send it. Since the SAFELIST protocol works by buffering parts of the list output, it is possible, though unlikely, that a bunch of /list numerics could appear in the middle of the /whois. And to my knowledge there is nothing preventing servers from implementing something like SAFELIST for other commands, I've seen it done with /who for example, so while that way is reliable, it is not 100% reliable.

Joined: Dec 2002
Posts: 1,321
H
Hoopy frood
Offline
Hoopy frood
H
Joined: Dec 2002
Posts: 1,321
As far as I can figure, nothing on the internet is 100% reliable. This example is no different. Yes, it is theoretically possible that another 300 numeric might be buffered, but I'd be willing to bet there wouldn't be any of them buffered between the 311 and 318 (with the possible exception of 321,322,323 for a running /list on an IRCd with SAFELIST).
Code:

  elseif ($istok(321 322 323, $numeric, 32)) return


DALnet: #HelpDesk and #m[color:#FF0000]IR[color:#EEEE00]C

Link Copied to Clipboard