I've put together a quick example for you here. Use W, A, S + D to move the camera and use the mouse to place objects. Hopefully this will give you a good starting point. Let me know if you need any more info.
rem Set up window
set display mode 1024, 768, 32
set window on
set window title "RTS object placement"
rem Assuming control...of screen updating
sync on
sync rate 60
rem Display loading message
sync
center text 512, 384, "LOADING..."
sync
rem Some basic setup
disable escapeKey
autoCam off
backdrop on
color backdrop 0x555c6a
rem Create a random terrain
global object_terrain as integer
object_terrain = 1
make object plain object_terrain, 100, 100
rotate limb object_terrain, 0, 270, 0, 0
make mesh from object 1, object_terrain
delete object 1
make object object_terrain, 1, 0
set object cull object_terrain, 0
delete mesh 1
for i = 0 to 30
sX# = 5 + rnd(10)
sY# = 1 + rnd(5)
sZ# = 5 + rnd(10)
make object box 2, sX#, sY#, sZ#
make mesh from object 1, 2
delete object 2
add limb 1, 1, 1
delete mesh 1
offset limb 1, 1, ((sX# / 2.0) - 50.0) + rnd(100.0 - sX#), sY# / 2.0, ((sZ# / 2.0) - 50.0) + rnd(100.0 - sZ#)
make mesh from object 1, object_terrain
delete object 1
make object object_terrain, 1, 0
next i
set object cull object_terrain, 0
set shadow shading on 1, -1, 100, 1
rem Create the mouse object
global object_mouse as integer
object_mouse = 2
make object box object_mouse, 2, 2, 2
set object ambient object_mouse, 0
set object light object_mouse, 0
set object wireframe object_mouse, 1
rem Setup atmosphere
position light 0, 0, 50, -75
color light 0, 0xffdd55
set ambient light 20
rem Setup camera
cameraX# = -50
cameraY# = 25
cameraZ# = -50
rotate camera 45.0, 45.0, 0.0
rem Variable for tracking mouse clicks
global oldClick as boolean
oldClick = 0
rem Start the main loop
repeat
rem Update the camera
w = keyState(17)
a = keyState(30)
s = keyState(31)
d = keyState(32)
moveX# = d - a
moveZ# = w - s
if ((d - a) <> 0 and (w - s) <> 0)
moveX# = moveX# / 1.4
moveZ# = moveZ# / 1.4
endIf
inc cameraX#, ((sin(camera angle y()) * moveZ#) + (sin(camera angle y() + 90.0) * moveX#))
inc cameraZ#, ((cos(camera angle y()) * moveZ#) + (cos(camera angle y() + 90.0) * moveX#))
position camera cameraX#, cameraY#, cameraZ#
rem Check the mouse is on the terrain
p = pick object(mouseX(), mouseY(), object_terrain, object_terrain)
if (p = object_terrain)
rem Show the cursor object at the mouse position
exclude object off object_mouse
position object object_mouse, get pick vector x() + cameraX#, get pick vector y() + cameraY# + 1, get pick vector z() + cameraZ#
rem Check for mouse click
if (mouseClick() = 1)
rem Check it wasn't being held
if (oldClick = 0)
rem Place an object where the mouse is
make object box 3, 2, 2, 2
make mesh from object 1, 3
delete object 3
add limb object_terrain, 1, 1
delete mesh 1
offset limb object_terrain, 1, object position x(object_mouse), object position y(object_mouse), object position z(object_mouse)
make mesh from object 1, object_terrain
delete object 1
make object object_terrain, 1, 0
set object cull object_terrain, 0
set shadow shading on 1, -1, 100, 1
endIf
rem Remember the mouse was held
oldClick = 1
else
rem Remember the mouse was released
oldClick = 0
endIf
else
rem Hide the cursor object
exclude object on object_mouse
endIf
rem Render
sync
rem Exit when escape is pressed
until escapeKey() = 1
rem End the application
end
[Edit]Changed my double slash comments to rem comments for syntax highlighting.[/Edit]