th3w1zard1

Members
  • Content Count

    55
  • Joined

  • Last visited

  • Days Won

    7

Posts posted by th3w1zard1


  1. On 8/9/2024 at 12:41 AM, Sith Holocron said:

    So I have the ZIP version but I now get this error. Suggestions?

     

    Error.png

    That messagebox should be impossible. There are pre-validators that run before an installation even starts to prevent issues such as that.

    Given that instruction #2 is attempting to move

    <<modDirectory>>/tslrcm_*/*

     straight into the game folder, my best guess is you have a folder named 'tslrcm_something' that's empty in your mod directory. If your log files say 'newSourcePath' or something in the exception that would confirm. So the solution would be to cleanup any folders in your `mod directory` and ensure you have permission. Try running the built-in permission fixer tool. Alternatively, try running modsync as root, or as admin on windows (or vice versa if the error occurred with escalated privileges).

    If that doesn't work you're looking at several bypass solutions:

    The easiest would be to first install with the EXE, then run the install exactly as you did, and press the X in the upper right when the error pops up. Doing so should abort the install while still in the installation loop, which IIRC should then consider tslrcm an installed component. If by some chance you don't get the same error again (which again should be impossible: the installer is made to reproduce the same results every time), there are no functional game changes or stipulations caused by unzipping over prior tslrcm installs, since the EXE installer is just a glorified unzipper itself.

    The other slightly more involved workaround would be modify the instructions.

    1. Click TSLRCM on the lefthand side of the app.

    2. Click 'raw edit' tab.

    3. Delete everything that is below the following:

    [[thisMod]]
    Guid = "d2bf7bbb-4757-4418-96bf-a9772a36a262"
    Name = "The Sith Lords Restored Content Mod 2022"
    Author = "zbyl2, DarthStoney, Hassat Hunter & VarsityPuppet"
    Category = "Essential"
    Description = "The whole reason why you would mod KOTOR 2, the legendary mod that includes bugfixes, restored content, and altered scenes to return the game to what it was meant to be. This mod isn't just essential--it's mandatory."
    Directions = "Executable. Recall that M4-78 is incompatible with this build; do not use it alongside TSLRCM! Remember also that the Workshop version of this or any other mod is NOT to be used!"
    IsSelected = true
    Language = ["All"]
    ModLink = ["https://deadlystream.com/files/file/578-tsl-restored-content-mod/", "https://drive.google.com/drive/folders/156EqzmEESrxksm1f0cPl2tMUf-AOUt8Y?usp=sharing"]
    [[thisMod.Instructions]]
    Action = "Extract"
    Overwrite = true
    Source = ["<<modDirectory>>/tslrcm_*.zip"]

    instruction #2 is the move action. So it, and everything under it will be deleted, leaving you with a singular 'extract'.

    Why is it this convoluted/necessary and why is it not easy to skip a mod?

    The whole point of the app is to guarantee that any user using the same options as another user are guaranteed to aggregate the exact same installation. ModSync uses identifiers to determine what's installed, to determine what all can and can't be installed, and it also affects the install order. If you were to deselect tslrcm, all the mods that rely on it would no longer be triggered.

    If you pin some error logs here I can hopefully fix the bug for you and the next unfortunate soul. I am unable to reproduce the issue on my machine so it very well could be platform-specific.


  2. On 7/31/2024 at 11:42 AM, Mayank90 said:

    hey please help these are the only errors i cant figure out


    [7/31/2024 10:06:30 PM] [Error] 
    [7/31/2024 10:06:30 PM] Exception: InvalidOperationException - Operation is not valid due to the current state of the object.
    [7/31/2024 10:06:30 PM] Stack trace:
       at SharpCompress.Common.SevenZip.ArchiveReader.ReadDatabase(IPasswordProvider pass)
       at SharpCompress.Archives.SevenZip.SevenZipArchive.LoadFactory(Stream stream)
       at SharpCompress.Archives.SevenZip.SevenZipArchive.LoadEntries(IEnumerable`1 volumes)
       at SharpCompress.Archives.AbstractArchive`2..ctor(ArchiveType type, SourceStream srcStream)
       at SharpCompress.Archives.SevenZip.SevenZipArchive.Open(Stream stream, ReaderOptions readerOptions)
       at KOTORModSync.Core.ComponentValidation.IsPathInArchive(String relativePath, String archivePath)
       at KOTORModSync.Core.ComponentValidation.IsSourcePathInArchives(String sourcePath, List`1 allArchives, Instruction instruction)
       at KOTORModSync.Core.ComponentValidation.VerifyExtractPaths()

    [7/31/2024 10:06:30 PM] [Error] Some components failed to validate. Check the output/console window for details.
    If you are seeing this as an end user you most likely need to whitelist KOTORModSync and HoloPatcher in your antivirus, or download the missing mods.

    It's failing to pre-validate that the file in the archive being installed indeed exists in the archive. My guess is the archive you downloaded is corrupted/incorrect. Try running again with 'verbose' mode enabled, see if the logs have any more useful information.

    On 7/21/2024 at 11:12 PM, Natharus87 said:

    Hey, looks like Senni Vek Restoration was updated and no longer works with the installer. Getting this error "Issue: Failed to find 'Senni Vek Restoration\Senni Vek Restoration\For Override\tat_senni.utc' in any archives!"

    this is now fixed

    On 7/19/2024 at 3:47 PM, Sith Holocron said:

    Hello @th3w1zard1.  First time user of KOTORModSync here.

    I've had a few issues that I've mostly been able to resolve on my own but one final one seems to remain.  KOTORModSync isn't recognizing TSLRCM correctly.

    At first I thought it may be something as simple as a missing underscore in the file name or the EXE file not being in a ZIP file but those attempted workarounds haven't succeeded.  Would you helping an old man figure out what he's doing wrong? Hopefully the attached picture may give you a clue.

    KOTORModSyncError.png

    I was given permission to reupload as a .zip. You need to use the ZIP version of TSLRCM, The EXE version is NOT compatible.

    You can find a link in the app itself, click on 'tslrcm' at the left side and the link is at the top of the Summary tab.

     


  3. On 5/15/2024 at 9:47 AM, Constructour said:

    Hey th3w1zard1, I'm having some issues successfully completing the Pre-install Validation step without errors because the tool cannot find two mods, specifically Scoundrel DS Underwear Fix.7z and Bastila Shan (clothing) HD.rar.

    I've downloaded all of the mods from the Mod Build page, and they are all on the dowloaded mods directory I have pointed the tool to. However, it still cannot detect that the Scoundrel DS Underwear mod is there. I am not sure that the Bastila Shan HD mod is part of the build, as well.

    The output log from the Pre-Validation attempt:
    [5/15/2024 10:37:12 AM] [Note] - No mod chosen: Select your mod directory first.
    [5/15/2024 10:37:13 AM] Finding duplicate case-insensitive folders/files in the install destination...
    [5/15/2024 10:37:13 AM] Checking for duplicate components...
    [5/15/2024 10:37:13 AM] Ensuring both the mod directory and the install directory are writable...
    [5/15/2024 10:37:13 AM] Validating individual components, this might take a while...
    [5/15/2024 10:37:13 AM] [Error]
    Name: Male Scoundrel Underwear Fix
    Instruction #1: 'Extract'
    Issue: Missing Required Archives: [<<modDirectory>>\Scoundrel DS Underwear Fix.7z]
    [5/15/2024 10:37:13 AM] [Error]
    Name: Bastila Shan HD
    Instruction #1: 'Extract'
    Issue: Missing Required Archives: [<<modDirectory>>\Bastila Shan HD (clothing).rar]
    [5/15/2024 10:37:13 AM] [Error] Some components failed to validate. Check the output/console window for details.
    If you are seeing this as an end user you most likely need to whitelist KOTORModSync and HoloPatcher in your antivirus, or download the missing mods.

    Is the instruction file up to date, perhaps? And as these are the only two missing mods, could I install anyway and play  without them?z

    Thank you for your help.

    Edit for more info: Looking at the mod that the mod build calls for, I think the .toml is calling for the wrong mod. It's calling for Male Scoundrel Underwear Fix by Stellar Exile instead of Scoundrel Trousers by DarkBirdie.

    Edit for yet more info: I figured out how to use the the entries in the loaded .toml to find the missing mods and add them and I am now getting no errors. I also added the Scoundrel Trousers mod manually. Nonetheless, I believe there is a dysync between the KOTOR1_SPOILER_FREE.toml file and the current list on Neocities.

    Oops, you're 100% correct. I had the wrong scoundrel mod in there compared to neocities. Has been fixed on the main page.


  4. On 12/19/2022 at 8:17 PM, Leilukin said:

    TSLRCM doesn't package the 702KOR module into a .MOD file because it will break cutscenes, though no one is able to figure out why exactly does that happen. 401DXN is another module that TSLRCM doesn't package into a MOD file.

    I have made two mods (Darth Sion and Male Exile Mod and Lonna Vash Mod for TSLRCM) that affect the 702KOR and are installed by injecting or patching files in its _dlg.erf and _s.rim, and they work fine.

    What files are you trying to inject into the 702KOR module?

    Posting in case someone comes along with the same question...

    The reason they break cutscenes has been solved. It was not the game's fault, rather the tools modders have been using to pack .MOD's in the past.

    Creating the `702KOR.mod` with Holocron Toolset for instance makes the whole thing completely playable without issue. Presumably the same with 401DXN.


  5. 1 hour ago, offthegridmorty said:

    Any order is fine. K2 FPs doesn’t add battle meditation so they shouldn’t conflict.

    Thanks, was about 99% sure that was the case after checking `changes.ini` but wanted to triple check.

    Cheers! Thank you for making this!


  6. EDIT: All of this is fixed.
    I won't have time to update the instructions and do tests but you can download the previous version it's looking for, just press this button on the DS page. v1.3.1 is what you want. Looks like @Ashton Scorpius updated their mod to use my latest update of HoloPatcher. From what I can tell no content changes were made.

    As for the dm_qrts yeah it looks like I accidentally used the archive from the full build. Both should be the same thing, since you aren't interacting with the archive outside of KOTORModSync there shouldn't be any spoilers but otherwise just try not to read the main DS page when downloading it.

    Sorry I couldn't provide a direct fix at the moment but I hope this at least gets your install going if you did want those two mods.

    image.png.5e947960fa022d8c6d65b219fcdd3fdf.png

    • Like 1

  7. @Guysabosssome mods have both a patch and the mod itself. Make sure you have everything it's telling you you need, the archive file names were up to date last I checked. Stuff like TSL Twilek heads also have compatibility patches for the UCO with similar names that you also need.

    if all of that sounds too daunting, just unselect the ones that are erroring. You should ideally only be selecting the ones you want anyway, it's unlikely you'll want every single mod in that list.


  8. There is an alien that drops off the Gizka on your ship when you arrive on Tatooine. Despite how annoying this is, the game doesn't give you an option to kill him. A simple dialog option that starts combat, and some extra dialog nodes from him to express disbelief/apologetic tone would be all this idea needs :)


  9. On 3/8/2024 at 6:16 PM, JediNxf7 said:

    i am having this issue 9 years later and it's enraging. what i don't understand is, I've finished this game before, with TSLRCM, and not had a broken game at malachor. i don't know why it's happening. I don't even get a cut scene - i get to thr fourth console,they claim the mass shadow generator is optional, but the "notes" log still says i have found the third and have one to go. 

    Are you running any other mods?


  10. After spending 5 minutes on this issue (so take this with a grain of salt) I've determined there is no .MOD issue (at least with 702KOR). The issue you guys were experiencing is a bug in KOTOR Tool or ERFEdit or whatever tool you used to create the .mod.

    Using Holocron Toolset to create the .mod worked fine. I've tested the whole module with one of @Leilukin's light side saves, start->finish, no sequence breaks.

    Probably the same problem in 401DXN

    • Light Side Points 1

  11. Can you open a terminal and execute:

    find "~/Library/Application Support/Steam/steamapps/common/Knights of the Old Republic II/KOTOR2.app" > ~/tree_result_k2.txt && open ~/tree_result_k2.txt

    and post the results? This'll show me the long-awaited directory structure for the second game.

    For the first game:

    find "~/Library/Application Support/Steam/steamapps/common/swkotor/Knights of the Old Republic.app" > ~/tree_result_k1.txt && open ~/tree_result_k1.txt

     

    there's also the mac store version of the games, after someone comes along with that information, every known version will be supported.


  12. Thanks for providing the folderpath, I've put out several PSA's over this project's release asking for a user with the mac version to please share their directory structures to no avail until now.

    When you pointed an incorrect path, did any instructions actually run before it noticed the incorrect gamepath?


  13. 19 hours ago, Lazor said:

    TSLpatching don't work on my mac (M1), any mod that has TSLpatching step fails with error: [Error] FAILED Instruction #2 Action 'TSLPatcher', any ideas? Do I need to install Wine? According to your instructions it’s not needed.

    Please post your logs. Should be in the same directory as KOTORModSync.app. Might be inside the .app, i.e. /KOTORModSync.app/Contents/MacOS/logs

    TSLpatching in that documentation is used as a verb. The action itself is supported by multiple patchers. TSLPatcher as a noun is *not* compatible with mac/linux (without wine).

     

    Use the HoloPatcher option, cross-platform compatible without requiring wine, which should be default.

    image.png.f4669a6312a187ba07a8baa54317bdac.png

    Actually, the validators should be making it impossible to choose the 'tslpatcher' option in any non-windows env to begin with? I'll look into that later, but for now just make sure you use HoloPatcher.

    Given that you're on mac you might need to unquarantine kotormodsync/holopatcher. Check System Preferences -> Security to see if it flagged holopatcher for some reason. It's difficult to tell you the issue without the logs.

    What I can tell you is that I tested on Sonoma/Catalina last week, using copied windows/linux kotor installations. I don't own the Mac Store/Steam versions of kotor so I haven't been able to test those.


  14. Kotor AutoTranslate Tool


    Translate an entire mod or KOTOR install to 80 languages using Google Translate!

    This is a very powerful tool that can modify TLK strings and CExoLocStrings in GFFs in bulk quickly. Simply follow the prompts, point it to the GFF/TLK/Kotor directory/whatever and have it automatically translated to the language of your choice!

    This tool can also create those bitmap 'font packs' that users have been using to play the game in non-released languages (Many thanks to Drazgar and DarthParametric for providing the insight into the TXI files). This means the in game text will show the correct characters when playing the game.

    How to use:

    Simply run the executable. It'll ask you many things. There are 3 actions you can do with this:

    Set all dialog unskippable       sets all dialog found in dlgs, at the chosen path, to unskippable. Includes every node. Not recommended lol

    Translate                                     Will translate All CExoLocStrings (localized strings) and TLK entries at the path to the language(s) of your choice

    Create Fonts                               Will create fonts of the chosen languages to your current directory in a folder named after the language. Just drag and drop these files to your Override folder once it completes.

    If you point PATH1 to a KOTOR install, it will ONLY patch the Override folder, the Modules folder, the rims folder (if exists), and the dialog.tlk file. This was a design choice to improve how long the patcher takes to finish. This includes any subfolders within the aforementioned folder names.

    The patched files will be in the same directory as the original files with the appended language suffixed to the end of the file. For example, 'dialog_de.tlk'. You will need to rename them as their original filenames to activate them.

    Supported filetypes/formats:

    • TalkTable files (TLK)
    • Any GFF file (DLG, UTC, etc)
    • TGA/TXI (non-translateable obviously)
    • Any capsule (ERF, MOD, etc)

     

    DBCS languages such as Japanese/Korean/Chinese are not currently supported.

    This program is in beta. Please report any bugs you encounter.

     

    Source code:

    https://github.com/NickHugi/PyKotor/tree/master/Tools/BatchPatcher

     

    Credit:

    @Cortisol for creating the PyKotor library

    @DarthParametric for extensive testing and feature recommendations.

    @Drazgar for providing a ton of knowledge in regard to the TXI/TGA font packs

    The project would not be possible without these awesome modders.

    K1-translated dialog files:

    dialog_es.tlkdialog_sq.tlk dialog_af.tlk dialog_ar.tlk dialog_ay.tlkdialog_cs.tlkdialog_corsican.tlkdialog_chichewa.tlkdialog_catalan.tlkdialog_bulgarian.tlkdialog_belarusian.tlkdialog_basque.tlkdialog_azerbaijani.tlkdialog_aymara.tlkdialog_arabic.tlkdialog_albanian.tlkdialog_afrikaans.tlkdialog_da.tlk


     


  15. Lightweight GUI Patcher


    A very simple CLI-based tool that'll take a folder of GUIs made for one resolution and patch them to work for another resolution. Please report any bugs.

    Simply input the path to the GUI file (or folder of GUI files) and the output location, your desired resolution, and let it work.

    GUI Resizer CLI Tool

    Overview

    This is a simple command-line interface (CLI) tool designed to adjust and scale GUI (Graphical User Interface) files based on different screen resolutions. The tool reads `.gui` files from the popular game Star Wars: Knights of the Old Republic and adjusts the layout to fit various resolutions and aspect ratios. It supports multiple resolutions and can handle batch processing of files.

    Features

    • Multi-Resolution Support: The tool can adjust GUI files to fit several resolutions across different aspect ratios, such as 16:9, 16:10, 4:3, 5:4, 21:9, 3:2, and 1:1.
    • Batch Processing: You can process multiple GUI files at once, making it easy to adjust a whole directory of files.
    • Logging: Outputs logs to track the processing of files, including which resolutions were processed and where the output files are saved.
    • Cross-Platform: Works on Windows, Linux, and macOS with Python 3.8+.

    Usage

    Basic Command

    To run the tool, use the following command:

    python3 gui_resizer.py --input <input-path> --output <output-path> --resolution <resolution>
    

    Parameters

    --input: The path to the `.gui` file(s) you want to process. You can specify a single file or a directory containing multiple `.gui` files.
    --output: The directory where the processed files will be saved.
    --resolution: The target resolution(s). Use the format `WIDTHxHEIGHT` (e.g., `1920x1080`). You can also specify `ALL` to process all common resolutions.

    Example

    To convert all `.gui` files in the directory `input_files/` to fit a 1920x1080 resolution and save them to the `output_files/` directory, run:

    python3 gui_resizer.py --input input_files/ --output output_files/ --resolution 1920x1080
    

    Logging

    If logging is enabled, a log file named `output.log` will be created in the specified output directory. This file will contain details of the processing operations performed.

    How It Works

    1. Input Handling: The tool takes in `.gui` files or directories containing these files and reads them using the `pykotor` library.
      
    2. Resolution Scaling: The tool scales the GUI elements based on the specified target resolution(s). It calculates scale factors based on the original dimensions of the GUI and applies these factors to resize elements accordingly.

    3. Output Generation: The processed GUI files are then saved to the specified output directory, organized by resolution.

     

    Credit:
    Cortisol for PyKotor (90% of the code)

    DarthParametric for testing and brainstorming the idea


     


  16. Amazon Games's K1 Release sounds/movies fix


    As some of you know, K1 was released free on Amazon Games for Prime users recently. Unfortunately, the release is bugged and partially broken. Here are the steps to fix it:

    • First, find out where your game is located on disk. Default path is:
      C:\Amazon Games\Library\Star Wars - Knights of the Old

       

    • Download and extract the provided ZIP, and copy and replace those files into your game's miles folder, backing up if you ever want to revert the changes.

    • backup and delete the following files from your miles folder:
      mssds3d.flt, msseax.flt, mssogg.asi
    • **copy** mss32.dll from the miles folder into the same directory as swkotor.exe, overwriting when prompted. Back up the original if you want to revert.
    • The Editable EXE is required from here on out, the amazon swkotor.exe will **not** work after these changes. Download it, backup swkotor.exe, and replace
    • Remove Disable Movies=1 and Disable Sound = 1 from the swkotor.ini (or set them to 0)

    Your game should now have fully working audio and movies!

    The files provided here in the .zip are from the steam version of the game, other versions of the game have the exact same files. For some reason only the Amazon release is different.


     


  17. Large work has gone into ensuring the patcher can mirror TSLPatcher 1:1. Some additional features have been added by request and some TSLPatcher bugs have been fixed.

    Source code can be found here: https://github.com/NickHugi/PyKotor/tree/master/pykotor/tslpatcher

     

    If you've ever wondered why TSLPatcher is throwing an error with your mod or why certain patches don't seem to be applied correctly with TSLPatcher, this is a great resource to finding the problem.

    If you don't understand or want to learn Python, large work has gone into documenting each function and public classes. Just read the docstrings.

    If you ever needed to install a TSLPatcher mod on Mac or Linux, the library will run natively (without wine) on most distros of Mac and Linux - and resolve case-sensitivity issues.

    The PyKotor library is the same library used for the HoloPatcher and the Holocron Toolset projects. - both are inherently cross-platform KOTOR tools.

    This post isn't made to be a plug to HoloPatcher or the toolset, but more a general resource for users and modders alike.

    • Like 2

  18. KotorDiff


    A simple CLI to easily compare KOTOR file formats.

    This is a very simple CLI to PyKotor. If you find TSLPatcher isn't patching the resulting files in the way you want, you can use this tool to compare your manual changes to the resulting TSLPatcher result. You can also use it to compare entire installations, directories, or single files.

    Why KotorDiff?

    It is (or should be) common knowledge that Kotor Tool is not safe to use for anything besides extraction. But have you ever wondered why that is?

    Let's take a look at a .utc file extracted directly from the BIFs (the OG vanilla p_bastilla.utc). Extract it with KTool and name it p_bastilla_ktool.utc. Now open the same file in ktool's UTC character editor, change a single field (literally anything, hp, strength, whatever you fancy), and save it as p_bastilla_ktool_edited.utc.

    KotorDiff's output:

    Using --path1='C:\Users\nodoxxxpls\Downloads\p_bastilla_ktool_edited.utc'
    Using --path2='C:\Users\nodoxxxpls\Downloads\p_bastilla_ktool.utc'
    Using --ignore-rims=False
    Using --ignore-tlk=False
    Using --ignore-lips=False
    Using --compare-hashes=True
    Using --use-profiler=False
    
    GFFStruct: number of fields have changed at 'p_bastilla_ktool_edited.utc': '72' --> '69'
    Field 'Int16' is different at 'p_bastilla_ktool_edited.utc\HitPoints':
    --- (old)HitPoints
    +++ (new)HitPoints
    @@ -1 +1 @@
    -18
    +24
    Field 'LocalizedString' is different at 'p_bastilla_ktool_edited.utc\FirstName':
    --- (old)FirstName
    +++ (new)FirstName
    @@ -1 +1 @@
    -Bastila
    +31360
    Field 'Int16' is different at 'p_bastilla_ktool_edited.utc\CurrentHitPoints':
    --- (old)CurrentHitPoints
    +++ (new)CurrentHitPoints
    @@ -1 +1 @@
    -20
    +24
    Field 'UInt16' is different at 'p_bastilla_ktool_edited.utc\FeatList\0\Feat':
    --- (old)Feat
    +++ (new)Feat
    @@ -1 +1 @@
    -3
    +94
    Field 'UInt16' is different at 'p_bastilla_ktool_edited.utc\FeatList\2\Feat':
    --- (old)Feat
    +++ (new)Feat
    @@ -1 +1 @@
    -39
    +98
    Field 'UInt16' is different at 'p_bastilla_ktool_edited.utc\FeatList\3\Feat':
    --- (old)Feat
    +++ (new)Feat
    @@ -1 +1 @@
    -43
    +55
    Field 'UInt16' is different at 'p_bastilla_ktool_edited.utc\FeatList\4\Feat':
    --- (old)Feat
    +++ (new)Feat
    @@ -1 +1 @@
    -44
    +107
    Field 'UInt16' is different at 'p_bastilla_ktool_edited.utc\FeatList\5\Feat':
    --- (old)Feat
    +++ (new)Feat
    @@ -1 +1 @@
    -55
    +3
    Field 'UInt16' is different at 'p_bastilla_ktool_edited.utc\FeatList\6\Feat':
    --- (old)Feat
    +++ (new)Feat
    @@ -1 +1 @@
    -94
    +39
    Field 'UInt16' is different at 'p_bastilla_ktool_edited.utc\FeatList\7\Feat':
    --- (old)Feat
    +++ (new)Feat
    @@ -1 +1 @@
    -98
    +43
    Field 'UInt16' is different at 'p_bastilla_ktool_edited.utc\FeatList\8\Feat':
    --- (old)Feat
    +++ (new)Feat
    @@ -1 +1 @@
    -107
    +44
    Field 'LocalizedString' is different at 'p_bastilla_ktool_edited.utc\Description':
    --- (old)Description
    +++ (new)Description
    @@ -0,0 +1 @@
    +-1
    Field 'String' is different at 'p_bastilla_ktool_edited.utc\Subrace':
    --- (old)Subrace
    +++ (new)Subrace
    @@ -1 +0,0 @@
    -0
    ^ 'p_bastilla_ktool_edited.utc': GFF is different ^
    ---------------------------------------------------
    'p_bastilla_ktool_edited.utc'  DOES NOT MATCH  'p_bastilla_ktool.utc'

    Sheesh! I bet you can't even guess which field I modified! Again I changed a singular field! What is all this nonsense that KTool did to my character sheet?

    Moral: Don't use KTool to modify files. It seems to have the incorrect field types defined internally and doesn't respect the original file when saving a new one.

    But KotorDiff saved the day here and outputted exactly what happened on save.

    How to use:

    Simply run the executable. It'll ask you for 3 paths:

    PATH1                Path to the first K1/TSL install, file, or directory to diff.

    PATH2                Path to the second K1/TSL install, file, or directory to diff.

    OUTPUT_LOG   File name/path of the desired output logfile (defaults to log_install_differ.log in the current directory)

    If you point PATH1 and PATH2 to two KOTOR installs, it will ONLY compare the Override folder, the Modules folder, the Lips folder, the rims folder (if exists), the StreamWaves/StreamVoices folder, and the dialog.tlk file. This was a design choice to improve how long the differ takes to finish. This includes any subfolders within the aforementioned folder names.

    Supported filetypes/formats:

    • TalkTable files (TLK)
    • Any GFF file (DLG, UTC, GUI, UTP, UTD, GIT, IFO, etc)
    • Any capsule (ERF, MOD, RIM, SAV, etc)

    Not supported: NCS, NSS, ITP

    Any file format that's not supported will have its SHA256 hash compared instead.

    CLI Support:

    This is a very flexible tool. You can send it command line arguments if you would like to use it in a 3rd party tool. Run `kotordiff.exe --help` to get a full syntax. If there's an error, the exit code will be 3 (if err is known by my code) or 1 (some sys error loading the tool). If the two paths match, the exit code will be 0. If the two paths don't match, exit code will be 2. You can utilize these error codes to utilize KotorDiff in a customized 3rd party script, or add-on to WinMerge/WinDirStat, possibilities are endless.


    FAQ:

    I am struggling to read the diff output, why is it saying +/-/@38924 and what does it mean?

    A: GIT Diff is a standardized output format that has been widely adopted and used since probably the 80s/90s. https://stackoverflow.com/a/2530012/4414190 is by far the best explanation i've seen, but honestly ask ChatGPT to explain it further if needed, or send me a pm if something doesn't make sense!

    Couldn't I just open my two files with Holocron Toolset/ERFEdit/K-GFF etc?

    You could, but for me it became tedious to manually compare them side by side, expanding every node etc. Leave alone completely multiple files. This tool allows you to simply input two paths and have the full differences outputted and logged.

    A main benefit is it'll show you the exact GFF paths that differ. Output such as `Missing struct: "EntryList\5\RepliesList\3" {contents of the struct}` has been very useful.

    Why is my antivirus is flagging this?

    This is a false-positive and there's nothing I can do. Python source scripts are compiled to executables using PyInstaller, but unfortunately some antivirus's have been known to flag anything compiled with PyInstaller this way. The problem is similar to why your browser may warn you about downloading any files with the .EXE extension.

    This whole tool is open source, feel free to run directly from the source script: https://github.com/NickHugi/PyKotor/blob/master/Tools/KotorDiff/src/kotordiff/__main__.py

    There's a well-written article explaining why the false positives happen on their issue template: https://github.com/pyinstaller/pyinstaller/blob/develop/.github/ISSUE_TEMPLATE/antivirus.md

    TLDR: PyInstaller is an amazing tool, but antiviruses may flag it. This is not the fault of PyInstaller or my tool, but rather the fault of how some scummy users have chosen to use PyInstaller in the past. Please report any false positives you encounter to your antivirus's website, as reports not only improve the accuracy of everybody's AV experience overall, but also indirectly supports the PyInstaller project.

     

    Source code:

    https://github.com/NickHugi/PyKotor/blob/master/Tools/KotorDiff/

     

    Credit:

    @Cortisol for creating the PyKotor library (i.e., 90% of the code for this tool)

     


     


  19. Hey there Friend I have a error that is confusing me the error in the kotor 2 full mod build the mod sync says that it cannot detect some of the mod and yes I have download the file and put them on my mod folder if you have a solution for this Please reply the message

    Can you show the output from the output window when this happens? What operating system build are you using (win10 x86, win7 x64, linux, etc)


  20. If anyone needs any support with this installer, please reach out. This project was developed by a team of one person, there's only so many bugs I can test and catch. If you run into any problems: any at all, please don't hesitate to contact me here or on the GItHub.

    I cannot fix a problem if I don't know it exists.