JimLahey88

python script for mass editing re5 arc files

Aug 15th, 2026
22
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.16 KB | None | 0 0
  1. from pathlib import Path
  2. import shutil
  3. import subprocess
  4.  
  5. # ==========================================
  6. # CONFIGURATION
  7. # ==========================================
  8.  
  9. BAT_FILE = Path(r"D:\Tools\ARCtool-PC-batch\00arc test\pc-re5.bat")
  10. WORK_DIR = BAT_FILE.parent
  11.  
  12. REPLACEMENT_LMT = Path(
  13. r"D:\Tools\000\pl00action.lmt"
  14. )
  15.  
  16. REPLACEMENT_HIT = Path(
  17. r"D:\Tools\000\pl00.hit"
  18. )
  19.  
  20. ROOT_FOLDER = Path(
  21. r"D:\Games\Resident Evil 5 mods\modmanager\Games\RE5\Mods\Leon over Chris ultimate pack"
  22. )
  23.  
  24. CHRIS_ARCS = {
  25. "uPl00ChrisNormal.arc",
  26. "uPl00ChrisArmorA.arc",
  27. "uPl00ChrisArmorB.arc",
  28. "uPl00ChrisArmorF.arc",
  29. "uPl00ChrisCos1.arc",
  30. "uPl00ChrisCos2.arc",
  31. "uPl00ChrisCos3.arc",
  32. "uPl00ChrisCos4.arc",
  33. "uPl00ChrisEp1.arc",
  34. }
  35.  
  36. # ==========================================
  37. # FIND ARCS
  38. # ==========================================
  39.  
  40. arc_files = []
  41.  
  42. for arc in ROOT_FOLDER.rglob("*.arc"):
  43. if arc.name in CHRIS_ARCS:
  44. arc_files.append(arc)
  45.  
  46. print(f"Found {len(arc_files)} Chris ARC files.")
  47.  
  48. # ==========================================
  49. # PROCESS
  50. # ==========================================
  51.  
  52. for original_arc in arc_files:
  53.  
  54. try:
  55.  
  56. print(f"\nProcessing: {original_arc}")
  57.  
  58. temp_arc = WORK_DIR / original_arc.name
  59.  
  60. if temp_arc.exists():
  61. temp_arc.unlink()
  62.  
  63. extracted_folder = WORK_DIR / temp_arc.stem
  64.  
  65. if extracted_folder.exists():
  66. shutil.rmtree(extracted_folder)
  67.  
  68. # Copy ARC to ARCtool folder
  69. shutil.copy2(original_arc, temp_arc)
  70.  
  71. # Extract ARC
  72. subprocess.run(
  73. [str(BAT_FILE), str(temp_arc)],
  74. cwd=WORK_DIR,
  75. check=True
  76. )
  77.  
  78. # Delete temporary ARC copy
  79. temp_arc.unlink()
  80.  
  81. # Replace pl00action.lmt
  82. target_lmt = (
  83. extracted_folder /
  84. "pawn" / "pl" / "pl00" /
  85. "motion" / "pl00action.lmt"
  86. )
  87.  
  88. if not target_lmt.exists():
  89. raise FileNotFoundError(
  90. f"Missing target file: {target_lmt}"
  91. )
  92.  
  93. shutil.copy2(REPLACEMENT_LMT, target_lmt)
  94.  
  95. # Replace pl00.hit
  96. target_hit = (
  97. extracted_folder /
  98. "pawn" / "pl" / "pl00" /
  99. "soft" / "pl00.hit"
  100. )
  101.  
  102. if not target_hit.exists():
  103. raise FileNotFoundError(
  104. f"Missing target file: {target_hit}"
  105. )
  106.  
  107. shutil.copy2(REPLACEMENT_HIT, target_hit)
  108.  
  109. # Rebuild ARC
  110. subprocess.run(
  111. [str(BAT_FILE), str(extracted_folder)],
  112. cwd=WORK_DIR,
  113. check=True
  114. )
  115.  
  116. rebuilt_arc = WORK_DIR / original_arc.name
  117.  
  118. if not rebuilt_arc.exists():
  119. raise FileNotFoundError(
  120. f"Rebuilt ARC not found: {rebuilt_arc}"
  121. )
  122.  
  123. # Move rebuilt ARC back
  124. shutil.move(str(rebuilt_arc), str(original_arc))
  125.  
  126. # Clean up extracted folder
  127. shutil.rmtree(extracted_folder)
  128.  
  129. print("Success")
  130.  
  131. except Exception as e:
  132. print(f"FAILED: {e}")
  133.  
  134. print("\nFinished.")
Advertisement
Add Comment
Please, Sign In to add comment