• New Horizons on Maelstrom
    Maelstrom New Horizons


    Visit our website www.piratehorizons.com to quickly find download links for the newest versions of our New Horizons mods Beyond New Horizons and Maelstrom New Horizons!

Various tech support stuff

Ahhh! Notifications broke! I'm so sorry guys! I was supposed to get emails when there were replies to this!

Lasso select should work, especially if you use it on the 256x265 picture before shrinking it to 128x128 or 64x64. Any extra bits of the background left in, or small bits of the face clipped off, won't show up as much on the lower resolutions.

Or just leave the background there. As you'll have seen from my example, I didn't bother removing the background, I just clipped and resized the picture to show more face and less body at each lower resolution.

There's another option. The Build Mod doesn't have face portraits as such for soldiers. Their interface pictures are just a soldier silhouette on top of a flag. For example:
View attachment 41642
Simple enough
Before you put in too much effort, use TX Convertor to look at "face_47.tga.tx", which you should find in the "128" folder. For some reason, at least in my (European) version of the stock game, it's only in 128x128 resolution, there are no equivalents in the "256" or "64" folders.
View attachment 41644

However, someone made 256x256 and 64x64 versions for the Build Mod. The attached file contains the whole lot.

The only special English soldier I can think of in the stock game is Lieutenant Harris, the one who challenges you in Clement's lighthouse. He uses the officer model, not the basic soldier model, but that might be more appropriate for a character who is to be your officer anyway.
That guy's not EXACTLY what I'm looking for? But pretty close, though the soldier model I intend to use doesn't really have facial hair, his soldier model is called "soldier_eng5", which is why I need to create icons
Any place and angle to take a picture is entirely for you to decide. Some ideas might be to take it in a location close to where the character appears, or a location that has something to do with the character. For example, if you're making an English soldier, perhaps town walls and/or town gates could be visible in the background, or perhaps somewhere outside the governor's residence?

There is a way to enable free camera mode that can help with this but I don't remember how to enable it.

The game does not seem to handle the background for the 128 and 64 pictures itself - the background seems to be part of the picture. You could follow Grey Roger's suggestion and leave the background from the screenshot or do something like how it is in the Build Mod, but if you want the background in the 128 and 64 pictures to be consistent with the others you will have to extract the background from the icons.tga.tx file in RESOURCE\Textures\INTERFACES and downsize it as appropriate.


I'm not sure that I understand what you mean. Taking Rys Bloom as an example we can see in PROGRAM\Characters\init\Officers.c that his location is "Redmond_port", his location group is "goto", and his locator is "cityzen_1". Checking this in the game we can see that this is indeed the case:
View attachment 41643
He has just walked away from it a little. Had I wanted him to instead appear at "goto_3" next to it I would just change his locator to that. So, when you have found a location and locator where you would like a new character to appear you would have to check the file for that area - such as Redmond.c - as well as these files, all in PROGRAM\Characters\init:

Officers.c
StoryCharacters.c
TempQuestCharacters.c
TempQuestEnemy.c

You'd check them to make sure the locator you have chosen isn't occupied. Say you want someone to appear at "goto_3" in Redmond port, you could search for that locator in the files and see if that location and locator is in use by anyone else. If it isn't then you can use it, if it is then you have to pick another locator.

Does this help anything or have I misunderstood what you mean?
Also simple enough, though what I had in mind is more or less in a tavern... If you want, I can explain my idea behind this unique officer?

Everything seems alright, though I couldn't imagine the process for say creating a NEW locator...
 
Everything seems alright, though I couldn't imagine the process for say creating a NEW locator...
For that, you'll need TOOL:
http://piratesahoy.bowengames.com/Cloud/Tools/Modeling+Texturing/Inez Dias Tool.rar

But before you create a new locator, see what is already there in the tavern. You already know how to make locators visible; do it again, then go into the tavern where you want your soldier and look for a locator near where you want him to be.
 
For that, you'll need TOOL:
http://piratesahoy.bowengames.com/Cloud/Tools/Modeling+Texturing/Inez Dias Tool.rar

