LucasForums

LucasForums (http://www.lucasforums.com/index.php)
-   T3-M4's Astromech Droid Center (http://www.lucasforums.com/forumdisplay.php?f=646)
-   -   TSLPatcher v1.2.10b1 (mod installer) (http://www.lucasforums.com/showthread.php?t=149285)

stoffe 05-25-2005 07:13 AM

TSLPatcher v1.2.10b1 (mod installer)
 

Latest version: TSLPatcher 1.2.10b1, ChangeEdit 1.0.5b1


(You can check which version you currently have by opening the Properties window of the EXE file in Windows Explorer and check on the Version tab.)

* * *

About TSLPatcher:
The TSLPatcher is a small application intended to be used as a mod installer for KotOR and K2:TSL. Despite the name it works with both games in the series. Its purpose is to move some of the burden of making different mods compatible from the end mod user to the mod developer.

ChangeEdit is a support utility, used to create TSLPatcher configuration files with a somewhat user-friendly graphical user interface. (Well, more user-friendly than creating the config files by hand in notepad, anyway.)

It can, in general terms:
  • Add new entries to the dialog.tlk file, so you won't have to distribute the whole 10 MB file with a mod, and make it compatible with other mods adding new entries.

  • Modify and add new lines and columns to 2DA files that might already exist in the user's override folder, allowing different mods to modify the same 2DA file with less risk of causing incompatibility.

  • Modify values in fields and add new fields to GFF format files (UT*, DLG, JRL, GIT, ARE, IFO etc...) that might already exist in the user's override folder or inside ERF/RIM archives. Again to reduce incompatibility when different mods need to do things to the same file.

  • Dynamically assign StrRefs from your new dialog.tlk entries to 2DA, GFF, NSS and SSF format files, allowing you to use your new TLK entries regardless of which StrRef indexes they were added as, through the use of token references. (E.g. add the correct StrRef values to the "name" and "desc" column in spells.2da if you add a new force power.)

  • Dynamically assign values from 2DA and GFF files to cells and fields in other 2DA, GFF and NSS files, such as the line numbers from newly added rows in a 2DA file or the field path label of a newly added field. This can be used to link together files that reference eachother dynamically, regardless of where in the files your additions end up. E.g. linking new heads.2da --> appearance.2da --> portrait.2da lines together to add a new player appearance. Or linking a new appearance.2da line for an NPC to the "Appearance_Type" field in their UTC template, just to mention a couple of potential uses.

  • Insert StrRef or 2DA/GFF token values into scripts and recompile those scripts automatically with the correct values. (E.g. adding new Force Powers with an impact script that needs to know which lines in spells.2da the new powers are defined at.)

  • Dynamically modify SSF (Soundset) files to point to new entries you have added to dialog.tlk.

  • Automatically put other files that does not need to be modified into the correct folder within your game folder (e.g. "Override", "Modules", "StreamMusic" etc...), or inside ERF or RIM format archive files existing in any of those folders.

  • Insert modified GFF files into a RIM or ERF format file (ERF, MOD, SAV etc), found in the game folder or any of its sub-folders, or modify existing files already found in that destination file. Recompiled NCS script files can also be inserted into RIM and ERF format files (but only overwrite, not modify existing scripts with the same name).

  • Make unaltered backup copies of any files it modifies or overwrites, making it a little easier to uninstall a mod again.

  • Provide the user with different installation alternatives which may be chosen at installation time.

  • Display a ReadMe, instruction text or agreement with basic font and text formatting support (using the Rich Text Format) to the user prior to installation.


It cannot, in no uncertain terms: :D
  • Make standard game scripts that are modified by serveral mods compatible. The structure of a script file is too dynamic to lend itself well to automatic merging (at least for someone of my skill level in programming).

  • Resolve naming/priority conflicts resulting from placing several variants of files with the same name in different sub-folders inside the override folder. It will always assume that all files it is supposed to modify are located directly in the override folder and not in any subfolders to avoid ambiguous situations.

  • Modify files held inside BIF files in the game, since KEY/BIF files work pretty much the same as the override folder in most cases, and editing the KEY/BIF data can lead to problems. This does of course not prevent you from extracting whatever files you need from the BIF data in advance and put them in the TSLPatcher's data folder.


A few quick "how to" examples:
Insert new branches into DLG files.
Install a New Player Appearance mod.


Troubleshooting:
  1. Q: I get a RichEdit line insertion error when trying to install mods. What's wrong?

    A: It seems a few people have odd versions of the RichEdit DLL files installed in their system that doesn't play nice with the colored text box component TSLPatcher uses. To work around this you could try to replace the RichEd DLL files with versions that should work. Extract the two DLL files from this archive and put them in your Windows\Windows32 folder. Move existing files with those names to a safe location first so you can restore them if this causes other problems! Do not overwrite them!

    Alternatively, if you don't want to mess with your DLL files, you could force TSLPatcher to use a plain text box for status messages rather than the colored/formatted one. To do this, use Notepad to open the changes.ini file found inside the tslpatchdata folder that came with the mod you wish to install. Under the [Settings] section, change the value of the key PlaintextLog from 0 to 1.


  2. Q: I'm not seeing any Install Mod button, and the text field in the TSLPatcher window seems to extend behind the window boundraries.

    A: This odd problem some people experience seems to be tied to what screen resolution and pixel density is being used in your monitor settings, but I have been unable to replicate it or figure out exactly what's going on. As a workaround you can "click" on the Install button by using it's quick keyboard command. Pressing the [ALT] [S] keys on your keyboard should start the installation process.


  3. Q: When trying to install a mod it complains that it's not a valid installation location. What's wrong?

    A: Make sure you are selecting the folder the game is installed in, not the override folder, when the TSLPatcher asks you where to install the mod.


  4. Q: When trying to install a mod it complains that access was denied to the dialog.tlk file.

    A: Make sure that your dialog.tlk file is not write protected. This file is found in the same folder as the swkotor.exe binary. To check if it's write protected and undo it, right-click on the file, pick Properties in the context menu and uncheck the write protected checkbox.

* * *

Thread update history:
EDIT(2007-09-19) Uploaded TSLPatcher v1.2.10b1 and ChangeEdit 1.0.5b1, which fixes a bug/oversight breaking the changes.ini format when adding or updating ExoString fields or ExoLocString substring fields with text contining newline (LR/CR) characters. In those cases only the text before the first newline would get added earlier. This should now be fixed to handle text with multiple paragraphs properly. See this post for more details.


EDIT(2007-08-13) Uploaded TSLPatcher v1.2.9b which will handle already existing GFF fields a bit better when adding new fields to a GFF file. It will now update the value of the existing field to match what the new field would have had set, rather than just skip it entirely.


EDIT(2006-12-12) Uploaded TSLPatcher v1.2.8b10 hopefully making the Require file checks work reliably all the time, this time. Thanks to Darkkender for pointing this out.


EDIT(2006-12-10) Uploaded TSLPatcher v1.2.8b9 fixing a bug with the patcher not checking for required file if using multiple setups and auto-detecting the game install location. Thanks to Darkkender for pointing this out.


EDIT(2006-12-02) Uploaded TSLPatcher v1.2.8b8, which contains fixes for two bugs that sneaked their way into version 1.2.8b6. The bugs would cause installation to abort if the dialog.tlk file was write protected, or if copying a 2DA line and using a high() token to assign a new value to a column of the new line. Thanks to DarthCyclopsRLZ for pointing out these bugs.


EDIT(2006-10-03) Uploaded TSLPatcher v1.2.8b6, which contains a whole bunch of bug fixes and some new features. Please see this post for details.

EDIT(2006-09-07) Sneaky mini-update to TSLPatcher v1.2.8b4, fixes a bug with backing up files before replacing them from the InstallList, which was introduced when the install list sequence was changed to happen before 2DA edits. Also fixed mistake where word wrap was permanently left off when toggling from the Config Summary back to the info.rtf display on the main TSLPatcher window.


EDIT(2006-08-28) TSLPatcher v1.2.8b3 uploaded, this hopefully fixes the occasional crashes when recompiling scripts with include files, and works around the weird GUI glitch in the main TSLPatcher window that resulted in the buttons and scrollbars ending up outside the window area. Huge thanks to tk102 for taking time to iron out the nwnnsscomp bug.


EDIT(2006-08-09) TSLPatcher v1.2.8b2 uploaded. This version fixes a bug with the RIM handling class which caused the game to have trouble loading RIMs modified by the Patcher, caused by an error in the RIM specifications I had at my disposal. The game should now properly load modified RIM files without problems.


EDIT(2006-08-09) TSLPatcher v1.2.8b1 and ChangeEdit v1.0.4b8 uploaded. This version allows the "Install" function to place files into ERF/RIM archives, allows options for renaming files during installation, and adds a "config summary" button to the main TSLPatcher window.

EDIT(2006-08-06) TSLPatcher v1.2.8b0 and ChangeEdit v1.0.4b7 uploaded. This version changes how the ERF handling functionality works to make it more useful. See this post for more info.

EDIT(2006-07-25) TSLPatcher v1.2.7b9 and ChangeEdit v1.0.4b6 uploaded. This version has some changed made to the Add/Modify GFF Field functionality, allowing to to be used to insert new conversation branched into DLG files. Various minor user interface changes have also been made.

EDIT(2006-07-08) TSLPatcher v1.2.7b7 and ChangeEdit v1.0.4b4 uploaded, containing some bugfixes, interface improvements (I hope) and minor changes to make it a little less sensitive to errors.

EDIT(2006-05-28) Uploaded TSLPatcher v1.2.7b5 and ChangeEdit v1.0.4b3, with a Mini-update that allows it to optionally auto-detect the game folder location rather than ask the user where it is, as requested.

EDIT(2006-05-11) Uploaded TSLPatcher v1.2.7b4 and ChangeEdit v1.0.4b2. No new features, just some fixes to bugs I discovered, and slight change to how the script compiler is called to allow it to work with the custom version of nwnnsscomp that tk102 has been kind enough to provide. This custom version is also included in the download now.

EDIT(2006-04-29) Uploaded TSLPatcher v1.2.7b1 and ChangeEdit v1.0.4b1. Too much more information can be found in this post.

EDIT(2006-03-25) Updated ChangeEdit to v1.0.3a with GFF Compare function, 2DA Modifier copy button and a whole bunch of interface improvements. See this post.

EDIT(2006-03-19) Updated TSLPatcher to v1.2.6a (wip v2), which fixes a bug that would prevent the script compilation function to work properly on Windows 98 and Windows 2000 computers.

EDIT(2006-03-09) Uploaded new test version, TSLPatcher v1.2.6a (WIP v1) with added support for modifying SSF Soundset files with dynamic StrRefs for added TLK entries. See this post for a little more detail.

EDIT(2006-02-03) I've uploaded a new test version, TSLPatcher v.1.2.5a, which has some limited ERF (e.g. module file) packing functionality added. See this post for more details.

EDIT(2006-01-16): I've uploaded a test version of TSLPatcher v1.2 and ChangeEdit v1.0 which has some new features added. See this post for details.

T7nowhere 05-25-2005 08:46 AM

Great work man.

Thanks

General Kenobi 05-25-2005 12:43 PM

Excellent work my friend :thumbsup: My lil' achin' 2da brain thanks you :D

5/5 Elephant Rating

:elephant: :elephant: :elephant: :elephant: :elephant:

I have been having issues with 2da editing and this will be a killer tool to use to merge existing ones.

Again thanks man :D

DM

Darkkender 05-25-2005 01:32 PM

Good to see this in final release now.

Jeff 05-25-2005 07:41 PM

Great job stoffe. This is great :)

Jackel 05-25-2005 07:43 PM

Nice work stoffe! I will be experimenting with this in the next few days for sure.

Keiko 05-25-2005 07:49 PM

Nice Job!:)

