PDA

View Full Version : Problems replacing NPC


llars
08-28-2005, 03:17 AM
I am having problems replacing an NPC. I am attempting to replace T3M4 with Nihilus and I have followed the walkthrough to a tee. When I execute the script, the party menu appears in the middle of the conversation, but T3M4 is still on the screen.

If I change the script so that Nihilus is placed into G0T0's slot (someone I have not yet recruited) Nihilus comes in fine and is playable.

If I remove the line that adds Nihilus and run the script, T3M4 is removed from the selection screen.

I have tried practically every slot and the only ones Nihilus will appear in are the ones of characters I have yet to encounter in the game.

Is there anything i need to do differently in regards to the walkthrough being that I am doing this in TSL?

llars
08-28-2005, 08:29 AM
Well I kinda got this to work. After finding a thread with slot numbers for TSL, I imported Nihilus into the Disciple's slot since I have Handmaiden. Then I created custom dialouge for the remote that allows me to switch between the two NPC's. Problem is, when I switch them they loose any changes that were made after the switch takes place.

cry_of_paine
08-28-2005, 09:58 AM
I'm having a similar problem. I think the resolution to your first problem is to remove the original NPC, before putting in your new one. Otherwise, you get a conflict, which is the problem I'm running into. I'd be interested in knowing how you did the switch routine with the remote.

There's 2 settings in the save files that control NPC availability. I think one is the basic is this a party member, and the other one is are we in a situation where that member isn't available (ie. Kreia on Korriban). I wonder if you had your custom NPC in one of the dual slots (Handmaiden/Disciple or Mira/Hanraar) and then toggled that second variable between them, if that would allow you to select the non-custom character, but still keep the custom character's stats, since you're not loading and unloading the character's file.

In addition I wonder if there's any way to remove certain characters from so called active duty, but keep them on ship. For instance having Kriea be a mentor on the ship still, but unavailable for missions. You'd still talk to her for all your plot information, but when it came time to pick your party, her spot would have someone else in it. I'm not sure how that would work in missions where you have her on your team, and can't remove her.

Dark_lord_Cheez
08-28-2005, 12:01 PM
In addition I wonder if there's any way to remove certain characters from so called active duty, but keep them on ship. For instance having Kriea be a mentor on the ship still, but unavailable for missions. You'd still talk to her for all your plot information, but when it came time to pick your party, her spot would have someone else in it. I'm not sure how that would work in missions where you have her on your team, and can't remove her.

I've thought of this a couple of times myself, the only way I think this would work is by editting the onenter script for the Ebon Hawk.

However, what you could do for switching party members is just have the members you want to swap (ie Nihillus and T3) both on the Ebon Hawk at the same time (again, you'd have to edit the onenter script I suppose) and while you're on the hawk, initiate the dialogue with the remote to swap them.

The reason you're loosing the changes you make to them is due to the game only loading one module at a time, and since there are only 2 tables (party and puppets) which allow you to keep NPCs that aren't being used, but that have been changed, any other NPC that isn't in the module or in one of those tables is sort of 'reset' to it's original stats. (hope you understood this, I'm not too good at explaining things like this)

Another way would be to use a script to switch one of the characters (T3) to the puppet table, and switch the other (Nihillus) to the party, but since there are only 3 slots in the puppet table (and Bao's remote takes up one of them), if you're planning on making quite a few recruitment characters, you'd be likely to run out of spaces.

Hope this helps at all..

llars
08-28-2005, 03:31 PM
I'm having a similar problem. I think the resolution to your first problem is to remove the original NPC, before putting in your new one. Otherwise, you get a conflict, which is the problem I'm running into. I'd be interested in knowing how you did the switch routine with the remote.

I am using two different scripts for the switch. To put Nihilus in I am using the following


void main()
{
RemoveAvailableNPC(11);
AddAvailableNPCByTemplate(11, "p_nihilus");
DelayCommand(1.5,ShowPartySelectionGUI());
}


For Handmaiden:


void main()
{
RemoveAvailableNPC(4);
RemoveAvailableNPC(11);
AddAvailableNPCByTemplate(4, "p_handmaiden");
DelayCommand(1.5,ShowPartySelectionGUI());
}


I then activate the scripts with custom dialouge set up on the remote.

stoffe
08-28-2005, 03:44 PM
AddAvailableNPCByTemplate(4, "p_handmaiden");
AddAvailableNPCByTemplate(11, "p_nihilus");


When you use AddAvailableNPCByTemplate(), you will create a new creature from scratch from the specified creature template. Each time you run the script a new character will be created, mirroring the template it is created from.

Use AddAvailableNPCByObject() instead to put an already existing instance of a creature into the party. This requires that the creature in question exists in the area when the script is run.

cry_of_paine
08-28-2005, 04:14 PM
I wonder if instead of removing and adding everytime, if you can set them as available/unavailable, like is discussed here. (http://www.lucasforums.com/showthread.php?t=147738) If you have Handmaiden, and you also have your custom in Disciple's spot, I think that could work.

llars
08-28-2005, 04:40 PM
When you use AddAvailableNPCByTemplate(), you will create a new creature from scratch from the specified creature template. Each time you run the script a new character will be created, mirroring the template it is created from.

Use AddAvailableNPCByObject() instead to put an already existing instance of a creature into the party. This requires that the creature in question exists in the area when the script is run.

So the first time I add Nihilus, i would use AddAvailableNPCByTemplate(), and then I would use AddAvailableNPCByObject() to switch.


EDIT:

hmmm, I am getting a mismatch in paramater error



void main()
{
RemoveAvailableNPC(11);
AddAvailableNPCByObject(11, "p_nihilus");
DelayCommand(1.5,ShowPartySelectionGUI());
}

stoffe
08-28-2005, 05:03 PM
I wonder if instead of removing and adding everytime, if you can set them as available/unavailable, like is discussed here. (http://www.lucasforums.com/showthread.php?t=147738) If you have Handmaiden, and you also have your custom in Disciple's spot, I think that could work.

The problem with that is that as long as a creature exists in the Disciple's party slot, the Handmaiden's portrait will disappear from the party selection screen. This behavior is hardcoded, as far as I know.


hmmm, I am getting a mismatch in paramater error
AddAvailableNPCByObject(11, "p_nihilus");


You'll need to put an object reference to the creature object you wish to add as the second parameter, and not the resref. If the Tag of your creature is p_nihilus as well, this should work:


AddAvailableNPCByObject(NPC_DISCIPLE, GetObjectByTag("p_nihilus"));