But before you create a new locator, see what is already there in the tavern. You already know how to make locators visible; do it again, then go into the tavern where you want your soldier and look for a locator near where you want him to be.
Yeah, I never turned off locators, I have a pretty good idea where I want him standing, the closest marker is goto16 in the tavern, if anything, that's where I want him standing PRECISELY... or close to it, should I consider an alternate standing spot? Or would this still work?
 
If you put him on "goto16", that's exactly where he'll be. If you use:
Code:
LAi_SetStayType(CharacterFromID("This Character"));
... he'll stand there rather than wander around, and you should be able to talk to him. (Replace "This Character" with the character's ID, of course!)
 
TOOL should be safe enough, it's in use by various modders who want to add locators, including me.

Note that locators aren't in the model file. I don't know which tavern you intend to use, but you should find it somewhere in "RESOURCE\MODELS\Locations\inside". For example, the tavern in Redmond is in "RESOURCE\MODELS\Locations\inside\Largetavern", the model of the tavern interior is "LT.gm" and the locators are in "LT_L.gm".
 
TOOL should be safe enough, it's in use by various modders who want to add locators, including me.

Note that locators aren't in the model file. I don't know which tavern you intend to use, but you should find it somewhere in "RESOURCE\MODELS\Locations\inside". For example, the tavern in Redmond is in "RESOURCE\MODELS\Locations\inside\Largetavern", the model of the tavern interior is "LT.gm" and the locators are in "LT_L.gm".
The one in Redmond, not sure how to designate this in the Officers.c file, but I think it's "<island>_tavern"? Where <island> is the island of your choice?

Something tells me I should probably go over my idea on what I intend to do with this idea?
 
The one in Redmond, not sure how to designate this in the Officers.c file, but I think it's "<island>_tavern"? Where <island> is the island of your choice?
To be more precise, it's "<town>_tavern", where <town> is the town of your choice. In the stock game, towns and islands almost all have the same name, with one exception. Greenford is the second town on Oxbay and has its own tavern.

I'd certainly be interested to see what you are planning!
 
To be more precise, it's "<town>_tavern", where <town> is the town of your choice. In the stock game, towns and islands almost all have the same name, with one exception. Greenford is the second town on Oxbay and has its own tavern.

I'd certainly be interested to see what you are planning!
Okay, here's the pitch

The name I have in mind is "Rex Hathaway", not sure what names were like back then, so I just kinda figured that'd work, he's a soldier for the English Navy, he recently got put on leave by the governor because he "asked too many questions", having heard about the relics and his plans in the Incan temple, so the soldier just kinda hangs out at the tavern until he meets me, which he explains what happened, his theories, and things like that, also asking he can join, of course the dialogue would provide options to say no, to which the soldier will remind me that he'll be there if I change my mind, and the way I would set him up, is he'd be an "essential companion" of sorts. inspired off of Fallout, of course the tradeoff here is he should not be set as a captain of any vessel, if I want English soldiers to captain a vessel, I'll probably use other models/the generic officers, just depends really

Hmmm... this does look to be pretty in-depth... of course, what's worse, is that the dialog file seems to call for Dialog.snd options, and I don't see such sound files in the RESOURCE/VOICES or anything folder, so I've hit a bit of a block...
 
Last edited:
If you want your new character to be in a tavern, perhaps the screenshot of him could be taken there? As Grey Roger mentioned if you place him on "goto16" he'll be there. I don't think that locator is ever used by anyone else, so it should be fine to use it.

If you want the 256 picture to be consistent with the pictures for other characters you won't need to add a frame. Only the 128 and 64 pictures have frames in the stock game.

With making him "essential" like in Skyrim and Fallout, do you mean that he shouldn't be able to be killed? That can be done by adding LAi_SetImmortal(ch, true); to his code block.

My understanding is that the "Dialog.snd" stuff is for something that was never implemented, so you can safely ignore it and it shouldn't cause any problems.
 
If you want your new character to be in a tavern, perhaps the screenshot of him could be taken there? As Grey Roger mentioned if you place him on "goto16" he'll be there. I don't think that locator is ever used by anyone else, so it should be fine to use it.

