diff --git a/Tools/Dynamic Missions/pullDynamicMission.VR/init.sqf b/Tools/Dynamic Missions/pullDynamicMission.VR/init.sqf index 05c39e8..ae3be0e 100644 --- a/Tools/Dynamic Missions/pullDynamicMission.VR/init.sqf +++ b/Tools/Dynamic Missions/pullDynamicMission.VR/init.sqf @@ -1,3 +1,4 @@ player addAction["Pull MARKER Info","pullMarkerInfo.sqf"]; +player addAction["Set Mission Center @ Player Pos","setCenterAtPlayer.sqf"]; player addAction["Pull DYNAMIC mission","pullDynamicMission.sqf"]; diff --git a/Tools/Dynamic Missions/pullDynamicMission.VR/pullDynamicMission.sqf b/Tools/Dynamic Missions/pullDynamicMission.VR/pullDynamicMission.sqf index 1955d63..2378815 100644 --- a/Tools/Dynamic Missions/pullDynamicMission.VR/pullDynamicMission.sqf +++ b/Tools/Dynamic Missions/pullDynamicMission.VR/pullDynamicMission.sqf @@ -100,14 +100,15 @@ diag_log "========== =========================="; // Define the coordinates of the center of the mission. /////////////////// -CENTER = [0,0,0]; +if (isNil "CENTER") then {CENTER isEqualTo [0,0,0]}; -if (isNil "CENTER" || CENTER isEqualTo [0,0,0]) then +if (CENTER isEqualTo [0,0,0]) then { - hint "Please define a center point for your mission"; + hint parseText "Please define a center point for your mission,br/>Using position of nearest flashing road cone as the center"; _obj = allMissionObjects objectAtMissionCenter; _obj1 = _obj select 0; diag_log format["Determining position of first roadcone found which is located at %1 with player found at %2",getPos _obj1,position Player]; + systemChat format["Setting Mission Center at That of Nearest Road Cone"]; if (count _obj > 0) then { CENTER = [3,3,0] vectorAdd (getPosATL _obj1); @@ -199,7 +200,6 @@ systemChat _logging; //diag_log format["_cb = %1%2",endl,_cb]; _configuredStatics = []; -_configuredStaticsPositions = []; _configuredUnits = []; /* This bit will set up the garrison for each building having units and / or statics inside it or on top. @@ -223,7 +223,7 @@ _fn_configureGarrisonForBuildingATL = { if (_b isEqualTo _building) then { _configuredStatics pushBackUnique _x; - //_configuredStaticsPositions pushBack (getPosATL _x) vectorDiff CENTER; + if (_staticsText isEqualTo "") then { _staticsText = format['["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff (getPosATL _b),getDir _x]; @@ -262,7 +262,7 @@ _fn_configureGarrisonForBuildingATL = { _buildingGarrisonATL }; -private _count = 0; +_counter = 0; _cb = _cb + "_garrisonedBuilding_ATLsystem = ["; { private _isInside = [_x] call _fn_isInside; @@ -272,28 +272,29 @@ _cb = _cb + "_garrisonedBuilding_ATLsystem = ["; private _include = if ( !(_building in _garrisonedBuildings) && !((typeOf _building) isEqualTo unitMarkerObject) && !((typeOf _building) isEqualTo garrisonMarkerObject)) then {true} else {false}; if (_include) then { - //diag_log format["_x = %1 | _building = %1",_x,_building]; + diag_log format["_x = %1 | _building = %1",_x,_building]; + systemChat format["_x = %1 | _building = %1",_x,_building]; private _buildingGarrisonInformation = [_building] call _fn_configureGarrisonForBuildingATL; //diag_log format["_buildingGarrisonInformation = %1",_buildingGarrisonInformation]; - if (_count == 0) then + if (_counter == 0) then { _cb = _cb + format["%1%2",endl,_buildingGarrisonInformation]; } else { _cb = _cb + format[",%1%2",endl,_buildingGarrisonInformation]; }; - _count = _count + 1; + _counter = _counter + 1; }; }; -} forEach ((allMissionObjects "StaticWeapon") + (allMissionObjects "Man") + (allMissionObjects unitMarkerObject)); +} forEach ((allMissionObjects "StaticWeapon") + (allMissionObjects unitMarkerObject)); _cb = _cb + format["%1];%1%1",endl]; - +uiSleep 10; /////////////////// // Configure info remaining mission landscape /////////////////// +_counter = 0; _land = allMissionObjects "Static"; - _cb = _cb + format["_missionLandscape = [",endl]; { diag_log format["evaluating mission landscape: _x = %1 | typeOf _x = %1",_x, typeOf _x]; @@ -301,14 +302,14 @@ _cb = _cb + format["_missionLandscape = [",endl]; if !(_x in _garrisonedBuildings && !((typeOf _x) isEqualTo unitMarkerObject) && !((typeOf _x) isEqualTo garrisonMarkerObject)) then { _line = format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true']; - systemChat _line; - if (_forEachIndex == 0) then + if (_counter == 0 && !(_line isEqualTo "")) then { _cb = _cb + format["%1%2",endl,_line]; } else { _cb = _cb + format[",%1%2",endl,_line]; }; + _counter = _counter + 1; }; }forEach allMissionObjects "Static"; _cb = _cb + format["%1];%1%1",endl]; @@ -316,16 +317,18 @@ _cb = _cb + format["%1];%1%1",endl]; /////////////////// // Configure loot boxes /////////////////// +_counter = 0; _cb = _cb + "_missionLootBoxes = ["; { _line = format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER, '_crateLoot','_lootCounts',getDir _x]; systemChat _line; - if (_forEachIndex == 0) then + if (_counter == 0 && !(_line isEqualTo "")) then { _cb = _cb + format["%1%2",endl,_line]; } else { _cb = _cb + format[",%1%2",endl,_line]; }; + _counter = _counter + 1; }forEach ((allMissionObjects "ReammoBox") + (allMissionObjects "ReammoBox_F")); _cb = _cb + format["%1];%1%1",endl]; @@ -336,6 +339,7 @@ _missionLootVehicles = []; _missionVehicles = ((allMissionObjects "Car") + (allMissionObjects "Tank") + allMissionObjects "Ship"); _lootVehicleMarkers = allMissionObjects lootVehicleMarker; diag_log format["_lootVehicleMarkers = %1",_lootVehicleMarkers]; +_counter = 0; _cb = _cb + format["_missionLootVehicles = ["]; { _kindOf = "nothing"; @@ -351,12 +355,13 @@ _cb = _cb + format["_missionLootVehicles = ["]; _missionLootVehicles pushBack _object; _line = format[' ["%1",%2,%3,%4,%5]',typeOf _object,(getPosATL _x) vectorDiff CENTER, '_crateLoot','_lootCounts',getDir _x]; systemChat _line; - if (_forEachIndex == 0) then + if (_counter == 0 && !(_line isEqualTo "")) then { _cb = _cb + format["%1%2",endl,_line]; } else { _cb = _cb + format[",%1%2",endl,_line]; }; + _counter = _counter + 1; }; } forEach allMissionObjects lootVehicleMarker; _cb = _cb + format["%1];%1%1",endl]; @@ -364,34 +369,38 @@ _cb = _cb + format["%1];%1%1",endl]; /////////////////// // Setup Info for vehicle patrols /////////////////// +_counter = 0; _cb = _cb + format["_missionPatrolVehicles = ["]; { if ( !((typeOf _x) isKindOf "SDV_01_base_F") && !(_x in _missionLootVehicles) ) then { _line = format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x]; systemChat _line; - if (_forEachIndex == 0) then + if (_counter == 0 && !(_line isEqualTo "")) then { _cb = _cb + format["%1%2",endl,_line]; } else { _cb = _cb + format[",%1%2",endl,_line]; }; + _counter = _counter + 1; }; }forEach ((allMissionObjects "Car") + (allMissionObjects "Tank") + allMissionObjects "Ship"); _cb = _cb + format["%1];%1%1",endl]; +_counter = 0; _cb = _cb + "_submarinePatrolParameters = ["; { if ((typeOf _x) isKindOf "SDV_01_base_F") then { _line = format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x]; systemChat _line; - if (_forEachIndex == 0) then + if (_counter == 0 && !(_line isEqualTo "")) then { _cb = _cb + format["%1%2",endl,_line]; } else { _cb = _cb + format[",%1%2",endl,_line]; }; + _counter= _counter + 1; }; }forEach allMissionObjects "Ship"; _cb = _cb + format["%1];%1%1",endl]; @@ -399,49 +408,49 @@ _cb = _cb + format["%1];%1%1",endl]; /////////////////// // Configs for Air Patrols /////////////////// +_counter = 0; _cb = _cb + "_airPatrols = ["; //[selectRandom _aircraftTypes,[22830.2,16618.1,11.4549],"blue",1000,60] { _line = format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true']; systemChat _line; - if (_forEachIndex == 0) then + if (_counter == 0 && !(_line isEqualTo "")) then { _cb = _cb + format["%1%2",endl,_line]; } else { _cb = _cb + format[",%1%2",endl,_line]; - }; + }; + _counter = _counter + 1; }forEach allMissionObjects "Air"; _cb = _cb + format["%1];%1%1",endl]; /////////////////// // Setup info for remaining static/emplaced weapons /////////////////// -_count = 0; +_counter = 0; _cb = _cb + format["_missionEmplacedWeapons = ["]; { - //if !(_x in _configuredStatics) then - private _isInside = [_x] call _fn_isInside; - if !(_isInside) then - { + if !(_x in _configuredStatics) then + { // ["B_HMG_01_high_F",[22883.5,16757.6,6.31652],"blue",0,10] _line = format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true']; systemChat _line; - if (_count == 0) then + if (_counter == 0 && !(_line isEqualTo "")) then { _cb = _cb + format["%1%2",endl,_line]; } else { _cb = _cb + format[",%1%2",endl,_line]; }; - _count = _count + 1; + _counter = _counter + 1; }; - }forEach allMissionObjects "StaticWeapon"; _cb = _cb + format["%1];%1%1",endl]; /////////////////// // Setup information for infantry groups spawning outside buildings /////////////////// +_counter = 0; _cb = _cb + format["_missionGroups = ["]; { //[[22920.4,16887.3,3.19144],"red",[1,2], 75,120], @@ -454,20 +463,22 @@ _cb = _cb + format["_missionGroups = ["]; { _line = format[' [%1,%2,%3,"%4",%5,%6]',(getPosATL _x) vectorDiff CENTER,minAI,maxAI,aiDifficulty,minPatrolRadius,maxPatrolRadius]; systemChat _line; - if (_forEachIndex == 0) then + if (_counter == 0 && !(_line isEqualTo "")) then { _cb = _cb + format["%1%2",endl,_line]; } else { _cb = _cb + format[",%1%2",endl,_line]; }; + _counter = _counter + 1; }; }; }forEach allMissionObjects "Man"; _cb = _cb + format["%1];%1%1",endl]; +_counter = 0; _cb = _cb + "_scubaGroupParameters = ["; { - //[[22920.4,16887.3,3.19144],"red",[1,2], 75,120], + //[[22920.4,16887.3,3.19144],"red",[1,2], 75,120], _isInside = [_x] call _fn_isInside; _isInfantry = [_x] call _fn_isInfantry; //diag_log format["_missionGroups: _unit %1 | _isInside %2 _isInfantry %3",_x,_isInside,_isInfantry]; @@ -477,12 +488,13 @@ _cb = _cb + "_scubaGroupParameters = ["; { _line = format[' [%1,%2,%3,"%4",%5,%6]',(getPosATL _x) vectorDiff CENTER,minAI,maxAI,aiDifficulty,minPatrolRadius,maxPatrolRadius]; systemChat _line; - if (_forEachIndex == 0) then + if (_counter == 0 && !(_line isEqualTo "")) then { _cb = _cb + format["%1%2",endl,_line]; } else { _cb = _cb + format[",%1%2",endl,_line]; }; + _counter = _counter + 1; }; }; }forEach allMissionObjects "Man"; diff --git a/Tools/Dynamic Missions/pullDynamicMission.VR/pullMarkerInfo.sqf b/Tools/Dynamic Missions/pullDynamicMission.VR/pullMarkerInfo.sqf index 6ff3f1a..442a5b1 100644 --- a/Tools/Dynamic Missions/pullDynamicMission.VR/pullMarkerInfo.sqf +++ b/Tools/Dynamic Missions/pullDynamicMission.VR/pullMarkerInfo.sqf @@ -28,9 +28,11 @@ if (count _allmkr == 0) then diag_log format["_mk = %1",_mk]; systemChat format["marker shape = %1",markerShape _mk]; systemChat format["marker type = %1",markerType _mk]; - + systemChat format["marker size = %1",markerSize _mk]; + systemChat format["markerColor = %1",markerColor _mk]; + systemChat format["marker brush = %1",markerBrush _mk]; //systemChat - switch (markerShape _mk) do + switch (toUpper(markerShape _mk)) do { case "ELLIPSE": { _cb = _cb + format['_markerType = ["%1",%2,"%3"];%4',toUpper(MarkerShape _mk),getMarkerSize _mk,toUpper(markerBrush _mk),endl]; @@ -39,13 +41,12 @@ if (count _allmkr == 0) then _cb = _cb + format['_markerType = ["%1",%2,"%3"];%4',toUpper(MarkerShape _mk),getMarkerSize _mk,toUpper(markerBrush _mk),endl]; }; case "ICON": { - _cb = _cb + format['_markerType = ["%1",[0,0]];%2',getMarkerType _mk,endl]; + _cb = _cb + format['_markerType = ["%1"];%2',getMarkerType _mk,endl]; }; }; _cb = _cb + format['_markerColor = "%1";%2',markerColor _mk,endl]; - _cb = _cb + format['_markerMissionName = "%1";%2',MarkerText _mk,endl]; - _cb = _cb + format['_markerLabel = "%1";%2',"",endl]; + _cb = _cb + format['_markerLabel = "%1";%2',MarkerText _mk,endl]; _cb = _cb + format["%1%1",endl]; }; diff --git a/Tools/Dynamic Missions/pullDynamicMission.VR/setCenterAtPlayer.sqf b/Tools/Dynamic Missions/pullDynamicMission.VR/setCenterAtPlayer.sqf new file mode 100644 index 0000000..6db9def --- /dev/null +++ b/Tools/Dynamic Missions/pullDynamicMission.VR/setCenterAtPlayer.sqf @@ -0,0 +1 @@ +CENTER = getPos player; \ No newline at end of file