RegionGenerator
From OpenSimulator
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