Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

ArmA 2 - Chernarus Life server-side script: test.sqf

By: a guest on Dec 13th, 2011  |  syntax: None  |  size: 19.05 KB  |  views: 1,579  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. This is the server-side script for the ArmA 2 Chernarus Life mission - test.sqf.
  2.  
  3. Without this script, some of the mission's functionality may not work, including bank robbery, gas station robbery, and potentially other things. In addition, there may be glitches with the respawn system (players spawning out in the middle of nowhere).
  4.  
  5. To use this script, you will simply need to either place it in the Chernarus Life PBO (the recommended method) OR you can place it on the game server, in the main game directory. The filename is test.sqf.
  6.  
  7. Copyright note: this script is the work of several skilled mission makers, and it dates back several years (into OFP). Don't let certain people try to tell you this is their script, or try to scare you with random and irrelevant laws. This script has been used in several missions, even before Chernarus Life. It is still used in the latest life missions (Zargabad Life, Takistan Life and other missions based on third-party maps such as Island Life), although with a slight difference: it is in multiple files, rather than the single file of this version.
  8.  
  9. Another note: DO NOT POST THIS SCRIPT, OR A LINK TO IT, ON THE OFFICIAL BOHEMIA INTERACTIVE FORUMS. Doing so will likely result in an account ban/suspension because you do not have the express permission of the mission developers to post it. However, I personally would argue that them making the files public in the first place (MANY years ago, and several games ago in fact), is permission.
  10.  
  11. respawnarray            = [respawn1,respawn2,respawn3,respawn4,respawn5,respawn6,respawn7,respawn8,respawn9,respawn10,respawn11,respawn12];
  12. CityLocationArray   = [[CityLogic1, 500], [CityLogic2, 400], [CityLogic4, 500], [CityLogic5, 200], [Militarybase, 200],[CityLogic6, 180],[CityLogic7, 120]];
  13. sobrerlaubt             = [];
  14. keineGun                        = [];
  15. keincriminal            = [];
  16. keinterror                      = [];
  17. // change this to your own player IDs
  18. adminliste                      = ["12345"];
  19. superadminliste         = ["12345"];
  20. mainvar                         = true;
  21. publicVariable "mainvar";
  22. publicVariable "respawnarray";
  23.  
  24.  
  25.  
  26. //Fucntions
  27. //#0
  28. ServerSchleifeTest =
  29. {
  30. while{true} do
  31. {
  32. player groupchat "Server Active";
  33. sleep 4;
  34. };
  35. };
  36.  
  37.  
  38. //#1
  39. ServerSchleife =
  40. {
  41. _counter = 0;
  42. while {true} do
  43.  
  44.         {
  45.  
  46.         if(!alive HQ)then{sleep 85;endMission "END1";};
  47.  
  48.        
  49.         coparray          = [cop1,   cop2,   cop3,   cop4,   cop5,   cop6,      cop7,   cop8,   cop9,   cop10,  cop11,  cop12,  cop13,  cop14,  cop15,  cop16,  cop17];
  50.         civarray          = [civ1, civ2, civ3, civ4, civ5, civ6, civ7, civ8, civ9, civ10, civ11, civ12, civ13, civ14, civ15, civ16, civ17, civ18, civ19, civ20, civ21, civ22, civ23, civ24, civ25, civ26, civ27, civ28, civ29, civ30, civ31, civ32, civ33, civ34];
  51.         playerarray       =     [civ1, civ2, civ3, civ4, civ5, civ6, civ7, civ8, civ9, civ10, civ11, civ12, civ13, civ14, civ15, civ16, civ17, civ18, civ19, civ20, civ21, civ22, civ23, civ24, civ25, civ26, civ27, civ28, civ29, civ30, civ31, civ32, civ33, civ34, cop1, cop2, cop3, cop4, cop5, cop6, cop7, cop8, cop9, cop10, cop11, cop12, cop13, cop14, cop15, cop16, cop17];
  52.        
  53.         if(!serverisrunning) then {[] call INV_GetArrays;};
  54.        
  55.         _counter = _counter + 1;
  56.        
  57.         if(_counter >= 60)then
  58.  
  59.                 {
  60.  
  61.                 _counter = 0;
  62.  
  63.                 for [{_i=0}, {_i < (count publicarbeiterarctionarray)}, {_i=_i+1}] do
  64.  
  65.                         {
  66.  
  67.                         if ( (not((format["%1", ((publicarbeiterarctionarray select _i) select 1)]) call ISSE_UnitExists)) or (isNull((publicarbeiterarctionarray select _i) select 0)) ) then
  68.  
  69.                                 {
  70.  
  71.                                 if (not(isNull((publicarbeiterarctionarray select _i) select 0))) then
  72.  
  73.                                         {
  74.  
  75.                                         _object = ((publicarbeiterarctionarray select _i) select 0);
  76.                                         _object setpos [0,0,0];                                                                                                                                                                                                                                                                                                                                
  77.                                         _object setVehicleinit "";
  78.                                         deletevehicle _object; 
  79.  
  80.                                         };
  81.  
  82.                                 publicarbeiterarctionarray SET [_i, ""];
  83.                                 publicarbeiterarctionarray = publicarbeiterarctionarray - [""];
  84.  
  85.                                 };
  86.  
  87.                         };
  88.  
  89.                 };
  90.  
  91.         for [{_i=0}, {_i < (count playerarray)}, {_i=_i+1}] do
  92.  
  93.                 {
  94.  
  95.                 _player = (playerarray select _i);
  96.                                
  97.                 if (!isnull _player and isnull(call compile format["oldciv%1", (_i + 1)]) and !isPlayer _player) then {deletevehicle _player};
  98.                
  99.                 };
  100.  
  101.         sleep 1;
  102.  
  103.         };
  104. };
  105.  
  106.  
  107. //#2
  108. ServerschleifeAI =
  109. {
  110.  
  111. while{true}do
  112.  
  113.         {
  114.  
  115.         [0,0,0,"SQUAD"] execVM "recruitai.sqf";
  116.  
  117.         if(!alive MG1gunner)then{_gunner = MG1gunner;sleep 60;if(!isnull _gunner)then{deletevehicle _gunner};};
  118.         if(!alive MG2gunner)then{_gunner = MG2gunner;sleep 60;if(!isnull _gunner)then{deletevehicle _gunner};};
  119.         if(!alive MG3gunner)then{_gunner = MG3gunner;sleep 60;if(!isnull _gunner)then{deletevehicle _gunner};};
  120.         if(!alive MG4gunner)then{_gunner = MG4gunner;sleep 60;if(!isnull _gunner)then{deletevehicle _gunner};};
  121.  
  122.         if(!alive PK1gunner)then{_gunner = PK1gunner;sleep 60;if(!isnull _gunner)then{deletevehicle _gunner};};
  123.         if(!alive PK2gunner)then{_gunner = PK2gunner;sleep 60;if(!isnull _gunner)then{deletevehicle _gunner};};
  124.         if(!alive PK3gunner)then{_gunner = PK3gunner;sleep 60;if(!isnull _gunner)then{deletevehicle _gunner};};
  125.         if(!alive PK4gunner)then{_gunner = PK4gunner;sleep 60;if(!isnull _gunner)then{deletevehicle _gunner};};
  126.  
  127.         sleep 1;
  128.  
  129.         };
  130.  
  131. };
  132.  
  133.  
  134. //#3
  135. ServerschleifeMayor =
  136. {      
  137.  
  138. _currentMayor = -1;                                                                                            
  139.        
  140. while {true} do
  141.  
  142.         {
  143.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
  144.         for [{_i=0}, {_i < 51}, {_i=_i+1}] do
  145.  
  146.                 {      
  147.                                                                                                                                                                                                                                                                                                                                        
  148.                 sleep 60;                                                                                                                                                                      
  149.  
  150.                 for [{_k=0}, {_k < count(WahlArray)}, {_k=_k+1}] do
  151.  
  152.                         {                                                                                                                                                                                                                                                                                                                              
  153.  
  154.                         if (not((playerstringarray select _k) call ISSE_UnitExists)) then {WahlArray SET [_k, [] ];};
  155.  
  156.                         };                     
  157.  
  158.                 };                                                                                                                                                                                                                                                                                                                                                                                             
  159.  
  160.         _MaxStimmen = 1;                                                                                                                                               
  161.         _MaxPos     = -1;                                                                                              
  162.  
  163.         for [{_i=0}, {_i < count(WahlArray)}, {_i=_i+1}] do
  164.  
  165.                 {                                                                                                                                                                                                                                                                                                                                              
  166.  
  167.                 if ( ((count (WahlArray select _i)) > _MaxStimmen) and ((playerstringarray select _i) call ISSE_UnitExists) ) then
  168.  
  169.                         {
  170.                                                                                                                                                                                                                                                                                                                                                                
  171.                         _MaxStimmen = (count (WahlArray select _i));                                                                                                                                                                                                                                                                                                                                                                                                                           
  172.                         _MaxPos     = _i;              
  173.  
  174.                         };             
  175.  
  176.                 };                                                                                                                                                                                                                                                                                                                                             
  177.  
  178.         if (_MaxPos == -1) then
  179.  
  180.                 {
  181.                                                                                                                                                                                                                                                                                                
  182.                 "hint localize ""STRS_regierung_nomajor"";" call broadcast;                                                                                                                                                                    
  183.                 _currentMayor = -1;                                                                                                                                            
  184.                
  185.                 } else {
  186.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
  187.                 if (_currentMayor == _MaxPos) then
  188.  
  189.                         {
  190.                                                                                                                                                                                                                                                                                                                                                                
  191.                         "hint localize ""STRS_regierung_majorstays"";" call broadcast;                                                                                                                                                                                                                                                                                                                                         
  192.  
  193.                         } else {                                                                                                                                                                                                                                                                                               
  194.  
  195.                         _currentMayor = _MaxPos;                                                                                                                                                                                                                                                                                                                                                                                                                               
  196.                         _MayorString  = (playerstringarray select _currentMayor);                                                                                                                                                                                                                                                                                                                                                                                                                              
  197.                         format["hint format[localize ""STRS_mayor_new"", ""%3"", %2]; if ((rolenumber-1) == %1) then {isMayor = true; true call TurnMayorFunc;} else {isMayor = false;false call TurnMayorFunc;};", _MaxPos, _MaxStimmen, _MayorString] call broadcast;        
  198.                         };             
  199.  
  200.                 };     
  201.  
  202.         MayorNumber = _currentMayor;                                                                                           
  203.         PUBLICVARIABLE "MayorNumber";                  
  204.  
  205.         };
  206.  
  207. };
  208. //#4
  209. ServerschleifeChief =
  210. {      
  211.  
  212. _currentchief = -1;
  213.  
  214. while {true} do
  215.  
  216.         {
  217.  
  218.         for [{_i=0}, {_i < 51}, {_i=_i+1}] do
  219.  
  220.                 {      
  221.  
  222.                 sleep 30;      
  223.  
  224.                 for [{_k=0}, {_k < count(WahlArrayc)}, {_k=_k+1}] do
  225.  
  226.                         {
  227.  
  228.                         if (not((playerstringarray select _k) call ISSE_UnitExists)) then {WahlArrayc SET [_k, [] ]};  
  229.  
  230.                         };
  231.  
  232.                 };
  233.  
  234.         _MaxStimmen = 0;
  235.         _MaxPos     = -1;
  236.  
  237.         for [{_i=0}, {_i < count(WahlArrayc)}, {_i=_i+1}] do
  238.  
  239.                 {
  240.  
  241.                 if ( ((count (WahlArrayc select _i)) > _MaxStimmen) and ((playerstringarray select _i) call ISSE_UnitExists) ) then
  242.  
  243.                         {      
  244.  
  245.                         _MaxStimmen = (count (WahlArrayc select _i));
  246.                         _MaxPos     = _i;
  247.  
  248.                         };
  249.  
  250.                 };     
  251.  
  252.         if (_MaxPos == -1) then
  253.  
  254.                 {
  255.  
  256.                 "hint localize ""STRS_chief_nomajor"";" call broadcast;_currentchief = -1;
  257.  
  258.                 }
  259.                 else
  260.                 {
  261.  
  262.                 if (_currentchief == _MaxPos) then
  263.  
  264.                         {
  265.  
  266.                         "hint localize ""STRS_chief_majorstays"";" call broadcast;
  267.  
  268.                         }
  269.                         else
  270.                         {
  271.  
  272.                         _currentchief = _MaxPos;
  273.                         _chiefString  = (playerstringarray select _currentchief);
  274.                         format["hint format[localize ""STRS_chief_new"", ""%3"", %2]; if ((rolenumber-1) == %1) then {ischief = true; true call TurnChiefFunc;} else {ischief = false;};", _MaxPos, _MaxStimmen, _chiefString] call broadcast; 
  275.                
  276.                         };
  277.  
  278.                 };
  279.  
  280.         chiefNumber = _currentchief;
  281.         PUBLICVARIABLE "chiefNumber";
  282.  
  283.         };
  284.  
  285. };
  286. //#5
  287. ServerschleifeGangs =
  288. {
  289.  
  290. _counter = 0;
  291.  
  292. while {true} do
  293.  
  294.         {
  295.  
  296.         for "_c" from 0 to (count gangsarray - 1) do
  297.  
  298.                 {
  299.  
  300.                 _gangarray = gangsarray select _c;
  301.                 _members   = _gangarray select 1;
  302.                
  303.                 if(_counter >= gangdeltime and count _members == 0)exitwith{format['gangsarray set[%1, 0]; gangsarray = gangsarray - [0];', _c] call broadcast};
  304.  
  305.                 _lname     = _members select 0;
  306.                        
  307.                 if(isnull ([_lname, playerarray] call INV_findunit))then
  308.  
  309.                         {
  310.  
  311.                         _members = _members - [_lname];
  312.                         _gangarray set[1, _members];
  313.                         format['gangsarray set[%1, %2]', _c, _gangarray] call broadcast;
  314.  
  315.                         };
  316.  
  317.                 };
  318.  
  319.         if(_counter >= gangdeltime)then{_counter = 0};
  320.  
  321.         _counter = _counter + 60;
  322.  
  323.         sleep 60;
  324.  
  325.         };
  326.  
  327. };
  328.  
  329.  
  330. //#6
  331. ServerSchleifeDrugs =
  332. {
  333. while {true} do
  334.  
  335. {
  336.  
  337. for [{_i=0}, {_i < (count drugsellarray)}, {_i=_i+1}] do
  338.  
  339.         {
  340.  
  341.         _obj    = drugsellarray select _i;
  342.         _list   = _obj getvariable "druglist";
  343.        
  344.         if(!isnil "_list") then
  345.  
  346.                 {
  347.                
  348.                 _count = count _list;
  349.        
  350.                 for [{_j=0}, {_j < _count}, {_j=_j+1}] do
  351.  
  352.                         {
  353.  
  354.                         _arr = _list select _j;
  355.                         _num = (_arr select 1) - 1;
  356.                         if(_num == 0)then{_list set[_j, 0]; _list = _list - [0]}else{_arr set[1, _num];_list set[_j, _arr]};
  357.                
  358.                         };
  359.  
  360.                 if(_count > 0)then{_obj setvariable["druglist", _list, true]};
  361.  
  362.                 };
  363.  
  364.         };
  365.  
  366. sleep druguserate;
  367.  
  368. };
  369. };
  370.  
  371.  
  372. //#7
  373. ServerSchleifeHQBomb =
  374. {
  375. while {true} do
  376.  
  377. {
  378.  
  379. waituntil {bombactive};
  380. playsound "Bank_alarm";
  381. titletext["Terrorists have planted a bomb on the military HQ! The cops have 10 minutes to defuse the bomb!", "PLAIN"];
  382. hint "Terrorists have planted a bomb on the military HQ! The cops have 10 minutes to defuse the bomb!";
  383. server globalchat "Terrorists have planted a bomb on the military HQ! The cops have 10 minutes to defuse the bomb!";
  384. HQbombtimer = 500;
  385.  
  386. while {bombactive} do
  387.  
  388.         {
  389.  
  390.         titletext[format["Detonation in: %1 seconds", HQbombtimer], "PLAIN DOWN"];
  391.  
  392.         if(HQbombtimer mod 30 == 0 and isServer)then{publicvariable "HQbombtimer"; hint "updating"};
  393.  
  394.         if(HQbombtimer == 0 and isServer)then
  395.  
  396.                 {
  397.  
  398.                 publicvariable "HQbombtimer";
  399.                 "Bo_GBU12_LGB" createvehicle getpos HQ;
  400.                 HQ setdamage 1;
  401.                 bombactive = false; publicvariable "bombactive";
  402.  
  403.                 };
  404.  
  405.         HQbombtimer = HQbombtimer - 1;
  406.  
  407.         sleep 1;
  408.  
  409.         };
  410.  
  411. };
  412. };
  413.  
  414.  
  415. //#8
  416. ServerSchleifeTankstellenRaub =
  417. {
  418. robpoolsafe1             = 0;
  419. robpoolsafe2             = 0;
  420. robpoolsafe3             = 0;
  421.  
  422. if(debug)then
  423.  
  424. {
  425.  
  426. robpoolsafe1             = 5000;
  427. robpoolsafe2             = 5000;
  428. robpoolsafe3             = 5000;
  429.  
  430. };
  431.  
  432. while{true} do
  433.  
  434. {
  435.  
  436. if(robpoolsafe1 < maxinsafe)then{robpoolsafe1 = robpoolsafe1 + round random 2000; publicvariable "robpoolsafe1"};
  437. if(robpoolsafe2 < maxinsafe)then{robpoolsafe2 = robpoolsafe2 + round random 2000; publicvariable "robpoolsafe2"};
  438. if(robpoolsafe3 < maxinsafe)then{robpoolsafe3 = robpoolsafe3 + round random 2000; publicvariable "robpoolsafe3"};
  439.  
  440. sleep 30;
  441.  
  442. };
  443. };
  444.  
  445.  
  446. //#9
  447. ServerSchleifeHunting =
  448. {
  449. while{true}do
  450.  
  451. {
  452.  
  453. for [{_i=0}, {_i < (count huntingarray)},{_i=_i+1}] do
  454.  
  455.         {
  456.        
  457.         _pos    = getmarkerpos ((huntingarray select _i) select 0);
  458.         _area   = (huntingarray select _i) select 1;
  459.         _exit   = false;
  460.  
  461.         _boars  = nearestobjects [_pos, ["wildboar"], _area];
  462.         _boars2 = nearestobjects [_pos, ["wildboar"], (_area + 200)];
  463.         if(count _boars2 > count _boars)then{deletevehicle (_boars2 select (count _boars2 - 1))};
  464.  
  465.         //_rabbits  = nearestobjects [_pos, ["rabbit"], _area];
  466.         //_rabbits2 = nearestobjects [_pos, ["rabbit"], (_area + 200)];
  467.         //if(count _rabbits2 > count _rabbits)then{deletevehicle (_rabbits2 select (count _rabbits2 - 1))};
  468.        
  469.         {if(_x distance _pos < _area)exitwith{_exit=true}} foreach playerarray;
  470.  
  471.         if(_exit)exitwith{};
  472.  
  473.         _boars = nearestobjects [_pos, ["wildboar"], _area];
  474.         if(count _boars < maxboars)then{createAgent ["Wildboar", _pos, [], _area, "NONE"];};
  475.        
  476.         //_rabbits  = nearestobjects [_pos, ["rabbit"], _area]; hint str count _rabbits;
  477.         //if(count _rabbits < 5)then{_unit = createAgent ["rabbit", _pos, [], _area, "NONE"];};
  478.        
  479.         };
  480.  
  481. sleep 120;
  482.  
  483. };
  484. };
  485.  
  486.  
  487. //#10
  488. ServerFunktionCreateAtms =
  489. {
  490. [alight, 1, 0] call setPitchBank;
  491. [alight2, 1, 0] call setPitchBank;
  492. [agunbox, 0, 3] call setPitchBank;
  493.  
  494. atv1 attachTo [atm1, [-0.7,0,0.7]];
  495. atv2 attachTo [atm2, [-0.7,0,0.7]];
  496. atv3 attachTo [atm3, [-0.7,0,0.7]];
  497. atv4 attachTo [atm4, [-0.7,0,0.7]];
  498. atv5 attachTo [atm5, [-0.7,0,0.7]];
  499.  
  500. atv1 setdir -90;
  501. atv1 setpos getpos atv1;
  502. atv2 setdir -90;
  503. atv2 setpos getpos atv2;
  504. atv3 setdir -90;
  505. atv3 setpos getpos atv3;
  506. atv4 setdir -90;
  507. atv4 setpos getpos atv4;
  508. atv5 setdir -90;
  509. atv5 setpos getpos atv5;
  510.  
  511. anb1 attachTo [atm1, [-1.05,0.03,0.01]];
  512. anb1 setVectorDirAndUp [[0, 0, 1],[-2, 0, 0]];
  513. anb2 attachTo [atm2, [-1.05,0.03,0.01]];
  514. anb2 setVectorDirAndUp [[0, 0, 1],[-2, 0, 0]];
  515. anb3 attachTo [atm3, [-1.05,0.03,0.01]];
  516. anb3 setVectorDirAndUp [[0, 0, 1],[-2, 0, 0]];
  517.  
  518. anb1 setpos getpos anb1;
  519. anb2 setpos getpos anb2;
  520. anb3 setpos getpos anb3;
  521. };
  522.  
  523.  
  524. //#11
  525. ServerSchleifeTankstellenRaub2 =
  526. {
  527. while {true} do
  528. {
  529. _randomamount = ceil ((random 250) + 250);
  530. if (station3money < maxstationmoney) then
  531.         {      
  532.         station1money = station1money + _randomamount;
  533.         if (station1money > maxstationmoney) then {station1money = maxstationmoney;};
  534.         };
  535.  
  536. if (station3money < maxstationmoney) then
  537.         {
  538.         station2money = station2money + _randomamount;
  539.         if (station2money > maxstationmoney) then {station2money = maxstationmoney;};
  540.         };
  541. if (station3money < maxstationmoney) then
  542.         {
  543.         station3money = station3money + _randomamount;
  544.         if (station3money > maxstationmoney) then {station3money = maxstationmoney;};
  545.         };
  546. if (station4money < maxstationmoney) then
  547.         {
  548.         station4money = station4money + _randomamount;
  549.         if (station4money > maxstationmoney) then {station4money = maxstationmoney;};
  550.         };
  551. publicvariable "station1money";
  552. publicvariable "station2money";
  553. publicvariable "station3money";
  554. publicvariable "station4money";
  555.  
  556. sleep 30;
  557. };
  558. };
  559.  
  560.  
  561. //#12
  562. ServerSchleifeMarkerCiv =
  563. {
  564.  
  565. _UpdateArray = [];                                                                                                                     
  566. _MarkerArray = [];
  567.  
  568.         {
  569.                                                                                                                                
  570.         _markername = format ["%1_marker", _x];                                                                                                                                                                                                                                        
  571.         _civmarker  = createmarker [_markername, [-1000, -1000] ];                                                                                                                                             
  572.         _civmarker  setMarkerShape "ICON";                             
  573.         _markername setMarkerType  "Dot";                                                                                                                              
  574.         _markername setMarkerColor "ColorYellow";                                                                                                                                                                                                              
  575.         _markername setMarkerText  format["", _x];                                                                                                                                                                             
  576.         _markername setMarkerSize  [1.2, 1.2];                                                                                         
  577.         _UpdateArray = _UpdateArray + [0];                                                                                                                                                                             
  578.         _MarkerArray = _MarkerArray + [_markername];   
  579.  
  580.         } forEach civstringarray;
  581.  
  582. while {true} do
  583.  
  584.         {                                                                                                                                                                      
  585.  
  586.         for [{_i=0}, {_i < (count civstringarray)}, {_i=_i+1}] do
  587.  
  588.                 {                                                                                                                                                                                                                                                                                                                                              
  589.  
  590.                 _civ             = civarray select _i;                                                                 
  591.                 _civstring       = civstringarray select _i;                                           
  592.                 _LastUpdate      = _UpdateArray select _i;                                                                                                                                                                                                                                                                                                                     
  593.                 _markername      = _MarkerArray select _i;
  594.                                                                                                                                                                                                                                                                                                                                                                                        
  595.                 if (isnull _civ or !isPlayer _civ) then
  596.  
  597.                         {
  598.  
  599.                         _markername setMarkerPos (getmarkerpos "marker_dead");
  600.  
  601.                         }
  602.                         else
  603.                         {
  604.                        
  605.                         if ((call compile format ["%1_wanted;", _civstring]) == 1) then {_markername setMarkerColor "ColorRed";}
  606.                         else
  607.                         {
  608.                                 if ((call compile format ["%1_mayor;", _civstring]) == 1) then
  609.                                 {
  610.                                 _markername setMarkerColor "ColorBlack";
  611.                                 }
  612.                                 else
  613.                                 {
  614.                                         if ((call compile format ["%1_bounty;", _civstring]) == 1 and iscop) then
  615.                                         {
  616.                                         _markername setMarkerColor "ColorBrown";
  617.                                         }
  618.                                         else
  619.                                         {
  620.                                         _markername setMarkerColor "ColorYellow";
  621.                                         };
  622.                                 };
  623.                         };
  624.                         _IsInVisibleArea = false;                                                                                                                                                                                                                                                                                                                              
  625.                         {if ((_civ distance (_x select 0)) < (_x select 1)) then {_isInVisibleArea = true;};} forEach CityLocationArray;                                                                                                                                                                                               
  626.                         {if ((_civ distance _x) < (marker_CopDistance))     then {_isInVisibleArea = true;};} forEach coparray;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
  627.                        
  628.                         if(isadmin)then
  629.                         {
  630.                         _isInVisibleArea = true;
  631.                         };
  632.                        
  633.                         if (not(_IsInVisibleArea)) then
  634.  
  635.                                 {
  636.  
  637.                                 if (marker_ausserhalb > 0) then
  638.  
  639.                                         {      
  640.                                        
  641.                                         if (time > (_LastUpdate+marker_ausserhalb)) then
  642.  
  643.                                                 {
  644.  
  645.                                                 _posX = ((getpos _civ) select 0) + (random CivMarkerUngenau) - (random CivMarkerUngenau);                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
  646.                                                 _posY = ((getpos _civ) select 1) + (random CivMarkerUngenau) - (random CivMarkerUngenau);                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
  647.                                                 if (alive _civ) then {_markername setMarkerPos [_posX, _posY];};                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  648.                                                 _UpdateArray SET [_i, time];                                                                                                                                                                                                                                                                                                                                                                                                                                           
  649.                                                
  650.                                                 };                                                                                                                                                                                                                                             
  651.  
  652.                                         }
  653.                                         else
  654.                                         {
  655.                                                                                                                                                                                                                                                                                                
  656.                                         _markername setMarkerPos (getmarkerpos "marker_dead");                                                                                                                                                                                                                                                                                                                                                                                                                                                 
  657.  
  658.                                         };                                                                                                                                                                                                                                                                                             
  659.  
  660.                                 }
  661.                                 else
  662.                                 {
  663.                                                                                                                                                                                                        
  664.                                 if (alive _civ) then {_markername setMarkerPos [(getpos _civ select 0), (getpos _civ select 1)];};                                                                                                                                                                                                     
  665.                                 _UpdateArray SET [_i, time];
  666.  
  667.                                 };
  668.  
  669.                         };
  670.  
  671.                 };
  672.  
  673.         sleep marker_innerhalb;
  674.  
  675.         };
  676.  
  677. };
  678.  
  679.  
  680. //Aufrufe
  681. if(!isDedicated) then {[] spawn ServerSchleifeTest;};
  682. [] spawn ServerSchleife;
  683. [] spawn ServerschleifeAI;
  684. [] spawn ServerschleifeMayor;
  685. [] spawn ServerschleifeChief;
  686. [] spawn ServerschleifeGangs;
  687. [] spawn ServerSchleifeDrugs;
  688. [] spawn ServerSchleifeHQBomb;
  689. [] spawn ServerSchleifeTankstellenRaub;
  690. [] spawn ServerSchleifeHunting;
  691. [] spawn ServerSchleifeTankstellenRaub2;
  692. [] spawn ServerSchleifeMarkerCiv;
  693.  
  694. [] call ServerFunktionCreateAtms;
  695.  
  696. [] execVM "drugreplenish.sqf";          //Unötig       ?
  697. ["Mi17_medevac_CDF"] execVM "copchoprespawn.sqf";       //Unötig ?
  698. ["MH60S"] execVM "copchoprespawn.sqf";          //Unötig ?
  699.  
  700. //=======================rob gas station init and variables================
  701. station1money = 5000;
  702. publicvariable "station1money";
  703.  
  704. station2money = 5000;
  705. publicvariable "station2money";
  706.  
  707. station3money = 5000;
  708. publicvariable "station3money";
  709.  
  710. station4money = 5000;
  711. publicvariable "station4money";
  712. //No Move
  713. for [{_i=0}, {_i < (count INV_ItemShops)}, {_i=_i+1}] do {((INV_ItemShops select _i) select 0) execVM "nomove.sqf"; sleep 0.2;};
  714. for [{_i=0}, {_i < (count workplacejob_deliveryflagarray)}, {_i=_i+1}] do {(workplacejob_deliveryflagarray select _i) execVM "nomove.sqf"; sleep 0.2;};
  715.