Jump to content

Home

Scripting woes...


Marius Fett

Recommended Posts

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.)

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...