Git Product home page Git Product logo

rpkg-tool's People

Contributors

2kpr avatar anthonyfuller avatar atampy25 avatar dafitius avatar grappigegovert avatar h3ftw avatar notexe avatar orfeasz avatar rdil avatar tomumk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

rpkg-tool's Issues

[BUG] Filter by function in REPO tab makes the application crash.

Describe the bug
In the REPO tab using the Filter by function before loading in RPKG's will crash the application

To Reproduce
Steps to reproduce the behavior:

  1. Start the program.
    (Optional: load in RPKG)
  2. Go to REPO.
  3. Type somthing in the Filter by box.
  4. Application will crash.

RPKG tool version: [e.g. 2.14]
V2.23.0

[BUG] Encrypt/decrypt XTEA just straight up is broken

Don't forget tony

To Reproduce
Decrypt packagedefinition, change patchlevels to 10000, re-encrypt, watch as game does not work.

Expected behavior
I expected the feature to do what it says it does.

Screenshots
No.

RPKG tool version: [e.g. 2.14]
Apparently any version since the refactor

Hitman Version:
Any version

Additional context
Fix it bony

[BUG]Load REPO from Hitman 3 get crash

Describe the bug
Crash program

To Reproduce
Steps to reproduce the behavior:

  1. Start program.
  2. Import RPKG folder (Hitman 3 files)
  3. Go to REPO and click "load repo from loaded rpkgs"
  4. Get crash

Expected behavior
Load repo and get crash.

2.24.0 [e.g. 2.14]

Hitman 3 (Epic, 1.120v)

[BUG] Rebuilt Custom .PRIM Doesn't Retain Exact Weight Values or Normalized 1.0 Weights

Describe the bug
RPKG Tool doesn't seem to retain weight values or the "1.0" Normalization of weights when rebuilding custom .PRIMs.
As a result, since weights are no longer normalized, in game it causes models to look "spiky" and/or "wavy".

To Reproduce

  1. With RPKG Tool export .PRIM as .glb
  2. With Blender:
    a. Open .glb in Blender
    b. Import or create custom mesh
    c. Join it to original mesh (and delete original geometry)
    d. Parent it to the armature and weight paint, or transfer weights from original mesh
    e. Limit total of weights to 6 and Normalize All.
    f. Export glTF. Format: glTF Binary, Transform:+Y Up Unchecked, Animation: Skinning: Include All Bone Influences
  3. With RPKG Tool rebuild .PRIM
  4. Put created .rpkg into Runtime folder and see how in game the mesh will looks "spiky" and/or "wavy".
  5. Import the .rpkg created by RPKG Tool that contains the custom .PRIM
  6. Export that .PRIM as .glb.
  7. Import that .glb into Blender and observe how there are many vertices whose weights are no longer normalized and the values have changed ever so slightly.

Expected behavior
Retain vertex weights and Normalization.

Screenshots
Left is my original, Normalized vertices, before conversion. (1.0)
Right is the same model converted with RPKG Tool, then exported. (0.996)
Weights
Shirt

RPKG tool version: 2.16.1

Hitman Version: Any

[BUG] Clicking on a value in a H3 temp with no platformSpecificPropertyValues errors

Describe the bug
When opening a TEMP such as 00CA03401224DCBB.TEMP from chunk11patch1 when clicking on a value with no platformSpecificPropertyValues causes RPKG to error and you have to force close the application.

To Reproduce
Steps to reproduce the behavior:

  1. Load all Runtime RPKGs
  2. Search for 00CA03401224DCBB.TEMP (should be in chunk11patch1)
  3. Open it Recursive or Non-Recursive
  4. Click on CrowdConfig_custom_falcon and it errors

Expected behavior
Loads all values properly with no error

Screenshots
Screenshot of error:
Image of Error
Excerpt of error: Error: nPropertyID for platformSpecificPropertyValues (0) could not be found.

RPKG tool version: 2.16.0

Additional context
CrowdConfig_custom_falcon option was one example, possibly exists for others.

[BUG] Application Crash when exporting PRIM

Describe the bug
Extracting PRIM assets to GLB from chunk0patch2.rpkg using the Closed Technical Test rpkg's (not current LIVE release, the freelancer mode) seems to consistently cause the application to crash. If the dev's of rpkg-tool no longer have the rpkg's from the Closed Technical Test, I can likely provide the rpkg causing the crash.

Issue occurs when attempting to 'Mass Extract > Export Mesh Primitives (PRIM) to GLB from RPKGs in Folder' or by importing the rpkg, and then right click the PRIM assets inside the rpkg in the Resource View.

To Reproduce
Steps to reproduce the behavior:

  1. Start the program.
  2. Import chunk0patch2.rpkg from CTT folder.
  3. Expand chunk0patch2.rpkg in Resource View, Right click PRIM.
  4. Select either EXTRACT ALL option, pick output folder. Will extract as usual for a few %.
  5. The application will crash.

Screenshots
image

RPKG tool version: V2.23.0

Hitman Version: Hitman 3 Playtest (Closed Technical Test)

[BUG] Mass WWEM extraction fails upon reaching certain file

Describe the bug
rpkg-cli encounters an error when extracting certain sounds.

To Reproduce
Steps to reproduce the behavior:

  1. Open a terminal in the rpkg-cli directory
  2. Run something like: rpkg-cli.exe -output_path "M:\Ambience\Hitman 3.100.0\Sources" -extract_wwem_to_ogg_from "G:\Epic Games\HITMAN3\Runtime"
  3. Wait a couple of minutes
  4. Note error: Error: wem file M:\Ambience\Hitman 3.100.0\Sources\WWEM\chunk0.rpkg\assembly\sound\wwise\originals\voices\unknown\play_sfx_setpiece_trap_electricity_waterpuddle_boilingwaterloop_4sec.wav].pc_wem\play_sfx_setpiece_trap_electricity_waterpuddle_boilingwaterloop_4sec.wav].pc_wem.wem could not be created.

