The reason you are seeing it appear for other characters is that you should probably use quest::setglobal([varname],[value],[options],[duration]); instead of targlobal if you want it to be private to that character. Just set the options field to 0 and it will be private to that character. Or use the other options for different combinations:
Code:
+--------+---------+---------+----------+
| value | npcid | player | zone |
+--------+---------+---------+----------+
| 0 | this | this | this |
| 1 | all | this | this |
| 2 | this | all | this |
| 3 | all | all | this |
| 4 | this | this | all |
| 5 | all | this | all |
| 6 | this | all | all |
| 7 | all | all | all |
+--------+---------+---------+----------+