Long ago, it was impossible for scripts to differentiate multiple DCC chat/fserve windows with the same nickname. For example, if two DCC chat windows were open to Bob^, then /echo =Bob^ hello and /msg =Bob^ hello and /describe =Bob^ waves would all affect the first-opened DCC Chat window bearing the nickname Bob^ -- making any others with that nickname inaccessible to access by scripts. About all you could do to address individual DCC chat/fserve windows despite their nicks was /window -c @wid (to close them). (Of course, for ON INPUT, there was always /say.)

About a year and a half ago, support was added to /echo and /editbox for targets in the @wid format, which partially solved this problem. To make a script compatible with environments where multiple DCC fserve/chat windows bore the same nickname, you could, in ON CHAT and ON SERV events, assure echo's always reached the correct windows by checking $wid (in a particular way) and then doing /echo @42 hello. You could also /editbox -n @42 Heya! and /editbox -n @42 /me sneezes.

But using /editbox for the purpose of sending messages in DCC windows has drawbacks. It is hackish, forcing you to write extra code to preserve and restore existing editbox text. Also, while $editbox can fetch multi-line text from multi-line editboxes, /editbox cannot properly restore multi-line text to them. Finally, if the purpose of your script is to replace the default text which appears in DCC windows (for "skinning" purposes), you can do /editbox -n @42 /.me sneezes to halt an action's default text, but there's no way to halt the appearance of regular text (/.say won't obey the .).

So I would like to propose that the @wid target convention also be added to:

/msg @wid text here
/describe @wid text here
/dcc nick -sgcf @wid newnick
$chat(@42).ip|status|logfile|stamp|wid|cid|hwnd|idle
$fserve(@42).ip|status|cd

Unless I am missing any others that would need @wid support, those would finish solving the issue. smile