To help you out, removing all comments from those scripts, actually makes it easily editable.
One I made recently:
class FSM
{
fsmName = "PREDLOHA";
class States
{
class React
{
name = "React";
init = "";
precondition = "";
class Links
{
class CaseA
{
priority = 1.000000;
to="ContinueTalking";
precondition = "";
condition="_sentenceId == 'line_p_0'";
action="";
};
class CaseB
{
priority = 1.00000;
to="ContinueTalkingB";
precondition = "";
condition="_sentenceId == 'line_p_0b'";
action="";
};
class CaseC
{
priority = 1.00000;
to="KillYou";
precondition = "";
condition="_sentenceId in ['line_p_1b','line_p_1c']";
action="";
};
class CaseD
{
priority = 1.00000;
to="GiveYou";
precondition = "";
condition="_sentenceId == 'line_p_1a'";
action="";
};
class interrupted
{
priority = 1.000000;
to="ContinueTalking";
precondition = "";
condition="_sentenceId == 'interrupted'";
action="";
};
class always
{
priority = 0.000000;
to="END";
precondition = "";
condition="true";
action="";
};
};
};
class END
{
name = "END";
init = "";
precondition = "";
class Links
{
};
};
class ContinueTalking
{
name = "ContinueTalking";
init = "_this kbTell [_from, _topic,'line_m_1'];"
precondition = "";
class Links
{
};
};
class ContinueTalkingB
{
name = "ContinueTalkingB";
init = "_this kbTell [_from, _topic,'line_m_1b'];"
precondition = "";
class Links
{
};
};
class Killyou
{
name = "Killyou";
init = "_this kbTell [_from, _topic,'line_m_2b']; _this dofire _from;"
precondition = "";
class Links
{
};
};
class Giveyou
{
name = "GiveYou";
init = "_this kbTell [_from, _topic,'line_m_2a'];"
precondition = "";
class Links
{
};
};
};
initState="React";
finalStates[] =
{
"END",
"ContinueTalking",
"ContinueTalkingB",
"Killyou",
"Giveyou"
};
};
Bit more simple:
class FSM
{
fsmName = "PREDLOHA";
class States
{
class React
{
name = "React";
init = "";
precondition = "";
class Links
{
class FirstWords
{
priority = 1.000000;
to="ReplyA";
precondition = "";
condition="_sentenceId == 'line_m_0'";
action="";
};
class AnotherReply
{
priority = 1.000000;
to="ReplyB";
precondition = "";
condition="_sentenceId == 'line_m_1'";
action="";
};
class always
{
priority = 0.000000;
to="END";
precondition = "";
condition="true";
action="";
};
};
};
class END
{
name = "END";
init = "";
precondition = "";
class Links
{
};
};
class ReplyA
{
name = "ReplyA";
init = "_this kbTell [_from, _topic,'line_p_0'];";
precondition = "";
class Links
{
};
};
class ReplyB
{
name = "ReplyB";
init = "_this kbTell [_from, _topic,'line_p_1'];";
precondition = "";
class Links
{
};
};
};
initState="React";
finalStates[] =
{
"END",
"ReplyA",
"ReplyB",
};
};
SQF equivalent:
BIS_convMenu = [];
switch (_sentenceId) do {
case "line_p_0":
{
_this kbtell [_from, _topic,"line_m_1"];
};
case "line_p_0b":
{
_this kbtell [_from, _topic,"line_m_1b"];
};
case "line_p_1a":
{
_this kbtell [_from, _topic,"line_m_2a"];
removeallweapons this;
};
case "line_p_1b":
{
_this kbtell [_from, _topic,"line_m_2b"];
_this doFire _from;
};
case "line_p_1c":
{
_this kbtell [_from, _topic,"line_m_2c"];
_this doFire _from;
};
};
BIS_convMenu
// collect reactions to BIS_convMenu _this _from _topic _sentenceid
BIS_convMenu = [];
switch (_sentenceId) do {
case "line_m_0":
{
BIS_convMenu = BIS_convMenu + [["So what", _topic, "line_p_0", []]];
BIS_convMenu = BIS_convMenu + [["Well arent you the cool kid", _topic, "line_p_0b", []]];
};
case "line_m_1":
{
BIS_convMenu = BIS_convMenu + [["I envy you", _topic, "line_p_1a", []]];
BIS_convMenu = BIS_convMenu + [["I love you", _topic, "line_p_1b", []]];
BIS_convMenu = BIS_convMenu + [["I want to kill you", _topic, "line_p_1c", []]];
};
case "line_m_1b":
{
BIS_convMenu = BIS_convMenu + [["I envy you", _topic, "line_p_1a", []]];
BIS_convMenu = BIS_convMenu + [["I love you", _topic, "line_p_1b", []]];
BIS_convMenu = BIS_convMenu + [["I want to kill you", _topic, "line_p_1c", []]];
};
};
BIS_convMenu
Hopefully this helps you understand.