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, edit the regionconfig.py file and then run regiongen.exe
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