Here's a little skybox code that will auto-generate a set of skybox textures using whatever you have for your current terrain (and/or objects in your zone) and some simple camera work. Pretty simple bit of code, really - getting the right FOV was the only tricksy part.
Just build your terrain, and call this function before or after placing building/trees or whatever else you have in your zone.
terrainCenterX, terrainCenterHeight, and terrainCenterZ are the DBPro coordinates from which you want the camera to snap the pictures for the skyboxes (this will probably be different for every terrain you use).
terrainSize is the length or width of the terrain (used to calculate a reasonable skybox size).
This works with any terrain type.
This could be improved using a cube sky.x object (to get rid of the very faint seams) instead of a set of PLAIN objects.
Enjoy!
Edit: Added the system function calls that this function uses
function skyBuildSkyBox(terrainCenterX, terrainCenterHeight, terrainCenterZ, terrainSize)
create bitmap 14,640,640
color backdrop rgb(0,0,0)
set camera fov 0,74
sync:sync
position camera 0, terrainCenterX, terrainCenterHeight, terrainCenterZ
rotate camera 0,0,0,0
sync:frontimage = systemGetImage(0,0,bitmap width(),bitmap height())
rotate camera 0,0,90,0
sync:rightimage = systemGetImage(0,0,bitmap width(),bitmap height())
rotate camera 0,0,180,0
sync:backimage = systemGetImage(0,0,bitmap width(),bitmap height())
rotate camera 0,0,270,0
sync:leftimage = systemGetImage(0,0,bitmap width(),bitmap height())
set current bitmap 0
delete bitmap 14
set current bitmap 0
set current camera 0
front = systemMakePlain((terrainSize*2+2),(terrainSize*2+2))
position object front, terrainCenterX - 1, 0, terrainCenterZ + terrainSize
texture object front, leftimage
set object ambient front, 0
SET OBJECT TRANSPARENCY front, 1
right = systemMakePlain((terrainSize*2+2),(terrainSize*2+2))
position object right, terrainCenterX + terrainSize, 0, terrainCenterZ + 1
rotate object right, 0,270,0
texture object right, frontimage
set object ambient right, 0
SET OBJECT TRANSPARENCY right, 1
back = systemMakePlain((terrainSize*2+2),(terrainSize*2+2))
position object back, terrainCenterX + 1, 0, terrainCenterZ - terrainSize
texture object back, rightimage
rotate object back, 0,0,0 ` don't ask :/
set object ambient back, 0
SET OBJECT TRANSPARENCY back, 1
left = systemMakePlain((terrainSize*2+2),(terrainSize*2+2))
position object left, terrainCenterX - terrainSize, 0, terrainCenterZ - 1
texture object left, backimage
rotate object left, 0,90,0
set object ambient left, 0
SET OBJECT TRANSPARENCY left, 1
color backdrop rgb(127,127,127)
endfunction
Here's the systemMakePlain and systemGetImage code this calls:
function systemMakePlain(width#,height#)
ctr=0
true=1
while ctr <= 65535 and true <> 0
inc ctr
if object exist(ctr)=0
true=0
make object plain ctr,width#,height#
endif
endwhile
endfunction ctr
function systemGetImage(left,top,right,bottom)
ctr=0
true=1
while ctr <= 65535 and true <> 0
inc ctr
if image exist(ctr)=0
true=0
get image ctr,left,top,right,bottom
endif
endwhile
endfunction ctr