Jump to content
Sign in to follow this  
Kydoimos

Orbat fsm

Recommended Posts

Ok, thanks man! Yes, I've trawled through my description.ext too, to see if anything has been duplicated - but alas, no joy! I'm going to take another look and double check I haven't done anything majorly stupid (It's been my MO this week!) :p

---------- Post added at 11:46 ---------- Previous post was at 11:35 ----------

Here we go: https://www.dropbox.com/s/l8bg4jb7ezphymj/cfgORBAT.fsm?dl=0 - I'm well and truly stumped!

Share this post


Link to post
Share on other sites

I had to completely restart the .FSM in order for it to work with 1.2.1. I recommend trying to create a fresh .FSM and see what happens.

Share this post


Link to post
Share on other sites

@Nathan424 - ok, I'll give that a go!

---------- Post added at 11:42 ---------- Previous post was at 10:59 ----------

Ok, here we go: https://www.dropbox.com/s/3xr0heu32yg7op7/TEST.fsm?dl=0

That is a blank FSM with numbered States and Conditions - still receiving 'Member already defined' error message (Line 24 in this case)! Really can't fathom what the problem is. Here's a picture and a read-out too, in case anyone's curious!:

https://www.dropbox.com/s/bs015n1udchxpip/Test.png?dl=0