Expected behavior
All sounds extract without errors.

Screenshots
See attached log.txt.

RPKG tool version: 2.18.0

Hitman Version: Hitman 3 Epic v3.100.0

Additional context
I tried using the GUI but the extraction process failed after a similar period of time. I also get a similar error when attempting WWES extraction: Error: meta file M:\Ambience\Hitman 3.100.0\Sources\WWES\chunk0.rpkg\assembly\sound\wwise\originals\voices\english(us)\ai\gecko_maintenance_fch01\gen_grt47_gecko_maintenance_fch01\gen_grt47_mtnc_gecko_maintenance_fch01_gecko_maintenance_fch01_001.wav].pc_wes_009F9532CD4AC114.WWES could not be created.

Crash on start

When I click on the RPKG tool execute, it immediately crashes saying it stopped working. When I click the other execute, windows says it misses Kernel32.DLL. Please don't tell me the tool is not supported for Windows 7 because I tried installing windows 10 for like 20 times and I can't just get it to work for unknown reasons :'(

[BUG] H2016/2 LOCR format unsupported

Describe the bug

rpkg crashes when trying to open a H2016/2 LOCR file, most likely due to a different format.

To Reproduce
Try opening the dynamic resources.

Expected behavior
It unpacks without crashing.

RPKG tool version: 2.14

Hitman Version: 2016 steam

[BUG] Unable to build non-patch RPKGs

Describe the bug
When attempting to build a non-patch RPKG (such as rebuilding a dynamic resources RPKG), rpkg (and rpkg-cli) stops working after realizing that the .meta is not a patch file.

To Reproduce
Steps to reproduce the behavior:

  1. Extract the latest dynamic resources RPKG from %appdata%\Io Interactive\HITMAN3\TemporaryStorage
  2. Attempt to rebuild the RPKG, either via:
    a. RPKG's Generate > Generate RPKG From Folder menu
    b. rpkg-cli's -generate_rpkg_from option
  3. Observe that "RPKGv2 file [whatever the meta file was saved as].meta is not a patch file" is logged if using CLI, or observe that the progress bar in RPKG simply never goes away
  4. Observe that RAM used by RPKG/rpkg-cli continues to increase until the application is forcibly closed.

Expected behavior
In RPKG v2.23, everything behaves as expected. A RPKG is generated and is able to be read by the game.

RPKG tool version: Broken in 2.25 and 2.24, works in 2.23.

Hitman Version: H3

[BUG] Unable to Properly Edit Colors in Brick/Entity Editor

Describe the bug
It has been brought to my attention some users aren't able to change the colors in the brick/entity editor.

To Reproduce
Steps to reproduce the behavior:

  1. Load all Runtime RPKGs
  2. Search for 00AF710334C8F975.TEMP. head_shaman, in chunk9.
  3. Right click, edit in Brick/Entity Editor.
  4. In the left window, expand
  5. Select Head_Shaman (4) (0)
  6. According to one user, in the right window the colors Names are shown as "Weiß".
    On my computer, where it works, these colors should read #FFC1C1D4 and a blue tint in the Preview window.
  7. The same user tries to edit the color, either by changing the Name # or picking a color. It will initially show the color they pick and the Name #, but once they click onto another setting the Preview becomes "x-ed out", and the Name becomes blank.
    (Shown in screenshot below)
  8. If a package is compiled from this file, the game will show a pitch black texture.

Expected behavior
Being able to change colors in the brick/entity editor.

Screenshots

RPKG tool version: 2.16.0

[BUG] Tooltips are drawn behind main window

Describe the bug
The tooltip that appears when you hover over a result in the deep search tab anything in the left pane gets drawn behind the main window, and even behind other applications.
edit: It looks like this holds for any tooltip.

To Reproduce
Steps to reproduce the behavior:

  1. Use Deep search to search for something with a long name/value
  2. Resize the RPKG window so that the name/value would extend beyond its bounds
  3. Hover your cursor over it

Expected behavior
The tooltip is drawn above everything else.

Screenshots
Clipboard06

Clipboard01

RPKG tool version: [e.g. 2.14]
I've tested it on 2.25.0 and 2.33.0 and got the same results

[BUG] Refuses to open

switched over to a new graphics card and now I can't open RPKG Tool at all. The loading wheel pops up 3 times and then it simply dissapears from the task manager. I have Windows 10 Pro installed, GTX 1650, i5 2500 @ 3.30ghz, reinstalled multiple times and it still won't open

the JSON file looks like this:

{
"InputFolder": "D:\RPKG Editor",
"OutputFolder": "D:\RPKG Editor",
"ColorTheme": "Dark/Red"
}

[BUG] RPKG Tool fails to rebuild RTLV from JSON it has just extracted

When I extract RTLV from RPKGs in folder I cannot rebuild them from JSON to RTLV.

Steps to reproduce the behavior:

  1. Mass Extract -> Extract RTLV to JSON From RPKGs in Folder -> Runtime with all RPKGs
  2. Rebuild -> Rebuild RTLV From Folder
  3. Error: "Failed to rebuild JSON to RTLV!"

Version:
RPKG v2.32.1 GUI
HITMAN 3 3.170.1 Steam

I've noticed that the RTLV file RPKG Tool fails to rebuild is located in chunkX.rpkg folders (e. g. chunk0).

[BUG] Mass Extract issue with Hitman (2016) Steam edition

"Mass Extract issue with Hitman (2016) Steam edition"

To Reproduce
Steps to reproduce the behavior:

  1. In RPKG V2.17.4, select "Mass Extract -> RTLV or LOCR"
  2. In folder selector, navigate to Runtime folder and select it
  3. In folder selector, navigate to output folder and select it
  4. RTLV extraction crash the program, LOCR extraction stuck at dlc5.rpkg (timer stop, no crash, no freeze, can cancel)