Mav 05-25-2005 11:10 PM

This sounds like an exceptional tool, I'll be looking into this more in depth in the next few days.

ChAiNz.2da 05-26-2005 11:54 AM

Great stuff man!

I'm persnally glad to see the GUI was in the public release :D

When I first started testing, It took me a few read throughs of the readme to get going... after that.. (to quote Atton) "Pure Pazaak" ;)

:thumbsup:

stoffe 06-03-2005 03:22 PM

I have uploaded a new version of the Patcher and its support applications. If anyone is interested you can download it on this page.

As before, comments, suggestions and bug reports are welcomed.

This is what has changed since the first release, snipped from the Readme:


TSLPatcher v1.1.1b
------------------------
* Added a new Setting that when set will make the Patcher run in Installer mode instead. When doing this, the Patcher will not ask for each individual file. It will only ask the user for the folder where the game is installed, and then automatically use the dialog.tlk file found in that folder, and the override folder located there. If no Override folder exists within the selected folder, one will be created. The patcher will then check the Override folder for the presence of any of the files (except dialog.tlk of course) it should modify. If present, it will modify those existing files. If the files are not present, the Patcher will look in the "tslpatchdata" folder for the file, which will then be copied to Override and modified there. Thus, when using the Patcher in Installer mode, all data files that make up your mod should be put in the "tslpatchdata" folder (except dialog.tlk). In the case of 2DA files, don't put the modified version here, put an unaltered copy of the 2DA files in "tslpatchdata". They will only be used if the user doesn't already have a custom version of that file in their Override folder.

