Jump to content
Sign in to follow this  
mach1muscle351

Shotfinder Boomerang Script

Recommended Posts

I want to port Zephyrdark shotfinder script to arma 3

 

http://www.armaholic.com/page.php?id=16595

 

But I cant for the life of me get it to work.

 

init

if (!(isNull player)) then  //non-JIP player
{
    nul=[[rhsusf_m1025_d_m2]]execVM "sf2_startEH_fsm.sqf";
};

if (!isServer && isNull player) then  //JIP player
{
    waitUntil {!isNull player};
    nul=[[rhsusf_m1025_d_m2]]execVM "sf2_startEH_fsm.sqf"; //?? May need to make JIP start file ??
};

startEH

vehArraySF = _this select 0;
{nul= _x addEventHandler ["fired", {nul=_this execFSM "shotfinder.fsm";}]} forEach allUnits;

shotfinder.fsm

/*%FSM<COMPILE "scriptedFSM.cfg, Shotfinder">*/
/*%FSM<HEAD>*/
/*
item0[] = {"Start_",0,4346,-40.348839,-132.558136,49.651161,-82.558136,0.000000,"Start" \n ""};
item1[] = {"Ammo_Check_",4,218,77.325584,-132.558136,167.325684,-82.558144,0.000000,"" \n "Ammo Check" \n ""};
item2[] = {"Range_Check_Comp",2,250,212.591873,-131.328552,302.591888,-81.328552,0.000000,"Range Check" \n "Compile"};
link0[] = {0,1};
link1[] = {1,2};
globals[] = {0.000000,0,0,0,0,640,480,1,5,6316128,1,-143.836792,493.242920,86.587273,-311.587555,1032,618,1};
window[] = {0,-1,-1,-1,-1,868,78,1518,78,1,1050};
*//*%FSM</HEAD>*/
class FSM
{
        fsmName = "Shotfinder";
        class States
        {
                /*%FSM<STATE "Start_">*/
                class Start_
                {
                        name = "Start_";
                        itemno = 0;
                        init = /*%FSM<STATEINIT""">*/"private [""_firer"",""_ammo"",""_rDir"",""_fireLoc"",""_xcor"",""_ycor"",""_ammoArray"",""_sDir"",""_rDistArray"",""_rCheck"",""_maxDetect"",""_vehCount"",""_numCur"",""_vDet""];" \n
                         "" \n
                         "_firer = _this select 0; //Unit who fired weapon" \n
                         "_ammo = _this select 4;" \n
                         "_maxDetect = 300;" \n
                         "_rCheck = [];" \n
                         "_rDistArray =  []; " \n
                         "_vehCount = [];" \n
                         "_vDet = [];" \n
                         "_numCur = 0;" \n
                         "_ammoArray = [""B_556x45_ball"", ""B_65x39_Caseless""];" \n
                         "{_vehCount = _vehCount + [_numCur]; _numCur = _numCur + 1;} foreach vehArraySF;" \n
                         "{_rDistArray = _rDistArray + [_x distance _firer];} forEach vehArraySF;"/*%FSM</STATEINIT""">*/;
                        precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
                        class Links
                        {
                                /*%FSM<LINK "Ammo_Check_">*/
                                class Ammo_Check_
                                {
                                        itemno = 1;
                                        priority = 0.000000;
                                        to="Range_Check_Comp";
                                        precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
                                        condition=/*%FSM<CONDITION""">*/"_ammo in _ammoArray"/*%FSM</CONDITION""">*/;
                                        action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
                                };
                                /*%FSM</LINK>*/
                        };
                };
                /*%FSM</STATE>*/
                /*%FSM<STATE "Range_Check_Comp">*/
                class Range_Check_Comp
                {
                        name = "Range_Check_Comp";
                        itemno = 2;
                        init = /*%FSM<STATEINIT""">*/"{ if (_x <= _maxDetect) then {_rCheck = _rCheck + [1]} else {_rCheck = _rCheck + [0]}; } forEach _rDistArray;" \n
                         "{if (_rCheck select _x == 1) then  {_vDet = _vDet + [vehArraySF select _x];};} forEach _vehCount;" \n
                         "" \n
                         "{" \n
                         "        _fireLoc = getpos _firer;" \n
                         "        _xcor = (_fireLoc select 0) - ((getPos _x) select 0);" \n
                         "        _ycor = (_fireLoc select 1) - ((getPos _x) select 1);" \n
                         "        " \n
                         "        " \n
                         "        switch (true) do" \n
                         "        {" \n
                         "            case ((_xcor > 0)  && (_ycor > 0)): //Quadrent I" \n
                         "            { _sDir = asin (abs(_xcor) / (_x distance _firer));};" \n
                         "            case ((_xcor < 0)  && (_ycor > 0)): //Quadrent II" \n
                         "            {_sDir = (360 - (asin (abs(_xcor) / (_x distance _firer))));};" \n
                         "            case ((_xcor < 0)  && (_ycor < 0)): //Quadrent III" \n
                         "            {_sDir = (270 - (asin (abs(_ycor) / (_x distance _firer))));};" \n
                         "            case ((_xcor > 0 ) && (_ycor < 0)): //Quadrent IV" \n
                         "            {_sDir = (90 +(asin (abs(_ycor) / (_x distance _firer))));};" \n
                         "            case default" \n
                         "            {hint ""Script broked"";};" \n
                         "        };" \n
                         "        _rDir = _sDir - (getDir _x);" \n
                         "        if (_rDir < 0) then {_rdir = _rdir + 360};" \n
                         "        " \n
                         "        switch (true) do" \n
                         "        {" \n
                         "            case ((_rDir > 345) ||(_rDir <= 15)):" \n
                         "            {_x vehicleRadio ""12oclock""; {titleRsc [""sf_12oclock"",""PLAIN""];};};" \n
                         "            case ((_rDir > 15) && (_rDir <= 45)):" \n
                         "            {_x vehicleRadio ""1oclock""; { [""sf_1oclock"",""PLAIN""];};};" \n
                         "            case ((_rDir > 45) && (_rDir <= 75)):" \n
                         "            {_x vehicleRadio ""2oclock""; {titleRsc [""sf_2oclock"",""PLAIN""];};};" \n
                         "            case ((_rDir > 75) && (_rDir <= 105)):" \n
                         "            {_x vehicleRadio ""3oclock""; {titleRsc [""sf_3oclock"",""PLAIN""];};};" \n
                         "            case ((_rDir > 105) && (_rDir <= 135)):" \n
                         "            {_x vehicleRadio ""4oclock""; {titleRsc [""sf_4oclock"",""PLAIN""];};};" \n
                         "            case ((_rDir > 135) && (_rDir <= 165)):" \n
                         "            {_x vehicleRadio ""5oclock""; {titleRsc [""sf_5oclock"",""PLAIN""];};};" \n
                         "            case ((_rDir > 165) && (_rDir <= 195)):" \n
                         "            {_x vehicleRadio ""6oclock""; {titleRsc [""sf_6oclock"",""PLAIN""];};};" \n
                         "            case ((_rDir > 195) && (_rDir <= 225)):" \n
                         "            {_x vehicleRadio ""7oclock""; {titleRsc [""sf_7oclock"",""PLAIN""];};};" \n
                         "            case ((_rDir > 225) && (_rDir <= 255)):" \n
                         "            {_x vehicleRadio ""8oclock""; {titleRsc [""sf_8oclock"",""PLAIN""];};};" \n
                         "            case ((_rDir > 255) && (_rDir <= 285)):" \n
                         "            {_x vehicleRadio ""9oclock""; {titleRsc [""sf_9oclock"",""PLAIN""];};};" \n
                         "            case ((_rDir > 285) && (_rDir <= 315)):" \n
                         "            {_x vehicleRadio ""10oclock""; {titleRsc [""sf_10oclock"",""PLAIN""];};};" \n
                         "            case ((_rDir > 315) && (_rDir <= 345)):" \n
                         "            {_x vehicleRadio ""11oclock""; {titleRsc [""sf_11oclock"",""PLAIN""];};};" \n
                         "            case default" \n
                         "            {hint ""scriptbroked"";};" \n
                         "        };" \n
                         "    } forEach _vDet;"/*%FSM</STATEINIT""">*/;
                        precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
                        class Links
                        {
                        };
                };
                /*%FSM</STATE>*/
        };
        initState="Start_";
        finalStates[] =
        {
        };
};
/*%FSM</COMPILE>*/

What am I missing here? I dont get it. Are there some things in .fsm's that dont work in arma 3? Any help would be appreciated.

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  

×