ye, the !msg1* matches "!msg10" and occurs before the other event, since events are processed from top to bottom. also, don't you want $2- in the /msg commands, since $1 = !msgN ? you could combine them all like so:

Code:
on *:text:!msg* ?*:#:{ if ($istok(1 2 6 7 10 11 13,$mid($1,5),32)) msg $(#,) $+ $mid($1,5) $2- }


or the regex alternative

Code:
on $*:text:/^!msg(1[013]?|[267]) ./i:#:{ msg $(#,) $+ $regml(1) $2- }


"The only excuse for making a useless script is that one admires it intensely" - Oscar Wilde