LucasForums

LucasForums (http://www.lucasforums.com/index.php)
-   Holowan Laboratories (http://www.lucasforums.com/forumdisplay.php?f=324)
-   -   Scripting woes... (http://www.lucasforums.com/showthread.php?t=195384)

Marius Fett 01-27-2009 11:48 AM

Scripting woes...
 
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:

Code:

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

zbyl2 01-27-2009 12:03 PM

After "object oSpawn = Cre..." add line:
Code:

AssignCommand(oSpawn,ActionStartConversation(GetFirstPC(),"put_dlg_name_here",CONVERSATION_TYPE_CINEMATIC));
I'm always doing it that way and it always works ;)

Marius Fett 01-27-2009 12:52 PM

Just tried that, and still no luck... :(

Stream 01-27-2009 03:01 PM

Try this;
Code:

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

Marius Fett 01-27-2009 03:22 PM

Argh, still nothing...

The guy just spawns and stands there like a fool...

Stream 01-27-2009 03:42 PM

Sorry my bad;
Code:

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

stoffe 01-27-2009 03:53 PM

Quote:

Originally Posted by Marius Fett (Post 2582167)
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.
Code:

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

Marius Fett 01-27-2009 05:02 PM

Quote:

Originally Posted by stoffe
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

Star Admiral 01-27-2009 06:41 PM

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

Marius Fett 01-28-2009 11:01 AM

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:

Code:

int StartingConditional() {
int nResumeTalk = GetLocalBoolean(OBJECT_SELF,0);
return nResumeTalk;
}


Exile007 01-28-2009 03:17 PM

Quote:

Originally Posted by Marius Fett (Post 2582486)
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:

Code:

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.

Marius Fett 01-28-2009 04:44 PM

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


All times are GMT -4. The time now is 12:59 PM.

Powered by vBulletin®
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
LFNetwork, LLC ©2002-2011 - All rights reserved.