If you want the 256 picture to be consistent with the pictures for other characters you won't need to add a frame. Only the 128 and 64 pictures have frames in the stock game.

With making him "essential" like in Skyrim and Fallout, do you mean that he shouldn't be able to be killed? That can be done by adding "LAi_SetImmortal(ch, true);" to his code block.

My understanding is that the "Dialog.snd" stuff is for something that was never implemented, so you can safely ignore it and it shouldn't cause any problems.
Ahh okay, good! I was worried there for a moment, and sounds good, but for HIS picture, I want the lighting to be good, so somewhere outside in the daytime oughta work, I suppose?
 
The name I have in mind is "Rex Hathaway", not sure what names were like back then, so I just kinda figured that'd work, he's a soldier for the English Navy, he recently got put on leave by the governor because he "asked too many questions", having heard about the relics and his plans in the Incan temple, so the soldier just kinda hangs out at the tavern until he meets me, which he explains what happened, his theories, and things like that, also asking he can join, of course the dialogue would provide options to say no, to which the soldier will remind me that he'll be there if I change my mind, and the way I would set him up, is he'd be an "essential companion" of sorts. inspired off of Fallout, of course the tradeoff here is he should not be set as a captain of any vessel, if I want English soldiers to captain a vessel, I'll probably use other models/the generic officers, just depends really
A couple of thoughts - feel free to accept, modify or completely ignore them!
The navy would have its own way of dealing with troublemakers. Hathaway might mention that he spent the last few weeks scrubbing the decks or peeling potatoes.

Remember what happens to Raoul Rheims because Silehard suspects him of knowing too much about the relic and the temple? If Silehard arranged for Hathaway to be put on shore leave, it's probably because there's an assassin somewhere...

For interface pictures, there are several suitable places all in or around Redmond town. The outskirts, the jungle beyond, or Rocky Shore beach, could all work well. In town, if you don't want him inside the tavern, put him just outside the tavern instead. Otherwise one nice place is the port, just in front ot the town gate. If you get the character and yourself in the right place, you can get a shot of him framed by a couple of trees, with the rest of the port below and the sea behind.
 
A couple of thoughts - feel free to accept, modify or completely ignore them!
The navy would have its own way of dealing with troublemakers. Hathaway might mention that he spent the last few weeks scrubbing the decks or peeling potatoes.

Remember what happens to Raoul Rheims because Silehard suspects him of knowing too much about the relic and the temple? If Silehard arranged for Hathaway to be put on shore leave, it's probably because there's an assassin somewhere...

For interface pictures, there are several suitable places all in or around Redmond town. The outskirts, the jungle beyond, or Rocky Shore beach, could all work well. In town, if you don't want him inside the tavern, put him just outside the tavern instead. Otherwise one nice place is the port, just in front ot the town gate. If you get the character and yourself in the right place, you can get a shot of him framed by a couple of trees, with the rest of the port below and the sea behind.
Shore leave sounds closest to his story, however, scripting an assassin to appear in the tavern's a bit beyond my own knowledge, I'm already having enough trouble deciphering the dialog.c file for Rex alone, since it's from Rys' original file, I'm not quite sure how to make this one work, but I'm sure at some point I'll get it to work.

Sounds fantastic, in fact, if I take Rex to the Rocky Shore, I think I might have a great angle with my ship and some of the surroundings, though the jungle seems pretty good, too
 
With making him "essential" like in Skyrim and Fallout, do you mean that he shouldn't be able to be killed? That can be done by adding "LAi_SetImmortal(ch, true);" to his code block.
The other part of making him "essential", the way Danielle is protected later in the main story, is to make him unremovable:
Code:
SetCharacterRemovable(ch, false);

If you want to cancel his protection:
Code:
LAi_SetImmortal(ch, false);
SetCharacterRemovable(ch, true);