Expected behavior
Should extract those files or show the content in Hex view.

RPKG tool version: 2.17.4

Hitman Version: 2016 (latest Steam)

Additional context
Manually select RTLV file in the tree view also crash the RPKG tool, LOCR dlc5.pkg or up throw an error.

System.Runtime.InteropServices.SEHException (0x80004005):
rpkg.MainWindow.generate_localization_string(String rpkg_file_name, String hash_string, String resource_type)
rpkg.MainWindow.MainTreeView_AfterSelect(Object sender, TreeViewEventArgs e)
System.Windows.Forms.TreeView.OnAfterSelect(TreeViewEventArgs e)
System.Windows.Forms.TreeView.TvnSelected(NMTREEVIEW* nmtv)
System.Windows.Forms.TreeView.WmNotify(Message& m)
System.Windows.Forms.TreeView.WndProc(Message& m)
System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

[BUG] Non-h3 textures crash RPKG

Describe the bug
Any attempt to obtain information about textures results in the gui crashing without any errors.

To Reproduce
Open any rpkg that has TEXT files inside and left click on any. After a little while where nothing is happening the gui closes.

Expected behavior
even if textures cant be shown, the app should not crash and if if crashes it should display some indication as to what went wrong.

Screenshots
N/A

RPKG tool version:
2.17.2 and locally compiled version of latest code as well.
Hitman Version:
2016 steam

Additional context
I got the source code and did a debug build which didn't run until i added the three
resourceLib dlls from the other project that are also included in the binary release.
upon debugging i found what appears to be a serious error in the size of one variable. In particular looking at text.cpp line 293 we find variable text_texture_data_offset that gets a very large number (order 0x10000000) assigned to it.

After that, variable text_texture_data_size is assigned a relatively small number (order 0x1000) from which the first value is subtracted which seems wrong and yields a huge value for text_texture_data_size. this variable is used to allocate a vector in line (approx) 322. later in line (approx) 346 this huge data set is moved some 13 bytes which causes a memory access exception and a crash.

Also i noticed that for the texture i was checking the value of text_mips_count is set to zero and arrays of that size are used to access their first element which is invalid. Either allocate room for one element if size is zero or check for size before accessing array values.

My knowledge of texture programming is close to zero, so the changes i made to prevent crashes may be wrong, but the app no longer crashes and there are no indications of things being wrong, but i am not qualified to be the judge of that. Still, if anybody is interested I can post the code or even submit a PR.

I really like this tool and I am having a lot of fun with it. It is perfect for a newbie like me. Thank you.
-Paxcut

[BUG] The RKPG tool freezes when exporting a scenario .brick TEMP

I’m not sure if this is a bug or if it’s with my game version.

Basically I’m trying to edit a scenario .brick file using the TEMP/TBLU editor and generate a TEMP file from it, but the tool freezes when generating the TEMP file. This applies to all the chunkXpatch2 scenario .brick TEMPs in the game.
Editing other .brick TEMPs, like the globaldata .brick or any outfits .brick works fine.
I’ve tried circumventing this problem by extracting the .brick as a QN json and using QuickEntity to rebuild it. However QuickEntity also freezes when rebuilding a scenario .brick.

I’ve never had this problem until I updated to 3.100. Is this a problem with my game, or the RKPG tool?

[BUG] Extraction of non-base hash depends also extracts from RPKGs outside of the provided input folder

Describe the bug
When the command -extract_non_base_hash_depends_from "..\Runtime" -filter "00F824DC4C92290B" -output_path temp is run, the output ALLDEPENDS folder contains files from an RPKG located in .\Mods\Hitman 2016 Agent 47 Face Details\chunk0 which is, needless to say, not located in ..\Runtime.

tree /F output in .

Expected behaviour
RPKG extracts dependencies from the provided folder.

Actual behaviour
RPKG extracts dependencies from the provided folder and from a folder not located in said provided folder.

RPKG tool version: Latest artifact (v2.21.1)

Hitman Version: H3, Steam

Additional context
This bug report is based on observed behaviour on another user's machine.

In the tree output, ignore the cached depends which include the erroneous files - they are not the cause of the issue, they are a symptom; the cached version is simply copied from temp.

RPKG CLI on Linux doesnt launch

/download/rpkg_v2.27.0-cli ❯ ./rpkg-cli.exe                                    
rpkg-cli 2.27.0 - Works with RPKGv1 (GKPR) and RPKGv2 (2KPR) files.0130:fixme:msvcp:_Locinfo__Locinfo_ctor_cat_cstr (000000000011F8A0 1 C) semi-stub

--------------------------------------------------------------------------------
Note: All the information used to build this program was gleaned
      in a completely 'clean room' environment.
