Advertisement
Guest User

server_cleanup

a guest
Dec 5th, 2013
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 18.80 KB | None | 0 0
  1. /*%FSM<COMPILE "C:\Program Files (x86)\Bohemia Interactive\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, DayZ Server Cleanup">*/
  2. /*%FSM<HEAD>*/
  3. /*
  4. item0[] = {"init",0,250,-75.000000,-425.000000,25.000000,-375.000000,0.000000,"init"};
  5. item1[] = {"true",8,218,-75.000000,-200.000000,25.000000,-150.000000,0.000000,"true"};
  6. item2[] = {"waiting",2,250,-75.000000,-125.000000,25.000000,-75.000000,0.000000,"waiting"};
  7. item3[] = {"too_many_dead",4,218,-125.000000,0.000000,-25.000000,50.000000,2.000000,"too many" \n "dead"};
  8. item4[] = {"cleanup_dead",2,250,-125.000000,75.000000,-25.000000,125.000000,0.000000,"cleanup" \n "dead"};
  9. item5[] = {"too_many_objects",4,218,-25.000000,0.000000,75.000000,50.000000,2.000000,"too many" \n "objects"};
  10. item6[] = {"cleanup_objects",2,250,-25.000000,75.000000,75.000000,125.000000,0.000000,"cleanup" \n "objects"};
  11. item7[] = {"time_sync",4,218,-225.000000,0.000000,-125.000000,50.000000,1.000000,"time" \n "sync"};
  12. item8[] = {"sync_the_time",2,250,-225.000000,175.000000,-125.000000,225.000000,0.000000,"sync" \n "the time"};
  13. item9[] = {"true",8,218,-75.000000,250.000000,25.000000,300.000000,0.000000,"true"};
  14. item10[] = {"general_cleanup",2,250,-75.000000,350.000000,25.000000,400.000000,0.000000,"general" \n "cleanup"};
  15. item11[] = {"",7,210,-304.000000,371.000000,-296.000000,379.000031,0.000000,""};
  16. item12[] = {"",7,210,-304.000000,-179.000000,-296.000000,-171.000000,0.000000,""};
  17. item13[] = {"initialized",4,218,-75.000000,-350.000000,25.000000,-300.000000,0.000000,"initialized"};
  18. item14[] = {"prepare",2,250,-75.000000,-275.000000,25.000000,-225.000000,0.000000,"prepare"};
  19. item15[] = {"update_objects",2,250,75.000000,175.000000,175.000000,225.000000,0.000000,"update objects"};
  20. item16[] = {"Objects_need_upd",4,4314,75.000000,0.000000,175.000000,50.000000,1.000000,"Objects" \n "need update"};
  21. item17[] = {"timeout",4,218,250.000000,-225.000000,350.000000,-175.000000,0.000000,"timeout"};
  22. item18[] = {"",7,210,246.000000,271.000000,254.000000,279.000000,0.000000,""};
  23. item19[] = {"",7,210,-29.000000,-41.500000,-21.000000,-33.499996,0.000000,""};
  24. item20[] = {"",7,210,20.999998,-41.500000,29.000000,-33.500000,0.000000,""};
  25. item21[] = {"",7,210,121.000000,-41.500000,129.000000,-33.500000,0.000000,""};
  26. item22[] = {"",7,210,-79.000000,-41.500000,-71.000000,-33.500000,0.000000,""};
  27. item23[] = {"",7,210,-179.000000,-41.500000,-171.000000,-33.500000,0.000000,""};
  28. item24[] = {"",7,210,-79.000000,146.000000,-71.000000,154.000000,0.000000,""};
  29. item25[] = {"",7,210,21.000000,146.000000,28.999998,154.000000,0.000000,""};
  30. item26[] = {"",7,210,-29.000000,146.000000,-20.999998,154.000000,0.000000,""};
  31. item27[] = {"",7,210,246.000000,-104.000000,254.000000,-96.000000,0.000000,""};
  32. item28[] = {"",7,210,121.000000,271.000000,129.000000,279.000000,0.000000,""};
  33. item29[] = {"",7,210,-179.000000,271.000000,-171.000000,279.000000,0.000000,""};
  34. item30[] = {"____FAKE____",9,1200,0.000000,0.000000,0.000000,0.000000,0.000000,"____FAKE____"};
  35. link0[] = {0,13};
  36. link1[] = {1,2};
  37. link2[] = {2,19};
  38. link3[] = {2,27};
  39. link4[] = {3,4};
  40. link5[] = {4,24};
  41. link6[] = {5,6};
  42. link7[] = {6,25};
  43. link8[] = {7,8};
  44. link9[] = {8,29};
  45. link10[] = {9,10};
  46. link11[] = {10,11};
  47. link12[] = {11,12};
  48. link13[] = {12,1};
  49. link14[] = {13,14};
  50. link15[] = {14,1};
  51. link16[] = {15,28};
  52. link17[] = {16,15};
  53. link18[] = {18,28};
  54. link19[] = {19,20};
  55. link20[] = {19,22};
  56. link21[] = {20,5};
  57. link22[] = {20,21};
  58. link23[] = {21,16};
  59. link24[] = {22,3};
  60. link25[] = {22,23};
  61. link26[] = {23,7};
  62. link27[] = {24,26};
  63. link28[] = {25,26};
  64. link29[] = {26,9};
  65. link30[] = {27,18};
  66. link31[] = {28,9};
  67. link32[] = {29,9};
  68. link33[] = {17,30};
  69. link34[] = {30,17};
  70. globals[] = {25.000000,1,0,0,0,640,480,1,45,6316128,1,-334.464142,416.388702,331.898743,-322.104980,690,601,1};
  71. window[] = {2,-1,-1,-1,-1,846,66,1395,66,3,707};
  72. *//*%FSM</HEAD>*/
  73. class FSM
  74. {
  75.   fsmName = "DayZ Server Cleanup";
  76.   class States
  77.   {
  78.     /*%FSM<STATE "init">*/
  79.     class init
  80.     {
  81.       name = "init";
  82.       init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
  83.       precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
  84.       class Links
  85.       {
  86.         /*%FSM<LINK "initialized">*/
  87.         class initialized
  88.         {
  89.           priority = 0.000000;
  90.           to="prepare";
  91.           precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  92.           condition=/*%FSM<CONDITION""">*/"!isnil ""bis_fnc_init"""/*%FSM</CONDITION""">*/;
  93.           action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
  94.         };
  95.         /*%FSM</LINK>*/
  96.       };
  97.     };
  98.     /*%FSM</STATE>*/
  99.     /*%FSM<STATE "waiting">*/
  100.     class waiting
  101.     {
  102.       name = "waiting";
  103.       init = /*%FSM<STATEINIT""">*/"//diag_log ""CLEANUP: Waiting for next task"";" \n
  104.        "_numDead = {local _x} count allDead;" \n
  105.        ""/*%FSM</STATEINIT""">*/;
  106.       precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
  107.       class Links
  108.       {
  109.         /*%FSM<LINK "too_many_dead">*/
  110.         class too_many_dead
  111.         {
  112.           priority = 2.000000;
  113.           to="cleanup_dead";
  114.           precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  115.           condition=/*%FSM<CONDITION""">*/"(_numDead > 300)"/*%FSM</CONDITION""">*/;
  116.           action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
  117.         };
  118.         /*%FSM</LINK>*/
  119.         /*%FSM<LINK "too_many_objects">*/
  120.         class too_many_objects
  121.         {
  122.           priority = 2.000000;
  123.           to="cleanup_objects";
  124.           precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  125.           condition=/*%FSM<CONDITION""">*/"((diag_tickTime - _timeNem) > 60)"/*%FSM</CONDITION""">*/;
  126.           action=/*%FSM<ACTION""">*/"_timeNem = diag_tickTime;"/*%FSM</ACTION""">*/;
  127.         };
  128.         /*%FSM</LINK>*/
  129.         /*%FSM<LINK "time_sync">*/
  130.         class time_sync
  131.         {
  132.           priority = 1.000000;
  133.           to="sync_the_time";
  134.           precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  135.           condition=/*%FSM<CONDITION""">*/"((diag_tickTime - _lastUpdate) > 300)"/*%FSM</CONDITION""">*/;
  136.           action=/*%FSM<ACTION""">*/"_lastUpdate = diag_tickTime;"/*%FSM</ACTION""">*/;
  137.         };
  138.         /*%FSM</LINK>*/
  139.         /*%FSM<LINK "Objects_need_upd">*/
  140.         class Objects_need_upd
  141.         {
  142.           priority = 1.000000;
  143.           to="update_objects";
  144.           precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  145.           condition=/*%FSM<CONDITION""">*/"(( (count needUpdate_objects) > 0) && (diag_tickTime -_lastNeedUpdate> 5))"/*%FSM</CONDITION""">*/;
  146.           action=/*%FSM<ACTION""">*/"_lastNeedUpdate = diag_tickTime;"/*%FSM</ACTION""">*/;
  147.         };
  148.         /*%FSM</LINK>*/
  149.         /*%FSM<LINK "true">*/
  150.         class true
  151.         {
  152.           priority = 0.000000;
  153.           to="general_cleanup";
  154.           precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  155.           condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
  156.           action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
  157.         };
  158.         /*%FSM</LINK>*/
  159.       };
  160.     };
  161.     /*%FSM</STATE>*/
  162.     /*%FSM<STATE "cleanup_dead">*/
  163.     class cleanup_dead
  164.     {
  165.       name = "cleanup_dead";
  166.       init = /*%FSM<STATEINIT""">*/"diag_log (""CLEANUP: PERFORMING BODY CLEANUP"");" \n
  167.        "" \n
  168.        "_delQtyP = 0;" \n
  169.        "_delQtyZ = 0;" \n
  170.        "_delQtyFL = 0;" \n
  171.        "_delQtyFL1 = 0;" \n
  172.        "_delQtyFP = 0;" \n
  173.        "" \n
  174.        "{" \n
  175.        "    if (local _x) then {" \n
  176.        "        if (_x isKindOf ""zZombie_Base"") then {" \n
  177.        "                deleteVehicle _x;" \n
  178.        "                _delQtyZ = _delQtyZ + 1;" \n
  179.        "        };" \n
  180.        "" \n
  181.        "        if (_x isKindOf ""CAManBase"") then {" \n
  182.        "            _deathTime = _x getVariable [""processedDeath"", diag_tickTime];" \n
  183.        "            if (diag_tickTime - _deathTime > 1200) then {" \n
  184.        "                /*" \n
  185.        "                _flies = nearestObject [_x, ""Sound_Flies""];" \n
  186.        "                if (!isNull _flies) then {" \n
  187.        "                    deleteVehicle _flies;" \n
  188.        "                    _delQtyFL = _delQtyFL + 1;" \n
  189.        "                }; */" \n
  190.        "                deleteVehicle _x;" \n
  191.        "                _delQtyP = _delQtyP + 1;" \n
  192.        "            };" \n
  193.        "        };" \n
  194.        "        if (_x isKindOf ""Seagull"") then {" \n
  195.        "                _myGroupX = group _x;" \n
  196.        "                _x removeAllMPEventHandlers ""mpkilled"";" \n
  197.        "                _x removeAllMPEventHandlers ""mphit"";" \n
  198.        "                _x removeAllMPEventHandlers ""mprespawn"";" \n
  199.        "                _x removeAllEventHandlers ""FiredNear"";" \n
  200.        "                _x removeAllEventHandlers ""HandleDamage"";" \n
  201.        "                _x removeAllEventHandlers ""Killed"";" \n
  202.        "                _x removeAllEventHandlers ""Fired"";" \n
  203.        "                _x removeAllEventHandlers ""GetOut"";" \n
  204.        "                _x removeAllEventHandlers ""Local"";" \n
  205.        "                clearVehicleInit _x;" \n
  206.        "                deleteVehicle _x;" \n
  207.        "                deleteGroup _myGroupX;" \n
  208.        "                _x = nil;" \n
  209.        "        };" \n
  210.        "                _myGroupX = group _x;" \n
  211.        "                _x removeAllMPEventHandlers ""mpkilled"";" \n
  212.        "                _x removeAllMPEventHandlers ""mphit"";" \n
  213.        "                _x removeAllMPEventHandlers ""mprespawn"";" \n
  214.        "                _x removeAllEventHandlers ""FiredNear"";" \n
  215.        "                _x removeAllEventHandlers ""HandleDamage"";" \n
  216.        "                _x removeAllEventHandlers ""Killed"";" \n
  217.        "                _x removeAllEventHandlers ""Fired"";" \n
  218.        "                _x removeAllEventHandlers ""GetOut"";" \n
  219.        "                _x removeAllEventHandlers ""Local"";" \n
  220.        "                clearVehicleInit _x;" \n
  221.        "                deleteVehicle _x;" \n
  222.        "                deleteGroup _myGroupX;" \n
  223.        "                _x = nil;   " \n
  224.        "    };" \n
  225.        "} forEach allDead;" \n
  226.        "" \n
  227.        "{" \n
  228.        "    if ({!alive _x} count (nearestObjects [_x, [""CAManBase""], 10]) >= 0) then {" \n
  229.        "        deleteVehicle _x;" \n
  230.        "        _delQtyFL1 = _delQtyFL1 + 1;" \n
  231.        "    };" \n
  232.        "} forEach allMissionObjects ""Sound_Flies"";" \n
  233.        "" \n
  234.        "{" \n
  235.        "    if (local _x) then {" \n
  236.        "        deleteVehicle _x;" \n
  237.        "        _delQtyFP = _delQtyFP + 1;" \n
  238.        "    };" \n
  239.        "} forEach allMissionObjects ""Land_Fire_DZ"";" \n
  240.        "" \n
  241.        "diag_log (format[""CLEANUP: Deleted %1 players, %2 zombies, %3/%5 flies and %4 fireplaces."",_delQtyP,_delQtyZ,_delQtyFL,_delQtyFP,_delQtyFL1]);" \n
  242.        "" \n
  243.        "//diag_log (""CLEANUP: Deleted "" + str(_delQtyP) + "" players, "" + str(_delQtyZ) + "" zombies, "" + str(_delQtyFL) + "" flies, and "" + str(_delQtyFP) +  "" fireplaces"");"/*%FSM</STATEINIT""">*/;
  244.       precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
  245.       class Links
  246.       {
  247.         /*%FSM<LINK "true">*/
  248.         class true
  249.         {
  250.           priority = 0.000000;
  251.           to="general_cleanup";
  252.           precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  253.           condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
  254.           action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
  255.         };
  256.         /*%FSM</LINK>*/
  257.       };
  258.     };
  259.     /*%FSM</STATE>*/
  260.     /*%FSM<STATE "cleanup_objects">*/
  261.     class cleanup_objects
  262.     {
  263.       name = "cleanup_objects";
  264.       init = /*%FSM<STATEINIT""">*/"_missionObjs =  allMissionObjects ""ReammoBox"";" \n
  265.        "_qty = count _missionObjs;" \n
  266.        "" \n
  267.        "diag_log (""CLEANUP:TOTAL "" + str(_qty) + "" LOOT BAGS"");" \n
  268.        "" \n
  269.        "_dateNow = (DateToNumber date);" \n
  270.        "_delQty = 0;" \n
  271.        "{" \n
  272.        "    _created = (_x getVariable [""created"",-0.1]);" \n
  273.        "    if (_created == -0.1) then {" \n
  274.        "        _x setVariable [""created"",_dateNow,false];" \n
  275.        "        _created = _dateNow;" \n
  276.        "    };" \n
  277.        "    _keep = _x getVariable [""permaLoot"",false];" \n
  278.        "    _age = (_dateNow - _created) * 525948;" \n
  279.        "    _nearby = {(isPlayer _x) and (alive _x)} count (_x nearEntities [[""CAManBase"",""AllVehicles""], 130]);" \n
  280.        "    if ( (!_keep) && (_nearby==0) && (_age > 20)) then {" \n
  281.        "        deleteVehicle _x;" \n
  282.        "        _delQty = _delQty + 1;" \n
  283.        "    };" \n
  284.        "" \n
  285.        "} forEach _missionObjs;" \n
  286.        "" \n
  287.        "if (_delQty > 0) then {" \n
  288.        "    diag_log (""CLEANUP: DELETED "" + str(_delQty) + "" LOOT BAGS"");" \n
  289.        "};" \n
  290.        ""/*%FSM</STATEINIT""">*/;
  291.       precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
  292.       class Links
  293.       {
  294.         /*%FSM<LINK "true">*/
  295.         class true
  296.         {
  297.           priority = 0.000000;
  298.           to="general_cleanup";
  299.           precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  300.           condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
  301.           action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
  302.         };
  303.         /*%FSM</LINK>*/
  304.       };
  305.     };
  306.     /*%FSM</STATE>*/
  307.     /*%FSM<STATE "sync_the_time">*/
  308.     class sync_the_time
  309.     {
  310.       name = "sync_the_time";
  311.       init = /*%FSM<STATEINIT""">*/"//Send request" \n
  312.        "_key = ""CHILD:307:"";" \n
  313.        "_result = _key call server_hiveReadWrite;" \n
  314.        "_outcome = _result select 0;" \n
  315.        "if(_outcome == ""PASS"") then {" \n
  316.        "    _date = _result select 1;" \n
  317.        "" \n
  318.        "    //date setup" \n
  319.        "    _year = _date select 0;" \n
  320.        "    _month = _date select 1;" \n
  321.        "    _day = _date select 2;" \n
  322.        "    _hour = _date select 3;" \n
  323.        "    _minute = _date select 4;" \n
  324.        "" \n
  325.        "    //Force full moon nights" \n
  326.        "    _date1 = [2013,8,3,_hour,_minute];" \n
  327.        "" \n
  328.        "    setDate _date1;" \n
  329.        "    dayzSetDate = _date1;" \n
  330.        "    dayz_storeTimeDate = _date1;" \n
  331.        "    publicVariable ""dayzSetDate"";" \n
  332.        "    diag_log (""TIME SYNC: Local Time set to "" + str(_date1));" \n
  333.        "};" \n
  334.        ""/*%FSM</STATEINIT""">*/;
  335.       precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
  336.       class Links
  337.       {
  338.         /*%FSM<LINK "true">*/
  339.         class true
  340.         {
  341.           priority = 0.000000;
  342.           to="general_cleanup";
  343.           precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  344.           condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
  345.           action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
  346.         };
  347.         /*%FSM</LINK>*/
  348.       };
  349.     };
  350.     /*%FSM</STATE>*/
  351.     /*%FSM<STATE "general_cleanup">*/
  352.     class general_cleanup
  353.     {
  354.       name = "general_cleanup";
  355.       init = /*%FSM<STATEINIT""">*/"//Clean groups" \n
  356.        "{" \n
  357.        "    //diag_log (""CLEANUP: CHECKING GROUP WITH "" + str(count units _x) + "" UNITS"");" \n
  358.        "    if (count units _x==0) then {" \n
  359.        "        deleteGroup _x;" \n
  360.        "        //diag_log (""CLEANUP: DELETING A GROUP"");" \n
  361.        "    };" \n
  362.        "} forEach allGroups;" \n
  363.        "" \n
  364.         "Check for hackers" \n
  365.        "{" \n
  366.         "if(vehicle _x != _x && (vehicle _x getVariable ["Mission",0] != 1) && (vehicle _x getVariable ["Sarge",0] != 1) && !(vehicle _x in _safety) && (typeOf vehicle _x) !=
  367.       "diag_log (""CLEANUP: KILLING A HACKER "" + (name _x) + "" "" + str(_x) + "" IN "" + (typeOf vehicle _x));" \n
  368.       "(vehicle _x) setDamage 0.2;" \n
  369.       "_x setDamage 0.2;" \n
  370.       "};" \n
  371.       "} forEach allUnits;" \n
  372.       "" \n
  373.       "dayz_serverObjectMonitor = _safety;"/*%FSM</STATEINIT""">*/;
  374.       precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
  375.       class Links
  376.       {
  377.         /*%FSM<LINK "true">*/
  378.         class true
  379.         {
  380.           priority = 0.000000;
  381.           to="waiting";
  382.           precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  383.           condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
  384.           action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
  385.         };
  386.         /*%FSM</LINK>*/
  387.       };
  388.     };
  389.     /*%FSM</STATE>*/
  390.     /*%FSM<STATE "prepare">*/
  391.     class prepare
  392.     {
  393.       name = "prepare";
  394.       init = /*%FSM<STATEINIT""">*/"diag_log (""CLEANUP: INITIALIZING CLEANUP SCRIPT"");" \n
  395.        "" \n
  396.        "_safety = dayz_serverObjectMonitor;" \n
  397.        "_dateNow = (DateToNumber date);" \n
  398.        "" \n
  399.        "_lastUpdate = diag_tickTime;" \n
  400.        "_timeNem =diag_tickTime;" \n
  401.        "_deadBodies = [];" \n
  402.        "_lastNeedUpdate = diag_tickTime;" \n
  403.        "_timeout = diag_tickTime;" \n
  404.        "_maxBodies = 15;" \n
  405.        ""/*%FSM</STATEINIT""">*/;
  406.       precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
  407.       class Links
  408.       {
  409.         /*%FSM<LINK "true">*/
  410.         class true
  411.         {
  412.           priority = 0.000000;
  413.           to="waiting";
  414.           precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  415.           condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
  416.           action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
  417.         };
  418.         /*%FSM</LINK>*/
  419.       };
  420.     };
  421.     /*%FSM</STATE>*/
  422.     /*%FSM<STATE "update_objects">*/
  423.     class update_objects
  424.     {
  425.       name = "update_objects";
  426.       init = /*%FSM<STATEINIT""">*/"diag_log format[""DEBUG: needUpdate_objects=%1"",needUpdate_objects];" \n
  427.        "{" \n
  428.        "//  _x setVariable [""needUpdate"",false,true];" \n
  429.        "    needUpdate_objects = needUpdate_objects - [_x];" \n
  430.        "    [_x,""damage"",true] call server_updateObject;" \n
  431.        "" \n
  432.        "} forEach needUpdate_objects;" \n
  433.        ""/*%FSM</STATEINIT""">*/;
  434.       precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
  435.       class Links
  436.       {
  437.         /*%FSM<LINK "true">*/
  438.         class true
  439.         {
  440.           priority = 0.000000;
  441.           to="general_cleanup";
  442.           precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  443.           condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
  444.           action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
  445.         };
  446.         /*%FSM</LINK>*/
  447.       };
  448.     };
  449.     /*%FSM</STATE>*/
  450.     /*%FSM<STATE "____FAKE____">*/
  451.     class ____FAKE____
  452.     {
  453.       name = "____FAKE____";
  454.       init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
  455.       precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
  456.       class Links
  457.       {
  458.         /*%FSM<LINK "timeout">*/
  459.         class timeout
  460.         {
  461.           priority = 0.000000;
  462.           to="____FAKE____";
  463.           precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  464.           condition=/*%FSM<CONDITION""">*/"(diag_tickTime - _timeout) > 1"/*%FSM</CONDITION""">*/;
  465.           action=/*%FSM<ACTION""">*/"_timeout = diag_tickTime;"/*%FSM</ACTION""">*/;
  466.         };
  467.         /*%FSM</LINK>*/
  468.       };
  469.     };
  470.     /*%FSM</STATE>*/
  471.   };
  472.   initState="init";
  473.   finalStates[] =
  474.   {
  475.   };
  476. };
  477. /*%FSM</COMPILE>*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement