.timertst -m 1 100 echo -a hello %c
I have no idea why you would be using $+, since that concatenates strings, and you don't want it to be concatenated. The [ ] brackets serve no purpose here btw, they only serve a purpose when trying to evaluate dynamic variables, or when changing the order of evaluation. Yours is just a regular variable, so none of the cases apply.
EDIT: drc4 apparently already said this lol, didn't read his post. If it only echo's "hello", then it means that you don't have a global variable named %c. I put global in bold, because you say you have that code below in an on join event, this means it is seperated from where the variable is set. If you were setting %c as a local variable (/var or /set -l) then the variable is destroyed once the script finishes, so it would have no meaning in an on join event.