Well thats why, when this was suggested a while ago, I suggested user defined smileys. Like mIRC has a built in list of some of the common ones, but maybe I use some "smileys" mIRC doesn't consider "standard" like say maybe *upset* should work just like : ( and make a image. User defined smileys would solve this. It would also make it themable. Like if my theme is a yellow bg with black text, well the yellow smileys that are default will probably look horrible, but mIRC has a mirc\smiley folder with all the default smileys (and where the user can add his/her own smiley images), so I can change it to a more appropriate color. Basically like a dialog that has a list of the "smiley" words, and the img file they translate to. You can add/edit/delete from this list to whatever your liking is.

However, I do NOT agree with sending a code to other clients. This will screw up compatibility horribly, and even if it didn't, what is to stop mIRC from having code 123 = smile and say XChat has code 123 = frown thats a bad idea imho, it should only display on your screen and send the smiley text to the remote users and their clients can interpret it as they wish.

Also I disagree with the scripting stuff. Emoticons should have no real effect on scripting, meaning ON TEXT should perform just as it did before. I see no need for an ON EMOTICON, it can be handled with ON TEXT:

Code:
ON ^*:TEXT:$(:P):#chan:{
   .echo $target $nick - $emoticon($1-,:P,tongue.gif)
   haltdef
}


That would tell mIRC that it should replace :P with whatever tongue.gif contains, then echo it to $target. This would not, however override the builtin mIRC emoticons, meaning if mIRC has a rule saying : ) = smile then it would also change that in addition to the :P, meaning :P is in addition to the default emoticons, it does not ignore them. Perhaps $emoticon/$emoticoncs could have a flag that would tell it to completely ignore emoticons set from within mIRC's settings?

Then $emoticon:
$emoticon(text,subtext,file,subtext2,file2,...,...)
This takes text, and replaces all occurrances of subtext with file, and all occurances of subtext2 with file2, etc. Basically think $replace except instead of replacing with text, it replaces with an image. I'd guess a $emoticoncs should also be added for things like maybe : o and shocked should have different images. Using this syntax should function correctly when passing the result to /echo so that you can echo text with images displayed, also with /did so you can put it in dialogs, etc.

$emoticon(N)[.file]
Returns the smiley text ie ;(, of the Nth smiley, if N is 0 it returns the total number of smileys, and if .file is specified, it returns the filename of the smiley.

Lastly, there should be a /echo and /did flag to disable parsing of builtin smileys:
/echo -E this is a test : )
would print that literal text instead of
this is a test smile

note any where you see something like : ) the space is just there to prevent the forum from displaying it as an image.

I'm aware my scripting solutions are far from perfect, but perhaps others can make suggestions, rather than just saying "it's stupid"