Guest User

pfp example

a guest
Apr 8th, 2017
84
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # -*- coding: iso-8859-15 -*
  2.  
  3. #notepad++ start with cmd.exe /K python -i "$(FULL_CURRENT_PATH)"
  4. import glob
  5. import os
  6. import sys
  7. import pfp
  8. import binascii
  9.  
  10.  
  11. #######setup
  12. i=0
  13. skip=0
  14.  
  15.  
  16. def getScriptPath():
  17.     return os.path.dirname(os.path.realpath(sys.argv[0]))
  18.  
  19. fo = open(getScriptPath() +"/pathTestDRSFolder.txt", "r+")
  20. pathToDRS =  fo.readline()
  21.    
  22.    
  23.  
  24.  
  25. ########pfp stuff
  26. #print(ni.uk._pfp__show(level=0, include_offset=False))
  27.    
  28.    
  29. ########functions
  30.  
  31. def charArray2HexStr(binarys):
  32.     ret=""
  33.     for b in binarys:
  34.         ret+=b.toHex()+" "
  35.     return ret
  36.  
  37. def getDirWithFiles( root ):
  38.     """ finds folders with a file in them """
  39.     for root, dirs, files in os.walk(root):
  40.         if files:
  41.             yield root
  42.            
  43. def getFilesIn( root ):
  44.     """ finds files in root (not recursive) """
  45.     for item in os.listdir(root):                       #list everything in dir
  46.         if os.path.isfile(os.path.join(root, item)):    #filter files
  47.             if(item.endswith(".drs")):              #filter drs
  48.                 if(item!="unit_tuskgiant.drs" and item!= "unit_wrathblade.drs"):            #filter old files
  49.                     yield item
  50.  
  51.            
  52. def analyzeFolder(f):
  53.     global i,sum, modSkip
  54.     print("#########" + f)
  55.     content = getFilesIn(f)
  56.     for g in content:                               #for every file
  57.         print(g)                                    #print file
  58.         print(i, end="\r") 
  59.         i+=1
  60.         if(i>skip):
  61.             #print("\n"+f +"/" +g)                      #print position
  62.             dom = pfp.parse(data_file=f+"/"+g, template_file=getScriptPath() +"/drs.bt")
  63.            
  64.            
  65.             for node in dom.Nodes:
  66.                 tmp=""
  67.                 for s in node.Name.Text:
  68.                     tmp+=s.toStr()
  69.                
  70.                 if(tmp=="CGeoMesh"):
  71.                     for face in node.Mesh.Faces:
  72.                         print("f " +(face.Indices[0]+1).toStr() +" " +(face.Indices[1]+1).toStr() +" " +(face.Indices[2]+1).toStr())
  73.                    
  74.                     for v in node.Mesh.Vertices:
  75.                         print("v " +v.X.toStr() +" " +v.Y.toStr() +" " +v.Z.toStr())
  76.                     break
  77.                    
  78.                
  79.                                
  80.                            
  81.  
  82.  
  83.                            
  84. groups=getDirWithFiles(pathToDRS)
  85. for f in groups:
  86.     analyzeFolder(f)
RAW Paste Data