I tried myself on a screensaver. its all made by myself (well instead of the standard wads) If anyones interested in the smoke code(no particels) I`m willing to give them away.
of course I'm glad to tell you how I did it. okay at first I took this sprite
and then I used this code
Code:
function smoke_behaviour
{
my.scale_x =1/20; // different setting give you better fps or worse
my.scale_y =1/6; // different setting give you better fps or worse
my.scale_z =1/6; // different setting give you better fps or worse
my.bright = on;
my.flare = on;
my.transparent = on;
my.overlay = on;
my.unlit = on;
my.passable = on;
my.alpha = 3;
//my.beam = on; // beam has no special effect
while(my.z < 1200 && my.alpha > 1)
{
my.pan+=1*time; // Picture 1 effekt leave out the comented
//my.x += random(-3)+2; // Picture 2 for the opposite effect write +(3)-2 leave out the other commented
//my.y += random(-3)+2; // Picture 2 for the opposite effect write +(3)-2 leave out the other commented
//my.light = 1; // ALL LIGHT SETTING HERE REFER TO PIC 3
//my.lightrange = 200;
//my.lightred = 200; // playing with this value will give it more color try lightrange 20000
//my.lightgreen = 0;
//my.lightblue = 0;
//my.ambient = random(200); // you gotta see this in action gives a good flickering pic 4
//my.tilt +=1*time; // gives you a beautifull loop effect(but not recomented) PICTURE 5
//my.roll +=1*time; // strange figure also not recommented PICTURE 6
c_move(me,vector(0,0,1*time),nullvector,use_box);
my.alpha -=0.05*time_step;
wait(1);
}
ent_remove(me);
}
action create_smoke
{
my.unlit = on;
var the_pos;
my.passable = on;
my.invisible = on;
while(1)
{
randomize();
the_pos.x = my.x +random(2);
the_pos.y = my.y +random(2);
the_pos.z = my.z;
ent_create("smoke_color.bmp",the_pos,smoke_behaviour);
wait(-0.1);
}
}
its pretty simple you use the action and put it next to your model you want to smoke and that should do it.