you need to use mousemoveX() and mousmoveY() and none of that objectscreenX() stuff.
I made a code becouse I din't read you post carefully enough, so
don't press this button: `just some matrix texture crap, study or ignore it.
ink rgb(190,190,190),0:box 0,0,20,20
ink rgb(255,255,255),0:line 0,0,20,0:line 0,0,0,20:line 20,20,20,0:line 20,20,0,20:line 0,0,20,20:line 0,20,20,0
get image 1,0,0,21,21
hide mouse:`we don't want the big ugly mouse in the way ;-)
make object plain 1,10,10:Xrotate object 1,90: `create a cursor and rotate it
make matrix 1,1000,1000,50,50:`50 x 50 is max amount of segment if the difrence is 0.
prepare matrix texture 1,1,1,1:delete image 1:`put the texture on the matrix and delete the texure form memorry
position camera 500,1000,500:`position the camera at the middle of the matrix.
Xrotate camera 90:`point the camera straight down
xpos=500:zpos=500:`center the curor at the beginning
do
xpos=xpos+mousemovex():`mousemoveX() can also give out a negative number
zpos=zpos-mousemovey():`zrotate the camera 180 and you can change the - into a +
ypos=get ground height(1,xpos,ypos)+10:`have the cursor float above the ground (+10)
`a lil code to prevent the cursor from getting off the grid
if xpos>1000 then xpos=1000
if xpos<0 then xpos=0
if zpos>1000 then zpos=1000
if zpos<0 then zpos=0
`update the cursor position
position object 1,xpos,ypos,zpos
loop
but you can use this for a peak, it's about as optimised as it can get. plus i've added noted all over the place so even the biggest morron can understand it.