--------------------------------------------------------------------------------
Usage:

  Interactive Mode:
    - RPKG can be used in interactive mode by running:
        rpkg-cli.exe -i
    - Interactive mode lets you execute endless CLI commands in succession by way of
      a console interface (RPKG>), all the time keeping previously loaded RPKG files
      resident in rpkg-cli.exe's memory, speeding up successive commands immensely.
  Licenses:
    - You can view the licenses for this software by running:
        rpkg-cli.exe -licenses
  Drag And Drop Options:
    - RPKG files can be dragged and dropped directly onto the rpkg-cli.exe file.
        This causes rpkg-cli.exe to automatically enter RPKG extraction mode and
        will fully extract all the hash files/resources from each RPKG dragged
        and dropped upon rpkg-cli.exe. It mimics (-extract_from_rpkg) in behaviour.
        One or more RPKG files can be dragged and dropped onto rpkg-cli.exe at a time.

  Command Line Options:
    -compute_ioi_hash <string>
        Computes the IOI style truncated md5 hash/runtimeid from a string.
    -decrypt_packagedefinition_thumbs <path to file>
        Decrypts packagedefinitions.txt / thumbs.dat files.
    -encrypt_packagedefinition_thumbs <path to file>
        Encrypts packagedefinitions.txt / thumbs.dat files.
    -export_map <path to folder containing RPKG files>
        Scans a directory, commonly Hitman's Runtime dir, and imports and
        scans all available RPKG files and utilizes them during the extraction of a Hitman
        map (entity/brick) whose hash is specified -filter. The map (entity/brick) is then
        extracted to a folder in the form of a number 3D glTF GLB file(s) (non-textured) and
        Godot v4 scene and project files.
    -export_map_textured <path to folder containing RPKG files>
        Scans a directory, commonly Hitman's Runtime dir, and imports and
        scans all available RPKG files and utilizes them during the extraction of a Hitman
        map (entity/brick) whose hash is specified -filter. The map (entity/brick) is then
        extracted to a folder in the form of a number 3D glTF GLB file(s) (textured) and
        Godot v4 scene and project files. Mainly for use on smaller maps (entity/brick).
    -extract_all_hash_depends_from <path to folder containing RPKG files>
        Extracts all of the recursive hash depends, specified by -filter,
        of a given hash file/resource.
        Scans a directory, commonly Hitman's Runtime dir, and imports and
        scans all available RPKG files for dependency information.
    -extract_entity_to_qn <path to folder containing RPKG files>
        Scans a directory, commonly Hitman's Runtime dir, and imports and
        scans all available RPKG files and their patch deletion lists for the existence
        of the hash file/resource, specified by -filter, and extracts and converts a given
        entity (TEMP/TBLU) to a QN (QuickEntity v2.1) JSON.
    -extract_asva_to_json <path to folder containing RPKG files>
        Scans a directory, commonly Hitman's Runtime dir, and imports and
        scans all available RPKG files and for the existence of ASVA hash files/resources,
        specified by -filter, and converts them to ASVA JSON(s).
    -extract_material_to_json <path to folder containing RPKG files>
        Scans a directory, commonly Hitman's Runtime dir, and imports and
        scans all available RPKG files and for the existence of MATI hash files/resources,
        specified by -filter, and converts them to MATERIAL JSON(s) that encapsulate
        MATI/MATT/MATB files all in one.
    -extract_mati_to_json <path to RPKG file>
        Extracts one or more hash file/resources, specified by -filter, from the input RPKG file
        and converts them to MATI JSON(s).
    -extract_non_base_hash_depends_from <path to folder containing RPKG files>
        Extracts all of the recursive hash barring those in chunk0 and chunk1, specified by -filter,
        of a given hash file/resource.
        Scans a directory, commonly Hitman's Runtime dir, and imports and
        scans all available RPKG files for dependency information.
    -extract_all_hash_depends_prim_models_from <path to folder containing RPKG files>
        Extracts all of the recursive PRIM Model(s) (GLB/TGA) hash depends,
        specified by -filter, of a given hash file/resource.
        Scans a directory, commonly Hitman's Runtime dir, and imports and
        scans all available RPKG files for dependency information.
    -extract_direct_hash_depends_from <path to folder containing RPKG files>
        Extracts the direct hash depends, specified by -filter,
        of a given hash file/resource.
        Scans a directory, commonly Hitman's Runtime dir, and imports and
        scans all available RPKG files for dependency information.
    -extract_direct_hash_depends_prim_models_from <path to folder containing RPKG files>
        Extracts all of the direct PRIM Model(s) (GLB/TGA) hash depends,
        specified by -filter, of a given hash file/resource.
        Scans a directory, commonly Hitman's Runtime dir, and imports and
        scans all available RPKG files for dependency information.
    -extract_from_rpkg <path to RPKG file>
        Extracts all hash linked files/resources from an RPKG file.
    -extract_from_rpkgs <path to folder containing RPKGs>
        Extracts all hash linked files/resources from a folder of RPKG files.
    -extract_latest_hash <path to folder containing RPKG files>
        Scans a directory, commonly Hitman's Runtime dir, and imports and
        scans all available RPKG files and their patch deletion lists for the existence
        of the hash file(s)/resource(s), specified by -filter, and determines the RPKG file that
        contains the 'latest' (game used) version of that hash file/resource and extracts it.
    -extract_gfxf_from <path to folder containing RPKG files>
        Extracts all hash linked files/resources located in the GFXF files
        and unpacks them to GFX and if available DDS/TGA files from all
        the RPKG files in a given directory.
    -extract_ores_from <path to folder containing RPKG files>
        Extracts all hash linked files/resources located in the ORES files
        by their full IOI path names from all the RPKG files in a given directory.
    -extract_wwem_to_ogg_from <path to folder containing RPKG files>
        Extracts all hash linked files/resources of type WWEM to their
        full IOI internal Wwise file paths / names. It also converts
        the WWES (*.wem) files directly to *.ogg files for easy listening.
    -extract_wwes_to_ogg_from <path to folder containing RPKG files>
        Extracts all hash linked files/resources of type WWES to their
        full IOI internal Wwise file paths / names. It also converts
        the WWES (*.wem) files directly to *.ogg files for easy listening.
    -extract_wwev_to_ogg_from <path to folder containing RPKG files>
        Extracts all hash linked files/resources of type WWEV to their
        partial IOI internal Wwise file paths / names. It also converts
        the WWEV (*.wem) files directly to *.ogg files for easy listening.
    -extract_dlge_to_json_from <path to folder containing RPKG files>
        Extracts all hash linked files/resources of type DLGE from
        all the RPKG files in a given directory and then decrypts
        them in memory and outputs / formats them as JSON files.
    -extract_locr_to_json_from <path to folder containing RPKG files>
        Extracts all hash linked files/resources of type LOCR from
        all the RPKG files in a given directory and then decrypts
        them in memory and outputs / formats them as JSON files.
    -extract_prim_textured_from <path to RPKG file>
        Extracts hash linked files/resources of type PRIM specified by
        -filter from specified RPKG file and then converts them (and the
        textures associated with the PRIM) all in memory and then
        outputs / formats them as a single 3D glTF GLB file(s).
    -extract_prim_to_glb_from <path to RPKG file>
        Extracts hash linked files/resources of type PRIM specified by
        -filter from specified RPKG file and then converts them in memory
        and outputs / formats them as a single 3D glTF GLB file(s).
    -extract_prim_to_obj_from <path to RPKG file>
        Extracts hash linked files/resources of type PRIM specified by
        -filter from specified RPKG file and then converts them in memory
        and outputs / formats them as a single 3D OBJ file(s).
    -extract_rtlv_to_json_from <path to folder containing RPKG files>
        Extracts all hash linked files/resources of type RTLV from
        all the RPKG files in a given directory and then decrypts
        them in memory and outputs / formats them as JSON files.
        and outputs / formats them as a single 3D OBJ file(s).
    -extract_sdef_to_json <path to RPKG file>
        Extracts one or more hash file/resources, specified by -filter, from the input RPKG file
        and converts them to SDEF JSON(s).
    -extract_prim_model_from <path to RPKG file>
        Extracts hash linked files/resources of type PRIM specified by
        -filter from specified RPKG file and then converts them in memory
        and outputs / formats them as a GLB/TGA file(s).
    -extract_all_prim_model_of_temp_from <path to RPKG file>
        Extracts hash linked files/resources of type PRIM which are hash
        depends of TEMP hash files specified by -filter from specified RPKG
        file and then converts them in memory and outputs / formats them
        as GLB/TGA file(s).
    -extract_all_text_from <path to folder containing RPKG files>
        Extracts all hash linked files/resources of type TEXT/TEXD from
        all the RPKG files in a given directory and then decrypts
        them in memory and outputs / formats them as TGA files.
    -extract_text_from <path to RPKG file>
        Extracts all hash linked files/resources of type TEXT/TEXD from
        all the RPKG files in a given directory and then decrypts
        them in memory and outputs / formats them as TGA files.
    -extract_to_rt_json <path to RPKG file>
        Extracts hash linked files/resources of types supported by ResourceTool
        where the hash files are specified by -filter and the Hitman game version
        is specified by -version and then converts them in memory and outputs / formats them
        as RT JSON file(s).
    -filter <hash filter>
        Filters hash linked files/resources by string filter.
        String filter can be a full hash value, partial hash value,
        the hash resource type, partial hash resource type, WWES or WWEV
        partial of full file/resource name, etc...
        Can accept multiple filters: -filter <filter1>,<filter2>,...
    -generate_rpkg_from <path to folder to generate rpkg from>
        Generates a RPKG file from hash file(s) in a given folder and all subfolders.
        The folder name is used for the filename of the generated RPKG file.
    -generate_rpkg_quickly_from <path to folder to generate rpkg from>
        Same as -generate_rpkg_from but with faster generation.
    -hash_depends <path to folder containing RPKG files>
        Lists the forward and reverse depends of a given hash file/resource.
        Scans a directory, commonly Hitman's Runtime dir, and imports and
        scans all available RPKG files for dependency information and lists the results.
    -hash_probe <path to folder containing RPKG files>
        Probes RPKG files for hash files/resources and displays key data points.
        Scans a directory, commonly Hitman's Runtime dir, and imports and
        scans all available RPKG files for the existence of the hash file/resource.
    -hash_meta_to_json <path to hash *.meta file>
        Converts a Hash *.meta file into an easily editable JSON file (*.meta.JSON).
    -hex_search <hex string>
    -import_map <path to folder containing RPKG files>
        Scans a directory, commonly Hitman's Runtime dir, and imports and
        scans all available RPKG files and utilizes them during the comparison of a Hitman
        map (entity/brick) whose hash is specified -filter, during the map import process.
        During the import process, the matrix transforms are parsed from the Godot v4 project
        files, located in the path specified by -map_path. Finally, any changes found in the
        map are then written to a QN (QuickEntity v2.1) JSON, in the format specified by -qn_format.
    -json_to_hash_meta <path to hash *.meta.JSON file>
        Converts a Hash meta JSON file (*.meta.JSON) into a Hash *.meta file.
    -json_to_asva <path to ASVA.JSON file(s) / folder>
        Converts ASVA JSON file(s) into ASVA file(s) (plus .meta file(s)).
        When a folder is passed to the function it is recursively scanned for all available
        ASVA.JSON files and converts them all to ASVA file(s) (plus .meta file(s)).
    -json_to_material <path to MATERIAL.JSON file(s) / folder>
        Converts MATERIAL JSON file(s) into MATI/MATT/MATB file(s) (plus .meta file(s)).
        When a folder is passed to the function it is recursively scanned for all available
        MATERIAL.JSON files and converts them all to MATI/MATT/MATB file(s) (plus .meta file(s)).
    -json_to_mati <path to MATI.JSON file(s) / folder>
        Converts MATI JSON file(s) into MATI file(s) (along with .meta file(s)).
        When a folder is passed to the function it is recursively scanned for all available
        MATI.JSON files and converts them all to MATI file(s) (along with .meta file(s)).
    -json_to_sdef <path to SDEF.JSON file(s) / folder>
        Converts SDEF JSON file(s) into SDEF file(s) (along with .meta file(s)).
        When a folder is passed to the function it is recursively scanned for all available
        SDEF.JSON files and converts them all to SDEF file(s) (along with .meta file(s)).
    -latest_hash <path to folder containing RPKG files>
        Scans a directory, commonly Hitman's Runtime dir, and imports and
        scans all available RPKG files and their patch deletion lists for the existence
        of the hash file/resource, specified by -filter, and determines the RPKG file that
        contains the 'latest' (game used) version of that hash file/resource.
    -mati_to_json <path to MATI file(s) / folder>
        Converts MATI file(s) (make sure their .meta file(s) are in the same directory) into
        easily editable MATI JSON file(s).
        When a folder is passed to the function it is recursively scanned for all available.
        MATI files (and their .meta files) and converts them all to MATI JSON file(s).
    -map_filters <comma separated parameters for map extraction>
        boxes=true or boxes=false - Enable/Disable volume boxes in the exported map
        spheres=true or spheres=false - Enable/Disable volume spheres in the exported map
        visible=true or visible=false - Enable/Disable nodes with m__bVisible==False from export
    -map_path <path to map folder containing Godot v4 project files>
    -output_path <path to output folder>
        Specifies output folder path to use instead of the current directory.
    -qn_format <QN JSON format>
        Options are: entity or patch
    -rebuild_wwev_in <path to folders containing wem files>
        Rebuilds sets of individual Wwise .wem files that were previously
        extracted with (-extract_wwev_from). The folder specified by the
        argument can contain any number of sub folders, where each subfolder's
        name is linked to an individual WWEV that will be built from the *.wem
        files in that folder.
    -rebuild_gfxf_in <path to folders containing GFFX/(DDS/TGA) files>
        Rebuilds sets of GFX and if available DDS/TGA files that were previously
        extracted with (-extract_gfxf_from). The folder specified by the
        argument can contain any number of sub folders, where each subfolder's
        name is linked to an individual GFXF that will be built from
        the GFX and if available DDS/TGA files in that folder.
    -rebuild_dlge_from_json_from <path to folder containing JSON (DLGE) files>
        Rebuilds DLGE files/resources from JSON (DLGE) files that were previously
        extracted with (-extract_dlge_to_json_from).
    -rebuild_locr_from_json_from <path to folder containing JSON (LOCR) files>
        Rebuilds LOCR files/resources from JSON (LOCR) files that were previously
        extracted with (-extract_locr_to_json_from).
    -rebuild_prim_in <path to folder containing PRIM files>
        Rebuilds PRIM files/resources from GLB (PRIM) files that were previously
        extracted with (-extract_prim_to_glb_from).
    -rebuild_rtlv_from_json_from <path to folder containing JSON (RTLV) files>
        Rebuilds RTLV files/resources from JSON (RTLV) files that were previously
        extracted with (-extract_rtlv_to_json_from).
    -rebuild_text_in <path to folder containing TEXT/TEXD files>
        Rebuilds TEXT/TEXD files/resources from TGA (TEXT/TEXD) files that were previously
        extracted with (-extract_text_from or -extract_all_text_from).
    -regex_search <regex>
        Specifies the regex which is used to find within hash files/resources.
    -sdef_to_json <path to SDEF file(s) / folder>
        Converts SDEF file(s) (make sure their .meta file(s) are in the same directory) into
        easily editable SDEF JSON file(s).
        When a folder is passed to the function it is recursively scanned for all available.
        SDEF files (and their .meta files) and converts them all to SDEF JSON file(s).
    -search_rpkg <path to RPKG file>
        Specifies RPKG file whose hash files/resources will to be searched through.
    -text_search <text string>
        Specifices the text string to find within hash files/resources.
    -version <text string>
        Specifices the ResourceTool Hitman game version. Options are: HM2016, HM2, or HM3.
  Examples:
    Computes the IOI style truncated md5 hash/runtimeid from a string:
        rpkg-cli.exe -compute_ioi_hash "[assembly:/_PRO/Scenes/Missions/CoastalTown/Mission01.entity].
