Its already been pointed out about $eval() or $() to u, but i thought id actually show u the code, and explain what you can do, in the long run its far better to use $eval() or $() as using [ [ ] ] has some dramatic side/unexpected effects in some events.
msg #You have got $($+(%,TB.Correct.,$address($nick,4)),2) $&
correct out of $($+(%,TB.Goes.,$address($nick,4)),2) tries.$&
This is from a total of $($+(%,TB.Wires.,$address($nick,4)),2) wires,$&
with an average of$&
$calc($($+(%,TB.Wires.,$address($nick,4)),2) / $($+(%,TB.Goes.,$address($nick,4)),2)) wires per go.
What i have done is a 2 step thing
(1) create the variable name $+(%,TB.XXXX,$address($nick,4)) the concaternating of the parts, not the leading % is seprated to stop mirc attempting to use the contents of %TB.XXXX
(2) now i have the variable name i tell mirc to evaluate it 2 times (the first time would have been the concaternating of the $+ parts, so $() becomes %TB.XXXX.
$address($nick,4) and then becomes the contents of it.
ex
var $+(%,TB.XXXX,$address($nick,4)) = 12345
//echo -a $( $+(%,TB.XXXX,$address($nick,4)) ,2)
* I have found the more complexe you start making your variables the harder it becomes to use [ [ ] ] while the simplier it becomes to use $()
Amagine if u had to become network and channel and nick specific
%TB.XXXX. [ $+ [ $network ] $+ ] . [ $+ [ $chan ] $+ ] . [ $+ [ $address($nick,4)) ] ]vs
$+(%,TB.XXXX.,$network,.,$chan,.,$address($nick,4))