* Added a bare bones file "installer" feature to allow the Patcher to also install files it shouldn't modify. All files must be located within the "tslpatchdata" folder, and will be copied to the specified folder within the main Game folder the user has selected (override in most cases). This will only work when the patcher runs in Installer mode. Intended to allow the patcher to fully install a mod into the game, not just the files that it should modify. Useful for things like textures, icons, unmodified scripts etc.

* Added support for the Orientation and Position type of fields (that I missed earlier) when modifying GFF fields. If you wish to use it for whatever reason, Orientation is set as four decimal values separated by a | character. Position works the same, but is three numbers instead of four. For example:

Field: CameraList\0\Orientation
Value: 12.4|6.5121|1.25|-9.6

* Added a primitive way for the Patcher to modify things like NCS scripts with correct 2DA index values and StrRefs. It is currently VERY primitive, and WILL mess up your files if you don't know what you are doing when you configure it. As such it is not added to the ChangeEdit application, and I won't describe how it works here. If you really need to use it, ask me and I'll describe how it works.


TalkEd v0.9.9b
------------------
* Added new option in the Search dialog to search for each word individually. Checking this box and typing "vogga dance" as criteria would match the string "Do you wish to dance for vogga?" for example.
* Fixed some annoying behavior in the list when adding new entries. The list should now display all new entries that have been added since the current file was loaded (or created in case it is a new file) when a new entry has been added.
* Added support for associating TalkEd with TLK files in the Windows Explorer. If a TLK files is drag-n-dropped on the TalkEd icon, that file will be opened. If TalkEd is associated with TLK files, doubleclicking a TLK file will open it in TalkEd.

ChangeEdit v0.9.3b
-------------------------
* Fixed annoying list behavior, when adding a new entry to a list, the new line will be selected.
* Added CTRL-SHIFT+Arrowkey keyboard shortcuts to press the arrow buttons that store/retrieve data in lists.
* Two new entries in the Settings section. You may now set if the patcher should do backups of existing files before modifying them, and you may set which run mode (Patcher or Installer) it should run in.
* Added new section for specifying files that should be installed by the patcher when running in Installer mode.
* A whole bunch of minor bug fixes.



(Check the Force Powers mod I recently uploaded to PCGameMods if you wish to see a working example of this version of the Patcher in action.)

Darth333 06-03-2005 03:49 PM

Good work as always stoffe :) It's getting better and better!

As discussed, I uploaded the file at swk.com: http://www.starwarsknights.com/tools.php and added a link to this thread so it can be found easily. If there is anything you want to be changed, just let me know.

RevanA4 06-03-2005 06:00 PM

Quote:

Originally posted by Jackel
Nice work stoffe! I will be experimenting with this in the next few days for sure.
me to now that LA is back up

stoffe 07-09-2005 05:04 AM

Last version changes (again)
 
Since this thread has lost most of its posts I suppose I should re-post what is new in the latest released full version (1.1.2), which includes a rudimentary readme, examples and the TalkEd and ChangeEdit utilities.

It can be downloaded from here.



TSLPatcher v1.1.2b
------------------
* Added an optional special key named "ExclusiveColumn" to the AddRow and CopyRow 2DA modifiers. If used this must be at the top of the modifier list for AddRow or just below the Index of the line to copy in CopyRow. When present this must be set to the label (ie name) of a column in the 2DA file. The patcher will then check what value is assigned to that column in the modifier for the new row, and compare it to the values of all rows in that column in the 2DA file. If no other row has the same value in the column as the one you are about to add, the Patcher will continue as usual and add the new line to the 2DA file.

If, however, another line already had that value set for the specified "exclusive" column, then that line will be modified instead and no new row will be added to the file. This can be used to update existing lines, for example when a new version of a mod is released, avoiding adding duplicate line while still allowing the mod to be installed fresh if the lines don't already exist.

IMPORTANT! Only the first matching row will be used and modified, thus it is very important that you use a column which allows you to identify the row in a fairly unquie way. The "label" column in the 2DA files which has it is good for this, since the game rarely if ever actually use the values here for anything.

* Added a "LabelIndex" special key to the ChangeRow 2DA modifier. This will only work for 2DA files which have a "label" column. In those files you can use the "label" column to index/identify a row to modify instead of the normal line number or row label identifiers. This is useful for modifying existing lines which have had their line number and row label assigned dynamically earlier, and as such you can't know them when you are writing your Patcher instructions. IMPORTANT! If more than one row has the specified value in its "label" column, the row with the highest line number (ie closest to the end of the file) will be used.

* Added support for the "high()" special value token to the AddRow 2da modifiers as well. Previously this special token only worked for CopyRow modifiers. (It inserts the highest value of all rows in that column + 1 for the new row, provided that the column contains numbers.)

* Added a summary of patcher progress log at the conclusion of an Install/Patch operation, reporting if any warnings or errors occured during installation. This should hopefully make it clearer to users who understandably won't read the whole log if something went wrong.

* Changed the "start" message in the progress log to reflect if the program is running in Installer of Patcher mode. Also added the date and time when the operation was started, to help people remember in what order they have installed different mods (which if useful to know if you want to uninstall a mod.) See the next point below.

* At the conclusion of an operation, the progress log will now automatically be saved to a file named "installlog.rtf" created in the same folder as the Patcher app is running from.