pc_entitytemplate"
    Decrypts packagedefinitions.txt / thumbs.dat files:
        rpkg-cli.exe -decrypt_packagedefinition_thumbs packagedefinition.txt
    Encrypts packagedefinitions.txt / thumbs.dat files:
        rpkg-cli.exe -encrypt_packagedefinition_thumbs packagedefinition.txt.decrypted
    Extracts all hash linked files/resources from an RPKG file:
        rpkg-cli.exe -extract_from_rpkg "C:\Program Files\Epic Games\HITMAN3\Runtime\chunk0.rpkg"
    Extracts all hash linked files/resources from an RPKG file to an output folder:
        rpkg-cli.exe -output_path "R:\my\output\path" -extract_from_rpkg "C:\Program Files\Epic Games\
HITMAN3\Runtime\chunk0.rpkg"
    Extracts one hash linked files/resources from an RPKG file by hash filter:
        rpkg-cli.exe -filter 00123456789ABCDE -extract_from_rpkg "C:\Program Files\Epic Games\HITMAN3\
Runtime\chunk0.rpkg"
    Extracts multiple hash linked files/resources from an RPKG file by hash filter:
        rpkg-cli.exe -filter 00123456789ABCDE,00123456789ABCDE -extract_from_rpkg "C:\Program Files\Ep
