Erstellst du deine Einheiten per Script?
Wenn ja mach das doch so:
Das schreibst du an ganz oben zu den Variablen im Script.
Code:
var* unitHandleArray[max_entities];
var unitHANum = 0;//Nummer der schon eingetragenen Einheiten


Das in die Funktion wo du die Einheiten erstellst.
Code:
you = ent_create("sphere.mdl",nullvector,NULL);//Hier kommt deine ent_create Funktion hin
unitHandleArray[unitHANum] = handle(you);
unitHANum++;

Und das ist die neue "FOG" Funktion.
Code:
function manage_fog()
{
    my.tilt = 90;
    my.alpha = 100;
    my.oriented = on;
    my.transparent = on;
    my.passable = on;
    ENTITY* ent; //temp Entity-Pointer
    var i = 0;
    while (1)
    {
       for(i=0;i<unitHANum;i++)
       {
          ent = ptr_for_handle(unitHandleArray[i]);
          if (vec_dist(ent.x, my.x) < 350)
          {
             my.alpha = 0;
          }
          else
          {
            my.alpha = 100;
          }
          ent = NULL;
       }
       wait (1);
    }
}


Ich habe das jetzt nicht getested, sollte aber funktionieren.
MFG Ralph