just call the functions snow_start() or rain_start() in your main function or where ever you want it to start
/////////snow script///////////////////
DEFINE Weather_snow,2;
VAR Snow_strenght = 20; //strenght of snow
VAR Snow_Radius = 400; //radius of snow
VAR Snow_Fallspeed = -15; //fallspeed snow
FUNCTION snow_start(); //starts snowfall
BMAP bsnow = <snow.tga>;
FUNCTION s_spec()
{
my.skill_b += 0.3 * time;
my.skill_a = 30 - my.skill_b;
if(my.skill_a < 0) { my.lifespan = 0; }
}
FUNCTION s_effect()
{
my.skill_a = 0;
my.skill_b = 0;
my.bmap = bsnow;
my.vel_x = 0;
my.vel_y = 0;
my.vel_z = -4 ;
my.size =4 ;
my.move =1 ;
my.alpha = 100 ;
my.x += random(1000)-500;
my.y += random(1000)-500;
my.z += random(100)-50;
my.transparent = 1 ;
my.gravity =0 ;
my.streak =0 ;
my.bright =1 ;
my.function = s_spec;
my.flare =1 ;
}
FUNCTION snow_start()
{
if(Weather_mode == Weather_snow) { return; }
VAR myPos[3];
Weather_Mode = Weather_snow;
while(Weather_Mode == Weather_snow)
{
vec_set(myPOS,camera.x);
MyPos.X = myPos.X - 100;
MyPos.Y = myPos.Y + 100;
MyPos.Z = myPos.Z ;
MyPos.Z = Camera.Z + 80;
effect(s_effect,Snow_strenght ,MyPOS,nullvector);
wait(1 );
}
}
/////////////////////////////////////////////////////////////////////////
//////////rain//////////////////////////////////////////////////////////
VAR Weather_Mode = 3;
DEFINE Weather_rain,1;
VAR Rain_strenght = 20; //Strenght of Rain
VAR Rain_Radius = 2000; //Raidus of Rain
VAR Rain_Fallspeed = -40; //Fallspeed of the raindrops
VAR Rain_sound = 75; //reserved
SOUND sd_rain = <rain.wav>; //Sound of raining
VAR sd_handle;
FUNCTION rain_start(); //Starts normal raining
BMAP brain = <drop.pcx>;
//Rain
FUNCTION r_spec()
{
my.skill_b += 0.3 * time;
my.skill_a = 10 - my.skill_b;
if(my.skill_a < 0) { my.lifespan = 0; }
}
FUNCTION r_effect()
{
my.skill_a = 0;
my.skill_b = 0;
my.bmap = brain;
my.vel_x = 0;
my.vel_y = 0;
my.vel_z = Rain_fallspeed;
my.size = 14;
my.move = 1;
my.alpha = 100 ;
my.x += random(Rain_Radius)-Rain_Radius/2;
my.y += random(Rain_Radius)-Rain_Radius/2;
my.z += random(100)-50;
my.transparent = 1 ;
my.gravity =0 ;
my.streak =0 ;
my.bright =1 ;
my.function = r_spec;
my.flare =1 ;
}
FUNCTION rain_fun(storm)
{
if(Weather_mode == Weather_rain ) { return; }
VAR myPos[3];
Weather_Mode = Weather_rain;
sd_handle = snd_loop (sd_rain,100,0);
while(Weather_Mode == Weather_rain )
{
vec_set(myPOS,camera.x);
MyPos.X = myPos.X ;
MyPos.Y = myPos.Y ;
MyPos.Z = myPos.Z ;
MyPos.Z = Camera.Z + 80;
effect(r_effect,Rain_strenght ,MyPOS,nullvector);
wait(1 );
}
}
FUNCTION rain_start()
{
rain_fun(0);
}