ic Games\HITMAN3\Runtime\chunk0.rpkg"
    Extracts all hash linked files/resources from an RPKG file by hash resource type filter:
        rpkg-cli.exe -filter ORES -extract_from_rpkg "C:\Program Files\Epic Games\HITMAN3\Runtime\chun
k0.rpkg"
    Extracts all hash linked files/resources from an RPKG file by hash resource types ORES, REPO, and
JSON:
        rpkg-cli.exe -filter ORES,REPO,JSON -extract_from_rpkg "C:\Program Files\Epic Games\HITMAN3\Ru
ntime\chunk0.rpkg"
    Generates a RPKG file from hash file(s) in a given folder and all subfolders:
        rpkg-cli.exe -generate_rpkg_from chunk0patch1
    Generates a RPKG file from hash file(s) in a given folder and all subfolders but q u i c k l y:
        rpkg-cli.exe -generate_rpkg_quickly_from chunk0patch1
    Converts a Hash *.meta file into an easily editable JSON file (*.meta.JSON):
        rpkg-cli.exe -hash_meta_to_json "C:\00123456789ABCDE.meta"
    Converts a Hash meta JSON file (*.meta.JSON) into a Hash *.meta file:
        rpkg-cli.exe -json_to_hash_meta "C:\00123456789ABCDE.meta.JSON"
    Extracts all of the recursive hash depends, specified by -filter, of a given hash file/resource:
        rpkg-cli.exe -filter 00123456789ABCDE -extract_all_hash_depends_from "C:\Program Files\Epic Ga
