/*%FSM*/ /*%FSM*/ /* item0[] = {"init",0,250,-75.000000,-500.000000,25.000000,-450.000000,0.000000,"init"}; item1[] = {"true",8,218,-75.000000,-275.000000,25.000000,-225.000000,0.000000,"true"}; item2[] = {"waiting",2,250,-75.000000,-200.000000,25.000000,-150.000000,0.000000,"waiting"}; item3[] = {"___min_loop",4,218,-75.000000,-75.000000,25.000000,-25.000000,4.000000,"5 min" \n "loop"}; item4[] = {"sync_time",2,250,-75.000000,25.000000,25.000000,75.000000,0.000000,"sync time"}; item5[] = {"true",8,218,-75.000000,125.000000,25.000000,175.000000,0.000000,"true"}; item6[] = {"general_cleanup",2,250,-75.000000,200.000000,25.000000,250.000000,0.000000,"general" \n "cleanup" \n "loop"}; item7[] = {"",7,210,-491.500000,220.999985,-483.500000,229.000015,0.000000,""}; item8[] = {"",7,210,-491.500000,-253.999969,-483.500000,-246.000031,0.000000,""}; item9[] = {"",7,210,421.000000,-178.999985,428.999969,-171.000015,0.000000,""}; item10[] = {"",7,210,421.000000,146.000000,428.999969,154.000000,0.000000,""}; item11[] = {"initialized",4,218,-75.000000,-425.000000,25.000000,-375.000000,0.000000,"initialized"}; item12[] = {"prepare",2,250,-75.000000,-350.000000,25.000000,-300.000000,0.000000,"prepare"}; item13[] = {"update_objects",2,250,-325.000000,25.000000,-225.000000,75.000000,0.000000,"update objects"}; item14[] = {"__s_update__obje",4,218,-325.000000,-75.000000,-225.000000,-25.000000,2.000000,"5s" \n "update " \n "objects"}; item15[] = {"___second_loop",4,218,-450.000000,-75.000000,-350.000000,-25.000000,1.000000,"1 second" \n "loop"}; item16[] = {"group_cleanup",2,250,-450.000000,25.000000,-350.000000,75.000000,0.000000,"group" \n "cleanup"}; item17[] = {"__0_min__loop_1",4,218,50.000000,-75.000000,150.000000,-25.000000,5.000000,"10 min" \n " loop"}; item18[] = {"cleanup_dead",2,250,50.000000,25.000000,150.000000,75.000000,0.000000,"cleanup" \n "dead"}; item19[] = {"___min__loop",4,218,-200.000000,-75.000000,-100.000000,-25.000000,3.000000,"1 min" \n " loop"}; item20[] = {"cleanup_loot",2,250,-200.000000,25.000000,-100.000000,75.000000,0.000000,"cleanup" \n "loot"}; item21[] = {"__5_min__loop",4,218,175.000000,-75.000000,275.000000,-25.000000,6.000000,"15 min" \n " loop"}; item22[] = {"cleanup_animals",2,250,175.000000,25.000000,275.000000,75.000000,0.000000,"cleanup" \n "animals and fire"}; item23[] = {"__0_min__loop",4,218,300.000000,-75.000000,400.000000,-25.000000,7.000000,"30 min" \n " loop"}; item24[] = {"cleanup_null",2,4346,300.000000,25.000000,400.000000,75.000000,0.000000,"cleanup" \n "null"}; link0[] = {0,11}; link1[] = {1,2}; link2[] = {2,3}; link3[] = {2,9}; link4[] = {2,14}; link5[] = {2,15}; link6[] = {2,17}; link7[] = {2,19}; link8[] = {2,21}; link9[] = {2,23}; link10[] = {3,4}; link11[] = {4,5}; link12[] = {5,6}; link13[] = {6,7}; link14[] = {7,8}; link15[] = {8,1}; link16[] = {9,10}; link17[] = {10,5}; link18[] = {11,12}; link19[] = {12,1}; link20[] = {13,5}; link21[] = {14,13}; link22[] = {15,16}; link23[] = {16,5}; link24[] = {17,18}; link25[] = {18,5}; link26[] = {19,20}; link27[] = {20,5}; link28[] = {21,22}; link29[] = {22,5}; link30[] = {23,24}; link31[] = {24,5}; globals[] = {25.000000,1,0,0,0,640,480,1,42,6316128,1,-508.946564,440.498199,435.888916,-341.331024,861,630,1}; window[] = {2,-1,-1,-1,-1,838,26,1318,26,3,879}; *//*%FSM*/ class FSM { fsmName = "DayZ Server Cleanup"; class States { /*%FSM*/ class init { name = "init"; init = /*%FSM*/""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class initialized { priority = 0.000000; to="prepare"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"!isnil ""bis_fnc_init"""/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class waiting { name = "waiting"; init = /*%FSM*/"//diag_log ""CLEANUP: Waiting for next task"";" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class __0_min__loop { priority = 7.000000; to="cleanup_null"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"((diag_tickTime - _lastCleanup1800) > 1800)"/*%FSM*/; action=/*%FSM*/"_lastCleanup1800 = diag_tickTime;"/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class __5_min__loop { priority = 6.000000; to="cleanup_animals"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"((diag_tickTime - _lastCleanup900) > 900)"/*%FSM*/; action=/*%FSM*/"_lastCleanup900 = diag_tickTime;"/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class __0_min__loop_1 { priority = 5.000000; to="cleanup_dead"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"((diag_tickTime - _lastCleanupNull) > 600)"/*%FSM*/; action=/*%FSM*/"_lastCleanupNull = diag_tickTime;"/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class ___min_loop { priority = 4.000000; to="sync_time"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"((diag_tickTime - _lastUpdate) > 300)"/*%FSM*/; action=/*%FSM*/"_lastUpdate = diag_tickTime;"/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class ___min__loop { priority = 3.000000; to="cleanup_loot"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"((diag_tickTime - _lastCleanupVehicles) > 60)"/*%FSM*/; action=/*%FSM*/"_lastCleanupVehicles = diag_tickTime;"/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class __s_update__obje { priority = 2.000000; to="update_objects"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"(( (count needUpdate_objects) > 0) && (diag_tickTime -_lastNeedUpdate> 5))"/*%FSM*/; action=/*%FSM*/"_lastNeedUpdate = diag_tickTime;"/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class ___second_loop { priority = 1.000000; to="group_cleanup"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"((diag_tickTime - _lastCleanupGroups) > 1)"/*%FSM*/; action=/*%FSM*/"_lastCleanupGroups = diag_tickTime;"/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class true { priority = 0.000000; to="general_cleanup"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class sync_time { name = "sync_time"; init = /*%FSM*/"if (DZE_DiagFpsSlow) then {" \n " call dze_diag_fps;" \n "};" \n "call server_timeSync;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class true { priority = 0.000000; to="general_cleanup"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class general_cleanup { name = "general_cleanup"; init = /*%FSM*/"//diag_log ""CLEANUP: Starting loop for next task"";" \n "" \n "//Clean groups" \n "{" \n " // diag_log (""CLEANUP: CHECKING GROUP WITH "" + str(count units _x) + "" UNITS"");" \n " if (count units _x==0) then {" \n " deleteGroup _x;" \n " // diag_log (""CLEANUP: DELETING A GROUP"");" \n " };" \n "} forEach allGroups;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class true { priority = 0.000000; to="waiting"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class prepare { name = "prepare"; init = /*%FSM*/"diag_log (""CLEANUP: INITIALIZING CLEANUP SCRIPT"");" \n "" \n "_lastUpdate = diag_tickTime;" \n "_lastNeedUpdate = diag_tickTime;" \n "_lastCleanupVehicles = diag_tickTime;" \n "_lastCleanupGroups = diag_tickTime;" \n "_lastCleanupNull = diag_tickTime;" \n "" \n "_lastCleanup900 = diag_tickTime;" \n "_lastCleanup1800 = diag_tickTime;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class true { priority = 0.000000; to="waiting"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class update_objects { name = "update_objects"; init = /*%FSM*/"{" \n " needUpdate_objects = needUpdate_objects - [_x];" \n " [_x,""damage"",true] call server_updateObject;" \n "} forEach needUpdate_objects;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class true { priority = 0.000000; to="general_cleanup"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class group_cleanup { name = "group_cleanup"; init = /*%FSM*/"//Check for hackers" \n " {" \n " if(vehicle _x != _x && !(vehicle _x in PVDZE_serverObjectMonitor) && (isPlayer _x) && !((typeOf vehicle _x) in DZE_safeVehicle)) then {" \n " diag_log (""CLEANUP: KILLING A HACKER "" + (name _x) + "" "" + str(_x) + "" IN "" + (typeOf vehicle _x));" \n " (vehicle _x) setDamage 1;" \n " _x setDamage 1;" \n " };" \n " } forEach allUnits;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class true { priority = 0.000000; to="general_cleanup"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class cleanup_dead { name = "cleanup_dead"; init = /*%FSM*/"[] spawn server_spawncleanDead;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class true { priority = 0.000000; to="general_cleanup"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class cleanup_loot { name = "cleanup_loot"; init = /*%FSM*/"if (DZE_DiagFpsFast) then {" \n " call dze_diag_fps;" \n "};" \n "" \n "[] spawn server_spawnCleanLoot;" \n "" \n "// set player save time based on server performance" \n "PVDZE_plr_SetSaveTime = round(60 - diag_fps);" \n "publicVariable ""PVDZE_plr_SetSaveTime"";"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class true { priority = 0.000000; to="general_cleanup"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class cleanup_animals { name = "cleanup_animals"; init = /*%FSM*/"[] spawn server_spawnCleanFire;" \n "[] spawn server_spawnCleanAnimals;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class true { priority = 0.000000; to="general_cleanup"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ /*%FSM*/ class cleanup_null { name = "cleanup_null"; init = /*%FSM*/"if (DZE_CleanNull) then {" \n " [] spawn server_spawnCleanNull;" \n "};"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { /*%FSM*/ class true { priority = 0.000000; to="general_cleanup"; precondition = /*%FSM*/""/*%FSM*/; condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ }; }; /*%FSM*/ }; initState="init"; finalStates[] = { }; }; /*%FSM*/