vorab will ich sagen, dass ich es nicht ganz so macvhen konnte wie geplant, weil da die framerate nicht mitmachte.jetzt ist es dadurch aber leider nicht ganz so schön wie erst gewollt, z.b. ist der nebel zu unregelmäßig. dann gibts noch ein problem, das kann ich aber noch beheben (wenn ich mal zeit und lust hab werd ich das machen).Das wäre, dass der nebel sich nicht von treppen herunterwabern kann. da muss ich noch irgendwo ein paar traces einbauen.dann wird der nebel auch noch nicht richtig zur seite gefegt, wenn jemand durch ihn schreitet. da liegt das problem eigentlich darin, dass er zu schnell neu erstellt wird.das sind aber alles fehler, die man eigentlich ohne probleme beheben kann. wenn ich dann die finale version habewerd ich sie nochmal posten. oder ihr macht mal ein bissl weiter. irgendwann wirds schon richtig wabern...
also erst der script:
code:
 
var box_st_point[3];
bmap fog_map,<vn.bmp>;


function v_f
{
if (my_age == 0)
{
my_speed.x = random (0.2)-0.1;
my_speed.y = random (0.2)-0.1;
my_speed.z = random (0.2)-0.1;
my_size = 1500;
my_map=fog_map;
my_flare = on;
my_alpha = 90;
my_bright = on;
}
my_alpha -= 0.3*time;
if (my_alpha < 5 || content(my_pos.x) == content_solid)
{
my_action = 0;
}
}

function bounce_away()
{
if (event_type == event_stuck){my.skill21 += 1;if (my.skill21 > 3){remove (my);return;}wait (5); my.skill21 = 0;}
vec_to_angle (my.pan,bounce);
my.tilt = 0;
my.roll = 0;
}

action fog_cube
{
my.scale_x = you.scale_x;
my.scale_y = you.scale_y;
my.scale_z = you.scale_z;
my.push = you.skill3*-1;
my.pan = random (360);
my.enable_entity = on;
my.enable_impact = on;
my.enable_block = on;
my.enable_push = on;
my.enable_stuck = on;
my.event = bounce_away;
my.invisible = on;
while (my != null && you != null)
{
emit (1,my.x,v_f);
vec_set (temp,nullvector);
temp.x = 30*time;
ent_move (temp, nullvector);
wait (1);
}
}

action volumetric_fog
{
my.transparent = on;
my.passable = on;
while (my.skill1 < 60)
{
my.skill2 = 0;
while (my.skill2 < 39)//model hat 39vertices
{
my.skill2 += 1;
vec_for_vertex (temp.x, my, my.skill2);
if (content(temp.x) == content_solid){my.skill2 = 0;}
wait (1);
}
if (my.skill2 >= 39){create (<cube.wmb>,my.x,fog_cube);my.skill3 += 0.1;}
wait (1);
}
}

ich hab noch mit älteren befehlen gearbeitet, weil ich mich noch nicht so recht an die neuen gewöhnt habe.

und hier der screen:

 -