Yeah, but the way i see it, you will have a problem, unless you are already aware of it....but:

on *:input:*:{
if (o isin $1-) {
msg $chan $replace($1-,o,0)
halt
}
}

will only send the message IF there is an o within the text, otherwize, the message will never get sent...... you dont need an if condition at all in that:

on *:input:*:{
msg $chan $replace($1-,o,0)
}

$replace will be called, and replace only the o's with a 0 , and return everthing else the way it was, and if there are no o's in the text, it will return text exactly, the other way only preformed the /msg IF there was an o in text, dunno if you were 100% aware of this or not, but thought i'd let you know anyway