Ohhh....hmmm, make a matrix under the world....or...I'll fix it actually.
The rain is stopping because you have no terrain for it to hit to reset. I'll fix it.
EDIT:
Ok, replace the HandlePrecipitation subroutine with this code:
rem handle precipitation
HandlePrecipitation:
for CSmoke=31501 to 32000
arraycount=CSmoke-31500
if Snowing(arraycount)=1
snowspeed#=Snowradius#(0)
Snowpositiony#(arraycount)=Snowpositiony#(arraycount)-Snowgravity#(0)
Snowpositionx#(arraycount)=newxvalue(Snowpositionx#(arraycount),SnowWindDirection#(0),SnowWindSpeed#(0)+rnd(SnowWindVariant#(0)))
Snowpositionz#(arraycount)=newzvalue(Snowpositionz#(arraycount),SnowWindDirection#(0),SnowWindSpeed#(0)+rnd(SnowWindVariant#(0)))
position object CSmoke,Snowpositionx#(arraycount),Snowpositiony#(arraycount),Snowpositionz#(arraycount)
select SnowSpinSpeed#(0)
case 0
point object CSmoke,camera position x(),camera position y(),camera position z()
endcase
endselect
select SnowdesSpin(arraycount)
case 0
xrotate object CSmoke,wrapvalue(object angle x(CSmoke)+SnowSpinSpeed#(0))
yrotate object CSmoke,wrapvalue(object angle y(CSmoke)+SnowSpinSpeed#(0))
endcase
case 1
xrotate object CSmoke,wrapvalue(object angle x(CSmoke)-SnowSpinSpeed#(0))
endcase
case 2
yrotate object CSmoke,wrapvalue(object angle y(CSmoke)+SnowSpinSpeed#(0))
endcase
case 3
yrotate object CSmoke,wrapvalue(object angle y(CSmoke)-SnowSpinSpeed#(0))
xrotate object CSmoke,wrapvalue(object angle x(CSmoke)+SnowSpinSpeed#(0))
endcase
endselect
if Snowpositionx#(arraycount)<SnowStormLocx1#(0) or Snowpositionx#(arraycount)>SnowStormLocx2#(0) or Snowpositionz#(arraycount)<SnowStormLocz1#(0) or Snowpositionz#(arraycount)>SnowStormLocz2#(0)
Snowing(arraycount)=0
position object CSmoke,0,0,0
hide object CSmoke
endif
if SnowMatrixorAT(0)=1
if Snowpositiony#(arraycount)<=get ground height(SnowGroundNum(0),Snowpositionx#(arraycount),Snowpositionz#(arraycount))
Snowpositiony#(arraycount)=get ground height(SnowGroundNum(0),Snowpositionx#(arraycount),Snowpositionz#(arraycount))
Snowing(arraycount)=0
position object CSmoke,0,0,0
hide object CSmoke
endif
endif
if SnowMatrixorAT(0)=2
if Snowpositiony#(arraycount)<=get terrain ground height(SnowGroundNum(0),Snowpositionx#(arraycount),Snowpositionz#(arraycount))
Snowpositiony#(arraycount)=get terrain ground height(SnowGroundNum(0),Snowpositionx#(arraycount),Snowpositionz#(arraycount))
Snowing(arraycount)=0
position object CSmoke,0,0,0
hide object CSmoke
endif
endif
if SnowMatrixorAT(0)=3
if Snowpositiony#(arraycount)<=0
Snowing(arraycount)=0
position object CSmoke,0,0,0
hide object CSmoke
endif
endif
else
if StormOn(0)=1
if rnd(500)<=SnowDensity(0)
Snowpositionx#(arraycount)=SnowStormLocx1#(0)+rnd(SnowStormLocx2#(0)-SnowStormLocx1#(0))
Snowpositiony#(arraycount)=SnowStormLocy#(0)
Snowpositionz#(arraycount)=SnowStormLocz1#(0)+rnd(SnowStormLocz2#(0)-SnowStormLocz1#(0))
Snowing(arraycount)=1
show object CSmoke
endif
endif
endif
next CSmoke
return
For the matrix or advanced terrain parameter, type a 3, and the rain will reset when it reaches y-position 0.
Hope it works!
Uncle Sam
Nvidia Geforce 7600 GS 256MB PCIEx, 2.66 GHZ Pentium 4 proccessor, 768MB RAM
Need particles? Click
here!