sreVBriefing.htmlEdescription.ext E\init.sqfE Init.sqs uElogo.paa@E8+mission.sqmFonPlayerRespawnAsSeagull.sqsdErespawnsquadAI.sqs~YEspawningmon.sqshvEspawnmanAI.sqsE!Start.sqs@Eups-f.sqfElcrate\crate_bis1.sqfEXcrate\crate_bis2.sqfEcrate\crate_bis3.sqfEcrate\crate_bis4.sqf!Ecrate\crate_bisall.sqf.Ey crate\crate_bisEsmallveh.sqf$EKcrate\crate_bisEveh.sqf&Ejcrate\crate_bisWsmallveh.sqf)ELcrate\crate_bisWveh.sqf+Ejf\common\noTeamKill.sqfEfunctions\Domove.sqfPELfunctions\fnDomove.sqf~ENfunctions\fnNetsend.sqf~Efunctions\fnPlayers.sqf~Eofunctions\fnRndSelect.sqf~E)functions\fnSendmove.sqf~Efunctions\gridcoord.sqf_ENfunctions\Netsend.sqfREfunctions\Players.sqfUEofunctions\randomint.sqfaEfunctions\RelPosCoord.sqfWEAfunctions\RndSelect.sqfZE&functions\Sendmove.sqf]Efunctions\shuffle.sqfdElmScripts\eject1.sqs!{EmScripts\fasttime.sqsalE%mScripts\ied.sqsQE mScripts\Loading.sqs58EmScripts\medkit1.sqs#6EVmScripts\patrolchopper.sqsEmScripts\timer.sqszEmScripts\tracking2.sqsgjE< mTexts\Text1.sqsmEmTexts\Text2.sqscERSC\cfgSounds.hppERSC\debug.hppE:RSC\quickmap.hppEP,RSC\satellite.hpp¹EdVRSC\std-weap-mags.hppEP RSC\std.hpp˹ERSC\troopmon.hppιE$satellite\adjustCamera.sqsEsatellite\blinks.sqsEysatellite\blinkt.sqsEsatellite\copyObjects.sqsEsatellite\createCamera.sqsE*satellite\createDialog.sqsEsatellite\init.sqsEsatellite\noise.sqsE'satellite\satmapclick.sqsEsatellite\trackObject.sqsEsatellite\zoomSlider.sqsEHScripts\actionmonitor.sqf>EScripts\fademusic.sqf--EScripts\fademusic.sqsaE[Scripts\jump.sqfKEScripts\land_chopper.sqs@EScripts\land_chopper2.sqs@E Scripts\loop_cl3.sqfkEMScripts\loop_srv2.sqfpEScripts\MAP_MiscArty.sqf,EScripts\MAP_MiscArtyaction.sqf/EScripts\MAP_MiscArtyfire.sqf3EzScripts\MAP_MiscArtysetfire.sqf(EScripts\MAP_MiscArtysmoke.sqf9ElScripts\misinit.sqf=EY Scripts\missileCam.sqsuEzScripts\nextCam.sqsxEMScripts\onPlayerConnected.sqfzEScripts\onPlayerRespawnAsSeagullOld.sqs}EScripts\openquickmap.sqfE#Scripts\sixinit.sqf,ESpawnMan\AriSound.sqs8ESpawnMan\Bombing.sqsESpawnMan\gasexplosion.sqs7'ESpawnMan\patrolalert.sqs

SNIPER. You are tasked with eliminating a key Commander in the Democratic Republic. Your job as a sniper will be to infiltrate the enemy territory and eliminate the officer and escape unnoticed. Good Luck.


From the creator of Backlash brining you this [Shadowlord]

You must kill the enemy Commander who is moving from his hillside bunker to a base near by.


Get to the LZ and wait for the Little bird to come and pick you up.


/////////////////////////////////////////////////////////// // Mission Feature Includes /////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// // std-Weap-mags.hpp - Standard Weapons and Magazines //#include "Rsc\std-weap-mags.hpp" /////////////////////////////////////////////////////////// // std.hpp - Standard Defines and Resources #include "Rsc\std.hpp" /////////////////////////////////////////////////////////// // Include spectating script resource #include "spect\spectating.hpp" /////////////////////////////////////////////////////////// // quickmap.hpp found in Liga Missions #include "Rsc\quickmap.hpp" /////////////////////////////////////////////////////////// // troopmon.hpp by Chn //#include "Rsc\troopmon.hpp" /////////////////////////////////////////////////////////// #include "Rsc\debug.hpp" /////////////////////////////////////////////////////////// // #include "Rsc\satellite.hpp" /////////////////////////////// onLoadMission= A ShadowLord Production; /////////////////////////////// MinScore = 0; AvgScore = 1800; MaxScore = 7500; /////////////////////////////// class Header { gameType = Coop; //DM, Team, Coop, CTI minPlayers = 1; //min # of players the mission supports maxPlayers = 6; //Max # of players the mission supports }; /////////////////////////////// titleParam1 = "Conditions:"; valuesParam1[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; defValueParam1 = 1; textsParam1[] = {"Dusk - Clear","Night - Clear","Dawn - Clear","Noon - Clear","Dusk - Overcast","Night - Overcast","Dawn - Overcast","Noon - Overcast","Dusk - Storm","Night - Storm","Dawn - Storm","Noon - Storm","Dusk - Mist","Night - Mist","Dawn - Mist","Noon - Mist","Dusk - Fog","Night - Fog","Dawn - Fog","Noon - Fog"}; /////////////////////////////// titleParam2="Difficulty"; valuesParam2[]={1,2}; defvalueParam2=1; textsParam2[]={"Easy","Hard"}; ////////////////////////////// estimatedTimeLeft = 60; respawnDialog = true; respawn= "bird"; respawndelay=10; debriefing = 1; DisableAi = false; showMap = 1; ////////////////////////////////////////////////////// ///////////////////MUSIC////////////////////////////// ////////////////////////////////////////////////////// ///class CfgMusic ///{ /// sounds[] = {SOAF_01,SOAF_04}; /// class SOAF_01 /// { /// name = "SOAF_01"; /// sound[] = {"\Music\SOAF_01.ogg", 1, 1}; /// titles[] = {}; /// }; /// class SOAF_04 /// { /// name = "SOAF_04"; /// sound[] = {"\Music\SOAF_04.ogg", 1, 1}; /// titles[] = {}; /// }; ///}; ////////////////////////////////////////////////////// ///////////////////Titles////////////////////////////// ////////////////////////////////////////////////////// class RscTitles { class CharonLogo { idd=-1; movingEnable=false; duration=3; name="1"; controls[]={"item1"}; class item1 { type = CT_STATIC; idc = -1; x = 0.5; y = 0.5; w = 0.2; h = 0.2; text = "logo2.paa"; style = 48; font = FontM; colorText[] = {1, 1, 1, 1}; colorBackground[] = {1,1,1,1}; size = 1; sizeEx = 1; lineSpacing = 1.0; }; }; class Texte1 { idd=0; movingEnable=0; duration=5; name="texte1"; controls[]={"texte1"}; class texte1: RscText { style="16+2+512"; lineSpacing=0.950000; text="S N I P E R v1.0\n\n Made for [SWAF]"; x=0.39000000; y=0.91000000; w=0.900000; h=0.700000; colorBackground[]={0,0,0,0}; colorText[]={0.2,0.4,0.7,0.7}; size=0.57; }; }; class Texte2 { idd=0; movingEnable=0; duration=10; name="texte2"; controls[]={"texte2"}; class texte2: RscText { style="16+2+512"; lineSpacing=0.950000; text="Produced by Shadowlord (SWAF) \n\n Feb 2007 "; x=0.39000000; y=0.91000000; w=0.900000; h=0.700000; colorBackground[]={0,0,0,0}; colorText[]={0.2,0.4,0.7,0.7}; size=0.57; }; }; };/////////////////////////////////////////////////////////// // ArmA - init.sqf v1.1 by Sickboy (sb_at_6thSense.eu) /////////////////////////////////////////////////////////// // Mission Settings // Debug Levels /////////////////// SIX_DEBUG_MISS=false; SIX_DEBUG_MISS2=false; SIX_DEBUG_MISS3=false; SIX_DEBUG_MISS4=false; six_rf = ["Sickboy","Shadowlord"]; six_wplayers = ["w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","w19","w20","w21","w22","w23","w24","w25","w26","w27","w28","w29","w30","w31","w32","w33","s1","s2","s3","s4","s5","s6","s7","s8","s9","s10","s11","s12","s13","s14","s15","s16","s17","s18","s19","s20","s21","s22","s23","s24","s25","s26","s27","s28","s29","s30","s31"]; six_eplayers = ["e1","e2","e3","e4","e5","e6","e7","e8","e9","e10","e11","e12","e13","e14","e15","e16","e17","e18","e19","e20","e21","e22","e23","e24","e25","e26","e27","e28","e29","e30","e31","e32","e33"]; six_gplayers = ["g1","g2","g3","g4","g5","g6","g7","g8","g9","g10","g11","g12","g13","g14","g15","g16","g17","g18","g19","g20","g21","g22","g23","g24","g25","g26","g27","g28","g29","g30","g31","g32","g33"]; six_wptm = ["wpt1","wpt2","wpt3","wpt4","wpt5","wpt6","wpt7","wpt8","wpt9","wpt10"]; six_eptm = ["ept1","ept2","ept3","ept4","ept5","ept6","ept7","ept8","ept9","ept10"]; six_gptm = ["gpt1","gpt2","gpt3","gpt4","gpt5","gpt6","gpt7","gpt8","gpt9","gpt10"]; // Init six Library [] spawn compile preprocessFile "scripts\sixinit.sqf"; // Start Anti Team-Kill Script x=["TC","NOBOOM","DISARM"] execVM "f\common\noTeamKill.sqf"; // Initialize spectating script when player joins as seagull // Set the following to limit visible sides: //KEGsShownSides = [west]; [] execVM "spect\specta_init.sqf";; ***************************************************** ; ** Operation Flashpoint Script File ; ***************************************************** [] exec "start.sqs" teamSwitchEnabled = False partymove = False ;initalize objectives "1" objstatus "Active" setterraingrid 50 ; ============================================================================ ; MISSION START Weather: ; ============================================================================ ?(Param1 == 1) : goto "DuskClear" ?(Param1 == 2) : goto "NightClear" ?(Param1 == 3) : goto "DawnClear" ?(Param1 == 4) : goto "NoonClear" ?(Param1 == 5) : goto "DuskOvercast" ?(Param1 == 6) : goto "NightOvercast" ?(Param1 == 7) : goto "DawnOvercast" ?(Param1 == 8) : goto "NoonOvercast" ?(Param1 == 9) : goto "DuskStorm" ?(Param1 == 10) : goto "NightStorm" ?(Param1 == 11) : goto "DawnStorm" ?(Param1 == 12) : goto "NoonStorm" ?(Param1 == 13) : goto "DuskMist" ?(Param1 == 14) : goto "NightMist" ?(Param1 == 15) : goto "DawnMist" ?(Param1 == 16) : goto "NoonMist" ?(Param1 == 17) : goto "DuskFog" ?(Param1 == 18) : goto "NightFog" ?(Param1 == 19) : goto "DawnFog" ?(Param1 == 20) : goto "NoonFog" #DuskClear skiptime 17.5 0 setFog 0.2 0 setOvercast 0 AutoFlares = false hint "Dusk/Clear" goto "ConditionsSet" #NightClear skiptime 0 0 setFog 0.2 0 setOvercast 0 AutoFlares = true hint "Night/Clear" goto "ConditionsSet" #DawnClear skiptime 6.25 0 setFog 0.2 0 setOvercast 0 AutoFlares = false hint "Dawn/Clear" goto "ConditionsSet" #NoonClear skiptime 12 0 setFog 0.2 0 setOvercast 0 AutoFlares = false hint "Noon/Clear" goto "ConditionsSet" #DuskOvercast skiptime 17.5 0 setFog 0.2 0 setOvercast 0.7 AutoFlares = false hint "Dusk/Overcast" goto "ConditionsSet" #NightOvercast skiptime 0 0 setFog 0.2 0 setOvercast 0.7 AutoFlares = true hint "Night/Overcast" goto "ConditionsSet" #DawnOvercast skiptime 6.25 0 setFog 0.2 0 setOvercast 0.7 AutoFlares = false hint "Dawn/Overcast" goto "ConditionsSet" #NoonOvercast skiptime 12 0 setFog 0.2 0 setOvercast 0.7 AutoFlares = false hint "Noon/Overcast" goto "ConditionsSet" #DuskStorm skiptime 17.5 0 setFog 0.4 0 setOvercast 1.0 AutoFlares = false hint "Dusk/Storm" goto "ConditionsSet" #NightStorm skiptime 0 0 setFog 0.4 0 setOvercast 1.0 AutoFlares = true hint "Night/Storm" goto "ConditionsSet" #DawnStorm skiptime 6.25 0 setFog 0.4 0 setOvercast 1.0 AutoFlares = false hint "Dawn/Storm" goto "ConditionsSet" #NoonStorm skiptime 12 0 setFog 0.4 0 setOvercast 1.0 AutoFlares = false hint "Noon/Storm" goto "ConditionsSet" #DuskMist skiptime 17.5 0 setFog 0.70 0 setOvercast 0.7 AutoFlares = false hint "Dusk/Mist" goto "ConditionsSet" #NightMist skiptime 0 0 setFog 0.70 0 setOvercast 0.7 AutoFlares = true hint "Night/Mist" goto "ConditionsSet" #DawnMist skiptime 6.25 0 setFog 0.70 0 setOvercast 0.7 AutoFlares = false hint "Dawn/Mist" goto "ConditionsSet" #NoonMist skiptime 12 0 setFog 0.70 0 setOvercast 0.7 AutoFlares = false hint "Noon/Mist" goto "ConditionsSet" #DuskFog skiptime 17.5 0 setFog 0.97 0 setOvercast 0.7 AutoFlares = false hint "Dusk/Fog" goto "ConditionsSet" #NightFog skiptime 0 0 setFog 0.97 0 setOvercast 0.7 AutoFlares = true hint "Night/Fog" goto "ConditionsSet" #DawnFog skiptime 6.25 0 setFog 0.97 0 setOvercast 0.7 AutoFlares = false hint "Dawn/Fog" goto "ConditionsSet" #NoonFog skiptime 12 0 setFog 0.97 0 setOvercast 0.7 AutoFlares = false hint "Noon/Fog" goto "ConditionsSet" ; ============================================================================ ; MISSION START Time: ; ============================================================================ #ConditionsSet ;............................................................................ finishMissionInit exitGGATCGVAGGATSFFO@`g n(u**#+ UUU~UUUUUUUUU*dUUUUTy}UU]UUjXuUUU 9mUU:UUU mXVUUVUUEUUEUUEUUUUU7}Ffi4UU;߁ ;m+*q3X```KݶXXXX]}%%%%~}~}~}~[%UUWD% ZeX5DUU* U/CudXVUUU]UUUUUUUUUU[%UUUAUUUQUUU%{UUU{UUUXUUUUUUUUUAUUUUUU&{UUU{UUUXQUUU{UUUUUU@׽UUul}}UUURS|b }q1|}aRXTR|}EIa}r@@`Q|ERTVX}}UUUZT|b t?z}~W@@`s|~VUVTR|}PUݾR|}%s|}TVU|}QZXT}rPX}}VUs|}PXVU}Q&|}UUUfz}UUUPXXTd~ {}UU}r@@|Ϡs|}EUU*{}UU}@rB`QQ1|}I}R@@}Q W`P5UU׽TUUU6 UxUPVUUWUXUStbXVU|U|U jUtUr|XTUU UU U}UfUi@`UUڕUUX}UUXVUU }U ZmUZڍUUڕU`UﺅԾ*version=11; class Mission { addOns[]= { "caair", "sara", "cacharacters", "CAWheeled" }; addOnsAuto[]= { "cacharacters", "CAAir", "CAWheeled", "sara" }; randomSeed=16772099; class Intel { briefingName="co2 Sniper 1 v1.0 [SW]"; briefingDescription="By Shadowlord"; startWeather=0.100000; forecastWeather=0.300000; year=2007; month=4; day=13; hour=0; minute=0; }; class Groups { items=14; class Item0 { side="WEST"; class Vehicles { items=2; class Item0 { position[]={9613.923828,242.106323,15560.526367}; azimut=68.711197; special="NONE"; id=0; side="WEST"; vehicle="SoldierWSniper"; player="PLAYER COMMANDER"; rank="LIEUTENANT"; skill=1.000000; text="w1"; init="this moveindriver ph1;"; description="Sniper"; }; class Item1 { position[]={9626.894531,242.778030,15552.999023}; azimut=68.711197; special="NONE"; id=1; side="WEST"; vehicle="SoldierWSniper"; player="PLAY CDG"; leader=1; rank="CAPTAIN"; skill=1.000000; text="w2"; init="this moveindriver ph2; removeallweapons this; this addmagazine ""30Rnd_556x45_StanagSD""; this addweapon ""M4A1SD""; this addmagazine ""30Rnd_556x45_StanagSD"";; this addmagazine ""30Rnd_556x45_StanagSD""; this addmagazine ""30Rnd_556x45_StanagSD""; this addmagazine ""30Rnd_556x45_StanagSD""; this addmagazine ""30Rnd_556x45_StanagSD""; this addmagazine ""30Rnd_556x45_StanagSD""; this addmagazine ""30Rnd_556x45_StanagSD""; this addmagazine ""30Rnd_556x45_StanagSD"";this addweapon ""Binocular""; this addweapon ""NVGoggles""; "; description="Spotter"; }; }; }; class Item1 { side="LOGIC"; class Vehicles { items=1; class Item0 { position[]={10300.274414,22.639706,5436.914063}; id=4; side="LOGIC"; vehicle="Logic"; leader=1; skill=0.600000; text="BAS_Server_Logic"; }; }; }; class Item2 { side="LOGIC"; class Vehicles { items=1; class Item0 { position[]={10332.146484,22.328766,5437.766602}; id=5; side="LOGIC"; vehicle="Logic"; leader=1; skill=0.600000; text="Server"; init="nul=[""init""] execVM ""ups-f.sqf"""; }; }; }; class Item3 { side="EAST"; class Vehicles { items=3; class Item0 { position[]={10261.931641,176.761642,15768.434570}; azimut=166.923538; id=8; side="EAST"; vehicle="OfficerE"; leader=1; rank="MAJOR"; skill=0.600000; text="Off1"; }; class Item1 { position[]={10259.665039,176.751099,15770.030273}; azimut=146.472000; id=9; side="EAST"; vehicle="SoldierESaboteurPipe"; rank="LIEUTENANT"; skill=0.600000; text="pv1"; }; class Item2 { position[]={10263.006836,176.782654,15771.013672}; azimut=146.471542; id=10; side="EAST"; vehicle="SoldierESaboteurPipe"; rank="LIEUTENANT"; skill=0.600000; text="pv2"; }; }; class Waypoints { items=4; class Item0 { position[]={10269.261719,176.960175,15752.339844}; class Effects { }; showWP="NEVER"; }; class Item1 { position[]={10273.576172,177.273865,15745.794922}; id=6; type="GETIN"; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={10279.185547,178.595367,15734.629883}; expCond="partymove"; class Effects { }; showWP="NEVER"; }; class Item3 { position[]={8221.903320,45.593800,17106.820313}; class Effects { }; showWP="NEVER"; }; }; }; class Item4 { side="EAST"; class Vehicles { items=3; class Item0 { position[]={10284.008789,176.847610,15748.337891}; azimut=158.111908; id=11; side="EAST"; vehicle="SoldierESaboteurPipe"; leader=1; rank="LIEUTENANT"; skill=0.600000; text="pv1_1"; }; class Item1 { position[]={10287.479492,176.557510,15748.624023}; azimut=158.111908; id=12; side="EAST"; vehicle="SoldierESaboteurPipe"; rank="LIEUTENANT"; skill=0.600000; text="pv2_1"; }; class Item2 { position[]={10285.922852,176.580872,15751.649414}; azimut=163.939377; id=13; side="EAST"; vehicle="SoldierESaboteurPipe"; rank="LIEUTENANT"; skill=0.600000; text="pv2_2"; }; }; class Waypoints { items=3; class Item0 { position[]={10280.086914,178.892914,15732.435547}; id=7; type="GETIN"; class Effects { }; showWP="NEVER"; }; class Item1 { position[]={10286.953125,180.835159,15720.298828}; expCond="partymove"; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={8180.031738,49.994999,17040.541016}; class Effects { }; showWP="NEVER"; }; }; }; class Item5 { side="EAST"; class Vehicles { items=2; class Item0 { position[]={9948.988281,149.696625,15564.132813}; id=14; side="EAST"; vehicle="SoldierESaboteurMarksman"; leader=1; rank="SERGEANT"; skill=0.814739; init="nul=[this,""patrols1"",""RANDOM"",""MIN:"",1,""MAX:"",5] execVM ""ups-f.sqf"""; }; class Item1 { position[]={9952.653320,149.575989,15561.929688}; id=15; side="EAST"; vehicle="SoldierESniper"; skill=1.000000; }; }; }; class Item6 { side="EAST"; class Vehicles { items=4; class Item0 { position[]={9944.997070,137.006516,15612.906250}; id=16; side="EAST"; vehicle="TeamLeaderE"; leader=1; rank="SERGEANT"; skill=0.814739; init="nul=[this,""patrols1"",""RANDOM"",""MIN:"",1,""MAX:"",5] execVM ""ups-f.sqf"""; }; class Item1 { position[]={9948.662109,136.304459,15610.703125}; id=17; side="EAST"; vehicle="SoldierEMedic"; skill=1.000000; }; class Item2 { position[]={9952.087891,135.153244,15610.637695}; id=18; side="EAST"; vehicle="SoldierEB"; skill=0.452480; }; class Item3 { position[]={9955.480469,133.951355,15610.455078}; id=19; side="EAST"; vehicle="SoldierEAA"; skill=0.452480; }; }; }; class Item7 { side="EAST"; class Vehicles { items=4; class Item0 { presenceCondition="param2==2"; position[]={9944.401367,141.786240,15594.359375}; id=20; side="EAST"; vehicle="TeamLeaderE"; leader=1; rank="SERGEANT"; skill=0.814739; init="nul=[this,""patrols1"",""RANDOM"",""MIN:"",1,""MAX:"",5] execVM ""ups-f.sqf"""; }; class Item1 { presenceCondition="param2==2"; position[]={9948.066406,141.336884,15592.156250}; id=21; side="EAST"; vehicle="SoldierEMedic"; skill=1.000000; }; class Item2 { presenceCondition="param2==2"; position[]={9951.492188,140.317047,15592.090820}; id=22; side="EAST"; vehicle="SoldierEB"; skill=0.452480; }; class Item3 { presenceCondition="param2==2"; position[]={9954.884766,139.313156,15591.908203}; id=23; side="EAST"; vehicle="SoldierEAA"; skill=0.452480; }; }; }; class Item8 { side="EAST"; class Vehicles { items=2; class Item0 { presenceCondition="param2==2"; position[]={9949.155273,144.719070,15578.245117}; id=24; side="EAST"; vehicle="SoldierESaboteurMarksman"; leader=1; rank="SERGEANT"; skill=0.814739; init="nul=[this,""patrols1"",""RANDOM"",""MIN:"",1,""MAX:"",5] execVM ""ups-f.sqf"""; }; class Item1 { presenceCondition="param2==2"; position[]={9952.820313,144.491608,15576.041992}; id=25; side="EAST"; vehicle="SoldierESniper"; skill=1.000000; }; }; }; class Item9 { side="EAST"; class Vehicles { items=2; class Item0 { position[]={10242.884766,226.923355,15216.354492}; id=26; side="EAST"; vehicle="SoldierESaboteurMarksman"; leader=1; rank="SERGEANT"; skill=0.814739; init="nul=[this,""patrols2"",""RANDOM"",""MIN:"",1,""MAX:"",5] execVM ""ups-f.sqf"""; }; class Item1 { position[]={10246.549805,227.678055,15214.151367}; id=27; side="EAST"; vehicle="SoldierESniper"; skill=1.000000; }; }; }; class Item10 { side="EAST"; class Vehicles { items=4; class Item0 { position[]={10238.893555,210.960968,15265.127930}; id=28; side="EAST"; vehicle="TeamLeaderE"; leader=1; rank="SERGEANT"; skill=0.814739; init="nul=[this,""patrols2"",""RANDOM"",""MIN:"",1,""MAX:"",5] execVM ""ups-f.sqf"""; }; class Item1 { position[]={10242.558594,211.623657,15262.924805}; id=29; side="EAST"; vehicle="SoldierEMedic"; skill=1.000000; }; class Item2 { position[]={10245.984375,211.584106,15262.859375}; id=30; side="EAST"; vehicle="SoldierEB"; skill=0.452480; }; class Item3 { position[]={10249.376953,211.622635,15262.676758}; id=31; side="EAST"; vehicle="SoldierEAA"; skill=0.452480; }; }; }; class Item11 { side="EAST"; class Vehicles { items=4; class Item0 { presenceCondition="param2==2"; position[]={10238.297852,217.090302,15246.581055}; id=32; side="EAST"; vehicle="TeamLeaderE"; leader=1; rank="SERGEANT"; skill=0.814739; init="nul=[this,""patrols2"",""RANDOM"",""MIN:"",1,""MAX:"",5] execVM ""ups-f.sqf"""; }; class Item1 { presenceCondition="param2==2"; position[]={10241.962891,217.792465,15244.377930}; id=33; side="EAST"; vehicle="SoldierEMedic"; skill=1.000000; }; class Item2 { presenceCondition="param2==2"; position[]={10245.388672,217.781799,15244.312500}; id=34; side="EAST"; vehicle="SoldierEB"; skill=0.452480; }; class Item3 { presenceCondition="param2==2"; position[]={10248.781250,217.846588,15244.129883}; id=35; side="EAST"; vehicle="SoldierEAA"; skill=0.452480; }; }; }; class Item12 { side="EAST"; class Vehicles { items=2; class Item0 { presenceCondition="param2==2"; position[]={10243.051758,222.293442,15230.466797}; id=36; side="EAST"; vehicle="SoldierESaboteurMarksman"; leader=1; rank="SERGEANT"; skill=0.814739; init="nul=[this,""patrols2"",""RANDOM"",""MIN:"",1,""MAX:"",5] execVM ""ups-f.sqf"""; }; class Item1 { presenceCondition="param2==2"; position[]={10246.716797,223.042068,15228.263672}; id=37; side="EAST"; vehicle="SoldierESniper"; skill=1.000000; }; }; }; class Item13 { side="EAST"; class Vehicles { items=1; class Item0 { position[]={11051.513672,42.275742,16148.917969}; azimut=239.630005; special="FLY"; id=40; side="EAST"; vehicle="Mi17"; leader=1; skill=0.814739; }; }; class Waypoints { items=8; class Item0 { position[]={10957.251953,55.601448,16090.698242}; class Effects { }; showWP="NEVER"; }; class Item1 { position[]={9388.074219,294.410675,15475.222656}; class Effects { }; showWP="NEVER"; }; class Item2 { position[]={8656.160156,223.965408,16204.368164}; class Effects { }; showWP="NEVER"; }; class Item3 { position[]={8800.326172,0.410906,17443.630859}; class Effects { }; showWP="NEVER"; }; class Item4 { position[]={9565.508789,-69.659897,18092.375000}; class Effects { }; showWP="NEVER"; }; class Item5 { position[]={10998.838867,-20.466873,18025.837891}; class Effects { }; showWP="NEVER"; }; class Item6 { position[]={12032.808594,29.754452,17395.242188}; class Effects { }; showWP="NEVER"; }; class Item7 { position[]={11556.778320,17.207594,16530.337891}; type="CYCLE"; class Effects { }; showWP="NEVER"; }; }; }; }; class Vehicles { items=6; class Item0 { position[]={9630.774414,241.898102,15572.390625}; azimut=68.711197; special="FLY"; id=2; side="EMPTY"; vehicle="ParachuteEast"; skill=0.600000; text="ph2"; init="this setpos [getpos this select 0,getpos this select 1, 75]"; }; class Item1 { position[]={9662.106445,239.165527,15586.755859}; azimut=68.711197; special="FLY"; id=3; side="EMPTY"; vehicle="ParachuteEast"; skill=0.600000; text="ph1"; init="this setpos [getpos this select 0,getpos this select 1, 80]"; }; class Item2 { position[]={10273.576172,177.273865,15745.794922}; azimut=165.000000; id=6; side="EMPTY"; vehicle="UAZ"; skill=0.600000; text="UAZ2"; }; class Item3 { position[]={10280.086914,178.892914,15732.435547}; azimut=150.880005; id=7; side="EMPTY"; vehicle="UAZMG"; skill=0.600000; text="UAZ1"; }; class Item4 { position[]={10273.416016,176.764877,15761.085938}; azimut=180.000000; id=38; side="EMPTY"; vehicle="car_hatchback"; leader=1; skill=0.814739; }; class Item5 { position[]={10278.916992,176.879395,15756.682617}; azimut=239.630005; id=39; side="EMPTY"; vehicle="hilux1_civil_3_open"; leader=1; skill=0.814739; }; }; class Markers { items=81; class Item0 { position[]={10423.499023,209.035553,15051.362305}; name="obj2"; text="Extraction"; type="Start"; colorName="ColorBlue"; angle=-179.259995; }; class Item1 { position[]={10008.070313,113.720024,15638.250977}; name="patrols1"; markerType="RECTANGLE"; type="Flag"; colorName="ColorRed"; a=300.000000; b=200.000000; }; class Item2 { position[]={10268.124023,176.904968,15754.004883}; name="obj1"; type="Flag"; a=0.500000; b=0.500000; }; class Item3 { position[]={10276.195313,178.072449,15739.005859}; name="dot1"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item4 { position[]={10296.016602,182.835327,15708.895508}; name="dot1_1"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item5 { position[]={10317.271484,187.178406,15681.076172}; name="dot1_2"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item6 { position[]={10320.397461,190.202271,15640.126953}; name="dot1_3"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item7 { position[]={10299.765625,189.956772,15605.117188}; name="dot1_4"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item8 { position[]={10278.822266,185.040039,15573.859375}; name="dot1_5"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item9 { position[]={10264.128906,177.406235,15535.410156}; name="dot1_6"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item10 { position[]={10246.311523,174.472961,15491.021484}; name="dot1_7"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item11 { position[]={10210.051758,180.351959,15469.142578}; name="dot1_8"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item12 { position[]={10167.540039,184.148453,15479.770508}; name="dot1_9"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item13 { position[]={10140.970703,182.079407,15510.716797}; name="dot1_10"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item14 { position[]={10123.154297,166.662933,15558.231445}; name="dot1_11"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item15 { position[]={10118.464844,141.961761,15616.998047}; name="dot1_12"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item16 { position[]={10101.270508,120.138474,15667.638672}; name="dot1_13"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item17 { position[]={10103.771484,105.008102,15725.780273}; name="dot1_14"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item18 { position[]={10138.780273,92.934853,15767.667969}; name="dot1_15"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item19 { position[]={10168.790039,83.773430,15825.181641}; name="dot1_16"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item20 { position[]={10172.541992,76.397339,15882.074219}; name="dot1_17"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item21 { position[]={10205.363281,71.727150,15936.151367}; name="dot1_18"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item22 { position[]={10265.066406,66.421883,15963.348633}; name="dot1_19"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item23 { position[]={10323.518555,61.656658,15989.605469}; name="dot1_20"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item24 { position[]={10379.158203,56.533951,16015.863281}; name="dot1_21"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item25 { position[]={10426.045898,51.767868,16047.435547}; name="dot1_22"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item26 { position[]={10476.373047,43.060467,16082.133789}; name="dot1_23"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item27 { position[]={10522.011719,34.619347,16126.833984}; name="dot1_24"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item28 { position[]={10580.464844,30.740047,16153.715820}; name="dot1_25"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item29 { position[]={10634.856445,32.857635,16191.226563}; name="dot1_26"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item30 { position[]={10601.389648,32.429394,16225.237305}; name="dot1_27"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item31 { position[]={10587.011719,31.641321,16260.872070}; name="dot1_28"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item32 { position[]={10554.814453,30.891665,16291.503906}; name="dot1_29"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item33 { position[]={10492.610352,30.488499,16305.257813}; name="dot1_30"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item34 { position[]={10434.157227,30.008615,16325.576172}; name="dot1_31"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item35 { position[]={10370.078125,29.683102,16346.521484}; name="dot1_32"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item36 { position[]={10307.249023,29.045248,16370.903320}; name="dot1_33"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item37 { position[]={10242.542969,28.552813,16397.472656}; name="dot1_34"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item38 { position[]={10180.963867,28.092390,16420.917969}; name="dot1_35"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item39 { position[]={10117.822266,27.548540,16435.923828}; name="dot1_36"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item40 { position[]={10048.427734,27.026760,16446.240234}; name="dot1_37"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item41 { position[]={10025.295898,26.690636,16484.373047}; name="dot1_38"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item42 { position[]={10049.366211,26.278576,16530.949219}; name="dot1_39"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item43 { position[]={10040.300781,25.852234,16587.529297}; name="dot1_40"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item44 { position[]={10008.729492,25.469643,16627.539063}; name="dot1_41"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item45 { position[]={9930.268555,24.749998,16639.103516}; name="dot1_42"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item46 { position[]={9839.619141,22.961172,16645.669922}; name="dot1_43"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item47 { position[]={9766.785156,24.689566,16666.925781}; name="dot1_44"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item48 { position[]={9705.831055,25.774446,16675.992188}; name="dot1_45"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item49 { position[]={9636.124023,27.489243,16681.619141}; name="dot1_46"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item50 { position[]={9588.923828,28.656059,16703.187500}; name="dot1_47"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item51 { position[]={9549.849609,28.586842,16753.201172}; name="dot1_48"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item52 { position[]={9480.457031,26.191116,16770.705078}; name="dot1_49"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item53 { position[]={9417.625977,30.674868,16800.087891}; name="dot1_50"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item54 { position[]={9357.920898,32.119896,16823.845703}; name="dot1_51"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item55 { position[]={9299.468750,30.763084,16838.537109}; name="dot1_52"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item56 { position[]={9251.955078,32.709949,16855.416016}; name="dot1_53"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item57 { position[]={9193.189453,30.237484,16867.607422}; name="dot1_54"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item58 { position[]={9144.113281,28.110403,16877.921875}; name="dot1_55"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item59 { position[]={9100.351563,30.903397,16912.931641}; name="dot1_56"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item60 { position[]={9042.522461,34.505348,16936.376953}; name="dot1_57"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item61 { position[]={8979.691406,34.760368,16950.753906}; name="dot1_58"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item62 { position[]={8918.736328,35.150681,16972.634766}; name="dot1_59"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item63 { position[]={8874.037109,35.783661,16988.888672}; name="dot1_60"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item64 { position[]={8817.459961,38.805672,16994.828125}; name="dot1_61"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item65 { position[]={8763.694336,45.903214,16983.888672}; name="dot1_62"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item66 { position[]={8701.489258,49.305916,17002.332031}; name="dot1_63"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item67 { position[]={8697.425781,53.587456,17049.533203}; name="dot1_64"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item68 { position[]={8684.297852,52.204178,17087.667969}; name="dot1_65"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item69 { position[]={8663.355469,41.885139,17135.806641}; name="dot1_66"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item70 { position[]={8621.467773,31.371208,17174.253906}; name="dot1_67"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item71 { position[]={8560.825195,32.695190,17183.318359}; name="dot1_68"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item72 { position[]={8503.935547,34.592945,17186.443359}; name="dot1_69"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item73 { position[]={8446.418945,38.519241,17196.134766}; name="dot1_70"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item74 { position[]={8377.961914,42.867031,17224.894531}; name="dot1_71"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item75 { position[]={8321.383789,42.193878,17205.826172}; name="dot1_72"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item76 { position[]={8288.250000,43.123470,17168.941406}; name="dot1_73"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item77 { position[]={8257.616211,44.409309,17134.869141}; name="dot1_74"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item78 { position[]={8216.042969,45.696491,17102.986328}; name="dot1_75"; type="Dot"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item79 { position[]={8196.975586,49.544243,17072.041016}; name="dot1_76"; type="Unknown"; colorName="ColorRedAlpha"; a=0.500000; b=0.500000; }; class Item80 { position[]={10197.375977,220.495667,15231.246094}; name="patrols2"; markerType="RECTANGLE"; type="Flag"; colorName="ColorRed"; a=300.000000; b=200.000000; }; }; class Sensors { items=14; class Item0 { position[]={10329.349609,24.067291,5478.177734}; a=0.000000; b=0.000000; angle=-176.847000; age="UNKNOWN"; expCond="start2"; class Effects { track="ATrack16"; titleType="TEXT"; title="S N I P E R"; }; }; class Item1 { position[]={10364.464844,23.209211,5478.316406}; a=0.000000; b=0.000000; angle=-183.959000; age="UNKNOWN"; expCond="start"; expActiv="120 fadeMusic 0.2"; class Effects { titleType="TEXT"; title="Presenting:"; }; }; class Item2 { position[]={10292.015625,24.539190,5478.732422}; a=0.000000; b=0.000000; angle=-183.959000; age="UNKNOWN"; expCond="start3"; class Effects { titleType="RES"; title="Texte1"; }; }; class Item3 { position[]={10289.611328,25.345222,5508.080078}; a=0.000000; b=0.000000; angle=-183.959000; age="UNKNOWN"; expCond=""; class Effects { titleType="RES"; title="BIS"; }; }; class Item4 { position[]={10248.626953,21.744499,5478.732422}; a=0.000000; b=0.000000; angle=-183.959000; timeoutMin=5.000000; timeoutMid=5.000000; timeoutMax=5.000000; age="UNKNOWN"; expCond="start4"; class Effects { }; }; class Item5 { position[]={10248.470703,22.194002,5495.664063}; a=0.000000; b=0.000000; angle=-183.959000; age="UNKNOWN"; expCond="start4"; class Effects { titleType="RES"; title="Texte2"; }; }; class Item6 { position[]={10302.412109,21.053101,5413.623047}; a=0.000000; b=0.000000; type="END1"; age="UNKNOWN"; name="win"; expCond="obj1 && obj2"; expActiv="hint ""Well Done"""; class Effects { }; }; class Item7 { position[]={10416.563477,209.607010,15052.886719}; activationBy="MEMBER"; age="UNKNOWN"; idVehicle=1; name="win_1"; expCond="this && not alive off1"; expActiv="obj2=true;""2"" ObjStatus ""DONE"""; class Effects { }; }; class Item8 { position[]={10007.899414,113.278862,15640.261719}; a=300.000000; b=200.000000; rectangular=1; age="UNKNOWN"; text="patrols1"; name="patrols1"; class Effects { }; }; class Item9 { position[]={10197.205078,219.800385,15233.256836}; a=300.000000; b=200.000000; rectangular=1; age="UNKNOWN"; text="patrols2"; name="patrols2"; class Effects { }; }; class Item10 { position[]={10414.661133,207.217422,15107.851563}; a=0.000000; b=0.000000; age="UNKNOWN"; name="win_1_1"; expCond="NOT ALIVE off1"; expActiv="obj1=true; ""1"" ObjStatus ""DONE"""; class Effects { }; }; class Item11 { position[]={10455.958008,158.100571,15702.152344}; a=0.000000; b=0.000000; age="UNKNOWN"; expCond="time > 300"; expActiv="partymove=true; [west,""base""] sidechat ""Intel Reports the commander is on the move out."""; class Effects { }; }; class Item12 { position[]={8201.596680,49.549351,17069.117188}; activationBy="LEADER"; type="LOOSE"; age="UNKNOWN"; idVehicle=8; name="lose1"; expActiv="""1"" ObjStatus ""Failed"""; class Effects { }; }; class Item13 { position[]={9620.606445,224.120590,15477.495117}; a=0.000000; b=0.000000; type="LOOSE"; age="UNKNOWN"; name="end2"; expCond="NOT ALIVE w1 && NOT ALIVE w2"; expActiv="""1"" ObjStatus ""Failed"";""2"" ObjStatus ""Failed"""; class Effects { }; }; }; }; class Intro { addOns[]= { "sara" }; addOnsAuto[]= { "sara" }; randomSeed=11591683; class Intel { startWeather=0.100000; forecastWeather=0.300000; year=2007; month=6; day=7; hour=8; }; }; class OutroWin { addOns[]= { "sara" }; addOnsAuto[]= { "sara" }; randomSeed=8808451; class Intel { startWeather=0.100000; forecastWeather=0.300000; year=2007; month=6; day=7; hour=8; }; }; class OutroLoose { addOns[]= { "sara" }; addOnsAuto[]= { "sara" }; randomSeed=3099139; class Intel { startWeather=0.100000; forecastWeather=0.300000; year=2007; month=6; day=7; hour=8; }; }; ; Initialize spectating script when player dies ; Set the following to limit visible sides: ; KEGsShownSides = [west, east, resistance, civilian]; _this execVM "spect\specta.sqf";; **************************************************************** ; RespawnSquadAI v1.5 by Spankmeyer ONLY FOR USE WITH EAST-GROUPS!! USES AI! ; credits to dr strangelove and general barron. lots of this code where originally from those two. ; (from spawnman2 and vehiclespawn...) ; ; consider this script as part of the Spawnman scripts! without them it wont work! ; THIS ONE WORKS WITH AI. USE ONLY FOR EAST-GROUPS! ; ; easy example: write in the init-field of leader of group: ; [this, 2, 100] exec "respawnSquadAI.sqs" ; the group will be respawned twice at original position of the leader and will patrol around ; this position with a radius of 100. respawn will occur if they are fewer than 3 members. ; ; complex example: write in the init-field of leader of group: ; [this, 2, 100,patrolpos,spawnpos,3] exec "respawnsquadAI.sqs" ; the group of "this" will be respawned 2 times at spawnpos, patrouling around patrolpos ; in a radius of 100, and the group respawns if the group is lower ; than 4 members. respawn will occur three times. ; you would have to set two objects somewhere on the map. one you would have to name patrolpos, ; the other spawnpos... ; ; if any east-units detect west-units the east group here will hunt them!! ; ; parameters: [unit, j, range, patrolpos, spawnpos, number] exec "RespawnSquadAI.sqs" ; unit should be leader of group ; j = number of respawns ; range = range of patrol around patrolpos. ; patrolpos is optional! no value means, patrouling will ocurr around original position. ; spawnpos is optional! no value means respawn will occur at original position. ; number is optional! no value means they respawn if they are fewer than 3 people... ; ****************************************************************** ? not local server : exit ~(random 2) + 0.5 ;========================GET PARAMETERS========================== _leader = _this select 0 _j = _this select 1 _range = _this select 2 ?(count _this > 3):_patrolpos = _this select 3 ?(count _this <= 3):_patrolpos = _leader ?(count _this > 4):_pos = getpos (_this select 4) ?(count _this <= 4):_pos = getpos _leader ?(count _this > 5):_triggerscale = _this select 5 ?(count _this <= 5):_triggerscale = 2 ;=========================INIT VARIABLES========================== _side = side _leader _dir = getDir _leader _group = group _leader _dummygroup = call compile format["%1dummygroup",_side] _spawncount = 0 _inf =[] _teamscale = count units _group; ;===============CHECK VALUES=============================== ?(_triggerscale > 12):_triggerscale = 12 ?(_triggerscale > _teamscale):_triggerscale = _teamscale ;**************build inf array************************** {_inf = _inf + [typeOf _x]} foreach units _group {_x exec "spawnman\patroldead.sqs"} foreach units _group ~1 ;***********START Patrolscript*************************** ;this is a bit complicated: if a patrolpos-parameter is given, a dummy-parameter ("1") is given to ;randpatrol. this dummy-parameter makes randpatrol updating the patrolpos in every loop. (if one ; wants to "move" the patrolpos for any reason...) if(count _this > 3)then{[_group,_range,4, _patrolpos,1] exec "spawnman\randpatrolAI.sqs";goto "wait"} [_group,_range,20,_patrolpos] exec "spawnman\randpatrolAI.sqs" ;*****************************AliveLoop******************* #wait ~4 ?(count units _group > _triggerscale): goto "wait" ;***************************SPAWN*************************** ;***update respawnpos. (if spawnpos is moving or "teleporting".) ?(count _this > 4) : _pos = getpos (_this select 4) ;time to decay for the dead ~30 ;============decide if the leader has to be respawned======== ?((count units _group == 0)OR(typeOf (units _group select 0) != (_inf select 0))):goto "spawnleader" goto "spawnrest" ; ***************************spawn leader ******************** #spawnleader _unit = _inf select 0 _unit createUnit [_pos, _dummygroup]; _member = (units _dummygroup) select 1 [_member] join _group; _group = group _member ?(count units _group >= _teamscale): goto "wait" ~1 ;******************spawn rest******************************* #spawnrest _unit = _inf select 1 + (random(count _inf-1)) ;hint format["typ %1", _unit] _unit createUnit [_pos, _group]; ~(random 1) + 1 ?(count units _group < _teamscale): goto "spawnrest" _spawncount = _spawncount + 1 ?(_spawncount > _j): EXIT goto "wait" ;by Matt Rochelle [SWAF] ;---------------------------------------------------------------------------- ?(param2==1): goto "Easy"; ?(param2==2): goto "Hard"; ;---------------------------------------------------------------------------- #Easy ;side || type || spawn || how many || patrolarea || time to wait || number of spawns || number of dead untill respawn || partol area || spawnpos dead no repawn ["east","ArmA", tent2,12,600,60,5,1, RPOS,tent2] exec "spawnmanAI.sqs" ~60 Hint "Easy" exit #Hard ;side || type || spawn || how many || patrolarea || time to wait || number of spawns || number of dead untill respawn || partol area || spawnpos dead no repawn ;---------------------------------------------------------------------------- ["east","ArmA", tent2,12,500,20,10,1, RPOS,tent2] exec "spawnmanAI.sqs" ~60 ["east","ArmA", tent2,12,500,20,10,1, RPOS,tent2] exec "spawnmanAI.sqs" Hint "Hard" exit; SPAWN MANAGER 2 with AI ; 2003 by ])rStrangelove /modified 2004 by Spankmeyer ; this modified version uses randpatrolAI instead of the original randpatrolscript. this provides ; a rudimentary (but dangerous) AI to the east-troops. it works only with MostKnownEnemy.sqs!! ; how to use MostKnownEnemy.sqs is described there! ; ; THIS ONE WORKS WITH AI. USE ONLY FOR EAST-GROUPS! ; ; Spawns a group and issues orders ; New/special features: ; - Many parameters optional, can create general or very specific groups & behaviour. ; - Respawns can either happen: never, specific amount or forever ; - Respawns don't switch groups anymore, only 1 specific group used all the time ; - Respawn script works for EAST and WEST. ; (You could let 2 SpManagers fight against each other !) ; - Troop types in seperate section, easy to customize. See "troops2use" at bottom of script. ; (Templates included for Original OPF, SEB Vietnam, Invasion44 and BAS-Tonal-troops) ; (Mixed fights with different troops possible (US Nam grunts VS. Tonal africans)) ; - All running SpawnManagers will collect spawn groups in the global arrays: ; "eastpatrolteams" and "westpatrolteams" for ease of reference. ; - Spawnposition and Patrolposition don't need to be the same anymore. ; - Dead soldiers slowly sink into the ground after 11+ seconds. ; (it's not a feature, it's an important bug solver) ;) ; - If allowed, wounded group leaders call long range artillery on enemy positions ; (see init.sqs) ; - If spawn object name is given, group respawn is dependant on object's health. ; (good for assigning a tent or building; destroying it will also stop respawns) ; (it's possible to assign vehicles as spawn objects. If vehicles are too fast / too high, ; (soldiers will get hurt/fall to death.) ;================================================================================= ;SHORTEST EXAMPLE--------------------------- ;["east","", tent] exec "spawnman.sqs" ; ; 5 russians are spawned at tent, will start patrolling 150m around tent. ; If all 5 are dead, they will respawn 1 time, but that's it. ;(these defaults can be changed in the "get parameters" start section) ;SPECIFIC EXAMPLE--------------------------- ;["west","BAS_Deltas", tent,8,150,20,-1,4, house,tent] exec "spawnman.sqs" ; ; Parameter Values allowed Explanation ; (0) "east" or "west" what side is used ? ; (1) "1985","vietnam",etc what troops are spawned ? see bottom section ; (2) [x,y,z],getpos base position where troops are spawned ; (3) optional 2 - 12 how many soldiers are in group ? ; (4) optional 1 - 99999 (whatever) patrol radius around patrolposition in m ; (5) optional 1 - 99999 (whatever) how many seconds group will pause between patrols ; (6) optional -1,0,1 - 99999 how many respawns ? -1 = infinite, 0 = no respawns ; (7) optional 2 - 12 how many dead in a group to trigger a respawn ? ; (8) optional [x,y,z],getpos patrolposition that is patrolled around ; (9) optional spawn- object that "spawns" troops. destroying it will stop respawns ; NOTE: if parameter 9 is given (spawn-object), parameter 2 (spawn-position) won't be used. ; ; 8 Deltas (BAS troops) are spawned at tent, will start patrolling 150m around house. ; They will pause for 20 seconds at each patrol point. ; Everytime 4 Deltas have been killed, these 4 Deltas will respawn (respawns are infinite). ; If tent is destroyed, respawns will come to a complete halt. However, the script does continue ; and will resume where it halted in case the tent is "repaired" somehow later on. ?!(local Server):EXIT ~(random 1) + 1 ;=================GET PARAMETERS======================== ;get parameters ?(count _this < 3):player groupchat "Spawnmanager parameter ERROR";EXIT _side = _this select 0 _troops = _this select 1 _basepos = _this select 2 ?(count _this > 3):_teamscale = _this select 3 ?(count _this <= 3):_teamscale = 5 ?(count _this > 4):_radius = _this select 4 ?(count _this <= 4):_radius = 150 ?(count _this > 5):_pause = _this select 5 ?(count _this <= 5):_pause = 20 ?(count _this > 6):_stopcount = _this select 6 ?(count _this <= 6):_stopcount = 1 ?(count _this > 7):_triggerscale = _this select 7 ?(count _this <= 7):_triggerscale = 5 ?(count _this > 8):_patrolpos = _this select 8 ?(count _this <= 8):_patrolpos = _basepos ?(count _this > 9):_base = _this select 9 ?(count _this <= 9):_base = objNull ;============CHECK VALUES / DEFAULTS==================== ; _return = "check_value_defaults" ?(_troops == ""):_troops = "1985" goto _troops #check_value_defaults ?(_teamscale < 2):_teamscale = 2 ?(_teamscale > 12):_teamscale = 12 ?(_triggerscale > 12):_triggerscale = 12 ?(_triggerscale > _teamscale):_triggerscale = _teamscale ;============INIT VALUES================================ _units = call compile format["_patrolunits_%1",_side] _dummygroup = call compile format["%1dummygroup",_side] _team = grpNull _leader = _units select 1 ;hint format ["typ %1",_leader] ?(_triggerscale == _teamscale):_leader = _units select 0 _firsttime = TRUE _spawncount = 0 _scale = _teamscale ?(damage _base >= 1):_base = objNull ?!(isNull _base):[_base] exec "spawnman\gasexplosion.sqs" ;=============================SPAWN TEAM===================== #spawn_leader ?!(isNull _base):_basepos = getpos _base ?(damage _base >= 1):_return1 = "spawn_leader";goto "wait_for_baserepair" ?(_firsttime):goto "go" ;delay to give the dead enough time to decay ~28 #go ?(damage _base >= 1):_return1 = "go";goto "wait_for_baserepair" (_leader) createUnit [_basepos, _dummygroup] _member = (units _dummygroup) select 1 [_member] join _team; _team = group _member _patrolteams = call compile format["%1patrolteams",_side] ?(_side == "east"):goto "check_east" goto "check_west" #check_east ?(count eastpatrolteams > 0) AND !(_team in eastpatrolteams): eastpatrolteams = eastpatrolteams + [_team] eastpatrolteams = [_team];goto "after_check" #check_west ?(count westpatrolteams > 0) AND !(_team in westpatrolteams): westpatrolteams = westpatrolteams + [_team] westpatrolteams = [_team] #after_check _restcount = 1 #spawn_rest ?(damage _base >= 1):_return1 = "spawn_rest";goto "wait_for_baserepair" ~(random 1) + 1 (_units select 1+(random(count _units - 1))) createUnit [_basepos,_team] _restcount = _restcount + 1 ?(_restcount < _scale):goto "spawn_rest" _scale = _triggerscale ;====================START PATROLSCRIPT=================== ;give orders ; last parameter("1") is a dummy-parameter, which updates the patrol-pos in every loop(of randpatrol). ?(_firsttime): [_team,_radius,_pause, _patrolpos,1] exec "spawnman\randpatrolAI.sqs"; _firsttime = FALSE ?(_stopcount == 0):EXIT ?(_spawncount == _stopcount):EXIT ;=====================WAIT FOR TRIGGER TO RESPAWN=========== #wait_for_trigger ~1 ?(damage _base >= 1):_return1 = "wait_for_trigger";goto "wait_for_baserepair" ?(count units _team > (_teamscale - _triggerscale)):goto "wait_for_trigger" _spawncount = _spawncount + 1 goto "spawn_leader" ;=============WAIT FOR BASE REPAIRS SO RESPAWNS MAY CONTINUE======== #wait_for_baserepair ~1 ?!(damage _base <= 0.5):goto "wait_for_baserepair" goto _return1 ;----------------------------------------------------------------------- ; TROOPS2USE - custom troop type template | ;======================================================================= ; 2003 by ])rStrangelove ; ; ; ; It lets you choose which troops are spawned. ; To use your own, make up a label for it, ; place the codenames of your custom armies here ; and call the SpawnManager script with your label in the parameters ; Also, you need to place 1 dead soldier of each type in the map somewhere (or into ocean) ; that will prevent the lagspikes during spawns ; Soldier types are chosen randomly, except the 1st one - should/must be the officer! ; Multiple entries of the standard soldier type will increase the chance this type is spawned. #ArmA ;=================FlashpointDefault================================ _patrolunits_east = ["SoldierENOG","SoldierEB","SoldierEB","SoldierEB","SoldierEG","SoldierEMedic","SoldierEMG","SoldierEAT"] _patrolunits_west = ["SoldierWNOG","SoldierWB","SoldierWB","SoldierWB","SoldierWG","SoldierWMedic","SoldierWMG","SoldierWAT"] goto _return ; ***************************************************** ; ** Operation Flashpoint Script File ; ***************************************************** Start=True ~15 start2=true ~15 start3=true ~10 start4=true exit// ========================================================================================================= // Urban Patrol Script // Version: 1.7.0 // Author: Kronzky (www.kronzky.info / kronzky@gmail.com) // ========================================================================================================= // // Lets a unit or group move randomly through a defined area, // with enhanced behaviour for enemy encounters. // // =========================================================================================================// // // Call syntax: nul=[unit, markername] execVM "ups-f.sqf" // // unit = unit to be patrolling area // markername = name of rectangular marker that covers the area to be patrolled. // nul=[this,"town"] execVM "ups-f.sqf" // // Requires a Game Logic named "server" to work. // Script has to be initialized via nul=["init"] execVM "ups-f.sqs", // either in the init.sqs or from the server GL. // // ========================================================================================================= // ========================================================================================================= // server parameters // how close unit has to be to target to generate a new one (as squared value) _closeenough=100; // how far opfors should move away if they're under attack _safedist=75; // ********************************************************************************************************* _exit = false; // does the server GL exist? if (isNil ("server")) exitWith { hintc "This script requires a game logic named 'server."; }; // ***************************************** SERVER INITIALIZATION ***************************************** // global functions if (((_this find "INIT")!=-1) || ((_this find "init")!=-1)) then { VBS_randomElement = {private["_r"]; _r = random (count _this); _r = (_r - (_r mod 1)); (_this select _r)}; VBS_getDirPos = {private["_a","_b","_from","_to","_return"]; _from = _this select 0; _to = _this select 1; _return = 0; _a = ((_to select 0) - (_from select 0)); _b = ((_to select 1) - (_from select 1)); if (_a != 0 || _b != 0) then {_return = _a atan2 _b}; if ( _return < 0 ) then { _return = _return + 360 }; _return}; VBS_distancePosSqr = {(((_this select 0) select 0)-((_this select 1) select 0))^2 + (((_this select 0) select 1)-((_this select 1) select 1))^2}; KRON_compassDir = {private["_d","_r","_c"]; _c=["North","NorthEast","East","SouthEast","South","SouthWest","West","NorthWest","North"]; _d=[getpos player,_this select 0] call VBS_getDirPos; _d=1+floor((_d-22.5)/45); _r=_c select _d; _r}; // server functions KRON_randomPos = {private["_cx","_cy","_rx","_ry","_cd","_sd","_ad","_tx","_ty","_xout","_yout"];_cx=_this select 0; _cy=_this select 1; _rx=_this select 2; _ry=_this select 3; _cd=_this select 4; _sd=_this select 5; _ad=_this select 6; _tx=random (_rx*2)-_rx; _ty=random (_ry*2)-_ry; _xout=if (_ad!=0) then {_cx+ (_cd*_tx - _sd*_ty)} else {_cx+_tx}; _yout=if (_ad!=0) then {_cy+ (_sd*_tx + _cd*_ty)} else {_cy+_ty}; [_xout,_yout]}; KRON_PosInfo = {private["_pos","_lst","_bld","_bldpos"];_pos=_this select 0; _lst=_pos nearObjects ["House",12]; if (count _lst==0) then {_bld=0;_bldpos=0} else {_bld=_lst select 0; _bldpos=[_bld] call KRON_BldPos}; [_bld,_bldpos]}; KRON_BldPos = {private ["_bld","_bldpos","_bz","_hz"];_bld=_this select 0; _hz=2; _bi=40; _bldpos=0; while {_bi>0} do {_bz=((_bld BuildingPos _bi) select 2); if ((_bz-_hz)>.3) then {_hz=_bz; _bldpos=_bi+1;}; _bi=_bi-1;}; _bldpos;}; KRON_OnRoad = {private["_pos","_rdidx","_lst"];_pos=_this select 0; _rdidx=_this select 1; _lst=_pos nearObjects ["House",12]; if (count _lst==0) then {_rdidx=99}; _rdidx+1}; KRON_AllTroops=[]; KRON_AllWest=[]; KRON_AllEast=[]; KRON_AllRes=[]; KRON_KnownEnemy=0; _trg=createTrigger ["EmptyDetector", [5000,5000]]; _trg setTriggerArea [20000,20000,0,false]; _trg setTriggerActivation ["ANY","PRESENT",false]; _trg setTriggerTimeout [1,1,1,false]; sleep 1 + (random 1); _l=list _trg; deleteVehicle _trg; { if (("AllVehicles" countType [_x]>0) && (side _x != civilian)) then { KRON_AllTroops=KRON_AllTroops+[_x]; _s = side _x; switch (_s) do { case west: { KRON_AllWest=KRON_AllWest+[_x]; }; case east: { KRON_AllEast=KRON_AllEast+[_x]; }; case resistance: { KRON_AllRes=KRON_AllRes+[_x]; }; }; }; } forEach _l; _l = nil; if (isNil("KRON_UPS_Debug")) then {KRON_UPS_Debug=0}; KRON_HQ=server; KRON_UPS_INIT=true; KRON_UPS_Instances=0; KRON_UPS_Total=0; KRON_UPS_Exited=0; //player globalChat "initialized"; _exit=true; }; if (_exit) exitWith {}; // --------------------------------------------------------------------------------------------------------- // unit that's moving _obj = _this select 0; _exit = true; _npc = _obj; if (typename _obj=="OBJECT") then { if (alive _npc) then {_exit = false;} } else { if (count _obj==0) then { _exit=true; } else { {if (alive _x) then {_npc = _x; _exit = false;}} forEach _obj; }; }; //player sidechat format["%1: %2",_npc,_exit]; // get name of area marker _areamarker = _this select 1; if (isNil ("_areamarker")) exitWith { hintc "Area marker not defined.\n(Name not enclosed in quotation marks?)"; }; // remember center position of area marker _centerpos = getMarkerPos _areamarker; _centerX = abs(_centerpos select 0); _centerY = abs(_centerpos select 1); // show area marker _showmarker = if (((_this find "SHOWMARKER")!=-1) || ((_this find "showmarker")!=-1)) then {"SHOWMARKER"} else {"HIDEMARKER"}; if (_showmarker=="HIDEMARKER") then {_areamarker setmarkerpos [-abs(_centerX),-abs(_centerY)]}; // ***************************************** PLAYER INITIALIZATION ***************************************** if !(local server) then { _exit=true; // more to come... eventually... }; if (_exit) exitWith {}; // --------------------------------------------------------------------------------------------------------- waitUntil {KRON_UPS_INIT}; sleep (random 1); // give this group a unique index _grpidx = format["%1",round(random(100000))]; _grpname = format["%1_%2",(side _npc),_grpidx]; // remember the original group members, so we can later find a new leader, in case he dies _members = units _npc; //hint format["%1",_members]; //player globalChat format["%1:%2",KRON_UPS_Instances, count _members]; KRON_UPS_Instances = KRON_UPS_Instances + 1; KRON_UPS_Total = KRON_UPS_Total + (count _members); // is unit infantry ? _isman = if ("Man" countType [_npc]>0) then {true} else {false}; _iscar = if ("LandVehicle" countType [_npc]>0) then {true} else {false}; _isboat = if ("Ship" countType [_npc]>0) then {true} else {false}; _isplane = if ("Air" countType [_npc]>0) then {true} else {false}; // check to see whether group is an enemy of the player (for attack and avoidance maneuvers) // since countenemy doesn't count vehicles, and also only counts enemies if they're known, we just have to brute-force it for now, and declare *everyone* an enemy who isn't a civilian _issoldier = if (side _npc != civilian) then {true} else {false}; _friends=[]; _enemies=[]; //TODO: FIND A WAY TO DETERMINE ASSOCIATION OF RESISTANCE UNITS if (_issoldier) then { switch (side _npc) do { case west: { _friends=_friends+KRON_AllWest; _enemies=_enemies+KRON_AllEast+KRON_AllRes; }; case east: { _friends=_friends+KRON_AllEast; _enemies=_enemies+KRON_AllWest+KRON_AllRes; }; case resistance: { _enemies=_enemies+KRON_AllEast+KRON_AllWest; }; }; _friends=_friends-[_npc]; if (KRON_UPS_Debug==3) then {hint format["[%1]:\nfriends (%2):%3\nenemies (%4):%5",_npc,count _friends,_friends,count _enemies,_enemies]}; }; //player globalChat format["%1:%2",count _friends,count _enemies]; sleep .1; // global unit variable to externally influence script _named = false; _npcname = str(side _npc); if (((_this find "NAMED")!=-1) || ((_this find "named")!=-1)) then { _named = true; _npcname = format["%1",_npc]; _grpidx = _npcname; }; // create global variable for this group call compile format ["KRON_UPS_%1=1",_npcname]; // X/Y range of target area _areasize = getMarkerSize _areamarker; _rangeX = _areasize select 0; _rangeY = _areasize select 1; // marker orientation (needed as negative value!) _a=-1; _areadir=0; // _areadir = (markerDir _areamarker) * -1; // NO GETMARKERDIR IN ARMA YET, so we have to use [...,"ROT:",15] {_a=_a+1; _v=format["%1",_this select _a]; if ((_v=="ROT:") || (_v=="rot:")) then {_areadir=(_this select _a+1)*-1}} foreach _this; sleep .1; // remember some trig calculations _cosdir=cos(_areadir); _sindir=sin(_areadir); // minimum distance of new target position _mindist=(_rangeX^2+_rangeY^2)/4; if (_rangeX==0) exitWith { hintc format["Cannot patrol Sector: %1\nArea Marker doesn't exist",_areamarker]; }; //hint format["%1,%2,%3,%4",_areamarker,isNil ("_areamarker"),_rangeX,_rangeY]; // set first target to current position (so we'll generate a new one right away) _currPos = getpos _npc; _avoidPos = [0,0]; _flankPos = [0,0]; _attackPos = [0,0]; _dist = 0; _lastdist = 0; _lastmove1 = 0; _lastmove2 = 0; _maxmove=0; _moved=0; _damm=0; _dammchg=0; _lastdamm = 0; _timeontarget = 0; _waiting = 0; _fightmode = "walk"; _fm=0; _gothit = false; _react = 99; _lastdamage = 0; _lastknown = 0; _opfknowval = 0; _sin90=1; _cos90=0; _sin270=-1; _cos270=0; // set target tolerance high for choppers & planes if (_isplane) then {_closeenough=5000}; sleep .1; // ***************************************** optional arguments ***************************************** // wait at patrol end points _pause = if (((_this find "NOWAIT")!=-1) || ((_this find "nowait")!=-1)) then {"NOWAIT"} else {"WAIT"}; // drop units at random positions _initpos = "ORIGINAL"; if (((_this find "RANDOM")!=-1) || ((_this find "random")!=-1)) then {_initpos = "RANDOM"}; if (((_this find "RANDOMUP")!=-1) || ((_this find "randomup")!=-1)) then {_initpos = "RANDOMUP"}; if (((_this find "RANDOMDN")!=-1) || ((_this find "randomdn")!=-1)) then {_initpos = "RANDOMDN"}; // don't position groups or vehicles on rooftops if ((_initpos!="ORIGINAL") && ((!_isman) || (count _members)>1)) then {_initpos="RANDOMDN"}; // share enemy info _shareinfo = if (((_this find "NOSHARE")!=-1) || ((_this find "noshare")!=-1)) then {"NOSHARE"} else {"SHARE"}; _sharedist = 50*50; // set behaviour modes (or not) _noslow = if (((_this find "NOSLOW")!=-1) || ((_this find "noslow")!=-1)) then {"NOSLOW"} else {"SLOW"}; if (_noslow!="NOSLOW") then {_npc setbehaviour "safe"; _npc setspeedmode "limited";}; // remember the original speed _defspeed = speedmode _npc; sleep .1; // make start position random _stayput=false; if (_initpos!="ORIGINAL") then { // find a random position (try a max of 20 positions) _try=0; _bld=0; _bldpos=0; while {_try<20} do { _currPos=[_centerX,_centerY,_rangeX,_rangeY,_cosdir,_sindir,_areadir] call KRON_randomPos; _posinfo=[_currPos] call KRON_PosInfo; // _posinfo: [0,0]=no house near, [obj,-1]=house near, but no roof positions, [obj,pos]=house near, with roof pos _bld=_posinfo select 0; _bldpos=_posinfo select 1; if (_isplane || _isboat || !(surfaceiswater _currPos)) then { if (((_initpos=="RANDOM") || (_initpos=="RANDOMUP")) && (_bldpos>0)) then {_try=99}; if (((_initpos=="RANDOM") || (_initpos=="RANDOMDN")) && (_bldpos==0)) then {_try=99}; }; _try=_try+1; }; if (_bldpos==0) then { if (_isman) then { {_x setpos _currPos} foreach units _npc; } else { _npc setpos _currPos; }; } else { // put the unit on top of a building _npc setPos (_bld buildingPos _bldpos-1); _currPos = getPos _npc; _stayput=true; if (KRON_UPS_Debug==3) then {player globalChat format["%1:%2",_bld,_bldpos-1]}; }; }; sleep .1; // "area cleared" trigger activator _areatrigger = if (((_this find "TRIGGER")!=-1) || ((_this find "trigger")!=-1)) then {"TRIGGER"} else {"NOTRIGGER"}; // suppress fight behaviour if (((_this find "NOAI")!=-1) || ((_this find "noai")!=-1)) then {_issoldier=false}; // adjust cycle delay _a=-1; _cycle=5; {_a=_a+1; _v=format["%1",_this select _a]; if ((_v=="CYCLE:") || (_v=="cycle:")) then {_cycle=(_this select _a+1)}} foreach _this; // how many group clones? _a=-1; _mincopies=0; {_a=_a+1; _v=format["%1",_this select _a]; if ((_v=="MIN:") || (_v=="min:")) then {_mincopies=(_this select _a+1)}} foreach _this; _a=-1; _maxcopies=0; {_a=_a+1; _v=format["%1",_this select _a]; if ((_v=="MAX:") || (_v=="max:")) then {_maxcopies=(_this select _a+1)}} foreach _this; if (_mincopies>_maxcopies) then {_maxcopies=_mincopies}; if (_maxcopies>0) then { _copies=_mincopies+random (_maxcopies-_mincopies); // any init strings? _a=-1; _initstr=""; {_a=_a+1; _v=format["%1",_this select _a]; if ((_v=="INIT:") || (_v=="init:")) then {_initstr=(_this select _a+1)}} foreach _this; // create the clones for "_grpcnt" from 1 to _copies do { //KRON_HQ globalChat format["creating clone %1 of %2",_grpcnt,_copies]; // copy groups if (isNil ("KRON_grpindex")) then {KRON_grpindex = 0}; KRON_grpindex = KRON_grpindex+1; // copy group leader _unittype=typeof _npc; // make the clones civilians if ((_this find "CLONECIV")!=-1) then {_unittype="Civilian"}; // use random Civilian models for single unit groups if ((_unittype=="Civilian") && (count _members==1)) then {_rnd=1+round(random 20); if (_rnd>1) then {_unittype=format["Civilian%1",_rnd]}}; npc=_npc; call compile format["""%1"" createunit [getpos _npc,group npc,'grp%2=this;this setbehaviour behaviour npc;this setspeedmode speedmode npc;%3'];",_unittype,KRON_grpindex,_initstr]; _lead=_npc; call compile format["_lead=grp%1",KRON_grpindex]; [_lead] join grpNull; [_lead] join _lead; // copy team members (skip the leader) _c=0; {_c=_c+1;if (_c>1) then {(typeof _x) createunit [getpos _x,group _lead,_initstr,skill _x,"PRIVATE"]}} foreach _members; _nul=[_lead,_areamarker,_pause,_noslow,_initpos,_areatrigger,_track,_showmarker,_shareinfo] execVM "ups-f.sqf"; sleep .1; }; }; sleep .1; // create area trigger _trgside = switch (side _npc) do { case west: {"WEST"}; case east: {"EAST"}; case resistance: {"GUER"}; case civilian: {"CIV"};}; _trgname="KRON_Trig_"+_areamarker; _flgname="KRON_Cleared_"+_areamarker; // has the trigger been created already? KRON_TRGFlag=-1; call compile format["%1=false",_flgname]; call compile format["KRON_TRGFlag=%1",_trgname]; if (isNil ("KRON_TRGFlag")) then { // trigger doesn't exist yet, so create one (make it a bit bigger than the marker, to catch path finding 'excursions' and flanking moves) call compile format["%1=createTrigger[""EmptyDetector"",_centerpos]",_trgname]; call compile format["%1 setTriggerArea[_rangeX*1.5,_rangeY*1.5,_areadir,true]",_trgname]; call compile format["%1 setTriggerActivation[_trgside,""NOT PRESENT"",true]",_trgname]; call compile format["%1 setEffectCondition ""true""",_trgname]; if (_areatrigger!="NOTRIGGER") then { call compile format["%1 setTriggerStatements[""this"", ""titletext [""""SECTOR <%2> CLEARED"""",""""PLAIN""""];""""%2"""" setmarkerpos [-%4,-%5];%3=true;"", ""titletext [""""SECTOR <%2> HAS BEEN RE-OCCUPIED"""",""""PLAIN""""];""""%2"""" setmarkerpos [%4,%5];%3=false;""]", _trgname,_areamarker,_flgname,_centerX,_centerY]; } else { call compile format["%1 setTriggerStatements[""this"", ""%2=true;"", ""%2=false;""]", _trgname,_flgname]; }; }; sleep .1; // track unit _track = if (((_this find "TRACK")!=-1) || ((_this find "track")!=-1) || (KRON_UPS_Debug>0)) then {"TRACK"} else {"NOTRACK"}; _trackername = ""; _destname = ""; if (_track=="TRACK") then { _track = "TRACK"; _trackername=format["trk_%1",_grpidx]; _markerobj = createMarker[_trackername,[0,0]]; _markerobj setMarkerShape "ICON"; _trackername setMarkerType "WTF_DOT"; _markercolor = switch (side _npc) do { case west: {"ColorGreen"}; case east: {"ColorRed"}; case resistance: {"ColorBlue"}; default {"ColorBlack"}; }; _trackername setMarkerColor _markercolor; _trackername setMarkerText format["%1",_grpidx]; _trackername setmarkerpos _currPos; _destname=format["dest_%1",_grpidx]; _markerobj = createMarker[_destname,[0,0]]; _markerobj setMarkerShape "ICON"; _destname setMarkerType "WTF_FLAG"; _destname setMarkerColor _markercolor; _destname setMarkerText format["%1",_grpidx]; _destname setMarkerSize [.5,.5]; }; sleep .1; // init done _makenewtarget=true; _newpos=false; _targetPos = _currPos; // unit is on roof - don't patrol if (_stayput) then {_exit=true}; // exit if something went wrong during initialization if (_exit) exitWith {}; // *********************************************************************************************************** // ************************************************ MAIN LOOP ************************************************ for [{_loop=0}, {_loop<1}, {_loop=_loop}] do { sleep .1; _timeontarget=_timeontarget+_cycle; _react=_react+_cycle; //KRON_HQ globalChat format["loop: %1",round(time)]; // current position _currPos = getpos _npc; _currX = _currPos select 0; _currY = _currPos select 1; if (_track=="TRACK") then { _trackername setmarkerpos _currPos; }; // did anybody get hit in the opfor group? _newdamage=0; { if((damage _x)>0.2) then { _newdamage=_newdamage+(damage _x); // damage has increased since last round if (_newdamage>_lastdamage) then { _lastdamage=_newdamage; _gothit=true; }; _hitPos=getpos _x; if (!alive _x) then { _members=_members-[_x]; _friends=_friends-[_x]; KRON_AllTroops=KRON_AllTroops-[_x]; }; }; } foreach _members; sleep .1; // nobody left alive, exit routine if (count _members==0) then {_exit=true}; // did the leader die? if (!alive _npc) then { _npc = _members select 0; if (isPlayer _npc) then {_exit=true}; }; // if the group is a civilian we don't have to bother checking for enemy encounters if ((_issoldier) && ((count _enemies)>0)) then { _hitPos=[0,0,0]; // if the leader comes across another unit that's either injured, dead or in combat mode, go into combat mode as well. If the other person is still alive, share enemy information. if ((_shareinfo=="SHARE") && (behaviour _npc=="SAFE")) then { _others=_friends-_members; { if ((_npc knowsabout _x>3) && (_npc countEnemy [_x]>0)) then { if ((damage _x>.5) || (behaviour _x!="SAFE")) then { _npc setbehaviour "combat"; _gothit=true; _hitPos=getpos _x; if (alive _x) then {_npc reveal KRON_KnownEnemy}; }; }; } foreach _others; }; sleep .1; // did the group spot an enemy? KRON_KnownEnemy=_npc; _lastknown=_opfknowval; _opfknowval=0; _maxknowledge=0; { _knows=_npc knowsabout _x; if((alive _x) && (_knows>0.2) && (_npc countEnemy [_x]>0)) then { KRON_KnownEnemy=_x; _opfknowval=_opfknowval+_knows; if (_knows>_maxknowledge) then {_maxknowledge=_knows}; }; if (!alive _x) then {_enemies=_enemies-[_x]}; } foreach _enemies; //player globalChat format["%1:%2",_npc,count _enemies]; sleep .1; _pursue=false; // opfor spotted an enemy or got shot, so start pursuit if (_opfknowval>_lastknown || _gothit) then {_pursue=true}; // don't react to new fatalities if less than 60 seconds have passed since the last one if ((_react<60) && (_fightmode!="walk")) then {_pursue=false}; if (KRON_UPS_Debug==3) then {KRON_HQ globalChat format["%1: knowledge:%2, gothit:%3",_npc,_opfknowval,_gothit]}; if (_pursue) then { if (KRON_UPS_Debug==3) then {KRON_HQ globalChat format["%1 target contact",_npc]}; // make the exactness of the target dependend on the knowledge about the shooter _accuracy=16-(_maxknowledge^2); // even though opfor got hit, he sometimes doesn't get the shooter info right away, so we'll just assume that it was the player if (KRON_KnownEnemy==_npc) then {KRON_KnownEnemy=player; _accuracy=100}; _offsx=_accuracy/2-random _accuracy; _offsY=_accuracy/2-random _accuracy; // get position of spotted unit in player group, and watch that spot _bluPos = [(getpos KRON_KnownEnemy select 0) + _offsX, (getpos KRON_KnownEnemy select 1) + _offsY]; _bluX = _bluPos select 0; _bluY = _bluPos select 1; {_x dowatch _bluPos} foreach units _npc; sleep .1; // also go into "combat mode" _npc setspeedmode "full"; _npc setbehaviour "combat"; _pause="NOWAIT"; _waiting=0; // angle from unit to target _dir1 = [_currPos,_bluPos] call VBS_getDirPos; // angle from target to unit _dir2 = if (_dir1>180) then {_dir1-180} else {_dir1+180}; // angle from fatality to target _dir3 = if (_hitPos select 0!=0) then {[_hitPos,_targetPos] call VBS_getDirPos} else {_dir1}; _dd=(_dir3-_dir1); // unit position offset straight towards target _relUX = sin(_dir1)*_safedist; _relUY = cos(_dir1)*_safedist; // target position offset straight towards unit _relTX = sin(_dir2)*_safedist; _relTY = cos(_dir2)*_safedist; // go either left or right (depending on location of fatality - or randomly if no fatality) _sinU=_sin90; _cosU=_cos90; _sinT=_sin270; _cosT=_cos270; if ((_dd<0 && _dd>-180) || (_dd==0 && (random 1)>.5)) then {_sinU=_sin270; _cosU=_cos270; _sinT=_sin90; _cosT=_cos90}; // avoidance position (right or left of unit) _avoidX = _currX + _cosU*_relUX - _sinU*_relUY; _avoidY = _currY + _sinU*_relUX + _cosU*_relUY; _avoidPos = [_avoidX,_avoidY]; // flanking position (right or left of target) _flankX = _bluX + _cosT*_relTX - _sinT*_relTY; _flankY = _bluY + _sinT*_relTX + _cosT*_relTY; _flankPos = [_flankX,_flankY]; // final target position _attackPos = _bluPos; // for now we're stepping a bit to the side _targetPos = _avoidPos; _react=0; _fightmode="fight"; _fm=1; if (KRON_UPS_Debug==3) then { KRON_HQ globalChat format["%1 approaching target",_npc]; "dead" setmarkerpos _hitPos; "avoid" setmarkerpos _avoidPos; "flank" setmarkerpos _flankPos; "target" setmarkerpos _bluPos; }; _newpos=true; }; }; sleep .1; if !(_newpos) then { // calculate new distance // if we're waiting at a waypoint, no calculating necessary if (_waiting<=0) then { // distance to target _dist = [_currPos,_targetPos] call VBS_distancePosSqr; if (KRON_UPS_Debug==1) then {KRON_HQ globalChat format["[%1] dist:%2, lastd:%3, moved:%4, lastm1:%5, lastm2:%6, mode:%7",_grpidx,round(_dist),round(_lastdist),round(_moved),round(_lastmove1),round(_lastmove2),_fightmode];}; if (_lastdist==0) then {_lastdist=_dist}; _moved = abs(_dist-_lastdist); // adjust the target tolerance for fast moving vehicles if (_moved>_maxmove) then {_maxmove=_moved; if ((_maxmove/40) > _closeenough) then {_closeenough=_maxmove/40}}; if (KRON_UPS_Debug==2) then {KRON_HQ globalChat format["[%1] dist:%2, moved:%3, tol:%4, mode:%5",_grpidx,_dist,_maxmove,_closeenough,_fightmode];}; // how much did we move in the last three cycles? _totmove=_moved+_lastmove1+_lastmove2; _damm = damage _npc; // is our damage changing (increasing)? _dammchg = abs(_damm - _lastdamm); // we're either close enough, seem to be stuck, or are getting damaged, so find a new target if ((_dist<=_closeenough) || (_totmove<.2) || (_dammchg>0.01) || (_timeontarget>180)) then {_makenewtarget=true;}; // in 'attack (approach) mode', so follow the flanking path (don't make it too predictable though) if ((_fightmode!="walk") && (_dist<=_closeenough)) then { if ((random 1)<.95) then { if (_flankPos select 0!=0) then { _targetPos=_flankPos; _flankPos=[0,0]; _makenewtarget=false; _newpos=true; if (KRON_UPS_Debug==1) then {KRON_HQ globalChat format ["[%1] flanking",_grpidx]}; _fm=1; } else { if (_attackPos select 0!=0) then { _targetPos=_attackPos; _attackPos=[0,0]; _makenewtarget=false; _newpos=true; if (KRON_UPS_Debug==1) then {KRON_HQ globalChat format ["[%1] attacking",_grpidx]}; _fm=2; }; }; }; }; sleep .1; // make new target if (_makenewtarget) then { if (KRON_UPS_Debug==1) then {KRON_HQ globalChat format["[%1] new target (%2)",_grpidx,_waiting];}; // re-read marker position/size _centerpos = getMarkerPos _areamarker; _centerX = abs(_centerpos select 0); _centerY = abs(_centerpos select 1); _areasize = getMarkerSize _areamarker; _rangeX = _areasize select 0; _rangeY = _areasize select 1; // find a new target that's not too close to the current position _targetPos=_currPos; _tries=0; while {((([_currPos,_targetPos] call VBS_distancePosSqr) < _mindist)) && (_tries<20)} do { _tries=_tries+1; // generate new target position (on the road) _road=0; while {_road<20} do { _targetPos=[_centerX,_centerY,_rangeX,_rangeY,_cosdir,_sindir,_areadir] call KRON_randomPos; _road=[_targetPos,_road] call KRON_OnRoad; sleep .1; }; if (KRON_UPS_Debug==1) then {KRON_HQ globalChat format["[%1] new pos:%2,%3, dist:%4 (%5)",_grpidx,_road,_targetPos,([_currPos,_targetPos] call VBS_distancePosSqr),_mindist];}; }; _avoidPos = [0,0]; _flankPos = [0,0]; _attackPos = [0,0]; _gothit=false; _fightmode="walk"; _fm=0; _npc setspeedmode _defspeed; _newpos=true; // if we're waiting at patrol end points then don't create a new target right away. Keep cycling though to check for enemy encounters if ((_pause!="NOWAIT") && (_waiting<0)) then {_waiting = (15 + random 20)}; }; }; }; sleep .1; _waiting = _waiting - _cycle; if ((_waiting<=0) && _newpos) then { if (KRON_UPS_Debug==1) then { KRON_HQ globalChat format["[%1] move to new position",_grpidx]; //mrk setPos _targetPos; }; // tell unit about new target position //if (_fightmode=="walk") then {{_x move _targetPos} foreach _members} else {{_x domove _targetPos} foreach _members}; if (_fightmode=="walk") then {_npc move _targetPos} else {_npc domove _targetPos}; if (_track=="TRACK") then { switch (_fm) do { case 1: {_destname setmarkerSize [.4,.4]}; case 2: {_destname setmarkerSize [.6,.6]}; default {_destname setmarkerSize [.5,.5]}; }; _destname setMarkerPos _targetPos; }; _dist=0; _moved=0; _lastmove1=10; _timeontarget=0; _waiting=-1; _newpos=false; }; // move on _lastdist = _dist; _lastmove2 = _lastmove1; _lastmove1 = _moved; _lastdamm = _damm; // check external loop switch _cont = (call compile format ["KRON_UPS_%1",_npcname]); if (_cont==0) then {_exit=true}; _makenewtarget=false; if ((_exit) || (isNil("_npc"))) then { _loop=1; } else { sleep _cycle; }; }; if !(isNil("_npc")) then { {doStop _x; _x domove getPos _x; _x move getPos _x} forEach _members; }; if (KRON_UPS_Debug>0) then { KRON_HQ globalChat format["%1 (%3) exited (%2th)",_npc,KRON_UPS_Exited,_grpname];}; KRON_UPS_Exited=KRON_UPS_Exited+1; if (_track=="TRACK") then { _trackername setMarkerType "WTF_Dotbluforkill"; _destname setMarkerType "Empty"; }; _friends=nil; _enemies=nil; //ArmA - crate_bis1.sqs v1.0 by sb_at_6thSense.eu, 6th Sense - Share the Spirit _gun = _this select 0; _ao = _this select 1; if(format["%1",_ao]==scalar)then{_ao=false}; clearweaponcargo _gun; clearmagazinecargo _gun; if(not _ao)then { _gun AddWeaponCargo ["MakarovSD", 4]; _gun AddWeaponCargo ["Makarov", 4]; _gun AddWeaponCargo ["M9SD", 4]; _gun AddWeaponCargo ["M9", 4]; _gun AddWeaponCargo ["AKS74UN", 4]; _gun AddWeaponCargo ["AKS74U", 4]; _gun AddWeaponCargo ["AK74GL", 4]; _gun AddWeaponCargo ["AK74", 4]; _gun AddWeaponCargo ["MP5SD", 4]; _gun AddWeaponCargo ["MP5A5", 4]; _gun AddWeaponCargo ["G36a", 4]; _gun AddWeaponCargo ["G36C", 4]; _gun AddWeaponCargo ["G36K", 4]; _gun AddWeaponCargo ["M4A1SD", 4]; _gun AddWeaponCargo ["M4A1GL", 4]; _gun AddWeaponCargo ["M4A1", 4]; _gun AddWeaponCargo ["M4SPR", 4]; _gun AddWeaponCargo ["M4AIM", 4]; _gun AddWeaponCargo ["M4GL", 4]; _gun AddWeaponCargo ["M4", 4]; _gun AddWeaponCargo ["M16A2GL", 4]; _gun AddWeaponCargo ["M16A2", 4]; }; _gun AddMagazineCargo ["8Rnd_9x18_MakarovSD", 8]; _gun AddMagazineCargo ["8Rnd_9x18_Makarov", 8]; _gun AddMagazineCargo ["15Rnd_9x19_M9SD", 8]; _gun AddMagazineCargo ["15Rnd_9x19_M9", 8]; _gun AddMagazineCargo ["10Rnd_762x54_SVD", 8]; _gun AddMagazineCargo ["5Rnd_762x51_M24", 8]; _gun AddMagazineCargo ["100Rnd_762x54_PK", 8]; _gun AddMagazineCargo ["100Rnd_762x51_M240", 8]; _gun AddMagazineCargo ["200Rnd_556x45_M249", 8]; _gun AddMagazineCargo ["30Rnd_545x39_AKSD", 8]; _gun AddMagazineCargo ["30Rnd_545x39_AK", 8]; _gun AddMagazineCargo ["30Rnd_9x19_MP5SD", 8]; _gun AddMagazineCargo ["30Rnd_9x19_MP5", 8]; _gun AddMagazineCargo ["30Rnd_556x45_G36", 8]; _gun AddMagazineCargo ["30Rnd_556x45_StanagSD", 8]; _gun AddMagazineCargo ["30Rnd_556x45_Stanag", 8]; _gun AddMagazineCargo ["20Rnd_556x45_Stanag", 8]; //ArmA - crate_bisall.sqs v1.0 by sb_at_6thSense.eu, 6th Sense - Share the Spirit _gun = _this select 0; _ao = _this select 1; if(format["%1",_ao]==scalar)then{_ao=false}; clearweaponcargo _gun; clearmagazinecargo _gun; if(not _ao)then { _gun AddWeaponCargo ["SVD", 4]; _gun AddWeaponCargo ["M24", 4]; _gun AddWeaponCargo ["PK", 4]; _gun AddWeaponCargo ["M240", 4]; _gun AddWeaponCargo ["M249", 4]; }; _gun AddMagazineCargo ["10Rnd_762x54_SVD", 8]; _gun AddMagazineCargo ["5Rnd_762x51_M24", 8]; _gun AddMagazineCargo ["100Rnd_762x54_PK", 8]; _gun AddMagazineCargo ["100Rnd_762x51_M240", 8]; _gun AddMagazineCargo ["200Rnd_556x45_M249", 8];//ArmA - crate_bis3.sqs v1.0 by sb_at_6thSense.eu, 6th Sense - Share the Spirit _gun = _this select 0; _ao = _this select 1; if(format["%1",_ao]==scalar)then{_ao=false}; clearweaponcargo _gun; clearmagazinecargo _gun; if(not _ao)then { _gun AddWeaponCargo ["Laserdesignator", 4]; _gun AddWeaponCargo ["Strela", 4]; _gun AddWeaponCargo ["RPG7V", 4]; _gun AddWeaponCargo ["Stinger", 4]; _gun AddWeaponCargo ["Javelin", 4]; _gun AddWeaponCargo ["M136", 4]; }; _gun AddMagazineCargo ["Strela", 8]; _gun AddMagazineCargo ["PG7VR", 8]; _gun AddMagazineCargo ["PG7V", 8]; _gun AddMagazineCargo ["Stinger", 8]; _gun AddMagazineCargo ["Javelin", 8]; _gun AddMagazineCargo ["M136", 8]; //ArmA - crate_bis4.sqs v1.0 by sb_at_6thSense.eu, 6th Sense - Share the Spirit _gun = _this select 0; _ao = _this select 1; if(format["%1",_ao]==scalar)then{_ao=false}; clearweaponcargo _gun; clearmagazinecargo _gun; if(not _ao)then { _gun AddWeaponCargo ["NVGoggles", 4]; _gun AddWeaponCargo ["Binocular", 4]; }; _gun AddMagazineCargo ["SmokeShellRed", 8]; _gun AddMagazineCargo ["SmokeShellGreen", 8]; _gun AddMagazineCargo ["SmokeShell", 8]; _gun AddMagazineCargo ["HandGrenadeTimed", 8]; _gun AddMagazineCargo ["HandGrenade", 8]; _gun AddMagazineCargo ["FlareWhite_M203", 8]; _gun AddMagazineCargo ["FlareGreen_M203", 8]; _gun AddMagazineCargo ["FlareRed_M203", 8]; _gun AddMagazineCargo ["FlareYellow_M203", 8]; _gun AddMagazineCargo ["1Rnd_HE_M203", 8]; _gun AddMagazineCargo ["FlareWhite_GP25", 8]; _gun AddMagazineCargo ["FlareGreen_GP25", 8]; _gun AddMagazineCargo ["FlareRed_GP25", 8]; _gun AddMagazineCargo ["FlareYellow_GP25", 8]; _gun AddMagazineCargo ["1Rnd_HE_GP25", 8]; _gun AddMagazineCargo ["Mine", 8]; _gun AddMagazineCargo ["MineE", 8]; _gun AddMagazineCargo ["TimeBomb", 8]; _gun AddMagazineCargo ["PipeBomb", 8]; //ArmA - crate_bisall.sqs v1.0 by sb_at_6thSense.eu, 6th Sense - Share the Spirit _gun = _this select 0; _ao = _this select 1; if(format["%1",_ao]==scalar)then{_ao=false}; clearweaponcargo _gun; clearmagazinecargo _gun; if(not _ao)then { _gun AddWeaponCargo ["MakarovSD", 4]; _gun AddWeaponCargo ["Makarov", 4]; _gun AddWeaponCargo ["M9SD", 4]; _gun AddWeaponCargo ["M9", 4]; _gun AddWeaponCargo ["SVD", 4]; _gun AddWeaponCargo ["M24", 4]; _gun AddWeaponCargo ["PK", 4]; _gun AddWeaponCargo ["M240", 4]; _gun AddWeaponCargo ["M249", 4]; _gun AddWeaponCargo ["AKS74UN", 4]; _gun AddWeaponCargo ["AKS74U", 4]; _gun AddWeaponCargo ["AK74GL", 4]; _gun AddWeaponCargo ["AK74", 4]; _gun AddWeaponCargo ["MP5SD", 4]; _gun AddWeaponCargo ["MP5A5", 4]; _gun AddWeaponCargo ["G36a", 4]; _gun AddWeaponCargo ["G36C", 4]; _gun AddWeaponCargo ["G36K", 4]; _gun AddWeaponCargo ["M4A1SD", 4]; _gun AddWeaponCargo ["M4A1GL", 4]; _gun AddWeaponCargo ["M4A1", 4]; _gun AddWeaponCargo ["M4SPR", 4]; _gun AddWeaponCargo ["M4AIM", 4]; _gun AddWeaponCargo ["M4GL", 4]; _gun AddWeaponCargo ["M4", 4]; _gun AddWeaponCargo ["M16A2GL", 4]; _gun AddWeaponCargo ["M16A2", 4]; _gun AddWeaponCargo ["Laserdesignator", 4]; _gun AddWeaponCargo ["Strela", 4]; _gun AddWeaponCargo ["RPG7V", 4]; _gun AddWeaponCargo ["Stinger", 4]; _gun AddWeaponCargo ["Javelin", 4]; _gun AddWeaponCargo ["M136", 4]; _gun AddWeaponCargo ["NVGoggles", 4]; _gun AddWeaponCargo ["Binocular", 4]; }; _gun AddMagazineCargo ["SmokeShellRed", 8]; _gun AddMagazineCargo ["SmokeShellGreen", 8]; _gun AddMagazineCargo ["SmokeShell", 8]; _gun AddMagazineCargo ["HandGrenadeTimed", 8]; _gun AddMagazineCargo ["HandGrenade", 8]; _gun AddMagazineCargo ["FlareWhite_M203", 8]; _gun AddMagazineCargo ["FlareGreen_M203", 8]; _gun AddMagazineCargo ["FlareRed_M203", 8]; _gun AddMagazineCargo ["FlareYellow_M203", 8]; _gun AddMagazineCargo ["1Rnd_HE_M203", 8]; _gun AddMagazineCargo ["FlareWhite_GP25", 8]; _gun AddMagazineCargo ["FlareGreen_GP25", 8]; _gun AddMagazineCargo ["FlareRed_GP25", 8]; _gun AddMagazineCargo ["FlareYellow_GP25", 8]; _gun AddMagazineCargo ["1Rnd_HE_GP25", 8]; _gun AddMagazineCargo ["Mine", 8]; _gun AddMagazineCargo ["MineE", 8]; _gun AddMagazineCargo ["TimeBomb", 8]; _gun AddMagazineCargo ["PipeBomb", 8]; _gun AddMagazineCargo ["8Rnd_9x18_MakarovSD", 8]; _gun AddMagazineCargo ["8Rnd_9x18_Makarov", 8]; _gun AddMagazineCargo ["15Rnd_9x19_M9SD", 8]; _gun AddMagazineCargo ["15Rnd_9x19_M9", 8]; _gun AddMagazineCargo ["10Rnd_762x54_SVD", 8]; _gun AddMagazineCargo ["5Rnd_762x51_M24", 8]; _gun AddMagazineCargo ["100Rnd_762x54_PK", 8]; _gun AddMagazineCargo ["100Rnd_762x51_M240", 8]; _gun AddMagazineCargo ["200Rnd_556x45_M249", 8]; _gun AddMagazineCargo ["30Rnd_545x39_AKSD", 8]; _gun AddMagazineCargo ["30Rnd_545x39_AK", 8]; _gun AddMagazineCargo ["30Rnd_9x19_MP5SD", 8]; _gun AddMagazineCargo ["30Rnd_9x19_MP5", 8]; _gun AddMagazineCargo ["30Rnd_556x45_G36", 8]; _gun AddMagazineCargo ["30Rnd_556x45_StanagSD", 8]; _gun AddMagazineCargo ["30Rnd_556x45_Stanag", 8]; _gun AddMagazineCargo ["20Rnd_556x45_Stanag", 8]; _gun AddMagazineCargo ["Strela", 8]; _gun AddMagazineCargo ["PG7VR", 8]; _gun AddMagazineCargo ["PG7V", 8]; _gun AddMagazineCargo ["Stinger", 8]; _gun AddMagazineCargo ["Javelin", 8]; _gun AddMagazineCargo ["M136", 8];//ArmA - crate_bisEsmallveh.sqs v1.0 by sb_at_6thSense.eu, 6th Sense - Share the Spirit _gun = _this select 0; _ao = _this select 1; if(format["%1",_ao]==scalar)then{_ao=false}; clearweaponcargo _gun; clearmagazinecargo _gun; if(not _ao)then { _gun AddWeaponCargo ["AK74", 2]; _gun AddWeaponCargo ["AK74GL", 2]; }; _gun AddMagazineCargo ["30Rnd_545x39_AK", 6]; _gun AddMagazineCargo ["PG7VR", 2]; _gun AddMagazineCargo ["PipeBomb", 1]; _gun AddMagazineCargo ["1Rnd_HE_GP25", 3]; _gun AddWeaponCargo ["NVGoggles", 2]; _gun AddWeaponCargo ["Binocular", 2]; //ArmA - crate_bisEveh.sqs v1.0 by sb_at_6thSense.eu, 6th Sense - Share the Spirit _gun = _this select 0; _ao = _this select 1; if(format["%1",_ao]==scalar)then{_ao=false}; clearweaponcargo _gun; clearmagazinecargo _gun; if(not _ao)then { _gun AddWeaponCargo ["AK74", 2]; _gun AddWeaponCargo ["AK74GL", 2]; _gun AddWeaponCargo ["RPG7V", 2]; }; _gun AddMagazineCargo ["30Rnd_545x39_AK", 8]; _gun AddMagazineCargo ["PG7VR", 4]; _gun AddMagazineCargo ["PipeBomb", 2]; _gun AddMagazineCargo ["1Rnd_HE_GP25", 6]; _gun AddWeaponCargo ["NVGoggles", 4]; _gun AddWeaponCargo ["Binocular", 4]; //ArmA - crate_bisWsmallveh.sqs v1.0 by sb_at_6thSense.eu, 6th Sense - Share the Spirit _gun = _this select 0; _ao = _this select 1; if(format["%1",_ao]==scalar)then{_ao=false}; clearweaponcargo _gun; clearmagazinecargo _gun; if(not _ao)then { _gun AddWeaponCargo ["M4GL", 2]; _gun AddWeaponCargo ["M136", 2]; }; _gun AddMagazineCargo ["30Rnd_556x45_Stanag", 6]; _gun AddMagazineCargo ["M136", 2]; _gun AddMagazineCargo ["PipeBomb", 1]; _gun AddMagazineCargo ["1Rnd_HE_M203", 3]; _gun AddWeaponCargo ["NVGoggles", 2]; _gun AddWeaponCargo ["Binocular", 2]; //ArmA - crate_bisWveh.sqs v1.0 by sb_at_6thSense.eu, 6th Sense - Share the Spirit _gun = _this select 0; _ao = _this select 1; if(format["%1",_ao]==scalar)then{_ao=false}; clearweaponcargo _gun; clearmagazinecargo _gun; if(not _ao)then { _gun AddWeaponCargo ["M4GL", 2]; _gun AddWeaponCargo ["G36K", 2]; _gun AddWeaponCargo ["M136", 2]; }; _gun AddMagazineCargo ["30Rnd_556x45_Stanag", 8]; _gun AddMagazineCargo ["M136", 4]; _gun AddMagazineCargo ["PipeBomb", 2]; _gun AddMagazineCargo ["1Rnd_HE_M203", 6]; _gun AddWeaponCargo ["NVGoggles", 4]; _gun AddWeaponCargo ["Binocular", 4]; // ========================================================================================================= // BAS f - noTeamKill // Version: 0-5-0 (2007-01-08) // Author: Kronzky (www.kronzky.info / kronzky@gmail.com) // ========================================================================================================= // // Immediately punishes an illegal kill or injury by applying the same level of injury // to the shooter as the victim received. // (e.g. If the victim is only injured, the shooter will incur an injury. // If the victim is killed, the shooter will die as well) // // A weapons blow-back is simulated to make the self-injury seem somewhat plausible. // // The effect works with team-kills caused by guns, grenades and satchels. // It does not work if victim is run over with a vehicle. // // ========================================================================================================= // // Call syntax: x=[] execVM "noTeamKill.sqf" // // By default, only team members are protected. // If you want to protect team members AND civilians call the script with x=["TC"] execVM "noTeamKill.sqf". // If you want to protect ONLY civilians call the script with x=["C"] execVM "noTeamKill.sqf". // // If the function is called with the parameter "NOBOOM", (e.g. x=["C","NOBOOM"] execVM "noTeamKill.sqf") // there will be no "blow-back" explosion. // // If the function is called with the parameter "DISARM", (e.g. x=["TC","DISARM"] execVM "noTeamKill.sqf") // the shooter will also lose his weapon upon a TK violation. // // If the function is called with the parameter "NODAM", (e.g. x=["TC","NODAM"] execVM "noTeamKill.sqf") // the shooter will not receive damage to himself (the blow-back explosion will also be disabled). // // If the function is called with the parameter "NOMSG", (e.g. x=["NOBOOM","NOMSG"] execVM "noTeamKill.sqf") // the will be no hint message when a team killer is penalized. // // ========================================================================================================= // is script called from server? _init=false; if ((local BAS_Server_Logic) || (isNull player)) then {_init=true}; _abort=false; // in case variable hasn't been defined if (isNil ("f_var_debugMode")) then {f_var_debugMode=0}; // switch not implemented yet f_var_noTeamKill=true; //if (isNil ("f_var_noTeamKill")) then {f_var_noTeamKill=false; _init=false; _abort=true}; _allTKUnits=[]; // if it's a player joining (JIP), then only protect him if (!_init && !_abort) then { _unit = player; if (f_var_debugMode==1) then {hint format["JIP:%1",_unit]}; _allTKUnits = [_unit]; }; // handle the different reactions to violations _msg = "hint format [""%1!"",localize ""STR_f_NOTK_Message""];"; if (((_this find "NOMSG")!=-1) || ((_this find "nomsg")!=-1)) then { _msg = ""; }; _boom = """G_30mm_HE"" createvehicle [getpos _u select 0, getpos _u select 1, _z];"; if (((_this find "NOBOOM")!=-1) || ((_this find "noboom")!=-1)) then { _boom = ""; }; _disarm = ""; if (((_this find "DISARM")!=-1) || ((_this find "disarm")!=-1)) then { _disarm = "removeallweapons _u;"; }; _damage = "_u setdamage _d"; if (((_this find "NODAM")!=-1) || ((_this find "nodam")!=-1)) then { _damage = ""; _boom = ""}; call compile format["BAS_PENALTY = {private['_u','_b','_d','_z']; _u=_this select 0; _b=_this select 1; _d=_this select 2; _z=-10+_b*5; %1; %2; %3; %4};",_msg,_boom,_disarm,_damage]; BAS_prot = ""; // determine protection scope if (((_this find "TC")!=-1) || ((_this find "tc")!=-1) || ((_this find "CT")!=-1) || ((_this find "ct")!=-1)) then {BAS_prot="TC";}; if (((_this find "C")!=-1) || ((_this find "c")!=-1)) then {BAS_prot="C";}; if (_init) then { // find all relevant units on the map (via temporary, large trigger) _trg = createTrigger ["EmptyDetector", [5000, 5000, 0]]; if (BAS_prot=="C") then { _trg setTriggerActivation ["CIV", "PRESENT", true]; } else { _trg setTriggerActivation ["ANY", "PRESENT", true]; }; _trg setTriggerArea [20000, 20000, 0, false]; _trg setTriggerStatements ["this", "", ""]; sleep 1; BAS_allTKUnits = list _trg; sleep .1; _allTKUnits = BAS_allTKUnits; if (f_var_debugMode==1) then {hint format ["server:%1=%2\n%3:%4",BAS_prot,_allTKUnits,player,(local BAS_Server_Logic)]}; // remove the trigger deletevehicle _trg; }; // assign event handlers for being hit and being killed { if ("Man" countType [_x]>0) then { if ((BAS_prot == "TC") || (BAS_prot == "C")) then { if (f_var_debugMode==1) then {player sidechat format["%1 (%2) hit protection (%3)",_x,name _x,BAS_prot]}; _x addEventHandler ["hit", {_k=_this select 1; if (f_var_noTeamKill && isPlayer _k) then {_v=_this select 0; if ((_v!=_k) && ((side _v==civilian) || (side _v==side _k))) then {[_k,0,(damage _k + damage _v)] call BAS_PENALTY}}}]; } else { if (f_var_debugMode==1) then {player sidechat format["%1 (%2) hit protection (%3)",_x,name _x,BAS_prot]}; _x addEventHandler ["hit", {_k=_this select 1; if (f_var_noTeamKill && isPlayer _k) then {_v=_this select 0; if ((_v!=_k) && (side _v==side _k)) then {[_k,0,(damage _k + damage _v)] call BAS_PENALTY}}}]; }; _side = side _x; switch (_side) do { case civilian: { if ((BAS_prot == "TC") || (BAS_prot == "C")) then { if (f_var_debugMode==1) then {player sidechat format["%1 (c:%2) kill protection (%3)",_x,name _x,BAS_prot]}; _x addEventHandler ["killed", {_k=_this select 1; if (f_var_noTeamKill && isPlayer _k) then {_v=_this select 0; if (_v!=_k) then {[_k,1,1] call BAS_PENALTY}}}]; } else { if (f_var_debugMode==1) then {player sidechat format["%1 (c:%2) kill protection (%3)",_x,name _x,BAS_prot]}; _x addEventHandler ["killed", {_k=_this select 1; if (f_var_noTeamKill && isPlayer _k) then {_v=_this select 0; if ((_v!=_k) && (side _k==civilian)) then {[_k,1,1] call BAS_PENALTY}}}]; }; }; case east: { if (f_var_debugMode==1) then {player sidechat format["%1 (e:%2) kill protection (%3)",_x,name _x,BAS_prot]}; _x addEventHandler ["killed", {_k=_this select 1; if (f_var_noTeamKill && isPlayer _k) then {_v=_this select 0; if ((_v!=_k) && (side _k==east)) then {[_k,1,1] call BAS_PENALTY}}}]; }; case west: { if (f_var_debugMode==1) then {player sidechat format["%1 (w:%2) kill protection (%3)",_x,name _x,BAS_prot]}; _x addEventHandler ["killed", {_k=_this select 1; if (f_var_noTeamKill && isPlayer _k) then {_v=_this select 0; if ((_v!=_k) && (side _k==west)) then {[_k,1,1] call BAS_PENALTY}}}]; }; case resistance: { if (f_var_debugMode==1) then {player sidechat format["%1 (r:%2) kill protection (%3)",_x,name _x,BAS_prot]}; _x addEventHandler ["killed", {_k=_this select 1; if (f_var_noTeamKill && isPlayer _k) then {_v=_this select 0; if ((_v!=_k) && (side _k==resistance)) then {[_k,1,1] call BAS_PENALTY}}}]; }; }; }; } forEach _allTKUnits; /////////////////////////////////////////////////////////// // ArmA - fnDomove.sqf v0.1 - By Sickboy (sb_at_6thSense.eu) // Call with [position,[leader1,leader2,leader3,leader4...]] /////////////////////////////////////////////////////////// private ["_pos"]; _pos=_this select 0; {_x domove _pos} foreach (_this select 1);/////////////////////////////////////////////////////////// // ArmA - fnDomove.sqf v0.1 - By Sickboy (sb_at_6thSense.eu) // Call with [position,[leader1,leader2,leader3,leader4...]] /////////////////////////////////////////////////////////// private ["_pos"]; _pos = _this select 0; {_x domove _pos} foreach (_this select 1);/////////////////////////////////////////////////////////// // ArmA - fnNetSend.sqf by Sickboy (sb_at_6thSense.eu) // Input - Array: [0(server) or 1(all clients) or 2(server+all clients),"string to execute"] // Output - Only in debug it will output a sidechat /////////////////////////////////////////////////////////// private ["_c","_t"]; _t = _this select 0; _c = _this select 1; if((format["%1",_c] != scalar) && (_t >= 0) && (_t <= 2)) then { if(SIX_DEBUG_MISS&&six_isClient) then { player sidechat format["Function Executing: %1, Sent to: %2",_c,_t] }; switch (_t) do { case 0: { // Server-only six_str2 = _c; six_bc2 = true; publicvariable "six_str2";publicVariable "six_bc2"; }; case 1: { // All Clients-only six_str1 = _c; six_bc1 = true; publicvariable "six_str1";publicVariable "six_bc1"; }; case 2: { // Server+All Clients six_str1 = _c;six_str2 = _c; six_bc1 = true;six_bc2 = true; publicvariable "six_str1";publicVariable "six_bc1"; publicvariable "six_str2";publicVariable "six_bc2"; }; }; } else { if(SIX_DEBUG_MISS&&six_isClient) then { player sidechat "Function Executing failed, invalid string or destination" }; }; /////////////////////////////////////////////////////////// // ArmA - fnPlayers.sqf by Sickboy (sb_at_6thSense.eu) // Input - Array with playernames as strings // Output - Array with alive playernames as objects /////////////////////////////////////////////////////////// private ["_y","_f","_r","_v","_g"]; _r = []; { _y = call compile _x; _f = format["%1",_y]; if ((_f != scalar) && (_f != "")) then { _v = call compile format["%1_dc",_x]; _g = format["%1",_v]; if(_g == scalar) then { _v = 0 }; if ((alive _y)&&(_v <= MAP_respRC)) then { _r = _r + [_y] }; }; } foreach _this; _r// fRndSelect.sqf by Terox, part of tx_utils for OFP private ["_list","_ntotal","_rnd","_result","_target"]; _list=_this; _ntotal=count _list; _rnd=random(_ntotal); _result=_rnd - ((_rnd) mod (1)); if (_result==_ntotal) then {_result=_result-1}; _target=_list select _result; _target/////////////////////////////////////////////////////////// // ArmA - fnSendmove.sqf v0.1 - By Sickboy (sb_at_6thSense.eu) // Call with [destination,position,[leader1,leader2,leader3,leader4...]] /////////////////////////////////////////////////////////// private ["_u"]; _u = _this select 2; if((count _u) > 0) then { call compile format["[%3,""[%1,%2] call six_fn_Domove""] call six_fn_Netsend",_this select 1,_u,_this select 0] };private ["_result","_GrandeLettre","_PetiteLettre","_Chiffre", "_Chiffrestring","_Pos","_ArrayMajuscForGrid","_ArrayMinusForGrid " ]; _ArrayMajuscForGrid = ["A","B","C","D","E","F","G","H","I","J"]; _ArrayMinusForGrid = ["a","b","c","d","e","f","g","h","i","j"]; _Pos = _This select 0; _Chiffrestring =""; _result = ""; _GrandeLettre = (((_Pos select 0) - ((_Pos select 0) Mod 1280))/1280); _PetiteLettre =((((_Pos select 0) Mod 1280)- (((_Pos select 0) Mod 1280)Mod 128))/128); _Chiffre = (99 - ((_Pos select 1) - ((_Pos select 1) Mod 128))/128); _Chiffrestring = Format["%1",_Chiffre]; If (_Chiffre < 10) then {_Chiffrestring = "0" + _Chiffrestring }; _result = ((_ArrayMajuscForGrid select _GrandeLettre) + ( _ArrayMinusForGrid select _PetiteLettre) +_Chiffrestring); _result /////////////////////////////////////////////////////////// // ArmA - fnNetSend.sqf by Sickboy (sb_at_6thSense.eu) // Input - Array: [0(server) or 1(all clients) or 2(server+all clients),"string to execute"] // Output - Only in debug it will output a sidechat /////////////////////////////////////////////////////////// private ["_c","_t"]; _t=_this select 0; _c=_this select 1; if((format["%1",_c]!=scalar)&&(_t>=0)&&(_t<=2))then { if(SIX_DEBUG_MISS&&six_isClient)then{player sidechat format["Function Executing: %1, Sent to: %2",_c,_t]}; switch (_t) do { case 0: { // Server-only six_str2=_c; six_bc2=true; publicvariable "six_str2";publicVariable "six_bc2"; }; case 1: { // All Clients-only six_str1=_c; six_bc1=true; publicvariable "six_str1";publicVariable "six_bc1"; }; case 2: { // Server+All Clients six_str1=_c;six_str2=_c; six_bc1=true;six_bc2=true; publicvariable "six_str1";publicVariable "six_bc1"; publicvariable "six_str2";publicVariable "six_bc2"; }; }; } else { if(SIX_DEBUG_MISS&&six_isClient)then{player sidechat "Function Executing failed, invalid string or destination"}; }; /////////////////////////////////////////////////////////// // ArmA - fnPlayers.sqf by Sickboy (sb_at_6thSense.eu) // Input - Array with playernames as strings // Output - Array with alive playernames as objects /////////////////////////////////////////////////////////// private ["_y","_f","_r","_v","_g"]; _r = []; { _y = call compile _x; _f = format["%1",_y]; if ((_f != scalar) && (_f != "")) then { _v = call compile format["%1_dc",_x]; _g = format["%1",_v]; if(_g == scalar) then { _v = 0 }; if ((alive _y)&&(_v <= MAP_respRC)) then { _r = _r + [_y] }; }; } foreach _this; _r/*RANDOM INTEGER FUNCTION By General Barron Returns a random integer between two endpoints given in an array. Example: [4,1] call randomInt OR [1,4] call randomInt returns 1, 2, 3 or 4 */ private ["_upperL","_lowerL","_result"]; _lowerL = _this select 0; _upperL = _this select 1; if (_lowerL > _upperL) then {_lowerL = _this select 1; _upperL = _this select 0}; _result = ((random 1) * (1 + _upperL - _lowerL)) + _lowerL; _result = _result - (_result mod 1); _result//written by Igor Drukov (igordrukov@noos.fr) //This function works as the camsetrelpos command, except that //height is not taken into account. Input the name of the object // and the relative position to it, the function will return the //real coordinates of this relative position. //e.g.: [_myobject,0,15] call setRelPosAng will return the coordinates //of the position 15 meters ahead of the object. private ["_coordx","_coordy","_objfix","_objfixx","_objfixy","_ang","_posx","_posy","_position"]; _objfix=_this select 0; _coordx=_this select 1; _coordy=_this select 2; _objfixx=getpos _objfix select 0; _objfixy=getpos _objfix select 1; _ang = getdir _objfix ; _posx=(_coordx*cos _ang)+(_coordy*sin _ang)+_objfixx; _posy=(_coordy*cos _ang)-(_coordx*sin _ang)+_objfixy; _position=[_posx,_posy]; _position // fRndSelect.sqf by Terox, part of tx_utils for OFP private ["_list","_ntotal","_rnd","_result","_target"]; _list=_this; _ntotal=count _list; _rnd=random(_ntotal); _result=_rnd - ((_rnd) mod (1)); if(_result==_ntotal)then{_result=_result-1}; _target=_list select _result; _target/////////////////////////////////////////////////////////// // ArmA - fnSendmove.sqf v0.1 - By Sickboy (sb_at_6thSense.eu) // Call with [destination,position,[leader1,leader2,leader3,leader4...]] /////////////////////////////////////////////////////////// private ["_u"]; _u=_this select 2; if((count _u)>0)then{call compile format["[%3,""[%1,%2] call six_fDomove""] call six_fNetsend",_this select 1,_u,_this select 0]};//**************************************************** // // Shuffle array function by toadlife (version 1.01) // // http://toadlife.net // // Function: Shuffles an array's contents into random order // // Returns: array // // Initialize this fuction in your init.sqs file with this line: shuffle = preprocessFile "shuffle.sqf" // // Call this function like so: myarray call shuffle -- (Example: [1,2,3,4,5] call shuffle) // //*************************************** private ["_this","_newarray","_acount","_rand","_moveitem"]; _newarray = []; _temparray = [] + _this; while {count _temparray > 0} do { _acount = (count _temparray); _rand = random _acount; _rand = _rand - (_rand mod 1); _moveitem = _temparray select _rand; _newarray = _newarray + [_moveitem]; _temparray set [_rand, ""]; _temparray = _temparray - [""] }; _newarray ;--------------------------------- ;----------Eject1.sqs------------- ;-------By Matt Rochelle---------- ;-------------V1.0---------------- ; usage ; [nameofgroup,nameofplane] exec "nameofscript.sqs" _grp = _this select 0 _veh = _this select 1 _par = units _grp _i = 0 _j = count _par ~(random 3) #loo unassignvehicle (_par select _i) (_par select _i) action ["EJECT",_veh] _i=_i+1 ~.6 ?_j>_i:goto "loo" exit;*****BY: ACK***** ;playMusic "musicname5"; ;~3 ;playMusic "musicname1"; ;~1 #loop ~0.1 skiptime 0.0001; ~0.1 skiptime 0.0001; ~0.1 skiptime 0.0001; ~0.1 skiptime 0.0001; ~0.1 skiptime 0.0001; ~0.1 skiptime 0.0001; ~0.1 skiptime 0.0001; ~0.1 skiptime 0.0001; ~0.1 skiptime 0.0001; ~0.1 skiptime 0.0001; ~0.1 skiptime 0.0001; ~0.1 skiptime 0.0001; ~0.1 skiptime 0.0001; ~0.1 skiptime 0.0001; ~0.1 skiptime 0.0001; ~0.1 skiptime 0.001; ~0.1 skiptime 0.0001; ~0.1 skiptime 0.001; goto "loop" #exit exit; Improvised Explosive Device Script ; By Jeevz ; v1.2 12/13/06 ; This script will create an explosion of a ; selected size on any object when called ; The arguments are [objectName, explosionPower] ; Explosion Power will be 1 of 4 choices ; Small - Good for Anti-Personnel use ; Medium - Will usually disable a Humvee without killing the occupants ; Large - Will usually destroy a passing humvee and kill or severly injure all occupants, will disable the tracks and possibly engine on M1A1 ; Huge - Nothing will survive, I mean... it's HUGE :-) ; Example script call --> [theCar, "Small"] exec "IED.sqs" ;start script _theObject = _this select 0 _theExplosion = _this select 1 ;locate the Object to be blown up _bombLoc = GetPos _theObject _bombLocX = _bombLoc select 0 _bombLocY = _bombLoc select 1 _bombLocZ = _bombLoc select 2 ; Deterimine the ordinance used to create the explosion ? (_theExplosion == "Small") : _ammoType = "R_57mm_HE" ? (_theExplosion == "Medium") : _ammoType = "M_Sidewinder_AA" ? (_theExplosion == "Large") : _ammoType = "M_Sidewinder_AA" ? (_theExplosion == "Huge") : _ammoType = "Bo_GBU12_LGB" civvy1 globalchat _ammoType ; Get the explosion size and blow the object up ? (_theExplosion == "Small") : goto "SMALL" ? (_theExplosion == "Medium") : goto "MEDIUM" ? (_theExplosion == "Large") : goto "LARGE" ? (_theExplosion == "Huge") : goto "HUGE" #SMALL _ammoType createVehicle[_bombLocX, _bombLocY, _bombLocZ] _theObject setdammage 1 civvy1 globalchat "Small" exit #MEDIUM _ammoType createVehicle[_bombLocX, _bombLocY, _bombLocZ] _theObject setdammage 1 civvy1 globalchat "Medium" exit #LARGE _ammoType createVehicle[_bombLocX, _bombLocY, _bombLocZ] _ammoType createVehicle[_bombLocX, _bombLocY, _bombLocZ] _ammoType createVehicle[_bombLocX, _bombLocY, _bombLocZ] _ammoType createVehicle[_bombLocX, _bombLocY, _bombLocZ] _ammoType createVehicle[_bombLocX, _bombLocY, _bombLocZ] _ammoType createVehicle[_bombLocX, _bombLocY, _bombLocZ] _ammoType createVehicle[_bombLocX, _bombLocY, _bombLocZ] _ammoType createVehicle[_bombLocX, _bombLocY, _bombLocZ] _ammoType createVehicle[_bombLocX, _bombLocY, _bombLocZ] _ammoType createVehicle[_bombLocX, _bombLocY, _bombLocZ] _ammoType createVehicle[_bombLocX, _bombLocY, _bombLocZ] _ammoType createVehicle[_bombLocX, _bombLocY, _bombLocZ] _theObject setdammage 1 civvy1 globalchat "Large" exit #HUGE _ammoType createVehicle[_bombLocX, _bombLocY, _bombLocZ] _theObject setdammage 1 civvy1 globalchat "Huge" exit ; ============================================================================ ; Mission INIT: ; ============================================================================ hint "There Could be Some Lagg At Start" ~5 hint "Loading." ~1 hint "Loading.." ~1 hint "Loading..." ~1 hint "Loading" ~1 hint "Loading." ~1 hint "Loading.." ~1 hint "Loading..." ~1 hint "Loading" ~1 hint "Loading." ~1 hint "Loading.." ~1 hint "Loading..." ~1 hint "Loading" ~1 hint "Loading." ~1 hint "Loading.." ~1 hint "Loading..." ~1 hint "Loading" ~1 hint "Loading." ~1 hint "Loading.." ~1 hint "Loading..." ~1 hint "Loading" ~1 hint "Loading." ~1 hint "Loading.." ~1 hint "Loading..." ~1 hint "Loading" ~1 hint "Loading." ~1 hint "Loading.." ~1 hint "Loading..." ~1 hint "Loading" ~1 hint "Loading." ~1 hint "Loading.." ~1 hint "Loading..." ~1 hint "Loaded"; ***************************************************** ; ** Operation Flashpoint Script File ; ***************************************************** _player = _this select 0 _player switchmove "AinvPknlMstpSlayWrflDnon_medic" ~5 _player setdammage 0 hint "MedKit Used" _player RemoveAction 1 _player RemoveAction 123 exit;by Nightmare [SWAF] ;Nightmare@d-vogler.de ;---------------------------------------------- ?!(local Server): exit _unit = _this select 0 _Area1 = [NAV_0,NAV_1,NAV_2,NAV_3,NAV_4,NAV_5,NAV_6,NAV_7,NAV_8,NAV_9] _Area2 = [NAV_10,NAV_11,NAV_12,NAV_13,NAV_14,NAV_15,NAV_16,NAV_17,NAV_18,NAV_19] _Area3 = [NAV_20,NAV_21,NAV_22,NAV_23,NAV_24,NAV_25,NAV_26,NAV_27,NAV_28,NAV_29] _Area4 = [NAV_30,NAV_31,NAV_32,NAV_33,NAV_34,NAV_35,NAV_36,NAV_37,NAV_38,NAV_39] _BigArea = _Area1 + _Area2 + _Area3 + _Area4 #again _unit setbehaviour "safe" _unit setfuel 1 _unit setspeedmode "normal" _A = random 18 _NAV = _BigArea select _A _unit move (getpos _NAV) @_unit distance _NAV < 250 ?not alive _unit : exit goto "again"; ============================================================================ ; Mission INIT: ; ============================================================================ _vehicle = _this select 0 _delay = 1 _x = random 10 _vehicle allowfleeing 0 _vehicle setbehaviour "STEALTH" _vehicle setspeedmode "FULL" #Begin _vehicle setUnitPos "AUTO" ?!(alive _vehicle):goto exit _x = random 10 ?_x <= 1 : goto "0" ?_x <= 2 : goto "1" ?_x <= 3 : goto "2" ?_x <= 4 : goto "3" ?_x <= 5 : goto "4" ?_x <= 6 : goto "5" ?_x <= 7 : goto "6" ?_x <= 8 : goto "7" ?_x <= 9 : goto "8" #0 _vehicle setUnitPos "AUTO" _vehile doTarget S1 _vehicle doFire S1 _vehicle domove [((getpos S1 select 0) + 1), ((getpos S1 select 1) - 0),((getpos S1 select 2) + 0)] ~10 ?!(alive S1):goto "Begin" ?(alive S1):goto "0" #1 _vehile doTarget S2 _vehicle doFire S2 _vehicle domove [((getpos S2 select 0) + 1), ((getpos S2 select 1) - 0),((getpos S2 select 2) + 0)] ~10 ?!(alive S2):goto "Begin" ?(alive S2):goto "1" #2 _vehile doTarget S3 _vehicle doFire S3 _vehicle domove [((getpos S3 select 0) + 1), ((getpos S3 select 1) - 0),((getpos S3 select 2) + 0)] ~10 ?!(alive S3):goto "Begin" ?(alive S3):goto "2" #3 _vehile doTarget S4 _vehicle doFire S4 _vehicle domove [((getpos S4 select 0) + 1), ((getpos S4 select 1) - 0),((getpos S4 select 2) + 0)] ~10 ?!(alive S4):goto "Begin" ?(alive S4):goto "3" #4 _vehile doTarget S5 _vehicle doFire S5 _vehicle domove [((getpos S5 select 0) + 1), ((getpos S5 select 1) - 0),((getpos S5 select 2) + 0)] ~10 ?!(alive S5):goto "Begin" ?(alive S5):goto "4" #5 _vehile doTarget S6 _vehicle doFire S6 _vehicle domove [((getpos S6 select 0) + 1), ((getpos S6 select 1) - 0),((getpos S6 select 2) + 0)] ~10 ?!(alive S6):goto "Begin" ?(alive S6):goto "5" #6 _vehile doTarget S7 _vehicle doFire S7 _vehicle domove [((getpos S7 select 0) + 1), ((getpos S7 select 1) - 0),((getpos S7 select 2) + 0)] ~10 ?!(alive S7):goto "Begin" ?(alive S7):goto "6" #7 _vehile doTarget S8 _vehicle doFire S8 _vehicle domove [((getpos S8 select 0) + 1), ((getpos S8 select 1) - 0),((getpos S8 select 2) + 0)] ~10 ?!(alive S8):goto "Begin" ?(alive S8):goto "7" #8 _vehile doTarget S9 _vehicle doFire S9 _vehicle domove [((getpos S9 select 0) + 1), ((getpos S9 select 1) - 0),((getpos S9 select 2) + 0)] ~10 ?!(alive S9):goto "Begin" ?(alive S9):goto "8" exit ; ============================================================================ ; Mission Text1: ; ============================================================================ TazmanianDevil Sidechat "... ... ..." ~5 TazmanianDevil Sidechat "... Hello ..." ~8 TazmanianDevil Sidechat "... The Russians ... Have .. Nu ... ~4 TazmanianDevil Sidechat "... Factory ... %$"ast .. " ~5 TazmanianDevil Sidechat "... ... ..."; ============================================================================ ; Mission Text1: ; ============================================================================ papabear sidechat "Roger Recon 1, We will swing the sat around eta 5min."class CfgSounds { sounds[] = {MAP_Rauschen,MAP_Ari,Funk,Ari}; class MAP_Rauschen {name="Rauschen";sound[]={\sounds\rauschen.ogg,db+20,1.0};titles[] = {};}; class MAP_Ari {name="Ari";sound[]={\sounds\ari.ogg,db+30,1.0};titles[] = {};}; class Funk {name="Funk";sound[]={\sounds\funk.ogg,db+20,1.0};titles[] = {};}; class Ari {name="Ari";sound[]={\sounds\ari.ogg,db+30,1.0};titles[] = {};}; }; ////////////////////// // STRA DEBUG // debug console for editor class stra_debug // debug console for editor { idd = 56; movingEnable = 1; onLoad = "clearradio"; class Controls { class Drag: SIX_Back { x=0.020; y=0.678; w=0.440; h=0.292; colorbackground[] = {0,0,0,0}; colortext[] = {0,0,0,0}; moving = 1; }; class SubBackground1 : RscGroupBox2 { x=0.030; y=0.688; w=0.420; h=0.110; style=128; colorBackground[] = {0.25, 0.25, 0.25, 1}; }; class SubBackground2 : RscGroupBox2 { x=0.030; y=0.805; w=0.420; h=0.095; style=128; colorBackground[] = {0.25, 0.25, 0.25, 1}; }; class TextExpression : RscText { x = 0.03; y = 0.799; w = 0.43; colorText[] = {0.75, 0.75, 0.75, 1}; text = "$STR_STRA_EXPRESSION"; }; class ValueExpression : RscEdit { IDC = 543261; style=16; x = 0.035; y = 0.834; w = 0.410; h = 0.06; colorText[] = {0.75, 0.75, 0.75, 1}; text = ""; autocomplete = "scripting"; }; class TextVariable : RscText { x = 0.03; y = 0.686; w = 0.43; colorText[] = {0.75, 0.75, 0.75, 1}; text = "$STR_STRA_VARIABLE"; }; class SelectVariable : RscEdit { IDC = 543260; x = 0.035; y = 0.725; w = 0.310; h = 0.03; colorText[] = {0.75, 0.75, 0.75, 1}; text = ""; autocomplete = "scripting"; }; class VariableValue : RscEdit { IDC = 543259; x = 0.035; y = 0.764; w = 0.310; h = 0.03; colorText[] = {0.75, 0.75, 0.75, 1}; text = ""; autocomplete = "scripting"; }; class ButtonVariableOnce : RscButton_small { idc = -1; x = 0.350; y = 0.725; w = 0.095; h = 0.03; colorText[] = {0.75, 0.75, 0.75, 1}; text = $STR_STRA_ONCE; action = """ONCE"" exec ""stra_debug\debugConsole_getVar.sqs"";"; //action = "CtrlSetText [543259, Format[{%1}, call compile (CtrlText 543260)]];"; }; class ButtonVariableLoop : RscButton_small { idc = -1; x = 0.350; y = 0.764; w = 0.095; h = 0.03; colorText[] = {0.75, 0.75, 0.75, 1}; text = $STR_STRA_LOOP; action = """LOOP"" exec ""stra_debug\debugConsole_getVar.sqs"";"; }; class ButtonExec : RscButton_small { idc = -1; x = 0.350; y = 0.904; w = 0.095; h = 0.045; colorText[] = {0.75, 0.75, 0.75, 1}; text = $STR_STRA_EXECUTE; action = "call compile (ctrlText 543261);"; default = 1; }; class ButtonPause : RscButton_small { idc = -1; x = 0.035; y = 0.904; w = 0.045; h = 0.045; colorText[] = {0.75, 0.75, 0.75, 1}; text = "||"; action = "setacctime 0; ctrlSetText [543262, localize ""STR_STRA_PAUSED""];"; }; class ButtonPlay : RscButton_small { idc = -1; x = 0.080; y = 0.904; w = 0.045; h = 0.045; colorText[] = {0.75, 0.75, 0.75, 1}; text = ">"; action = "setacctime 1; ctrlSetText [543262, "" ""];"; }; class TextPause : RscText { IDC = 543262; x = 0.15; y = 0.904; w = 0.42; h = 0.045; style = ST_CENTER; text = $STR_STRA_PAUSED; colorText[] = {1, 1, 1, 0.5}; }; class ButtonCam : RscButton_small { idc = -1; x = 0.305; y = 0.904; w = 0.045; h = 0.045; colorText[] = {0.75, 0.75, 0.75, 1}; text = "A"; action = "player exec ""camera.sqs"";showcinemaborder false;closedialog 56; setacctime 1"; //action = "stra_camexec = [] spawn {player exec ""camera.sqs"";sleep 0.01;showcinemaborder false;closedialog 56; setacctime 1}"; }; class ButtonCamReal : RscButton_small { idc = -1; x = 0.260; y = 0.904; w = 0.045; h = 0.045; colorText[] = {0.75, 0.75, 0.75, 1}; text = "B"; action = "player exec ""camera.sqs"";showcinemaborder true;closedialog 56; setacctime 1"; }; }; }; //=== Kartenausschnitt == V1.01 ==== 19.12.2006 mi2slow & Vienna =========================================== class RscMapControl { access = 0; type = 101; idc = -1; style = 48; colorBackground[] = {1.00, 1.00, 1.00, 1.00}; colorText[] = {0.00, 0.00, 0.00, 1.00}; font = "TahomaB"; sizeEx = 0.040000; // Colordefintions in RGBA colorSea[] = {0.56, 0.80, 0.98, 0.50}; colorForest[] = {0.60, 0.80, 0.20, 0.50}; colorRocks[] = {0.50, 0.50, 0.50, 0.50}; colorCountlines[] = {0.65, 0.45, 0.27, 0.50}; colorMainCountlines[] = {0.65, 0.45, 0.27, 1.00}; colorCountlinesWater[] = {0.00, 0.53, 1.00, 0.50}; colorMainCountlinesWater[] = {0.00, 0.53, 1.00, 1.00}; colorForestBorder[] = {0.40, 0.80, 0.00, 1.00}; colorRocksBorder[] = {0.50, 0.50, 0.50, 1.00}; colorPowerLines[] = {0.00, 0.00, 0.00, 1.00}; colorNames[] = {0.00, 0.00, 0.00, 1.00}; colorInactive[] = {1.00, 1.00, 1.00, 0.50}; colorLevels[] = {0.00, 0.00, 0.00, 1.00}; fontLabel = "TahomaB"; sizeExLabel = 0.02; fontGrid = "TahomaB"; sizeExGrid = 0.02; fontUnits = "TahomaB"; sizeExUnits = 0.02; fontNames = "TahomaB"; sizeExNames = 0.02; fontInfo = "TahomaB"; sizeExInfo = 0.02; fontLevel = "TahomaB"; sizeExLevel = 0.02; stickX = {0.20, {"Gamma", 1.00, 1.50} }; stickY = {0.20, {"Gamma", 1.00, 1.50} }; ptsPerSquareSea = 6; ptsPerSquareTxt = 8; ptsPerSquareCLn = 8; ptsPerSquareExp = 8; ptsPerSquareCost = 8; ptsPerSquareFor = "4.0f"; ptsPerSquareForEdge = "10.0f"; ptsPerSquareRoad = 2; ptsPerSquareObj = 10; text = "\ca\ui\data\map_background2_co.paa"; class ActiveMarker { color[] = {0.30, 0.10, 0.90, 1.00}; size = 50; }; class Bunker { icon = "\ca\ui\data\map_bunker_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 14; importance = "1.5 * 14 * 0.05"; coefMin = 0.25; coefMax = 4.00; }; class Bush { icon = "\ca\ui\data\map_bush_ca.paa"; color[] = {0.55, 0.64, 0.43, 1.00}; size = 14; importance = "0.2 * 14 * 0.05"; coefMin = 0.25; coefMax = 4.00; }; class BusStop { icon = "\ca\ui\data\map_busstop_ca.paa"; color[] = {0.00, 0.00, 1.00, 1.00}; size = 10; importance = "1 * 10 * 0.05"; coefMin = 0.25; coefMax = 4.00; }; class Command { icon = "#(argb,8,8,3)color(1,1,1,1)"; color[] = {0.00, 0.00, 0.00, 1.00}; size = 18; importance = 1.00; coefMin = 1.00; coefMax = 1.00; }; class Cross { icon = "\ca\ui\data\map_cross_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 16; importance = "0.7 * 16 * 0.05"; coefMin = 0.25; coefMax = 4.00; }; class Fortress { icon = "\ca\ui\data\map_bunker_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 16; importance = "2 * 16 * 0.05"; coefMin = 0.25; coefMax = 4.00; }; class Fuelstation { icon = "\ca\ui\data\map_fuelstation_ca.paa"; color[] = {1.00, 0.35, 0.35, 1.00}; size = 16; importance = "2 * 16 * 0.05"; coefMin = 0.75; coefMax = 4.00; }; class Fountain { icon = "\ca\ui\data\map_fountain_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 12; importance = "1 * 12 * 0.05"; coefMin = 0.25; coefMax = 4.00; }; class Hospital { icon = "\ca\ui\data\map_hospital_ca.paa"; color[] = {0.78, 0.00, 0.05, 1.00}; size = 16; importance = "2 * 16 * 0.05"; coefMin = 0.50; coefMax = 4; }; class Chapel { icon = "\ca\ui\data\map_chapel_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 16; importance = "1 * 16 * 0.05"; coefMin = 0.90; coefMax = 4.00; }; class Church { icon = "\ca\ui\data\map_church_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 16; importance = "2 * 16 * 0.05"; coefMin = 0.90; coefMax = 4.00; }; class Lighthouse { icon = "\ca\ui\data\map_lighthouse_ca.paa"; color[] = {0.78, 0.00, 0.05, 1.00}; size = 20; importance = "3 * 16 * 0.05"; coefMin = 0.90; coefMax = 4.00; }; class Quay { icon = "\ca\ui\data\map_quay_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 16; importance = "2 * 16 * 0.05"; coefMin = 0.50; coefMax = 4.00; }; class Rock { icon = "\ca\ui\data\map_rock_ca.paa"; color[] = {0.35, 0.35, 0.35, 1.00}; size = 12; importance = "0.5 * 12 * 0.05"; coefMin = 0.25; coefMax = 4.00; }; class Ruin { icon = "\ca\ui\data\map_ruin_ca.paa"; color[] = {0.78, 0.00, 0.05, 1.00}; size = 16; importance = "1.2 * 16 * 0.05"; coefMin = 1.00; coefMax = 4.00; }; class Stack { icon = "\ca\ui\data\map_stack_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 20; importance = "2 * 16 * 0.05"; coefMin = 0.90; coefMax = 4.00; }; class Tree { icon = "\ca\ui\data\map_tree_ca.paa"; color[] = {0.55, 0.64, 0.43, 1.00}; size = 12; importance = "0.9 * 16 * 0.05"; coefMin = 0.25; coefMax = 4.00; }; class SmallTree { icon = "\ca\ui\data\map_smalltree_ca.paa"; color[] = {0.55, 0.64, 0.43, 1.00}; size = 12; importance = "0.6 * 12 * 0.05"; coefMin = 0.25; coefMax = 4.00; }; class Tourism { icon = "\ca\ui\data\map_tourism_ca.paa"; color[] = {0.78, 0.00, 0.05, 1.00}; size = 16; importance = "1 * 16 * 0.05"; coefMin = 0.70; coefMax = 4.00; }; class Transmitter { icon = "\ca\ui\data\map_transmitter_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 20; importance = "2 * 16 * 0.05"; coefMin = 0.90; coefMax = 4.00; }; class ViewTower { icon = "\ca\ui\data\map_viewtower_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 16; importance = "2.5 * 16 * 0.05"; coefMin = 0.50; coefMax = 4.00; }; class Watertower { icon = "\ca\ui\data\map_watertower_ca.paa"; color[] = {0.00, 0.35, 0.70, 1.00}; size = 32; importance = "1.2 * 16 * 0.05"; coefMin = 0.90; coefMax = 4.00; }; class Waypoint { icon = "\ca\ui\data\map_waypoint_ca.paa"; color[] = {0.00, 0.00, 0.00, 1.00}; size = 24; importance = 1.00; coefMin = 1.00; coefMax = 1.00; }; class WaypointCompleted { icon = "\ca\ui\data\map_waypoint_completed_ca.paa"; color[] = {0.00, 0.00, 0.00, 1.00}; size = 24; importance = 1.00; coefMin = 1.00; coefMax = 1.00; }; }; // Define position and size of the map #define K_X 0.00 // distance from left edge #define K_Y 0.04 // distance from top edge #define K_W 1.00 // width of the map #define K_H 0.73 // height of the map // Misc values #define K_Back {0.95, 0.95, 0.95, 0.90} // background color of the map #define K_B 0.002 // thickness of the map border #define K_B_Color {0.00, 0.00, 0.00, 1.00} // color of the map border class MapBorder { idc = -1; type = 0; style = 0; colorBackground[] = K_B_Color; colorText[] = {0.00, 0.00, 0.00, 1.00}; font = "TahomaB"; sizeEx = 0.023; h = 0.02; }; class DlgQuickMap { movingEnable = true; idd = 901; controlsBackground[] = {}; objects[] = {}; controls[] = {Map, BorderLeft, BorderRight, BorderTop, BorderBottom}; class BorderLeft : MapBorder { x = K_X; y = K_Y; w = K_B; h = K_H; text = ""; }; class BorderRight : MapBorder { x = K_X + K_W - K_B; y = K_Y; w = K_B; h = K_H; text = ""; }; class BorderTop : MapBorder { x = K_X; y = K_Y; w = K_W; h = K_B * 1.33; text = ""; }; class BorderBottom : MapBorder { x = K_X; y = K_Y + K_H - K_B * 1.33; // - 0.003; w = K_W; h = K_B*1.33; // + 0.006; text = ""; }; class Map : RscMapControl { colorBackground[] = K_Back; x = K_X + K_B; y = K_Y + K_B * 1.33; w = K_W - K_B * 2; h = K_H - K_B * 2 * 1.33; default = true; }; }; //Position und Gre der 1. Karte #define K_X 0.00 //Karte Abstand vom linken Bildschirmrand #define K_Y 0.00 //Karte Abstand vom oberen Bildschirmrand #define K_W 1.00 //Karte Breite #define K_H 0.40 //Karte Hhe //Sonstiges #define K_Back {.95,.95,.95,.9} //Karte Hintergrund #define K_R 0.005 //Rahmenbreite #define K_R_Color {0,0.5,1,.9} //Rahmenfarbe class KartenRahmen {idc=-1; type= 0; style=0; colorBackground[]=K_R_Color; colorText[]={0, 0, 0, 1};font="TahomaB";sizeEx=0.023;h=0.02;}; class DlgKarte1 { movingEnable = true; idd = 901; controlsBackground[] = { }; objects[] = { }; controls[] = {Karte,RandLinks,RandRechts,RandOben,RandUnten}; class RandLinks : KartenRahmen {x=K_X; y=K_Y; w=K_R; h=K_H; text=;}; class RandRechts : KartenRahmen {x=K_X+K_W-K_R; y=K_Y; w=K_R; h=K_H; text=;}; class RandOben : KartenRahmen {x=K_X; y=K_Y; w=K_W; h=K_R; text=;}; class RandUnten : KartenRahmen {x=K_X; y=K_Y+K_H-K_R-0.003; w=K_W; h=K_R+0.006; text=;}; class Karte : RscMapControl { colorBackground[] = K_Back; x = K_X+K_R; y = K_Y+K_R; w = K_W-K_R*2; h = K_H-K_R*2; default = true; }; }; //Position und Gre der 2. Karte #define K_X2 0.30 //Karte Abstand vom linken Bildschirmrand #define K_Y2 0.03 //Karte Abstand vom oberen Bildschirmrand #define K_W2 0.40 //Karte Breite #define K_H2 0.47 //Karte Hhe class DlgKarte2 { movingEnable = true; idd = 901; controlsBackground[] = { }; objects[] = { }; controls[] = {Karte,RandLinks,RandRechts,RandOben,RandUnten}; class RandLinks : KartenRahmen {x=K_X2; y=K_Y2; w=K_R; h=K_H2; text=;}; class RandRechts : KartenRahmen {x=K_X2+K_W2-K_R; y=K_Y2; w=K_R; h=K_H2; text=;}; class RandOben : KartenRahmen {x=K_X2; y=K_Y2; w=K_W2; h=K_R; text=;}; class RandUnten : KartenRahmen {x=K_X2; y=K_Y2+K_H2-K_R-0.003; w=K_W2; h=K_R+0.006; text=;}; class Karte : RscMapControl { colorBackground[] = K_Back; x = K_X2+K_R; y = K_Y2+K_R; w = K_W2-K_R*2; h = K_H2-K_R*2; default = true; }; }; class DlgQuickMapOld { movingEnable = true; idd = 901; x = 0; y = 0; w = 1; h = 1; controlsBackground[] = { }; objects[] = { }; controls[] = {QuickMap }; class QuickMap : RscMapControl { x = 0; y = 0; w = 1; h = 1; default = true; }; }; ////// // Satelite class RscTextSat { type = CT_STATIC; idc = -1; style = ST_LEFT; h = 0.04; colorBackground[] = {0, 0, 0, 0}; colorText[] = {VB_T_LC}; font = FontS; sizeEx = 0.02; }; class RscPictureSat: RscTextSat { style = ST_PICTURE; }; // from here added by vektorboson class RscFrameSat { type = CT_STATIC; idc = -1; style = ST_FRAME; colorBackground[] = {VB_LB_STXC}; colorText[] = {VB_LB_TXC}; font = FontHTML; sizeEx = 0.02; } class RscButtonSat { type = CT_BUTTON; idc = -1; style = ST_CENTER; colorText[] = {0, 0, 0, 1}; sizeEx = 0.025; font = FontHTML; soundPush[] = { , 0.2, 1}; soundClick[] = {"ui\ui_ok", 0.2, 1}; soundEscape[] = {"ui\ui_cc", 0.2, 1}; }; // from here BIS class RscActiveTextSat { type = CT_ACTIVETEXT; style = ST_LEFT; color[] = {0, 0, 0, 1}; colorActive[] = {1, 1, 1, 1}; font = FontMAIN; sizeEx = 0.05; soundEnter[] = {"ui\ui_over", 0.2, 1}; soundPush[] = {, 0.2, 1}; soundClick[] = {"ui\ui_ok", 0.2, 1}; soundEscape[] = {"ui\ui_cc", 0.2, 1}; default = false; }; class RscActiveMenuSat : RscActiveTextSat { color[] = {1, 1, 1, 1}; colorActive[] = {1, 1, 0, 1}; font = FontTITLEHalf; sizeEx = 0.05; default = false; }; class RscSliderHSat { type = CT_SLIDER; style = ST_HPOS; color[] = {0.2, 0.2, 0.2, 1}; idc = -1; sizeEx = 0.025; }; class RscTextAnims { type = CT_STATIC; idc = -1; style = ST_LEFT; colorBackground[] = {0, 0, 0, 0}; colorText[] = {1, 1, 1, 1}; font = FontM; sizeEx = 0.04; }; class RscActiveTextAnims { type = CT_ACTIVETEXT; idc = -1; style = ST_LEFT; color[] = {0, .2, 0, 1}; colorActive[] = {1, 0, 0, 1}; colorBackground[] = {.3, 0, 0, .3}; font = FontHTML; sizeEx = 0.04; soundEnter[] = {"ui\ui_over", 0.2, 1}; soundPush[] = {, 0.2, 1}; soundClick[] = {"ui\ui_ok", 0.2, 1}; soundEscape[] = {"ui\ui_cc", 0.2, 1}; default = false; }; class RscButtonAnims { type = CT_BUTTON; idc = -1; style = ST_CENTER; colorText[] = {0, 0, 0, 1}; colorBackground[] = {.3, 0, 0, .3}; font = FontHTML; sizeEx = 0.025; soundPush[] = {, 0.2, 1}; soundClick[] = {"ui\ui_ok", 0.2, 1}; soundEscape[] = {"ui\ui_cc", 0.2, 1}; default = false; }; class RscTextTarget { type = CT_STATIC; idc = -1; style = ST_LEFT; colorBackground[] = {0, 0, 0, 0}; colorText[] = {1, 1, 1, 1}; font = FontHTML; sizeEx = 0.02; }; class RscActiveTextTarget { type = CT_ACTIVETEXT; idc = -1; style = ST_LEFT; color[] = {0.1, 0.1, 0, 1}; colorActive[] = {1, 0, 0, 1}; font = FontHTML; sizeEx = 0.04; soundEnter[] = {"ui\ui_over", 0.2, 1}; soundPush[] = {, 0.2, 1}; soundClick[] = {"ui\ui_ok", 0.2, 1}; soundEscape[] = {"ui\ui_cc", 0.2, 1}; default = false; }; class RscButtonTarget { type = CT_BUTTON; idc = -1; style = ST_CENTER; colorText[] = {0, 0, 0, 1}; font = FontHTML; sizeEx = 0.025; soundPush[] = {, 0.2, 1}; soundClick[] = {"ui\ui_ok", 0.2, 1}; soundEscape[] = {"ui\ui_cc", 0.2, 1}; default = false; }; class RscEditTarget { type = CT_EDIT; idc = -1; style = ST_LEFT; font = FontHTML; sizeEx = 0.02; colorText[] = {0, 0, 0, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; autocomplete = false; text = ; }; class RscLB_CTarget { style = ST_LEFT; idc = -1; colorSelect[] = {0.4, 0.4, 0.4, 1}; colorSelectBackground[] = {0.2, 0.2, 0.2, 1}; colorText[] = {0, 0, 0, 1}; colorBackground[] = {1, 1, 1, 1}; font = FontHTML; sizeEx = 0.02; rowHeight = 0.02; }; class RscListBoxTarget : RscLB_CTarget { type = CT_LISTBOX; wholeHeight = 0.3; }; class RscComboTarget : RscLB_CTarget { type = CT_COMBO; wholeHeight = 0.3; }; class RscSliderHTarget { type = CT_SLIDER; style = ST_HPOS; color[] = {1, 1, 1, 1}; idc = -1; sizeEx = 0.025; }; class DlgAnim { idd = -1; movingEnable = true; controlsBackground[] = {BACKGROUNDDown,FrameDown,BACKGROUNDup,Frameup,BACKGROUNDColumn,FrameColumn,BACKGROUNDLine,FrameLine,BACKGROUNDTight,FrameTight,BACKGROUNDDisperse,FrameDisperse,BACKGROUNDFire,FrameFire,BACKGROUNDCease,FrameCease,BACKGROUNDMove,FrameMove,BACKGROUNDHalt,FrameHalt,BACKGROUNDWatch,FrameWatch,BACKGROUNDRally,FrameRally,BACKGROUNDExit}; class BACKGROUNDDown : RscTextAnims { colorBackground[] = {.3, 0, 0, 0.3}; text = ; x = (igor_x + 1* igor_x_spacing) - 0.01; y = (igor_y - 0* igor_y_spacing) - 0.01; w = igor_w + 0.02; h = igor_h + 0.02; }; class FRAMEDown : RscTextAnims { idc = 103; style = ST_FRAME; colorText[] = {0, 0, 0, 1}; text = ""; font = FontHTML; sizeEx = 0.02; x = (igor_x + 1* igor_x_spacing) - 0.005; y = (igor_y - 0* igor_y_spacing) - 0.005; w = igor_w + 0.01; h = igor_h + 0.01; }; class BACKGROUNDUp : RscTextAnims { colorBackground[] = {0, 0.3, 0, 0.3}; text = ; x = (igor_x + 1* igor_x_spacing) - 0.01; y = (igor_y - 1* igor_y_spacing) - 0.01; w = igor_w + 0.02; h = igor_h + 0.02; }; class FRAMEUp : RscTextAnims { idc = 103; style = ST_FRAME; colorText[] = {0, 0, 0, 1}; text = ""; font = FontHTML; sizeEx = 0.02; x = (igor_x + 1* igor_x_spacing) - 0.005; y = (igor_y - 1* igor_y_spacing) - 0.005; w = igor_w + 0.01; h = igor_h + 0.01; }; class BACKGROUNDColumn : RscTextAnims { colorBackground[] = {0, 0, 0.3, 0.3}; text = ; x = (igor_x - 1* igor_x_spacing) - 0.01; y = (igor_y - 0* igor_y_spacing) - 0.01; w = igor_w + 0.02; h = igor_h + 0.02; }; class FRAMEColumn : RscTextAnims { idc = 103; style = ST_FRAME; colorText[] = {0, 0, 0, 1}; text = ""; font = FontHTML; sizeEx = 0.02; x = (igor_x - 1* igor_x_spacing) - 0.005; y = (igor_y - 0* igor_y_spacing) - 0.005; w = igor_w + 0.01; h = igor_h + 0.01; }; class BACKGROUNDLine : RscTextAnims { colorBackground[] = {.3, 0.3, 0, 0.3}; text = ; x = (igor_x - 1* igor_x_spacing) - 0.01; y = (igor_y - 1* igor_y_spacing) - 0.01; w = igor_w + 0.02; h = igor_h + 0.02; }; class FRAMELine : RscTextAnims { idc = 103; style = ST_FRAME; colorText[] = {0, 0, 0, 1}; text = ""; font = FontHTML; sizeEx = 0.02; x = (igor_x - 1* igor_x_spacing) - 0.005; y = (igor_y - 1* igor_y_spacing) - 0.005; w = igor_w + 0.01; h = igor_h + 0.01; }; class BACKGROUNDTight : RscTextAnims { colorBackground[] = {0, 0, 0.3, 0.3}; text = ; x = (igor_x + 0* igor_x_spacing) - 0.01; y = (igor_y - 0* igor_y_spacing) - 0.01; w = igor_w + 0.02; h = igor_h + 0.02; }; class FRAMETight : RscTextAnims { idc = 103; style = ST_FRAME; colorText[] = {0, 0, 0, 1}; text = ""; font = FontHTML; sizeEx = 0.02; x = (igor_x + 0* igor_x_spacing) - 0.005; y = (igor_y - 0* igor_y_spacing) - 0.005; w = igor_w + 0.01; h = igor_h + 0.01; }; class BACKGROUNDDisperse : RscTextAnims { colorBackground[] = {.3, 0.3, 0, 0.3}; text = ; x = (igor_x + 0* igor_x_spacing) - 0.01; y = (igor_y - 1* igor_y_spacing) - 0.01; w = igor_w + 0.02; h = igor_h + 0.02; }; class FRAMEDisperse : RscTextAnims { idc = 103; style = ST_FRAME; colorText[] = {0, 0, 0, 1}; text = ""; font = FontHTML; sizeEx = 0.02; x = (igor_x + 0* igor_x_spacing) - 0.005; y = (igor_y - 1* igor_y_spacing) - 0.005; w = igor_w + 0.01; h = igor_h + 0.01; }; class BACKGROUNDCease : RscTextAnims { colorBackground[] = {.3, 0, 0, 0.3}; text = ; x = (igor_x + 2* igor_x_spacing) - 0.01; y = (igor_y - 0* igor_y_spacing) - 0.01; w = igor_w + 0.02; h = igor_h + 0.02; }; class FRAMECease : RscTextAnims { idc = 103; style = ST_FRAME; colorText[] = {0, 0, 0, 1}; text = ""; font = FontHTML; sizeEx = 0.02; x = (igor_x + 2* igor_x_spacing) - 0.005; y = (igor_y - 0* igor_y_spacing) - 0.005; w = igor_w + 0.01; h = igor_h + 0.01; }; class BACKGROUNDFire : RscTextAnims { colorBackground[] = {0, 0.3, 0, 0.3}; text = ; x = (igor_x + 2* igor_x_spacing) - 0.01; y = (igor_y - 1* igor_y_spacing) - 0.01; w = igor_w + 0.02; h = igor_h + 0.02; }; class FRAMEFire : RscTextAnims { idc = 103; style = ST_FRAME; colorText[] = {0, 0, 0, 1}; text = ""; font = FontHTML; sizeEx = 0.02; x = (igor_x + 2* igor_x_spacing) - 0.005; y = (igor_y - 1* igor_y_spacing) - 0.005; w = igor_w + 0.01; h = igor_h + 0.01; }; class BACKGROUNDHalt : RscTextAnims { colorBackground[] = {.3, 0, 0, 0.3}; text = ; x = (igor_x + 3* igor_x_spacing) - 0.01; y = (igor_y - 0* igor_y_spacing) - 0.01; w = igor_w + 0.02; h = igor_h + 0.02; }; class FRAMEHalt : RscTextAnims { idc = 103; style = ST_FRAME; colorText[] = {0, 0, 0, 1}; text = ""; font = FontHTML; sizeEx = 0.02; x = (igor_x + 3* igor_x_spacing) - 0.005; y = (igor_y - 0* igor_y_spacing) - 0.005; w = igor_w + 0.01; h = igor_h + 0.01; }; class BACKGROUNDMove : RscTextAnims { colorBackground[] = {0, 0.3, 0, 0.3}; text = ; x = (igor_x + 3* igor_x_spacing) - 0.01; y = (igor_y - 1* igor_y_spacing) - 0.01; w = igor_w + 0.02; h = igor_h + 0.02; }; class FRAMEMove : RscTextAnims { idc = 103; style = ST_FRAME; colorText[] = {0, 0, 0, 1}; text = ""; font = FontHTML; sizeEx = 0.02; x = (igor_x + 3* igor_x_spacing) - 0.005; y = (igor_y - 1* igor_y_spacing) - 0.005; w = igor_w + 0.01; h = igor_h + 0.01; }; class BACKGROUNDWatch : RscTextAnims { colorBackground[] = {.3, 0.3, 0.3, 0.3}; text = ; x = (igor_x + 4* igor_x_spacing) - 0.01; y = (igor_y - 0* igor_y_spacing) - 0.01; w = igor_w + 0.02; h = igor_h + 0.02; }; class FRAMEWatch : RscTextAnims { idc = 103; style = ST_FRAME; colorText[] = {0, 0, 0, 1}; text = ""; font = FontHTML; sizeEx = 0.02; x = (igor_x + 4* igor_x_spacing) - 0.005; y = (igor_y - 0* igor_y_spacing) - 0.005; w = igor_w + 0.01; h = igor_h + 0.01; }; class BACKGROUNDRally : RscTextAnims { colorBackground[] = {0.3, 0.3, 0.3, 0.3}; text = ; x = (igor_x + 4* igor_x_spacing) - 0.01; y = (igor_y - 1* igor_y_spacing) - 0.01; w = igor_w + 0.02; h = igor_h + 0.02; }; class FRAMERally : RscTextAnims { idc = 103; style = ST_FRAME; colorText[] = {0, 0, 0, 1}; text = ""; font = FontHTML; sizeEx = 0.02; x = (igor_x + 4* igor_x_spacing) - 0.005; y = (igor_y - 1* igor_y_spacing) - 0.005; w = igor_w + 0.01; h = igor_h + 0.01; }; class BACKGROUNDExit : RscTextAnims { colorBackground[] = {0.05, 0.05, 0.05, 0.05}; text = ; x = igor_x - 1.5* igor_x_spacing; y = igor_y + 2* igor_y_spacing; w = 50*igor_w; h = 50*igor_h; }; objects[] = { }; controls[] = { SignDown,SignGetUp,SignLine,SignColumn,SignFire,SignCease,SignHalt,SignMove,SignRally,SignWatch,SignTight,SignDisperse,Exit }; class SignDown : RscButtonAnims { style = ST_CENTER; idc = 101; x = igor_x + 1* igor_x_spacing; y = igor_y - 0* igor_y_spacing; w = igor_w; h = igor_h; colorText[] = {.1, 0, 0, 1}; text = "Get down !"; action = "player playmove {GENB_SignDown};closedialog 0"; default = true; }; class SignGetUp : RscButtonAnims { idc = 102; x = igor_x + 1* igor_x_spacing; y = igor_y - 1* igor_y_spacing; w = igor_w; h = igor_h; colorText[] = {0, 0.1, 0, 1}; text = "Get up !"; action = "player playmove {GENB_SignUp};closedialog 0"; }; class SignLine : RscButtonAnims { idc = 102; x = igor_x - 1* igor_x_spacing; y = igor_y - 0* igor_y_spacing; w = igor_w; h = igor_h; colorText[] = {.1, 0.1, 0, 1}; text = "Form line !"; action = "player playmove {GENB_SignLine};closedialog 0"; }; class SignColumn : RscButtonAnims { idc = 102; x = igor_x - 1* igor_x_spacing; y = igor_y - 1* igor_y_spacing; w = igor_w; h = igor_h; text = "Form column !"; action = "player playmove {GENB_SignColumn};closedialog 0"; }; class SignTight : RscButtonAnims { idc = 102; x = igor_x + 0* igor_x_spacing; y = igor_y - 1* igor_y_spacing; w = igor_w; h = igor_h; text = "Regroup !"; action = "player playmove {GENB_SignTighten};closedialog 0"; }; class SignDisperse : RscButtonAnims { idc = 102; x = igor_x + 0* igor_x_spacing; y = igor_y - 0* igor_y_spacing; w = igor_w; h = igor_h; text = "Spread out !"; action = "player playmove {GENB_SignDisperse};closedialog 0"; }; class SignFire : RscButtonAnims { idc = 102; x = igor_x + 2* igor_x_spacing; y = igor_y - 1* igor_y_spacing; w = igor_w; h = igor_h; colorText[] = {0, .1, 0, 1}; text = "Open Fire !"; action = "player playmove {GENB_SignFire};closedialog 0"; }; class SignCease : RscButtonAnims { idc = 102; x = igor_x + 2* igor_x_spacing; y = igor_y - 0* igor_y_spacing; w = igor_w; h = igor_h; colorText[] = {.1, 0, 0, 1}; text = "Cease Fire !"; action = "player playmove {GENB_SignCeaseFire};closedialog 0"; }; class SignHalt : RscButtonAnims { idc = 102; x = igor_x + 3* igor_x_spacing; y = igor_y - 0* igor_y_spacing; w = igor_w; h = igor_h; colorText[] = {.1, 0, 0, 1}; text = "Halt !"; action = "player playmove {GENB_SignHalt};closedialog 0"; }; class SignMove : RscButtonAnims { idc = 102; x = igor_x + 3* igor_x_spacing; y = igor_y - 1* igor_y_spacing; w = igor_w; h = igor_h; colorText[] = {.1, 0, 0, 1}; text = "Move out !"; action = "player playmove {GENB_SignMove};leader player say {moveout};closedialog 0"; }; class SignRally : RscButtonAnims { idc = 102; x = igor_x + 4* igor_x_spacing; y = igor_y - 0* igor_y_spacing; w = igor_w; h = igor_h; colorText[] = {.1, 0, 0, 1}; text = "Rally !"; action = "player playmove {GENB_SignRally};closedialog 0"; }; class SignWatch : RscButtonAnims { idc = 102; x = igor_x + 4* igor_x_spacing; y = igor_y - 1* igor_y_spacing; w = igor_w; h = igor_h; colorText[] = {.1, 0, 0, 1}; text = "Watch !"; action = "player playmove {GENB_SignWatch};closedialog 0"; }; class Exit: RscActiveTextAnims { idc = 102; x = igor_x - 1.5* igor_x_spacing; y = igor_y + 2* igor_y_spacing; w = 50*igor_w; h = 50*igor_h; colorText[] = {1, 0, 0, 1}; text = " Exit"; action = "closedialog 0"; }; }; class DlgSatellite { idd = -1; movingEnable = true; controlsBackground[]= { SAT_CAM_BG1, SAT_CAM_BG2, SAT_CAM_BG3, SAT_CAM_BG4, SAT_CAM_DOT, SAT_CAM_MARKER, SAT_CAM_NOISE, SAT_CAM_MONITOR, SAT_CAM_TRACKING }; class SAT_CAM_TRACKING : RscTextSat { idc = 224; text = $STR_UI_TRACKING; x = 0.12; y = 0.12; w = 0.1; h = 0.032; }; class SAT_CAM_BG1 : RscTextSat { x = 0.0; y = 0.0; w = 1; h = 0.1; text = ; colorBackground[] = {VB_LB_TXC}; }; class SAT_CAM_BG2 : RscTextSat { x = 0; y = 0; w = 0.1; h = 1; text = ; colorBackground[] = {VB_LB_TXC}; }; class SAT_CAM_BG3 : RscTextSat { x = 0.9; y = 0; w = 0.1; h = 1; text = ; colorBackground[] = {VB_LB_TXC}; }; class SAT_CAM_BG4 : RscTextSat { x = 0; y = 0.9; w = 1; h = 0.1; text = ; colorBackground[] = {VB_LB_TXC}; }; class SAT_CAM_DOT : RscPictureSat { idc = 200; x = 0.865; y = 0.865; w = 0.015; h = 0.02; text = "images\dot3.paa"; }; class SAT_CAM_MARKER : RscPictureSat { x = 0.45; y = 0.45; w = 0.1;h = 0.133; text = "images\target.paa"; }; class SAT_CAM_NOISE : RscPictureSat { idc = 225; x = 0.1; y = 0.1;w = 0.8; h = 0.8; text = ""; }; class SAT_CAM_MONITOR : RscPictureSat { x = 0.1; y = 0.1;w = 0.8; h = 0.8; text = "images\zeilen2.paa"; }; objects[]= {}; controls[]= { SAT_CAM_ZOOMIN,SAT_CAM_ZOOMOUT,SAT_CAM_PUSHLEFT,SAT_CAM_PUSHRIGHT, SAT_CAM_PUSHUP,SAT_CAM_PUSHDOWN,SAT_CAM_SHUTDOWN,SAT_CAM_TRACK, SAT_CAM_END_TRACK,SAT_CAM_ZOOM }; class SAT_CAM_ZOOMIN : RscActiveMenuSat { idc = 206; text = $STR_UI_ZOOMIN; x = 0.08; y = 0.02; w = 0.1; h = 0.032; sizeEx = 0.032; action = "[6] exec ""satellite\adjustCamera.sqs"""; }; class SAT_CAM_ZOOMOUT : RscActiveMenuSat { idc = 207; text = $STR_UI_ZOOMOUT; x = 0.18; y = 0.02; w = 0.1; h = 0.032; sizeEx = 0.032; action = "[7] exec ""satellite\adjustCamera.sqs"""; }; class SAT_CAM_ZOOM_LBL : RscTextSat { text = "IN << Zoom >> OUT"; style = ST_CENTER; x = 0.7; y = 0.06; w = 0.28; h = 0.04; }; class SAT_CAM_PUSHLEFT : RscActiveMenuSat { idc = 216; text = $STR_UI_LEFT; x = 0.375;y = 0.04;w = 0.05;h = 0.032; sizeEx = 0.032; action = "[0] exec ""satellite\adjustCamera.sqs"""; }; class SAT_CAM_PUSHRIGHT : RscActiveMenuSat { idc = 217; text = $STR_UI_RIGHT; x = 0.475;y = 0.04;w = 0.05;h = 0.032; sizeEx = 0.032; action = "[1] exec ""satellite\adjustCamera.sqs"""; }; class SAT_CAM_PUSHUP : RscActiveMenuSat { idc = 218; text = $STR_UI_UP; x = 0.425;y = 0.02;w = 0.05;h = 0.032; sizeEx = 0.032; action = "[2] exec ""satellite\adjustCamera.sqs"""; }; class SAT_CAM_PUSHDOWN : RscActiveMenuSat { idc = 219; text = $STR_UI_DOWN; x = 0.425;y = 0.06;w = 0.05;h = 0.032; sizeEx = 0.032; action = "[3] exec ""satellite\adjustCamera.sqs"""; }; class SAT_CAM_SHUTDOWN : RscActiveMenuSat { idc = 220; text = $STR_UI_SHUTDOWN; x = 0.9;y = 0.95;w = 0.07;h = 0.032; sizeEx = 0.032; action = "[5] exec ""satellite\adjustCamera.sqs""; closeDialog 0"; }; class SAT_CAM_TRACK : RscActiveMenuSat { idc = 221; text = $STR_UI_TRACK; x = 0.1;y = 0.95;w = 0.2;h = 0.032; sizeEx = 0.032; action = "[] exec ""satellite\trackObject.sqs"""; }; class SAT_CAM_END_TRACK : RscActiveMenuSat { idc = 222; text = $STR_UI_STOP_TRACK; x = 0.3;y = 0.95;w = 0.2;h = 0.032; sizeEx = 0.032; action = "SAT_stopTrack = true"; }; class SAT_CAM_ZOOM : RscTextSat { idc = 223; text = ; x = 0.85;y = 0.03;w = 0.1;h = 0.032; style = ST_RIGHT; }; }; /////////////////////////////////////////////////////////// // Weapons & Magazines /////////////////////////////////////////////////////////// class Weapons { class M16A2 {count = 50;}; class M16A2GL {count = 50;}; class M4 {count = 50;}; class M4GL {count = 50;}; class M4AIM {count = 50;}; class M4SPR {count = 50;}; class M4A1 {count = 50;}; class M4A1GL {count = 50;}; class M4A1SD {count = 50;}; class G36K {count = 50;}; class G36C {count = 50;}; class G36a {count = 50;}; class MP5A5 {count = 50;}; class MP5SD {count = 50;}; class AK74 {count = 50;}; class AK74GL {count = 50;}; class AKS74U {count = 50;}; class AKS74UN {count = 50;}; class M249 {count = 50;}; class M240 {count = 50;}; class PK {count = 50;}; class M24 {count = 50;}; class SVD {count = 50;}; class M9 {count = 50;}; class M9SD {count = 50;}; class Makarov {count = 50;}; class MakarovSD {count = 50;}; class M136 {count = 50;}; class Javelin {count = 50;}; class Stinger {count = 50;}; class RPG7V {count = 50;}; class Strela {count = 50;}; class Laserdesignator {count = 50;}; class NVGoggles {count = 50;}; class Binocular {count = 50;}; } class Magazines { class 20Rnd_556x45_Stanag {count = 50;}; class 30Rnd_556x45_Stanag {count = 50;}; class 30Rnd_556x45_StanagSD {count = 50;}; class 30Rnd_556x45_G36 {count = 50;}; class 30Rnd_9x19_MP5 {count = 50;}; class 30Rnd_9x19_MP5SD {count = 50;}; class 30Rnd_545x39_AK {count = 50;}; class 30Rnd_545x39_AKSD {count = 50;}; class 200Rnd_556x45_M249 {count = 50;}; class 100Rnd_762x51_M240 {count = 50;}; class 100Rnd_762x54_PK {count = 50;}; class 10Rnd_762x54_SVD {count = 50;}; class 5Rnd_762x51_M24 {count = 50;}; class 15Rnd_9x19_M9 {count = 50;}; class 15Rnd_9x19_M9SD {count = 50;}; class 8Rnd_9x18_Makarov {count = 50;}; class 8Rnd_9x18_MakarovSD {count = 50;}; class PipeBomb {count = 50;}; class TimeBomb {count = 50;}; class Mine {count = 50;}; class MineE {count = 50;}; class FlareWhite_M203 {count = 50;}; class FlareGreen_M203 {count = 50;}; class FlareRed_M203 {count = 50;}; class FlareYellow_M203 {count = 50;}; class 1Rnd_HE_M203 {count = 50;}; class FlareWhite_GP25 {count = 50;}; class FlareGreen_GP25 {count = 50;}; class FlareRed_GP25 {count = 50;}; class FlareYellow_GP25 {count = 50;}; class 1Rnd_HE_GP25 {count = 50;}; class SmokeShellRed {count = 50;}; class SmokeShellGreen {count = 50;}; class SmokeShell {count = 50;}; class HandGrenadeTimed {count = 50;}; class HandGrenade {count = 50;}; class M136 {count = 50;}; class Javelin {count = 50;}; class Stinger {count = 50;}; class PG7V {count = 50;}; class PG7VR {count = 50;}; class Strela {count = 50;}; }; /////////////////////////////////////////////////////////// // Resources & Definitions /////////////////////////////////////////////////////////// // Control types #define CT_STATIC 0 #define CT_BUTTON 1 #define CT_EDIT 2 #define CT_SLIDER 3 #define CT_COMBO 4 #define CT_LISTBOX 5 #define CT_TOOLBOX 6 #define CT_CHECKBOXES 7 #define CT_PROGRESS 8 #define CT_HTML 9 #define CT_STATIC_SKEW 10 #define CT_ACTIVETEXT 11 #define CT_TREE 12 #define CT_3DSTATIC 20 #define CT_3DACTIVETEXT 21 #define CT_3DLISTBOX 22 #define CT_3DHTML 23 #define CT_3DSLIDER 24 #define CT_3DEDIT 25 #define CT_OBJECT 80 #define CT_OBJECT_ZOOM 81 #define CT_OBJECT_CONTAINER 82 #define CT_OBJECT_CONT_ANIM 83 #define CT_USER 99 // Static styles #define ST_HPOS 0x0F #define ST_LEFT 0 #define ST_RIGHT 1 #define ST_CENTER 2 #define ST_UP 3 #define ST_DOWN 4 #define ST_VCENTER 5 #define ST_TYPE 0xF0 #define ST_SINGLE 0 #define ST_MULTI 16 #define ST_TITLE_BAR 32 #define ST_PICTURE 48 #define ST_FRAME 64 #define ST_BACKGROUND 80 #define ST_GROUP_BOX 96 #define ST_GROUP_BOX2 112 #define ST_HUD_BACKGROUND 128 #define ST_TILE_PICTURE 144 #define ST_WITH_RECT 160 #define ST_LINE 176 #define ST_SHADOW 256 #define ST_NO_RECT 512 #define ST_TITLE ST_TITLE_BAR + ST_CENTER // Predefined controls #define IDC_OK 1 #define IDC_CANCEL 2 // Colors #define TextColor 0.08, 0.08, 0.12 #define InvTextColor 0.35, 0.38, 0.36 // Vektorboson Colors #define VB_LB_TXC 0.2, 0.2, 0.2, 1 #define VB_LB_STXC 0.4, 0.4, 0.4, 1 #define VB_T_LC 1, 1, 1, 0.75 #define VB_FR_BGC 0.4, 0.4, 0.4, 0.75 // Fonts #define FontM48 "tahomaB" #define Font_Steelfish128 "tahomaB" #define FontS "tahomaB" #define FontM "tahomaB" #define FontHTML "tahomaB" #define FontHTMLBold "tahomaB" #define FontMAP "tahomaB" #define FontMAIN "tahomaB" #define FontMAINCZ "tahomaB" #define FontTITLE "tahomaB" #define FontTITLEHalf "tahomaB" #define FontBOOK "tahomaB" #define FontNOTES "tahomaB" class RscSliderV { type = CT_SLIDER; style = SL_VERT; color[] = {0, 1, 0, 1}; angle = 0; }; class RscText { type = CT_STATIC; idc = -1; style = ST_LEFT; h = 0.04; colorBackground[] = {0, 0, 0, 0}; colorText[] = {TextColor, 0.75}; font = FontS; sizeEx = 0.02; }; class RscActiveText { type = CT_ACTIVETEXT; style = ST_LEFT; color[] = {0, 0, 0, 1}; colorActive[] = {1, 1, 1, 1}; font = FontS; sizeEx = 0.02; soundEnter[] = {"ui\ui_over", 0.2, 1}; soundPush[] = {, 0.2, 1}; soundClick[] = {"ui\ui_ok", 0.2, 1}; soundEscape[] = {"ui\ui_cc", 0.2, 1}; default = false; }; class RscActiveMenu : RscActiveText { color[] = {1, 1, 1, 1}; colorActive[] = {1, 0, 0, 1}; font = FontS; sizeEx = 0.03; default = false; }; class RscObject { type = CT_OBJECT; scale = 1.0; direction[] = {0, 0, 1}; up[] = {0, 1, 0}; }; class RscObjListBox { type = CT_LISTBOX; font = FontS; style = 4; selection = "display"; angle = 0; size = 0.02; // 3D size color[] = {0, 0, 0, 0}; colorSelect[] = {0, 1, 0, 1}; colorSelectBackground[] = {0, 1, 0, 0.2}; colorText[] = {0, 1, 0, 0.5}; }; class RscHTML{}; class RscTitle; class RscPicture; class RscPictureKeepAspect: RscPicture { style = "48 + 0x800"; }; class RscButton { type = 1; style = 0; x = 0; y = 0; w = 0.097500; h = 0.040000; font = "Zeppelin32"; sizeEx = 0.024000; colorText[] = {0,0,0,1}; colorDisabled[] = {0.400000,0.400000,0.400000,1}; colorBackground[] = {1,1,1,1}; colorBackgroundActive[] = {0.840000,1,0.550000,1}; colorBackgroundDisabled[] = {1,1,1,0.700000}; offsetX = 0.003000; offsetY = 0.003000; offsetPressedX = 0.002000; offsetPressedY = 0.002000; colorFocused[] = {0.840000,1,0.550000,1}; colorShadow[] = {0,0,0,1}; colorBorder[] = {0,0,0,1}; borderSize = 0.000000; soundEnter[] = {"\ca\ui\data\sound\mouse2",0.150000,1}; soundPush[] = {"\ca\ui\data\sound\new1",0.150000,1}; soundClick[] = {"\ca\ui\data\sound\mouse3",0.150000,1}; soundEscape[] = {"\ca\ui\data\sound\mouse1",0.150000,1}; }; class RscButton_small: RscButton { w = 0.097500; h = 0.030000; sizeEx = 0.022000; colorBackground[] = {1,1,1,0.4}; colorText[] = {0,0,0,1}; colorDisabled[] = {0,0,0,1}; }; class RscStandardDisplay { movingEnable = 1; enableSimulation = 1; enableDisplay = 1; class controlsBackground { class Background1: RscText { w = 0; h = 0; colorBackground[] = {0,0,0,0}; }; }; }; class RscEdit { type = CT_EDIT; style = ST_LEFT; font = "Zeppelin32"; sizeEx = 0.024000; colorBackground[] = {1,1,1,0}; colorText[] = {0,0,0,1}; colorSelection[] = {0.300000,0.400000,0,0.500000}; }; class RscGroupBox2 { type = 0; idc = -1; style = 112; text = ""; colorBackground[] = {1, 1, 1, 0.6}; colorText[] = {0, 0, 0, 0}; font = "BitStream"; sizeEx = 0.02; }; class SIX_Mainback: RscText { style = 48; x = 0.350000; y = 0.800000; w = 0.300000; h = 0.200000; text = "#(argb,8,1,3)color(0.7,0.7,0.7,0.8)"; colorText[] = {1,1,1,0.900000}; }; class SIX_Back: SIX_Mainback { x = 0.290000; y = 0.380000; w = 0.560000; h = 0.570000; colorText[] = {1,1,1,0.900000}; }; class RscLB_C { style = ST_LEFT; idc = -1; colorSelect[] = {0.4, 0.4, 0.4, 1}; colorSelectBackground[] = {0.2, 0.2, 0.2, 1}; colorText[] = {0.2, 0.2, 0.2, 1}; colorBackground[] = {0.4, 0.4, 0.4, 1}; font = FontHTML; sizeEx = 0.025; rowHeight = 0.04; }; class RscListBox:RscLB_C {}; class RscCombo:RscLB_C {};#define CHN_COLOR1 {1,1,1,1} #define CHN_COLOR2 {1,0,0,1} #define CHN_COLOR3 {0,1,0,1} #define CHN_COLOR4 {0,0,1,1} #define CHN_COLOR5 {.5,0,.2,1} #define CHN_COLOR6 {.8,.2,.1,1} #define CHN_COLOR7 {.85,.85,0,1} #define CHN_COLOR8 {.7,.7,1,1} #define Map_x 0.193 #define Map_y 0 #define Map_w 0.757 #define Map_h 0.881 #define Map_Edw 0.005 class CHN_DefText:RscText { type = CT_STATIC; idc = -1; style = ST_LEFT; colorBackground[] = {0, 0, 0, 0}; colorText[] = {1, 1, 1, 1}; font = FontM; sizeEx = 0.04; }; class CHN_DefButton:RscButton { type = CT_BUTTON; idc = -1; style = ST_CENTER; colorText[] = {0, 0, 0, 1}; font = FontHTML; sizeEx = 0.025; borderSize = 0.0; colorDisabled[] = {0.5, 0.5, 0.5, .35}; colorBackground[] = {0.5, 0.5, 0.5, 0.35}; colorBackgroundActive[] = {.7,.7,.7,.65}; colorBackgroundDisabled[] = {0.6, 0.6, 0.6, 0}; colorFocused[] = {0, 0, 0, .2}; colorShadow[] = {0, 0, 0, .2}; colorBorder[] = {0, 0, 0, 1}; offsetX = 0.003; offsetY = 0.003; offsetPressedX = 0.002; offsetPressedY = 0.002; soundEnter[] = {"\ca\ui\data\sound\mouse2", 0.15, 1}; soundPush[] = {"\ca\ui\data\sound\new1", 0.15, 1}; soundClick[] = {"\ca\ui\data\sound\mouse3", 0.15, 1}; soundEscape[] = {"\ca\ui\data\sound\mouse1", 0.15, 1}; default = false; }; class CHN_EDIT:RscEdit { type = CT_EDIT; idc = -1; style = ST_LEFT; font = FontM; sizeEx = 0.02; colorText[] = {0, 0, 0, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; autocomplete = true; text = ; }; class CHN_DefListBox:RscListBox { type = CT_LISTBOX; style = 16; rowHeight = 0.001; font = "Zeppelin32"; sizeEx = 0.015; color[] = {0.0, 0.0, 0.0, 1}; colorText[] = {0, 0, 0, 1}; colorScrollbar[] = {.5, .5, .5, .5}; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.4, 0.4, 0.4, 0.75}; colorSelectBackground2[] = {0.4, 0.4, 0.4, 0.75}; soundSelect[] = {"", 0.1, 1}; period = 0; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; }; class CHN_DefCombo:RscCombo { type = CT_COMBO; style=2; wholeHeight = 0.3; rowHeight = 0.02; font = "Zeppelin32"; sizeEx = 0.015; color[] = {0.0, 0.0, 0.0, 1}; colorText[] = {0, 0, 0, 1}; colorScrollbar[] = {1, 1, 1, 1}; colorSelect[] = {0, 0, 0, 1}; colorSelect2[] = {0, 0, 0, 1}; colorSelectBackground[] = {0.4, 0.4, 0.4, 0.75}; colorSelectBackground2[] = {0.4, 0.4, 0.4, 0.75}; soundSelect[] = {"", 0.1, 1}; soundExpand[] = {"", 0.1, 1}; soundCollapse[] = {"", 0.1, 1}; period = 0; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; }; class CHN_InputFrame { idc=-1; type=0; style=0; //colorBackground[]={0,1,0,.4}; colorBackground[]={0,0,0,0}; colorText[]={0,0,0,0}; font="TahomaB"; sizeEx=0; h=0.02; }; class CHN_PanelFrame { idc=-1; type=0; style=0; //colorBackground[]={0,1,0,.4}; //colorBackground[]={.1,.1,1,.2}; colorBackground[]={0,0,.14,.16}; colorText[]={0,0,0,0}; font="TahomaB"; sizeEx=0; h=0.02; }; class CHN_Dialog1 { idd = 10001; movingEnable = true; controlsBackground[] = {CHN_DLGBACK1,CHN_DLGBACK2,CHN_DLGBACK3,CHN_DLGBACK4,CHN_DLGBACK5,CHN_DLGBACK6,CHN_DLGBACK7,CHN_DLGBACK8,CHN_DLGBACK9,CHN_DLGBACK10,CHN_DLGBACK11,CHN_DLGBACK12,CHN_DLGBACK13, CHN_FRAME1, CHN_FRAME2,CHN_FRAME3,CHN_FRAME4,CHN_FRAME5,CHN_FRAME6,CHN_FRAME7}; objects[] = { }; controls[] = {CHN_BUTTON1,CHN_BUTTON2, CHN_BUTTON3, CHN_BUTTON4, CHN_BUTTON5, CHN_BUTTON6, CHN_BUTTON8,CHN_BUTTON9,CHN_BUTTON10,CHN_BUTTON11,CHN_BUTTON12,CHN_BUTTON13,CHN_BUTTON14,CHN_BUTTON15,CHN_BUTTON16,CHN_BUTTON17,CHN_BUTTON18,CHN_BUTTON19,CHN_BUTTON21,CHN_BUTTON22,CHN_BUTTON23,CHN_BUTTON24,CHN_BUTTON25,CHN_BUTTON26,CHN_BUTTON27,CHN_BUTTON28,CHN_BUTTON29,CHN_BUTTON30,CHN_BUTTON31,CHN_BUTTON32,CHN_BUTTON33,CHN_BUTTON34,CHN_BUTTON35,CHN_BUTTON36,CHN_BUTTON37,CHN_BUTTON38,CHN_BUTTON39,CHN_BUTTON40,CHN_BUTTON41,CHN_BUTTON42,CHN_BUTTON43,CHN_BUTTON44,CHN_BUTTON45,CHN_BUTTON46,CHN_BUTTON47,CHN_BUTTON48,CHN_BUTTON49,CHN_BUTTON50,CHN_BUTTON51,CHN_BUTTON52,CHN_BUTTON53,CHN_BUTTON54,CHN_BUTTON55,CHN_BUTTON56,CHN_TEXT1,CHN_TEXT2,CHN_TEXT3,CHN_TEXT4,CHN_TEXT5,CHN_TEXT6,CHN_TEXT7,CHN_TEXT8,CHN_TEXT9,CHN_TEXT10,CHN_TEXT11,CHN_TEXT16,CHN_TEXT17,CHN_TEXT18,CHN_TEXT19,CHN_TEXT20,CHN_TEXT21,CHN_TEXT22,CHN_TEXT25,CHN_TEXT26,CHN_TEXT27,CHN_TEXT28,CHN_TEXT29,CHN_TEXT30,CHN_TEXT31,CHN_TEXT32, CHN_TEXT33,CHN_TEXT34,CHN_TEXT35,CHN_TEXT36,CHN_TEXT37,CHN_LIST1,CHN_LIST2,CHN_LIST3,CHN_LIST4,CHN_LIST5,CHN_LIST6,CHN_LIST7,CHN_LIST8,CHN_LIST9,CHN_LIST10,CHN_LIST11,CHN_LIST12,CHN_LIST13,CHN_LIST14,CHN_LIST15,CHN_LIST16,CHN_LIST17,CHN_LIST18,CHN_LIST19,CHN_LIST20,CHN_LIST21,CHN_LIST22,CHN_LIST23,CHN_LIST24,CHN_LIST25,CHN_LIST26,CHN_LIST27,CHN_LIST28,CHN_LIST29,CHN_LIST30,CHN_LIST31,CHN_LIST32,CHN_EDIT1,CHN_InputPad,CHN_LeftEdge,CHN_RightEdge,CHN_TopEdge,CHN_BottomEdge,CHN_PanelFrame1,CHN_PanelFrame2,CHN_PanelFrame3,CHN_PanelFrame4}; onLoad= "_this spawn CHN_TroopMon_DiaReg"; class CHN_LeftEdge : CHN_InputFrame { x=Map_x; y=Map_y; w=Map_Edw; h=Map_h; text=; }; class CHN_RightEdge : CHN_InputFrame { x=Map_x+Map_w-Map_Edw; y=Map_y; w=Map_Edw; h=Map_h; text=; }; class CHN_TopEdge : CHN_InputFrame { x=Map_x; y=Map_y; w=Map_w; h=Map_Edw; text=; }; class CHN_BottomEdge : CHN_InputFrame { x=Map_x; y=Map_y+Map_h-Map_Edw-0.003; w=Map_w; h=Map_Edw+0.006; text=; }; class CHN_PanelFrame1 : CHN_PanelFrame { idc=842; x=0.003; y=0.022; w=0.008; h=0.99; text=; }; class CHN_PanelFrame2 : CHN_PanelFrame { idc=843; x=0.162; y=0.022; w=0.008; h=0.99; text=; }; class CHN_PanelFrame3 : CHN_PanelFrame { idc=844; x=0.003; y=0.0; w=0.169; h=0.022; text=; }; class CHN_PanelFrame4 : CHN_PanelFrame { idc=845; x=0.011; y=0.99; w=0.151; h=0.99; text=; }; class RscMapControl; class CHN_InputPad : RscMapControl { moveOnEdges=0; access=0; idc=500; style=0; type=1; default=true; font="TahomaB"; sizeEx=0.040000; colorBackground[]={0,0,0,0}; colorDisabled[]={0,0,0,0}; colorBackgroundActive[]={0,0,0,0}; colorBackgroundDisabled[]={0,0,0,0}; offsetX=0.003; offsetY=0.003; offsetPressedX=0.002; offsetPressedY=0.002; colorFocused[]={0,0,0,0}; colorShadow[]={0,0,0,0}; colorBorder[]={0,0,0,0}; borderSize=0.0; soundEnter[]={"\ca\ui\data\sound\mouse2", 0.15, 1}; soundPush[]={"\ca\ui\data\sound\new1", 0.15, 1}; soundClick[]={"\ca\ui\data\sound\mouse3", 0.15, 1}; soundEscape[]={"\ca\ui\data\sound\mouse1", 0.15, 1}; onMouseButtonDown="if ((_this select 1)==1) then {CHN_RMB=true;CHN_MSDCLIX=_this select 2;CHN_MSDCLIY=_this select 3;[99] spawn CHN_TroopMon_VToggle2};if ((_this select 1)==0) then {CHN_LMB=true};"; onMouseButtonUp="if ((_this select 1)==1) then {CHN_RMB=false};CHN_RBMSX=0;CHN_RBMSY=0;CHN_RMBCANU=0;if ((_this select 1)==0) then {CHN_LMB=false};;CHN_LBMSX=0;CHN_LBMSY=0;CHN_LMBCANU=0;"; // onMouseButtonClick="if ((_this select 1)==1) then {CHN_RMB=true} else {CHN_RMB=false}"; onMouseButtonDblClick="_this spawn CHN_TroopMon_IdentSelec; CHN_MSCLIX=_this select 2;CHN_MSCLIY=_this select 3;"; // onMouseButtonDblClick="player sidechat format [""DBLCLICK ARGS%1"",_this];_this spawn CHN_TroopMon_IdentSelec; CHN_MSCLIX=_this select 2;CHN_MSCLIY=_this select 3;"; onMouseZChanged="_this spawn CHN_TroopMon_MWheel1"; onKeyDown="_this spawn CHN_TroopMon_InputEval"; onMouseMoving="if (CHN_RMB) then {_this spawn CHN_TroopMon_RMBReact};if (CHN_LMB) then {_this spawn CHN_TroopMon_LMBReact}"; // onSetFocus=""; // onKillFocus=""; x=Map_x+Map_Edw; y=Map_y+Map_Edw; w=Map_w-Map_Edw*2; h=Map_h-Map_Edw*2; colorSea[]={0,0,0,0}; colorForest[]={0,0,0,0}; colorRocks[]={0,0,0,0}; colorCountlines[]={0,0,0,0}; colorMainCountlines[]={0,0,0,0}; colorCountlinesWater[]={0,0,0,0}; colorMainCountlinesWater[]={0,0,0,0}; colorForestBorder[]={0,0,0,0}; colorRocksBorder[]={0,0,0,0}; colorPowerLines[]={0,0,0,0}; colorNames[]={0,0,0,0}; colorInactive[]={0,0,0,0}; colorLevels[]={0,0,0,0}; text=""; sizeExNames=0; sizeExLabel=0; colorText[]={0,0,0,0}; stickX={0.000000, {"Gamma", 0, 0}}; stickY={0.000000, {"Gamma", 0, 0}}; class ActiveMarker { color[]={0,0,0,0}; size=1;}; class Bunker { icon=""; color[]={0,0,0,0}; size=1; importance=""; coefMin=0.250000; coefMax=4;}; class Bush { icon=""; color[]={0,0,0,0}; size=1; importance=""; coefMin=0.250000; coefMax=4;}; class BusStop { icon=""; color[]={0,0,0,0}; size=1; importance=""; coefMin=0.250000; coefMax=4;}; class Command { icon = ""; color[]={0,0,0,0}; size=1; importance=1; coefMin=1; coefMax=1;}; class Cross { icon=""; color[]={0,0,0,0}; size=1; importance=""; coefMin=0.250000; coefMax=4;}; class Fortress { icon=""; color[]={0,0,0,0}; size=16; importance=""; coefMin=0.250000; coefMax=4;}; class Fuelstation { icon=""; color[]={0,0,0,0}; size=16; importance=""; coefMin=0.750000; coefMax=4;}; class Fountain { icon=""; color[]={0,0,0,0}; size=12; importance=""; coefMin=0.250000; coefMax=4;}; class Hospital { icon=""; color[]={0,0,0,0}; size=16; importance=""; coefMin=0.500000; coefMax=4;}; class Chapel { icon=""; color[]={0,0,0,0}; size=16; importance=""; coefMin=0.900000; coefMax=4;}; class Church { icon=""; color[]={0,0,0,0}; size=16; importance=""; coefMin=0.900000; coefMax=4;}; class Lighthouse { icon=""; color[]={0,0,0,0}; size=20; importance=""; coefMin=0.900000; coefMax=4;}; class Quay { icon=""; color[]={0,0,0,0}; size=16; importance=""; coefMin=0.500000; coefMax=4;}; class Rock { icon=""; color[]={0,0,0,0}; size=12; importance=""; coefMin=0.250000; coefMax=4;}; class Ruin { icon=""; color[]={0,0,0,0}; size=16; importance=""; coefMin=1; coefMax=4;}; class Stack { icon=""; color[]={0,0,0,0}; size=20; importance=""; coefMin = 0.900000; coefMax = 4;}; class Tree { icon=""; color[]={0,0,0,0}; size=12; importance=""; coefMin=0.250000; coefMax=4;}; class SmallTree { icon=""; color[]={0,0,0,0}; size=12; importance=""; coefMin=0.250000; coefMax=4;}; class Tourism { icon=""; color[]={0,0,0,0}; size=16; importance=""; coefMin=0.700000; coefMax=4;}; class Transmitter { icon =""; color[]={0,0,0,0}; size=20; importance=""; coefMin=0.900000; coefMax=4;}; class ViewTower { icon=""; color[]={0,0,0,0}; size=16; importance=""; coefMin=0.500000; coefMax=4;}; class Watertower { icon=""; color[]={0,0,0,0}; size=32; importance=""; coefMin=0.900000; coefMax=4;}; class Waypoint { icon=""; color[]={0,0,0,0}; size=24; importance=1; coefMin=1; coefMax=1;}; class WaypointCompleted { icon=""; color[]={0,0,0,0}; size=24; importance=1; coefMin=1; coefMax=1;}; }; class CHN_DLGBACK1: CHN_DefText { colorBackground[] = {0.4, 0.4, 0.4, 0.75}; text = ; idc = 350; x = 0.001; y = 0.0; w = 0.17; h = 0.999; }; class CHN_DLGBACK2: CHN_DefText { colorBackground[] = {0.45, 0.45, 0.45, 0.3}; text = ; idc = 501; x = 0.79; y = 0.18; w = 0.22; h = 0.51; }; class CHN_DLGBACK3: CHN_DefText { colorBackground[] = {0.45, 0.45, 0.45, 0.3}; text = ; idc = 502; x = 0.25; y = 0.878; w = 0.475; h = 0.51; }; class CHN_DLGBACK4: CHN_DefText { colorBackground[] = {0.45, 0.45, 0.45, 0.3}; text = ; idc = 503; x = 0.817; y = 0.975; w = 0.19; h = 0.04; }; class CHN_DLGBACK5: CHN_DefText { colorBackground[] = {0.45, 0.45, 0.45, 0.3}; text = ; idc = 504; x = 0.79; y = 0.78; w = 0.24; h = 0.14; }; class CHN_DLGBACK6: CHN_DefText { colorBackground[] = {0.45, 0.45, 0.45, 0.55}; text = ; idc = 514; x = 0.215; //y = 0.001; y = -0.86; w = 0.155; h = 0.9; }; class CHN_DLGBACK7: CHN_DefText { colorBackground[] = {0.45, 0.45, 0.45, 0.3}; text = ; idc = 584; x = 0.17; y = 0.17; w = 0.1; h = 0.136; }; class CHN_DLGBACK8: CHN_DefText { colorBackground[] = {0.45, 0.45, 0.45, 0.3}; text = ; idc = 585; x = 0.27; y = 0.17; w = 0.12; h = 0.136; }; class CHN_DLGBACK9: CHN_DefText { colorBackground[] = {0.45, 0.45, 0.45, 0.3}; text = ; idc = 586; x = 0.17; y = 0.617; w = 0.12; h = 0.136; }; class CHN_DLGBACK10: CHN_DefText { colorBackground[] = {0.1, 0.15, 0.25, 0.4}; text = ; idc = 760; x = 0.192 y = 0.522 w = 0.08; h = 0.093; }; class CHN_DLGBACK11: CHN_DefText { colorBackground[] = {0.45, 0.45, 0.45, 0.3}; text = ; idc = 705; x = 0.29 y = 0.617 w = 0.3; h = 0.135; }; class CHN_DLGBACK12: CHN_DefText { colorBackground[] = {0.45, 0.45, 0.45, 0.55}; text = ; idc = 545; x = 0.36; //y = 0.001; y = -0.86; w = 0.155; h = 0.9; }; class CHN_DLGBACK13: CHN_DefText { colorBackground[] = {0.45, 0.45, 0.45, 0.55}; text = ; idc = 546; x = 0.52; //y = 0.001; y = -0.86; w = 0.155; h = 0.9; }; class CHN_FRAME1 : CHN_DefText { x = 0.001 y = -0.201; idc = 351 w = 0.17 h = 1.395 style = ST_FRAME colorText[] = {0, 0, 0, 1}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; SizeEX = 0.019 text = " TROOPMON V0.8 " }; class CHN_FRAME2 : CHN_DefText { x = 0.012 y = 0.61; idc = 352 w = 0.149 h = 0.198 style = ST_FRAME colorText[] = {0, 0, 0, 1}; colorBackground[] = {0.2, 0.2, 0.2, 0.85}; SizeEX = 0.012 text = " GROUPS " }; class CHN_FRAME3 : CHN_DefText { x = 0.096 y = 0.36; idc = 353 w = 0.065 h = 0.103 style = ST_FRAME colorText[] = {.2, .2, .2, 1}; colorBackground[] = {0.2, 0.2, 0.2, 0.85}; SizeEX = 0.012 text = " CLASS " }; class CHN_FRAME4 : CHN_DefText { x = 0.012 y = 0.026; idc = 555 w = 0.149 h = 0.325 style = ST_FRAME colorText[] = {.2, .2, .2, 1}; colorBackground[] = {0.1, 0.1, 0.1, 0.85}; SizeEX = 0.012 text = " UNIT INFO " }; class CHN_FRAME5 : CHN_DefText { x = 0.012 y = 0.81; idc = 301 w = 0.149 h = 0.178 style = ST_FRAME colorText[] = {0, 0, 0, 1}; colorBackground[] = {0.2, 0.2, 0.2, 0.85}; SizeEX = 0.012 text = "" }; class CHN_FRAME6 : CHN_DefText { x = 0.096 y = 0.54; idc = 354 w = 0.065 h = 0.07 style = ST_FRAME colorText[] = {.2, .2, .2, 1}; colorBackground[] = {0.2, 0.2, 0.2, 0.85}; SizeEX = 0.012 text = " SIDE " }; class CHN_FRAME7 : CHN_DefText { x = 0.096 y = 0.477; idc = 348 w = 0.065 h = 0.05 style = ST_FRAME colorText[] = {.2, .2, .2, 1}; colorBackground[] = {0.2, 0.2, 0.2, 0.85}; SizeEX = 0.012 text = "CAM CTRL" }; class CHN_BUTTON1 : CHN_DefButton { x = 0.012 y = 0.36 idc = 701 w = 0.07 h = 0.02 style = ST_CENTER colorText[] = {1, 1, 1, 1}; colorShadow[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.018 text = "V1" onButtonClick = "CHN_Viewmode=1;_ctrl=(_this select 0);_ctrl ctrlSetTextColor [1, 1, 1, 1];_di=ctrlParent ( _this select 0);_actrl = _di displayCtrl 704;_actrl ctrlSetTextColor [0, 0, 0, 1];_actrl = _di displayCtrl 703;_actrl ctrlSetTextColor [0, 0, 0, 1];_actrl = _di displayCtrl 702;_actrl ctrlSetTextColor [0, 0, 0, 1]; " default = false }; class CHN_BUTTON2 : CHN_DefButton { x = 0.012 y = 0.38 idc = 702 w = 0.07 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.018 text = "V2" onButtonClick = "CHN_Viewmode=2;_ctrl=(_this select 0);_ctrl ctrlSetTextColor [1, 1, 1, 1];_di=ctrlParent ( _this select 0);_actrl = _di displayCtrl 704;_actrl ctrlSetTextColor [0, 0, 0, 1];_actrl = _di displayCtrl 703;_actrl ctrlSetTextColor [0, 0, 0, 1];_actrl = _di displayCtrl 701;_actrl ctrlSetTextColor [0, 0, 0, 1]; " default = false }; class CHN_BUTTON3 : CHN_DefButton { x = 0.012 y = 0.4 idc = 703 w = 0.07 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.018 text = "V3" onButtonClick = "CHN_Viewmode=3;_ctrl=(_this select 0);_ctrl ctrlSetTextColor [1, 1, 1, 1];_di=ctrlParent ( _this select 0);_actrl = _di displayCtrl 704;_actrl ctrlSetTextColor [0, 0, 0, 1];_actrl = _di displayCtrl 702;_actrl ctrlSetTextColor [0, 0, 0, 1];_actrl = _di displayCtrl 701;_actrl ctrlSetTextColor [0, 0, 0, 1]; " default = false }; class CHN_BUTTON4 : CHN_DefButton { x = 0.012 y = 0.42 idc = 704 w = 0.07 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.018 text = "V4" onButtonClick = "CHN_Viewmode=4;_ctrl=(_this select 0);_ctrl ctrlSetTextColor [1, 1, 1, 1];_di=ctrlParent ( _this select 0);_actrl = _di displayCtrl 703;_actrl ctrlSetTextColor [0, 0, 0, 1];_actrl = _di displayCtrl 702;_actrl ctrlSetTextColor [0, 0, 0, 1];_actrl = _di displayCtrl 701;_actrl ctrlSetTextColor [0, 0, 0, 1]; " default = false }; class CHN_BUTTON5 : CHN_DefButton { x = 0.012 y = 0.44 idc = 604 w = 0.07 h = 0.02 style = ST_CENTER colorText[] = {1, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.018 text = "RADIO" onButtonClick = "if (CHN_RADIO) then {CHN_RADIO = false;enableRadio false;_ctrl=(_this select 0);_ctrl ctrlSetTextColor [1, 0, 0, 1];} else {CHN_RADIO = true;enableRadio true;_ctrl=(_this select 0);_ctrl ctrlSetTextColor [0, 1, 0, 1];};" default = false }; class CHN_BUTTON6 : CHN_DefButton { x = 0.012 y = 0.46 idc = 888 w = 0.07 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.018 text = "TARGET" onButtonClick = "[888] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON7 : CHN_DefButton { x = 0.012 y = 0.48 idc = 355 w = 0.07 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.018 text = "THREAT" action = "if (THREATTOGGLE) then {THREATTOGGLE = false} else {THREATTOGGLE = true};" default = false }; class CHN_BUTTON8 : CHN_DefButton { x = 0.012 y = 0.5 idc = 889 w = 0.07 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.018 text = "WOUNDER" onButtonClick = "[889] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON9 : CHN_DefButton { x = 0.012 y = 0.56 idc = 688 w = 0.07 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.018 text = "KILLER" onButtonClick = "[688] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON10 : CHN_DefButton { x = 0.012 y = 0.58 idc = 356 w = 0.07 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.018 text = "MAP" onButtonClick = "[_this] spawn CHN_TroopMon_TroopMap"; default = false }; class CHN_BUTTON11 : CHN_DefButton { x = 0.945 y = 0.67 idc = 347 w = 0.05 h = 0.01 style = ST_CENTER colorText[] = {0, 0, 0, 1}; font = "TahomaB" SizeEX = 0.012 text = "DETAILS" onButtonClick = "[347] spawn CHN_TroopMon_VToggle2"; default = false }; class CHN_BUTTON12 : CHN_DefButton { x = 0.945 y = 0.9 idc = 358 w = 0.05 h = 0.01 style = ST_CENTER colorText[] = {0, 0, 0, 1}; font = "TahomaB" SizeEX = 0.012 text = "ARMAMENT" onButtonClick = "[358] spawn CHN_TroopMon_VToggle2"; default = false }; class CHN_BUTTON13 : CHN_DefButton { x = 0.945 y = 0.06 idc = 444 w = 0.05 h = 0.01 style = ST_CENTER colorText[] = {0, 0, 0, 1}; font = "TahomaB" SizeEX = 0.012 text = "EXIT" action = [] spawn CHN_TroopMon_TroopExit; default = false }; class CHN_BUTTON14 : CHN_DefButton { x = 0.845 y = 0.975 idc = 359 w = 0.02 h = 0.01 style = ST_CENTER colorText[] = {0, 0, 0, 1}; font = "TahomaB" SizeEX = 0.012 text = "+" action = "_acc = accTime ;if (_acc < 4) then {setAccTime (_acc*2);ctrlSetText [126, format [""X %1"",accTime]];};" default = false }; class CHN_BUTTON15 : CHN_DefButton { x = 0.845 y = 0.985 idc = 360 w = 0.02 h = 0.01 style = ST_CENTER colorText[] = {0, 0, 0, 1}; font = "TahomaB" SizeEX = 0.014 text = "-" action = "_acc = accTime ;if (_acc > 1) then {setAccTime (_acc/2); ctrlSetText [126, format [""X %1"",accTime]];};" default = false }; class CHN_BUTTON16 : CHN_DefButton { x = 0.235 y = 0.975 idc = 361 w = 0.01 h = 0.01 style = ST_CENTER colorBackground[] = {0.6, 0.6, 0.6, 0.65}; colorText[] = {0, 0, 0, 1}; font = "TahomaB" SizeEX = 0.012 text = "i" action = "if (CHN_ITOG) then {CHN_ITOG = false;ctrlShow [550,false];ctrlShow [551,false];ctrlShow [502,false];ctrlShow [208,false];ctrlShow [209,false];ctrlShow [210,false];ctrlShow [211,false];ctrlShow [472,false];} else {CHN_ITOG = true;ctrlShow [550,true];ctrlShow [551,true];ctrlShow [502,true];ctrlShow [208,true];ctrlShow [209,true];ctrlShow [210,true];ctrlShow [211,true];ctrlShow [472,true];};" default = false }; class CHN_BUTTON17 : CHN_DefButton { x = 0.725 y = 0.985 idc = 550 w = 0.03 h = 0.01 style = ST_CENTER colorText[] = {0, 0, 0, 1}; font = "TahomaB" SizeEX = 0.012 text = "Total" onButtonClick = "CHN_TOTTOG=true;CHN_ALITOG=false;CHN_CSLTOG = false;_ctrl=(_this select 0);_ctrl ctrlSetTextColor [1, 1, 1, 1];_di=ctrlParent _ctrl;_actrl = _di displayCtrl 551;_actrl ctrlSetTextColor [0, 0, 0, 1];_actrl = _di displayCtrl 472;_actrl ctrlSetTextColor [0, 0, 0, 1];"; default = false }; class CHN_BUTTON18 : CHN_DefButton { x = 0.725 y = 0.965 idc = 551 w = 0.03 h = 0.01 style = ST_CENTER colorText[] = {0, 1, 0, 1}; font = "TahomaB" SizeEX = 0.012 text = "Alive" onButtonClick = "CHN_ALITOG = true;CHN_TOTTOG=false;CHN_CSLTOG = false;_ctrl=(_this select 0);_ctrl ctrlSetTextColor [0, 1, 0, 1];_di=ctrlParent _ctrl;_actrl = _di displayCtrl 550;_actrl ctrlSetTextColor [0, 0, 0, 1];_actrl = _di displayCtrl 472;_actrl ctrlSetTextColor [0, 0, 0, 1];"; default = false }; class CHN_BUTTON19 : CHN_DefButton { x = 0.945 y = 0.135 idc = 362 w = 0.04 h = 0.01 style = ST_CENTER colorText[] = {0, 0, 0, 1}; font = "TahomaB" SizeEX = 0.012 text = "Statistics" onButtonClick = "[362] spawn CHN_TroopMon_VToggle2"; default = false }; class CHN_BUTTON20 : CHN_DefButton { x = 0.22 y = 0.36 idc = 363 w = 0.02 h = 0.01 style = ST_CENTER colorText[] = {0, 0, 0, 1}; font = "TahomaB" SizeEX = 0.012 text = "Teammark" action = "if (CHN_TMMTOG) then {CHN_TMMTOG = false} else {CHN_TMMTOG = true}"; default = false }; class CHN_BUTTON21 : CHN_DefButton { x = 0.10 y = 0.5 idc = 364 w = 0.018 h = 0.01 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.012 text = "<-" action = "[364] spawn CHN_TroopMon_VToggle; CHN_Viewmode=2;_actrl=CHN_DIAPNT displayCtrl 702;_actrl ctrlSetTextColor [1, 1, 1, 1];_actrl=CHN_DIAPNT displayCtrl 701;_actrl ctrlSetTextColor [0, 0, 0, 1];if (CHN_FIXTOG) then {CHN_CROT=CHN_CROT-1} else {CHN_CROT=CHN_CROT-10}"; default = false }; class CHN_BUTTON22 : CHN_DefButton { x = 0.12 y = 0.5 idc = 365 w = 0.018 h = 0.01 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.012 text = "->" action = "[365] spawn CHN_TroopMon_VToggle;CHN_Viewmode=2;_actrl=CHN_DIAPNT displayCtrl 702;_actrl ctrlSetTextColor [1, 1, 1, 1];_actrl=CHN_DIAPNT displayCtrl 701;_actrl ctrlSetTextColor [0, 0, 0, 1];if (CHN_FIXTOG) then {CHN_CROT=CHN_CROT+1} else {CHN_CROT=CHN_CROT+10}"; default = false }; class CHN_BUTTON23 : CHN_DefButton { x = 0.11 y = 0.488 idc = 366 w = 0.02 h = 0.01 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.012 text = "^" action = "[366] spawn CHN_TroopMon_VToggle;CHN_Viewmode=2;_actrl=CHN_DIAPNT displayCtrl 702;_actrl ctrlSetTextColor [1, 1, 1, 1];_actrl=CHN_DIAPNT displayCtrl 701;_actrl ctrlSetTextColor [0, 0, 0, 1];CHN_VERT=CHN_VERT+1;CHN_Viewmode=2;"; default = false }; class CHN_BUTTON24 : CHN_DefButton { x = 0.11 y = 0.512 idc = 367 w = 0.02 h = 0.01 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.012 text = "v" action = "[367] spawn CHN_TroopMon_VToggle;CHN_VERT=CHN_VERT-1;CHN_Viewmode=2;_actrl=CHN_DIAPNT displayCtrl 702;_actrl ctrlSetTextColor [1, 1, 1, 1];_actrl=CHN_DIAPNT displayCtrl 701;_actrl ctrlSetTextColor [0, 0, 0, 1];"; default = false }; class CHN_BUTTON25 : CHN_DefButton { x = 0.14 y = 0.488 idc = 470 w = 0.02 h = 0.01 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.012 text = "UP" action = "[470] spawn CHN_TroopMon_VToggle;CHN_CALT=CHN_CALT+1;CHN_Viewmode=2;_actrl=CHN_DIAPNT displayCtrl 702;_actrl ctrlSetTextColor [1, 1, 1, 1];_actrl=CHN_DIAPNT displayCtrl 701;_actrl ctrlSetTextColor [0, 0, 0, 1];"; default = false }; class CHN_BUTTON26 : CHN_DefButton { x = 0.14 y = 0.512 idc = 471 w = 0.02 h = 0.01 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.012 text = "DN" action = "[471] spawn CHN_TroopMon_VToggle;CHN_Viewmode=2;_actrl=CHN_DIAPNT displayCtrl 702;_actrl ctrlSetTextColor [1, 1, 1, 1];_actrl=CHN_DIAPNT displayCtrl 701;_actrl ctrlSetTextColor [0, 0, 0, 1];if (CHN_CALT>1) then {CHN_CALT=CHN_CALT-1};if ((CHN_CALT<=1) and (CHN_CALT>0.2)) then {CHN_CALT=CHN_CALT-0.2}"; default = false }; class CHN_BUTTON27 : CHN_DefButton { x = 0.725 y = 0.975 idc = 472 w = 0.03 h = 0.01 style = ST_CENTER colorText[] = {0, 0, 0, 1}; font = "TahomaB" SizeEX = 0.012 text = "Casual" onButtonClick = "CHN_CSLTOG = true;CHN_ALITOG = false;CHN_TOTTOG=false;_ctrl=(_this select 0);_ctrl ctrlSetTextColor [1, 0, 0, 1];_di=ctrlParent _ctrl;_actrl = _di displayCtrl 551;_actrl ctrlSetTextColor [0, 0, 0, 1];_actrl = _di displayCtrl 550;_actrl ctrlSetTextColor [0, 0, 0, 1];"; default = false }; class CHN_BUTTON28 : CHN_DefButton { x = 0.012 y = 0.54 idc = 890 w = 0.07 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.018 text = "FIR BY" onButtonClick = "[890] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON29 : CHN_DefButton { x = 0.012 y = 0.52 idc = 891 w = 0.07 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.018 text = "TAR BY" onButtonClick = "[891] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON30 : CHN_DefButton { x = 0.012 y = 0.48 idc = 892 w = 0.07 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.018 text = "FIR AT" onButtonClick = "[892] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON31 : CHN_DefButton { x = 0.17 y = 0.85 idc = 180 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "FAVS" onButtonClick = "[180] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON32 : CHN_DefButton { x = 0.17 y = 0.82 idc = 181 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "M" onButtonClick = "[181] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON33 : CHN_DefButton { x = 0.14 y = 0.5 idc = 183 w = 0.02 h = 0.01 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "FX" onButtonClick = "[183] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON34 : CHN_DefButton { x = 0.17 y = 0.484 idc = 184 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "S" onButtonClick = "[184] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON35 : CHN_DefButton { x = 0.17 y = 0.027 idc = 368 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "HEAL" onButtonClick = "WATCHUNIT setdammage 0"; default = false }; class CHN_BUTTON36 : CHN_DefButton { x = 0.17 y = 0.047 idc = 465 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "KILL" onButtonClick = "WATCHUNIT setdammage 1;_ctrl=(_this select 0);_ctrl ctrlSetTextColor [1, 0, 0, 1]"; default = false }; class CHN_BUTTON37 : CHN_DefButton { x = 0.17 y = 0.067 idc = 466 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "CAPT" onButtonClick = "if (captive WATCHUNIT) then {WATCHUNIT setcaptive false;_ctrl=(_this select 0);_ctrl ctrlSetTextColor [0, 0, 0, 1]} else {WATCHUNIT setcaptive true;_ctrl=(_this select 0);_ctrl ctrlSetTextColor [0, 1, 0, 1]}"; default = false }; class CHN_BUTTON38 : CHN_DefButton { x = 0.17 y = 0.086 idc = 467 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "STOP" onButtonClick = "if (stopped WATCHUNIT) then {WATCHUNIT stop false;_ctrl=(_this select 0);_ctrl ctrlSetTextColor [0, 0, 0, 1]} else {WATCHUNIT stop true;_ctrl=(_this select 0);_ctrl ctrlSetTextColor [1, 0, 0, 1]}"; default = false }; class CHN_BUTTON39 : CHN_DefButton { x = 0.17 y = 0.106 idc = 469 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "CEAS" onButtonClick = "if (CHN_CMTO) then {CHN_CMTO=false;WATCHUNIT setcombatmode CHN_OLCM;_ctrl=(_this select 0);_ctrl ctrlSetTextColor [0, 0, 0, 1]} else {CHN_CMTO=true;CHN_OLCM=combatmode WATCHUNIT;WATCHUNIT setcombatmode ""BLUE"";_ctrl=(_this select 0);_ctrl ctrlSetTextColor [1, 0, 0, 1]}"; default = false }; class CHN_BUTTON40 : CHN_DefButton { x = 0.17 y = 0.306 idc = 497 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "OPTN" onButtonClick = "[497] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON41 : CHN_DefButton { x = 0.17 y = 0.326 idc = 498 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "DISP" onButtonClick = "[498] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON42 : CHN_DefButton { x = 0.22 y = 0.53 idc = 750 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "UP" onButtonClick = "[750] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON43 : CHN_DefButton { x = 0.22 y = 0.568 idc = 751 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "DOWN" onButtonClick = "[751] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON44 : CHN_DefButton { x = 0.20 y = 0.549 idc = 752 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "LEFT" onButtonClick = "[752] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON45 : CHN_DefButton { x = 0.24 y = 0.549 idc = 753 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "RIGHT" onButtonClick = "[753] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON46 : CHN_DefButton { x = 0.22 y = 0.59 idc = 754 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "OK" onButtonClick = "[754] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON47 : CHN_DefButton { x = 0.55 y = 0.725 idc = 412 w = 0.035 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "CREATE" onButtonClick = "[412] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON48 : CHN_DefButton { x = 0.17 y = 0.345 idc = 297 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "PAUSE" onButtonClick = "[297] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON49 : CHN_DefButton { x = 0.25 y = 0.597 idc = 298 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "DONE" onButtonClick = "[298] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON50 : CHN_DefButton { x = 0.17 y = 0.975 idc = 299 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "MIN" onButtonClick = "[299] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON51 : CHN_DefButton { x = 0.264 y = 0.755 idc = 189 w = 0.029 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "SELECT" onButtonClick = "[189] spawn CHN_TroopMon_VToggle"; default = false }; class CHN_BUTTON52 : CHN_DefButton { x = 0.17 y = 0.125 idc = 155 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "ROT+" onButtonClick = "[155] spawn CHN_TroopMon_VToggle2"; default = false }; class CHN_BUTTON53 : CHN_DefButton { x = 0.17 y = 0.145 idc = 156 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "ROT-" onButtonClick = "[156] spawn CHN_TroopMon_VToggle2"; default = false }; class CHN_BUTTON54 : CHN_DefButton { x = 0.945 y = 0.69 idc = 177 w = 0.05 h = 0.01 style = ST_CENTER colorText[] = {0, 0, 0, 1}; font = "TahomaB" SizeEX = 0.012 text = "DETAILS2" onButtonClick = "[177] spawn CHN_TroopMon_VToggle2"; default = false }; class CHN_BUTTON55 : CHN_DefButton { x = 0.17 y = 0.89 idc = 178 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "CMDL" onButtonClick = "[178] spawn CHN_TroopMon_VToggle2"; default = false }; class CHN_BUTTON56 : CHN_DefButton { x = 0.2 y = 0.75 idc = 311 w = 0.025 h = 0.02 style = ST_CENTER colorText[] = {0, 0, 0, 1}; colorShadow[] = {0, 0, 0, 0}; colorBackground[] = {0.4, 0.4, 0.4, 0.75}; font = "TahomaB" SizeEX = 0.012 text = "EXEC" onButtonClick = "[311] spawn CHN_TroopMon_VToggle2"; default = true }; class CHN_TEXT1 : CHN_DefText { x = 0.87 y = 0.965 idc = 105 w = 0.15 h = 0.04 style = ST_LEFT colorText[] = {0, 0, 0, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text = "MissionTime" }; class CHN_TEXT2 : CHN_DefText { x = 0.818 y = 0.905 idc = 106 w = 0.15 h = 0.08 style = 48 colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text = "" }; class CHN_TEXT3 : CHN_DefText { x = 0.951 y = 0.788 idc = 107 w = 0.03 h = 0.03 style = 48 colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text ="" }; class CHN_TEXT4 : CHN_DefText { x = 0.975 y = 0.788 idc = 108 w = 0.03 h = 0.03 style = 48 colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text ="" }; class CHN_TEXT5 : CHN_DefText { x = 0.951 y = 0.826 idc = 109 w = 0.03 h = 0.03 style = 48 colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text ="" }; class CHN_TEXT6 : CHN_DefText { x = 0.975 y = 0.826 idc = 110 w = 0.03 h = 0.03 style = 48 colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text ="" }; class CHN_TEXT7 : CHN_DefText { x = 0.951 y = 0.864 idc = 111 w = 0.03 h = 0.03 style = 48 colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text ="" }; class CHN_TEXT8 : CHN_DefText { x = 0.975 y = 0.864 idc = 112 w = 0.03 h = 0.03 style = 48 colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text = "" }; class CHN_TEXT9 : CHN_DefText { x = 0.818 y = 0.709 idc = 113 w = 0.15 h = 0.08 style = 48 colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text = "" }; class CHN_TEXT10 : CHN_DefText { x = 0.137 y = 0.034 idc = 114 w = 0.02 h = 0.02 style = 48 colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text = "" }; class CHN_TEXT11 : CHN_DefText { x = 0.744 y = 0.92 idc = 115 w = 0.15 h = 0.04 style = ST_LEFT colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text = "TroopMon V0.8 beta" }; class CHN_TEXT12 : CHN_DefText { x = 0.013 y = 0.23 idc = 116 w = 0.15 h = 0.04 style = ST_LEFT colorText[] = CHN_COLOR8; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text = "Targettype" }; class CHN_TEXT13 : CHN_DefText { x = 0.013 y = 0.25 idc = 117 w = 0.15 h = 0.04 style = ST_LEFT colorText[] = CHN_COLOR8; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text = "Targetdist" }; class CHN_TEXT14 : CHN_DefText { x = 0.013 y = 0.27 idc = 118 w = 0.15 h = 0.04 style = ST_LEFT colorText[] = CHN_COLOR6; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text = "WoundedBy" }; class CHN_TEXT15 : CHN_DefText { x = 0.013 y = 0.29 idc = 119 w = 0.15 h = 0.04 style = ST_LEFT colorText[] = CHN_COLOR5; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text = "AimedBy" }; class CHN_TEXT16 : CHN_DefText { x = 0.026 y = -0.008 idc = 120 w = 0.15 h = 0.04 style = ST_LEFT colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.019 text = "TROOPMON V0.8" }; class CHN_TEXT17 : CHN_DefText { x = 0.41 y = 0.83 idc = 121 w = 0.15 h = 0.04 style = ST_LEFT colorText[] = CHN_COLOR2; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.022 text = "" }; class CHN_TEXT18 : CHN_DefText { x = 0.26 y = 0.965 idc = 122 w = 0.15 h = 0.04 style = ST_LEFT colorText[] = {0, 0, 0, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text = "WEST" }; class CHN_TEXT19 : CHN_DefText { x = 0.39 y = 0.965 idc = 123 w = 0.15 h = 0.04 style = ST_LEFT colorText[] = {0, 0, 0, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text = "EAST" }; class CHN_TEXT20 : CHN_DefText { x = 0.529 y = 0.965 idc = 124 w = 0.15 h = 0.04 style = ST_LEFT colorText[] = {0, 0, 0, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text = "RES" }; class CHN_TEXT21 : CHN_DefText { x = 0.663 y = 0.965 idc = 125 w = 0.15 h = 0.04 style = ST_LEFT colorText[] = {0, 0, 0, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text = "CIV" }; class CHN_TEXT22 : CHN_DefText { x = 0.815 y = 0.965 idc = 126 w = 0.15 h = 0.04 style = ST_LEFT colorText[] = {1, .9, .9, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text = "X 1" }; class CHN_TEXT23 : CHN_DefText { x = 0.815 y = 0.965 idc = 127 w = 0.15 h = 0.04 style = ST_LEFT colorText[] = {1, .9, .9, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text = "Firing at:" }; class CHN_TEXT24 : CHN_DefText { x = 0.815 y = 0.965 idc = 128 w = 0.15 h = 0.04 style = ST_LEFT colorText[] = {1, .9, .9, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.012 text = "FiredUpon by:" }; class CHN_TEXT25 : CHN_DefText { x = 0.37 y = 0.8 idc = 129 w = 0.5 h = 0.04 style = ST_LEFT colorText[] = {1, .9, .9, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.04 text = "" }; class CHN_TEXT26 : CHN_DefText { x = 0.37 y = 0.6 idc = 725 w = 0.3 h = 0.2 style = ST_LEFT colorText[] = {1, 0, 0, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.04 text = "INCOMING MISSILE!" }; class CHN_TEXT27 : CHN_DefText { x = 0.37 y = 0.85 idc = 726 w = 0.25 h = 0.04 style = ST_LEFT colorText[] = {.5, 0, 0, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.021 text = "Missile fired by:" }; class CHN_TEXT28 : CHN_DefText { x = 0.301 y = 0.605 idc = 710 w = 0.25 h = 0.04 style = ST_LEFT colorText[] = {0, 0, 0, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" sizeEx = 0.015; text = "WP Type" }; class CHN_TEXT29 : CHN_DefText { x = 0.356 y = 0.605 idc = 711 w = 0.25 h = 0.04 style = ST_LEFT colorText[] = {0, 0, 0, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" sizeEx = 0.015; text = "Mode" }; class CHN_TEXT30 : CHN_DefText { x = 0.409 y = 0.605 idc = 712 w = 0.25 h = 0.04 style = ST_LEFT colorText[] = {0, 0, 0, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" sizeEx = 0.015; text = "Behaviour" }; class CHN_TEXT31 : CHN_DefText { x = 0.463 y = 0.605 idc = 713 w = 0.25 h = 0.04 style = ST_LEFT colorText[] = {0, 0, 0, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" sizeEx = 0.015; text = "Formation" }; class CHN_TEXT32 : CHN_DefText { x = 0.532 y = 0.605 idc = 714 w = 0.25 h = 0.04 style = ST_LEFT colorText[] = {0, 0, 0, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" sizeEx = 0.015; text = "Speed" }; class CHN_TEXT33 : CHN_DefText { x = 0.879 y = 0.911 idc = 459 w = 0.045 h = 0.06 style = 48 colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text = "" }; class CHN_TEXT34 : CHN_DefText { x = 0.965 y = 0.92 idc = 460 w = 0.02 h = 0.02 style = 48 colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text = "" }; class CHN_TEXT35 : CHN_DefText { x = 0.98 y = 0.92 idc = 461 w = 0.02 h = 0.02 style = 48 colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text = "" }; class CHN_TEXT36 : CHN_DefText { x = 0.965 y = 0.94 idc = 462 w = 0.02 h = 0.02 style = 48 colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text = "" }; class CHN_TEXT37 : CHN_DefText { x = 0.98 y = 0.94 idc = 463 w = 0.02 h = 0.02 style = 48 colorText[] = {1, 1, 1, 1}; colorBackground[] = {0, 0, 0, 0}; font = "TahomaB" SizeEX = 0.015 text = "" }; class CHN_LIST1 : CHN_DefListBox { idc = 204; x = 0.011; y = 0.832; w = 0.15; h = 0.151; sizeEx = 0.012; colorSelectBackground[] = {0,0,.14,.16}; colorSelectBackground2[] = {.2,.2,.44,.26}; onLBSelChanged = "[_this select 0,204] spawn CHN_TroopMon_LBAlt"; }; class CHN_LIST2 : CHN_DefListBox { idc = 205; x = 0.011; y = 0.623; w = 0.15; h = 0.175; sizeEx = 0.012; colorSelectBackground[] = {0,0,.14,.16}; colorSelectBackground2[] = {0,0,.14,.16}; onLBSelChanged = "[_this select 0,205] spawn CHN_TroopMon_LBAlt"; }; class CHN_LIST3 : CHN_DefListBox { idc = 206; style = 16; x = 0.097; y = 0.372; w = 0.064; h = 0.10; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0,0,.14,.16}; colorSelectBackground2[] = {0,0,.14,.16}; onLBSelChanged = "[_this select 0,206] spawn CHN_TroopMon_LBAlt"; }; class CHN_LIST4 : CHN_DefListBox { idc = 207; style = 16; x = 0.097; y = 0.552; w = 0.064; h = 0.07; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0,0,.14,.16}; colorSelectBackground2[] = {0,0,.14,.16}; onLBSelChanged = "[_this select 0,207] spawn CHN_TroopMon_LBAlt"; }; class CHN_LIST5 : CHN_DefListBox { idc = 208; style = 16; x = 0.25; y = 0.882; w = 0.09; h = 0.09; colorSelect[] = {0, 0, 0, 1}; colorSelect2[] = {0, 0, 0, 1}; colorSelectBackground[] = {0, 0, 0, 0}; colorSelectBackground2[] = {0, 0, 0, 0}; onLBSelChanged = "[_this select 0,208] spawn CHN_TroopMon_LBAlt"; }; class CHN_LIST6 : CHN_DefListBox { idc = 209; style = 16; x = 0.38; y = 0.882; w = 0.09; h = 0.09; colorSelect[] = {0, 0, 0, 1}; colorSelect2[] = {0, 0, 0, 1}; colorSelectBackground[] = {0, 0, 0, 0}; colorSelectBackground2[] = {0, 0, 0, 0}; onLBSelChanged = "[_this select 0,209] spawn CHN_TroopMon_LBAlt"; }; class CHN_LIST7 : CHN_DefListBox { idc = 210; style = 16; x = 0.51; y = 0.882; w = 0.09; h = 0.09; colorSelect[] = {0, 0, 0, 1}; colorSelect2[] = {0, 0, 0, 1}; colorSelectBackground[] = {0, 0, 0, 0}; colorSelectBackground2[] = {0, 0, 0, 0}; onLBSelChanged = "[_this select 0,210] spawn CHN_TroopMon_LBAlt"; }; class CHN_LIST8 : CHN_DefListBox { idc = 211; style = 16; x = 0.64; y = 0.882; w = 0.09; h = 0.09; colorSelect[] = {0, 0, 0, 1}; colorSelect2[] = {0, 0, 0, 1}; colorSelectBackground[] = {0, 0, 0, 0}; colorSelectBackground2[] = {0, 0, 0, 0}; onLBSelChanged = "[_this select 0,211] spawn CHN_TroopMon_LBAlt"; }; class CHN_LIST9 : CHN_DefListBox { idc = 212; style = 16; x = 0.78; y = 0.79; w = 0.22; h = 0.14; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; }; class CHN_LIST10 : CHN_DefListBox { idc = 213; style = 16; x = 0.78; y = 0.19; w = 0.2; h = 0.7; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; }; class CHN_LIST11 : CHN_DefListBox { idc = 214; style = 16; x = 0.005; y = 0.04; w = 0.15; h = 0.3; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; onLBSelChanged = "[214] spawn CHN_TroopMon_CreateCenter"; }; class CHN_LIST12 : CHN_DefListBox { idc = 215; style = 16; x = 0.2; y = 0.01; w = 0.25; h = 0.7; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; }; class CHN_LIST13 : CHN_DefCombo { type = 4 style=0; x = 0.17 y = 0.504 idc = 190 w = 0.025 h = 0.02 sizeEx = 0.012; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; onLBSelChanged = "[190] spawn CHN_TroopMon_VToggle"; }; class CHN_LIST14 : CHN_DefListBox { idc = 615; style = 16; x = 0.17; y = 0.17; w = 0.1; h = 0.15; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; onLBSelChanged = "[615] spawn CHN_TroopMon_VToggle"; }; class CHN_LIST15 : CHN_DefListBox { idc = 616; style = 16; x = 0.258; y = 0.17; w = 0.1; h = 0.15; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; onLBSelChanged = "[616] spawn CHN_TroopMon_VToggle"; }; class CHN_LIST16 : CHN_DefCombo { type = 4 style=0; x = 0.336 y = 0.17 idc = 617 w = 0.05 h = 0.012 sizeEx = 0.012; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; onLBSelChanged = "[617] spawn CHN_TroopMon_VToggle"; }; class CHN_LIST17 : CHN_DefCombo { type = 4 style=0; x = 0.336 y = 0.185 idc = 618 w = 0.05 h = 0.012 sizeEx = 0.012; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; onLBSelChanged = "[618] spawn CHN_TroopMon_VToggle"; }; class CHN_LIST18 : CHN_DefCombo { type = 4 style=0; x = 0.336 y = 0.2 idc = 619 w = 0.05 h = 0.012 sizeEx = 0.012; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; onLBSelChanged = "[619] spawn CHN_TroopMon_VToggle"; }; class CHN_LIST19 : CHN_DefCombo { type = 4 style=0; x = 0.336 y = 0.215 idc = 620 w = 0.05 h = 0.012 sizeEx = 0.012; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; onLBSelChanged = "[620] spawn CHN_TroopMon_VToggle"; }; class CHN_LIST20 : CHN_DefListBox { idc = 621; style = 16; x = 0.59; y = 0.08; w = 0.1; h = 0.15; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; onLBSelChanged = "[621] spawn CHN_TroopMon_VToggle"; }; class CHN_LIST21 : CHN_DefListBox { style=16; x = 0.17 y = 0.617 idc = 622 w = 0.1 h = 0.1 colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; onLBSelChanged = "[622] spawn CHN_TroopMon_VToggle"; }; class CHN_LIST22 : CHN_DefCombo { type = 4 style=0; x = 0.31 y = 0.635 idc = 730 w = 0.05 h = 0.012 sizeEx = 0.012; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; onLBSelChanged = "[730] spawn CHN_TroopMon_VToggle"; }; class CHN_LIST23 : CHN_DefCombo { type = 4 style=0; x = 0.362 y = 0.635 idc = 731 w = 0.05 h = 0.012 sizeEx = 0.012; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; onLBSelChanged = "[731] spawn CHN_TroopMon_VToggle"; }; class CHN_LIST24 : CHN_DefCombo { type = 4 style=0; x = 0.415 y = 0.635 idc = 732 w = 0.05 h = 0.012 sizeEx = 0.012; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; onLBSelChanged = "[732] spawn CHN_TroopMon_VToggle"; }; class CHN_LIST25 : CHN_DefCombo { type = 4 style=0; x = 0.469 y = 0.635 idc = 733 w = 0.05 h = 0.012 sizeEx = 0.012; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; onLBSelChanged = "[733] spawn CHN_TroopMon_VToggle"; }; class CHN_LIST26 : CHN_DefCombo { type = 4 style=0; x = 0.538 y = 0.635 idc = 734 w = 0.05 h = 0.012 sizeEx = 0.012; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; onLBSelChanged = "[734] spawn CHN_TroopMon_VToggle"; }; class CHN_LIST27 : CHN_DefListBox { style=16; x = 0.17 y = 0.717 idc = 188 w = 0.1 h = 0.15 colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; onLBSelChanged = "[188] spawn CHN_TroopMon_VToggle"; }; class CHN_LIST28 : CHN_DefListBox { idc = 216; style = 16; x = 0.36; y = 0.01; w = 0.25; h = 0.7; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; }; class CHN_LIST29 : CHN_DefListBox { idc = 217; style = 16; x = 0.52; y = 0.01; w = 0.25; h = 0.7; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; }; class CHN_LIST30 : CHN_DefListBox { idc = 218; style = 16; x = 0.68; y = 0.01; w = 0.25; h = 0.7; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; }; class CHN_LIST31 : CHN_DefListBox { idc = 219; style = 16; x = 0.78; y = 0.19; w = 0.2; h = 0.7; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; }; class CHN_LIST32 : CHN_DefCombo { type = 4 style=0; x = 0.92 y = 0.15 idc = 221 w = 0.08 h = 0.012 sizeEx = 0.012; colorSelect[] = {1, 1, 1, 1}; colorSelect2[] = {1, 1, 1, 1}; colorSelectBackground[] = {0.5, 0.5, 0.7, 0.75}; colorSelectBackground2[] = {0.5, 0.5, 0.7, 0.75}; onLBSelChanged = "[221] spawn CHN_TroopMon_VToggle2"; }; class CHN_EDIT1 : CHN_Edit { type = CT_EDIT; idc = 179; x = 0.2 y = 0.7 w = 0.5 h = 0.04 style = ST_LEFT; font = FontM; sizeEx = 0.02; colorText[] = {1, 1, 1, 1}; colorSelection[] = {0.5, 0.5, 0.5, 1}; autocomplete = false; text = ""; }; };; dialogCamera.sqs ; adjusts camera parameters ; 0 = left ; 1 = right ; 2 = up ; 3 = down ; 5 = destroy camera ; 6 = zoom in ; 7 = zoom out ; _dir = direction of camera, no need to change! ; _step = step size of west, north, a.s.o. bigger values make the camera move further distances ; _commit = duration of camera transition, smaller values make the camera move faster ; _maxzoom = highest possible zoom (smaller values = better zoom) ; _minzoom = smallest possible zoom (bigger values = further away) _dir = [[-1,0],[1,0],[0,1],[0,-1]] _step = SAT_STEP * SAT_HEIGHT _commit = SAT_COMMIT _minzoom = SAT_MINZOOM _maxzoom = SAT_MAXZOOM _option = _this select 0 ?(_option >= 0 && _option <= 3): goto "move" ?(_option == 5): goto "DesCam" ?(_option == 6): goto "zoomin" ?(_option == 7): goto "zoomout" exit ;----------------------------------------- #move SAT_stopTrack = true _pos = getpos camlogic _x = (_pos select 0) _y = _pos select 1 _actdir = _dir select _option _i = _step * SAT_CAMERA_FOV camlogic setpos [_x + _i * (_actdir select 0), _y + _i * (_actdir select 1)] SAT_CAM camSetTarget getpos camlogic SAT_CAM camSetRelPos [0, (SAT_HEIGHT / SAT_RATIO), SAT_HEIGHT] SAT_CAM camCommit _commit exit ;----------------------------------------- #DesCam SAT_CAM CameraEffect ["Terminate", "Back"] camdestroy SAT_CAM SAT_CAMERA_ACTIVE = false exit ;----------------------------------------- ;----------------------------------------- #zoomin SAT_HEIGHT = SAT_HEIGHT / 1.3 ?(SAT_HEIGHT < _maxzoom): SAT_HEIGHT = _maxzoom ctrlSetText [223, format["%1", SAT_HEIGHT]] SAT_CAM camSetRelPos [0, (SAT_HEIGHT / SAT_COEFF), SAT_HEIGHT] SAT_CAM camCommit _commit exit ;----------------------------------------- ;----------------------------------------- #zoomout SAT_HEIGHT = SAT_HEIGHT * 1.3 ?(SAT_HEIGHT > _minzoom): SAT_HEIGHT = _minzoom ctrlSetText [223, format["%1", SAT_HEIGHT]] SAT_CAM camSetRelPos [0, (SAT_HEIGHT / SAT_COEFF), SAT_HEIGHT] SAT_CAM camCommit _commit exit ;----------------------------------------- _idc = _this select 0 #loop ctrlShow [_idc, TRUE] ~SAT_BLINK ctrlShow [_idc, FALSE] ~SAT_BLINK ?dialog: goto "loop"_idc = _this select 0 #loop ctrlShow [_idc, TRUE] ~SAT_BLINK_TRACK ctrlShow [_idc, FALSE] ~SAT_BLINK_TRACK ?(!SAT_stopTrack && dialog): goto "loop"_objectslist = _this ; copies thislist to SAT_ALLOBJECTS ; you can't use thislist directly ; as the index number of an unit ; will change and the previous ; of the next unit won't be the same! _c = count _objectslist SAT_ALLOBJECTS = [] _i = 0 #loop _tmp = _objectslist select _i SAT_ALLOBJECTS = SAT_ALLOBJECTS + [_tmp] _i = _i + 1 ?(_i < _c): goto "loop" SAT_ALLOBJECTS = SAT_ALLOBJECTS - [camlogic]; createCamera.sqs camlogic setpos SAT_POS lbSetCurSel [501, 0] "satzone" setmarkerpos SAT_POS SAT_CAMERA_ACTIVE = true SAT_CAM = "camera" camcreate SAT_POS SAT_CAM camSetPos SAT_POS SAT_CAM camSetTarget camlogic SAT_CAM camSetRelPos [0, (SAT_HEIGHT / SAT_RATIO), SAT_HEIGHT] SAT_CAM CameraEffect ["INTERNAL", "BACK"] SAT_CAM camSetFov SAT_CAMERA_FOV SAT_CAM camCommit 0 @CamCommitted SAT_CAM showcinemaborder false 206 exec "satellite\zoomSlider.sqs" @!dialog || !alive player closeDialog 0 [5] exec "satellite\adjustCamera.sqs" exit closeDialog 0 #sat ~1 _ok = createDialog "DlgSatellite" ?(!_ok): hint "Error"; exit [200, 206] exec "satellite\blinks.sqs" [] exec "satellite\createCamera.sqs" ctrlShow [224, false] ?SAT_NOISE_OCCUR: [206] exec "satellite\noise.sqs" exitcamLogic="Logic" createVehicle [0,0,0]; ; Satellite global Values ; default Zoom (height) value SAT_HEIGHT = 200 ; height/y-distance-ratio (problems with camera shaking) SAT_RATIO = -2 ; camCommit-duration SAT_COMMIT = 1 ; camera transition steps (the bigger, the further the camera moves) SAT_STEP = 0.2 ; max and min-zoom (I think that these are obsolete since ; zoom is made by camSetFov and the slider) SAT_MINZOOM = 400 SAT_MAXZOOM = 10 ; default position for Satellite (you may set SAT_POS with i.e. onMapSingleClick, ; so satellite position is more flexible!) SAT_POS = getpos player ; blink frequency for the red dot SAT_BLINK = 0.5 ; blink frequency for "tracking" SAT_BLINK_TRACK = 0.3 ; probability of screen noise (0 means always, 1 means never!) SAT_PROB = 0.99 ; max duration of screen noise SAT_MAX_DUR_NOISE = 1 ; should noise occur? SAT_NOISE_OCCUR = true ; Satellite Camera FOV SAT_CAMERA_FOV = 0.7; _noise == list of noise pictures, you may add as many as you want! _noise = ["images\rauschen.paa", "images\rauschen2.paa", "images\rauschen3.paa"] ; _seq == noise sequence _seq = [0, 2, 1, 2, 1, 0, 2, 1] _c = count _seq #loop ~1 ?(random 1 < SAT_PROB): goto "loop" _dur = random SAT_MAX_DUR_NOISE _starttime = time #loop2 _i = 0 #loop3 _pic = _noise select (_seq select _i) ctrlSetText [225, _pic] _i = _i + 1 ~0.1 ?(_i < _c): goto "loop3" ?(time - _starttime < _dur): goto "loop2" ctrlSetText [225, ""] ?dialog: goto "loop";***************** satmapclick.sqs ********************* ;{if (player hasWeapon _x) then { goto "sat" } } foreach six_radios ;hint localize "STR_nosat"; exit #sat hint "Click on map where you want the satellite positioned." _hpos = _this select 0 mapClickArray = []; onMapSingleClick "mapClickArray = mapClickArray + [_pos];hint format [""Satellite requested at %1.\nStand by, processing..."",[_pos] call six_fGridCoord]"; @ (count mapClickArray) > 0 _ARAY = MAPCLICKARRAY SELECT 0 _CX = _ARAY SELECT 0 _CY = _ARAY SELECT 1 SAT_POS = [_cx,_cy] onMapSingleClick "" @(preloadCamera _ARAY) ~2 ;***************** end map click ********************* [] exec "satellite\createDialog.sqs" exit _objectslist=list six_trig_main _c0 = count _objectslist SAT_ALLOBJECTS = [] _i = 0 #loop0 _tmp = _objectslist select _i SAT_ALLOBJECTS = SAT_ALLOBJECTS + [_tmp] _i = _i + 1 ?(_i < _c0): goto "loop0" SAT_ALLOBJECTS = SAT_ALLOBJECTS - [camlogic] SAT_stopTrack = false ; get nearest moving object _c = count SAT_ALLOBJECTS _i = 0 _x = 0 _dist = 1000 _maxdist = 200 #loop1 _tmp = SAT_ALLOBJECTS select _i ?(_tmp distance camlogic < _dist): _dist = _tmp distance camlogic; _x = _i _i = _i + 1 ?(_i < _c): goto "loop1" _object = SAT_ALLOBJECTS select _x ?(_dist > _maxdist): titleText ["No Object found!", "PLAIN DOWN"]; exit SAT_CAM camSetTarget getpos _object [224, 206] exec "satellite\blinkt.sqs" #loop ctrlSetText [500,format ["Current Satellite Position : %1",[getpos _object] call six_fGridCoord]] SAT_CAM camSetTarget getpos _object SAT_CAM camSetRelPos [0, (SAT_HEIGHT / SAT_RATIO), SAT_HEIGHT] SAT_CAM camCommit 0.1 ?(!SAT_stopTrack): goto "loop" camlogic setpos getpos _object SAT_CAM camSetTarget getpos camlogic SAT_CAM camSetRelPos [0, (SAT_HEIGHT / SAT_RATIO), SAT_HEIGHT] SAT_CAM camCommit SAT_COMMIT_idc = _this sliderSetRange [_idc, 0.05, 1] sliderSetPosition [_idc, SAT_CAMERA_FOV] sliderSetSpeed [_idc, 0.05, 0.1] #loop _pos = sliderPosition _idc @_pos != sliderPosition _idc || !dialog ?!dialog: exit SAT_CAMERA_FOV = sliderPosition _idc SAT_CAM camSetFOV SAT_CAMERA_FOV SAT_CAM camCommit 0 goto "loop"/////////////////////////////////////////////////////////// // ArmA - actionmonitor.sqf v1.0 Original by BN880, converted by Sickboy (sb_at_6thSense.eu), 6th Sense - Share the Spirit // THIS IS FOR PLAYER ACTIONS ONLY CoC Bn880 11/2003 /////////////////////////////////////////////////////////// private ["_run","_actions","_i","_v","_script"]; _script = "actionmonitor.sqf"; _run = true; while{_run} do { _actions=[]; _i=0; _veh=vehicle player; _c=count CoC_ActionList; {_actions set[_i,call compile ("vehicle "+_x)];_i=_i+1}foreach CoC_ActionList; waitUntil {vehicle player!=_veh||!(alive player)||count CoC_ActionList!=_c}; _i=0; {_veh removeaction _x;player removeaction _x;}foreach _actions; if(six_dead) then { _run = false }; sleep 2; };; ; fademusic.sqs v1.0 by Sickboy (sb_at_6thSense.eu), 6th Sense - Share the Spirit ; /////////////////////////////////////////////////////////// // ArmA - Jump.sqf v0.2Alpha by Sickboy (sb_at_6thSense.eu) // Add via addaction /////////////////////////////////////////////////////////// private ["_pos","_x","_y","_z","_j","_nz","_npos","_dam"]; // Jump Height: _j = 1.8; _dam = getDammage player; if(_dam > 0.5) then { if(SIX_DEBUG_MISS) then { hint "Seek medical Assistance\nCan't Jump!" }; } else { _pos = getpos player; _x = _pos select 0; _y = _pos select 1; _z = _pos select 2; _nz = _z + _j; _npos = [_x,_y,_nz]; if(SIX_DEBUG_MISS) then { hint format["Jump!\nPPos: %1\nOPos: %2",_pos,_npos]; }; player setpos _npos; };;?!(local server) : exit ; force a chopper to land v1.3 ; changes: ; 1.4 - removed the double check to ensure the waypoint is not activated. was causing issues. ; 1.3 - added the variables var_getout, var_unload and var_eject which will make the units ; in the chopper either getout (all units), unload (all units bar driver and gunner) or ; eject (all units bail out at one second intervals, gunner and driver last) ; 1.2 - script can be cancelled at any time by setting 'var_cancel_landing' equal to the chopper ; 1.2 - the 'fly out height' can be set via the variable '_flyouthgt' ; 1.1 - added the velocity check to ensure the chopper has slowed before touching down ; 1.1 - added the check for Ch47D so the bigger chopper lands well ; by snYpir ; can be called with: ; [unit to land,position where it is to land (should be a waypoint)] exec "land_chopper.sqs" ; to cancel a landing: ; set 'var_cancel_landing = choppername' in the on-activation field of the waypoint previously passed ; into this script ; to force all to disembark from the chopper ; set 'var_getout = choppername' in the on-activation field of the waypoint previously passed ; into this script ; to force cargo units to disembark from the chopper ; set 'var_unload = choppername' in the on-activation field of the waypoint previously passed ; into this script ; to force all to eject from the chopper ; set 'var_eject = choppername' in the on-activation field of the waypoint previously passed ; into this script or anywhere for that matter ; this is the unit we want to force to land _unit = _this select 0 ; this is a position where the chopper will land (expected to be the chopper's waypoint) _landingpos = _this select 1 ; this is the distance away from _landingpos to make the chopper drop to earth ; needs to be big for larger, less manouverable choppers (40 for chinooks) ; 30 is good for blackhawks and 20 is good for hueys. Default is 30 _mindis = 30 ; this is the height the chopper will hover once 'landed' (minimum is 2). If you increase this value, ; the chopper will hover off the ground _minheight = 2 ; this is the maximum speed that the chopper will touch down at. it will not touch down until it is ; going slower than this speed. increase for flare landings (to around 25). careful, some choppers (such ; as blackhawks) don't do flare landings very well. The default for this value is 15. _landvel = 15 ; this is the 'fly out height' if the landing is cancelled _flyouthgt = 30 ; this check can be taken out if you wish. it simply increases the landing distance and slows the ; landing speed for chinooks. you could add other 'big' helicopter types if you wish ? "Ch47D" counttype [_unit] == 1 : _mindis = _mindis * 2; _landvel = _landvel / 2 ; ----------- edit beyond here at own risk ------------ ; get initial height of chopper _hgt = getpos _unit select 2 _driver = driver _unit ;_gunner = gunner _unit ;_grp = group _driver _driver lockwp true _getout = false _eject = false _cancel = false _unload = false ? _minheight < 2 : _minheight = 2 ; get distance chopper to landing pos at start _x1 = _landingpos select 0 _y1 = _landingpos select 1 _x2 = getPos _unit select 0 _y2 = getPos _unit select 1 _dis = sqrt( (_x1-_x2)^2 + (_y1-_y2)^2 ) ; determine ratio _ratio = _dis / _hgt #loop _x1 = _landingpos select 0 _y1 = _landingpos select 1 _x2 = getPos _unit select 0 _y2 = getPos _unit select 1 _dis = sqrt( (_x1-_x2)^2 + (_y1-_y2)^2 ) _unit flyinheight (_dis / _ratio) ~0.1 ? _dis < _mindis : goto "end" ? var_cancel_landing == _unit : _cancel = true; var_cancel_landing = nil; goto "end2" ? var_eject == _unit : _eject = true; var_eject = nil; goto "end2" ? var_getout == _unit : _getout = true; var_getout = nil ? var_unload == _unit : _unload = true; var_unload = nil ? !alive _driver : exit ; has the unit slowed (maybe missed the waypoint?) drop the unit where it is _x = ((velocity _unit select 0) * sin (getdir _unit)) * 3.445 _y = ((velocity _unit select 1) * cos (getdir _unit)) * 3.445 ? (_x + _y) < 20 : goto "end" goto "loop" #end ; drop the chopper close to the ground _unit flyinheight _minheight * 2 ; pause until the chopper has almost stopped #velloop ~0.1 ? var_cancel_landing == _unit : _cancel = true; var_cancel_landing = nil; goto "end2" ? var_eject == _unit : _eject = true; var_eject = nil; goto "end2" ? var_getout == _unit : _getout = true; var_getout = nil ? var_unload == _unit : _unload = true; var_unload = nil _dir = getdir _unit _x = ((velocity _unit select 0) * sin _dir) * 3.445 _y = ((velocity _unit select 1) * cos _dir) * 3.445 _xy = _x + _y ? _xy > _landvel : goto "velloop" ; put the chopper on the ground _unit flyinheight _minheight #endloop ? var_cancel_landing == _unit : _cancel = true; var_cancel_landing = nil; goto "end2" ? var_eject == _unit : _eject = true; var_eject = nil; goto "end2" ? var_getout == _unit && !_getout : _getout = true; var_getout = nil; goto "end2" ? _getout : goto "end2" ? var_unload == _unit && !_unload : _unload = true; var_unload = nil; goto "end2" ? _unload : goto "end2" ? !alive _driver : exit ~0.1 goto "endloop" #end2 ; added in 1.3 - force all of the occupants of _unit to get out? ? _cancel : goto "nogetout" ? _eject : goto "ejectnow" ; wait until the chopper is on the ground? @getpos _unit select 2 < 2 ; get units out of chopper #ejectnow _ejectpause = 0.5 ? _eject : _ejectpause = 1 _aR_crew = crew _unit ; eject units _i = 0 #loop_eject ? (_aR_crew select _i) != _driver : (_aR_crew select _i) action ["EJECT", _unit]; unassignvehicle (_aR_crew select _i) ~_ejectpause _i = _i + 1 ? _i != count _aR_crew : goto "loop_eject" ; get the pilot and gunner out if not unloading ? _unload : goto "unload" _driver action ["EJECT", _unit]; unassignvehicle _driver #unload @(count crew _unit == 0 && !_unload) || (count crew _unit == 1 && _unload) #nogetout ; make sure the message gets through and the waypoint is unlocked _pos = getpos _driver #stupidailoop _unit flyinheight _flyouthgt _driver lockwp false ~0.5 _x1 = _pos select 0 _y1 = _pos select 1 _x2 = getPos (leader _grp) select 0 _y2 = getPos (leader _grp) select 1 _dis = sqrt( (_x1-_x2)^2 + (_y1-_y2)^2 ) ? _dis < 10 : goto "stupidailoop" exit;?!(local server) : exit ~ 1 ; force a chopper to land v1.3 ; changes: ; 1.4 - removed the double check to ensure the waypoint is not activated. was causing issues. ; 1.3 - added the variables var_getout, var_unload and var_eject which will make the units ; in the chopper either getout (all units), unload (all units bar driver and gunner) or ; eject (all units bail out at one second intervals, gunner and driver last) ; 1.2 - script can be cancelled at any time by setting 'var_cancel_landing' equal to the chopper ; 1.2 - the 'fly out height' can be set via the variable '_flyouthgt' ; 1.1 - added the velocity check to ensure the chopper has slowed before touching down ; 1.1 - added the check for Ch47D so the bigger chopper lands well ; by snYpir ; can be called with: ; [unit to land,position where it is to land (should be a waypoint)] exec "land_chopper.sqs" ; to cancel a landing: ; set 'var_cancel_landing = choppername' in the on-activation field of the waypoint previously passed ; into this script ; to force all to disembark from the chopper ; set 'var_getout = choppername' in the on-activation field of the waypoint previously passed ; into this script ; to force cargo units to disembark from the chopper ; set 'var_unload = choppername' in the on-activation field of the waypoint previously passed ; into this script ; to force all to eject from the chopper ; set 'var_eject = choppername' in the on-activation field of the waypoint previously passed ; into this script or anywhere for that matter ; this is the unit we want to force to land _unit = _this select 0 ; this is a position where the chopper will land (expected to be the chopper's waypoint) _landingpos = _this select 1 ; this is the distance away from _landingpos to make the chopper drop to earth ; needs to be big for larger, less manouverable choppers (40 for chinooks) ; 30 is good for blackhawks and 20 is good for hueys. Default is 30 _mindis = 30 ; this is the height the chopper will hover once 'landed' (minimum is 2). If you increase this value, ; the chopper will hover off the ground _minheight = 2 ; this is the maximum speed that the chopper will touch down at. it will not touch down until it is ; going slower than this speed. increase for flare landings (to around 25). careful, some choppers (such ; as blackhawks) don't do flare landings very well. The default for this value is 15. _landvel = 15 ; this is the 'fly out height' if the landing is cancelled _flyouthgt = 30 ; this check can be taken out if you wish. it simply increases the landing distance and slows the ; landing speed for chinooks. you could add other 'big' helicopter types if you wish ? "Ch47D" counttype [_unit] == 1 : _mindis = _mindis * 2; _landvel = _landvel / 2 ; ----------- edit beyond here at own risk ------------ ; get initial height of chopper _hgt = getpos _unit select 2 _driver = driver _unit ;_gunner = gunner _unit ;_grp = group _driver _driver lockwp true _getout = false _eject = false _cancel = false _unload = false ? _minheight < 2 : _minheight = 2 ; get distance chopper to landing pos at start _x1 = _landingpos select 0 _y1 = _landingpos select 1 _x2 = getPos _unit select 0 _y2 = getPos _unit select 1 _dis = sqrt( (_x1-_x2)^2 + (_y1-_y2)^2 ) ; determine ratio _ratio = _dis / _hgt #loop _x1 = _landingpos select 0 _y1 = _landingpos select 1 _x2 = getPos _unit select 0 _y2 = getPos _unit select 1 _dis = sqrt( (_x1-_x2)^2 + (_y1-_y2)^2 ) _unit flyinheight (_dis / _ratio) ~0.1 ? _dis < _mindis : goto "end" ? var_cancel_landing == _unit : _cancel = true; var_cancel_landing = nil; goto "end2" ? var_eject == _unit : _eject = true; var_eject = nil; goto "end2" ? var_getout == _unit : _getout = true; var_getout = nil ? var_unload == _unit : _unload = true; var_unload = nil ? !alive _driver : exit ; has the unit slowed (maybe missed the waypoint?) drop the unit where it is _x = ((velocity _unit select 0) * sin (getdir _unit)) * 3.445 _y = ((velocity _unit select 1) * cos (getdir _unit)) * 3.445 ? (_x + _y) < 20 : goto "end" goto "loop" #end ; drop the chopper close to the ground _unit flyinheight _minheight * 2 ; pause until the chopper has almost stopped #velloop ~0.1 ? var_cancel_landing == _unit : _cancel = true; var_cancel_landing = nil; goto "end2" ? var_eject == _unit : _eject = true; var_eject = nil; goto "end2" ? var_getout == _unit : _getout = true; var_getout = nil ? var_unload == _unit : _unload = true; var_unload = nil _dir = getdir _unit _x = ((velocity _unit select 0) * sin _dir) * 3.445 _y = ((velocity _unit select 1) * cos _dir) * 3.445 _xy = _x + _y ? _xy > _landvel : goto "velloop" ; put the chopper on the ground _unit flyinheight _minheight #endloop ? var_cancel_landing == _unit : _cancel = true; var_cancel_landing = nil; goto "end2" ? var_eject == _unit : _eject = true; var_eject = nil; goto "end2" ? var_getout == _unit && !_getout : _getout = true; var_getout = nil; goto "end2" ? _getout : goto "end2" ? var_unload == _unit && !_unload : _unload = true; var_unload = nil; goto "end2" ? _unload : goto "end2" ? !alive _driver : exit ~0.1 goto "endloop" #end2 ; added in 1.3 - force all of the occupants of _unit to get out? ? _cancel : goto "nogetout" ? _eject : goto "ejectnow" ; wait until the chopper is on the ground? @getpos _unit select 2 < 2 ; get units out of chopper #ejectnow _ejectpause = 0.5 ? _eject : _ejectpause = 1 _aR_crew = crew _unit ; eject units _i = 0 #loop_eject ? (_aR_crew select _i) != _driver : (_aR_crew select _i) action ["EJECT", _unit]; unassignvehicle (_aR_crew select _i) ~_ejectpause _i = _i + 1 ? _i != count _aR_crew : goto "loop_eject" ; get the pilot and gunner out if not unloading ? _unload : goto "unload" _driver action ["EJECT", _unit]; unassignvehicle _driver #unload @(count crew _unit == 0 && !_unload) || (count crew _unit == 1 && _unload) #nogetout ; make sure the message gets through and the waypoint is unlocked _pos = getpos _driver #stupidailoop _unit flyinheight _flyouthgt _driver lockwp false ~0.5 _x1 = _pos select 0 _y1 = _pos select 1 _x2 = getPos (leader _grp) select 0 _y2 = getPos (leader _grp) select 1 _dis = sqrt( (_x1-_x2)^2 + (_y1-_y2)^2 ) ? _dis < 10 : goto "stupidailoop" exit/////////////////////////////////////////////////////////// // ArmA - loop_cl3.sqf by Sickboy (sb_at_6thSense.eu) // Loop for string broadcast and execute it /////////////////////////////////////////////////////////// private ["_script","_run"]; _script="loop_cl3.sqf"; _run=true; while{_run}do { while{_run}do { waituntil{six_bc1}; six_bc1=false; if(format["%1",six_str1]!="")then { call compile format["%1",six_str1]; if(SIX_DEBUG_MISS&&six_isClient)then{player sidechat format["Executed: %1",six_str1]}; six_str1=""; }; }; };/////////////////////////////////////////////////////////// // ArmA - loop_srv2.sqf by Sickboy (sb_at_6thSense.eu) // Loop for string broadcast and execute it /////////////////////////////////////////////////////////// private ["_script","_run"]; _script="loop_srv2.sqf"; if(not six_isServer) exitwith { player sidechat format[localize "STR_six_error_srv",_script];}; _run=true; while{_run}do { while{_run}do { waituntil{six_bc2}; six_bc2=false; if(format["%1",six_str2]!="")then { call compile format["%1",six_str2]; if(SIX_DEBUG_MISS&&six_isClient)then{player sidechat format["Executed: %1",six_str2]}; six_str2=""; }; sleep 0.1; }; sleep 0.1; };/////////////////////////////////////////////////////////// // ArmA - arty.sqf by Sickboy (sb_at_6thSense.eu) // Original by Mr-Murray //Idea by Mr-Murray 2006 //mr-murray@bossmail.de //www.mapfact.net /////////////////////////////////////////////////////////// private ["_run","_side","_art","_pos","_rad","_c","_l","_mar"]; if(not six_isServer)exitwith{}; _art=[];_c=0;_l=0; _side=_this select 0; _pos=_this select 1; _rad=_this select 2; switch _side do { case "WEST": {_art=MAP_MiscArtW;_mar="arty_west";_c=MAP_MiscArtWC;_l=MAP_MiscArtWlim;MAP_MiscArtWC=MAP_MiscArtWC+1;}; case "GUER": {_art=MAP_MiscArtG;_mar="arty_guer";_c=MAP_MiscArtGC;_l=MAP_MiscArtGlim;MAP_MiscArtGC=MAP_MiscArtGC+1;}; case "EAST": {_art=MAP_MiscArtE;_mar="arty_east";_c=MAP_MiscArtEC;_l=MAP_MiscArtElim;MAP_MiscArtEC=MAP_MiscArtEC+1;}; }; if(call MAP_MPbool)then { if(_c>_l)exitwith{[1,"player sidechat ""No arties available anymore!"" "] call six_fNetsend}; call compile format["[1,""%1 say """"MAP_Rauschen"""" ""] call six_fNetsend",_rad]; } else { if(_c>_l)exitwith{player sidechat "No arties available anymore!"}; _rad say "MAP_Rauschen"; }; _mar setmarkerpos _pos; sleep (random 10); {[_x,_pos,_side] spawn MAP_MiscArtyfire;sleep (random 3);} forEach _art; sleep 6; {[_x,_pos,_side] spawn MAP_MiscArtyfire;sleep (random 3);} forEach _art; _mar setmarkerpos [0,0]; /////////////////////////////////////////////////////////// // ArmA - artyaction.sqf by Sickboy (sb_at_6thSense.eu) // Original by Mr-Murray //Idea by Mr-Murray 2006 //mr-murray@bossmail.de //www.mapfact.net //www.mr-murray.de.vu /////////////////////////////////////////////////////////// private ["_side","_id","_soldier"]; _soldier=_this select 0; _side=_this select 1; _val=format["%1add",_side]; switch _side do { case "WEST": {_id=_soldier addaction ["Call Artillery","MAP_Misc\Scripts\MAP_MiscArtysetfire.sqf","WEST"];}; case "GUER": {_id=_soldier addaction ["Call Artillery","MAP_Misc\Scripts\MAP_MiscArtysetfire.sqf","GUER"];}; case "EAST": {_id=_soldier addaction ["Call Artillery","MAP_Misc\Scripts\MAP_MiscArtysetfire.sqf","EAST"];}; }; sleep 0.2; call compile format["%1=true",_val]; waituntil{!(call compile _val);}; _soldier removeaction _id;/////////////////////////////////////////////////////////// // ArmA - artyfire.sqf by Sickboy (sb_at_6thSense.eu) // Original by Mr-Murray //Idea by Mr-Murray and JrgF 2006 //mr-murray@bossmail.de //www.mapfact.net //www.mr-murray.de.vu /////////////////////////////////////////////////////////// private ["_amm","_she","_side","_K","_Z","_X","_Y","_K","_A","_N","_H","_bomb"]; _side=_this select 2; switch _side do { case "WEST": {_amm="M119";_she="HeatM119";}; case "GUER": {_amm="M119";_she="HeatM119";}; case "EAST": {_amm="D30";_she="HeatD30";}; }; sleep (random 2); _K = _this select 0; _Z = _this select 1; _X = _Z select 0; _Y = _Z select 1; _K DoWatch [_X,_Y,5000]; _A =_K Ammo _amm; sleep 5; _K fire _amm; waitUntil{_A > _K Ammo _amm}; _K spawn MAP_MiscArtysmoke; sleep 2; _N = nearestObject [_K,_she]; _X = _X+((Random 60)-40); _Y = _Y+((Random 60)-40); _H = "HeliHEmpty" CreateVehicle [_X,_Y]; sleep 1; _H say "MAP_Ari"; sleep 1; _N setpos [_X,_Y,0]; _Bomb="SH_125_HE" CreateVehicle [_X,_Y,0]; _H spawn MAP_MiscArtysmoke; sleep 0.5; deleteVehicle _H;/////////////////////////////////////////////////////////// // ArmA - artysetfire.sqf by Sickboy (sb_at_6thSense.eu) // Original by Mr-Murray //Idea by Mr-Murray 2006 //mr-murray@bossmail.de //www.mapfact.net //www.mr-murray.de.vu /////////////////////////////////////////////////////////// artside=_this select 3; titletext ["Click on the map to set your firedirection","plain down"]; if(call MAP_MPbool)then { onMapSingleClick "call compile format[""[0,""""[""""""""%1"""""""",%2,%3] spawn MAP_MiscArty""""] call six_fNetsend"",artside,_pos,player];onMapSingleClick """";titletext ["""",""plain down""];"; } else { onMapSingleClick "[artside,_pos,player] spawn MAP_MiscArty;onMapSingleClick """";titletext [""Arty Incoming!"",""plain down""];"; };/////////////////////////////////////////////////////////// // ArmA - artysmoke.sqf by Sickboy (sb_at_6thSense.eu) // Original by Mr-Murray, with code by charonos //Idea by Mr-Murray 2006 //mr-murray@bossmail.de //www.mapfact.net //www.mr-murray.de.vu /////////////////////////////////////////////////////////// private ["_radius","_p","_x","_y","_i","_xs","_ys"]; sleep 0.2; _radius = 15; _p = getpos _this; _x = _p select 0; _y = _p select 1; _i=0.0; for [{_i=0}, {_i<360}, {_i=_i+4.8}] do { _xs=sin _i;_ys=cos _i; drop ["\ca\data\cl_basic" , "" , "Billboard" , 120 , 5 , [_x + (_xs * (_radius + 3)), _y + (_ys * (_radius + 3)), 0] , [1.8,2.8,0] , 1 , 2 , 1.55 , 1 , [2.5,6] , [[0.35,0.3,0.25,0.5],[0.35,0.35,0.25,0.4],[0.35,0.3,0.25,0.2],[0.4,0.35,0.3,0]] , [0] , 0.2 , 0.2 , "" , "" , ""]; drop ["\ca\data\cl_basic" , "" , "Billboard" , 120 , 5 , [_x + (_xs * _radius), _y + (_ys * _radius), 0] , [1.5,2.5,0] , 1 , 2 , 1.55 , 1 , [1.5,5.7] , [[0.35,0.3,0.25,0.5],[0.35,0.35,0.25,0.4],[0.35,0.3,0.25,0.2],[0.4,0.35,0.3,0]] , [0] , 0.2 , 0.2 , "" , "" , ""]; drop ["\ca\data\cl_basic" , "" , "Billboard" , 120 , 5 , [_x + (_xs * (_radius - 3)), _y + (_ys * (_radius - 3)), 0] , [1.2,2.5,0] , 1 , 2 , 1.55 , 1 , [1.5,5.4] , [[0.35,0.3,0.25,0.5],[0.35,0.35,0.25,0.4],[0.35,0.3,0.25,0.2],[0.4,0.35,0.3,0]] , [0] , 0.2 , 0.2 , "" , "" , ""]; }; /////////////////////////////////////////////////////////// // ArmA - misinit.sqf v1.0 - By Sickboy (sb_at_6thSense.eu) /////////////////////////////////////////////////////////// private ["_m"]; // Time Skip //skiptime param2; // (Normally gets initialized through map_misc) if(isnil "MAP_MiscArty")then{MAP_MiscArty=compile preprocessFile "scripts\MAP_MiscArty.sqf";}; if(isnil "MAP_MiscArtyaction")then{MAP_MiscArtyaction=compile preprocessFile "scripts\MAP_MiscArtyaction.sqf";}; if(isnil "MAP_MiscArtyfire")then{MAP_MiscArtyfire=compile preprocessFile "scripts\MAP_MiscArtyfire.sqf";}; if(isnil "MAP_MiscArtysetfire")then{MAP_MiscArtysetfire=compile preprocessFile "scripts\MAP_MiscArtysetfire.sqf";}; if(isnil "MAP_MiscArtysmoke")then{MAP_MiscArtysmoke=compile preprocessFile "scripts\MAP_MiscArtysmoke.sqf";}; if(isnil "MAP_MiscVersion")then{MAP_MPbool={true};}; if(isnil "MAP_MiscArtW")then{MAP_MiscArtW=[];}; if(isnil "MAP_MiscArtG")then{MAP_MiscArtG=[];}; if(isnil "MAP_MiscArtE")then{MAP_MiscArtE=[];}; if(isnil "MAP_MiscArtWlim")then{MAP_MiscArtWlim=5;}; if(isnil "MAP_MiscArtGlim")then{MAP_MiscArtGlim=5;}; if(isnil "MAP_MiscArtElim")then{MAP_MiscArtElim=5;}; if(isnil "MAP_MiscArtWC")then{MAP_MiscArtWC=0;}; if(isnil "MAP_MiscArtGC")then{MAP_MiscArtGC=0;}; if(isnil "MAP_MiscArtEC")then{MAP_MiscArtEC=0;}; // Arty, Make sure you have the listed artillery units placed on the map in the editor.. //MAP_MiscArtW=[artyw1,artyw2,artyw3,artyw4]; //MAP_MiscArtG=[artyg1,artyg2,artyg3,artyg4]; //MAP_MiscArtE=[artye1,artye2,artye3,artye4]; //MAP_MiscArtWlim=10; //MAP_MiscArtGlim=10; //MAP_MiscArtElim=10; // Intro Start if(six_isplay)then { //six_scr_cam=compile preprocessFile "scripts\cam.sqf"; //if(!six_nointro)then{"intro" spawn six_scr_cam}; //if(six_debug_miss)then{onMapSingleClick "player setpos _pos;player sidechat format[""POS: %1"",_pos];";}; }; if(six_isServer)then { if(isnil "MAP_MiscVersion")then { // Arty Marker Creaters _m=["arty_west","arty_guer","arty_east"]; {createMarker [_x,[0,0]];_x setMarkerType "Destroy";_x setMarkerText "Art";}forEach _m; }; processInitCommands; sleep 5; six_misinit=true;publicVariable "six_misinit"; }; if(six_isPlay)then { waitUntil{six_misinit||(time>600)}; if(!six_misinit)then{hint localize "STR_sys_0"}; sleep 5; if(name player in six_Rf)then{six_referee=true}; six_pside=format["%1",side player];six_pgroup=units player; // Actions CoC_ActionList=CoC_ActionList+["player addaction [""QuickMap"",""scripts\openquickmap.sqf""]"]; CoC_ActionList=CoC_ActionList+["player addaction [""Med Kit"",""mScripts\medkit1.sqs""]"]; if(six_referee)then { CoC_ActionList=CoC_ActionList+["player addAction [""Console On"",""stra_debug\debugConsoleStart.sqs""]"]; }; }; ; ; Script for the spectating script v1.4 by Kegetys ; http://www.ofp.kege.cjb.net ; _m = nearestObject[_this select 0,_this select 4] _vel = abs(velocity _m select 0) + abs(velocity _m select 1) + abs(velocity _m select 2) ? isNull _m || !DeathCamMissileCamEnabled || _vel > 450 || DeathCamCineViewSpecial == 3 || !dialog : exit _id = random 1000000 DeathCamCurMissileCamTargetID = _id _kami = "camera" camCreate [5329.34,6652.10,1.28] _kami cameraEffect ["internal","front"] _kami camSetTarget _m _kami camSetRelPos [2,2,2] _kami camSetFOV 0.762 _kami camCommit 0 #luup ? !isNull _m : _kami camSetTarget _m ? !isNull _m : _kami camSetRelPos [0,-2,0.7] ? !isNull _m : _kami camCommit 0 _vel = abs(velocity _m select 0) + abs(velocity _m select 1) + abs(velocity _m select 2) ? !isNull _m && _vel > 1 : goto "luup" ~3.5 ? DeathCamCurMissileCamTargetID != _id : exit ? !dialog : exit titleCut ["","BLACK OUT", 0.5] ~0.5 titleCut ["","BLACK IN", 0.5] ? !dialog : exit _kami cameraeffect ["terminate", "back"] camdestroy _kami DeathCam cameraEffect ["internal","front"]; ; Script for the spectating script v1.4 by Kegetys ; http://www.ofp.kege.cjb.net ; _tries = 0 _DeathCamIndex = DeathCamIndex #notalive _DeathCamIndex = _DeathCamIndex + _this ? _this == 0 : goto "alive" ? _DeathCamIndex < 0 : _DeathCamIndex = (count DeathCamArray)-1 ? _DeathCamIndex >= count DeathCamArray : _DeathCamIndex = 0 ? alive (DeathCamArray select _DeathCamIndex) : goto "alive" _tries = _tries + 1 ; Avoid infinite loop if everyone are dead ? _tries < (count DeathCamArray)+1 : goto "notalive" exit #alive DeathCamIndex = _DeathCamIndex lbSetCurSel [1047002, DeathCamIndex] _name = name (DeathCamArray select DeathCamIndex) if (_name == "error: no unit") then {_name = ""} ctrlSetText [116969,_name] DeathCamCurTarget = (DeathCamArray select _DeathCamIndex) /////////////////////////////////////////////////////////// // ArmA - onplayerconnected.sqf v1.0 - By Sickboy (sb_at_6thSense.eu) /////////////////////////////////////////////////////////// private ["_script"]; _script="onPlayerConnected.sqf"; if(not six_isServer) exitwith { player sidechat format[localize "STR_six_error_srv",_script];}; publicVariable "six_misinit"; "arty_west" setMarkerText "art"; "arty_east" setMarkerText "art"; "arty_guer" setMarkerText "art";_player = _this select 0 _killer = _this select 1 _seagull = _this select 2 ;init _camera = "camera" camCreate [(position _player select 0)-0.75, (position _player select 1)-0.75,(position _player select 2) + 0.5] _camera cameraEffect ["internal","back"] ;;=== 14:54:42 _camera camSetFOV 0.800 _camera camCommit 0 @camCommitted _camera 0 fadeMusic 0.5 playMusic "ATrack1" ;=== 14:56:09 _camera camSetTarget vehicle _player _camera camSetRelPos [-0.82,-3.12,3.38] _camera camSetFOV 0.800 _camera camCommit 7 ~1 _preload = _player spawn {waitUntil {(preloadCamera getPos _this) && (2 preloadObject _this)}} ~5 _preload = _killer spawn {waitUntil {(preloadCamera getPos _this) && (8 preloadObject _this)}} @camCommitted _camera ;=== 14:31:29 _camera camSetTarget vehicle _killer _camera camSetRelPos [-6.66,18.99,6.59] _camera camSetFOV 0.700 _camera camCommit 5 @camCommitted _camera ;=== 14:32:05 _camera camSetRelPos [1.17,-21.71,2.07] _camera camSetFOV 0.400 _camera camCommit 10 ~2 terminate _preload ~3 _preload = _player spawn {waitUntil {(preloadCamera getPos _this) && (3 preloadObject _this)}} @camCommitted _camera ;=== 14:30:26 _camera camSetTarget vehicle _player _camera camSetRelPos [5.80,1.29,5.07] _camera camSetFOV 0.300 _camera camCommit 7 ~2 terminate _preload _preload = _seagull spawn {waitUntil {(preloadCamera getPos _this) && (4 preloadObject _this)}} @camCommitted _camera ;=== 14:30:54 _camera camSetRelPos [2.71,19.55,12.94] _camera camSetFOV 0.700 _camera camCommit 2 @camCommitted _camera ;=== 14:31:29 _camera camSetTarget _seagull _camera camSetRelPos [-6.66,18.99,2.59] _camera camSetFOV 0.700 _camera camCommit 3 @camCommitted _camera 3 fadeMusic 0 ;=== 14:32:05 _camera camSetRelPos [1.17,-21.71,-1.07] _camera camSetFOV 0.300 _camera camCommit 3 @camCommitted _camera terminate _preload _seagull switchCamera "EXTERNAL" _seagull cameraEffect ["terminate","back"] camDestroy _camera exit_ok = createDialog "DlgQuickMap"; /////////////////////////////////////////////////////////// // ArmA - sixinit.sqf v1.0 - By Sickboy (sb_at_6thSense.eu) /////////////////////////////////////////////////////////// private ["_run","_v","_tp","_script"]; _script="sixinit.sqf"; /////////////////////////////////////////////////////////// // Init standard variables /////////////////////////////////////////////////////////// finishMissionInit; scalar="scalar bool array string 0xe0ffffef";six_fog=0;six_overcast=0;six_bc=false;six_str1="";six_bc1=false;six_str2="";six_bc2=false; six_coin=false;six_play=[];six_isPlay=false;six_referee=false;six_fullm=false;six_isServer=false;six_isClient=false;dacstat=""; six_pt=[];six_tplay=0; six_ext=false;six_extract=false;six_wonend=false;teamSwitchEnabled=false;IntroEnd=false;OutroWinEnd=false;RealEnd=false;six_dead=false;six_x=false;six_earray=[]; MAP_respRC=0;six_pside="west"; // Dont forget to place gamelogic server. if(not isnil "server")then{if(local server)then{six_isServer=true;};if(not local server)then{six_isPlay=true;six_isClient=true;six_pside=format["%1",side player];};}; if(format["%1",local player]!="bool")then{six_isPlay=true;six_isClient=true;six_pside=format["%1",side player];} else {six_isServer=true}; if((not six_isServer)&&(not six_isClient))exitwith{player sidechat format[localize "STR_six_error_it",_script];}; six_players=six_wplayers+six_eplayers+six_gplayers; six_ptm=six_wptm+six_eptm+six_gptm; if(isnil "six_nointro")then{six_nointro=false}; if(isnil "CoC_ActionList")then{CoC_ActionList=[]}; if(isnil "six_misinit")then{six_misinit=false}; if(isnil "six_init")then{six_init=false}; six_viewd=1200; setviewdistance six_viewd;setterraingrid 12.5; /////////////////////////////////////////////////////////// // Preload Functions & Scripts /////////////////////////////////////////////////////////// // Global Functions randomInt=compile preprocessfile "functions\randomint.sqf"; GridCoord=compile preprocessfile "functions\GridCoord.sqf"; RelPosCoord=compile preprocessfile "functions\RelPosCoord.sqf"; six_fShuffle=compile preprocessfile "functions\shuffle.sqf"; six_fRndSelect=compile preprocessfile "functions\RndSelect.sqf"; six_fPlayers=compile preprocessfile "functions\Players.sqf"; // Check for map_misc running if(isnil "MAP_MiscVersion")then { six_fNetsend=compile preprocessfile "functions\Netsend.sqf"; six_fSendmove=compile preprocessfile "functions\Sendmove.sqf"; six_fDomove=compile preprocessfile "functions\Domove.sqf"; } else {six_fNetsend=fNetsend;six_fSendmove=fSendMove;six_fDomove=fDomove}; // Global Crates six_crateEveh=compile preprocessfile "crate\crate_bisEveh.sqf"; six_crateWveh=compile preprocessfile "crate\crate_bisWveh.sqf"; six_crate1=compile preprocessfile "crate\crate_bis1.sqf"; six_crate2=compile preprocessfile "crate\crate_bis2.sqf"; six_crate3=compile preprocessfile "crate\crate_bis3.sqf"; six_crate4=compile preprocessfile "crate\crate_bis4.sqf"; six_crateall=compile preprocessfile "crate\crate_bisall.sqf"; // Inits _tp=six_players call six_fPlayers; {_v=call compile _x;if(format["%1",_v]!=scalar)then{six_pt=six_pt+[_v]}} foreach six_ptm; six_play=_tp;six_tplay=(count six_play); if(six_tplay>=20)then{six_x=true;}; // Server if(six_isServer)then { // Scripts six_scr_op=compile preProcessFile "scripts\onPlayerConnected.sqf"; // Inits onPlayerConnected "d=[] spawn six_scr_op"; // Spawn SRV Loops if(isnil "MAP_MiscVersion")then{[] spawn compile preProcessFile "scripts\loop_srv2.sqf";}; }; // Client if(six_isClient)then { // Scripts six_scr_fm=compile preProcessFile "scripts\fademusic.sqf"; // Spawn CL Loops if(isnil "MAP_MiscVersion")then{[] spawn compile preProcessFile "scripts\loop_cl3.sqf";}; [] spawn compile preProcessFile "scripts\actionmonitor.sqf"; }; // Init mission specific inits [] spawn compile preprocessFile "scripts\misinit.sqf"; ; *** Bombing.sqs by Mike Schell *** ; modified 2003 by ])rStrangelove ; A small script that will detonate bombs around a passed object at a given radius ; Get's variables from 'EXEC' line _maxbombs = _this select 0 _intervals = _this select 1 ; Sets bomb counter to zero _counter = 0 ; Main loop #Update ; Make explosion _boom = "M_Sidewinder_AA" createVehicle [5, 5, 50] _boom1 = "M_Sidewinder_AA" createVehicle [5, 5, 50] ; Wait a given amount of time between blasts ~_intervals + (random 2) ; Increase bomb count, end if all bombs have been detonated _counter = _counter +1 ? (_counter == _maxbombs) : goto "AllDone" ; Loop it for next bomb goto "Update" ; End script #AllDone exit ; *** Bombing.sqs by Mike Schell *** ; modified 2003 by ])rStrangelove ; A small script that will detonate bombs around a passed object at a given radius ; ; Usage: ; ;Syntax: [posobject, numberofbombs, timespacing, radius] Exec "bombing.sqs" ; ; pos: The pos the script will center the bombs around ;numberofbombs: number of bombs to detonate ;timespacing: delay (in seconds) between bomb blasts ;radius: maximum deviation from the center of posobject ; ; Example: To create 5 bombs that go off around the player (MyGuy) every half second ; at a distance no greater than 40 meters: ; ;[getpos MyGuy, 5, .5, 40] Exec "bombing.sqs" ; ; produces ari background sound [9, 1] Exec "AriSound.sqs"; ; Get's variables from 'EXEC' line _marker = _this select 0 _maxbombs = _this select 1 _intervals = _this select 2 _radius = _this select 3 ; Sets bomb counter to zero _counter = 0 ; Traveling Delay till impact ~40 ; Main loop #Update ; Set up positioning for bombs _xm = _marker select 0 _ym = _marker select 1 _xm = _xm + (random(_radius) - (_radius/2)) _ym = _ym + (random(_radius) - (_radius/2)) ; Make explosion _boom = "R_57mm_HE" camVehicle [_xm, _ym, _marker select 2] _boom1 = "M_Sidewinder_AA" camcreate [_xm, _ym, _marker select 2] ; Wait a given amount of time between blasts ~(_intervals + random 2) ; Increase bomb count, end if all bombs have been detonated _counter = _counter +1 ? (_counter == _maxbombs) : goto "AllDone" ; Loop it for next bomb goto "Update" ; End script #AllDone westari = false;publicVariable "westari" eastari = false;publicVariable "eastari" exit ;patrolalert.sqs ; 2003 by ])rStrangelove modified by spankmeyer (the popin smoke part) ;A groupleader that is hit will start this _me = _this select 0 _shooter = _this select 1 ;hint "active" ; *************************for use in PopinSmoke Part********* _grp = group _me _grparray = units _grp ; *************************************** ?((side _shooter == WEST) AND ((leader group _me) == _me) AND !(eastari)):eastari = true;[(getpos _shooter), 9, 1, 100] Exec "spawnman\bombing.sqs"; ?((side _shooter == EAST) AND ((leader group _me) == _me) AND !(westari)):westari = true;[(getpos _shooter), 9, 1, 100] Exec "spawnman\bombing.sqs"; _me removeAllEventHandlers "Hit" ; **************************Popin Smoke Part******************************** ; if whole group is dead exit. Random chance (35%) of enemy poping smoke ? (_grp == grpNull) : EXIT ? (random 100 > 25) : EXIT ;hint "Er wrde jetzt rauch scmeissen" _thrower = _grparray select 1 ; Make the officer face your dirextion. _thrower doWatch _shooter ; Define the smokegrenade, can be "smokeshell", "smokeshellred", "smokeshellgreen" ; random smoke colour _smoke = ["smokeshell","smokeshellred","smokeshellgreen"] _random = random 3 _random = _random - _random % 1 _smoke = _smoke select _random ; Add the smoke shell _mags = magazines _thrower _mag = _mags select 0 _thrower removemagazine _mag _thrower addmagazine _smoke ; Let leader throw the smoke shell _thrower fire ["throw",_Smoke,_Smoke] ~1 _thrower addmagazine _mag ; ************************************************************************** EXIT;patrolalert.sqs ; 2003 by ])rStrangelove ;A groupleader that is hit will start this _me = _this select 0 _shooter = _this select 1 ?((side _shooter == WEST) AND ((leader group _me) == _me) AND !(eastari)):eastari = true;[(getpos _shooter), 9, 1, 100] Exec "bombing.sqs"; ?((side _shooter == EAST) AND ((leader group _me) == _me) AND !(westari)):westari = true;[(getpos _shooter), 9, 1, 100] Exec "bombing.sqs"; _me removeAllEventHandlers "Hit" EXIT; 2003 by ])rStrangelove ; requires a group named 'eastdummygroup' ; If unit is fired upon, it fires up the event handler. ; If unit is dead it will sink into ground/be deleted if its init-line reads: ; this exec "patroldead.sqs" _this AddEventHandler ["Hit",{_this exec "spawnman\patrolalert.sqs"}]; #deadloop ~1 ?(alive _this):goto "deadloop" ~(10 + random 6) (leader eastdummygroup) action ["hidebody",_this] ~4 deleteVehicle _this EXIT; RandomPatrol 1.5 ; 2003 by ])rStrangelove ; Group/Unit chooses random pos, patrols there, chooses again etc etc ; example: call with [group,400,10,[x,z,y]] exec "randpatrol.sqs" ; group = the patrol group ; 400 = patrol range around the patrol position ; 10 = wait time once patrol position is reached ; [x,z,y] = will be used as patrol position _grp = _this select 0 _range = _this select 1 _delay = _this select 2 _pos = _this select 3 _pPos = getPos _pos #patrol_again ({_x setBehaviour "AWARE"} forEach units _grp) _checktime = time ;if a dummy-parameter is given (this select 4) the patrolpos will be updated in every loop. ;( if it moves or "teleports"...) ?(count _this > 4) : _pPos = getpos _pos units _grp commandMove [(_pPos select 0) - _range + (random (2 * _range)), (_pPos select 1) - _range + (random (2 * _range))] ;go on if group has reached WP or was stuck somewhere for 3 minutes @(unitready leader _grp) OR (time > _checktime + 180) ({_x setBehaviour "COMBAT"} forEach units _grp) ~_delay goto "patrol_again"; RandomPatrol 1.5 + AI Modified by Spankmeyer ; Original 2003 by ])rStrangelove ; Group/Unit chooses random pos, patrols there, chooses again etc etc ; if a global variable called EnemyDetected changes to true, they will start hunting westunits ; example: call with [group,400,10,[x,z,y]] exec "randpatrol.sqs" ; group = the patrol group ; 400 = patrol range around the patrol position ; 10 = wait time once patrol position is reached ; [x,z,y] = will be used as patrol position ~ (random 3) + 1 _grp = _this select 0 _range = _this select 1 _delay = _this select 2 _pos = _this select 3 _pPos = getPos _pos #patrol_again ?EnemyDetected : goto "HuntTheEnemy" ;hint "sluft Patrouille." ({_x setBehaviour "AWARE"} forEach units _grp) _checktime = time ;if a dummy-parameter is given (this select 4) the patrolpos will be updated in every loop. ;( if it moves or "teleports"...) ?(count _this > 4) : _pPos = getpos _pos units _grp commandMove [(_pPos select 0) - _range + (random (2 * _range)), (_pPos select 1) - _range + (random (2 * _range))] ;go on if group has reached WP or was stuck somewhere for 3 minutes @(unitready leader _grp) OR (time > _checktime + 180) OR EnemyDetected ({_x setBehaviour "COMBAT"} forEach units _grp) ~_delay goto "patrol_again" ; **********************They hunt mostknown westunits, if EnemyDetected is TRUE********** #HuntTheEnemy _grpcount = count units _grp ;hint format ["anzahl _grp:%1",_grpcount] ;hint "sie jagen..." ? !(EnemyDetected) : goto "patrol_again" ({_x setBehaviour "AWARE"} forEach units _grp) ;({_x allowFleeing 0} forEach units _grp) _checktime = time units _grp commandMove getpos TargetSpot ;go on if group has reached WP OR EnemyDetected is not TRUE anymore OR new members of _grp are spawned. @(unitready leader _grp) OR !(EnemyDetected) OR (count units _grp > _grpcount) OR (time > _checktime + 60) ({_x setBehaviour "COMBAT"} forEach units _grp) ~3 goto "HuntTheEnemy"; SPAWN MANAGER 2 ; 2003 by ])rStrangelove ; Spawns a group and issues orders ; New/special features: ; - Many parameters optional, can create general or very specific groups & behaviour. ; - Respawns can either happen: never, specific amount or forever ; - Respawns don't switch groups anymore, only 1 specific group used all the time ; - Respawn script works for EAST and WEST. ; (You could let 2 SpManagers fight against each other !) ; - Troop types in seperate section, easy to customize. See "troops2use" at bottom of script. ; (Templates included for Original OPF, SEB Vietnam, Invasion44 and BAS-Tonal-troops) ; (Mixed fights with different troops possible (US Nam grunts VS. Tonal africans)) ; - All running SpawnManagers will collect spawn groups in the global arrays: ; "eastpatrolteams" and "westpatrolteams" for ease of reference. ; - Spawnposition and Patrolposition don't need to be the same anymore. ; - Dead soldiers slowly sink into the ground after 11+ seconds. ; (it's not a feature, it's an important bug solver) ;) ; - If allowed, wounded group leaders call long range artillery on enemy positions ; (see init.sqs) ; - If spawn object name is given, group respawn is dependant on object's health. ; (good for assigning a tent or building; destroying it will also stop respawns) ; (it's possible to assign vehicles as spawn objects. If vehicles are too fast / too high, ; (soldiers will get hurt/fall to death.) ;================================================================================= ;SHORTEST EXAMPLE--------------------------- ;["east","", tent] exec "spawnman.sqs" ; ; 5 russians are spawned at tent, will start patrolling 150m around tent. ; If all 5 are dead, they will respawn 1 time, but that's it. ;(these defaults can be changed in the "get parameters" start section) ;SPECIFIC EXAMPLE--------------------------- ;["west","BAS_Deltas", tent,8,150,20,-1,4, house,tent] exec "spawnman.sqs" ; ; Parameter Values allowed Explanation ; (0) "east" or "west" what side is used ? ; (1) "1985","vietnam",etc what troops are spawned ? see bottom section ; (2) [x,y,z],getpos base position where troops are spawned ; (3) optional 2 - 12 how many soldiers are in group ? ; (4) optional 1 - 99999 (whatever) patrol radius around patrolposition in m ; (5) optional 1 - 99999 (whatever) how many seconds group will pause between patrols ; (6) optional -1,0,1 - 99999 how many respawns ? -1 = infinite, 0 = no respawns ; (7) optional 2 - 12 how many dead in a group to trigger a respawn ? ; (8) optional [x,y,z],getpos patrolposition that is patrolled around ; (9) optional spawn- object that "spawns" troops. destroying it will stop respawns ; NOTE: if parameter 9 is given (spawn-object), parameter 2 (spawn-position) won't be used. ; ; 8 Deltas (BAS troops) are spawned at tent, will start patrolling 150m around house. ; They will pause for 20 seconds at each patrol point. ; Everytime 4 Deltas have been killed, these 4 Deltas will respawn (respawns are infinite). ; If tent is destroyed, respawns will come to a complete halt. However, the script does continue ; and will resume where it halted in case the tent is "repaired" somehow later on. ?!(local Server):EXIT ~(random 1) + 1 ;=================GET PARAMETERS======================== ;get parameters ?(count _this < 3):player groupchat "Spawnmanager parameter ERROR";EXIT _side = _this select 0 _troops = _this select 1 _basepos = _this select 2 ?(count _this > 3):_teamscale = _this select 3 ?(count _this <= 3):_teamscale = 5 ?(count _this > 4):_radius = _this select 4 ?(count _this <= 4):_radius = 150 ?(count _this > 5):_pause = _this select 5 ?(count _this <= 5):_pause = 20 ?(count _this > 6):_stopcount = _this select 6 ?(count _this <= 6):_stopcount = 1 ?(count _this > 7):_triggerscale = _this select 7 ?(count _this <= 7):_triggerscale = 5 ?(count _this > 8):_patrolpos = _this select 8 ?(count _this <= 8):_patrolpos = _basepos ?(count _this > 9):_base = _this select 9 ?(count _this <= 9):_base = objNull ;============CHECK VALUES / DEFAULTS==================== ; _return = "check_value_defaults" ?(_troops == ""):_troops = "1985" goto _troops #check_value_defaults ?(_teamscale < 2):_teamscale = 2 ?(_teamscale > 12):_teamscale = 12 ?(_triggerscale > 12):_triggerscale = 12 ?(_triggerscale > _teamscale):_triggerscale = _teamscale ;============INIT VALUES================================ _units = call compile format["_patrolunits_%1",_side] _dummygroup = call compile format["%1dummygroup",_side] _team = grpNull _leader = _units select 1 ?(_triggerscale == _teamscale):_leader = _units select 0 _firsttime = TRUE _spawncount = 0 _scale = _teamscale ?(damage _base >= 1):_base = objNull ?!(isNull _base):[_base] exec "spawnman\gasexplosion.sqs" ;=============================SPAWN TEAM===================== #spawn_leader ?!(isNull _base):_basepos = getpos _base ?(damage _base >= 1):_return1 = "spawn_leader";goto "wait_for_baserepair" ?(_firsttime):goto "go" ;delay to give the dead enough time to decay ~28 #go ?(damage _base >= 1):_return1 = "go";goto "wait_for_baserepair" (_leader) createUnit [_basepos, _dummygroup,"this exec {spawnman\patroldead.sqs}"] _member = (units _dummygroup) select 1 [_member] join _team; _team = group _member _patrolteams = call compile format["%1patrolteams",_side] ?(_side == "east"):goto "check_east" goto "check_west" #check_east ?(count eastpatrolteams > 0) AND !(_team in eastpatrolteams): eastpatrolteams = eastpatrolteams + [_team] eastpatrolteams = [_team];goto "after_check" #check_west ?(count westpatrolteams > 0) AND !(_team in westpatrolteams): westpatrolteams = westpatrolteams + [_team] westpatrolteams = [_team] #after_check _restcount = 1 #spawn_rest ?(damage _base >= 1):_return1 = "spawn_rest";goto "wait_for_baserepair" ~(random 1) + 1 (_units select 1+(random(count _units - 1))) createUnit [_basepos,_team,"this exec {spawnman\patroldead.sqs}"] _restcount = _restcount + 1 ?(_restcount < _scale):goto "spawn_rest" _scale = _triggerscale ;====================START PATROLSCRIPT=================== ;give orders ; last parameter("1") is a dummy-parameter, which updates the patrol-pos in every loop(of randpatrol). ?(_firsttime): [_team,_radius,_pause, _patrolpos,1] exec "spawnman\randpatrol.sqs"; _firsttime = FALSE ?(_stopcount == 0):EXIT ?(_spawncount == _stopcount):EXIT ;=====================WAIT FOR TRIGGER TO RESPAWN=========== #wait_for_trigger ~1 ?(damage _base >= 1):_return1 = "wait_for_trigger";goto "wait_for_baserepair" ?(count units _team > (_teamscale - _triggerscale)):goto "wait_for_trigger" _spawncount = _spawncount + 1 goto "spawn_leader" ;=============WAIT FOR BASE REPAIRS SO RESPAWNS MAY CONTINUE======== #wait_for_baserepair ~1 ?!(damage _base <= 0.5):goto "wait_for_baserepair" goto _return1 ;----------------------------------------------------------------------- ; TROOPS2USE - custom troop type template | ;======================================================================= ; 2003 by ])rStrangelove ; ; ; ; It lets you choose which troops are spawned. ; To use your own, make up a label for it, ; place the codenames of your custom armies here ; and call the SpawnManager script with your label in the parameters ; Also, you need to place 1 dead soldier of each type in the map somewhere (or into ocean) ; that will prevent the lagspikes during spawns ; Soldier types are chosen randomly, except the 1st one - should/must be the officer! ; Multiple entries of the standard soldier type will increase the chance this type is spawned. #ArmA ;=================FlashpointDefault================================ _patrolunits_east = ["SoldierENOG","SoldierEB","SoldierEB","SoldierEB","SoldierEG","SoldierEMedic","SoldierEMG","SoldierEAT"] _patrolunits_west = ["SoldierWNOG","SoldierWB","SoldierWB","SoldierWB","SoldierWG","SoldierWMedic","SoldierWMG","SoldierWAT"] goto _return ; SPAWN MANAGER 2 with AI ; 2003 by ])rStrangelove /modified 2004 by Spankmeyer ; this modified version uses randpatrolAI instead of the original randpatrolscript. this provides ; a rudimentary (but dangerous) AI to the east-troops. it works only with MostKnownEnemy.sqs!! ; how to use MostKnownEnemy.sqs is described there! ; ; THIS ONE WORKS WITH AI. USE ONLY FOR EAST-GROUPS! ; ; Spawns a group and issues orders ; New/special features: ; - Many parameters optional, can create general or very specific groups & behaviour. ; - Respawns can either happen: never, specific amount or forever ; - Respawns don't switch groups anymore, only 1 specific group used all the time ; - Respawn script works for EAST and WEST. ; (You could let 2 SpManagers fight against each other !) ; - Troop types in seperate section, easy to customize. See "troops2use" at bottom of script. ; (Templates included for Original OPF, SEB Vietnam, Invasion44 and BAS-Tonal-troops) ; (Mixed fights with different troops possible (US Nam grunts VS. Tonal africans)) ; - All running SpawnManagers will collect spawn groups in the global arrays: ; "eastpatrolteams" and "westpatrolteams" for ease of reference. ; - Spawnposition and Patrolposition don't need to be the same anymore. ; - Dead soldiers slowly sink into the ground after 11+ seconds. ; (it's not a feature, it's an important bug solver) ;) ; - If allowed, wounded group leaders call long range artillery on enemy positions ; (see init.sqs) ; - If spawn object name is given, group respawn is dependant on object's health. ; (good for assigning a tent or building; destroying it will also stop respawns) ; (it's possible to assign vehicles as spawn objects. If vehicles are too fast / too high, ; (soldiers will get hurt/fall to death.) ;================================================================================= ;SHORTEST EXAMPLE--------------------------- ;["east","", tent] exec "spawnman.sqs" ; ; 5 russians are spawned at tent, will start patrolling 150m around tent. ; If all 5 are dead, they will respawn 1 time, but that's it. ;(these defaults can be changed in the "get parameters" start section) ;SPECIFIC EXAMPLE--------------------------- ;["west","BAS_Deltas", tent,8,150,20,-1,4, house,tent] exec "spawnman.sqs" ; ; Parameter Values allowed Explanation ; (0) "east" or "west" what side is used ? ; (1) "1985","vietnam",etc what troops are spawned ? see bottom section ; (2) [x,y,z],getpos base position where troops are spawned ; (3) optional 2 - 12 how many soldiers are in group ? ; (4) optional 1 - 99999 (whatever) patrol radius around patrolposition in m ; (5) optional 1 - 99999 (whatever) how many seconds group will pause between patrols ; (6) optional -1,0,1 - 99999 how many respawns ? -1 = infinite, 0 = no respawns ; (7) optional 2 - 12 how many dead in a group to trigger a respawn ? ; (8) optional [x,y,z],getpos patrolposition that is patrolled around ; (9) optional spawn- object that "spawns" troops. destroying it will stop respawns ; NOTE: if parameter 9 is given (spawn-object), parameter 2 (spawn-position) won't be used. ; ; 8 Deltas (BAS troops) are spawned at tent, will start patrolling 150m around house. ; They will pause for 20 seconds at each patrol point. ; Everytime 4 Deltas have been killed, these 4 Deltas will respawn (respawns are infinite). ; If tent is destroyed, respawns will come to a complete halt. However, the script does continue ; and will resume where it halted in case the tent is "repaired" somehow later on. ?!(local Server):EXIT ~(random 1) + 1 ;=================GET PARAMETERS======================== ;get parameters ?(count _this < 3):player groupchat "Spawnmanager parameter ERROR";EXIT _side = _this select 0 _troops = _this select 1 _basepos = _this select 2 ?(count _this > 3):_teamscale = _this select 3 ?(count _this <= 3):_teamscale = 5 ?(count _this > 4):_radius = _this select 4 ?(count _this <= 4):_radius = 150 ?(count _this > 5):_pause = _this select 5 ?(count _this <= 5):_pause = 20 ?(count _this > 6):_stopcount = _this select 6 ?(count _this <= 6):_stopcount = 1 ?(count _this > 7):_triggerscale = _this select 7 ?(count _this <= 7):_triggerscale = 5 ?(count _this > 8):_patrolpos = _this select 8 ?(count _this <= 8):_patrolpos = _basepos ?(count _this > 9):_base = _this select 9 ?(count _this <= 9):_base = objNull ;============CHECK VALUES / DEFAULTS==================== ; _return = "check_value_defaults" ?(_troops == ""):_troops = "1985" goto _troops #check_value_defaults ?(_teamscale < 2):_teamscale = 2 ?(_teamscale > 12):_teamscale = 12 ?(_triggerscale > 12):_triggerscale = 12 ?(_triggerscale > _teamscale):_triggerscale = _teamscale ;============INIT VALUES================================ _units = call compile format["_patrolunits_%1",_side] _dummygroup = call compile format["%1dummygroup",_side] _team = grpNull _leader = _units select 1 ;hint format ["typ %1",_leader] ?(_triggerscale == _teamscale):_leader = _units select 0 _firsttime = TRUE _spawncount = 0 _scale = _teamscale ?(damage _base >= 1):_base = objNull ?!(isNull _base):[_base] exec "spawnman\gasexplosion.sqs" ;=============================SPAWN TEAM===================== #spawn_leader ?!(isNull _base):_basepos = getpos _base ?(damage _base >= 1):_return1 = "spawn_leader";goto "wait_for_baserepair" ?(_firsttime):goto "go" ;delay to give the dead enough time to decay ~28 #go ?(damage _base >= 1):_return1 = "go";goto "wait_for_baserepair" (_leader) createUnit [_basepos, _dummygroup] _member = (units _dummygroup) select 1 [_member] join _team; _team = group _member _patrolteams = call compile format["%1patrolteams",_side] ?(_side == "east"):goto "check_east" goto "check_west" #check_east ?(count eastpatrolteams > 0) AND !(_team in eastpatrolteams): eastpatrolteams = eastpatrolteams + [_team] eastpatrolteams = [_team];goto "after_check" #check_west ?(count westpatrolteams > 0) AND !(_team in westpatrolteams): westpatrolteams = westpatrolteams + [_team] westpatrolteams = [_team] #after_check _restcount = 1 #spawn_rest ?(damage _base >= 1):_return1 = "spawn_rest";goto "wait_for_baserepair" ~(random 1) + 1 (_units select 1+(random(count _units - 1))) createUnit [_basepos,_team] _restcount = _restcount + 1 ?(_restcount < _scale):goto "spawn_rest" _scale = _triggerscale ;====================START PATROLSCRIPT=================== ;give orders ; last parameter("1") is a dummy-parameter, which updates the patrol-pos in every loop(of randpatrol). ?(_firsttime): [_team,_radius,_pause, _patrolpos,1] exec "spawnman\randpatrolAI.sqs"; _firsttime = FALSE ?(_stopcount == 0):EXIT ?(_spawncount == _stopcount):EXIT ;=====================WAIT FOR TRIGGER TO RESPAWN=========== #wait_for_trigger ~1 ?(damage _base >= 1):_return1 = "wait_for_trigger";goto "wait_for_baserepair" ?(count units _team > (_teamscale - _triggerscale)):goto "wait_for_trigger" _spawncount = _spawncount + 1 goto "spawn_leader" ;=============WAIT FOR BASE REPAIRS SO RESPAWNS MAY CONTINUE======== #wait_for_baserepair ~1 ?!(damage _base <= 0.5):goto "wait_for_baserepair" goto _return1 ;----------------------------------------------------------------------- ; TROOPS2USE - custom troop type template | ;======================================================================= ; 2003 by ])rStrangelove ; ; ; ; It lets you choose which troops are spawned. ; To use your own, make up a label for it, ; place the codenames of your custom armies here ; and call the SpawnManager script with your label in the parameters ; Also, you need to place 1 dead soldier of each type in the map somewhere (or into ocean) ; that will prevent the lagspikes during spawns ; Soldier types are chosen randomly, except the 1st one - should/must be the officer! ; Multiple entries of the standard soldier type will increase the chance this type is spawned. #ArmA ;=================FlashpointDefault================================ _patrolunits_east = ["SoldierENOG","SoldierEB","SoldierEB","SoldierEB","SoldierEG","SoldierEMedic","SoldierEMG","SoldierEAT"] _patrolunits_west = ["SoldierWNOG","SoldierWB","SoldierWB","SoldierWB","SoldierWG","SoldierWMedic","SoldierWMG","SoldierWAT"] goto _return #define ReadAndWrite 0 #define ReadAndCreate 1 #define ReadOnly 2 #define ReadOnlyVerified 3 #define true 1 #define false 0 class KEGsRscText { access = ReadAndWrite; type = 0; idc = -1; style = 0; w = 0.1; h = 0.05; font = "TahomaB"; sizeEx = 0.04; colorBackground[] = {0, 0, 0, 0}; colorText[] = {1, 1, 1, 1}; text = ""; }; class KEGsRscListBox { access = ReadAndWrite; type = 5; style = 0; w = 0.4; h = 0.4; font = "TahomaB"; sizeEx = 0.04; rowHeight = 0; colorText[] = {1, 1, 1, 1}; colorScrollbar[] = {1, 1, 1, 1}; colorSelect[] = {0, 0, 0, 1}; colorSelect2[] = {1, 0.5, 0, 1}; colorSelectBackground[] = {0.6, 0.6, 0.6, 1}; colorSelectBackground2[] = {0.2, 0.2, 0.2, 1}; colorBackground[] = {0, 0, 0, 1}; soundSelect[] = {"", 0.1, 1}; period = 1; }; class KEGsRscActiveText { access = ReadAndWrite; type = 11; style = 2; h = 0.05; w = 0.15; font = "TahomaB"; sizeEx = 0.04; color[] = {1, 1, 1, 1}; colorActive[] = {1, 0.5, 0, 1}; soundEnter[] = {"", 0.1, 1}; soundPush[] = {"", 0.1, 1}; soundClick[] = {"", 0.1, 1}; soundEscape[] = {"", 0.1, 1}; text = ""; default = 0; }; class KEGsRscMapControl { access = ReadAndWrite; type = 101; idc = 51; style = 48; colorBackground[] = {1, 1, 1, 1}; colorText[] = {0, 0, 0, 1}; font = "TahomaB"; sizeEx = 0.04; colorSea[] = {0.56, 0.8, 0.98, 0.5}; colorForest[] = {0.6, 0.8, 0.2, 0.5}; colorRocks[] = {0.5, 0.5, 0.5, 0.5}; colorCountlines[] = {0.65, 0.45, 0.27, 0.5}; colorMainCountlines[] = {0.65, 0.45, 0.27, 1}; colorCountlinesWater[] = {0, 0.53, 1, 0.5}; colorMainCountlinesWater[] = {0, 0.53, 1, 1}; colorForestBorder[] = {0.4, 0.8, 0, 1}; colorRocksBorder[] = {0.5, 0.5, 0.5, 1}; colorPowerLines[] = {0, 0, 0, 1}; colorNames[] = {0, 0, 0, 1}; colorInactive[] = {1, 1, 1, 0.5}; colorLevels[] = {0, 0, 0, 1}; fontLabel = "Zeppelin32"; sizeExLabel = 0.027; fontGrid = "Zeppelin32"; sizeExGrid = 0.027; fontUnits = "Zeppelin32"; sizeExUnits = 0.027; fontNames = "Zeppelin32"; sizeExNames = 0.027; fontInfo = "Zeppelin32"; sizeExInfo = 0.027; fontLevel = "Zeppelin32"; sizeExLevel = 0.027; text = "#(argb,8,8,3)color(1,1,1,1)"; stickX[] = {0.2, {"Gamma", 1, 1.5}}; stickY[] = {0.2, {"Gamma", 1, 1.5}}; ptsPerSquareSea = 6; ptsPerSquareTxt = 8; ptsPerSquareCLn = 8; ptsPerSquareExp = 8; ptsPerSquareCost = 8; ptsPerSquareFor = "4.0f"; ptsPerSquareForEdge = "10.0f"; ptsPerSquareRoad = 2; ptsPerSquareObj = 10; class Bunker { icon = "\ca\ui\data\map_bunker_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 16; importance = 1.5 * 14 * 0.05; coefMin = 0.25; coefMax = 4; }; class Bush { icon = "\ca\ui\data\map_bush_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 16; importance = 0.2 * 14 * 0.05; coefMin = 0.25; coefMax = 4; }; class BusStop { icon = "\ca\ui\data\map_busstop_ca.paa"; color[] = {0, 0, 1, 1}; size = 10; importance = 1 * 10 * 0.05; coefMin = 0.25; coefMax = 4; }; class Cross { icon = "\ca\ui\data\map_cross_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 16; importance = 0.7 * 16 * 0.05; coefMin = 0.25; coefMax = 4; }; class Fortress { icon = "\ca\ui\data\map_bunker_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.25; coefMax = 4; }; class Fuelstation { icon = "\ca\ui\data\map_fuelstation_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.75; coefMax = 4; }; class Fountain { icon = "\ca\ui\data\map_fountain_ca.paa"; color[] = {0, 0.35, 0.7, 1}; size = 12; importance = 1 * 12 * 0.05; coefMin = 0.25; coefMax = 4; }; class Hospital { icon = "\ca\ui\data\map_hospital_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; class Chapel { icon = "\ca\ui\data\map_chapel_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 16; importance = 1 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Church { icon = "\ca\ui\data\map_church_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Lighthouse { icon = "\ca\ui\data\map_lighthouse_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 20; importance = 3 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Quay { icon = "\ca\ui\data\map_quay_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 16; importance = 2 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; class Rock { icon = "\ca\ui\data\map_rock_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 12; importance = 0.5 * 12 * 0.05; coefMin = 0.25; coefMax = 4; }; class Ruin { icon = "\ca\ui\data\map_ruin_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 16; importance = 1.2 * 16 * 0.05; coefMin = 1; coefMax = 4; }; class SmallTree { icon = "\ca\ui\data\map_smalltree_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 16; importance = 0.6 * 12 * 0.05; coefMin = 0.25; coefMax = 4; }; class Stack { icon = "\ca\ui\data\map_stack_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 20; importance = 2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Tree { icon = "\ca\ui\data\map_tree_ca.paa"; color[] = {0.55, 0.64, 0.43, 1}; size = 16; importance = 0.9 * 16 * 0.05; coefMin = 0.25; coefMax = 4; }; class Tourism { icon = "\ca\ui\data\map_tourism_ca.paa"; color[] = {0.78, 0, 0.05, 1}; size = 16; importance = 1 * 16 * 0.05; coefMin = 0.7; coefMax = 4; }; class Transmitter { icon = "\ca\ui\data\map_transmitter_ca.paa"; size = 20; color[] = {0, 0.35, 0.7, 1}; importance = 2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class ViewTower { icon = "\ca\ui\data\map_viewtower_ca.paa"; size = 16; color[] = {0, 0.35, 0.7, 1}; importance = 2.5 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; class Watertower { icon = "\ca\ui\data\map_watertower_ca.paa"; color[] = {0, 0.35, 0.7, 1}; size = 32; importance = 1.2 * 16 * 0.05; coefMin = 0.9; coefMax = 4; }; class Waypoint { icon = "\ca\ui\data\map_waypoint_ca.paa"; size = 16; color[] = {0, 0.35, 0.7, 1}; importance = 2.5 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; class WaypointCompleted { icon = "\ca\ui\data\map_waypoint_completed_ca.paa"; size = 16; color[] = {0, 0.35, 0.7, 1}; importance = 2.5 * 16 * 0.05; coefMin = 0.5; coefMax = 4; }; }; class KEGsRscControlsGroup { type = 15; idc = -1; style = 0; x = 0; y = 0; w = 1; h = 1; class VScrollbar { color[] = {1, 1, 1, 1}; width = 0.021; }; class HScrollbar { color[] = {1, 1, 1, 1}; height = 0.028; }; class Controls {}; };// // Spectating Script for Armed Assault // by Kegetys // _player = _this select 0; _killer = _this select 1; _seagull = _this select 2; // If seagull is valid we came from the respawn scene if(typeName _seagull != "string") then { _seagull setpos[-1000, -1000, 1000]; sleep 1.5; titleCut["","BLACK OUT", 1.5]; }; // Globals etc. spectate_events = compile loadfile "spect\specta_events.sqf"; KEGsMouseButtons = [false, false]; KEGsMouseScroll = 0; KEGsMouseCoord = [0.5, 0.5]; KEGsUseNVG = false; KEGsMissileCamActive = false; KEGsUseMissileCam = true; KEGsMarkerNames = false; // True = display marker names and arrows KEGsMarkerType = 1; // 0 = disabled, 1 = names, 2 = types KEGsTags = false; // Particlesource tags KEGsAIfilter = false; // Filter AI units (only players displayed) KEGsClientAddonPresent = false; // Is client-side addon present? KEGsMarkerSize = 1.0; // Full map marker size KEGsMinimapZoom = 0.5; // Minimap zoom KEGsSelect = 0; // Used to change selected target KEGsDroppedCamera = false; // Free camera dropped (non-targeted with free motion)? KEGsCamForward = false; KEGsCamBack = false; KEGsCamLeft = false; KEGsCamRight = false; KEGsNeedUpdateLB = false; _mouseDeltaX = 0; _mouseDeltaY = 0; _sdistance = 1; // camera distance _fangle = 0; // Free camera angle _fangleY = 15; _flybydst = 35; // Distance of flyby camera (adjusted based on target speed) _szoom = 0.976; _markers = []; // Map markers showing positions of all units KEGsTagSources = []; // Particle sources for tags _lastTgt = 0; _nameCache = []; // Used to store valid names since name command cannot be trusted _maxDistance = 50; // Maximum distance for camera _maxZoom = 0.05; // Maximum zoom level _minZoom = 2; // Unit sides shown - Show all if sides not set if(format["%1", KEGsShownSides] == "scalar bool array string 0xe0ffffef") then { KEGsShownSides = [west, east, resistance, civilian]; }; deathCam = []; _ehVehicles = []; // Used to keep track of added eventhandlers KEGsAllUnits = []; // Create trigger for retrieving all vehicles _t = createTrigger["EmptyDetector", getpos player]; _t setTriggerType "NONE"; _t setTriggerStatements ["this", "KEGsAllUnits = thislist", ""]; _t setTriggerArea[50000, 50000, 0, false]; _t setTriggerActivation["ANY", "PRESENT", false]; // Wait until trigger assigns the array waitUntil{count KEGsAllUnits > 0}; if(typeName _seagull != "string") then { sleep 1; titleCut ["","BLACK IN", 8]; } else { titleText["","BLACK IN", 0]; }; // Create dialog & assign keyboard handler createDialog "rscSpectate"; _disp = (findDisplay 55001); _disp displaySetEventHandler["KeyDown", "[""KeyDown"",_this] call spectate_events"]; _disp displaySetEventHandler["KeyUp", "[""KeyUp"",_this] call spectate_events"]; // Hide menus by default ["ToggleCameraMenu",0] call spectate_events; ["ToggleTargetMenu",0] call spectate_events; ["ToggleHelp",0] call spectate_events; ["ToggleMap",1] call spectate_events; // IDC's from rsc _cCamera = 55002; _cTarget = 55003; _cName = 55004; _cLBCameras = 55005; _cLBTargets = 55006; _cCamerasBG = 55007; _cTargetsBG = 55008; _cMap = 55013; _cMapFull = 55014; _cDebug = 55100; _nearest = objNull; // Create cameras _pos = [(getpos player select 0)-1+random 2, (getpos player select 1)-1+random 2, 2]; KEGscam_static = "camera" camCreate _pos; KEGscam_target = "camera" camCreate _pos; // "Dummy" target camera for smooth transitions KEGscam_free = "camera" camCreate _pos; KEGscam_flyby = "camera" camCreate _pos; KEGscam_topdown = "camera" camCreate _pos; KEGscam_1stperson = "camera" camCreate _pos; // Dummy camera KEGscam_missile = "camera" camCreate _pos; // Missile camera KEGscam_fullmap = "camera" camCreate _pos; // Full map view camera _cameras = [KEGscam_free, KEGscam_static, KEGscam_flyby, KEGscam_topdown, KEGscam_1stperson]; _cameraNames = ["Free", "Chase", "Flyby", "Top-down", "1st person"]; _dummy = "helihempty" createVehicleLocal [0,0,0]; // Dummy object for distance command // Add cameras to listbox lbClear _cLBCameras; {lbAdd[_cLBCameras, _x]} foreach _cameraNames; // Add separator & toggles _cLbSeparator = lbAdd[_cLBCameras, "---"]; lbSetColor[_cLBCameras, _cLbSeparator, [0.5, 0.5, 0.5, 0.5]]; _cLbMissileCam = lbAdd[_cLBCameras, "Missile camera"]; _cLbToggleNVG = lbAdd[_cLBCameras, "Night vision"]; _cLbToggleTags = lbAdd[_cLBCameras, "Unit tags"]; _cLbToggleAiFilter = lbAdd[_cLBCameras, "Filter AI"]; KEGs_tgtIdx = 0; KEGs_cameraIdx = 0; showcinemaborder false; lbClear _cLBTargets; onMapSingleClick "[""MapClick"",_pos] call spectate_events"; ["EventLogAdd",["Initialize",[1,1,1,1]]] call spectate_events; // Check for client side addon _foo = "KEGsAddon10" createVehicleLocal[-1000,-1000,0]; //_foo = "KEGspect_bar_yellow" createVehicleLocal[-1000,-1000,0]; if(!isNull _foo) then { deletevehicle _foo; KEGsClientAddonPresent = true; }; // Spawn thread to display help reminder after a few seconds [] spawn {sleep(3);if(dialog) then {cutText["\n\n\n\n\nPress F1 for help","PLAIN DOWN", 0.75]}}; _camSelLast = 0; _tgtSelLast = 0; _mouseLastX = 0.5; _mouseLastY = 0.5; _nNoDialog = 0; _lastCheckNewUnits = -100; _lastUpdateMarkers = -100; _lastUpdateTags = -100; _lastAutoUpdateLB = time; KEGsCamPos = [0,0,0]; _cxpos = 0; _cypos = 0; _czpos = 0; _cspeedx = 0; _cspeedy = 0; _tbase = 0.1; // Main loop - Ugly double loop to avoid exit after 10000 iterations while{dialog} do { while{dialog} do { call { // Check for listbox selections if(_camSelLast != lbCurSel _cLBCameras) then { _cs = lbCurSel _cLBCameras; if(_cs == _cLbSeparator) then {_cs = _camSelLast}; // Special for toggling missile camera if(_cs == _cLbMissileCam) then { KEGsUseMissileCam = !KEGsUseMissileCam; _cs = _camSelLast; }; // Special for toggling NVG if(_cs == _cLbToggleNVG) then { KEGsUseNVG = !KEGsUseNVG; _cs = _camSelLast; }; // Special for toggling tags if(_cs == _cLbToggleTags) then { KEGsTags = !KEGsTags; ["ToggleTags", [KEGsTags, (_cameras select KEGs_cameraIdx)]] call spectate_events; _cs = _camSelLast; }; // Special for toggling AI filter if(_cs == _cLbToggleAiFilter) then { KEGsAIfilter = !KEGsAIfilter; _cs = _camSelLast; KEGsNeedUpdateLB = true; // Request listbox update }; if(_cs != _camSelLast) then { // Selected another camera - disable dropped cam KEGsDroppedCamera = false; }; KEGs_cameraIdx = _cs; }; if(lbCurSel _cLBTargets > lbSize _cLBTargets) then { lbSetCurSel[_cLBTargets, lbSize _cLBTargets]; // Selection outside listbox size }; // Update selected target from listbox if(KEGsSelect != 0) then { lbSetCurSel[_cLBTargets, ((lbCurSel _cLBTargets)+KEGsSelect)]; KEGsSelect = 0; }; if(_tgtSelLast != lbCurSel _cLBTargets) then { KEGsDroppedCamera = false; KEGs_tgtIdx = lbValue[_cLBTargets, (lbCurSel _cLBTargets)]; }; // Process mouse movement _mouseDeltaX = _mouseLastX - (KEGsMouseCoord select 0); _mouseDeltaY = _mouseLastY - (KEGsMouseCoord select 1); if(!(KEGsMouseButtons select 0) and (KEGsMouseButtons select 1)) then { // Right mouse button - Adjust position _fangle = _fangle - (_mouseDeltaX*360); _fangleY=_fangleY + (_mouseDeltaY*180); if(_fangleY > 89) then {_fangleY = 89}; if(_fangleY < -89) then {_fangleY = -89}; }; if((KEGsMouseButtons select 0) and !(KEGsMouseButtons select 1)) then { // Left mouse button - Adjust distance _sdistance = _sdistance - (_mouseDeltaY*10); if(_sdistance > _maxDistance) then {_sdistance = _maxDistance}; if(_sdistance < -_maxDistance) then {_sdistance = -_maxDistance}; }; if(KEGsMouseScroll != 0) then { // Mouse scroll wheel - Adjust distance _sdistance = _sdistance - (KEGsMouseScroll*0.11); KEGsMouseScroll = KEGsMouseScroll * 0.75; if(_sdistance > _maxDistance) then {_sdistance = _maxDistance}; if(_sdistance < -_maxDistance) then {_sdistance = -_maxDistance}; }; if((KEGsMouseButtons select 0) and (KEGsMouseButtons select 1)) then { // Both mousebuttons - Adjust zoom _szoom = _szoom - (_mouseDeltaY*3); if(_szoom > _minZoom) then {_szoom = _minZoom}; if(_szoom < _maxZoom) then {_szoom = _maxZoom}; }; // Check for new units every 2 seconds if(time - _lastCheckNewUnits > 2) then { _lastCheckNewUnits = time; _allUnits = []; _allVehicles = []; // Avoid game logics _foo = []; {if(side _x != sideLogic) then {_foo = _foo + [_x]}} foreach KEGsAllUnits; {_allUnits = _allUnits + (crew _x);_allVehicles = _allVehicles + [_x]} foreach _foo; _newUnits = _allUnits - deathCam; _newVehicles = _allVehicles - _ehVehicles; if(count _newVehicles > 0) then { // Add event handlers to new vehicles _ehVehicles = _ehVehicles + _newVehicles; { // Add fired eventhandler for map indication _fh = _x addeventhandler["fired", {["UnitFired",_this] call spectate_events}]; //_kh = _x addeventhandler["killed", {["UnitKilled",_this] call spectate_events}]; _x setVariable["KEGsEHfired", _fh]; //_x setVariable["KEGsEHkilled", _kh]; } foreach _newVehicles; }; if(count _newUnits > 0) then { // Add new units to end of list deathCam = deathCam + _newUnits; // Request listbox update KEGsNeedUpdateLB = true; // Create markers { // Crete marker _m = createMarkerLocal[format["KEGsMarker%1", count _markers], getpos player]; _m setMarkerTypeLocal "Dot"; _m setMarkerSizeLocal[0.4, 0.4]; _markers = _markers + [_m]; // Set marker color if(side _x == west) then {_m setMarkerColorLocal "ColorBlue";}; if(side _x == east) then {_m setMarkerColorLocal "ColorRed";}; if(side _x == resistance) then {_m setMarkerColorLocal "ColorGreen";}; if(side _x == civilian) then {_m setMarkerColorLocal "ColorWhite";}; // Create particle source _s = "#particlesource" createvehiclelocal (getpos _x); KEGsTagSources = KEGsTagSources + [[_x, _s]]; // If tags are on, turn them off and back again to include new units if(KEGsTags) then { ["ToggleTags",[false, (_cameras select KEGs_cameraIdx)]] call spectate_events; ["ToggleTags",[true, (_cameras select KEGs_cameraIdx)]] call spectate_events; }; } foreach _newUnits; }; }; // Request listbox update every 4 seconds to update dead units or jip player names if(time - _lastAutoUpdateLB > 4) then { _lastAutoUpdateLB = time; KEGsNeedUpdateLB = true; }; if(KEGsNeedUpdateLB) then { // Clear and re-fill targets listbox lbClear _cLBTargets; for "_idx" from 0 to ((count deathCam)-1) do { _x = deathCam select _idx; _name = ""; if(alive _x) then { // Unit is alive, use name command _name = name _x; _nameCache set[_idx, _name]; } else { // Dead unit, use cached name _name = _nameCache select _idx; }; if((!KEGsAIfilter or isPlayer _x) and ((side _x) in KEGsShownSides)) then { _i = lbAdd[_cLBTargets, _name]; lbSetValue[_cLBTargets, _i, _idx]; // Value used to id unit if(side _x == west) then {lbSetColor[_cLBTargets, _i, [0.8,0.8,1,1]]}; if(side _x == east) then {lbSetColor[_cLBTargets, _i, [1,0.8,0.8,1]]}; if(side _x == resistance) then {lbSetColor[_cLBTargets, _i, [0.8,1,0.8,1]]}; if(side _x == civilian) then {lbSetColor[_cLBTargets, _i, [1,1,1,1]]}; if(not alive _x) then { // Whoops, unit is dead, change color lbSetColor[_cLBTargets, _i, [0.5,0.5,0.5,1]]; }; if(_x == KEGs_target) then { // Select target lbSetCurSel[_cLBTargets, _i]; }; }; }; KEGsNeedUpdateLB = false; }; // Check limits if(KEGs_tgtIdx >= count deathCam) then {KEGs_tgtIdx = (count deathCam)-1;}; if(KEGs_tgtIdx < 0) then {KEGs_tgtIdx = 0}; if(KEGs_cameraIdx < 0) then {KEGs_cameraIdx = 0}; if(KEGs_cameraIdx >= count _cameras) then {KEGs_cameraIdx = (count _cameras)-1;}; // Select camera, get target if(!KEGsMissileCamActive) then { (_cameras select KEGs_cameraIdx) cameraEffect["internal", "BACK"]; KEGs_target = deathCam select KEGs_tgtIdx; }; lbSetCurSel[_cLBCameras, KEGs_cameraIdx]; if(lbValue[_cLBTargets, (lbCurSel _cLBTargets)] != KEGs_tgtIdx) then { // Find listbox element with matching value for "_idx" from 0 to (lbSize _cLBTargets) do { if(lbValue[_cLBTargets, (lbCurSel _cLBTargets)] == KEGs_tgtIdx) then { lbSetCurSel[_cLBTargets, _idx]; _found = true; }; }; }; //if(lbCurSel _cLBTargets != KEGs_tgtIdx) then { // lbSetCurSel[_cLBTargets, KEGs_tgtIdx]; // }; camUseNVG KEGsUseNVG; if(ctrlVisible _cMapFull) then { KEGscam_fullmap cameraEffect["internal", "BACK"]; }; //ctrlSetText[_cDebug, format["%1", count _markers]]; // Update tag particlesources if(time - _lastUpdateTags > (1/5)) then { _lastUpdateTags = time; if(KEGsTags) then { ["ToggleTags", [true, (_cameras select KEGs_cameraIdx)]] call spectate_events; }; }; // Update markers at max 15fps if(time - _lastUpdateMarkers > (1/15)) then { _lastUpdateMarkers = time; if(ctrlVisible _cMapFull) then { // Position camera in the middle of full map, for sound and // smoother marker motion (distant objects appear less smooth) _mapFull = _disp displayctrl _cMapFull; _mappos = _mapFull posScreenToWorld[0.5, 0.5]; KEGscam_fullmap camsettarget _mappos; KEGscam_fullmap camsetrelpos [0, -1, 150]; KEGscam_fullmap camcommit 0; }; _markedVehicles = []; // Keep track of vehicles with markers to avoid multiple markers for one vehicle for "_i" from 0 to ((count _markers)-1) do { _m = _markers select _i; _u = (deathCam select _i); _m setMarkerPosLocal (getpos vehicle _u); if(KEGsMarkerNames or KEGsMinimapZoom < 0.15) then { // Set full screen map marker types - Also zoomed minimap if(ctrlVisible _cMapFull) then { switch(KEGsMarkerType) do { case 0: { // No text _m setMarkerTextLocal ""; }; case 1: { // Names if(alive (vehicle _u)) then { if(name (vehicle _u) != "Error: no unit") then {_m setMarkerTextLocal name ( _u)}; }; }; case 2: { // Types _m setMarkerTextLocal getText (configFile >> "CfgVehicles" >> format["%1", typeOf (vehicle _u)] >> "DisplayName"); }; }; } else { // Minimap with detailed icons but no text _m setMarkerTextLocal ""; }; if(KEGsClientAddonPresent) then { // With client side addon use better icons _type = getText(configFile >> "CfgVehicles" >> format["%1", typeOf (vehicle _u)] >> "simulation"); _icon = "Arrow"; switch(_type) do { case "tank": {_icon = "KEGsTank"}; case "car": {_icon = "KEGsCar"}; case "soldier": {_icon = "KEGsMan"}; case "ship": {_icon = "KEGsShip"}; case "airplane": {_icon = "KEGsPlane"}; case "helicopter": {_icon = "KEGsHelicopter"}; case "motorcycle": {_icon = "KEGsMotorcycle"}; case "parachute": {_icon = "KEGsParachute"}; }; _m setMarkerTypeLocal _icon; _m setMarkerSizeLocal[0.42*KEGsMarkerSize, 0.42*KEGsMarkerSize]; } else { // No client side addon - basic markers _m setMarkerTypeLocal "Arrow"; if(_u == vehicle _u) then { _m setMarkerSizeLocal[0.33*KEGsMarkerSize, 0.27*KEGsMarkerSize]; } else { _m setMarkerSizeLocal[0.42*KEGsMarkerSize, 0.42*KEGsMarkerSize]; }; }; _m setMarkerDirLocal (getdir (vehicle _u)); } else { _m setMarkerTextLocal ""; _m setMarkerTypeLocal "Dot"; _m setMarkerSizeLocal[0.4,0.4]; }; if(!((side _u) in KEGsShownSides)) then { // Oops, we arent' supposed to show this side unit - hide marker _m setMarkerType "empty"; }; if(not alive _u) then { if(KEGsClientAddonPresent) then { // Switch to darker color, cant use side since the unit is already dead if(getMarkerColor _m == "ColorBlue") then {_m setMarkerColorLocal "KEGsDarkBlue"}; if(getMarkerColor _m == "ColorRed") then {_m setMarkerColorLocal "KEGsDarkRed"}; if(getMarkerColor _m == "ColorGreen") then {_m setMarkerColorLocal "KEGsDarkGreen"}; if(getMarkerColor _m == "ColorWhite") then {_m setMarkerColorLocal "KEGsGrey"}; } else { _m setMarkerColorLocal "ColorBlack" }; }; if(vehicle _u in _markedVehicles) then { // This vehicle was already marked, hide marker _m setMarkerTypeLocal "Empty"; } else { _markedVehicles = _markedVehicles + [vehicle _u]; }; }; // Follow target with small map _map = _disp displayctrl _cMap; ctrlMapAnimClear _map; if(KEGsDroppedCamera) then { // Center on dropped camera position _map ctrlMapAnimAdd[0.3, KEGsMinimapZoom, [_cxpos, _cypos,0]]; } else { // Center on target _map ctrlMapAnimAdd[0.3, KEGsMinimapZoom, getpos KEGs_target]; }; ctrlMapAnimCommit _map; }; // Check if target changed and center main map if(KEGs_tgtIdx != _lastTgt) then { _map = _disp displayctrl _cMapFull; ctrlMapAnimClear _map; _map ctrlMapAnimAdd [0.2, 1.0, getpos (deathcam select KEGs_tgtIdx)]; ctrlMapAnimCommit _map; }; if((_cameras select KEGs_cameraIdx) == KEGscam_1stperson) then { // 1st person view (vehicle KEGs_target) switchCamera "INTERNAL"; (vehicle KEGs_target) cameraEffect ["terminate","FRONT"]; }; // Get target properties _dir = getdir vehicle KEGs_target; _bb = boundingBox vehicle KEGs_target; _h = ((_bb select 1) select 2) - ((_bb select 0) select 2); // Height _l = ((_bb select 1) select 1) - ((_bb select 0) select 1); // Length _w = ((_bb select 1) select 0) - ((_bb select 0) select 0); // Width // Set UI texts _role = ""; if(vehicle KEGs_target != KEGs_target) then { if(KEGs_target == driver vehicle KEGs_target) then {_role = "(Driver)"}; if(KEGs_target == gunner vehicle KEGs_target) then {_role = "(Gunner)"}; if(KEGs_target == commander vehicle KEGs_target) then {_role = "(Commander)"}; }; _name = "Unknown"; if(alive KEGs_target) then { _name = name KEGs_target; if(_name == "Error: no unit") then {_name = "Unknown"}; }; if(KEGsDroppedCamera and isNull _nearest) then { // Dropped camera mode - no target _name = ""; _role = ""; }; ctrlSetText[_cName, format["%1 %2", _name, _role]]; ctrlSetText[_cCamera, format["Camera: %1", _cameraNames select KEGs_cameraIdx]]; // Set name color to gray if dropped cam _ccName = _disp displayctrl _cName; if(KEGsDroppedCamera) then { _ccName ctrlSetTextColor[0.6, 0.6, 0.6, 1]; } else { _ccName ctrlSetTextColor[1, 1, 1, 1]; }; // Set toggle text color for camera menu if(KEGsUseMissileCam) then {lbSetColor[_cLBCameras, _cLbMissileCam, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbMissileCam, [1,1,1,0.33]]}; if(KEGsUseNVG) then {lbSetColor[_cLBCameras, _cLbToggleNVG, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbToggleNVG, [1,1,1,0.33]]}; if(KEGsTags) then {lbSetColor[_cLBCameras, _cLbToggleTags, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbToggleTags, [1,1,1,0.33]]}; if(KEGsAIfilter) then {lbSetColor[_cLBCameras, _cLbToggleAiFilter, [1, 0.5, 0, 1]]} else {lbSetColor[_cLBCameras, _cLbToggleAiFilter, [1,1,1,0.33]]}; if(KEGsDroppedCamera) then { // Dropped free camera, moved with WSAD keys if(KEGs_cameraIdx != 0) then { // User changed camera KEGsDroppedCamera = false; }; // Adjust speed from buttons held down _spd = (_sdistance max 1)*20; if(KEGsCamForward) then { _cspeedx = _cspeedx + ((_spd*_tbase)*sin _fangle); _cspeedy = _cspeedy + ((_spd*_tbase)*cos _fangle); }; if(KEGsCamBack) then { _cspeedx = _cspeedx + ((-_spd*_tbase)*sin _fangle); _cspeedy = _cspeedy + ((-_spd*_tbase)*cos _fangle); }; if(KEGsCamLeft) then { _cspeedx = _cspeedx + ((_spd*_tbase)*sin (_fangle-90)); _cspeedy = _cspeedy + ((_spd*_tbase)*cos (_fangle-90)); }; if(KEGsCamRight) then { _cspeedx = _cspeedx + ((-_spd*_tbase)*sin (_fangle-90)); _cspeedy = _cspeedy + ((-_spd*_tbase)*cos (_fangle-90)); }; // Move camera _cxpos = _cxpos + (_cspeedx*_tbase); _cypos = _cypos + (_cspeedy*_tbase); _czpos = 0; _h = 2; // Static camera height _l = 2.2; // Slow down _bstr = 5; _cspeedx = _cspeedx * ((1.0-(_tbase*_bstr)) max 0); _cspeedy = _cspeedy * ((1.0-(_tbase*_bstr)) max 0); // Check for nearby targets _dummy setpos[_cxpos, _cypos, 1.5]; _objs = [_cxpos, _cypos, 1.5] nearObjects 5; _nearest = objNull; _dist = 10; { { _d = _dummy distance _x; if(_d < _dist and _x in deathCam and alive _x) then {_nearest = _x;_dist = _d;}; } foreach crew _x; } foreach _objs; if(!isNull _nearest) then {KEGs_tgtIdx = deathCam find _nearest}; } else { // Set targets for all cameras _cxpos = getpos vehicle KEGs_target select 0; _cypos = getpos vehicle KEGs_target select 1; _czpos = getpos vehicle KEGs_target select 2; }; KEGscam_target camSetPos[_cxpos, _cypos, _czpos+(_h*0.7)]; KEGscam_static camSetTarget KEGscam_target; KEGscam_free camSetTarget[_cxpos, _cypos, _czpos+(_h*0.6)]; KEGscam_flyby camSetTarget KEGscam_target; KEGscam_topdown camSetTarget[_cxpos, _cypos, _czpos+(_h*0.6)]; {_x camSetFov _szoom} foreach _cameras; // Static camera, follows unit from behind KEGscam_static camSetRelPos[sin(_dir)*(-(_l*_sdistance)), cos(_dir)*(-(_l*_sdistance)), 0.6*abs _sdistance]; // Free camera, user rotates camera around target _d = (-(_l*(0.3 max _sdistance))); _z = sin(_fangleY)*(_l*(0.3 max _sdistance)); KEGscam_free camSetRelPos[(sin(_fangle)*_d)*cos(_fangleY), (cos(_fangle)*_d)*cos(_fangleY), _z]; KEGscam_free camCommit 0; // Flyby camera, no user control except zoom if(KEGs_target distance KEGscam_flyby > (_flybydst*1.1)) then { _flybydst = 20+(speed vehicle KEGs_target); KEGscam_flyby camSetRelPos[sin(_dir)*_flybydst, cos(_dir)*_flybydst, 1+((random _h)*1.5)]; KEGscam_flyby camCommit 0; KEGscam_target camCommit 0; }; // Top-down camera KEGscam_topdown camSetRelPos[0.0, -0.01, 2+((0 max _sdistance)*15)]; KEGscam_topdown camCommit 0; // Commit static and flyby cameras _comSpeed = 1.0 - ((speed vehicle KEGs_target)/70); if(_comSpeed < 0.0) then {_comSpeed = 0.0;}; if((vehicle KEGs_target) distance KEGscam_static > 650) then {_comSpeed = 0}; // Jump immediately to distant target KEGscam_static camCommit _comSpeed/2; KEGscam_target camCommit _comSpeed/3; KEGscam_flyby camCommit _comSpeed; _mouseLastX = KEGsMouseCoord select 0; _mouseLastY = KEGsMouseCoord select 1; _camSelLast = lbCurSel _cLBCameras; _tgtSelLast = lbCurSel _cLBTargets; _lastTgt = KEGs_tgtIdx; }; // Wait a moment. 150fps ought to be enough for everyone :-) _tt = time; sleep(1/150); _tbase = time-_tt; }}; // Dialog closed with esc key titleText["","BLACK IN", 0.5]; // Destroy cameras, markers, particlesources, etc. {camDestroy _x} foreach _cameras; deletevehicle KEGscam_target; deletevehicle KEGscam_missile; deletevehicle KEGscam_fullmap; {deletemarkerlocal _x} foreach _markers; deletevehicle _t; camUseNVG false; KEGsTags = false; onMapSingleClick ""; {deletevehicle (_x select 1)} foreach KEGsTagSources; KEGsTagSources = []; // Remove eventhandlers TODO: does this work properly? { _fh = _x getVariable "KEGsEHfired"; //_kh = _x getVariable "KEGsEHkilled"; if(typeName _fh == "SCALAR") then {_x removeEventHandler["fired", _fh]}; //if(typeName _kh == "SCALAR") then {_x removeEventHandler["killed", _kh]}; } foreach _ehVehicles; // Create a butterfly for player to fly with _bpos = [(getpos (vehicle KEGs_target) select 0)-5+random 10, (getpos (vehicle KEGs_target) select 1)-5+random 10, 1]; _bird = "ButterFly" createVehicle _bpos; _bird setvelocity[0,0,5]; _bird setpos _bpos; _bird switchCamera "INTERNAL"; _bird cameraEffect["terminate","FRONT"]; _bird camCommand "manual on"; KEGsBird = _bird; onMapSingleClick "KEGsBird setpos [_pos select 0, _pos select 1, 2];KEGsBird setvelocity[0,0,5];"; cutText["\n\n\n\n\nLand on ground to return to spectating\nClick at map to jump to location","PLAIN DOWN", 0.75]; // Wait until landed, delete bird & restart script waitUntil{getpos _bird select 2 < 0.05 and speed _bird < 1}; onMapSingleClick ""; sleep(0.5); titleText["","BLACK OUT", 0.5]; sleep(1); _player switchCamera "INTERNAL"; _player cameraEffect["terminate","FRONT"]; deletevehicle _bird; [_player, _killer, "noWait"] execVM "spect\specta.sqf";// // Spectating Script for Armed Assault // by Kegetys // #include "common.hpp" #define BORDERSIZE 0.06 #define BORDERXSIZE 0.015 #define CMENUWIDTH 0.1575 // Camera menu width #define TMENUWIDTH 0.200 // Target menu width #define MENUHEIGHT 0.25 #define MAPWIDTH 0.3 #define MAPHEIGHT 0.28 #define MAPTXTSIZE 0.02 #define ELOGWIDTH 0.900 //#define ELOGHEIGHT 0.1525 #define ELOGHEIGHT 0.0 #define IDC_MAIN 55001 #define IDC_CAMERA 55002 #define IDC_TARGET 55003 #define IDC_NAME 55004 #define IDC_MENUCAM 55005 #define IDC_MENUTGT 55006 #define IDC_MENUCAMB 55007 #define IDC_MENUTGTB 55008 #define IDC_BG1 55009 #define IDC_BG2 55010 #define IDC_TITLE 55011 #define IDC_HELP 55012 #define IDC_MAP 55013 #define IDC_MAPFULL 55014 #define IDC_MAPFULLBG 55015 #define IDC_EVENTLOG 50016 #define IDC_DEBUG 55100 #define COL_ORANGE {1, 0.5, 0, 1} #define COL_GRAY {0.2, 0.2, 0.2, 1} class rscSpectate { idd = IDC_MAIN; movingEnable = false; class controls { // Borders and title text class BackgroundTop: KEGsRscText { idc = IDC_BG1; x = -3.0; y = -1.0; w = 7.0; h = BORDERSIZE+1; colorBackground[] = {0.0, 0.0, 0.0, 1.0}; }; class BackgroundBottom: BackgroundTop { idc = IDC_BG2; y = 1.0-BORDERSIZE; }; class title : BackgroundTop { idc = IDC_TITLE; colorBackground[] = {0.0, 0.0, 0.0, 0.0}; text = "SPECTATING"; style = 2; sizeEx = 0.035; colorText[] = {1.0, 0.0, 0.0, 1.0}; shadow = true; y = 0.0; h = BORDERSIZE; font = "Zeppelin32"; } // Camera menu class menuCameras : KEGsRscText { idc = IDC_MENUCAMB; style = ST_HUD_BACKGROUND; x = BORDERXSIZE; y = BORDERSIZE; w = CMENUWIDTH; h = MENUHEIGHT; text = ; colorBackground[] = {0, 0, 0, 0.7}; }; class menuCamerasLB : KEGsRscListBox { idc = IDC_MENUCAM; x = BORDERXSIZE; y = BORDERSIZE; w = CMENUWIDTH; h = MENUHEIGHT; colorSelect[] = COL_ORANGE; colorSelect2[] = COL_ORANGE; colorSelectBackground[] = COL_GRAY; colorSelectBackground2[] = COL_GRAY; sizeEx = 0.025; } // Targets menu class menuTargets : KEGsRscText { idc = IDC_MENUTGTB; style = ST_HUD_BACKGROUND; x = 1.0-BORDERXSIZE-TMENUWIDTH; y = BORDERSIZE; w = TMENUWIDTH; h = MENUHEIGHT; text = ; colorBackground[] = {0, 0, 0, 0.7}; }; class menuTargetsLB : KEGsRscListBox { idc = IDC_MENUTGT; x = 1.0-BORDERXSIZE-TMENUWIDTH; y = BORDERSIZE; w = TMENUWIDTH; h = MENUHEIGHT; colorSelect[] = COL_ORANGE; colorSelect2[] = COL_ORANGE; colorSelectBackground[] = COL_GRAY; colorSelectBackground2[] = COL_GRAY; colorScrollbar[] = COL_ORANGE; colorText[] = {1, 1, 1, 1}; sizeEx = 0.025; period = 0; } // Top texts class tCamera : KEGsRscActiveText { idc = IDC_CAMERA; x = BORDERXSIZE; y = 0.0; w = 1.0-(2*BORDERXSIZE); h = BORDERSIZE; text = "Camera"; style = 0; sizeEx = 0.025; color[] = {1.0, 1.0, 1.0, 0.9}; shadow = true; font = "Zeppelin32"; onMouseButtonUp = "[""ToggleCameraMenu"",0] call spectate_events"; } class tTarget : tCamera { idc = IDC_TARGET; text = "Target"; style = 1; onMouseButtonUp = "[""ToggleTargetMenu"",0] call spectate_events"; } // Bottom texts class tName : KEGsRscText { idc = IDC_NAME; x = BORDERXSIZE;y= 1.0-BORDERSIZE; w = 1.0-(2*BORDERXSIZE); h = BORDERSIZE; text = "Unknown"; style = 0; sizeEx = 0.030; colorText[] = {1.0, 1.0, 1.0, 0.9}; font = "Zeppelin32"; } // Help text class tHelp : KEGsRscText { type = 13; idc = IDC_HELP; x = BORDERXSIZE*3;y=BORDERSIZE*3; w = 1-(2*BORDERXSIZE*3); h = 1.0-(2*BORDERSIZE*2); text = "Spectating Script v1.0 by Kegetys

Click at the camera/target text at the top to open camera/target menus.
Units on the map can be clicked to target them

Keyboard controls:
A/D - Previous/Next target
W/S - Previous/Next camera
1-5 - Direct camera change
N - 3D view: Toggle night vision on/off
N - Full map: Toggle marker text off/names/types
T - Toggle unit tags on/off
F - Toggle AI filter on/off
Tab - Toggle UI on/off
M - Toggle map on/full/off
Numpad plus/minus - Increase/decrease full map marker size
Space - Drop camera (W,S,A,D keys = movement)
Esc - Butterfly mode

Mouse controls:
Right button - Rotate camera (free camera mode only)
Left button - Move camera
Left and right button - Zoom

Download the client-side addon from
http://www.kegetys.net for enhanced functionality
"; style = 2; sizeEx = 0.025; size = 0.025; colorText[] = {1.0, 1.0, 1.0, 1.0}; color[] = {0.0, 0.0, 0.0, 1.0}; font = "LucidaConsoleB"; class Attributes{ font = "Bitstream"; color = "#ffffff"; align = "left"; shadow = true; }; } // Debug text class tDebug : tCamera { idc = IDC_DEBUG; text = ""; style = 2; x = 0; y = 0; w = 1; h = 1; action =""; } // Map class map : KEGsRscMapControl { idc = IDC_MAP; x = 1.0-MAPWIDTH;y=1.0-MAPHEIGHT; w = MAPWIDTH; h = MAPHEIGHT; colorBackground[] = {0.7, 0.7, 0.7, 0.75}; //sizeEx = 0.02; sizeExLabel = MAPTXTSIZE; sizeExGrid = MAPTXTSIZE; sizeExUnits = MAPTXTSIZE; sizeExNames = MAPTXTSIZE; sizeExInfo = MAPTXTSIZE; sizeExLevel = MAPTXTSIZE; showCountourInterval = "false"; onMouseZChanged = "[""MouseZChangedminimap"",_this] call spectate_events"; class Command { icon = "#(argb,8,8,3)color(1,1,1,1)"; color[] = {0, 0, 0, 1}; size = 18; importance = 1; coefMin = 1; coefMax = 1; }; class ActiveMarker { color[] = {0.3, 0.1, 0.9, 1}; size = 50; }; } // Fullscreen map class mapFullBG : BackgroundTop { idc = IDC_MAPFULLBG; x = -3;y=-3; w = 9;h=9; colorBackground[] = {0.0, 0.0, 0.0, 1.0}; } class mapFull : map { showCountourInterval = "true"; idc = IDC_MAPFULL; x = 0;y=BORDERSIZE; w = 1;h=1.0-(BORDERSIZE*2); colorBackground[] = {0.85, 0.85, 0.85, 1.0}; } // Fullscreen event log class mapFullEventLog : KEGsRscListBox { idc = IDC_EVENTLOG; x = 0; y = 1-ELOGHEIGHT; w = ELOGWIDTH; h = ELOGHEIGHT; colorText[] = {1, 1, 1, 0}; colorSelect[] = {1, 1, 1, 0}; colorSelect2[] = {1, 1, 1, 0}; colorSelectBackground[] = {1, 1, 1, 0}; colorSelectBackground2[] = {1, 1, 1, 0}; colorBackground[] = {0, 0, 0, 0.5}; colorScrollbar[] = {1, 1, 1, 0}; sizeEx = 0.021; } // Dummy element for retrieving mouse events class mouseHandler: KEGsRscControlsGroup { onMouseMoving = "[""MouseMoving"",_this] call spectate_events"; onMouseButtonDown = "[""MouseButtonDown"",_this] call spectate_events"; onMouseButtonUp = "[""MouseButtonUp"",_this] call spectate_events"; onMouseZChanged = "[""MouseZChanged"",_this] call spectate_events"; idc = 123; x = 0.0; y = 0.0; w = 1.0; h = 1.0; colorBackground[] = {0.2, 0.0, 0.0, 0.0}; }; } }comment "for Spectating Script"; comment "Handles events such as keyboard keypresses"; comment "by Kegetys "; _type = _this select 0; _param = _this select 1; _cCamera = 55002; _cTarget = 55003; _cName = 55004; _cLBCameras = 55005; _cLBTargets = 55006; _cCamerasBG = 55007; _cTargetsBG = 55008; _cBG1 = 55009; _cBG2 = 55010; _cTitle = 55011; _cHelp = 55012; _cMap = 55013; _cMapFull = 55014; _cMapFullBG = 55015; _cEventLog = 50016; _cDebug = 55100; _UI = [_cCamera, _cTarget, _cName, _cLBCameras, _cLBTargets, _cCamerasBG, _cTargetsBG, _cBG1, _cBG2, _cTitle, _cHelp]; switch (_type) do { comment "User clicked map, find nearest unit"; case "MapClick": { _dummy = "helihempty" createVehicleLocal _param; _closest = 250; _id = -1; for "_i" from 0 to ((count deathCam)-1) do { if((side (deathCam select _i)) in KEGsShownSides) then { _d = _dummy distance (deathCam select _i); if(_d < _closest) then {_id = _i;_closest = _d}; }; }; if(_id != -1) then { KEGs_tgtIdx = _id; KEGsDroppedCamera = false; if(ctrlVisible _cMapFull) then { comment "Full map -> Small map"; [] spawn {sleep(0.25);["ToggleMap",0] call spectate_events;["ToggleMap",0] call spectate_events;}; } }; deletevehicle _dummy; }; case "KeyDown": { _key = _param select 1; comment "WSAD keys: camera movement in dropped mode"; switch(_key) do { case 32: { KEGsCamRight = true; }; case 30: { KEGsCamLeft = true; }; case 17: { KEGsCamForward = true; }; case 31: { KEGsCamBack = true; }; }; }; comment "Key up - process keypress"; case "KeyUp": { _key = _param select 1; switch(_key) do { case 32: { comment "D = Next target"; if(!KEGsDroppedCamera) then {KEGsSelect = 1}; KEGsCamRight = false; }; case 30: { comment "A = Previous target"; if(!KEGsDroppedCamera) then {KEGsSelect = -1}; KEGsCamLeft = false; }; case 17: { comment "W = Previous camera"; if(!KEGsDroppedCamera) then {KEGs_cameraIdx = KEGs_cameraIdx - 1}; KEGsCamForward = false; }; case 31: { comment "S = Next camera"; if(!KEGsDroppedCamera) then {KEGs_cameraIdx = KEGs_cameraIdx + 1}; KEGsCamBack = false; }; case 20: { comment "T = Toggle tags"; KEGsTags = !KEGsTags; if(!KEGsTags) then { ["ToggleTags", [false, objNull]] call spectate_events; }; }; case 33: { comment "F = Toggle filter"; KEGsAIfilter = !KEGsAIfilter; KEGsNeedUpdateLB = true; }; case 57: { comment "Space - drop camera"; KEGsDroppedCamera = !KEGsDroppedCamera; if(KEGsDroppedCamera) then { KEGs_cameraIdx = 0; }; }; comment "Direct camera change with number keys"; case 2: {KEGs_cameraIdx = 0}; case 3: {KEGs_cameraIdx = 1}; case 4: {KEGs_cameraIdx = 2}; case 5: {KEGs_cameraIdx = 3}; case 6: {KEGs_cameraIdx = 4}; comment "Toggle NVG or map text type"; case 49: { if(ctrlVisible _cMapFull) then { KEGsMarkerType = KEGsMarkerType + 1; if(KEGsMarkerType > 2) then {KEGsMarkerType=0;}; } else { KEGsUseNVG = !KEGsUseNVG; }; }; case 50: {["ToggleMap",0] call spectate_events;}; case 15: {["ToggleUI",0] call spectate_events;}; case 59: {["ToggleHelp",0] call spectate_events;}; comment "Numpad + / -"; case 78: {if(KEGsMarkerSize < 1.7) then {KEGsMarkerSize = KEGsMarkerSize * 1.15}}; case 74: {if(KEGsMarkerSize > 0.7) then {KEGsMarkerSize = KEGsMarkerSize * (1/1.15)}}; } }; comment "Mouse events"; case "MouseMoving": { _x = _param select 1; _y = _param select 2; KEGsMouseCoord = [_x, _y]; }; case "MouseButtonDown": { _x = _param select 2; _y = _param select 3; _button = _param select 1; KEGsMouseButtons set[_button, true]; }; case "MouseButtonUp": { _x = _param select 2; _y = _param select 3; _button = _param select 1; KEGsMouseButtons set[_button, false]; }; case "MouseZChanged": { KEGsMouseScroll = KEGsMouseScroll + (_param select 1); }; case "MouseZChangedminimap": { KEGsMinimapZoom = KEGsMinimapZoom + ((_param select 1)*0.066); if(KEGsMinimapZoom > 0.5) then {KEGsMinimapZoom=0.5}; if(KEGsMinimapZoom < 0.05) then {KEGsMinimapZoom=0.05}; }; case "ToggleCameraMenu": { comment "Hide/unhide camera menu"; if(ctrlVisible _cLBCameras) then { ctrlShow[_cLBCameras, false]; ctrlShow[_cCamerasBG, false]; } else { ctrlShow[_cLBCameras, true]; ctrlShow[_cCamerasBG, true]; }; }; case "ToggleTargetMenu": { comment "Hide/unhide targets menu"; if(ctrlVisible _cLBTargets) then { ctrlShow[_cLBTargets, false]; ctrlShow[_cTargetsBG, false]; } else { ctrlShow[_cLBTargets, true]; ctrlShow[_cTargetsBG, true]; }; }; case "ToggleUI": { comment "Hide/unhide UI"; if(ctrlVisible _cName) then { {ctrlShow[_x, false]} foreach _UI; } else { {ctrlShow[_x, true]} foreach _UI; ctrlShow[_cHelp, false]; ctrlShow[_cLBTargets, false]; ctrlShow[_cTargetsBG, false]; ctrlShow[_cLBCameras, false]; ctrlShow[_cCamerasBG, false]; }; }; case "ToggleHelp": { comment "Hide/unhide Help text"; if(ctrlVisible _cHelp) then { ctrlShow[_cHelp, false]; } else { ctrlShow[_cHelp, true]; }; }; case "ToggleMap": { comment "Hide/unhide Map"; if(ctrlVisible _cMap and ctrlVisible _cMapFull) then { comment "Beginning, hide both"; ctrlShow[_cMap, false]; ctrlShow[_cMapFull, false]; ctrlShow[_cMapFullBG, false]; }; if(ctrlVisible _cMap) then { ctrlShow[_cMap, false]; ctrlShow[_cMapFull, true]; ctrlShow[_cMapFullBG, true]; KEGsMarkerNames = true; KEGsSoundVolume = soundVolume; 0.5 fadeSound 0.2; } else { KEGsMarkerNames = false; if(ctrlVisible _cMapFull) then { ctrlShow[_cMapFull, false]; ctrlShow[_cMapFullBG, false]; 0.5 fadeSound KEGsSoundVolume; } else { ctrlShow[_cMap, true]; }; }; }; comment "Toggle particlesource tags"; case "ToggleTags": { if(_param select 0) then { comment "turn on"; _lifeTime = 0.5; _dropPeriod = 0.05; _size = 0.5; _cam = _param select 1; _part = "\ca\data\cl_water.p3d"; if(KEGsClientAddonPresent) then {_part = "\KEGspect\tag.p3d"}; { _u = _x select 0; _s = _x select 1; _size = 1.33 min (((vehicle _u) distance _cam)/100); _color = [1,1,1,1]; if(side _u == east) then {_color = [1,0,0,1]}; if(side _u == west) then {_color = [0,0,1,1]}; if(side _u == resistance) then {_color = [0,1,0,1]}; if(alive _u) then { _colorB = [_color select 0, _color select 1, _color select 2, 0]; _s setParticleParams[_part, "", "billboard", 1, _lifeTime, [0, 0, 2], [0,0,0], 1, 1, 0.784, 0.1, [_size, _size*0.66], [_color, _color, _color, _color, _colorB], [1], 10.0, 0.0, "", "", vehicle _u]; _s setDropInterval _dropPeriod; } else { _s setDropInterval 0; }; } foreach KEGsTagSources; } else { comment "turn off"; { _s = _x select 1; _s setDropInterval 0; } foreach KEGsTagSources; }; }; comment "Add string to event log"; case "EventLogAdd": { _txt = _param select 0; _color = _param select 1; _i = lbAdd[_cEventLog, _txt]; lbSetColor[_cEventLog, _i, _color]; lbSetCurSel[_cEventLog, _i]; }; comment "Killed eventhandler, add to log"; case "UnitKilled": { _killed = _param select 0; _killer = _param select 1; _txt = format["%1 (%2) was killed by %3 (%4) (%5m)", _killed, side _killed, _killer, side _killer, _killed distance _killer]; ["EventLogAdd",[_txt,[1,1,1,1]]] call spectate_events; }; comment "Fired eventhandler, display as marker in map"; comment "Also missile camera is handled here"; case "UnitFired": { if(KEGsTags and KEGsClientAddonPresent) then { comment "Bullet path bar"; _u = _param select 0; _w = _param select 1; _a = _param select 4; _o = (getpos _u) nearestObject _a; _type = getText(configFile >> "CfgAmmo" >> format["%1", typeOf _o] >> "simulation"); if(_type == "shotBullet") then { _bar = "KEGspect_bar_yellow"; if(side _u == west) then {_bar = "KEGspect_bar_red"}; if(side _u == east) then {_bar = "KEGspect_bar_green"}; _bars = []; for "_i" from 0 to 300 step 5 do { _pos = _o modelToWorld[0,_i+2.5,0]; _b = _bar createVehicleLocal _pos; _b setVectorDir(vectorDir _o); _b setVectorUp(vectorUp _o); _bars = _bars + [_b]; }; _bars spawn {sleep 1.5;{deletevehicle _x} foreach _this}; }; }; if(ctrlVisible _cMapFull) then { _u = _param select 0; _w = _param select 1; _a = _param select 4; _o = (getpos _u) nearestObject _a; _len = (speed _o)/15; _dir = getdir _o; comment "Marker for shot effect (stationary circle)"; _m2 = createMarkerLocal[format["KEGsMarkerFired%1", random 10000], getpos _o]; _m2 setMarkerColorLocal "ColorYellow"; _m2 setMarkerSizeLocal[0.45, 0.45]; _m2 setMarkerTypeLocal "Select"; _type = getText(configFile >> "CfgAmmo" >> format["%1", typeOf _o] >> "simulation"); _name = getText(configFile >> "CfgWeapons" >> format["%1", _w] >> "displayName"); comment "Marker for round itself, for bullet display line, everything else a named marker"; if(_type == "shotMissile" OR _type == "shotRocket" OR _type == "shotShell" OR _type == "shotTimeBomb" OR _type == "shotPipeBomb" OR _type == "shotMine" OR _type == "shotSmoke") then { _m = createMarkerLocal[format["KEGsMarkerFired%1", random 10000], [(getpos _o select 0)+(sin _dir)*_len, (getpos _o select 1)+(cos _dir)*_len, 0]]; _m setMarkerTypeLocal "Dot"; _m setMarkerColorLocal "ColorWhite"; _m setMarkerSizeLocal[0.25,0.5]; _m setMarkerTextLocal _name; _m2 spawn {sleep(2);deleteMarkerLocal _this}; [_m, _o] spawn { _m = _this select 0; _o = _this select 1; while{!isNull _o} do { _m setMarkerPosLocal getpos _o; _m setMarkerDirLocal getdir _o; sleep(1/50); }; _m setMarkerColorLocal "ColorBlack"; sleep(3); deleteMarkerLocal _m; }; } else { _m = createMarkerLocal[format["KEGsMarkerFired%1", random 10000], [(getpos _o select 0)+(sin _dir)*_len, (getpos _o select 1)+(cos _dir)*_len, 0]]; _m setMarkerShapeLocal "RECTANGLE"; _m setMarkerSizeLocal[0.25,_len]; _m setMarkerDirLocal (getdir _o); if(KEGsClientAddonPresent) then { _m setMarkerColorLocal "KEGsDarkYellow"; [_m2, _m] spawn {sleep(1.0);(_this select 1) setMarkerColorLocal "KEGsYellowAlpha";sleep(1);deletemarkerLocal (_this select 1);deletemarkerLocal (_this select 0);}; } else { _m setMarkerColorLocal "ColorYellow"; [_m2, _m] spawn {sleep(1.0);(_this select 1) setmarkerbrushLocal "grid";sleep(1);deletemarkerLocal (_this select 1);deletemarkerLocal (_this select 0);}; }; } }; comment "Missile camera"; if(KEGsUseMissileCam and !KEGsDroppedCamera) then { _u = _param select 0; _w = _param select 1; _a = _param select 4; _o = (getpos _u) nearestObject _a; _type = getText(configFile >> "CfgAmmo" >> format["%1", typeOf _o] >> "simulation"); _name = getText(configFile >> "CfgWeapons" >> format["%1", _w] >> "displayName"); if(_u == vehicle KEGs_target and (_type == "shotMissile" or _type == "shotRocket") and !KEGsMissileCamActive) then { KEGsMissileCamActive = true; cutText[_name,"PLAIN DOWN", 0.10]; KEGscam_missile switchCamera "INTERNAL"; KEGscam_missile cameraEffect["internal", "BACK"]; KEGscam_missile camsettarget _o; KEGscam_missile camsetrelpos[0,0,0]; KEGscam_missile camSetFov 0.5; KEGscam_missile camCommit 0; KEGscam_missile camSetFov 1.25; KEGscam_missile camCommit 2; _o spawn { while{!isNull _this and speed _this > 1} do { KEGscam_missile camsettarget _this; KEGscam_missile camsetrelpos[0,-0.1,0.20]; KEGscam_missile camCommit 0; sleep(0.01); }; sleep(3); KEGsMissileCamActive = false; }; } }; }; default { hint "Unknown event"; }; } // Connect handler for spectating script, check if camera on seagull for first 10 seconds and launch spectating script for "_i" from 0 to 20 do { scopeName "SpectaLoop"; if(typeof cameraOn == "SeaGull") then {[cameraOn,cameraOn,cameraOn] execVM "spect\specta.sqf";breakOut "SpectaLoop"}; sleep 0.5; };@!dialog setacctime 1createdialog "stra_debug" setacctime 0 [] exec "stra_debug\debugConsole.sqs" Exitgoto _this #ONCE stra_debugConsoleLoop = False CtrlSetText [543259, Format["%1", call compile (CtrlText 543260)]] Exit #LOOP stra_debugConsoleLoop = True #LOOOP CtrlSetText [543259, Format["%1", call compile (CtrlText 543260)]] ~0.1 ?(ctrlVisible 543262) && stra_debugConsoleLoop : goto "LOOOP" Exit