Guest User

Hyper Light Drifter Collectibles Parser v2

a guest
Apr 7th, 2016
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.45 KB | None | 0 0
  1. import re, os
  2.  
  3. def populateResults(regex, line, results):
  4. result = regex.findall(line)
  5. if len(result) > 0:
  6. for element in result:
  7. return results.append(element)
  8.  
  9. def printResults(results, itemName, noItemMessage):
  10. if len(results) > 0:
  11. for element in results:
  12. location = locationRegex.search(element)
  13. exits = exitsRegex.search(element)
  14. if location:
  15. resultString = itemName + ": X: " + location.group(1) + ", Y: " + location.group(2)
  16. if exits:
  17. resultString += ", TO: " + exits.group(1)
  18. print(resultString)
  19.  
  20. else:
  21. print(noItemMessage)
  22.  
  23. hldPath = "C:\\Program Files (x86)\\Steam\\steamapps\\common\\HyperLightDrifter\\"
  24.  
  25. tabletRegex = re.compile("obj,LibrarianTablet.*")
  26. keyRegex = re.compile("obj,DrifterBones_Key.*")
  27. outfitRegex = re.compile("obj,DrifterBones_Outfit.*")
  28. moduleRegex = re.compile("obj,ModuleSocket.*")
  29. gearbitDropRegex = re.compile("obj,Spawner.*Gearbit,.*")
  30. gearbitCrateRegex = re.compile("obj,Spawner.*GearbitCrate.*")
  31. doorRegex = re.compile("obj,door.*")
  32. teleporterRegex = re.compile("obj,Teleporter.*")
  33. elevatorRegex = re.compile("obj,Televator.*")
  34.  
  35. locationRegex = re.compile("\w*,\w*,\d*,(?P<x>-?\d+),(?P<y>-?\d+),.*")
  36. exitsRegex = re.compile(".*rm?=(.*),dr?=.*")
  37.  
  38. for dirs, subdirs, files in os.walk(hldPath):
  39. for name in files:
  40. relDir = os.path.relpath(dirs, hldPath)
  41. relFile = os.path.join(relDir, name)
  42. if name.endswith(".lvl"):
  43. lvlFile = open(os.path.join(dirs, name), "r")
  44. print("====================")
  45. print(relFile)
  46. print("====================")
  47.  
  48. tabletResults = []
  49. keyResults = []
  50. outfitResults = []
  51. moduleResults = []
  52. gearbitDropResults = []
  53. gearbitCrateResults = []
  54. doorResults = []
  55. teleporterResults = []
  56. elevatorResults = []
  57.  
  58. for line in lvlFile:
  59. populateResults(tabletRegex, line, tabletResults)
  60. populateResults(keyRegex, line, keyResults)
  61. populateResults(outfitRegex, line, outfitResults)
  62. populateResults(moduleRegex, line, moduleResults)
  63. populateResults(gearbitDropRegex, line, gearbitDropResults)
  64. populateResults(gearbitCrateRegex, line, gearbitCrateResults)
  65. populateResults(doorRegex, line, doorResults)
  66. populateResults(teleporterRegex, line, teleporterResults)
  67. populateResults(elevatorRegex, line, elevatorResults)
  68.  
  69. print("Items")
  70. print("--------------------")
  71. printResults(tabletResults, "TABLET", "NO TABLETS")
  72. printResults(keyResults, "KEY", "NO KEYS")
  73. printResults(outfitResults, "OUTFIT", "NO OUTFITS")
  74. printResults(moduleResults, "MODULE", "NO MODULES")
  75. printResults(gearbitDropResults, "GEARBIT DROP", "NO GEARBIT DROPS")
  76. printResults(gearbitCrateResults, "GEARBIT CRATE", "NO GEARBIT CRATES")
  77. print()
  78. print("Exits")
  79. print("--------------------")
  80. printResults(doorResults, "DOOR", "NO DOORS")
  81. printResults(teleporterResults, "TELEPORTER", "NO TELEPORTERS")
  82. printResults(elevatorResults, "ELEVATOR", "NO ELEVATORS")
  83.  
  84. print()
Add Comment
Please, Sign In to add comment