Guest User

Untitled

a guest
Jan 15th, 2026
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. # patcher.ps1
  2. # Script en PowerShell para traducir Indiana Jones Last Crusade versión Steam al español
  3.  
  4. $steamlessApp = "${env:UserProfile}\Downloads\Steamless.v3.1.0.5.-.by.atom0s\Steamless.CLI.exe"
  5. $steamGameFolder = "${env:ProgramFiles(x86)}\Steam\steamapps\common\Indiana Jones and the Last Crusade"
  6. $steamPathFileName = "${steamGameFolder}\Indiana Jones and the Last Crusade.exe"
  7.  
  8. $copiedFileName = "${PWD}\Indiana Jones and the Last Crusade.exe"
  9. $unpackedFileName = "${PWD}\Indiana Jones and the Last Crusade.exe.unpacked.exe"
  10.  
  11. $firstNewLflFileName = "${PWD}\INDY3\00.LFL"
  12. $secondNewLflFileName = "${PWD}\INDY3\01.LFL"
  13. $outputFileName = "${PWD}\Last Crusade Spanish.exe"
  14.  
  15. $skip = 162056
  16. $count = 6295
  17. $offset = 59359
  18.  
  19. $messageOffset = 144421
  20. $messageBytes = [byte[]](0xa8) + [System.Text.Encoding]::ASCII.GetBytes("Seguro que quieres salir? (S/N)S") + [byte[]](0x00,0x00,0x00,0x00)
  21.  
  22. try {
  23. Copy-Item "$steamPathFileName" "$copiedFileName"
  24. & "${steamlessApp}" "${copiedFileName}"
  25.  
  26. $patchedGameData = [System.IO.File]::ReadAllBytes($unpackedFileName)
  27. $firstNewLflData = [System.IO.File]::ReadAllBytes($firstNewLflFileName)
  28. $secondNewLflData = [System.IO.File]::ReadAllBytes($secondNewLflFileName)
  29.  
  30. $sizeBytes = [BitConverter]::GetBytes($secondNewLflData.Length)
  31.  
  32. if ($firstNewLflData.Length -ne $count) {
  33. Write-Host "Error: " + $firstNewLflFileName + " should be exactly " + $count + " bytes in length."
  34. exit
  35. }
  36.  
  37. # Sobreescribir dentro el nuevo archivo 00.LFL
  38. $firstNewLflData.CopyTo($patchedGameData, $skip)
  39. # Actualizar el checksum que es el size del archivo 01.LFL
  40. for ($i = 0; $i -lt $sizeBytes.Length; $i++) {
  41. $patchedGameData[$offset + $i] = $sizeBytes[$i]
  42. }
  43.  
  44. # Traduce mensaje de salir
  45. [Array]::Copy($messageBytes, 0, $patchedGameData, $messageOffset, $messageBytes.Length)
  46.  
  47. # Escribir el resultado
  48. [System.IO.File]::WriteAllBytes($outputFileName, $patchedGameData)
  49.  
  50. # Eliminar archivos intermedios
  51. Remove-Item "$unpackedFileName"
  52. Remove-Item "$copiedFileName"
  53.  
  54. Write-Host "Listo. Archivo guardado en $outputFileName. No distribuir!"
  55. }
  56. catch {
  57. Write-Host "Error: $($_.Exception.Message)"
  58. }
  59.  
Advertisement
Add Comment
Please, Sign In to add comment