mes\HITMAN3\Runtime"
    Extracts all of the recursive hash depends barring those in chunk0/chunk1, specified by -filter, o
f a given hash file/resource:
        rpkg-cli.exe -filter 00123456789ABCDE -extract_non_base_hash_depends_from "C:\Program Files\Ep
ic Games\HITMAN3\Runtime"
    Extracts all of the recursive PRIM Model(s) (GLB/TGA) hash depends, specified by -filter, of a giv
en hash file/resource:
        rpkg-cli.exe -filter 00123456789ABCDE -extract_all_hash_depends_prim_models_from "C:\Program F
iles\Epic Games\HITMAN3\Runtime"
    Extracts all of the direct hash depends, specified by -filter, of a given hash file/resource:
        rpkg-cli.exe -filter 00123456789ABCDE -extract_direct_hash_depends_from "C:\Program Files\Epic
 Games\HITMAN3\Runtime"
    Extracts all of the direct PRIM Model(s) (GLB/TGA) hash depends, specified by -filter, of a given
hash file/resource:
        rpkg-cli.exe -filter 00123456789ABCDE -extract_direct_hash_depends_prim_models_from "C:\Progra
m Files\Epic Games\HITMAN3\Runtime"
    Extracts PRIM (to 3D glTF GLB) hash linked files/resources from an RPKG file by hash filter:
        rpkg-cli.exe -filter 00123456789ABCDE -extract_prim_to_glb_from "C:\Program Files\Epic Games\H
ITMAN3\Runtime\chunk0.rpkg"
    Extracts PRIM (to 3D OBJ) hash linked files/resources from an RPKG file by hash filter:
        rpkg-cli.exe -filter 00123456789ABCDE -extract_prim_to_obj_from "C:\Program Files\Epic Games\H
ITMAN3\Runtime\chunk0.rpkg"
    Extracts all hash linked files/resources located in the ORES files from all the RPKG files in a gi
ven directory:
        rpkg-cli.exe -extract_ores_from "C:\Program Files\Epic Games\HITMAN3\Runtime"
    Extracts all hash linked files/resources located in the ORES files from all the RPKG files in a gi
ven directory to an output folder:
        rpkg-cli.exe -output_path "R:\my\output\path" -extract_ores_from "C:\Program Files\Epic Games\
HITMAN3\Runtime"
    Extracts and decrypts (to JSON) all hash linked files/resources of type DLGE from all the RPKG fil
es in a given directory:
        rpkg-cli.exe -extract_dlge_to_json_from "C:\Program Files\Epic Games\HITMAN3\Runtime"
    Extracts and decrypts (to JSON) all hash linked files/resources of type DLGE from all the RPKG fil
es in a given directory to an output folder:
        rpkg-cli.exe -output_path "R:\my\output\path" -extract_dlge_to_json_from "C:\Program Files\Epi
c Games\HITMAN3\Runtime"
    Extracts and decrypts (to JSON) all hash linked files/resources of type LOCR from all the RPKG fil
es in a given directory:
        rpkg-cli.exe -extract_locr_to_json_from "C:\Program Files\Epic Games\HITMAN3\Runtime"
    Extracts and decrypts (to JSON) all hash linked files/resources of type LOCR from all the RPKG fil
es in a given directory to an output folder:
        rpkg-cli.exe -output_path "R:\my\output\path" -extract_locr_to_json_from "C:\Program Files\Epi
c Games\HITMAN3\Runtime"
    Extracts and decrypts (to JSON) all hash linked files/resources of type RTLV from all the RPKG fil
es in a given directory:
        rpkg-cli.exe -extract_rtlv_to_json_from "C:\Program Files\Epic Games\HITMAN3\Runtime"
    Extracts and decrypts (to JSON) all hash linked files/resources of type RTLV from all the RPKG fil
es in a given directory to an output folder:
        rpkg-cli.exe -output_path "R:\my\output\path" -extract_rtlv_to_json_from "C:\Program Files\Epi
c Games\HITMAN3\Runtime"
    Rebuilds sets DLGE files from JSON files that were previously created with (-extract_dlge_to_json_
from):
        rpkg-cli.exe -rebuild_dlge_from_json_from "R:\DLGE"
    Rebuilds sets DLGE files from JSON files that were previously created with (-extract_dlge_to_json_
from) to an output folder:
        rpkg-cli.exe -output_path "R:\my\output\path" -rebuild_dlge_from_json_from "R:\DLGE"
    Rebuilds sets LOCR files from JSON files that were previously created with (-extract_locr_to_json_
from):
        rpkg-cli.exe -rebuild_locr_from_json_from "R:\LOCR"
    Rebuilds sets LOCR files from JSON files that were previously created with (-extract_locr_to_json_
from):
        rpkg-cli.exe -rebuild_locr_from_json_from "R:\LOCR"
    Rebuilds sets RTLV files from JSON files that were previously created with (-extract_rtlv_to_json_
from) to an output folder:
        rpkg-cli.exe -output_path "R:\my\output\path" -rebuild_rtlv_from_json_from "R:\RTLV"
    Rebuilds sets RTLV files from JSON files that were previously created with (-extract_rtlv_to_json_
from) to an output folder:
        rpkg-cli.exe -output_path "R:\my\output\path" -rebuild_rtlv_from_json_from "R:\RTLV"
    Extracts all hash linked files/resources of type WWEM from all the RPKG files in a given directory
