Jump to content
Sign in to follow this  
yogdogz

multiple choice dialogue / FSM

Recommended Posts

Hi, i'm working on a campaign that will make player have to choose action for the storyline, and it'll affect the endings they got later (just like harvest red campaign). I'm planning to use FSM, but I'm really bad at scripting :icon_frown: (but at least, I'm successful to put bikb conversation to my mission :biggrin_o:)

I tried with addaction, but it looks lame and unrealistic :o

Yes, i've searched the forum : this this this

even in BIKI, there's so little explaining & example :(

pls help me give me simple explaining or maybe example really appreciated :(

Edited by yogdogz
sorry my english

Share this post


Link to post
Share on other sites

Howdy,

Have you tried reading my tutorial, with example missions, in that thread you linked?

Part one is here.

Part two is here.

Hope that helps.

Regards,

- HateDread.

Share this post


Link to post
Share on other sites
there's so little explaining & example :(

erm, :rolleyes:

(just like harvest red campaign)

Ah, there. Exactly. You have a whole campaign, full of examples all over the place. How about you extract the missions.pbo and have a look at it?

:D

Share this post


Link to post
Share on other sites
Howdy,

Have you tried reading my tutorial, with example missions, in that thread you linked?

Part one is here.

Part two is here.

Hope that helps.

Regards,

- HateDread.

oops, i think i miss that :p thanks btw for fast response, I'll try to understand those complicated stuff first, and try to apply it to my missions :D

erm, :rolleyes:

Ah, there. Exactly. You have a whole campaign, full of examples all over the place. How about you extract the missions.pbo and have a look at it?

:D

i've already did that. but the BIS FSMs are so much confusing me. They're just like not standard FSM and BIKB files, I try to understand it, but the code written in "%&%^$&%", then I choose to give up before my brain explode :eek:

Edited by yogdogz

Share this post


Link to post
Share on other sites

@HateDread

So much thanks for the great tutorial. I think I'm quite understand how FSM works now. But I still have some question about ur tutorial :

Is XML file is only purposed to do a multilanguange configuration? bcos I remove the XML, but the conversation still running smoothly?

I want to make command to exec a SQF after I choose an answer, where must I do put the line to? I think it something work like thiss???

chatter_player.sqf

BIS_convMenu = [];

switch (_sentenceId) do {
 case "STR_DIALOG_Chatter_J_0": {
   _this kbTell [_from, _topic, "STR_DIALOG_Chatter_P_0"];
 };

 case "STR_DIALOG_Chatter_J_1": {
   _this kbTell [_from, _topic, "STR_DIALOG_Chatter_P_1"];
 };

 case "STR_DIALOG_Chatter_J_2": {
   		BIS_convMenu = BIS_convMenu + [["Shut up!", _topic, "STR_DIALOG_Chatter_P_2", []]];
	BIS_convMenu = BIS_convMenu + [["Well... yeah.", _topic, "STR_DIALOG_Chatter_P_3", []]];
 };

 case "STR_DIALOG_Chatter_J_P_2_1": {
   _this kbTell [_from, _topic, "STR_DIALOG_Chatter_P_2_1"];
[b]    _this execVM "story2.sqf"[/b]
 };

 case "STR_DIALOG_Chatter_J_P_3_1": {
   _this kbTell [_from, _topic, "STR_DIALOG_Chatter_P_3_1"];
[b]   _this execVM "story3.sqf"	[/b]
 };

 default {
 };

};

// return the sentence list pool
BIS_convMenu

here is a fsm page also a link to FSM Edit

http://community.bistudio.com/wiki/FSM

the FSM files will make more sence if you look at them in a FSM Editor

unfortunately the BIKI is so confusing and lack of example :(

Share this post


Link to post
Share on other sites

If you wanted to execute an SQF when the incoming sentence is of ID 'STR_DIALOG_Chatter_J_0' (Remember from the tutorial, that was John Rayner saying 'Hey!'), one way to do it would be:

BIS_convMenu = [];

switch (_sentenceId) do {

case "STR_DIALOG_Chatter_J_0": {

_this kbTell [_from, _topic, "STR_DIALOG_Chatter_P_0"];

execVM "SCRIPT.sqf";

};

case "STR_DIALOG_Chatter_J_1": {

_this kbTell [_from, _topic, "STR_DIALOG_Chatter_P_1"];

};

case "STR_DIALOG_Chatter_J_2": {

BIS_convMenu = BIS_convMenu + [["Shut up!", _topic, "STR_DIALOG_Chatter_P_2", []]];

BIS_convMenu = BIS_convMenu + [["Well... yeah.", _topic, "STR_DIALOG_Chatter_P_3", []]];

};

case "STR_DIALOG_Chatter_J_P_2_1": {

_this kbTell [_from, _topic, "STR_DIALOG_Chatter_P_2_1"];

_this execVM "story2.sqf"

};

case "STR_DIALOG_Chatter_J_P_3_1": {

_this kbTell [_from, _topic, "STR_DIALOG_Chatter_P_3_1"];

_this execVM "story3.sqf"

};

default {

};

};

// return the sentence list pool

BIS_convMenu

That way, it only executes the script when the first case is met (as you know, as it was explained in the tutorial :) ).

Hope that helps, and sorry for the late reply.

Regards,

- HateDread.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×