* Cosmetics: The ".\" folder (ie the game root folder), if used in the InstallList of folders, will now be reported as the "Game" folder in the progress log.

* Added support for overwriting existing InstallList files. If using ChangeEdit.exe, tick the checkbox below the filename input box. If editing things with a text editor, Change the key in the file-list from "File#" to "Replace#". This will make existing files with the same name to be overwritten. The original file will first be placed in the "backup" folder (if backup is enabled) before it is overwritten. The Patcher will also refuse to overwrite EXE and TLK files. This is useful for updating an earlier version of a mod while still allowing it to be installed fresh with the same Installer.

* Added a new special key to the HACKList modifiers. If the first key in the list for each file is set to "ReplaceFile=1", this will make any existing files in the Override folder with the same name be overwritten. Note that the existing files will be overwritten by fresh copies from the "tslpatchdata" folder before HACK assigns new values. This is useful for allowing updates to earlier versions installed while still allowing fresh install with the same Installer app.

* If running in Installer mode and a needed file is missing in the "tslpatchdata" folder (which it in most cases really shouldn't be) and the patcher asks the user for the file instead, the selected file will now be copied to Override and modified there, rather than that file being modified directly as it incorrectly worked before.


ChangeEdit v0.9.4b
------------------
* Added a preview box to the TLK panel to let you view the whole entry when you select a long TLK entry in the append.tlk list. Should make it easier to pick the correct entry when assigning StrRef tokens if you have several which starts in pretty much the same way (for example Force Power descriptions).

* Added a "Replace" checkbox to the Install Files panel. When checked the file in the edit box will replace files with the same name that already exists in the folder. If not checked, the Installer will skip the file and issue a warning in the progress log that the file already existed.

* Added "LabelIndex" to the line identifier dropdown menu in the ChangeRow editor window for 2da files. If selected, the value box should be set to a value in the "label" column in the 2da. See above in the patcher change notes for more info about this.

* Added "high()" to the Value field dropdown list in the AddRow 2da editor window.

* Added "ExclusiveColumn" to the Column label dropdown list in the AddRow and CopyRow 2da editor windows when loading column labels from a 2da file. See above for more info about what this optional key does.


TalkEd v0.9.9b
--------------
* Added new option in the Search dialog to search for each word individually. Checking this box and typing "vogga dance" as criteria would match the string "Do you wish to dance for vogga?" for example.
* Fixed some annoying behavior in the list when adding new entries. The list should now display all new entries that have been added since the current file was loaded (or created in case it is a new file) when a new entry has been added.
* Added support for associating TalkEd with TLK files in the Windows Explorer. If a TLK files is drag-n-dropped on the TalkEd icon, that file will be opened. If TalkEd is associated with TLK files, doubleclicking a TLK file will open it in TalkEd.

stoffe 07-09-2005 05:19 AM

Other lost things I can remember...
 
Some other things from the top of my head that has vanished from this thread.


@ermo(?) -
I put together a mini-release containing the patcher application only that has added commandline support as you asked. It accepts two optional parameters, the first is the name of an INI file containing work instructions, the second is a name of a custom RTF file to display in the info text box when the app starts. Like:

Code:

TSLPatcher.exe another.ini someinfo.rtf
You can download it here. That file contains the patcher EXE only since I assume you already have the other files and nothing else has changed. Hopefully this is what you meant...

* * *

@commas -
I am working on a new "full" version of the patcher that can handle adding new nodes to existing dialog files, as you requested. Progress has been slow recently though since I've been busy with other real-life things the last few weeks. Hopefully I should be able to get to it during the vacation soon.

* * *

@Everyone -
Since I've gotten a few questions about odd behavior resulting from this, and it is far from obvious I should point this out. Should've been in the ReadMe file to begin with to avoid trouble, but it's easy to become blind to your own designs... Sorry about that. :(

When modifying 2DA files with AddRow-modifiers, you must assign a value to at least one column before you can assign a value from the new row (like the RowLabel or RowIndex) to a 2DAMEMORY token.

This is due to the fact that the patcher executes things in the order they are listed in the modifier lists, and the new row isn't added until at least one value has been set for a column.

Thus this is invalid, as RowIndex hasn't been determined yet:
Code:

[heads.2da]
AddRow0=heads_bastila

[heads_bastila]
2DAMEMORY1=RowIndex
head=P_BastilaH
alttexture=kinrathpup
headtexe=evilpup

While this is valid, as the new row has been added:
Code:

[heads.2da]
AddRow0=heads_bastila

[heads_bastila]
head=P_BastilaH
alttexture=kinrathpup
headtexe=evilpup
2DAMEMORY1=RowIndex


General Kenobi 07-09-2005 07:20 AM

Quote:

Originally posted by Stu BodyBanger
Download now Our exclusive offer 0.00 $ :)

Your not supposed to post spam stuff :mad:

Maxstate 07-09-2005 08:37 AM

Great addition to the community, good work!

TheOssusKeeper 07-14-2005 09:50 PM

TSLpatcher help
 
Quick question for someone who might know:
Is there a comprehensive step-by-step guide for dummies like me who donít know much about using the TSLpatcher and the other utils that comes with it?
If so, where can I find it?

sorry if this has already been asked, i've been gone for a while and instead of wading through post after post, i thought i'd straight up ask... :D

T7nowhere 07-14-2005 10:05 PM

The only tutorial I know of are the examples that stoffe -mkb- has provided with tslpatcher.

this should have been posted in the tslpatcher thread in order to keep as much info about the tool in one place, so I'm merging this with the tools thread.

ChAiNz.2da 07-15-2005 05:05 AM

Re: TSLpatcher help
 
Quote:

Originally posted by TheOssusKeeper
Quick question for someone who might know:
Is there a comprehensive step-by-step guide for dummies like me who donít know much about using the TSLpatcher and the other utils that comes with it?

Like T7 mentioned, stoffe's examples included worked wonders for me :D

Though I was "lost" at first, I made my first Patcher while having the examples (and the readme) open along with my project.

It was probably one of the first times where a 'mod' of mine worked the first time.. miracles do happen huh? ;)

Try following them as you go along, but if there's any other questions, feel free to post. Now that there's a few of us here who've used it... maybe stoffe won't wind up having to answer all of them this go around :D

