Also, to get at the
value stored in that built variablename, you also have to evaluate the whole thing with another pair of [ ] around the entire expression.
- if ( [ %create. [ $+ [ $nick ] ] ] == on) { commands }
Much easier is the newer format using $eval() and $+():
- if ($eval($+(%,create.,$nick),2) == on) { commands }
Once you get used to looking at that form of the expression, it is MUCH clearer. With only 2 or 3 evaluation brackets, it doesn't look like you're saving much; if you're going to have to keep using that value, then put it into a temp var %var = $eval($+(%,create.,$nick),2) .. work with the %var throughout the course of your script (so you don't have to keep evaluating it over and over) and then re-store the value at the end of your script back into the variable it's supposed to be in.
- set $+(%,create.,$nick) %var
Once you get used to it, it's MUCH, MUCH easier to get consistent results this way. Years ago, when all we had was [ ] to do this sort of thing, sometimes you had to play with how you created your variables to get the variable name correct and get it to store the correct value in that variable.