I wasn't aware of the GET PICK VECTOR commands before but I had a bit of a play and I think this is the approach I would take to this problem.
sync on
sync rate 60
autocam off
set window off
`make a board (a white plain)
make object plain 1, 1000,1000
rotate object 1, -90,0,0
`make a marker object (a red cube)
make object cube 2, 20
color object 2, rgb(255,0,0)
position object 2,0,10,0
`make a marker object
make object cube 3, 1
hide object 3
position object 3,0,0,0
`set the initial values for the camera position
zoom = -1000
pitch = 40
`main loop
do
`controls
if shiftkey() = 0
`not holding down the shift key
if leftkey() = 1 then turn object left 3,1 :`rotate the marker object
if rightkey() = 1 then turn object right 3,1 :`rotate the marker object
if upkey() = 1 then inc pitch,1 :`change the pitch of the camera
if downkey() = 1 then dec pitch,1 :`change the pitch of the camera
else
`holding down the shift key
if leftkey() = 1 then move object left 3,5 :`move the marker object
if rightkey() = 1 then move object right 3,5 :`move the marker object
if upkey() = 1 then move object 3,5 :`move the marker object
if downkey() = 1 then move object 3,-5 :`move the marker object
endif
`determines the position of the mouse projected onto the board if the mouse is over the board
if mouseclick() = 1
if pick object(mousex(),mousey(),1,1) = 1
target_x# = get pick vector x() + camera position x()
`target_y# = get pick vector y() + camera position y() :`not required in this example
target_z# = get pick vector z() + camera position z()
`point the red cube at the point that was selected on the map (note that the y position is simply the mid height of the cube
point object 2, target_x#, 10, target_z#
endif
endif
`calculate the distance between the target coordinates and the cube
distance# = sqrt( (object position x(2) - target_x#)^2 + (object position z(2) - target_z#)^2 )
`if the target position is a suitable distance away then point the cube at the target coordinates and move the object toward it
if distance# > 10
move object 2, 2
endif
`position the camera
position camera object position x(3),object position y(3),object position z(3) :`position the camera on marker object
set camera to object orientation 3 :`align the camera to the marker object
pitch camera down pitch
move camera zoom :`move the camera backward
`print stuff
set cursor 0,0
print "Left click on the white plain"
print "The red box will then move to where you have clicked"
print "left and right arrow keys to rotate camera"
print "up and down arrow keys to pitch camera up and down"
print "shift + left/right/up/dpwn arrow keys to pan camera"
sync
loop
So rather than moving the board around, I would move the camera around the board and then move the player object relative to the board. I didn't include a way of changing the zoom but this is is easy.
Hope someone finds this helpful.