RegionGenerator

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(How to use)
(How to use)
Line 19: Line 19:
 
* Run regiongen.exe
 
* Run regiongen.exe
 
* Copy the Regions folder to your opensim/bin folder.
 
* Copy the Regions folder to your opensim/bin folder.
 
+
* If you run it again, it will update the regions but it will not delete the files. If you made a big screw up, delete the Regions folder.
 
If using the python source code (Linux, mac etc), make sure you have the cheetah and python 2.5 dependency's installed and edit the configuration in the header, then run :)
 
If using the python source code (Linux, mac etc), make sure you have the cheetah and python 2.5 dependency's installed and edit the configuration in the header, then run :)
  

Revision as of 15:43, 14 July 2008

Contents

Region Generator

About

It generates a square piece of land.

You can feed it the from-to X Postion and from-to Y position then it makes the xml files for you.

Download

I have made a .exe version of this program for windows, you can get it from these locations:

http://www.mediafire.com/?xred9vm0ent

http://4rensics.com/regiongen.zip

How to use

If using windows version

  • Extract to somewhere on your computer, i.e. The desktop.
  • Edit the regionconfig.py file.
  • Run regiongen.exe
  • Copy the Regions folder to your opensim/bin folder.
  • If you run it again, it will update the regions but it will not delete the files. If you made a big screw up, delete the Regions folder.

If using the python source code (Linux, mac etc), make sure you have the cheetah and python 2.5 dependency's installed and edit the configuration in the header, then run :)

Source Code

It requires the Cheetah Templating module and python 2.5.

You can get cheetah from http://www.cheetahtemplate.org/

You can get python from http://www.python.org/download/

#!/usr/bin/python
from Cheetah.Template import Template
import uuid
import os
import pickle

# ----------------------
# START OF CONFIGURATION
s = {}

# Region Configuration
s['regionname'] = "LandsNameHere"     # Type the name of your land
s['x'] = [2900,3000]                # From - To x position
s['y'] = [2900,3000]                # From - To y position


# User Configuration
s['firstname'] = "John"           # Account firstname
s['lastname'] = "Doe"              # Account lastname
s['useruuid'] = 'your clients uuid goes here'
s['password'] = 'mypass'           # Account password


# Network Configuration
s['startport'] = 9000               # Port the regions start on
                                    # incrimented by 1 each time
s['internalip'] = "123.456.789.123"   # Server ip
s['externalhost'] = "mydomain.org"  # Domain name or ip of server
                                    # (accessed externally)

# Files are put in here.
regionsdir = 'Regions'

template = """<Root>
<Config sim_UUID="$uuid" sim_name="$regionname" sim_location_x="$x" sim_location_y="$y" internal_ip_address="$s.internalip" internal_ip_port="$port" allow_alternate_ports="false" external_host_name="$s.externalhost" master_avatar_uuid="$s.useruuid" estate_covenant_uuid="00000000-0000-0000-0000-000000000000" master_avatar_first="$s.firstname" master_avatar_last="$s.lastname" master_avatar_pass="$s.password" />
</Root>"""

savefile = "regiongen_save.pkl"
# END OF CONFIGURATION
# --------------------

def maketemplate(regionname, x, y, port, uid):
    t = Template(template)
    t.s = s
    t.uuid = uid
    t.regionname = regionname
    t.x = x
    t.y = y
    t.port = port
    return str(t)

# Make directory to put regions in if not there
try:
    os.mkdir(regionsdir)
except OSError:
    pass

settings = {}

# Load settings file
try:
    settingsfile = open(savefile)
    settings = pickle.load(settingsfile)
    settingsfile.close()
except IOError:
    pass

counter = 0
for xnum in range(s['x'][0], s['x'][1]):
    for ynum in range(s['y'][0], s['y'][1]):
        counter += 1
        default = False
        
        # Figure out region name
        if counter == 1:
            default = True
            regionname = s['regionname']
        else:
            regionname = s['regionname'] + str(counter)
        
        # Figure out paths
        if default:
            path = os.path.join(regionsdir,"default.xml")
        else:
            path = os.path.join(regionsdir,"%s.%s.%s.xml" % \
                    (regionname, xnum, ynum))
        
        # Calculate port
        port = s['startport'] + (counter - 1)
        # Try to get UUID from settings
        # Generate + Save if not found
        if settings.has_key(regionname):
            uid = settings[regionname]
        else:
            uid = str(uuid.uuid1())
            settings[regionname] = uid
        # Make template
        tmpldata = maketemplate(regionname, xnum, ynum, port, uid)
        
        # Save file
        tmplfile = open(path, 'w')
        tmplfile.write(tmpldata)
        tmplfile.close()
        
        # Print progress
        print regionname

# Save settings file
try:
    settingsfile = open(savefile, 'w')
    pickle.dump(settings, settingsfile)
    settingsfile.close()
except IOError:
    pass
Personal tools
General
About This Wiki