:
        rpkg-cli.exe -extract_wwem_to_ogg_from "C:\Program Files\Epic Games\HITMAN3\Runtime"
    Extracts all hash linked files/resources of type WWEM from all the RPKG files in a given directory
 to an output folder:
        rpkg-cli.exe -output_path "R:\my\output\path" -extract_wwem_to_ogg_from "C:\Program Files\Epic
 Games\HITMAN3\Runtime"
    Extracts all hash linked files/resources of type WWES from all the RPKG files in a given directory
:
        rpkg-cli.exe -extract_wwes_to_ogg_from "C:\Program Files\Epic Games\HITMAN3\Runtime"
    Extracts all hash linked files/resources of type WWES from all the RPKG files in a given directory
 to an output folder:
        rpkg-cli.exe -output_path "R:\my\output\path" -extract_wwes_to_ogg_from "C:\Program Files\Epic
 Games\HITMAN3\Runtime"
    Extracts all hash linked files/resources of type WWEV from all the RPKG files in a given directory
:
        rpkg-cli.exe -extract_wwev_to_ogg_from "C:\Program Files\Epic Games\HITMAN3\Runtime"
    Extracts all hash linked files/resources of type WWEV from all the RPKG files in a given directory
 to an output folder:
        rpkg-cli.exe -output_path "R:\my\output\path" -extract_wwev_to_ogg_from "C:\Program Files\Epic
 Games\HITMAN3\Runtime"
    Rebuilds sets of individual Wwise .wem files that were previously extracted with (-extract_wwev_fr
om):
        rpkg-cli.exe -rebuild_wwev_in "R:\WWEV"
    Rebuilds sets of individual Wwise .wem files that were previously extracted with (-extract_wwev_fr
om) to an output folder:
        rpkg-cli.exe -output_path "R:\my\output\path" -rebuild_wwev_in "R:\WWEV"
    Lists and extracts the forward depends of a given hash file/resource:
        rpkg-cli.exe -filter 00123456789ABCDE -extract_direct_hash_depends "C:\Program Files\Epic Game
s\HITMAN3\Runtime"
    Lists and extracts the forward depends of two hash files/resources:
        rpkg-cli.exe -filter 00123456789ABCDE,00123456789ABCDE -extract_direct_hash_depends "C:\Progra
m Files\Epic Games\HITMAN3\Runtime"
    Lists the forward and reverse depends of a given hash file/resource:
        rpkg-cli.exe -filter 00123456789ABCDE -hash_depends "C:\Program Files\Epic Games\HITMAN3\Runti
me"
    Lists the forward and reverse depends of two hash files/resources:
        rpkg-cli.exe -filter 00123456789ABCDE,00123456789ABCDE -hash_depends "C:\Program Files\Epic Ga
mes\HITMAN3\Runtime"
    Probes RPKG files for hash files/resources and displays key data points:
        rpkg-cli.exe -filter 00123456789ABCDE -hash_probe "C:\Program Files\Epic Games\HITMAN3\Runtime
"
    Probes RPKG files for hash files/resources and displays key data points:
        rpkg-cli.exe -filter 00123456789ABCDE,00123456789ABCDE -hash_probe "C:\Program Files\Epic Game
s\HITMAN3\Runtime"
    Search a RPKG file's hash files/resources by hex string:
        rpkg-cli.exe -hex_search 00112233445566 -search_rpkg "C:\Program Files\Epic Games\HITMAN3\Runt
ime\chunk0.rpkg"
    Search a RPKG file's hash files/resources by regex:
        rpkg-cli.exe -regex_search "assembly:[\w/_]+" -search_rpkg "C:\Program Files\Epic Games\HITMAN
3\Runtime\chunk0.rpkg"
    Search a RPKG file's hash files/resources by text string:
        rpkg-cli.exe -text_search assembly -search_rpkg "C:\Program Files\Epic Games\HITMAN3\Runtime\c
hunk0.rpkg"
    Search a RPKG file's hash files/resources by regex and filter by type ORES:
        rpkg-cli.exe -filter ORES -regex_search "assembly:[\w/_.]+" -search_rpkg "C:\Program Files\Epi
c Games\HITMAN3\Runtime\chunk0.rpkg"
Press any key to continue... ⏎                                                                        

Originally posted by @maplepy in #83 (comment)

[BUG] Loading RPKGs fails

Describe the bug
Loading RPKGs immediately crashes the (CLI) application. This is reproducible for all users if loading the dynamic resources RPKG, but for some users is reproducible for all RPKGs.

To Reproduce

  • Be an affected user
  • Load a certain RPKG

(can't be more specific)

Expected behavior
The CLI doesn't crash.

RPKG tool version: Issue introduced by c3910c7.

Hitman Version: H3, but not sure if this matters.

[BUG] Mass Extract Not Operating as Expected

"Mass Extract -> Sounds (WWES) To OGG To IOI Paths From RPKGs In Folder" does not extract all the RPKGs in a folder

To Reproduce
Steps to reproduce the behavior:

  1. In RPKG V2.17.3, select "Mass Extract -> Sounds (WWES) To OGG To IOI Paths From RPKGs In Folder"
  2. In folder selector, navigate to Runtime folder and select it
  3. In folder selector, navigate to output folder and select it
  4. Wait for it to complete (took me about 9 hours with a slow hard drive)
  5. In file explorer, navigate to output folder
  6. Observe only some chunks are present (for me it was Chunk0, 1, 2.patch, and 15)
  7. In RPGK, observe that all chunks are present

Expected behavior
Should have folders for every chunk.

Screenshots
image

RPKG tool version: 2.17.3

Hitman Version: epic

Right click bug

image

Right click on rpkg tool bugged if you open all of game rpkg files. No extract menu shown.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.