This is an example on how to code mIRC's $mask function. Useful for developers or people learning tcl.
Examples:
"[return:hostmask nick!khaled@mirc.com 1]" returns !khaled@mirc.com
"[return:hostmask nick!khaled@mirc.com 2]" returns !@mirc.com
proc return:hostmask {host type} {
if {"$host" == "*!*@*"} {
return "INVALID HOST"
} else {
set split(nick) "[lindex [split $host !@] 0]"
set split(ident) "[lindex [split $host !@] 1]"
set split(host) "[lindex [split $host !@] 2]"
switch -- "$type" {
"0" { return "*!$split(ident)@$split(host)" }
"1" { return "*!*$split(ident)@$split(host)" }
"2" { return "*!*@$split(host)" }
"3" { return "*!*$split(ident)@*.[join [lrange [split $split(host) .] 1 end] .]" }
"4" { return "*!*@*.[join [lrange [split $split(host) .] 1 end] .]" }
"5" { return "$host" }
"6" { return "$split(nick)!*$split(ident)@$split(host)" }
"7" { return "$split(nick)!*@$split(host)" }
"8" { return "$split(nick)!*$split(ident)@*.[join [lrange [split $split(host) .] 1 end] .]" }
"9" { return "$split(nick)!*@*.[join [lrange [split $split(host) .] 1 end] .]" }
default { return 0 }
}
}
}