Another nasty thing Silehard could do is to pay the tavernkeeper a lot of money to keep giving Rex cheap drinks. Nobody is going to take tales of temples and idols seriously if the person telling the tales is permanently drunk - some locals might even buy him more drinks so that he tells them more tales that they can laugh at! If you wanted to do that, all you'd need is to make his first few lines of dialog look almost senseless, then have him sober up and talk more normally after you get him out of the tavern and he's had some fresh air.
 
The other part of making him "essential", the way Danielle is protected later in the main story, is to make him unremovable:
Code:
SetCharacterRemovable(ch, false);

If you want to cancel his protection:
Code:
LAi_SetImmortal(ch, false);
SetCharacterRemovable(ch, true);

Another nasty thing Silehard could do is to pay the tavernkeeper a lot of money to keep giving Rex cheap drinks. Nobody is going to take tales of temples and idols seriously if the person telling the tales is permanently drunk - some locals might even buy him more drinks so that he tells them more tales that they can laugh at! If you wanted to do that, all you'd need is to make his first few lines of dialog look almost senseless, then have him sober up and talk more normally after you get him out of the tavern and he's had some fresh air.
Good idea, I could either make him immortal, or make him unremovable, not sure which I want to do, course, I guess I could always do both

An incredible idea! Because the idea with HIM is that though he's probably the best soldier Silehard has, Rex's resilience can only take so much, and being drunk and telling these stories would make people wonder why's a soldier to begin with. I like this idea a bit more, though again, scripting events like going to a different part of the town, not my forte, and I may need to create locators, too.

I still need to figure out how I'm going to deconstruct and then reconstruct the dialog.c file, what I hope is that there isn't as much to it as I'm leading myself to believe, because it DOES look pretty cryptic though, the .h file, is a different story, THAT'S the easy part, I just need to know what certain things would look like, such as breaking dialog into parts, rather than just having one massive wall of text, and then the various bits to have multiple response choices (Two or more), and that's about it, then the fun part is figuring out how to tie it together with the .c file, should I tackle the C file? Or the H file?
 
Personally I've always figured out what the character is going to say, written the .h file, then written the .c file to put the lines together.

As @Baste previously pointed out, the "dialog.snd" lines don't do anything and can safely be left out. I generally put the whole lot of stuff into case "First time" for reasons of (a) paranoia, due to (b) everyone else seems to have done it. But I never bother with "dialog.snd" anywhere else and my dialogs tend to work (after I've figured out which other silly mistake I made which stopped it from working, and you'll probably soon have some experience of that as well :D).

Generally, the .c file is a list of "case" blocks. At its simplest, this can be something like:
Code:
case "part1":
    dialog.text = DLG_TEXT[2];
    link.l1 = DLG_TEXT[3];
    link.l1.go = "part2";
break;

"dialog.text" is what the character says. It might be "d.text" instead - look for a line somewhere near the top of the .c file which says something like:
Code:
makeref(d, Dialog);
If that's there, and especially if you're modifying an existing file which uses "d.text", continue to use that.

"link.l1" is what you say in response. "link.l1.go" is the next dialog case to follow this one. If this is the end of the conversation then you'll probably have:
Code:
link.l1.go = "exit";

To give the player a choice, use several "link" lines, e.g.:
Code:
case "part2":
    dialog.text = DLG_TEXT[4];
    link.l1 = DLG_TEXT[5];
    link.l1.go = "first choice";
    link.l2 = DLG_TEXT[6];
    link.l2.go = "second choice";
break;
You can have as many choices as you like, though if you have too many, you'll need to scroll down to see the later choices when you talk to the character.

