OK this is just a quick programme because I'm not very at home with 3D and as far as I can remember I haven't tried jumping before, but what I thought was something along these lines:
sync on
sync rate 0
make object sphere 1,1
make matrix 1,100,100,20,20
playerheight#=1.2
jumpheight#=0.7
position object 1,33,0,17
randomize matrix 1,2.4
update matrix 1
do
x#=object position x(1)
z#=object position z(1)
angy#=object angle y(1)
groundy#=get ground height(1,x#,z#)
if spacekey()=1 and jumping=0 then jumping=1
if upkey()=1 then x#=newxvalue(x#,angy#,0.2) : z#=newzvalue(z#,angy#,0.2)
if downkey()=1 then x#=newxvalue(x#,angy#-180,0.1) : z#=newzvalue(z#,angy#-180,0.1)
if rightkey()=1 then angy#=WRAPVALUE(angy#+0.8)
if leftkey()=1 then angy#=WRAPVALUE(angy#-0.8)
yrotate object 1,angy#
camx#=newxvalue(x#,angy#-180,8.5)
camz#=newzvalue(z#,angy#-180,8.5)
camy#=(get ground height(1,camx#,camz#))+4.8
if jumping=1
inc jumpvar,6
else
jumpvar=0
endif
if jumpvar>180 then jumping=0
y#=groundy#+playerheight#+(jumping*SIN(jumpvar))
position object 1,x#,y#,z#
position camera camx#,camy#,camz#
point camera x#,y#,z#
sync
loop
playerheight#=1.2
jumpheight#=0.7
The first variable is the height you want the player to be off the ground. I made the little sphere float above the ground by a fair way. The second is the height of the jump - obviously, the higher you want him to jump, the higher you set the value.
if jumping=1
Check if your character is jumping
inc jumpvar,6
If he is, then increase the progress through the jump. The value can be changed at the end, but I would use factors of 360 to get a smoother jump (1,2,3,4,5,6... hey actually that's quite a versatile number)
else : jumpvar=0
If your character isn't jumping then reset the jumpvar variable
if jumpvar>180 then jumping=0
Make sure that when the jump actually finishes, the programme recognises this.
y#=groundy#+playerheight#+(jumping*SIN(jumpvar))
This is the actual jump.
The groundy# was the variable of the ground height at this point. This is added to the basse height you want the player off the ground. Then finally you add the jumping variable. The "jumping" is there so that if your character isn't jumping then that term will equal 0, therefore be ignored.
The "jumpvar" is a number between 0 and 180. You take the sine value of this, as between the values of 0 and 180 degrees, the sine graph looks is a curve from 0 to 1 and back again (look it up on the internet if you're not familiar with it). Therefore, your character will jump upwards, then when he reaches the peak of the jump start to fall again.
EDIT: By the way, this worked when I tested, but if it doesn't then sorry, I'm a bit tired and a little drunk and it's my first time trying to figure this out.