/*%FSM<COMPILE "C:\Program Files (x86)\Steam\SteamApps\steamapps\common\Arma 3 Tools\FSMEditor\ORBAT.cfg, TEST">*/
/*%FSM<HEAD>*/
/*
item0[] = {"__",2,250,225.000000,-725.000000,325.000000,-675.000000,0.000000,"1"};
item1[] = {"__A",4,218,225.000000,-625.000000,325.000000,-575.000000,0.000000,"1A"};
item2[] = {"___1",2,250,225.000000,-525.000000,325.000000,-475.000000,0.000000,"2"};
item3[] = {"___2",2,250,225.000000,-425.000000,325.000000,-375.000000,0.000000,"3"};
item4[] = {"__A_3",4,218,225.000000,-325.000000,325.000000,-275.000000,0.000000,"3A"};
item5[] = {"___3",2,250,225.000000,-225.000000,325.000000,-175.000000,0.000000,"5"};
item6[] = {"__A",4,218,375.000000,-325.000000,475.000000,-275.000000,0.000000,"4A"};
item7[] = {"__A_1",4,218,75.000000,-325.000000,175.000000,-275.000000,0.000000,"2A"};
item8[] = {"__A_2",4,218,525.000000,-325.000000,625.000000,-275.000000,0.000000,"5A"};
item9[] = {"___4",2,250,375.000000,-225.000000,475.000000,-175.000000,0.000000,"6"};
item10[] = {"___5",2,250,525.000000,-225.000000,625.000000,-175.000000,0.000000,"7"};
item11[] = {"___6",2,250,75.000000,-225.000000,175.000000,-175.000000,0.000000,"4"};
item12[] = {"__A_3",4,218,225.000000,-125.000000,325.000000,-75.000000,0.000000,"7A"};
item13[] = {"__A",4,218,375.000000,-125.000000,475.000000,-75.000000,0.000000,"8A"};
item14[] = {"__A_1",4,218,525.000000,-125.000000,625.000000,-75.000000,0.000000,"9A"};
item15[] = {"__A_2",4,218,75.000000,-125.000000,175.000000,-75.000000,0.000000,"6A"};
item16[] = {"___7",2,250,75.000000,-25.000000,175.000000,25.000000,0.000000,"8"};
item17[] = {"___8",2,250,225.000000,-25.000000,325.000000,25.000000,0.000000,"9"};
item18[] = {"__0",2,250,375.000000,-25.000000,475.000000,25.000000,0.000000,"10"};
item19[] = {"__1",2,250,525.000000,-25.000000,625.000000,25.000000,0.000000,"11"};
item20[] = {"__2",2,250,225.000000,75.000000,325.000000,125.000000,0.000000,"12"};
item21[] = {"__1A",4,218,225.000000,175.000000,325.000000,225.000000,0.000000,"11A"};
item22[] = {"__4",2,250,225.000000,275.000000,325.000000,325.000000,0.000000,"14"};
item23[] = {"__5",2,250,375.000000,275.000000,475.000000,325.000000,0.000000,"15"};
item24[] = {"__3",2,250,75.000000,275.000000,175.000000,325.000000,0.000000,"13"};
item25[] = {"__0A",4,218,75.000000,175.000000,175.000000,225.000000,0.000000,"10A"};
item26[] = {"__2A",4,218,375.000000,175.000000,475.000000,225.000000,0.000000,"12A"};
link0[] = {0,1};
link1[] = {1,2};
link2[] = {3,4};
link3[] = {3,6};
link4[] = {3,7};
link5[] = {3,8};
link6[] = {4,5};
link7[] = {5,12};
link8[] = {5,13};
link9[] = {5,14};
link10[] = {5,15};
link11[] = {6,9};
link12[] = {7,11};
link13[] = {8,10};
link14[] = {12,17};
link15[] = {13,18};
link16[] = {14,19};
link17[] = {15,16};
link18[] = {20,21};
link19[] = {20,25};
link20[] = {20,26};
link21[] = {21,22};
link22[] = {25,24};
link23[] = {26,23};
globals[] = {25.000000,1,0,0,0,640,480,1,28,6316128,1,-505.161133,972.840149,584.810669,-875.557373,922,911,1};
window[] = {2,-1,-1,-32000,-32000,1042,250,1530,250,3,940};
*//*%FSM</HEAD>*/
class TEST
{
/*%FSM<STATE "__">*/
class /*%FSM<STATEPRECONDITION>*//*%FSM</STATEPRECONDITION>*/
{
/*%FSM<STATEINIT>*/
/*%FSM</STATEINIT>*/
subordinates[] = {
/*%FSM<LINK "__A">*/
,
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "___1">*/
class /*%FSM<STATEPRECONDITION>*//*%FSM</STATEPRECONDITION>*/
{
/*%FSM<STATEINIT>*/
/*%FSM</STATEINIT>*/
subordinates[] = {
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "___2">*/
class /*%FSM<STATEPRECONDITION>*//*%FSM</STATEPRECONDITION>*/
{
/*%FSM<STATEINIT>*/
/*%FSM</STATEINIT>*/
subordinates[] = {
/*%FSM<LINK "__A">*/
,
/*%FSM</LINK>*/
/*%FSM<LINK "__A_1">*/
,
/*%FSM</LINK>*/
/*%FSM<LINK "__A_2">*/
,
/*%FSM</LINK>*/
/*%FSM<LINK "__A_3">*/
,
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "___3">*/
class /*%FSM<STATEPRECONDITION>*//*%FSM</STATEPRECONDITION>*/
{
/*%FSM<STATEINIT>*/
/*%FSM</STATEINIT>*/
subordinates[] = {
/*%FSM<LINK "__A">*/
,
/*%FSM</LINK>*/
/*%FSM<LINK "__A_1">*/
,
/*%FSM</LINK>*/
/*%FSM<LINK "__A_2">*/
,
/*%FSM</LINK>*/
/*%FSM<LINK "__A_3">*/
,
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "___4">*/
class /*%FSM<STATEPRECONDITION>*//*%FSM</STATEPRECONDITION>*/
{
/*%FSM<STATEINIT>*/
/*%FSM</STATEINIT>*/
subordinates[] = {
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "___5">*/
class /*%FSM<STATEPRECONDITION>*//*%FSM</STATEPRECONDITION>*/
{
/*%FSM<STATEINIT>*/
/*%FSM</STATEINIT>*/
subordinates[] = {
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "___6">*/
class /*%FSM<STATEPRECONDITION>*//*%FSM</STATEPRECONDITION>*/
{
/*%FSM<STATEINIT>*/
/*%FSM</STATEINIT>*/
subordinates[] = {
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "___7">*/
class /*%FSM<STATEPRECONDITION>*//*%FSM</STATEPRECONDITION>*/
{
/*%FSM<STATEINIT>*/
/*%FSM</STATEINIT>*/
subordinates[] = {
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "___8">*/
class /*%FSM<STATEPRECONDITION>*//*%FSM</STATEPRECONDITION>*/
{
/*%FSM<STATEINIT>*/
/*%FSM</STATEINIT>*/
subordinates[] = {
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "__0">*/
class /*%FSM<STATEPRECONDITION>*//*%FSM</STATEPRECONDITION>*/
{
/*%FSM<STATEINIT>*/
/*%FSM</STATEINIT>*/
subordinates[] = {
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "__1">*/
class /*%FSM<STATEPRECONDITION>*//*%FSM</STATEPRECONDITION>*/
{
/*%FSM<STATEINIT>*/
/*%FSM</STATEINIT>*/
subordinates[] = {
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "__2">*/
class /*%FSM<STATEPRECONDITION>*//*%FSM</STATEPRECONDITION>*/
{
/*%FSM<STATEINIT>*/
/*%FSM</STATEINIT>*/
subordinates[] = {
/*%FSM<LINK "__0A">*/
,
/*%FSM</LINK>*/
/*%FSM<LINK "__2A">*/
,
/*%FSM</LINK>*/
/*%FSM<LINK "__1A">*/
,
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "__4">*/
class /*%FSM<STATEPRECONDITION>*//*%FSM</STATEPRECONDITION>*/
{
/*%FSM<STATEINIT>*/
/*%FSM</STATEINIT>*/
subordinates[] = {
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "__5">*/
class /*%FSM<STATEPRECONDITION>*//*%FSM</STATEPRECONDITION>*/
{
/*%FSM<STATEINIT>*/
/*%FSM</STATEINIT>*/
subordinates[] = {
};
};
/*%FSM</STATE>*/
/*%FSM<STATE "__3">*/
class /*%FSM<STATEPRECONDITION>*//*%FSM</STATEPRECONDITION>*/
{
/*%FSM<STATEINIT>*/
/*%FSM</STATEINIT>*/
subordinates[] = {
};
};
/*%FSM</STATE>*/
};/*%FSM</COMPILE>*/[/Code]

[color=silver]

[size=1]---------- Post added at 11:45 ---------- Previous post was at 11:42 ----------[/size]

[/color]Maybe it's an error caused by something I [i]haven't [/i]done - like something that needs to be added to the States? (Obviously the actual ORBAT details are missing, thus far)

Edited by Kydoimos

Share this post


Link to post
Share on other sites

So, this is what it looks like:

5ab3f6f2-b7c5-47db-aaa8-fea717787d40_zps488bdd17.png

There's nothing inside the States yet. Somehow, something's causing a conflict - I've used BIS' cfgORBAT.fsm as a kind of guide - but when I compile this, a 'member is already defined' apparently. Can't really see what I've done different. I tried adding States with BaseWest, BaseEast etc. - but then I got another error message saying 'BaseWest not defined'. I must be missing something completely! :P Is there another method of defining States, other than naming them?

Edited by Kydoimos

Share this post


Link to post
Share on other sites

Anyone out there successfully created a working ORBAT fsm? Please PM, I'm in dire need of your brain!

Share this post


Link to post
Share on other sites

Hm, a blank FSM with empty states might not be the best idea; I'm not even sure if numerical classnames are allowed. Anyway, have you tried to #include BI's original FSM and see what happens?

Share this post


Link to post
Share on other sites

Ah, I'll try re-naming the States and adding some basic details - see if I can avoid a CTD :) Yeah, interestingly BIS' cfgORBAT.fsm works fine - but as soon as I add a State or make any changes, I'm getting the 'member already defined' error. I'll try editing the test fsm, while keeping it simple! Thanks for the advice, matey! I will suss this out eventually!

Share this post


Link to post
Share on other sites

Look, I know it's been a hot minute since I posted but I think this is one of the main issues with the game. With many parts of the engine we (the users) don't know how it works in detail, which leads to us tripping over the development until it works. I would hope the BIS hires someone that either has a job explaining each part of the game (and code) in detail or just writes the most comprehensive script guide known to man.

Share this post


Link to post
Share on other sites
Look, I know it's been a hot minute since I posted but I think this is one of the main issues with the game. With many parts of the engine we (the users) don't know how it works in detail, which leads to us tripping over the development until it works. I would hope the BIS hires someone that either has a job explaining each part of the game (and code) in detail or just writes the most comprehensive script guide known to man.

But... but, it's part of the fun to fiddle around! ;)

No, I agree, documentation of script commands, event scripts and such is pretty good but information about how some things / sub-systems / technologies interact with each other - that could be optimised. To be fair though, Kydoimos could have saved himself a lot of time by just doing it as plain config instead of going the FSM way.^^

Share this post


Link to post
Share on other sites
But... but, it's part of the fun to fiddle around! ;)

No, I agree, documentation of script commands, event scripts and such is pretty good but information about how some things / sub-systems / technologies interact with each other - that could be optimised. To be fair though, Kydoimos could have saved himself a lot of time by just doing it as plain config instead of going the FSM way.^^

Ah, I totally forgot to mention why I didn't go with doing the ORBAT via the description.ext! Which would be a million times easier! :D Trouble is, I've noticed that when you load a saved game, the ORBAT menu doesn't work properly (for some reason, when you click on the icons, they don't appear). However, BIS' ORBAT.fsm works flawlessly. I'm thinking after a load, the description.ext file isn't getting read properly? And besides, it really is part of the fun fiddling around with things. It's a wonderful feeling when you get something to work!

My next plan is to go back to BIS' ORBAT fsm and see if I can edit the entries in a manner that doesn't lead to States being duplicated (defined twice) or not defined at all (still not quite sure where I'm going wrong there!).

Share this post


Link to post
Share on other sites

Aha!

For some reason, FSM state names are not saved correctly.

Current:

Code:

/*%FSM<STATE "BaseWestGuer">*/

class /*%FSM<STATEPRECONDITION>*//*%FSM</STATEPRECONDITION>*/

{

...

};

Expected (after re-saving it at my PC using FSM editor in Steam default A3 tools):

Code:

/*%FSM<STATE "BaseWestGuer">*/

class BaseWestGuer/*%FSM<STATEPRECONDITION>*//*%FSM</STATEPRECONDITION>*/

{

...

};

Honestly, I have no idea why is it happening, all other FSM data e.g., links, inits, etc.) are correct.

Moricky's first response was spot on (naturally!) - just I didn't quite realise how to manually correct the fsm. Basically, all the class names were turning blank after saving. Opening the FSM with notepad, entering the class names, then saving, has enabled me to load the FSM without a CTD. I feel the end is in sight! :)

Very odd though - maybe my version of the FSM editor is not working right? Ah well, guess at least I think I've figured what needs to happen. Just had to get my head around the coding first!

---------- Post added at 21:09 ---------- Previous post was at 20:38 ----------

Cool - all working! As outlined above - just needed to manually edit the FSM with the notepad!

@IndeedPete - again, thanks for your help, matey! You're a legend!

Edited by Kydoimos

Share this post


Link to post
Share on other sites

Also, to anyone interested, sublinks are also lost on saving and need to be defined via notepad! :)

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  

×