Update of /cvsroot/wpdev/xmlscripts/scripts/commands
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22709/commands
Modified Files:
decoration.py info.py
Log Message:
fixes
Index: decoration.py
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/scripts/commands/decoration.py,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** decoration.py 7 Aug 2004 04:02:53 -0000 1.9
--- decoration.py 1 Oct 2004 22:53:24 -0000 1.10
***************
*** 1,7 ****
#===============================================================#
! # ) (\_ | WOLFPACK 13.0.0 Scripts #
! # (( _/{ "-; | Created by: Correa #
! # )).-' {{ ;'` | Revised by: #
! # ( ( ;._ \\ ctr | Last Modification: Created #
#===============================================================#
--- 1,7 ----
#===============================================================#
! # ) (\_ | WOLFPACK 13.0.0 Scripts #
! # (( _/{ "-; | Created by: Correa #
! # )).-' {{ ;'` | Revised by: #
! # ( ( ;._ \\ ctr | Last Modification: Created #
#===============================================================#
***************
*** 10,13 ****
--- 10,18 ----
\description Places decoration read from a xml template found
in wolfpack's data folder.
+ \usage - <code>decoration</code>
+ - <code>decoration save</code>
+ - <code>decoration <map></code>
+
+ Where map is the map you want to decorate (0-3).
\notes The decoration will be read from a XML files called
'data\decoration.?.xml, where ? is the map number'.
***************
*** 21,153 ****
class DecorationHandler( ContentHandler ):
! def __init__(self):
! self.itemid = 0
! self.hue = 0
! self.amount = 0
! self.statements = []
! def startElement( self, name, atts ):
! if name == "item":
! self.itemid = str(atts.getValue("id"));
! if atts.has_key("hue"):
! self.hue = int(hex2dec(str(atts.getValue("hue"))));
! else:
! self.hue = 0
! if atts.has_key("amount"):
! self.amount = int(atts.getValue("amount"));
! else:
! self.amount = 0
! self.statements = []
! elif name == "attribute":
! type = "str"
! if atts.has_key("type"):
! type = str(atts.getValue("type"))
! if atts.has_key("value") and atts.has_key("key"):
! self.statements.append( str(atts.getValue("key")) + "," + type + ","+ str(atts.getValue("value")) )
! elif name == "pos":
! item = wolfpack.additem( "%x" % hex2dec( self.itemid ) )
! if not item or item == None:
! return
! if self.hue > 0:
! item.color = self.hue
! if self.amount > 0:
! item.amount = self.amount
! for p in self.statements:
! parts = p.split(",")
! if hasattr(item, parts[0]):
! if parts[1] == "str":
! value = parts[2]
! elif parts[1] == "int":
! value = int(parts[2])
! setattr(item, parts[0], value)
! x = int( atts.getValue("x") )
! y = int( atts.getValue("y") )
! z = int( atts.getValue("z") )
! map = int( atts.getValue("map") )
! item.moveto( x, y, z, map )
! item.movable = 3 # not movable
! item.decay = 0 # no decay
! item.update()
class DecorationSaveHandler:
! def __init__(self, socket):
! self.socket = socket
! self.maps = {}
!
! def sort( self ):
! self.socket.sysmessage("In sort()")
! it = wolfpack.itemiterator()
! item = it.first
! while item:
! if not self.filter(item):
! self.socket.sysmessage("Adding item")
! if not self.maps.has_key(item.pos.map):
! self.maps[item.pos.map] = {}
! if not self.maps[item.pos.map].has_key(item.id):
! self.maps[item.pos.map][item.id] = []
! self.maps[item.pos.map][item.id].append(item)
! item = it.next
!
! def filter( self, item ):
! if item.multi or item.newbie or item.free or item.spawnregion:
! return True
!
! return False
!
! def save( self ):
! for map in self.maps:
! file = open( "save_decoration.%i.xml" % map, "w" )
! file.write("<decoration>\n")
! for id in self.maps[map]:
! itemsbyhue = {}
! for item in self.maps[map][id]:
! if not itemsbyhue.has_key(item.color):
! itemsbyhue[item.color] = []
! itemsbyhue[item.color].append(item)
! tiledata = wolfpack.tiledata(id)
! for hue in itemsbyhue:
! file.write("""\t<!-- %s -->\n""" % tiledata["name"] )
! if hue != 0:
! file.write("""\t<item id="0x%x" hue="0x%x">\n""" % (id, hue) )
! else:
! file.write("""\t<item id="0x%x">\n""" % id )
! for item in itemsbyhue[hue]:
! pos = item.pos
! file.write("""\t\t<pos x="%i" y="%i" z="%i" map="%i">\n""" % (pos.x, pos.y, pos.z, pos.map) )
! file.write("\t</item>\n")
! file.write("</decoration>\n")
! file.close()
def decoration( socket, command, arguments ):
! if len(arguments) > 0:
! args = str(arguments)
! if args == 'save':
! saveObject = DecorationSaveHandler(socket)
! socket.sysmessage("Sorting items, please wait...")
! saveObject.sort()
! socket.sysmessage("Writting file...")
! saveObject.save()
!
! else:
! parser = xml.sax.make_parser()
! handler = DecorationHandler()
! parser.setContentHandler(handler)
! if wolfpack.hasmap(0):
! socket.sysmessage("Decorating map 0, please wait...")
! parser.parse("data/decoration.0.xml")
! if wolfpack.hasmap(1):
! socket.sysmessage("Decorating map 1, please wait...")
! parser.parse("data/decoration.1.xml")
! if wolfpack.hasmap(2):
! socket.sysmessage("Decorating map 2, please wait...")
! parser.parse("data/decoration.2.xml")
! if wolfpack.hasmap(3):
! socket.sysmessage("Decorating map 2, please wait...")
! parser.parse("data/decoration.3.xml")
def onLoad():
--- 26,175 ----
class DecorationHandler( ContentHandler ):
! def __init__(self):
! self.itemid = 0
! self.hue = 0
! self.amount = 0
! self.statements = []
! def startElement( self, name, atts ):
! if name == "item":
! self.itemid = str(atts.getValue("id"));
! if atts.has_key("hue"):
! self.hue = int(hex2dec(str(atts.getValue("hue"))));
! else:
! self.hue = 0
! if atts.has_key("amount"):
! self.amount = int(atts.getValue("amount"));
! else:
! self.amount = 0
! self.statements = []
! elif name == "attribute":
! type = "str"
! if atts.has_key("type"):
! type = str(atts.getValue("type"))
! if atts.has_key("value") and atts.has_key("key"):
! self.statements.append( str(atts.getValue("key")) + "," + type + ","+ str(atts.getValue("value")) )
! elif name == "pos":
! item = wolfpack.additem( "%x" % hex2dec( self.itemid ) )
! if not item or item == None:
! return
! if self.hue > 0:
! item.color = self.hue
! if self.amount > 0:
! item.amount = self.amount
! for p in self.statements:
! parts = p.split(",")
! if hasattr(item, parts[0]):
! if parts[1] == "str":
! value = parts[2]
! elif parts[1] == "int":
! value = int(parts[2])
! setattr(item, parts[0], value)
! x = int( atts.getValue("x") )
! y = int( atts.getValue("y") )
! z = int( atts.getValue("z") )
! map = int( atts.getValue("map") )
! item.moveto( x, y, z, map )
! item.movable = 3 # not movable
! item.decay = 0 # no decay
! item.update()
class DecorationSaveHandler:
! def __init__(self, socket):
! self.socket = socket
! self.maps = {}
+ def sort( self ):
+ self.socket.sysmessage("In sort()")
+ it = wolfpack.itemiterator()
+ item = it.first
+ while item:
+ if not self.filter(item):
+ self.socket.sysmessage("Adding item")
+ if not self.maps.has_key(item.pos.map):
+ self.maps[item.pos.map] = {}
+ if not self.maps[item.pos.map].has_key(item.id):
+ self.maps[item.pos.map][item.id] = []
+ self.maps[item.pos.map][item.id].append(item)
+ item = it.next
+ def filter( self, item ):
+ if item.multi or item.newbie or item.free or item.spawnregion:
+ return True
+ return False
+ def save( self ):
+ for map in self.maps:
+ file = open( "save_decoration.%i.xml" % map, "w" )
+ file.write("<decoration>\n")
+ for id in self.maps[map]:
+ itemsbyhue = {}
+ for item in self.maps[map][id]:
+ if not itemsbyhue.has_key(item.color):
+ itemsbyhue[item.color] = []
+ itemsbyhue[item.color].append(item)
+ tiledata = wolfpack.tiledata(id)
+ for hue in itemsbyhue:
+ file.write("""\t<!-- %s -->\n""" % tiledata["name"] )
+ if hue != 0:
+ file.write("""\t<item id="0x%x" hue="0x%x">\n""" % (id, hue) )
+ else:
+ file.write("""\t<item id="0x%x">\n""" % id )
+ for item in itemsbyhue[hue]:
+ pos = item.pos
+ file.write("""\t\t<pos x="%i" y="%i" z="%i" map="%i">\n""" % (pos.x, pos.y, pos.z, pos.map) )
+ file.write("\t</item>\n")
+ file.write("</decoration>\n")
+ file.close()
def decoration( socket, command, arguments ):
! if len(arguments) > 0:
! args = str(arguments)
! if args == 'save':
! saveObject = DecorationSaveHandler(socket)
! socket.sysmessage("Sorting items, please wait...")
! saveObject.sort()
! socket.sysmessage("Writting file...")
! saveObject.save()
! return
!
! parser = xml.sax.make_parser()
! handler = DecorationHandler()
! parser.setContentHandler(handler)
!
! try:
! maponly = int(arguments)
!
! if maponly == 0 and wolfpack.hasmap(0):
! socket.sysmessage("Decorating map 0, please wait...")
! parser.parse("data/decoration.0.xml")
! elif maponly == 1 and wolfpack.hasmap(1):
! socket.sysmessage("Decorating map 1, please wait...")
! parser.parse("data/decoration.1.xml")
! elif maponly == 2 and wolfpack.hasmap(2):
! socket.sysmessage("Decorating map 2, please wait...")
! parser.parse("data/decoration.2.xml")
! elif maponly == 3 and wolfpack.hasmap(3):
! socket.sysmessage("Decorating map 3, please wait...")
! parser.parse("data/decoration.3.xml")
!
! return
! except ValueError:
! pass
!
! if wolfpack.hasmap(0):
! socket.sysmessage("Decorating map 0, please wait...")
! parser.parse("data/decoration.0.xml")
! if wolfpack.hasmap(1):
! socket.sysmessage("Decorating map 1, please wait...")
! parser.parse("data/decoration.1.xml")
! if wolfpack.hasmap(2):
! socket.sysmessage("Decorating map 2, please wait...")
! parser.parse("data/decoration.2.xml")
! if wolfpack.hasmap(3):
! socket.sysmessage("Decorating map 2, please wait...")
! parser.parse("data/decoration.3.xml")
def onLoad():
Index: info.py
===================================================================
RCS file: /cvsroot/wpdev/xmlscripts/scripts/commands/info.py,v
retrieving revision 1.25
retrieving revision 1.26
diff -C2 -d -r1.25 -r1.26
*** info.py 1 Oct 2004 16:34:10 -0000 1.25
--- info.py 1 Oct 2004 22:53:24 -0000 1.26
***************
*** 100,103 ****
--- 100,111 ----
def statictileinfo( socket, model, pos, tile ):
+ # Find the given static tile
+ statics = wolfpack.statics(pos.x, pos.y, pos.map, True)
+ color = 0
+
+ for stile in statics:
+ if stile['id'] == model and stile['z'] == pos.z:
+ color = stile['color']
+
gump = cGump( 0, 0, 0, 0, 40 )
***************
*** 118,121 ****
--- 126,131 ----
# Wet ? Impassable ? At least these are the most interesting
gump.addCroppedText( 50, 220, 230, 40, "Properties: "+ tile['flagnames'], 0x834 )
+
+ gump.addText( 50, 240, "Color : 0x%x" % color, 0x834 )
# OK button
|