One way to control this, is have a model for each dynamic light. Make this model a sphere that has a radius of 100 quants. For the light, have an action similar to this:

note: been a while since I've used GS, so the syntax is probably off...

Code:
action d_light()
{
    my.red = 200;
    my.green = 200;
    my.blue = 200;
    my.lightrange = 0;
    set(my, PASSABLE | INVISIBLE);
    //
    var range = 800;
    var scale = range / 100;
    vec_set(my.scale_x, vector(scale, scale, scale));
    //
    while (my)
    {
        if (is(my, CLIPPED))
        {my.lightrange = 0;}
        else
        {my.lightrange = range;}
        //
        wait(1);
    }
}




The sperical model is supposed to represent the extent of the lights range. When the model is not visible on the screen, then the light will not be visible on the screen, so the light will be turned off.