Das geht zwar, ist aber so nicht ganz richtig.
"ball" beschreibt einen Entity Pointer und keine Variable.
Das es trotzdem geht, hängt mit den Internas von c-Script zusammen.
Allerdings gibt es eine Fehlermeldung, sobald Du mit der Entity "ball" etwas machen willst.
Schreibe statt:
var ball;
dieses hier:
entity* ball;
über die Action.
Damit hast Du aus "ball" einen Zeiger auf eine Entity gemacht.
Mittels
ball = me;
wird der Zeiger der betreffenden Entity zugewiesen.
Nun kannst Du in anderen Funktionen auf den Ball zugreifen, z.B. mit
ball.invisible = on; // Ball unsichtbar machen
Vorher musst Du warten / sicherstellen, daß der Pointer gefüllt ist:
while(!ball){wait(1);}
Hoffe das hilft und verwirrt Dich jetzt nicht zu sehr.