TheOssusKeeper 07-16-2005 12:18 AM

Quote:

Originally posted by T7nowhere
The only tutorial I know of are the examples that stoffe -mkb- has provided with tslpatcher.

this should have been posted in the tslpatcher thread in order to keep as much info about the tool in one place, so I'm merging this with the tools thread.


Sorry 'bout the second post T7, i got lost when i didn't see my post anywhere :D

TheOssusKeeper 07-16-2005 12:21 AM

Re: Re: TSLpatcher help
 
Quote:

Originally posted by ChAiNz.2da
Like T7 mentioned, stoffe's examples included worked wonders for me :D

Though I was "lost" at first, I made my first Patcher while having the examples (and the readme) open along with my project.

It was probably one of the first times where a 'mod' of mine worked the first time.. miracles do happen huh? ;)

Try following them as you go along, but if there's any other questions, feel free to post. Now that there's a few of us here who've used it... maybe stoffe won't wind up having to answer all of them this go around :D


hey chainz, maybe you could tell me how you got yours to work step-by-step? :D please, if you don't mind to terribly much :D maybe simplify it for a simpleton like me :p


PS. I love your laughing man avatar, i was going to do the same thing, but wasn't sure if this web site would allow me to use custom avatars or not... :D

stoffe 07-16-2005 07:29 AM

Re: TSLpatcher help
 
Quote:

Originally posted by TheOssusKeeper
Quick question for someone who might know:
Is there a comprehensive step-by-step guide for dummies like me who donít know much about using the TSLpatcher and the other utils that comes with it?
If so, where can I find it?

Don't think there is, and as evident by the readme file I'm terrible at writing guides, so the chance that I would write one that is usable is rather minimal. :)

Besides, it depends on what type of mod you'd use it for how you'd need to do things, so it's a bit hard to make a "one size fits all" type of guide...

You could have a look at some of the existing mods that use the patcher and see how things are done there. The changes.ini file present with these mods contain the instructions for the patcher and can be opened with both a texteditor (like notepad) or with the ChangeEdit utility included with the patcher.

A few mods off the top of my head that I remember uses it that may be useful to look at as an example:

ChAiNz.2da's Bao-Dur armor - adds a new baseitem to baseitems.2da and updates the GFF/UTI template for the armor to point to it.

My Force Powers mod - Adds new lines to a bunch of 2da files, adds new text to dialog.tlk, hacks script files with proper 2da index values. Also enables updating of existing lines from a previous install of the mod.

My Twilek exile appearance posted a few days ago - Adds a new player appearance editing heads, appearance and portraits.2da, adds workbench-creating for a robe, modifies existing animations.2da line.

There may be other mods using it as well that I can't think of right now. Inspect the changes.ini of other mods and see how things are put together, that be of some help in figuring it out.

And if you have any questions about anything, please ask.

One important piece of advice that makes understanding those files a bit easier though: Everything is done in the order it is listed in the patcher instructions. Thus the ordering of instructions is very important in cases where files reference eachother, like the heads.2da ---> appearance.2da --> portraits.2da sequence when adding a new appearance. This is important to keep in mind when storing values in the 2DAMEMORY tokens for later use.

ChAiNz.2da 07-16-2005 08:06 AM

Re: Re: Re: TSLpatcher help
 
Quote:

Originally posted by TheOssusKeeper
hey chainz, maybe you could tell me how you got yours to work step-by-step? :D please, if you don't mind to terribly much :D maybe simplify it for a simpleton like me :p
well, like stoffe mentioned, it's really a different case for each type of mod, depending on what you need it to do. But, I'll be more than happy to help you along as you go...

Can you give us a jist of what you're mod will be needing to change? Such as which .2da files will need to be appended?

2DAMEMORY tokens are going to be your friend ;) but unlike what the 'techy jargon' makes it sound like, the Patcher is very straightforward and easy to get used to...

I'd suggest using the changeedit.exe for starters, until you can get the hang of manually editing the .ini yourself. Of course, if you're more comfortable with scriptng (unlike me.. hehe) perhaps .ini editing might be easier...

Just give us a little more 'meat' to your project and we'll try to help as best we can :)

TheOssusKeeper 07-16-2005 05:48 PM

Re: Re: Re: Re: TSLpatcher help
 
Quote:

Originally posted by ChAiNz.2da
well, like stoffe mentioned, it's really a different case for each type of mod, depending on what you need it to do. But, I'll be more than happy to help you along as you go...

Can you give us a jist of what you're mod will be needing to change? Such as which .2da files will need to be appended?

2DAMEMORY tokens are going to be your friend ;) but unlike what the 'techy jargon' makes it sound like, the Patcher is very straightforward and easy to get used to...

I'd suggest using the changeedit.exe for starters, until you can get the hang of manually editing the .ini yourself. Of course, if you're more comfortable with scriptng (unlike me.. hehe) perhaps .ini editing might be easier...

Just give us a little more 'meat' to your project and we'll try to help as best we can :)


Well I made that 4 new detonators mod (with Stoffe's help (scripts))... and i thought i'd make it much easier for the gamers to install by using the tslpatcher... basically it has the uti files and the script files and it modifies the spells.2da... after getting this little (big ?) project done, i was going to re-up it to pcgamemods.com for everyones convenience, plus i wasn't very happy with having to try and explain how to merge the mod with the spells.2da, it was all too confusing, even for me...

plus, i think it is a small enough mod to practice on, to try and learn how to use the tools, because i don't want to screw up someones game with a faulty mod, if i can keep from it ;)

I will probably stick with the changeedit util. 'cause i don't know anything about scripting...

I would really appreciate any and all help I could get, thanks in advance :D

ermo 07-16-2005 07:30 PM

Re: Other lost things I can remember...
 
Quote:

Originally posted by stoffe -mkb-

@ermo(?) -
I put together a mini-release containing the patcher application only that has added commandline support as you asked. It accepts two optional parameters, the first is the name of an INI file containing work instructions, the second is a name of a custom RTF file to display in the info text box when the app starts. Like:

Code:

TSLPatcher.exe another.ini someinfo.rtf
You can download it here. That file contains the patcher EXE only since I assume you already have the other files and nothing else has changed. Hopefully this is what you meant...
It certainly is - great job!

- ermo

PS. Sorry that I didn't post before now- had issues reactivating my account :(

TheOssusKeeper 07-17-2005 03:35 PM

Stoffe and or Chainz,
Here is a link to some screen shots that I took of my progress with the TSLpatcher.
I was wondering if one of you two or both could take a look and see if Iíve got it right so far, and tell me what I need to do next to get this thing up and running (working) like it shouldÖ Basically I have no clue as to what the 2damemory thing is or how to use it or how to get the gff files working like they should be or how to get them to reference the proper lines [Row Label] of the spells.2da in the properties subtype correctly of the uti filesÖ


Screenshots:

http://img348.imageshack.us/img348/4...p1thru55hw.jpg


You can see Iím tryín :D but thereís a few things I still ainít got yet ( < ainít proper English :D )Ö
Hope you can help, pleaseÖ :)


