HERES MY CODE
rem Setup environment
autocam off
hide mouse
sync on
rem Decal limit (full version users can set this to 100)
decallimit=50
dim decal#(decallimit,20)
rem Create elements
gosub _create_world
gosub _create_player
rem Place logo
placelogo()
rem Main Loop
lowmode=0
do
rem Low Mode Key
if lower$(inkey$())="l" and lowmode=0
lowmode=1
decallimit=25
hide object 1
hide object 10
for t=76 to 76+5 : hide object t : next t
delete object 70
create_flags(2,maxsize)
color backdrop rgb(255,255,255)
fill matrix 1,0.0,1
endif
if lower$(inkey$())="h" then hide object 65000
rem Control elements
if lowmode=0 then gosub _control_sea
gosub _control_player
gosub _control_camera
rem Control needles
speedo#=(speed#*-4.0)+60.0
zrotate object 76+2,wrapvalue(fuel#)
zrotate object 76+3+2,wrapvalue(speedo#)
rem Control decals
controldecals()
rem Update screen
sync
rem End of Loop
loop
rem ** Subroutines **
_control_player:
rem Record old boat position
oldboatx#=boatx#
oldboatz#=boatz#
rem Handle Boat Controls
if upkey()=1
speeddest#=speeddest#+1
fuel#=fuel#+0.01
if fuel#>55.0 then fuel#=55.0
endif
if spacekey()=1 then speeddest#=speeddest#+1.0
if leftkey()=1 then wheel#=wheel#-0.5 : speeddest#=speeddest#+0.01
if rightkey()=1 then wheel#=wheel#+0.5 : speeddest#=speeddest#+0.01
if wheel#30.0 then wheel#=50.0
wheel#=wheel#/(1.1+(speed#/5.0))
boatadest#=wrapvalue(boata#+(wheel#*(speed#/2.0)))
rem Only when in contact with sea
speeddest#=speeddest#/1.07
if boaty#(maxsize*2)-500.0 then boatx#=(maxsize*2)-500.0
if boatz#(maxsize*2)-500.0 then boatz#=(maxsize*2)-500.0
rem Calculate a point 10 units ahead of boats' position
ox#=newxvalue(0,boata#,15)
oz#=newzvalue(0,boata#,15)
rem Get the heights at the front and back end of the boat
hf#=get ground height(1,boatx#+ox#,boatz#+oz#)
hb#=get ground height(1,boatx#-ox#,boatz#-oz#)
rem Calculate a gradual tilt to align with the sea level
tiltdest#=(hb#-hf#)*3
tilt#=curvevalue(tiltdest#,tilt#,6)
rem Determine whether on sea or ramp
colobj=object collision(3,20)
if colobj=1
sealevel#=topofobject(boatx#,20.0,boatz#,20)
if sealevel#sealevel#+5
inwater=0
endif
endif
rem Gravity math
if colobj=1
boaty#=sealevel#
else
gravity#=gravity#/1.1
gravity#=gravity#+0.15
if boaty#99000 then ss=99000
set sound speed 11,ss
rem Place rider on jetski
riderx#=newxvalue(boatx#,boata#,5.5)
riderz#=newzvalue(boatz#,boata#,5.5)
riderx#=newxvalue(riderx#,wrapvalue(boata#+90),0.5)
riderz#=newzvalue(riderz#,wrapvalue(boata#+90),0.5)
position object 4,riderx#,realboaty#+4,riderz#
rotate object 4,wrapvalue((tilt#-(speed#/0.5))+8),boata#,0
rem Handle behaviour of rider
benddest#=0-(gravity#*10)
if benddest#>45.0 then benddest#=45.0
if benddest#2.5 and boaty#20 or y25
choppy#=2.5
else
choppy#=1.0
endif
rem Change height of matrix point using ripple height
set matrix height 1,x,y,h#+(cos(ripple(tt))*choppy#)
rem Change the ripple height for next time
ripple(tt)=wrapvalue(ripple(tt)+5)
next y
next x
update matrix 1
return
_create_player:
rem Position Boat
boatx#=maxsize
boatz#=maxsize/1.5
boaty#=10
boata#=55
rem Make Boat
load object "jetski.x",2
yrotate object 2,180
fix object pivot 2
scale object 2,500,500,500
set object collision off 2
rem Attach invisible pivot object to boat
make object plain 3,0,20
glue object to limb 2,3,0
position object 3,boatx#,boaty#,boatz#
set object collision on 3
set object collision to polygons 3
position object 2,-2.4,5,5
rem Load rider for jetski
load object "rider.x",4
hide limb 4,10 : hide limb 4,11 : hide limb 4,12
set object collision off 4
set object rotation zyx 4
scale object 4,50,50,-50
rotate limb 4,1,0,180,0
scale limb 4,1,100,100,-100
rem Create 3D-Sound for Boat
load 3dsound "jet.wav",11 : loop sound 11
set sound speed 11,15000 : set sound volume 11,95
position listener maxsize,10,maxsize
rem Splash
for s=1 to 5
load sound "splash.wav",11+s
next s
rem Statistics
fuel#=-55.0
return
_create_world:
rem Define scene size
maxsize=2900
rem Start Sea-Sound (while loading)
load sound "sea.wav",1 : loop sound 1
rem Set Scene
if fog available()=1
fog on : fog distance 3500 : fog color rgb(255,255,255)
endif
rem Make Sky
load image "sky.bmp",1
load image "water.bmp",2
make object sphere 1,maxsize
set object 1,1,1,0
texture object 1,1
scale object 1,200,60,200
position object 1,maxsize,0,maxsize
fade object 1,0
scroll object texture 1,0.5,0
set object collision off 1
rem Make carrier in distance
load object "carrier4.x",10
scale object 10,400,400,300
position object 10,maxsize,-5,maxsize
set object collision off 10
rem Create perimiter flags
create_flags(1,maxsize)
rem Make Sea Matrix
make matrix 1,maxsize*2,maxsize*2,25,25
prepare matrix texture 1,2,1,1
set matrix wireframe off 1
randomize matrix 1,15
rem Lower edges of Sea Matrix
for t=0 to 25
set matrix height 1,0,t,-100
set matrix height 1,25,t,-100
set matrix height 1,t,0,-100
set matrix height 1,t,25,-100
next t
rem Create Array to store Wave Height Ripples
dim ripple(25*26)
for t=0 to 25*25 : ripple(t)=rnd(350) : next t
rem Create ramp for jump
make object plain 20,100,200
position object 20,maxsize,10,maxsize+750
rotate object 20,65,270,0
set object rotation zyx 20
set object 20,1,1,0
set object collision to polygons 20
set object collision on 20
hide object 20
rem Load visual ramp
load object "ramp.x",21
position object 21,maxsize,0,maxsize+750
scale object 21,1500,1500,1500
set object collision off 21
set object rotation zyx 21
rotate object 21,10,90,0
rem Start second Sea Sound (for phase-shifted overlapping sfx)
load sound "sea.wav",2 : loop sound 2 : set sound speed 2,12000
rem Load images
load image "spray.bmp",1001
load image "stats1.bmp",1002
load image "stats2.bmp",1003
load image "stats3.bmp",1004
load image "stats4.bmp",1005
rem Make needle mesh
make object triangle 90,0,0,0,0,35,0,5,0,0
make mesh from object 90,90
delete object 90
make object triangle 90,-5,0,0,0,35,0,0,0,0
make mesh from object 91,90
delete object 90
make object 90,90,0
add limb 90,1,91
make mesh from object 92,90
delete object 90
rem Create status panel
for s=0 to 1
if s=0 then sx#=-12.5 else sx#=12.5
rem Left Side panel
ss=76+(s*3)+0
make object plain ss,256,96
position object ss,sx#,19.3,40
texture object ss,1002+s
scale object ss,10,10,50
set object ss,1,0,0
fade object ss,200
lock object on ss
set object collision off ss
rem Right Side panel
ss=76+(s*3)+1
make object plain ss,256,96
position object ss,sx#,19.3,40
texture object ss,1004+s
scale object ss,10,10,50
set object ss,1,0,0
fade object ss,200
lock object on ss
ghost object on ss
set object collision off ss
rem Create status needle
ss=76+(s*3)+2
make object ss,92,0
if s=0 then sb#=(18.9-12.5)
if s=1 then sb#=(18.9-12.5)*-1
position object ss,(sx#-sb#)-0.1,19.35,40+5
scale object ss,10,10,50
color object ss,rgb(255,255,255)
set object ss,1,0,0
fade object ss,200
lock object on ss
ghost object on ss
set object collision off ss
next s
rem Set scene
set camera range 10,10000
set ambient light 80
return
rem ** Functions **
function makespray(x#,y#,z#,size#,life,decallimit)
rem Find spare decal
fd=0 : for d=1 to decallimit : if decal#(d,1)=0 : fd=d : endif : next d
rem Create spray
if fd>0
decal#(fd,1)=1
decal#(fd,2)=x#
decal#(fd,3)=y#-((rnd(20)-10)/10.0)
decal#(fd,4)=z#
decal#(fd,5)=(1.5+(rnd(10)/10.0))
decal#(fd,7)=(size#*10.0)
decal#(fd,8)=life
decal#(fd,9)=size#*10
rem Object
objid=10000+fd : dodecal(objid)
texture object objid,1001
fade object objid,0
endif
endfunction
function dodecal(objid)
if object exist(objid)=0
make object plain objid,10,10
set object collision off objid
endif
set object objid,1,0,0
ghost object on objid
endfunction
function controldecals()
rem All decals
for d=1 to 100
rem Object id
objid=10000+d
if object exist(objid)=1
rem Control smoke decals
if decal#(d,1)=1
position object objid,decal#(d,2),decal#(d,3),decal#(d,4)
point object objid,camera position x(),camera position y(),camera position z()
xrotate object objid,0 : zrotate object objid,0
scale object objid,(decal#(d,7)+decal#(d,9))*2,decal#(d,9),decal#(d,7)
decal#(d,3)=decal#(d,3)+decal#(d,5)
decal#(d,5)=decal#(d,5)-0.5
decal#(d,9)=decal#(d,9)+5
decal#(d,8)=decal#(d,8)-2.0
if decal#(d,8)
hey come on to my cool site
www.alfarjamie.shorturl.com