Advertisement
Guest User

server_cleanup.fsm

a guest
Jun 3rd, 2013
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.07 KB | None | 0 0
  1.  
  2. /*%FSM<COMPILE "C:\Program Files (x86)\Bohemia Interactive\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, DayZ Server Cleanup">*/
  3. /*%FSM<COMPILE "P:\Personal Tools\FSM Editor Personal Edition\scriptedFSM.cfg, DayZ Server Cleanup">*/
  4. /*%FSM<HEAD>*/
  5. /*
  6. item0[] = {"init",0,250,-75.000000,-400.000000,25.000000,-350.000000,0.000000,"init"};
  7. item1[] = {"true",8,218,-75.000000,-175.000000,25.000000,-125.000000,0.000000,"true"};
  8. item2[] = {"waiting",2,250,-75.000000,-100.000000,25.000000,-50.000000,0.000000,"waiting"};
  9. item3[] = {"too_many_dead",4,218,-150.000000,-25.000000,-50.000000,25.000000,2.000000,"too many" \n "dead"};
  10. item4[] = {"cleanup_dead",2,250,-150.000000,50.000000,-50.000000,100.000000,0.000000,"cleanup" \n "dead"};
  11. item5[] = {"too_many_objects",4,218,-25.000000,-25.000000,75.000000,25.000000,0.000000,"too many" \n "objects"};
  12. item6[] = {"cleanup_objects",2,250,-25.000000,50.000000,75.000000,100.000000,0.000000,"cleanup" \n "objects"};
  13. item7[] = {"time_sync",4,218,-275.000000,-25.000000,-175.000000,25.000000,1.000000,"time" \n "sync"};
  14. item8[] = {"sync_the_time",2,250,-275.000000,50.000000,-175.000000,100.000000,0.000000,"sync" \n "the time"};
  15. item9[] = {"true",8,218,-75.000000,125.000000,25.000000,175.000000,0.000000,"true"};
  16. item10[] = {"general_cleanup",2,250,-75.000000,200.000000,25.000000,250.000000,0.000000,"general" \n "cleanup"};
  17. item11[] = {"",7,210,-304.000000,220.999985,-296.000000,229.000015,0.000000,""};
  18. item12[] = {"",7,210,-304.000000,-154.000000,-296.000000,-146.000000,0.000000,""};
  19. item13[] = {"",7,210,221.000000,-79.000000,229.000000,-71.000000,0.000000,""};
  20. item14[] = {"",7,210,221.000000,146.000000,229.000000,154.000000,0.000000,""};
  21. item15[] = {"initialized",4,218,-75.000000,-325.000000,25.000000,-275.000000,0.000000,"initialized"};
  22. item16[] = {"prepare",2,250,-75.000000,-250.000000,25.000000,-200.000000,0.000000,"prepare"};
  23. item17[] = {"update_objects",2,250,100.000000,50.000000,200.000000,100.000000,0.000000,"update objects"};
  24. item18[] = {"need_update",4,218,100.000000,-25.000000,200.000000,25.000000,1.000000,"need update"};
  25. item19[] = {"",7,210,221.000000,-79.000000,229.000000,-71.000000,0.000000,""};
  26. item20[] = {"zeds",4,218,-275.000000,-100.000000,-175.000000,-50.000000,5.000000,"zeds"};
  27. item21[] = {"zeds_2",2,4346,-275.000000,-225.000000,-175.000000,-175.000000,0.000000,"zeds 2"};
  28. item21[] = {"zeds_2",2,250,-275.000000,-250.000000,-175.000000,-200.000000,0.000000,"zeds 2"};
  29. link0[] = {0,15};
  30. link1[] = {1,2};
  31. link2[] = {2,3};
  32. link3[] = {2,5};
  33. link4[] = {2,7};
  34. link5[] = {2,13};
  35. link6[] = {2,18};
  36. link7[] = {2,20};
  37. link8[] = {3,4};
  38. link9[] = {4,9};
  39. link10[] = {5,6};
  40. link11[] = {6,9};
  41. link12[] = {7,8};
  42. link13[] = {8,9};
  43. link14[] = {9,10};
  44. link15[] = {10,11};
  45. link16[] = {11,12};
  46. link17[] = {12,1};
  47. link18[] = {13,14};
  48. link19[] = {13,19};
  49. link20[] = {14,9};
  50. link21[] = {15,16};
  51. link22[] = {16,1};
  52. link23[] = {17,9};
  53. link24[] = {18,17};
  54. link25[] = {20,21};
  55. link26[] = {21,1};
  56. globals[] = {25.000000,1,0,0,0,640,480,1,27,6316128,1,-386.425232,364.427612,247.440155,-429.820587,704,635,1};
  57. window[] = {0,-1,-1,-1,-1,780,726,1659,0,1,722};
  58. globals[] = {25.000000,1,0,0,0,640,480,1,26,6316128,1,-396.580658,354.272186,396.133423,-517.674316,834,1015,1};
  59. window[] = {0,-1,-1,-1,-1,1284,1161,2490,124,1,852};
  60. *//*%FSM</HEAD>*/
  61. class FSM
  62. {
  63. fsmName = "DayZ Server Cleanup";
  64. class States
  65. {
  66. /*%FSM<STATE "init">*/
  67. class init
  68. {
  69. name = "init";
  70. init = /*%FSM<STATEINIT""">*/""/*%FSM</STATEINIT""">*/;
  71. precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
  72. class Links
  73. {
  74. /*%FSM<LINK "initialized">*/
  75. class initialized
  76. {
  77. priority = 0.000000;
  78. to="prepare";
  79. precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  80. condition=/*%FSM<CONDITION""">*/"!isnil ""bis_fnc_init"""/*%FSM</CONDITION""">*/;
  81. action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
  82. };
  83. /*%FSM</LINK>*/
  84. };
  85. };
  86. /*%FSM</STATE>*/
  87. /*%FSM<STATE "waiting">*/
  88. class waiting
  89. {
  90. name = "waiting";
  91. init = /*%FSM<STATEINIT""">*/"//diag_log ""CLEANUP: Waiting for next task"";" \n
  92. "_numDead = {local _x} count allDead;" \n
  93. ""/*%FSM</STATEINIT""">*/;
  94. "" \n
  95. "private [""_payload"", ""_interval"",""_delay""];" \n
  96. "{" \n
  97. " _payload = _x select 0;" \n
  98. " _interval = _x select 1;" \n
  99. " _delay = _x select 2;" \n
  100. " if (time - _delay > _interval && _interval != -1) then {" \n
  101. " [nil, nil, rSPAWN, [_crier, _payload], { (_this select 0) globalChat (_this select 1) }] call RE;" \n
  102. " if (_interval == 0) then {" \n
  103. " _msgList set [_forEachIndex, [_payload, -1, time]];" \n
  104. " } else {" \n
  105. " _msgList set [_forEachIndex, [_payload, _interval, time]];" \n
  106. " };" \n
  107. " };" \n
  108. "} forEach _msgList;"/*%FSM</STATEINIT""">*/;
  109. precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
  110. class Links
  111. {
  112. /*%FSM<LINK "zeds">*/
  113. class zeds
  114. {
  115. priority = 5.000000;
  116. to="zeds_2";
  117. precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  118. condition=/*%FSM<CONDITION""">*/"(time - _lastZombieCheck) > 60"/*%FSM</CONDITION""">*/;
  119. action=/*%FSM<ACTION""">*/"_lastZombieCheck = time;"/*%FSM</ACTION""">*/;
  120. };
  121. /*%FSM</LINK>*/
  122. /*%FSM<LINK "too_many_dead">*/
  123. class too_many_dead
  124. {
  125. priority = 2.000000;
  126. to="cleanup_dead";
  127. precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  128. condition=/*%FSM<CONDITION""">*/"(_numDead > 300)"/*%FSM</CONDITION""">*/;
  129. action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
  130. };
  131. /*%FSM</LINK>*/
  132. /*%FSM<LINK "need_update">*/
  133. class need_update
  134. {
  135. priority = 1.000000;
  136. to="update_objects";
  137. precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  138. condition=/*%FSM<CONDITION""">*/"( (count needUpdate_objects) > 0 && (time-_lastNeedUpdate>20) )"/*%FSM</CONDITION""">*/;
  139. action=/*%FSM<ACTION""">*/"_lastNeedUpdate = time;"/*%FSM</ACTION""">*/;
  140. };
  141. /*%FSM</LINK>*/
  142. /*%FSM<LINK "time_sync">*/
  143. class time_sync
  144. {
  145. priority = 1.000000;
  146. to="sync_the_time";
  147. precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  148. condition=/*%FSM<CONDITION""">*/"((time - _lastUpdate) > 300)"/*%FSM</CONDITION""">*/;
  149. action=/*%FSM<ACTION""">*/"_lastUpdate = time;"/*%FSM</ACTION""">*/;
  150. };
  151. /*%FSM</LINK>*/
  152. /*%FSM<LINK "true">*/
  153. class true
  154. {
  155. priority = 0.000000;
  156. to="general_cleanup";
  157. precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  158. condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
  159. action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
  160. };
  161. /*%FSM</LINK>*/
  162. /*%FSM<LINK "too_many_objects">*/
  163. class too_many_objects
  164. {
  165. priority = 0.000000;
  166. to="cleanup_objects";
  167. precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  168. condition=/*%FSM<CONDITION""">*/"((time - _timeNem) > 60)"/*%FSM</CONDITION""">*/;
  169. action=/*%FSM<ACTION""">*/"_timeNem = time;"/*%FSM</ACTION""">*/;
  170. };
  171. /*%FSM</LINK>*/
  172. };
  173. };
  174. /*%FSM</STATE>*/
  175. /*%FSM<STATE "cleanup_dead">*/
  176. class cleanup_dead
  177. {
  178. name = "cleanup_dead";
  179. init = /*%FSM<STATEINIT""">*/"diag_log (""CLEANUP: TOO MANY DEAD BODIES"");" \n
  180. "" \n
  181. "diag_log (""CLEANUP: PERFORMING BODY CLEANUP ON "" + str(_numDead) + "" BODIES"");" \n
  182. "" \n
  183. "_delQtyZ = 0;" \n
  184. "_numZombie = {_x isKindOf ""zZombie_Base""} count allDead;" \n
  185. "{" \n
  186. " if (local _x) then {" \n
  187. " if (_x isKindOf ""zZombie_Base"") then {" \n
  188. " deleteVehicle _x;" \n
  189. " _delQtyZ = _delQtyZ + 1;" \n
  190. " } else {" \n
  191. " _exists = _x in _deadBodies;" \n
  192. " if(!_exists) then {" \n
  193. " _deadBodies set [count _deadBodies,_x];" \n
  194. " };" \n
  195. " };" \n
  196. " };" \n
  197. "} forEach allDead;" \n
  198. "" \n
  199. "//Cleanup players" \n
  200. "_body = objNull;" \n
  201. "_delQtyP = 0;" \n
  202. "_delDo = _numDead - _numZombie;" \n
  203. "_delDo = ((_delDo min (count _deadBodies)) -1);" \n
  204. "if (_delDo<1) then {_delDo=1};" \n
  205. "for ""_i"" from 0 to _delDo do {" \n
  206. " _body = _deadBodies select _i;" \n
  207. " if(!isNil ""_body"") then {" \n
  208. " _pos = getPosATL _body;" \n
  209. " _sfx = nearestObject [_pos,""Sound_Flies""];" \n
  210. " if (!(isNull _sfx)) then {" \n
  211. " deleteVehicle _sfx;" \n
  212. " };" \n
  213. " deleteVehicle _body;" \n
  214. " _delQtyP = _delQtyP + 1;" \n
  215. " };" \n
  216. " _deadBodies set [_i,""DEL""];" \n
  217. "" \n
  218. "//Let's move this into the body removal sequence so uncontrolled flies are removed only if corpses are cleaned" \n
  219. "//Check Flies" \n
  220. "_isOK=-1;" \n
  221. "_dwUSOFC=0;" \n
  222. "{" \n
  223. " //_isOk = {!alive _x} count (nearestObjects [_x, [""CAManBase""], 2]);" \n
  224. " _isOk = {!alive _x} count (_x nearEntities [[""CAManBase""], 2]);" \n
  225. " if (_isOk>-1) then {" \n
  226. " diag_log (""DW_DEBUG _isOK: "" + str(_isOK) );" \n
  227. " };" \n
  228. " if ((_isOk>-1) AND (_isOK<1)) then {" \n
  229. " //diag_log (""CLEANUP: DELETING A SOUND OF FLIES"");" \n
  230. "_dwUSOFC=_dwUSOFC+1;" \n
  231. " deleteVehicle _x;" \n
  232. " diag_log (""CLEANUP: DELETED AN UNCONTROLLED SOUND OF FLIES:"" + str(_dwUSOFC) );" \n
  233. " };" \n
  234. "} forEach allMissionObjects ""Sound_Flies"";" \n
  235. "" \n
  236. "" \n
  237. "//Let's move this into the body removal sequence so uncontrolled fireplaces are removed only if corpses are cleaned" \n
  238. "//clean fireplaces" \n
  239. "_dwUFPC=0;" \n
  240. "{" \n
  241. " if (local _x) then {" \n
  242. " //diag_log (""CLEANUP: DELETING A UNCONTROLLED FIREPLACE"");" \n
  243. " deleteVehicle _x;" \n
  244. "_dwUFPC=_dwUFPC+1;" \n
  245. " diag_log (""CLEANUP: DELETED AN UNCONTROLLED FIREPLACE:"" + str(_dwUFPC) );" \n
  246. " };" \n
  247. "} forEach allMissionObjects ""Land_Fire_DZ"";" \n
  248. "" \n
  249. "};" \n
  250. "_deadBodies = _deadBodies - [""DEL""];" \n
  251. "" \n
  252. "diag_log (""CLEANUP: DELETED "" + str(_delQtyP) + "" PLAYER BODIES AND "" + str(_delQtyZ) + "" BODIES"");" \n
  253. ""/*%FSM</STATEINIT""">*/;
  254. precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
  255. class Links
  256. {
  257. /*%FSM<LINK "true">*/
  258. class true
  259. {
  260. priority = 0.000000;
  261. to="general_cleanup";
  262. precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  263. condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
  264. action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
  265. };
  266. /*%FSM</LINK>*/
  267. };
  268. };
  269. /*%FSM</STATE>*/
  270. /*%FSM<STATE "cleanup_objects">*/
  271. class cleanup_objects
  272. {
  273. name = "cleanup_objects";
  274. init = /*%FSM<STATEINIT""">*/"_missionObjs = allMissionObjects ""WeaponHolder"";" \n
  275. "_qty = count _missionObjs;" \n
  276. "" \n
  277. "//diag_log (""CLEANUP: PERFORMING ITEM CLEANUP: TOTAL "" + str(_qty) + "" LOOT BAGS"");" \n
  278. "_delQty = 0;" \n
  279. "{" \n
  280. " if (local _x) then {" \n
  281. " _keep = _x getVariable [""permaLoot"",false];" \n
  282. " _nearby = {isPlayer _x} count (_x nearEntities [[""CAManBase""], 100]);" \n
  283. " if ( (!_keep) && (_nearby==0) ) then {" \n
  284. " deleteVehicle _x;" \n
  285. " _delQty = _delQty + 1;" \n
  286. " };" \n
  287. " };" \n
  288. "} forEach _missionObjs;" \n
  289. "if (_delQty > 0) then {" \n
  290. " diag_log (""CLEANUP: DELETED "" + str(_delQty) + "" LOOT BAGS"");" \n
  291. "};" \n
  292. ""/*%FSM</STATEINIT""">*/;
  293. precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
  294. class Links
  295. {
  296. /*%FSM<LINK "true">*/
  297. class true
  298. {
  299. priority = 0.000000;
  300. to="general_cleanup";
  301. precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  302. condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
  303. action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
  304. };
  305. /*%FSM</LINK>*/
  306. };
  307. };
  308. /*%FSM</STATE>*/
  309. /*%FSM<STATE "sync_the_time">*/
  310. class sync_the_time
  311. {
  312. name = "sync_the_time";
  313. init = /*%FSM<STATEINIT""">*/"//Send request" \n
  314. "_key = ""CHILD:307:"";" \n
  315. "_result = _key call server_hiveReadWrite;" \n
  316. "_outcome = _result select 0;" \n
  317. "if(_outcome == ""PASS"") then {" \n
  318. " _date = [2012,8,31,(_result select 1) select 3, (_result select 1) select 4]; " \n
  319. " _dateNum = dateToNumber(_date); " \n
  320. " _diff = ( _dateNum - dateToNumber (date) )*365*24*60;" \n
  321. " if ( abs(_diff)>5 ) then {" \n
  322. " setDate _date;" \n
  323. " dayzSetDate = _date;" \n
  324. " publicVariable ""dayzSetDate"";" \n
  325. " diag_log (""TIME SYNC: Local Time set to "" + str(_date));" \n
  326. " };" \n
  327. "};" \n
  328. ""/*%FSM</STATEINIT""">*/;
  329. precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
  330. class Links
  331. {
  332. /*%FSM<LINK "true">*/
  333. class true
  334. {
  335. priority = 0.000000;
  336. to="general_cleanup";
  337. precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  338. condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
  339. action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
  340. };
  341. /*%FSM</LINK>*/
  342. };
  343. };
  344. /*%FSM</STATE>*/
  345. /*%FSM<STATE "general_cleanup">*/
  346. class general_cleanup
  347. {
  348. name = "general_cleanup";
  349. init = /*%FSM<STATEINIT""">*/"//Clean groups" \n
  350. "{" \n
  351. " //diag_log (""CLEANUP: CHECKING GROUP WITH "" + str(count units _x) + "" UNITS"");" \n
  352. " if (count units _x==0) then {" \n
  353. " deleteGroup _x;" \n
  354. " //diag_log (""CLEANUP: DELETING A GROUP"");" \n
  355. " };" \n
  356. "} forEach allGroups;" \n
  357. "" \n
  358. "/*" \n
  359. "//Check for Ammobox" \n
  360. " {" \n
  361. " if(!(_x isKindOf ""WeaponHolder"")) then {" \n
  362. " diag_log (""CLEANUP: DELETING AN AMMOBOX "" + (typeOf _x));" \n
  363. " deleteVehicle _x;" \n
  364. " };" \n
  365. " } forEach allMissionObjects ""ReammoBox"";" \n
  366. "*/" \n
  367. "" \n
  368. "//Check for hackers" \n
  369. " {" \n
  370. " if(vehicle _x != _x && (vehicle _x getVariable [""Sarge"",0] != 1) && !(vehicle _x in _safety) && (typeOf vehicle _x) != ""ParachuteWest"") then {" \n
  371. " diag_log (""CLEANUP: KILLING A HACKER "" + (name _x) + "" "" + str(_x) + "" IN "" + (typeOf vehicle _x));" \n
  372. " (vehicle _x) setDamage 1;" \n
  373. " _x setDamage 1;" \n
  374. " };" \n
  375. " } forEach allUnits;" \n
  376. "" \n
  377. "/*" \n
  378. "//Let's move this into the body removal sequence so uncontrolled flies are removed only if corpses are cleaned" \n
  379. "//Check Flies" \n
  380. "_isOK=-1;" \n
  381. "_dwUSOFC=0;" \n
  382. "{" \n
  383. " //_isOk = {!alive _x} count (nearestObjects [_x, [""CAManBase""], 2]);" \n
  384. " _isOk = {!alive _x} count (_x nearEntities [[""CAManBase""], 2]);" \n
  385. " if (_isOk>-1) then {" \n
  386. " diag_log (""DW_DEBUG _isOK: "" + str(_isOK) );" \n
  387. " };" \n
  388. " if ((_isOk>-1) AND (isOK<1)) then {" \n
  389. " //diag_log (""CLEANUP: DELETING A SOUND OF FLIES"");" \n
  390. "_dwUSOFC=_dwUSOFC+1;" \n
  391. " deleteVehicle _x;" \n
  392. " diag_log (""CLEANUP: DELETED AN UNCONTROLLED SOUND OF FLIES:"" + str(_dwUSOFC) );" \n
  393. " };" \n
  394. "} forEach allMissionObjects ""Sound_Flies"";" \n
  395. "*/" \n
  396. "" \n
  397. "dayz_serverObjectMonitor = _safety;"/*%FSM</STATEINIT""">*/;
  398. precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
  399. class Links
  400. {
  401. /*%FSM<LINK "true">*/
  402. class true
  403. {
  404. priority = 0.000000;
  405. to="waiting";
  406. precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  407. condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
  408. action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
  409. };
  410. /*%FSM</LINK>*/
  411. };
  412. };
  413. /*%FSM</STATE>*/
  414. /*%FSM<STATE "prepare">*/
  415. class prepare
  416. {
  417. name = "prepare";
  418. init = /*%FSM<STATEINIT""">*/"diag_log (""CLEANUP: INITIALIZING CLEANUP SCRIPT"");" \n
  419. "" \n
  420. "_safety = dayz_serverObjectMonitor;" \n
  421. "" \n
  422. "_msgList = msgList;" \n
  423. "_crierGrp = createGroup sideLogic;" \n
  424. "_crier = _crierGrp createUnit [""Survivor2_DZ"", [-2500, 0, 0], [], 0, ""NONE""];" \n
  425. "" \n
  426. "_lastUpdate = time;" \n
  427. "_timeNem = time;" \n
  428. "_lastZombieCheck = time;" \n
  429. "_deadBodies = [];" \n
  430. "_lastNeedUpdate = time;" \n
  431. "_maxBodies = 15;" \n
  432. ""/*%FSM</STATEINIT""">*/;
  433. precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
  434. class Links
  435. {
  436. /*%FSM<LINK "true">*/
  437. class true
  438. {
  439. priority = 0.000000;
  440. to="waiting";
  441. precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  442. condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
  443. action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
  444. };
  445. /*%FSM</LINK>*/
  446. };
  447. };
  448. /*%FSM</STATE>*/
  449. /*%FSM<STATE "update_objects">*/
  450. class update_objects
  451. {
  452. name = "update_objects";
  453. init = /*%FSM<STATEINIT""">*/"diag_log format[""DEBUG: needUpdate_objects=%1"",needUpdate_objects];" \n
  454. "{" \n
  455. "// _x setVariable [""needUpdate"",false,true];" \n
  456. " needUpdate_objects = needUpdate_objects - [_x];" \n
  457. " [_x,""all""] call server_updateObject;" \n
  458. "" \n
  459. "} forEach needUpdate_objects;" \n
  460. ""/*%FSM</STATEINIT""">*/;
  461. precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
  462. class Links
  463. {
  464. /*%FSM<LINK "true">*/
  465. class true
  466. {
  467. priority = 0.000000;
  468. to="general_cleanup";
  469. precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  470. condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
  471. action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
  472. };
  473. /*%FSM</LINK>*/
  474. };
  475. };
  476. /*%FSM</STATE>*/
  477. /*%FSM<STATE "zeds_2">*/
  478. class zeds_2
  479. {
  480. name = "zeds_2";
  481. init = /*%FSM<STATEINIT""">*/"_tmr = time;" \n
  482. "{" \n
  483. " _x enableSimulation false;" \n
  484. "} forEach entities ""zZombie_Base"";" \n
  485. "diag_log format[""DISABLED SIMULATION FOR %1 ZOMBIES IN %2 SECONDS"", count entities ""zZombie_Base"", time - _tmr];" \n
  486. ""/*%FSM</STATEINIT""">*/;
  487. precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
  488. class Links
  489. {
  490. /*%FSM<LINK "true">*/
  491. class true
  492. {
  493. priority = 0.000000;
  494. to="waiting";
  495. precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
  496. condition=/*%FSM<CONDITION""">*/"true"/*%FSM</CONDITION""">*/;
  497. action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
  498. };
  499. /*%FSM</LINK>*/
  500. };
  501. };
  502. /*%FSM</STATE>*/
  503. };
  504. initState="init";
  505. finalStates[] =
  506. {
  507. };
  508. };
  509. /*%FSM</COMPILE>*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement