AuroraExt is a collection of tools to overcome cerain limitations of the original Neverwinter Nights (NWN) Aurora Toolset and the NWN module development process. Probably the most handy tool is the Dialog Compliler, which allows to write NWN conversations using a normal text editor and then compile it to an NWN dlg file. Thus you can use search&replace, spelling correction and version management with your dialogs.
See also
http://sourceforge.net/p/auroraext/wiki/AuroraExt/
http://sourceforge.net/projects/auroraext/
If you have any questions not covered here don't hestitate to PM me.
Dialog Compiler
Probably the most handy tool is the dialog compiler (dlgc). A dialog can be written down as a simple text file (.dlgsrc) using your favourite text editor and then compiled it into a real dialog. This allows you to use automated spelling correction, text compare or version control (e.g. SVN) tools on your dialogs. Using the later multiple people may simultaneously work on dialogs and thus module in a collaborative way. It comes together with the watcher, a tool that monitors a certain folder for changes in .*src files and automatically compiles them into the temp0. So saving your changes to the .*src will result in the file to be recompiled to NWN.
Example:
: Start
. Hello!
>> ?no_name Who are you?
... !say_name I an an NPC.
>>>> Thank you. Now that we know each other, I want to ask you something... -> SubDialog
>> I want to ask you something... -> SubDialog
>> [Stand back.]
: SubDialog
. What do you want to ask me?
>> Something.
>> Nothing.
The dialog compiler also issues warnings and errors about certain situations that might cause problems later. E.g. if you specified a script that doesn't exist. These warnings and errors appear in the form "WARNING in line 1234:" or "ERROR in line 1234:", so you can easily find the line where something went wrong.
GFF Compiler and Disassembler
Just like dialog files can be written down in plain text so can GFF (Generic File Format) files too. Almost all NWN files are in GFF, most notably the Aurora templates (.ut?) for creatures (.utc) and items (.uti). Now you can edit them using your favourite text editor and compile them using the GFF Compiler (gffc). In contrast to dialog binaries, GFF files can easily be disassembled from binary to textual form. This allows you to convert existing templates into text files, modify them and later compile them back.
Example (shortened):
Appearance_Head = 13
BodyPart_Belt = 0
BodyPart_LBicep = 1
BodyPart_LFArm = 1
[...]
ItemList/[0]/InventoryRes = nw_wbwxl001
ItemList/[0]/Repos_PosX = 0
ItemList/[0]/Repos_Posy = 0
ItemList/[1]/InventoryRes = nw_it_torch001
ItemList/[1]/Repos_PosX = 2
ItemList/[1]/Repos_Posy = 0
[...]
ScriptAttacked = x2_def_attacked
ScriptDamaged = x2_def_ondamage
ScriptDeath = x2_def_ondeath
ScriptDialogue = x2_def_onconv
Jrl Compiler and Disassembler
Another format that utilizes GFF is the journal file (.jrl). While it could fully be represented by gffsrc already, the jrlsrc text format simplifies the notation of journal files. It comes with an own Compiler and Disassembler specialized in journal sources (.jrlsrc).
Example:
: Category
Name = My Journal Category
Tag = The_Tag_of_this_Category
Priority = MEDIUM
XP = 1000
+ Entry
ID = 1
Text = This is the first entry within this category.
+ Entry
ID = 2
Text = This is the second entry marked as End.
End = 1
HAK Assembler
Another handy tool is the HAK assembler (hakasm). It allows you to assemble a new HAK file out of several existing ones. Collisions between objects can be avoided by transforming commands. E.g. if you want to use the hak files hak_a and hak_b in your module, but both have a pfh0_chest001 inside, which you want to use both, you can transform these into pfh0_chest100 and pfh0_chest101 with little effort automatically and without having to manually edit the corresponding 2da.
Example assembly file:
output: example.hak
title: My Title
url: http://my.url.org
description: My multi-line description\nSecond line\nThird line
load hak_a.hak
load hak_b.hak
trafo hak_a.pfh0_chest 1 100
trafo hak_b.pfh0_chest 1 101
strreplace pfh0_chest100.mdl "pfh0_chest001" "pfh0_chest100"
strreplace pfh0_chest101.mdl "pfh0_chest001" "pfh0_chest101"
cp nwn.ipf_chest001.plt ipf_chest100.plt
cp nwn.ipf_chest001.plt ipf_chest101.plt
cp hak_a.pfh0.*
add my_file.2da
Subprojects:
Download and Install
Attachment | Size |
---|---|
![]() | 857.34 KB |
![]() | 5.68 KB |
![]() | 863.86 KB |
![]() | 874.04 KB |
![]() | 900.56 KB |
![]() | 936.77 KB |
I finally got around to setting up AuroraExt just to compile a dialog src for ADWS. Fired it up this morning to see if your lasted ADWS release had nailed down a handful of grammer issues I'd seen in some dialog.
After mucking about with it some more, all I can say is "What a sledge hammer!". I've hated using the tool-set dialog editor like forever! Just your dialog compiler alone is worth a "10+" from me.
Managing the dialog files for my modules, has always been a major pain. Just being able to easily add construction comments to the dialog src is priceless, if you have to figure out months later just exactly what you were doing with an unfinished section of the dialog tree.
Not to mention the conversation system I use has me jumping back and fouth, between a .nss file filled with starting conditionals, action commands, and the dialog file constantly. Thank you... thank you... thank you! Your dialog compiler just made my life ever so much simpler!
I only regret is that I had a copy of AuroraExt I downloaded almost two years ago, but couldn't quite find the time to set it up to have a look at what it could have done for me!
The dialogue compiler is a beast!
New version contains preprocessor functionality for dlgc and Bugfixes.
See: https://sourceforge.net/p/auroraext/wiki/Downloads/
Latest Binary Release:
https://sourceforge.net/projects/auroraext/files/Releases/auroraext_2016-12-22.zip (387)
Have a look at the installation page:
https://sourceforge.net/p/auroraext/wiki/AuroraExt/#download-and-install
You have to open the module in the Toolset before you start the watcher.bat
This creates a %NWN_Path%\modules\temp0 file where the toolset deflates all module files.
The watcher will then compile dlgsrc into that directory.
can dlg be DEcompiled ? search in toolset completely ignore any scripts (Text appear when/Action taken)
to find any script related stuff i need to make all dlgs in to plain text.
No, it can't.
You could however disassemble the dlg into text using GffDisassembler and search it. This requires some Java programming skills though and the disassembled text is not readable for the unskilled eye.
You could achive a similar result using NWNExplorer's Export Text functionality. Click on the dlg, then select the Raw Hierarchy Tab and then Expor Text. The resulting text is searchable, but not really readable.
Hey prwo, now that nwn:ee is a thing, and is currently being actively developed, have you given any thought into perhaps how your work with this could be incorporated into the new toolset functionality? Or, perhaps not even that, maybe similar functionality of being able to work with plain text documents and import/exporting them directly into a project, etc.
I haven't really used this, since I stopped playing around with modules some time ago. But, I've always thought it was neat that you overed this suite. If I were to get back into making something, I'd definitely look into using this. But, then, maybe you could offer ideas to Beamdog as to what is deficient in the original toolset? This just came to me when I was thinking this and that.
Thank's a lot for the hint. I wasn't aware that there is a NWN:EE and that there is now a commercial drive behind NWN again. That allows for some new opportunities.
I've already looked into the Beamdog forum and at least the suggestions there sound promising.
Hey prwo, look at this:
It's from the latest patch. This is the thingy you were mostly interested in, right? Useful?
Thanks a lot for the hint. Patch 8164 looks very promising: http://blog.beamdog.com/2018/03/neverwinter-nights-enhanced-edition_16.html
The IDENTIFIER LIST FULL was on of the biggest issues in NWN Aurora. They have finally addressed it.
https://forums.beamdog.com/discussion/69097/request-please-extend-the-size-of-the-identifier-list
But that looks even more promising:
Uploaded the latest version: auroraext_2022-06-05