From 81ac026e1f04f1c40eb246e21e9aac25c8ec8f92 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Mon, 11 Apr 2011 18:33:05 +0300 Subject: updated example map generator python script --- genmap.py | 91 ++++++++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 70 insertions(+), 21 deletions(-) (limited to 'genmap.py') diff --git a/genmap.py b/genmap.py index 8f7d421b1..aaa35690f 100755 --- a/genmap.py +++ b/genmap.py @@ -1,17 +1,12 @@ -#!/usr/bin/python +#!/usr/bin/python2 -" -This is an example script that generates some valid map data. -" +# This is an example script that generates some valid map data. import struct import random - -def getrand(): - i = random.randrange(0,2) - if i==0: - return 0 - return 254 +import os +import sys +from pnoise import pnoise """ Map format: @@ -25,18 +20,72 @@ ffff = -1 0001 = 1 """ -f = open("map/sectors/00000000/ffff", "wb") +def to4h(i): + s = ""; + s += '{0:1x}'.format((i>>12) & 0x000f) + s += '{0:1x}'.format((i>>8) & 0x000f) + s += '{0:1x}'.format((i>>4) & 0x000f) + s += '{0:1x}'.format((i>>0) & 0x000f) + return s + +def getrand(): + i = random.randrange(0,2) + if i==0: + return 0 + return 254 + +def writeblock(mapdir, px,py,pz, version): + sectordir = mapdir + "/sectors/" + to4h(px) + to4h(pz) + + try: + os.makedirs(sectordir) + except OSError: + pass + + f = open(sectordir+"/"+to4h(py), "wb") + + if version == 0: + # version + f.write(struct.pack('B', 0)) + # is_underground + f.write(struct.pack('B', 0)) + elif version == 2: + # version + f.write(struct.pack('B', 2)) + # is_underground + f.write(struct.pack('B', 0)) + + for z in range(0,16): + for y in range(0,16): + for x in range(0,16): + b = 254 + r = 20.0*pnoise((px*16+x)/100.,(pz*16+z)/100.,0) + r += 5.0*pnoise((px*16+x)/25.,(pz*16+z)/25.,0) + #print("r="+str(r)) + y1 = py*16+y + if y1 <= r-3: + b = 0 #stone + elif y1 <= r: + b = 1 #grass + elif y1 <= 1: + b = 9 #water + if version == 0: + # Material content + f.write(struct.pack('B', b)) + elif version == 2: + # Material content + f.write(struct.pack('B', b)) + # Brightness + f.write(struct.pack('B', 15)) -# version -f.write(struct.pack('B', 2)) -# is_underground -f.write(struct.pack('B', 0)) + f.close() -for i in range(0,16*16*16): - # Material content - f.write(struct.pack('B', getrand())) - # Brightness - f.write(struct.pack('B', 15)) +mapdir = "map" -f.close() +for z in range(-2,3): + for y in range(-1,2): + for x in range(-2,3): + print("generating block "+str(x)+","+str(y)+","+str(z)) + writeblock(mapdir, x,y,z, 0) +#END -- cgit v1.2.3