The "DLG_TEXT" lines refer to the .h file. Line 1 of the file is the header, something like:
Code:
string DLG_TEXT[50] = {
Program code starts counting from 0. So the line number in the .h file is usually 2 higher than the "DLG_TEXT" number. "DLG_TEXT[0]" is the second line in the .h file and the first line of actual text after the header.
 
Personally I've always figured out what the character is going to say, written the .h file, then written the .c file to put the lines together.

As @Baste previously pointed out, the "dialog.snd" lines don't do anything and can safely be left out. I generally put the whole lot of stuff into case "First time" for reasons of (a) paranoia, due to (b) everyone else seems to have done it. But I never bother with "dialog.snd" anywhere else and my dialogs tend to work (after I've figured out which other silly mistake I made which stopped it from working, and you'll probably soon have some experience of that as well :D).

Generally, the .c file is a list of "case" blocks. At its simplest, this can be something like:
Code:
case "part1":
    dialog.text = DLG_TEXT[2];
    link.l1 = DLG_TEXT[3];
    link.l1.go = "part2";
break;

"dialog.text" is what the character says. It might be "d.text" instead - look for a line somewhere near the top of the .c file which says something like:
Code:
makeref(d, Dialog);
If that's there, and especially if you're modifying an existing file which uses "d.text", continue to use that.

"link.l1" is what you say in response. "link.l1.go" is the next dialog case to follow this one. If this is the end of the conversation then you'll probably have:
Code:
link.l1.go = "exit";

To give the player a choice, use several "link" lines, e.g.:
Code:
case "part2":
    dialog.text = DLG_TEXT[4];
    link.l1 = DLG_TEXT[5];
    link.l1.go = "first choice";
    link.l2 = DLG_TEXT[6];
    link.l2.go = "second choice";
break;
You can have as many choices as you like, though if you have too many, you'll need to scroll down to see the later choices when you talk to the character.

The "DLG_TEXT" lines refer to the .h file. Line 1 of the file is the header, something like:
Code:
string DLG_TEXT[50] = {
Program code starts counting from 0. So the line number in the .h file is usually 2 higher than the "DLG_TEXT" number. "DLG_TEXT[0]" is the second line in the .h file and the first line of actual text after the header.
Hmmm... seems simple enough, but I don't see a d.text file or a dialog.text, though every character has a .h file for what they say, would that count? Or be what you're referring to? There also seem to be some syntaxes where certain symbols mean something, so like a "." and ! at the beginning of some lines, even some ? are treated as separate entities sometimes, I guess this largely depends on the context?

Just pieced it together, the .c file applies the items on their own, but it's really cryptic using such methods, ah well, I suppose it's something I'll have to get a feel for
 
"d.text" and "dialog.text" aren't files, they're lines in the "dialog.c" file.

The dialog.h files are in "PROGRAM\DIALOGS\ENGLISH". The game code provides for translations into other languages, whose dialog.h files would be in other folders named for those languages. Different languages have different grammars. Where there's just a "." or other punctuation mark, it's because the dialog.c file combines the line before it, something else such as a character's name, and that punctuation mark, so that the result could be something like "I'm going to the ship, Rex." The dialog.h file would contain "I'm going to the ship, " and "." The dialog.c file would insert the character's name in between. That way, if some other language would put something after the name, the translator can add it to the line which in English is just "."

Another thing to watch for is "\n" somewhere in the middle of a line. It's a line break. I don't think it works in any line which you will say (anything to go into a "link.l1"), and my experience is that it doesn't work for the first line of an entire conversation. But it can help to break up a long speech by the character. Ever notice how Governor Silehard's text is broken up and you need to press space to see the next part, for example? Look for "\n" in his dialog.h file...

You will indeed need to learn how dialog.c files work. You'll also need to learn how to figure out why they don't work when you make a typo somewhere - I speak from plenty of experience of that!
 
Makes sense, but the strange part is I don't have any English folders anywhere, which is EXTREMELY bizarre... but it makes sense, I'm gonna have a fun time deconstructing and reconstructing the files, that's for sure...

So change the h file first, then change the C file, understood
 
Where are your .h files, if not in "PROGRAM\DIALOGS\English"?

Perhaps start with a very basic .c file. Here's a minimal one, it's a copy of what I normally use as a starting point for dialogs. The .h file can contain all Rex's possible dialogs (or not, you can always add more later), and the first two lines should be very basic, what he should say routinely if there's nothing special happening. It would be enough for him to say "Hello" and you to say "Hello" back. Put him in Redmond tavern, see if that dialog works, and then build up from there by adding more "case" blocks to handle more dialog lines.
 

Attachments

  • Rex Hathaway_dialog.c
    859 bytes · Views: 76
Back
Top