I know it can be done because I’ve seen modules do it, but google search only gives me material on changing the image on the loading screen (admittedly, extremely necessary and helpful).
But I’ve reached a point where it could be helpful to write my own tips on the loading screen, too, especially that some of the default ones are simply incorrect, like the one about identification costing 100 gp - my various shops have various ident costs.
So how do I do it?
This is controlled in the loadhints.2da. To change the text, you need to two things (well, technically there’s more than 2 things but I broke it down to just a basic overview):
- Write the text you want in the tlk for your module. Make sure to put that entry in a slot not being used by standard resources or any current resources you currently have. Standard resources use Strref heading, and Custom resources are much longer numbers and padded out from standard and even things like CEP.
- The number assigned in your tlk entry will now go in the loadhints.2da. In this 2da, there are only 2 columns you need to consider – “Hint” and “Campaign Only”. Set your value to “0” for Campaign Only, and insert your tlk entry value in the Hint row. Below is an example of one that I edited (using a simple 2da editor, but you can do this in Notepad):
I see, thank you. I don’t have a .tlk file for my module but I guess this would require making it. I’m not exactly sure what a .tlk is.
And assuming I manage to do that, how do I tell the game to use those lines and not other lines?
If you are going to create your own tlk, just bear in mind that you want it to be completely and backward compatible with the the standard tlk which you will find in your 0785 Folder. It will be called Dialog.tlk I believe. You’ll want to open it with a tlk editor ( I use Axe Murderer’s Killer TLK editor because, well, because it does what I want).
Once you have it opened – and saved as the name you want to give it – you can “pad” out your entries a ways to give yourself space between your custom content, and those from Bioware/Beamdog/CEP/etc. You can do this by going to the Edit tab and selecting Extend table. This will bring up a tool that will allow you to make your tlk as long as you want.
Now, for the loadhints.2da. The way that this works, at least to the best of my understanding, is that the game decides randomly which text (hint) to show on any given loadscreen. Obviously this can be filtered by changing the values in the Campain Only column. 0 value means it will show up at some point, randomly, in your module, 1 is for orig campaign, 2 for SoU, 3 for HoTU (I think but don’t quote me on that). 0 is the value you want though. If you don’t want a particular to appear, I would set the value to 3. This should filter it out, unless you are playing HotU, then not so much. Below is a sample where I put in my own loadhints in my custom tlk:
I see. So I would copy the default file and append things to it, is that right? Possibly modifying the existing bits to make them not appear in my module?
I’m afraid I left a few bits out, but you may know this already. Even after you make the necessary edits to your custom .tlk file and loadhints.2da, you still need to tell your module to “use” these things. For the loadhints.2da, you’ll need to create a hak and put that 2da in it. This is so the module will realize it has priority over standard resources. To do this, just open up your nwhak.editor, and drag and drop your modified 2da into it. Then save it into your “hak” folder and call it by any title you would like.
For your custom tlk, make sure to save it in your tlk folder in your main directory (where your settings.tml, and all of your regular folders like modules, haks, portraits, etc).
Next open up your module in the toolset. Go to module properties and go to the Custom Content tab. Here is where you tell your module what resources to use. You’ll select your newly created hak and add it to your hak list. And then you’ll select your newly made tlk in the “Custom Tlk File” section. When both are populated in the appropriate place, you may hit okay and hit Build module.
I see. Thank you so, so much for your help!
This is much more complicated than I thought.
My module already uses a custom .tlk file for CEP, which I totally forgot about. Does that mean I have to, like, merge the two somehow and edit that? I’m starting to debate the wisdom of doing this…
It’s really not that difficult once you get a sense of how it all works. Instead of using the standard dialog.tlk, you’ll use the cep260.tlk (assuming you are using cep 2.65). Same principle, except you’ll save a new version of this tlk under your own unique name inside of the tlk folder. When you create your new hak with loadhints.2da, make sure this resource sits at the top of your hak list so it takes priority over the cep haks.
It may seem convoluted at first, but if I can do it (not tech savy to say the least), anyone can do it.
I’ve even seen a PW changing the whole loading page, not just the picture or the text, the whole screen filled up with a custom image and text. Didn’t even know that was possible …
You can replace loadhints.2da with a new version containing only your module-specific hints.
Would that work without making a new tlk?
Still need your tlk. That’s where you actually type the language you want. The 2da is merely telling the game where to get the language.
Oooh, right. I see. Thanks again!
So I edited the cep .tlk file to add my lines, and created a new loadscreens.2da with only my hints (screen below), added that one to the hakpak, changed the tlk used in the module properties, and what happens is that now my module doesn’t show any loading hints at all. I understand that the old ones are gone as per the .2da, but the new ones aren’t retrieved somehow?
StrRefs in custom tlk files are not numbered from 0. Well, they are physically in the file, but the game interprets them as
16777216 (2^24) + StrRef. Such sum must go to your
loadhints.2da to make it work.
- currently your 200001 hint points to row 200001 in dialog.tlk, which is (should be) empty, ergo you see just empty text.
- to make it show the intended line from your tlk, change 200001 to 16777216+200001=16977217.
If you use tlkedit (in the Vault, needs java), it has a view option to show StrRefs in the tlk file in “user mode”, making it much easier to work with. 16900000 is a nice free zone.
BTW, you can prevent PC attacks on commoners by making all of them plot on spawn and turn that flag off when they become agro through script.
Yanno, it’s amazing how many of these surprises there are. Thank you very much for your help, it works now.
Wait, idents don’t cost 100gp in some shops?
No, the builder can adjust the Identify cost for each merchant in the toolset.
It’s commonplace to charge more when magic items are abundant and merchants are few (or just greedy) or charge less when the merchant is benign.
There’s no simple script function to change it, though.
That makes sense supply & demand pricing.
I recall in IWD, there was a primitive market price dynamic at play once you sold a certain amount of yeti pelts tve buying price dropped massively so you learned to save them all up in your party inventories them dump them all al once into the merchant to get a great price once.