Ahoy fellow modders!
Being the scripting failure that I am, I have a problem. :(
I have a dialog, and at the end of the dialog, I use this script to spawn an NPC at a waypoint and the end of the conversation:
void main()
{
object oPC = GetPCSpeaker();
object oTarget;
object oSpawn;
location lTarget;
oTarget = GetWaypointByTag("nindenstand");
lTarget = GetLocation(oTarget);
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "ninden", lTarget);
}
That works fine.
But what I want, is for the NPC to start his own conversation with me after he spawns.
I've tried several ways to do this, and none of them seem to work. :(
Any of you scripting guru's...
I'd appreciate some help.. :D
After "object oSpawn = Cre..." add line:
AssignCommand(oSpawn,ActionStartConversation(GetFi rstPC(),"put_dlg_name_here",CONVERSATION_TYPE_CINEMATIC));
I'm always doing it that way and it always works ;)
Just tried that, and still no luck... :(
Try this;
void main()
{
object oPC = GetPCSpeaker();
object oTarget;
object oSpawn;
location lTarget;
oTarget = GetWaypointByTag("nindenstand");
lTarget = GetLocation(oTarget);
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "ninden", lTarget);
object oNinden = GetObjectByTag("ninden", 0);
AssignCommand(oNinden, ActionStartConversation(oPC, "", 0, 0, 0, "", "", "", "", "", "", 0, 0xFFFFFFFF, 0xFFFFFFFF, 0));
}
--Stream
Argh, still nothing...
The guy just spawns and stands there like a fool...
Sorry my bad;
void main()
{
object oPC = GetPCSpeaker();
object oTarget;
object oSpawn;
location lTarget;
oTarget = GetWaypointByTag("nindenstand");
lTarget = GetLocation(oTarget);
oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "ninden", lTarget);
object oNinden = GetObjectByTag("ninden", 0);
ActionStartConversation(oPC, "ninden_dialog_ref", 0, 0, 0, "", "", "", "", "", "", 0, 0xFFFFFFFF, 0xFFFFFFFF, 0);
}
I think that'll work.
--Stream
But what I want, is for the NPC to start his own conversation with me after he spawns.
Make sure the script is run from the very last node in the conversation so the player isn't in dialog mode any more when the script has been run.
void main() {
object oPC = GetFirstPC();
location lTarget = GetLocation(GetWaypointByTag("nindenstand"));
object oSpawn = CreateObject(OBJECT_TYPE_CREATURE, "ninden", lTarget);
NoClicksFor(1.0);
DelayCommand(1.0, AssignCommand(oSpawn, ClearAllActions()));
DelayCommand(1.0, AssignCommand(oSpawn, ActionStartConversation(oPC, "", FALSE, CONVERSATION_TYPE_CINEMATIC, TRUE)));
}
(Alternatively you can just use your existing conversation to continue talking with the new NPC instead of starting a new one. Might be easier, depending on the circumstances.)
Make sure the script is run from the very last node in the conversation so the player isn't in dialog mode any more when the script has been run.
It is. It's on a blank node at the end of the dialog.
I'll try your script now. :)
EDIT:
Ok, the script works. He starts talking when he spawns.
But he starts on the wrong dialog node!
I't's supposed to be a talk - fight - talk sequence (based on tk's tutorial) but he ALWAYS starts on the "after fighting" node. (Yes i've tried switching the node order around.)
This isnt my lucky day.. :p
Do you have a conditional script on one of the branches? If so, could you post it here so we can give a look at it?
- Star Admiral
Like I said, I followed tk's tutorial to give me an idea of what I was doing, so I used the one he posted:
int StartingConditional() {
int nResumeTalk = GetLocalBoolean(OBJECT_SELF,0);
return nResumeTalk;
}
Like I said, I followed tk's tutorial to give me an idea of what I was doing, so I used the one he posted:
int StartingConditional() {
int nResumeTalk = GetLocalBoolean(OBJECT_SELF,0);
return nResumeTalk;
}
Did you set the local boolean on the object true in some other script? If yes then that's the problem, trying changing the 0 to a 1 in your conditional script and in the user-define portion of the talk-fight-talk sequence.
w00t!
Problem solved. :D
For now... But I have a feeling something else may go wrong. :p
So thanks everyone for the help so far. :)