You're very picky my friend. So I have provided you with a double edged sword. Here is a program that will run around on a map, but it uses and dll and source replacement extensions and there are practically no comments. Understand this and you will be ready to see Yoda.
FLUSH VIDEO MEMORY
set display mode 800,600,32
cls
sync on
sync rate 60
rem statements easier to read
TYPE_NGC_ELLIP=1
TYPE_NGC_MESH=2
ELLIP_2_ELLIP=1
ELLIP_2_POLY=2
RESP_STICK=1
RESP_SLIDE=2
RESP_SLIDE_NO_SLOPES=3
RESP_SLIDE_NO_GRAV=4
RESP_NONE=5
DYN_NO_RESP=1
DYN_RESP=2
DYN_RESP_LOCK=3
DYN_RESP_LOCK_NOTURN=4
rem end vars
rem Setup Collision Types
player_coll=1
map_coll=2
rem GLOBAL Vars
global map_obj
global player_obj
#include "NGCollision.dba"
StartCollisionPRO(000000000,000000000,000000000)
StartCollisionDebugPRO()
map_obj=LoadObject("wowwy.3ds")
SetObjScalePRO(map_obj,300.0,300.0,300.0)
set object map_obj, 1,1,0
player_obj=LoadObject("player.x")
hide object player_obj
SetObjScalePRO(player_obj, 50.0,50.0,50.0)
SetCollisionsPRO(player_coll,map_coll, ELLIP_2_POLY,RESP_SLIDE_NO_GRAV, DYN_NO_RESP)
CollisionTypePRO(player_obj,player_coll)
CollisionTypePRO(map_obj,map_coll)
SetObjGravityPRO(player_obj,2.0)
set camera range 1, 5000
set camera fov 3.14/4.5
do
sync
CheckControls()
print "PLAYER CORODS: " , object position x(player_obj) , "," , object position y(player_obj) , "," , object position z(player_obj) , "."
print "MAP CORODS: " , object position x(map_obj) , "," , object position y(map_obj) , "," , object position z(map_obj) , "."
print "CAMERA CORODS: " , camera position x() , "," , camera position y() , "," , camera position z() , "."
print "CAMERA ANGLE: " , camera angle x() , "," , camera angle y() , "," , camera angle z() , "."
set cursor 1,1
RunCollisionPro()
if returnkey()=1 then exit
loop
DeleteAllObjs()
StopCollisionPRO()
wait key
end
function MakePrimitive(type$, sizeVAL1#, sizeVAL2#, sizeVAL3#, sizeVAL4#, sizeVAL5#, sizeVAL6#, sizeVAL7#, sizeVAL8#, sizeVAL9#)
for i=1 to 65535
newobjnum=i
x=object exist(i)
if x=0 then exit
next i
if lower$(type$)="sphere" then make object sphere newobjnum, sizeVAL1#
if lower$(type$)="cube" then make object cube newobjnum, sizeVAL1#
if lower$(type$)="box" then make object box newobjnum, sizeVAL1#, sizeVAL2#, sizeVAL3#
if lower$(type$)="cylinder" then make object cylinder newobjnum, sizeVAL1#
if lower$(type$)="cone" then make object cone newobjnum, sizeVAL1#
if lower$(type$)="plain" then make object plain newobjnum, sizeVAL1#, sizeVAL2#
if lower$(type$)="triangle" then make object triangle newobjnum ,sizeVAL1#, sizeVAL2#, sizeVAL3#, sizeVAL4#, sizeVAL5#, sizeVAL6#, sizeVAL7#, sizeVAL8#, sizeVAL9#
endfunction newobjnum
function LoadObject(filename$)
for i= 1 to 65535
newobjnum=i
x=object exist(i)
if x<>1
load object filename$, newobjnum
exit
endif
next i
endfunction newobjnum
function CheckControls()
rem Handle looking, angles & junk
x#=mousemovex()*.5: y#=mousemovey()*.5
xcam_angle#=camera angle x()
ycam_angle#=camera angle y()
ycam_angle#=wrapvalue(ycam_angle#+x#)
xcam_angle#=wrapvalue(xcam_angle#+y#)
player_angleY#=ycam_angle#
player_angleX#=xcam_angle#
player_angleZ#=zcam_angle#
rotate camera xcam_angle#,ycam_angle#,0
rotate object player_obj, player_angleX#, player_angleY#, player_angleZ#
rem Handle Actual Movement
player_posX=object position x(player_obj)
player_posY=object position y(player_obj)
player_posZ=object position z(player_obj)
if keystate(17)=1
move object player_obj, .2
player_posX#=object position x(player_obj)
player_posY#=object position y(player_obj)
player_posZ#=object position z(player_obj)
endif
if keystate(31)=1
player_posX#=newxvalue(player_posX#,wrapvalue(player_angleY#-180), .2)
player_posZ#=newzvalue(player_posZ#,wrapvalue(player_angleY#-180), .2)
endif
if keystate(30)=1
player_posX#=newxvalue(player_posX#,wrapvalue(player_angleY#-90), .2)
player_posZ#=newzvalue(player_posZ#,wrapvalue(player_angleY#-90), .2)
endif
if keystate(32)=1
player_posX#=newxvalue(player_posX#,wrapvalue(player_angleY#+90), .2)
player_posZ#=newzvalue(player_posZ#,wrapvalue(player_angleY#+90), .2)
endif
xcam_pos#=player_posX#
zcam_pos#=player_posZ#
ycam_pos#=player_posY#+1
position object player_obj, player_posX#, player_posY#, player_posZ#
position camera xcam_pos#, ycam_pos#, zcam_pos#
endfunction
function DeleteAllObjs()
for i=1 to 65535
x=object exist(i)
if x=1 then delete object i
next i
endfunction

I'm going to eat you!