Please and Thanks in advance... ;)

stoffe 07-17-2005 05:38 PM

Quote:

Originally posted by TheOssusKeeper

I was wondering if one of you two or both could take a look and see if Iíve got it right so far

For your spells.2da CopyRow modifiers, you don't need to set the NewRowLabel column if you just want it to get the next free number in line. If you leave it out the application will do that automatically. At the end of the modifier list for each grenade, add one line that stores the row index of your new line for later use.

For Napalm, add:
Column: 2DAMEMORY1
Value: RowIndex

For Flash, add:
Column: 2DAMEMORY2
Value: RowIndex

For Shock, add:
Column: 2DAMEMORY3
Value: RowIndex

And finally for Combo, add:
Column: 2DAMEMORY4
Value: RowIndex

See below for more in-depth description of what this does.

Looking at the titlebar, do you have the patcher inside your Override folder? I wouldn't recommend this, since the game would attempt to load any (still unpatched) data files it encounters within the tslpatchdata folder as well.

Quote:

Originally posted by TheOssusKeeper
Basically I have no clue as to what the 2damemory thing is or how to use it

2DAMEMORY tokens are a way to temporarily retrieve a value from a 2DA-file and store it for later use. Think of them as memory-slots which can keep track of a value that can then be inserted into other places, like other 2DA files or GFF files. To use the above as the example...

2DAMEMORY1=RowIndex

...would look up the row index (ie line number) of your newly added line, and store it in the first memory slot. Aside from RowIndex, you can assign the label of any column in the 2da file to a 2DAMEMORY token, which will then store the value found in that column for the line you are currently adding or modifying.

You can then assign this token to any column (in 2da files) or field (in GFF files), which will make the patcher insert the stored value where the token is encountered.

If, for example, your new line ended up on line number 282 in Spells.2da, whenever 2DAMEMORY1 is assigned to anything, the patcher would insert the value 282 at that place.

This mechanism is used for linking together 2DA files that reference each other, or to insert 2da line references into other files, such as GFF format files.

Remember that instructions are processed in the order they are listed, so you must make sure that you have assigned a value to a 2DAMEMORY token before you try to access that value elsewhere.

When adding new lines, don't assign a value to a 2DAMEMORY-token at the very top of the modifier list since the line isn't added until you've assigned a value to at least one column. Thus the line does not exist yet at that point, and no value can be retrieved.


Quote:

Originally posted by TheOssusKeeper

or how to get the gff files working like they should be or how to get them to reference the proper lines [Row Label] of the spells.2da in the properties subtype correctly of the uti filesÖ

You use the 2DAMEMORY tokens for this. The four extra modifier lines I described adding above would store the line number in spells.2da for the napalm grenade in 2DAMEMORY1, the line number for the Flash grenade in 2DAMEMORY2, the Shock grenade in 2DAMEMORY3 and finally the Combo grenade line number in 2DAMEMORY4.

Now that you have those values memorized, you need to insert them into your item templates (UTI files) for your grenades.

To do this, you'll need to assign the memorized value to the field within the GFF format UTI file that stores which line in spells.2da is used by the grenade explosion.

Open your grenade template in a GFF editor to find what field this is. Find the PropertiesList field and expand it. If you haven't done anything odd, it should only contain one struct, labeled 0, in a grenade template. Expand this struct and find the Subtype field within it. This is what contains your 2da reference.

To describe how to find this field for the patcher we need to provide the full path in the tree to where it is. This is done by separating the different fields in the hierarchy with a backslash character.

So, back in ChangeEdit, select your napalm grenade under the GFF files heading. Fill in the input fields as follows:
Code:

GFF Field: PropertiesList\0\Subtype
Value: 2DAMEMORY1

Press the button with the red arrow pointing up to add your change to the list. Then select the Flash grenade and fill in...
Code:

GFF Field: PropertiesList\0\Subtype
Value: 2DAMEMORY2

Further, select the shock grenade and fill in...
Code:

GFF Field: PropertiesList\0\Subtype
Value: 2DAMEMORY3

And finally select the Combo grenade and fill in...
Code:

GFF Field: PropertiesList\0\Subtype
Value: 2DAMEMORY4

This will take the stored values and assign them in the GFF file to the field referring to the spells.2da file.


I'm terrible at explaining things but hopefully this make it at least a little clearer... :)

TheOssusKeeper 07-17-2005 05:47 PM

Stoffe, thanks, i'll give it a shot and see what happens...

also if you or someone else desides to make a guide or something, perhaps a visual guide, you can use my screen shots as part of the guide, for what to and not to do, if you like...

thanks again, i'll give it a whirl, :D

TheOssusKeeper 07-17-2005 08:25 PM

Ok Stoffe, here is a link to the screenshots of the fixed version, minus the install part... :D

http://img346.imageshack.us/img346/6...1thru105bx.jpg

So far so good, i tried it using a clean spells.2da file and it seems to be working perfectly, i also tried it with a dirty spells.2da :D and it seems that it updated and or replaced all the necassary files and the ones i already had copies of i.e. .ncs and the .nss files it skipped... but all still seems to be working good...
again if you or someone else plans to make a guide (visual) you can use my screenshots if you like (unresticted)...

Once again thanks a million, i wouldn't have gotten this thing to work without your help... :thumbsup: Kudos on the TSLpatcher it is a miracle, hehe

stoffe 07-18-2005 05:32 AM

Quote:

Originally posted by TheOssusKeeper
it seems that it updated and or replaced all the necassary files and the ones i already had copies of i.e. .ncs and the .nss files it skipped... but all still seems to be working good...
Hmm, perhaps I should have mentioned this more specifically since you aren't the only one who has done that mistake, so it isn't obvious how it works... :)

Files modified by the patcher are copied to the override folder while they are modified (only if they didn't already exist there in the case of 2da files).

Thus, 2da files or GFF files that the patcher has changed something in should not be added to the InstallList of files as well, since they have already been installed when they were modified. If done and you set them to just be copied the most you will get is a warning that the files already exists.

However if you set them to replace existing files in the InstallList you will overwrite the GFF files the patcher has just modified with new unmodified copies from the tslpatchdata folder, which you usually don't want. :)


You should also replace the content of the info.rtf file in the tslpatchdata folder with either the readme or some kind of installation instructions. This is the text that is displayed in the main window when the installer is started.

TheOssusKeeper 07-18-2005 06:09 PM

Quote:

Originally posted by stoffe -mkb-
Files modified by the patcher are copied to the override folder while they are modified (only if they didn't already exist there in the case of 2da files).

However if you set them to replace existing files in the InstallList you will overwrite the GFF files the patcher has just modified with new unmodified copies from the tslpatchdata folder, which you usually don't want. :)

So basically, they (the gamers) needs to have a clean override folder (free from the files in the InstallList), correct?

So in order for someone to use this mod (if they already have a previous version) they would need to delete all the old files first, correct?


See I thought that the patcher copied all files to the override, then modified the necessary files... the copied files would overwrite the current ones and then the patcher would modify them and the ones that didn't get copied, like the 2da file would just simply be modified... :confused: maybe in the next beta release, it could work this way, that way you wouldn't have to worry about what gets overwriten as far as the uti files and the script files go anyway, and then everything gets modified after everything is copied to the override... (don't know if this will work or not, just an idea though :D)

ok, but i think i get the read me file thing, though :D

PS. if you could download my mod at pcgamemods.com (if you hadn't already) and take a look at it for me? please...

Thanks in advance :thumbsup:

stoffe 07-18-2005 06:56 PM

Quote:

Originally posted by TheOssusKeeper
So basically, they (the gamers) needs to have a clean override folder (free from the files in the InstallList), correct?

So in order for someone to use this mod (if they already have a previous version) they would need to delete all the old files first, correct?

Files that are just copied over and not modified in any way should preferably not be present in the override folder already. This is just like any other mod, if two mods uses files that are named the same they are incompatible. If the patcher encounters an already existing file it shouldn't modify (ie on the InstallList), it will skip that file and print a warning in the progress log that the file already existed, to alert the user to a possible mod conflict.

If, however, you are making an updater for a previous version of your mod and you can be reasonable sure (by unique file naming) that the existing file is in fact from a previous version of your mod, you should set the InstallList to replace rather than copy that file. Then the patcher will copy the file from tslpatchdata and overwrite the file with the same name that already existed in Override. This will allow you to install a new version on top of an old one without the user having to delete anything manually first.

Only set the replace flag for files in the InstallList you can be reasonably sure are from your own mod(s), since it might mess up already installed mods otherwise.


Quote:

Originally posted by TheOssusKeeper

See I thought that the patcher copied all files to the override, then modified the necessary files... the copied files would overwrite the current ones and then the patcher would modify them and the ones that didn't get copied, like the 2da file would just simply be modified... :confused:

Things are done in this order, provided that the instructions are present to do it.

1) The contents of append.tlk (if present) is added to the user's dialog.tlk file.

2) 2DA files in the 2DAList are updated.
a) If the 2da file does not exist in the user's override folder, the patcher looks in the tslpatchdata folder for it. The file is then copied to the override folder.
b) If the 2da file exists in the override folder, either from a previous mod, or from just having been copied there from the step above, the 2da file (in override) is modified according to instructions.

3) GFF format files in the GFFList are modified. If a file with the specified named already exists in override, that GFF file is modified. If the file does not exist, the file is copied from tslpatchdata to Override, and the copy in override is then modified.

4) File hacks are performed. This will never modify files that already exist in override. If no file with matching name exists, it is copied from tslpatchdata to override, and the copy is then modified. If the file already existed, the patcher will issue a warning and skip the file, unless you've instructed it to overwrite that file if it existed.

5) The installlist is processed. This should only contain files that the patcher hasn't done anything with in any of the above steps (since those steps have already copied the relevant files to override if necessary). The listed files are copied from tslpatchdata into the folders which are specified.

TheOssusKeeper 07-18-2005 07:07 PM

i am sorry stoffe, but it must really be frustrating for you, trying to explain all this stuff, but on a lighter note, i think that last part helped me a lot, thanks ;)

Well, now i know, i think i need to go fix my mod again :rolleyes: i'll get it right this time :thmbup1: (i hope, hehe)

stoffe 07-20-2005 03:04 PM

{snip} - reference to "unecessary comment" in previous post deleted- d333

I've tried to explain things as best I can, but I know I'm terrible at explaining things. It's probably better to leave the explaining to someone else who's good at it (and is more proficient with English than I am). I've done the best I can to clarify things, if that's not enough there's nothing more I can do about it I'm afraid. :(

The TSLPatcher is a mod installer of a sorts, that is capable of adding information to certain types of files rather than just overwrite them if it already exists. It is by no means the final answer to making mods compatible, and it's only really useful for a limited type of mods. But for that type of mods it's at least better than nothing, IMHO, and can make installation a bit less of a headache for the non-modding end user. :)


Quote:

Originally posted by MacLeodCorp

What does it do to the .2da file specifically, and why does it do it? I don't want to hear, it modifies the files so it is compatible.


That depends on what it has been instructed to do. It is capable of adding new lines to a 2da file (either from scratch or by copying an existing line and modifying its values), modify values on existing lines and add new columns to 2DA files. This is done from a set of instructions created by the maker of the mod that it is supposed to install.

I originally made the application in order to make it easier to install and distribute a Force Powers mod I created. Since spells.2da is modified by a lot of other mods, the TSLPatcher was made to add the necessary lines at the end of the existing file in override, saving people the trouble to manually merge the 2da files and link things together. Thus it should be compatible with any other force power mods that people may already have installed.

Also, since distributing dialog.tlk in its entirety is a bad idea, I needed some way to include the necessary text without including the full 10 Meg file, and (hopefully) avoid changing the language of the player's game if they have non-english versions.

Quote:

Originally posted by MacLeodCorp

Why would you want to change anything in this file? (dialog.tlk)

Personally I needed it for my force powers mod. The force power names and description text needs to be added to dialog.tlk in order for the game to display it. Shipping the whole file with the mod would have made it incompatible with any other mods that modify dialog.tlk, would have added about 2 Meg to the download size, and would have caused trouble for non-english games. So I made the TSLPatcher add the necessary text entries to the already existing dialog.tlk file of the user who installs the mod. The patcher then modifies the spells.2da file to point to the correct StrRefs for these text entries.

The Source 07-20-2005 03:07 PM

Oky, maybe this could help you!?

1. If I remember right, your program has defaults to open. However, those defaults are not the items that I the modder modified. To prevent confussion, I would delete those defaults, and just make a label that says: "Choose your .utis, .2da, etc...". Depening on what you need to alter.

2. I would also make it possible to choose, one .2da file with multiple .uti/,utc files. I think that would make some ease.

3. Now, I don't need to choose certain items, but your programs asks for them. That creates confusion. I would have the program open only files that need to be opened, and not files that have nothing to do with your edits. Example: dialouge.tlk may need to be open for all edits, but .uti does not need to be open.

4. Create a comprehensive readme, which states: If you altered these types of files, then the patcher needs to patch these files, so your mod can work.

5. Create a comprehensice readme, which explains how to install the patcher.

6. Delete your example files from the data folder, for it creates confussion. Exlpain certina important details in a readme, and use some screens.

I know you worked really hard on this program, and I thank you for everything you have done. Please don't take my posts as harshness. I really do enjoy and utilize your programs.

stoffe 07-20-2005 03:30 PM

Quote:

Originally posted by MacLeodCorp


1. If I remember right, your program has defaults to open. However, those defaults are not the items that I the modder modified. To prevent confussion, I would delete those defaults, and just make a label that says: "Choose your .utis, .2da, etc...". Depening on what you need to alter.

2. I would also make it possible to choose, one .2da file with multiple .uti/,utc files. I think that would make some ease.

3. Now, I don't need to choose certain items, but your programs asks for them. That creates confusion. I would have the program open only files that need to be opened, and not files that have nothing to do with your edits. Example: dialouge.tlk may need to be open for all edits, but .uti does not need to be open.

Sorry, I'm not sure I understand what you mean? If you set the TSLPatcher to installer mode, the only thing the user should have to select is the folder where the game is installed, not any individual files. Then it's up to the mod-maker creating the INI file with instructions to determine which files should be modified and link them together as necessary, and put the necessary files the patcher needs in the tslpatchdata folder.

Quote:

Originally posted by MacLeodCorp

4. Create a comprehensive readme, which states: If you altered these types of files, then the patcher needs to patch these files, so your mod can work.
5. Create a comprehensice readme, which explains how to install the patcher.

Doubtful this is going to happen. I can think of few more boring things to spend my free time with than sitting for days writing comprehensive documentation for something only a handful of people use anyway. :) Especially with my english skills being what they are, and I doubt instructions written in my native language would be all that helpful to most people. :)

I try to answer specific questions to the best of my ability though if people wonder how to do something or if there is something unclear about how a specific feature works.

Quote:

Originally posted by MacLeodCorp

6. Delete your example files from the data folder, for it creates confussion. Exlpain certina important details in a readme, and use some screens.

I left a few files in there as an example of how things are laid out. I usually find it easier to learn new things if I have examples to look at. But if it is more confusing than helpful I suppose I could remove all example files from the next version when I upload it.

TheOssusKeeper 07-20-2005 06:23 PM

i think maybe Chainz knows a little about it, maybe T7 (not sure), i myself have only started using it, but i do know you can use it to edit any existing line in a 2da or add new lines or copy a line from a 2da and replace some if not all of the column values as you see fit... thats why i was saying the other day there shouldn't be any compat issues with your heads.2da and your appearence.2da if you edit them with the tslpatcher in the proper order... And correct me Stoffe if i'm wrong but don't you need to set the values for the head.2da first before the appearence.2da? :)

TheOssusKeeper 07-20-2005 06:37 PM

this may help some... i hope :)

What if you (Mac) or anyone for that matter that had questions about the TSLpatcher set down and posted a list of questions, all questions that you may have and then everyone that has used the patcher or has experience with the patcher set down and answered these questions, wouldn't that be a step in the right direction to making a comprehensive guide, then someone could take all the answers and make an understandable guide from it and even place all of the questions and answers in the guide, kinda' like an appendix, would that help?

i'll also post this in the TSLpatcher thread as well...

stoffe 07-21-2005 10:34 AM

Bugfix version released.
 
I have uploaded version 1.1.4 here, it's a quick bugfix version for a bug that I just ran into.

Due to a bug in the code saving GFF files, a few files laid out in a particular way would become corrupted when they were saved (about 2 out of 20 of the files I tested with were affected). This is now fixed in v.1.1.4, and it seems to save all GFF files I've tested with properly.

This file contains only the fixed TSLPatcher.exe, since TalkEd.exe or ChangeEdit.exe haven't been modified since v.1.1.2.

Sorry about not spotting this error earlier, but since I haven't heard from anyone else about it I guess no one else has run into it yet anyway. :)

If you have made an installer with the patcher for a mod, and that mod works fine when installed, your files aren't affected by the bug and there's no need to repackage your mod with this version. But if you make a new mod that uses the patcher I'd suggest using this version instead.

* * *

As for the next full version with the new features that were requested, I've got a bit more free time to spare now and will get to work on it shortly.

Jeff 07-21-2005 11:06 AM

Great! Glad you are still updating it. I never ran into the problem, but I was bound to eventually had you not. I have found this useful for I think 3 mods already, and plan on using it again in an upcoming mod.


All times are GMT -4. The time now is 08:30 PM.

Powered by vBulletin®
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
LFNetwork, LLC ©2002-2011 - All rights reserved.