Advertisement
Guest User

Untitled

a guest
Feb 12th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.14 KB | None | 0 0
  1. import sys
  2. import struct
  3. from struct import pack
  4. import os
  5. from util import *
  6.  
  7.  
  8. nud = open(sys.argv[1], "rb+")
  9.  
  10. texID = int(sys.argv[2])
  11.  
  12. #setup are arrays
  13. boneCount = []
  14. vertexStart_array=[]
  15. vertexAmount_array=[]
  16. vertexSize_array=[]
  17. polyStart_array=[]
  18. polyAmount_array=[]
  19. polySize_array=[]
  20. vertexAddStart_array=[]
  21. UVSize_array=[]
  22. polyName_array=[]
  23. singleBind_array=[]
  24. texturePropertiesL1Start_array=[]
  25. texturePropertiesL2Start_array=[]
  26. texturePropertiesL3Start_array=[]
  27. texturePropertiesL4Start_array=[]
  28. textureNuml1_array=[]
  29. textureNuml2_array=[]
  30. textureNuml3_array=[]
  31. textureNuml4_array=[]
  32.  
  33. nud.seek(0x4)
  34.  
  35. fileSize = readu32be(nud)
  36. #print("File Size is %i bytes" % (fileSize))
  37. nud.seek(2,1)
  38. polysets = readu16be(nud)
  39. nud.seek(4,1)
  40. polyClumpStart = (readu32be(nud) + 0x30)
  41. polyClumpSize = readu32be(nud)
  42. vertexClumpStart = (polyClumpStart + polyClumpSize)
  43. vertexClumpSize = readu32be(nud)
  44. vertexAddStart = (vertexClumpSize + vertexClumpStart)
  45. vertexAddClumpSize = readu32be(nud)
  46. nameClumpStart = (vertexAddClumpSize + vertexAddStart)
  47. nud.seek(0x10,1)
  48. objCount = 0
  49.  
  50. for z in range(polysets):
  51.         nud.seek(0x20,1)
  52.         #print(hex(nud.tell()))
  53.         polynamestart = readu32be(nud)
  54.         indentifiera = readu32be(nud)
  55.         singleBind = readu16be(nud)
  56.         polyamount = readu16be(nud)
  57.         positionb = readu32be(nud)
  58.         objCount = (objCount + polyamount)
  59.         for s in range(polyamount):
  60.                 polyName_array.append(polynamestart)
  61.                 singleBind_array.append(singleBind)
  62. for p in range(objCount):
  63.         polyStart = (readu32be(nud) + polyClumpStart)
  64.         vertexStart = (readu32be(nud) + vertexAddStart)
  65.         vertexAddStart = (readu32be(nud) + vertexAddClumpSize)
  66.         vertexAmount = readu16be(nud)
  67.         #print("There is %i Vertexs" % int(vertexAmount))
  68.         vertexSize = readByte(nud)
  69.         uvSize = readByte(nud)
  70.         textureLayer1Properties = readu32be(nud)
  71.         textureLayer2Properties = readu32be(nud)
  72.         textureLayer3Properties = readu32be(nud)
  73.         textureLayer4Properties = readu32be(nud)
  74.         polyAmount = readu16be(nud)
  75.         #print("There is %i Faces" % int(polyAmount))
  76.         polySize = readByte(nud)
  77.         polyFlag = readByte(nud)
  78.         nud.seek(0xC,1)
  79.         vertexStart_array.append(vertexStart)
  80.         polyStart_array.append(polyStart)
  81.         vertexAddStart_array.append(vertexAddStart)
  82.         vertexAmount_array.append(vertexAmount)
  83.         polyAmount_array.append(polyAmount)
  84.         vertexSize_array.append(vertexSize)
  85.         UVSize_array.append(uvSize)
  86.         polySize_array.append(polySize)
  87.         texturePropertiesL1Start_array.append(textureLayer1Properties)
  88.         texturePropertiesL2Start_array.append(textureLayer2Properties)
  89.         texturePropertiesL3Start_array.append(textureLayer3Properties)
  90.         texturePropertiesL4Start_array.append(textureLayer4Properties)
  91.  
  92. for z in range(objCount):
  93.         nud.seek(texturePropertiesL1Start_array[z])
  94.         nud.seek(8,1)
  95.         texSomethingCount = readu16be(nud)
  96.         texPropCount = readu16be(nud)
  97.         nud.seek(20,1)
  98.         for x in range(texPropCount):
  99.                 nud.seek(2,1)
  100.                 texNum = readu16be(nud)
  101.                 if texNum != 0:
  102.                         nud.seek(-2,1)
  103.                         store = texID * 4
  104.                         nud.write(pack("B", store))
  105.                         nud.seek(-1,1)
  106.                 texNum = readu16be(nud)
  107.                 print(hex(texNum))
  108.                 if x == 1:
  109.                         textureNuml1_array.append(texNum)
  110.                 if x == 2:
  111.                         textureNuml2_array.append(texNum)
  112.                 if x == 3:
  113.                         textureNuml3_array.append(texNum)
  114.                 if x == 4:
  115.                         textureNuml4_array.append(texNum)
  116.                 nud.seek(20,1)
  117.         headerRead = 0x20
  118.         while headerRead == 0x20:
  119.                 headerRead = readu32be(nud)
  120.                 texPropNameStart = readu32be(nud)
  121.                 nud.seek(24,1)
  122.                 backUp = nud.tell()
  123.                 nud.seek(nameClumpStart + texPropNameStart)
  124.                 texPropName = getString(nud)
  125.                 nud.seek(backUp)
  126.         if texturePropertiesL2Start_array[z] != 0:
  127.                 nud.seek(texturePropertiesL2Start_array[z])
  128.                 nud.seek(8,1)
  129.                 texSomethingCount = readu16be(nud)
  130.                 texPropCount = readu16be(nud)
  131.                 nud.seek(20,1)
  132.                 for x in range(texPropCount):
  133.                         nud.seek(2,1)
  134.                         texNum = readu16be(nud)
  135.                         nud.seek(20,1)
  136.                 headerRead = 0x20
  137.                 while headerRead == 0x20:
  138.                         headerRead = readu32be(nud)
  139.                         texPropNameStart = readu32be(nud)
  140.                         nud.seek(24,1)
  141.                         backUp = nud.tell()
  142.                         nud.seek(nameClumpStart + texPropNameStart)
  143.                         texPropName = getString(nud)
  144.                         nud.seek(backUp)
  145.         if texturePropertiesL3Start_array[z] != 0:
  146.                         nud.seek(texturePropertiesL2Start_array[z])
  147.                         nud.seek(8,1)
  148.                         texSomethingCount = readu16be(nud)
  149.                         texPropCount = readu16be(nud)
  150.                         nud.seek(20,1)
  151.                         for x in range(texPropCount):
  152.                                 nud.seek(2,1)
  153.                                 texNum = readu16be(nud)
  154.                                 nud.seek(20,1)
  155.                         headerRead = 0x20
  156.                         while headerRead == 0x20:
  157.                                 headerRead = readu32be(nud)
  158.                                 texPropNameStart = readu32be(nud)
  159.                                 nud.seek(24,1)
  160.                                 backUp = nud.tell()
  161.                                 nud.seek(nameClumpStart + texPropNameStart)
  162.                                 texPropName = getString(nud)
  163.                                 nud.seek(backUp)
  164.         if texturePropertiesL4Start_array[z] != 0:
  165.                         nud.seek(texturePropertiesL2Start_array[z])
  166.                         nud.seek(8,1)
  167.                         texSomethingCount = readu16be(nud)
  168.                         texPropCount = readu16be(nud)
  169.                         nud.seek(20,1)
  170.                         for x in range(texPropCount):
  171.                                 nud.seek(2,1)
  172.                                 texNum = readu16be(nud)
  173.                                 nud.seek(20,1)
  174.                         headerRead = 0x20
  175.                         while headerRead == 0x20:
  176.                                 headerRead = readu32be(nud)
  177.                                 texPropNameStart = readu32be(nud)
  178.                                 nud.seek(24,1)
  179.                                 backUp = nud.tell()
  180.                                 nud.seek(nameClumpStart + texPropNameStart)
  181.                                 texPropName = getString(nud)
  182.                                 nud.seek(backUp)
  183. nud.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement