Updated AMS marker feats. Removed arcane & divine marker feats. Updated Dread Necromancer for epic progression. Updated weapon baseitem models. Updated new weapons for crafting & npc equip. Updated prefix. Updated release archive.
		
			
				
	
	
		
			285 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			285 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| IMPORTANT NOTES
 | |
| ===============
 | |
| 
 | |
| This tool REQUIRES version 1.0 of the Microsoft .NET Framework,
 | |
| this is available for download at:
 | |
| 
 | |
| http://www.microsoft.com/downloads/details.aspx?familyid=D7158DEE-A83F-4E21-B05A-009D06457787&displaylang=en
 | |
| 
 | |
| 
 | |
| GENERAL INFORMATION
 | |
| ===================
 | |
| 
 | |
| HakInstaller is a tool that allows you to easily add player based haks
 | |
| to modules.  A player based hak is a hak whose contents are intended
 | |
| for the player, rather than the module designer.  For example the PRC
 | |
| Consortium's PRC pack.  I wrote this tool because I got sick of having
 | |
| to add these haks to module after module as I played them, and having
 | |
| to remember to do all of the steps correctly (often forgetting one).
 | |
| Two versions of the tool are included, a windowed version and a command
 | |
| line version.  The command line version is suitable for being invoked
 | |
| from batch files (or even NWNX) whereas the full UI version is more
 | |
| suitable to the individual player.
 | |
| 
 | |
| The application takes a 'hak' (in this case a 'hak' is a collection of 
 | |
| one or more hak, erf, and tlk files, and adds/merges them (as appropriate)
 | |
| to a module, and also sets up any required module event that the hak
 | |
| may need to handle to work correctly.  If the module already has scripts
 | |
| attached to the events, then the tool will create a new script that
 | |
| executes both the old script and the haks's script.  In a nutshell, this
 | |
| allows you to add haks to a module by pressing a button and letting the
 | |
| tool do all the work, rather than you having to go through a checklist
 | |
| of steps, possibly missing one.
 | |
| 
 | |
| The tool gets the configuration information for a hak from hif files
 | |
| (hak information), these files are text files that contain configuration
 | |
| information, THEY SHOULD BE PLACED IN YOUR NWN HAK DIRECTORY, the tool
 | |
| will look for them there.  The tool comes with hif files for the PRC
 | |
| Consortium's PRC pack, my spell pak, and the PRC merge version of my
 | |
| spell pak, but there is nothing to stop anyone else from making hif
 | |
| definitions for other haks.
 | |
| 
 | |
| If all you want to do is use the tool to add the PRC pack or spell pak
 | |
| to modules, just copy the hif files into NWN's hak directory and double
 | |
| click HakInstaller.exe.
 | |
| 
 | |
| To use the windows UI version just double click on HakInstaller.exe,
 | |
| it will present you with a list of haks that have hif files on the left
 | |
| and a list of all of your installed modules on the right, check the haks
 | |
| that you want to install and check the modules you want them installed
 | |
| in and click install, it will then add/merge the hak content to all of
 | |
| your selected modules.  If there are any file conflicts (for example,
 | |
| suppose you merge the prc pack hak into a module that has changed some
 | |
| spell scripts, a warning dialog will be displayed showing you the files
 | |
| that are going to be overwritten asking for your permission to overwrite
 | |
| them.  You can check the files you want to overwrite in the module (by
 | |
| default they are all checked) and you can view the hak / module scripts
 | |
| in wordpad to compare them.  To view a script file, select it then right
 | |
| click in the list box, you will get a menu.
 | |
| 
 | |
| To use the command line version run it from the command line, passing it
 | |
| all the .hif and .mod files you want to use on the command line.  It will
 | |
| then do the same thing as the windows UI version, except that it will not
 | |
| warn you about overwriting files, it will just overwrite them.
 | |
| 
 | |
| Both versions of the tool read your NWN installation information from
 | |
| the windows registry, if you are running the tools on a PC other than the
 | |
| one that NWN is installed on (or you are running them under mono on linux)
 | |
| then you must use the -n<path> command line option to specify the install
 | |
| path of NWN.
 | |
| 
 | |
| 
 | |
| FOR CONTENT CREATORS
 | |
| ====================
 | |
| 
 | |
| While my utility was designed for the spell pak (now deceased) and PRC
 | |
| pack, anyone making player based haks can take advantage of the tool to
 | |
| install their content into modules.  All you need to do is write the
 | |
| HIF describing the content of your 'hak' and package that along with
 | |
| the installer (just give me credit for the installer) in your shipping
 | |
| file (zip, rar, whatever).
 | |
| 
 | |
| To facilitate this, version 2.0 (and later) support running in single HIF
 | |
| mode; this is done by passing a HIF on the command line.  If this is done
 | |
| the list box of HIFs will not be shown, instead the application will reskin
 | |
| to just list modules and the title of the application will be your HIFs
 | |
| Title, or the file name if the HIF has no title.
 | |
| 
 | |
| To make support easier the installer will validate all of the files described
 | |
| in your hif are present on disk, if for some reason they aren't then an
 | |
| error message will be displayed and the HIF will not be added to the list of
 | |
| HIFs (if in single HIF mode the application will just exit).
 | |
| 
 | |
| You can also specify a minimum NWN version, and whether you require XP1 and
 | |
| XP2 installed, if the installed version of NWN does not meet the requirements
 | |
| you specify then the install will fail as above.
 | |
| 
 | |
| The tool supports tlk file merging between the module's tlk file (if it has
 | |
| one) and any tlk files contained in the HIF.  You may specify multiple tlk
 | |
| files in the hif, at run time the tool will attempt to build a single tlk file
 | |
| by merging all of the HIF tlk files with the module tlk file.  If this is
 | |
| successful then that tlk file will be used for the module, if it fails for any
 | |
| reason (most likely entries being used in duplicate tlk files) it will display
 | |
| an error message and abort adding the content to the module.  In order for the
 | |
| merge to succeed, none of the tlk files can have strings at the same location,
 | |
| for example if tlk1.tlk contains "foo" at entry 100 and "tlk2.tlk" contains
 | |
| "bar" at entry 100 then the merge will fail.  The lone exception to this is
 | |
| that multiple tlk files may have "Bad Strref" at location 0, it will ignore
 | |
| all of the duplicates in this case.
 | |
| 
 | |
| The tool supports 2da file merging between the module's haks (if any) and
 | |
| any 2da's contained in the HIF.  The tool will attempt to generate a merge
 | |
| hak (and place it at the top of the hak list) containing merged copies of
 | |
| all of the conflicting 2da's.  If for some reason any of the 2da's cannot
 | |
| be successfully merged the tool will still attempt to merge any other conflicting
 | |
| 2da's.
 | |
| 
 | |
| If a merge hak and/or tlk were generated it will tell the user so that they
 | |
| can delete the files when they are finished with the module.
 | |
| 
 | |
| 
 | |
| VERSION HISTORY
 | |
| ===============
 | |
| 
 | |
| 2.5 - Added support for 1.69 patch XP3.bif/key also for the OnPlayerChat
 | |
| event.
 | |
| 
 | |
| 2.2 - Enhanced the 2da merging logic.  The installer can now merge changes
 | |
| made by multiple haks to the same row as long as the row is a modified bioware
 | |
| row and no 2 haks change the same column with a different value.  Various
 | |
| bug fixes.
 | |
| 
 | |
| 2.0 - Various bug fixes.
 | |
| 
 | |
| 2.0 Beta 2 - Various bug fixes, CEP HIF.
 | |
| 
 | |
| 2.0 - Added Title, Version, and MinNWNVersion keywords to the HIF scripts.
 | |
| Changes to support a single HIF skin if a HIF is passed on the command line,
 | |
| allowing content creators to use the installer as their dedicated "install"
 | |
| program to update modules.  Added HIF content checking, the installer now
 | |
| validates that all files described in the HIF are actually present on disk,
 | |
| displaying an error message (and not installing the HIF) if they are not.
 | |
| Added the ability of HIFs to specify a minimum required version of NWN, the
 | |
| HIF will not install if the user's version of NWN is less than the required
 | |
| version.
 | |
| 
 | |
| Added support for merging conflicting tlk files and creating a merge tlk file
 | |
| to be used by the module.
 | |
| 
 | |
| Added support for merging conflicting 2da files across all HIFs and creating
 | |
| a merge hak containing merged versions of the 2da's.
 | |
| 
 | |
| 2.4 - Synced version with module updater, fixed bug to make the installer work
 | |
| with 2da items with spaces in them.
 | |
| 
 | |
| 1.41 - Recompiled for .NET Framework 1.1.  Fixed a bug adding heartbeat
 | |
| events.
 | |
| 
 | |
| 1.4 - Added support for adding areas to modules in the HIF.  Added support
 | |
| for BMU music files in erfs/haks/modules.
 | |
| 
 | |
| 1.32 Fixed duplicate key bug.
 | |
| 
 | |
| 1.31 Fixed a bug that caused the window to not come up centered.  Changed
 | |
| the content check list box to be single selection, since this was causing
 | |
| some confusion.
 | |
| 
 | |
| 1.3 Changed to add any areas in added content to the module's area list to fix
 | |
| a bug introduced in 1.62.  Added support for the OC/XP1/XP2.  Changed the
 | |
| installer check to see if content has already been installed in modules, and
 | |
| warn the user before continuing.  Added extensive overwrite checking, it
 | |
| will now check the module and all it's haks vs. the content being added
 | |
| to make sure nobody overwrites anybody else.  Fixed the bug with GFF
 | |
| versions.  Fixed the bug with "imput string is not in the correct format".
 | |
| 
 | |
| 1.22 Fixed a bug that cause an exception if you did not overwrite replaced
 | |
| files.
 | |
| 
 | |
| 1.21 Updates HIF files for PRC pack 1.9
 | |
| 
 | |
| 1.2 Changed the replace file dialog so that you can selectively replace files,
 | |
| and view script files (.NSS) in wordpad.
 | |
| 
 | |
| 1.1 Fixed a bug that made certain ExoLoc strings crash the application.
 | |
| 
 | |
| 1.0 Initial version
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| APPENDIX 1 - SAMPLE HIF FILE
 | |
| ============================
 | |
| 
 | |
| The sample hif files contain comments in them that document the layout and
 | |
| syntax of a hif file, this appendix assumes that you have already looked
 | |
| at one of the sample hif files, I will go over the prc_consortium.hif file
 | |
| here and show what is happening.
 | |
| 
 | |
| First, here is the contents of the hif file (minus the giant comment at the
 | |
| top describing the format of hif files):
 | |
| 
 | |
| # Custom Content title and version number.
 | |
| Title : PRC Pack
 | |
| Version : 2.0
 | |
| 
 | |
| # Specify that the user must have both expansions installed and 1.62
 | |
| MinNWNVersion : 1.62, XP1, XP2
 | |
| 
 | |
| # Import there ERF files into the module.
 | |
| erf : prc8_consortium.erf
 | |
| 
 | |
| # Haks and custom tlk's used by the module.
 | |
| module.Hak : prc8_consortium.hak
 | |
| module.CustomTlk : prc8_consortium.tlk
 | |
| 
 | |
| # Events that need to be wired up.
 | |
| module.OnClientEnter : prc_onenter
 | |
| module.OnPlayerLevelUp : prc_levelup
 | |
| module.OnPlayerEquipItem : prc_equip
 | |
| module.OnPlayerUnequipItem : prc_unequip
 | |
| 
 | |
| # Cache PRC scripts for better performance.
 | |
| module.Cache : screen_targets
 | |
| module.Cache : prc_caster_level
 | |
| module.Cache : set_damage_type
 | |
| module.Cache : change_metamagic
 | |
| module.Cache : add_spell_dc
 | |
| module.Cache : add_spell_penetr
 | |
| module.Cache : add_damage
 | |
| module.Cache : add_damageshield
 | |
| module.Cache : add_randdamage
 | |
| module.Cache : add_healing
 | |
| module.Cache : add_hitpoints
 | |
| 
 | |
| 
 | |
| First there is a single erf given, prc8_consortium.erf.  The tool merges the
 | |
| contents of all erf files into the module, so all of the files in
 | |
| prc8_consortium.erf will be added to the module.  
 | |
| 
 | |
| It will then add prc_consortium.hak to the module's hak list (if multiple 
 | |
| haks are specified they will be added in the order they are in the hif 
 | |
| file, which means hak files listed first will take precedence over hak files 
 | |
| listed later).
 | |
| 
 | |
| prc8_consortium.tlk will be set as the module's custom tlk file.  
 | |
| 
 | |
| The scripts prc_onenter, prc_levelup, prc_equip, and prc_unequip will be added
 | |
| to the OnClientEnter, OnPlayerLevelUp, OnPlayerEquipItem, and OnPlayerUnequipItem
 | |
| module events.  If any of these events already have scripts attached, then
 | |
| the tool will create a new script, naming it "hif_<EventName>" (truncating to
 | |
| 16 characters) and will then add ExecuteScript() calls to execute the old
 | |
| script and the appropriate PRC script.
 | |
| 
 | |
| You will notice that the above steps are what the PRC pack's read me tell you to
 | |
| do to each module you add the pack to.
 | |
| 
 | |
| One final step has been added, which is a speed optomization.  The scripts
 | |
| screen_targets, prc_caster_level, set_damage_type, change_metamagic, 
 | |
| add_spell_dc, add_spell_penetr, add_damage, add_damageshield, add_randdamage,
 | |
| add_healing, and add_hitpoints will be added to the module's script cache.
 | |
| This step is not strictly required to get the PRC pack to work, however it
 | |
| will increase the speed at which the pack runs.  These scripts are called
 | |
| internally when any spell (or some feats) are used, adding them to the cache
 | |
| prevents the NWN engine from having to load them each time you cast a spell.
 | |
| 
 | |
| CAVEATS
 | |
| 
 | |
| The tool does not update the palette files, so any blueprint templates imported
 | |
| from erf's will not show up in the toolset until you right click in the
 | |
| appropriate custom palette and do a refresh.
 | |
| 
 | |
| The tool DOES NOT rebuild the module like the BioWare toolset
 | |
| does whenever you add a hak.  If a hak/erf that the hif is importing contains
 | |
| a modified BioWare script include file, then the module will not work properly
 | |
| without being recompiled in the toolset.  For haks like this you will still
 | |
| have to open the module in the toolset after HakInstaller is done and do a
 | |
| rebuild of the module.  For example if you use the tool to import a hif that
 | |
| overwrote the include file for the default combat AI, none of the changes would
 | |
| take effect on any of the module's creatures until you opened the module in
 | |
| the toolset and did a build (the include file is there but since no scrips have
 | |
| been recompiled none of them know about the changes).
 |