From ddbf64be296849b0323c17f6e2088ebf986918c0 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Thu, 30 Jul 2020 22:35:14 -0400 Subject: [PATCH 01/25] Build 212 --- .../GMS_fnc_cleanupTemporaryMarkers.sqf | 3 +- .../GMS_fnc_createMissionMarkers.sqf | 2 +- .../Functions/GMS_fnc_deleteMarker.sqf | 1 - .../Functions/GMS_fnc_findSafePosn.sqf | 8 +- .../Compiles/Functions/GMS_fnc_log.sqf | 20 + .../Compiles/Functions/GMS_fnc_mainThread.sqf | 38 +- ...fnc_AIM.sqf => GMS_fnc_messagePlayers.sqf} | 1 - .../Compiles/Functions/GMS_fnc_randomPosn.sqf | 1 + .../Compiles/Functions/GMS_fnc_timedOut.sqf | 20 - .../Groups/GMS_fnc_antiStickGroupy.sqf | 22 +- .../GMS_fnc_checkGroupWaypointStatus.sqf | 3 - .../Groups/GMS_fnc_cleanEmptyGroups.sqf | 2 +- .../Groups/GMS_fnc_groupWaypointMonitor.sqf | 12 +- .../Groups/GMS_fnc_setNextWaypoint.sqf | 4 - .../Groups/GMS_fnc_simulationMonitor.sqf | 16 +- .../Compiles/Groups/GMS_fnc_spawnGroup.sqf | 20 +- .../Missions/GMS_fnc_addItemToCrate.sqf | 2 +- .../Missions/GMS_fnc_addMIssionToQue copy.sqf | 50 - .../Missions/GMS_fnc_addMIssionToQue.sqf | 50 +- .../Missions/GMS_fnc_cleanUpObjects.sqf | 3 - .../Compiles/Missions/GMS_fnc_clearMines.sqf | 3 +- .../Compiles/Missions/GMS_fnc_crateMoved.sqf | 1 - .../Compiles/Missions/GMS_fnc_endMission.sqf | 117 +- .../Compiles/Missions/GMS_fnc_fillBoxes.sqf | 38 +- .../GMS_fnc_garrisonBuilding_ATLsystem.sqf | 20 +- .../Missions/GMS_fnc_initializeMission.sqf | 119 +- .../Missions/GMS_fnc_missionSpawner.sqf | 660 +--------- .../GMS_fnc_monitorInitializedMissions.sqf | 318 ++--- .../Missions/GMS_fnc_selectAISidearms.sqf | 2 +- .../GMS_fnc_selectVehicleCrewCount.sqf | 2 +- .../Compiles/Missions/GMS_fnc_signalEnd.sqf | 2 +- .../GMS_fnc_sm_monitorGarrisons_relPos.sqf | 2 +- .../GMS_fnc_sm_spawnBuildingGarrisonASL.sqf | 3 +- .../Missions/GMS_fnc_sm_spawnEmplaced.sqf | 14 +- .../Missions/GMS_fnc_sm_spawnEmplaceds.sqf | 14 +- .../GMS_fnc_sm_spawnInfantryPatrols.sqf | 4 - .../Missions/GMS_fnc_sm_spawnLootVehicles.sqf | 2 +- .../Missions/GMS_fnc_sm_spawnMission.sqf | 10 - .../GMS_fnc_sm_spawnVehiclePatrols.sqf | 8 +- .../GMS_fnc_sm_staticPatrolMonitor.sqf | 3 - .../Missions/GMS_fnc_smokeAtCrates.sqf | 37 +- .../Missions/GMS_fnc_spawnBaseObjects.sqf | 4 - .../Compiles/Missions/GMS_fnc_spawnCrate.sqf | 12 +- .../GMS_fnc_spawnEmplacedWeaponArray.sqf | 9 +- ...MS_fnc_spawnGarrisonInsideBuilding_ATL.sqf | 2 - ...fnc_spawnGarrisonInsideBuilding_relPos.sqf | 20 +- .../Compiles/Missions/GMS_fnc_spawnMines.sqf | 3 - .../Missions/GMS_fnc_spawnMissionAI.sqf | 114 +- .../Missions/GMS_fnc_spawnMissionCrates.sqf | 27 +- .../GMS_fnc_spawnMissionLootVehicles.sqf | 2 - .../GMS_fnc_spawnMissionVehiclePatrols.sqf | 3 +- .../Missions/GMS_fnc_spawnPendingMissions.sqf | 44 +- .../Missions/GMS_fnc_spawnRandomLandscape.sqf | 1 + .../Missions/GMS_fnc_spawnScubaGroup.sqf | 3 - .../Missions/GMS_fnc_spawnSurfacePatrol.sqf | 5 +- .../Missions/GMS_fnc_updateMissionQue.sqf | 20 +- .../Missions/GMS_sm_AddScubaGroup.sqf | 1 - .../Compiles/TimeAccel/GMS_fnc_Time.sqf | 10 +- .../Compiles/Units/GMS_EH_AIHit.sqf | 1 - .../Compiles/Units/GMS_EH_AIfiredNear.sqf | 5 +- ...ndleDamage.sqf => GMS_EH_HandleDamage.sqf} | 4 +- .../Units/GMS_EH_unitWeaponReloaded.sqf | 6 +- .../Units/GMS_fnc_alertGroupUnits.sqf | 8 +- .../Units/GMS_fnc_alertNearbyGroups.sqf | 12 +- .../Units/GMS_fnc_alertNearbyUnits.sqf | 4 +- .../Units/GMS_fnc_alertNearbyVehicles.sqf | 16 +- .../Units/GMS_fnc_allertNearestGroup.sqf | 2 +- .../Compiles/Units/GMS_fnc_cleanupAliveAI.sqf | 4 +- .../Compiles/Units/GMS_fnc_cleanupDeadAI.sqf | 5 +- .../Compiles/Units/GMS_fnc_deleteAI.sqf | 3 - .../GMS_fnc_placeCharacterInBuilding.sqf | 3 +- .../Compiles/Units/GMS_fnc_processAIHit.sqf | 34 +- .../Compiles/Units/GMS_fnc_processAIKill.sqf | 13 +- .../Units/GMS_fnc_processAIfiredNear.sqf | 20 +- .../Units/GMS_fnc_processIlleagalAIKills.sqf | 15 +- .../Compiles/Units/GMS_fnc_removeNVG.sqf | 2 - .../Compiles/Units/GMS_fnc_setSkill.sqf | 2 - .../Compiles/Units/GMS_fnc_spawnCharacter.sqf | 8 - .../Compiles/Units/GMS_fnc_spawnHostage.sqf | 1 - .../Compiles/Units/GMS_fnc_spawnLeader.sqf | 2 - .../Compiles/Units/GMS_fnc_spawnParaUnits.sqf | 10 - .../Compiles/Units/GMS_fnc_spawnUnit.sqf | 50 +- .../Vehicles/GMS_fnc_HandleAIVehicleHit.sqf | 2 - .../GMS_fnc_handleEmptyStaticWeapon.sqf | 2 - .../Vehicles/GMS_fnc_handleEmptyVehicle.sqf | 10 +- .../Vehicles/GMS_fnc_handleVehicleGetOut.sqf | 12 - .../Vehicles/GMS_fnc_loadVehicleCrew.sqf | 36 +- .../Vehicles/GMS_fnc_processAIVehicleKill.sqf | 7 +- .../GMS_fnc_releaseVehicleToPlayers.sqf | 3 +- .../GMS_fnc_searchForNearbyPlayers.sqf | 4 +- .../Vehicles/GMS_fnc_sendHeliHome.sqf | 5 - .../Vehicles/GMS_fnc_spawnBoatPatrol.sqf | 13 - .../Vehicles/GMS_fnc_spawnMissionHeli.sqf | 46 +- .../GMS_fnc_spawnMissionParatroops.sqf | 49 +- .../GMS_fnc_spawnMissionReinforcements.sqf | 40 - .../Vehicles/GMS_fnc_spawnParaCrate.sqf | 9 - .../Vehicles/GMS_fnc_spawnReinforcements.sqf | 55 +- .../Vehicles/GMS_fnc_spawnSubPatrol.sqf | 13 - .../Vehicles/GMS_fnc_spawnVehicle.sqf | 4 +- .../Vehicles/GMS_fnc_spawnVehiclePatrol.sqf | 14 +- .../Vehicles/GMS_fnc_vehicleMonitor.sqf | 10 +- .../GMS_fnc_vehiclePlayerSensingLogic.sqf | 2 - .../custom_server/Compiles/blck_functions.sqf | 42 +- .../Compiles/blck_functions_HC.sqf | 194 +-- .../custom_server/Compiles/blck_variables.sqf | 1 - .../custom_server/Configs/blck_configs.sqf | 46 +- .../Configs/blck_configs_default.sqf | 876 ++++++++++++ .../Configs/blck_configs_default_mil.sqf | 876 ++++++++++++ .../Configs/blck_configs_epoch_mil.sqf | 9 + .../blck_configs_exile_mil - Namalks v146.sqf | 1170 ----------------- .../Configs/blck_configs_mil.sqf | 15 +- .../Configs/blck_custom_config.sqf | 2 + .../Static/GMS_StaticMissions_Lists.sqf | 10 +- .../GMS_fnc_sm_AddAircraft.sqf | 17 - .../GMS_fnc_sm_AddEmplaced.sqf | 16 - .../Old_Unused_Code/GMS_fnc_sm_AddGroup.sqf | 16 - .../GMS_fnc_sm_AddGroupToArray.sqf | 22 - .../Old_Unused_Code/GMS_fnc_sm_AddVehicle.sqf | 16 - .../GMS_fnc_sm_initializeMission.sqf | 88 -- .../GMS_fnc_sm_monitorAircraft.sqf | 93 -- .../GMS_fnc_sm_monitorEmplaced.sqf | 92 -- .../GMS_fnc_sm_monitorGarrisonsASL.sqf | 97 -- .../GMS_fnc_sm_monitorGarrisons_relPos.sqf | 89 -- .../GMS_fnc_sm_monitorInfantry.sqf | 111 -- .../GMS_fnc_sm_monitorScuba.sqf | 92 -- .../GMS_fnc_sm_monitorShips.sqf | 94 -- .../GMS_fnc_sm_monitorStaticUnits.sqf | 236 ---- .../GMS_fnc_sm_monitorSubs.sqf | 94 -- .../GMS_fnc_sm_monitorVehicles.sqf | 96 -- .../GMS_fnc_sm_spawnAirPatrol.sqf | 31 - .../GMS_fnc_sm_spawnAirPatrols.sqf | 50 - .../GMS_fnc_sm_spawnBuildingGarrisonASL.sqf | 8 - ...MS_fnc_sm_spawnBuildingGarrison_relPos.sqf | 8 - .../GMS_fnc_sm_spawnEmplaced.sqf | 59 - .../GMS_fnc_sm_spawnEmplaceds.sqf | 59 - .../GMS_fnc_sm_spawnInfantryPatrols.sqf | 37 - .../GMS_fnc_sm_spawnLootContainers.sqf | 40 - .../GMS_fnc_sm_spawnMission.sqf | 53 - .../GMS_fnc_sm_spawnObjectASLVectorDirUp.sqf | 21 - .../GMS_fnc_sm_spawnObjects.sqf | 19 - .../GMS_fnc_sm_spawnVehiclePatrol.sqf | 33 - .../GMS_fnc_sm_spawnVehiclePatrols.sqf | 43 - .../GMS_fnc_sm_staticPatrolMonitor.sqf | 27 - .../GMS_fnc_spawnSDVPatrol.sqf | 23 - .../GMS_fnc_spawnScubaGroup.sqf | 38 - .../GMS_fnc_spawnSurfacePatrol.sqf | 22 - .../Old_Unused_Code/GMS_sm_AddSDVVehicle.sqf | 15 - .../Old_Unused_Code/GMS_sm_AddScubaGroup.sqf | 16 - .../GMS_sm_AddSurfaceVehicle.sqf | 15 - .../_GMS_fnc_sm_init_functions.sqf | 80 -- .../Missions/UMS/GMS_UMS_configurations.sqf | 5 +- .../Missions/UMS/GMS_UMS_init.sqf | 10 +- .../UMS/GMS_fnc_spawnDynamicUMSMission.sqf | 418 ------ @GMS/addons/custom_server/changeLog.sqf | 16 +- .../init/GMS_fnc_getTraderCites.sqf | 2 - .../custom_server/init/blck_init_HC.sqf | 3 - .../custom_server/init/blck_init_server.sqf | 150 +-- @GMS/addons/custom_server/init/build.sqf | 6 +- @GMS/addons/custom_server/init/fn_init.sqf | 11 - 159 files changed, 2354 insertions(+), 5977 deletions(-) create mode 100644 @GMS/addons/custom_server/Compiles/Functions/GMS_fnc_log.sqf rename @GMS/addons/custom_server/Compiles/Functions/{GMS_fnc_AIM.sqf => GMS_fnc_messagePlayers.sqf} (85%) delete mode 100644 @GMS/addons/custom_server/Compiles/Functions/GMS_fnc_timedOut.sqf delete mode 100644 @GMS/addons/custom_server/Compiles/Missions/GMS_fnc_addMIssionToQue copy.sqf rename @GMS/addons/custom_server/Compiles/Units/{GMS_EH_AIHandleDamage.sqf => GMS_EH_HandleDamage.sqf} (93%) create mode 100644 @GMS/addons/custom_server/Configs/blck_configs_default.sqf create mode 100644 @GMS/addons/custom_server/Configs/blck_configs_default_mil.sqf delete mode 100644 @GMS/addons/custom_server/Configs/blck_configs_exile_mil - Namalks v146.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_AddAircraft.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_AddEmplaced.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_AddGroup.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_AddGroupToArray.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_AddVehicle.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_initializeMission.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorAircraft.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorEmplaced.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorGarrisonsASL.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorGarrisons_relPos.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorInfantry.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorScuba.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorShips.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorStaticUnits.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorSubs.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorVehicles.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnAirPatrol.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnAirPatrols.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnBuildingGarrisonASL.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnBuildingGarrison_relPos.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnEmplaced.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnEmplaceds.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnInfantryPatrols.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnLootContainers.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnMission.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnObjectASLVectorDirUp.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnObjects.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnVehiclePatrol.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnVehiclePatrols.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_staticPatrolMonitor.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_spawnSDVPatrol.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_spawnScubaGroup.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_spawnSurfacePatrol.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_sm_AddSDVVehicle.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_sm_AddScubaGroup.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_sm_AddSurfaceVehicle.sqf delete mode 100644 @GMS/addons/custom_server/Missions/Static/Old_Unused_Code/_GMS_fnc_sm_init_functions.sqf delete mode 100644 @GMS/addons/custom_server/Missions/UMS/GMS_fnc_spawnDynamicUMSMission.sqf diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_cleanupTemporaryMarkers.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_cleanupTemporaryMarkers.sqf index 8848525..47a3d8d 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_cleanupTemporaryMarkers.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_cleanupTemporaryMarkers.sqf @@ -13,11 +13,10 @@ for "_i" from 1 to (count blck_temporaryMarkers) do if (_i > (count blck_temporaryMarkers)) exitWith {}; private _m = blck_temporaryMarkers deleteAt 0; _m params["_marker","_deleteAt"]; - if (diag_tickTime > _deleteAt) then { deleteMarker _marker; } else { blck_temporaryMarkers pushBack _m; }; -}; +}; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_createMissionMarkers.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_createMissionMarkers.sqf index e13ebf2..1970283 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_createMissionMarkers.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_createMissionMarkers.sqf @@ -60,4 +60,4 @@ if (toUpper(_markerType) in ["ELLIPSE","RECTANGLE"]) then // not an Icon .... //diag_log format["_fnc_createMarkers: case of ICON: _markers = %1",_markers]; }; -_markers +_markers \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_deleteMarker.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_deleteMarker.sqf index 22d62ef..4a02aec 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_deleteMarker.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_deleteMarker.sqf @@ -11,6 +11,5 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; params[["_markerName",""]]; - deleteMarker _markerName; deleteMarker (_markerName + "label"); diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf index 92130c5..19dd853 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf @@ -13,7 +13,6 @@ if (isNil "blck_locationBlackList") then {blck_locationBlackList = []}; - _fn_buildBlacklistedLocationsList = { params["_minToBases","_minToPlayers","_minToMissions","_minToTowns","_minToRecentMissionLocation"]; /* locations of villages / cities / others already included in blck_locationBlackList so we do not need to add it here. */ @@ -32,7 +31,7 @@ _fn_buildBlacklistedLocationsList = { _blacklistedLocs pushBack [_x,_minToMissions]; } forEach blck_ActiveMissionCoords; - private "_bases"; + private _bases = []; if (blck_modType isEqualTo "Epoch") then {_bases = nearestObjects[blck_mapCenter, ["PlotPole_EPOCH"], blck_mapRange + 25000]}; if (blck_modType isEqualTo "Exile") then {_bases = nearestObjects[blck_mapCenter, ["Exile_Construction_Flag_Static"], blck_mapRange + 25000]}; @@ -40,8 +39,6 @@ _fn_buildBlacklistedLocationsList = { _blacklistedLocs pushBack [getPosATL _x,_minToBases]; } forEach _bases; - - { _blacklistedLocs pushBack [getPosATL _x,_minToPlayers]; } forEach allPlayers; @@ -61,7 +58,7 @@ private _mindistToMissions = blck_MinDistanceFromMission; private _minToRecentMissionLocation = 200; private _coords = []; private _blacklistedLocations = [_minDistToBases,_minDistToPlayers,_minDistToTowns,_mindistToMissions,_minToRecentMissionLocation] call _fn_buildBlacklistedLocationsList; - +//diag_log format["_blacklistedLocations = %1",_blacklistedLocations]; private _count = 25; while {_coords isEqualTo [] && _count > 0} do { @@ -73,6 +70,7 @@ while {_coords isEqualTo [] && _count > 0} do */ _coords = [blck_mapCenter,0,blck_mapRange,10,0,0.5,0,_blacklistedLocations] call BIS_fnc_findSafePos; + /* Check whether the location is flat enough: returns [] if not. */ private _isFlat = _coords isFlatEmpty [20,0,0.5,100,0,false]; if (_coords isEqualTo [] || !(_isFlat isEqualTo [])) then diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_log.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_log.sqf new file mode 100644 index 0000000..351a898 --- /dev/null +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_log.sqf @@ -0,0 +1,20 @@ +/* + By Ghostrider [GRG] + Copyright 2016 + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +params[["_message","Unknown Message"],["_code",""]]; + +switch (toLower _code) do +{ + case "error": {_message = format["[blckeagls] %1",_message]}; + case "warning": {_message = format["[blckeagls] %1",_message]}; + default {_message = format["[blckeagls] :: %1",_message]}; +}; +diag_log _message; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf index 9143d49..b5c73d1 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf @@ -10,11 +10,10 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//diag_log format["starting _fnc_mainThread with time = %1",diag_tickTime]; - -private["_timer1sec","_timer5sec","_timer20sec","_timer5min","_timer5min"]; +private["_timer1sec","_timer5sec","_timer10Sec","_timer20sec","_timer5min","_timer5min"]; _timer1sec = diag_tickTime; _timer5sec = diag_tickTime; +_timer10Sec = diag_tickTime; _timer20sec = diag_tickTime; _timer1min = diag_tickTime; _timer5min = diag_tickTime; @@ -24,7 +23,13 @@ while {true} do uiSleep 1; if (diag_tickTime > _timer1sec) then { - + [] spawn blck_fnc_monitorInitializedMissions; + if (blck_showCountAliveAI) then + { + { + _x call blck_fnc_updateMarkerAliveCount; + } forEach blck_missionLabelMarkers; + }; _timer1sec = diag_tickTime + 1; }; if (diag_tickTime > _timer5sec) then @@ -32,12 +37,16 @@ while {true} do _timer5sec = diag_tickTime + 5; if (blck_simulationManager isEqualTo blck_useBlckeaglsSimulationManagement) then {[] call blck_fnc_simulationManager}; [] call blck_fnc_sm_staticPatrolMonitor; - [] call blck_fnc_vehicleMonitor; - + [] call blck_fnc_vehicleMonitor; #ifdef GRGserver [] call blck_fnc_broadcastServerFPS; #endif }; + if (diag_tickTime > _timer10Sec) then + { + [] call blck_fnc_spawnPendingMissions; + _timer10Sec = diag_tickTime; + }; if (diag_tickTime > _timer20sec) then { [] call blck_fnc_scanForPlayersNearVehicles; @@ -48,28 +57,15 @@ while {true} do if ((diag_tickTime > _timer1min)) then { _timer1min = diag_tickTime + 60; - [] call blck_fnc_spawnPendingMissions; + [] call blck_fnc_groupWaypointMonitor; - if (blck_dynamicUMS_MissionsRuning < blck_numberUnderwaterDynamicMissions) then {[] spawn blck_fnc_addDyanamicUMS_Mission}; if (blck_useHC) then {[] call blck_fnc_HC_passToHCs}; if (blck_useTimeAcceleration) then {[] call blck_fnc_timeAcceleration}; if (blck_ai_offload_to_client) then {[] call blck_fnc_ai_offloadToClients}; - #ifdef blck_debugMode - diag_log format["_fnc_mainThread: active scripts include: %1",diag_activeScripts]; - #endif }; if (diag_tickTime > _timer5min) then { - diag_log format["[blckeagls] Timstamp %8 |Dynamic Missions Running %1 | UMS Running %2 | Vehicles %3 | Groups %4 | Server FPS %5 | Server Uptime %6 Min | Missions Run %7",blck_missionsRunning,blck_dynamicUMS_MissionsRuning,count blck_monitoredVehicles,count blck_monitoredMissionAIGroups,diag_FPS,floor(diag_tickTime/60),blck_missionsRun, diag_tickTime]; - #ifdef blck_debugMode - /* - Syntax: - diag_activeSQFScripts - Return Value: - Array of Arrays - to format [[scriptName, fileName, isRunning, currentLine], ...]: - */ - - #endif + [format["Timstamp %8 |Dynamic Missions Running %1 | UMS Running %2 | Vehicles %3 | Groups %4 | Server FPS %5 | Server Uptime %6 Min | Missions Run %7",blck_missionsRunning,blck_dynamicUMS_MissionsRuning,count blck_monitoredVehicles,count blck_monitoredMissionAIGroups,diag_FPS,floor(diag_tickTime/60),blck_missionsRun, diag_tickTime]] call blck_fnc_log; [] call blck_fnc_cleanupAliveAI; [] call blck_fnc_cleanupObjects; [] call blck_fnc_cleanupDeadAI; diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_AIM.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_messagePlayers.sqf similarity index 85% rename from @GMS/addons/custom_server/Compiles/Functions/GMS_fnc_AIM.sqf rename to @GMS/addons/custom_server/Compiles/Functions/GMS_fnc_messagePlayers.sqf index 1a3c791..d8a85c4 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_AIM.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_messagePlayers.sqf @@ -12,7 +12,6 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; if !(isServer) exitWith {}; params["_msg",["_players",allplayers]]; -//diag_log format["AIM.sqf ===] _this = %1 | _msg = %2 | _players = %3",_this,_msg, _players]; { if (isPlayer _x) then {_msg remoteExec["fn_handleMessage",(owner _x)]}; diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_randomPosn.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_randomPosn.sqf index fdd23f3..fbd93ad 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_randomPosn.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_randomPosn.sqf @@ -15,6 +15,7 @@ private["_newX","_newY"]; params["_pos","_range"]; + _newX = ((_pos select 0) + (random(_range)) * (selectRandom [1,-1])); _newY = ((_pos select 1) + (random(_range)) * (selectRandom [1,-1])); diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_timedOut.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_timedOut.sqf deleted file mode 100644 index c95f910..0000000 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_timedOut.sqf +++ /dev/null @@ -1,20 +0,0 @@ -////////////////////////////////////////////////////// -// test if a timeout condition exists. -// [_startTime] call blck_fnc_timedOut -// Returns true (timed out) or false (not timed out) -/* - By Ghostrider [GRG] - Copyright 2016 - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -///////////////////////////////////////////////////// - -params["_startTime",["_timeoutTime",blck_MissionTimeout]]; -private _return = if ((diag_tickTime - _startTime) > _timeoutTime) then {true} else {false}; -_return diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_antiStickGroupy.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_antiStickGroupy.sqf index d426561..31987f2 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_antiStickGroupy.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_antiStickGroupy.sqf @@ -14,9 +14,7 @@ // TODO: used for 'unstuck' cases */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -#ifdef blck_debugMode -diag_log "_fnc_changeToMoveWaypoint: blck_debugMode enabled"; -#endif + private["_group","_wp","_wpPos","_dis","_arc","_dir","_newPos","_marker","_center","_minDis","_maxDis"]; _group = group _this; @@ -49,23 +47,7 @@ _wp setWaypointLoiterRadius (_group getVariable["wpRadius",30]); _wp setWaypointLoiterType "CIRCLE"; _wp setWaypointSpeed "LIMITED"; _group setCurrentWaypoint _wp; -diag_log format["_fnc_changeToMoveWaypoint:: -- >> group to update is %1 and new Waypoint position is %2",_group, getWPPos _wp]; -#ifdef blck_debugMode -if (blck_debugLevel > 2) then -{ - diag_log format["_fnc_changeToMoveWaypoint (4/25/17): _this = %1", _this]; - diag_log format["_fnc_changeToMoveWaypoint: typeName _this = %1", typeName _this]; - diag_log format["_fnc_changeToMoveWaypoint:_group = %1",_group]; - diag_log format["_fnc_changeToMoveWaypoint:_group timestamp updated to %1", _group getVariable "timeStamp"]; - diag_log format["_fnc_changeToMoveWaypoint:: -- >> wpMode %1 _dir %2 _dis %3 _center %4",_group getVariable["wpMode","random"], _dir, _dis,_center]; - diag_log format["_fnc_changeToMoveWaypoint:: -- >> group to update is %1 and new position is %2",_group, _newPos]; - diag_log format["_fnc_changeToMoveWaypoint:: -- >> group to update is %1 and new Waypoint position is %2",_group, getWPPos _wp]; - diag_log format["_fnc_changeToMoveWaypoint:_group %1 basic waypoint parameters updates", _group getVariable "timeStamp"]; - _marker =_group getVariable["wpMarker",""]; - _marker setMarkerColor "ColorBlue"; - diag_log format["_fnc_changeToMoveWaypoint:: -- >> Waypoint marker for group %1 have been configured as %2",_group, _group getVariable "wpMarker"]; -}; -#endif + if (_group getVariable["wpPatrolMode",""] isEqualTo "SAD") then { #ifdef blck_debugMode diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_checkGroupWaypointStatus.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_checkGroupWaypointStatus.sqf index b98f930..f605f00 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_checkGroupWaypointStatus.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_checkGroupWaypointStatus.sqf @@ -17,7 +17,4 @@ params["_group","_maxTime","_radius"]; if (diag_tickTime > (_group getVariable "timeStamp") + _maxTime) then // || ( (getPos (leader)) distance2d (_group getVariable "patrolCenter") > _radius)) then { (leader _group) call blck_fnc_setNextWaypoint; - #ifdef blck_debugMode - if (blck_debugLevel > 1) then {diag_log format["_fnc_checkGroupWaypointStatus: group %1 stuck, waypoint reset",_group];}; - #endif }; diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_cleanEmptyGroups.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_cleanEmptyGroups.sqf index 9c8868f..0418eac 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_cleanEmptyGroups.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_cleanEmptyGroups.sqf @@ -9,7 +9,7 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//diag_log format["_fnc_cleanEmptyGroups: count blck_monitoredMissionAIGroups = %1",count blck_monitoredMissionAIGroups]; + for "_i" from 0 to ((count blck_monitoredMissionAIGroups) - 1) do { if (_i >= (count blck_monitoredMissionAIGroups)) exitWith {}; diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_groupWaypointMonitor.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_groupWaypointMonitor.sqf index 3afc8d6..7cf0259 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_groupWaypointMonitor.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_groupWaypointMonitor.sqf @@ -22,26 +22,17 @@ _fn_waypointComplete = { private _done = if (currentWaypoint _group) > (count (waypoints _group)) then {true} else {false}; _done }; -//diag_log format["_fnc_groupWaypointMonitor called at %1 with %2 groups to monitor",diag_tickTime,count blck_monitoredMissionAIGroups]; + { private["_timeStamp","_index","_unit","_soldierType"]; if ( !(_x isEqualTo grpNull) && ({alive _x} count (units _x) > 0) ) then { - /* - #define blck_turnBackRadiusInfantry 800 - #define blck_turnBackRadiusVehicles 1000 - #define blck_turnBackRadiusHelis 1000 - #define blck_turnBackRadiusJets 1500 - */ - //diag_log format["_fn_monitorGroupWaypoints - radii: on foot %1 | vehicle %2 | heli %3 | jet %4",blck_turnBackRadiusInfantry,blck_turnBackRadiusVehicles,blck_turnBackRadiusHelis,blck_turnBackRadiusJets]; _timeStamp = _x getVariable ["timeStamp",0]; if (_timeStamp isEqualTo 0) then { _x setVariable["timeStamp",diag_tickTime]; - //diag_log format["_fn_monitorGroupWaypoints::--> updating timestamp for group %1 at time %2",_x,diag_tickTime]; }; _soldierType = _x getVariable["soldierType","null"]; - //diag_log format["_fn_monitorGroupWaypoints::--> soldierType for group %1 = %2 and timeStamp = %3",_x,_soldierType,_timeStamp]; switch (_soldierType) do { case "infantry": {[_x, 60] call blck_fnc_checkgroupwaypointstatus;}; @@ -49,6 +40,5 @@ _fn_waypointComplete = { case "aircraft": {[_x, 90, 1000] call blck_fnc_checkgroupwaypointstatus;}; }; }; - //private _updateNeeded = if (diag_tickTime > (_x getVariable "timeStamp") + 60) then } forEach blck_monitoredMissionAIGroups; diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_setNextWaypoint.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_setNextWaypoint.sqf index 5b4ecf7..df42a2b 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_setNextWaypoint.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_setNextWaypoint.sqf @@ -25,15 +25,11 @@ private _leader = _this; private _pos = _group getVariable "patrolCenter"; // Center of the area to be patroleld. private _minDis = _group getVariable "minDis"; // minimum distance between waypoints private _maxDis = _group getVariable "maxDis"; // maximum distance between waypoints -// _group getVariable "timeStamp"; // used to check that waypoints are being completed -//private _wpRadisu _group getVariable "wpRadius"; // Always set to 0 to force groups to move a bit private _patrolRadius = _group getVariable "patrolRadius"; // radius of the area to be patrolled private _wpMode = _group getVariable "wpMode"; // The default mode used when the waypoint becomes active https://community.bistudio.com/wiki/AI_Behaviour -//_group getVariable "wpPatrolMode"; // Not used; the idea is to allow two algorythms: randomly select waypoints so groups move back and forth along the perimiter of the patrool area or sequenctioal, hoping along the perimeter private _wpTimeout = _group getVariable "wpTimeout"; // Here to alow you to have the game engine pause before advancing to the next waypoing. a timout of 10-20 sec is recommended for infantry and land vehicles, and 1 sec for aircraft private _wpDir = _group getVariable "wpDir"; // Used to note the degrees along the circumference of the patrol area at which the last waypoint was positioned. private _arc = _group getVariable "wpArc"; // Increment in degrees to be used when advancing the position of the patrol to the next position along the patrol perimeter -//_group getVariable "soldierType"; // infantry, vehicle, air or emplaced. Note that there is no need to have more than one waypoint for emplaced units. private _wp = [_group,0]; private _nearestEnemy = _leader findNearestEnemy (getPosATL _leader); private _maxTime = _group getVariable["maxTime",300]; diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_simulationMonitor.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_simulationMonitor.sqf index ba4d1f3..e42c397 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_simulationMonitor.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_simulationMonitor.sqf @@ -11,10 +11,7 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -if (blck_simulationManager isEqualTo blck_simulationManagementOff) exitWith -{ - //diag_log format["_fnc_simulationMonitor: monitoring disabled at %1",diag_tickTime]; -}; +if (blck_simulationManager isEqualTo blck_simulationManagementOff) exitWith {}; if (blck_simulationManager isEqualTo blck_useDynamicSimulationManagement) exitWith { @@ -31,7 +28,7 @@ if (blck_simulationManager isEqualTo blck_useDynamicSimulationManagement) exitWi if (blck_simulationManager isEqualTo blck_useBlckeaglsSimulationManager) then { - //diag_log format["_fnc_simulationMonitor: evaluating simulation using blckeagls code"]; + { private _group = _x; private _nearplayer = [position (leader _group),blck_simulationEnabledDistance] call blck_fnc_nearestPlayers; @@ -43,19 +40,16 @@ if (blck_simulationManager isEqualTo blck_useBlckeaglsSimulationManager) then _x enableSimulationGlobal true; _x reveal [(_nearplayer select 0),(_group knowsAbout (_nearPlayer select 0)) + 0.001]; // Force simulation on }forEach units _group; - //diag_log format["_fnc_simulationMonitor: (44) enabling simulation for group %1",_group]; }; }else{ if (simulationEnabled (leader _group)) then { - {_x enableSimulationGlobal false} forEach units _group; - //diag_log format["_fnc_simulationMonitor: (50) disabling simulation for group %1",_group]; + {_x enableSimulationGlobal false} forEach units _group; }; }; } forEach blck_monitoredMissionAIGroups; { - // diag_log format["_fnc_simulationManager: _x = %1 | blck_graveyardGroup = %2",_x, units blck_graveyardGroup]; // disable simulation once players have left the area. private _nearPlayers = [position (_x),blck_simulationEnabledDistance] call blck_fnc_nearestPlayers; if (simulationEnabled _x) then @@ -63,13 +57,11 @@ if (blck_simulationManager isEqualTo blck_useBlckeaglsSimulationManager) then if (_nearPlayers isEqualTo []) then { _x enableSimulationGlobal false; - //diag_log format["_fnc_simulationMonior: simulation for unit %1 set to FALSE",_unit]; }; } else { if !(_nearPlayers isEqualTo []) then { - _x enableSimulationGlobal true; - //diag_log format["_fnc_simulationMonior: simulation for unit %1 set to TRUE",_unit]; + _x enableSimulationGlobal true; }; }; } forEach units blck_graveyardGroup; diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_spawnGroup.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_spawnGroup.sqf index eff199d..51c485c 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_spawnGroup.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_spawnGroup.sqf @@ -15,15 +15,6 @@ private["_numbertospawn","_safepos","_launcherType","_infantryType"]; params[["_group","Error"],"_pos", "_center", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], ["_minDist",30], ["_maxDist",45],["_configureWaypoints",true], ["_uniforms",[]], ["_headGear",[]],["_vests",[]],["_backpacks",[]],["_weaponList",[]],["_sideArms",[]], ["_scuba",false],["_patrolRadius",30]]; -#ifdef blck_debugMode -if (blck_debugLevel > 3) then -{ - { - diag_log format["_fnc_spawnGroup: _this select %1 = %2",_forEachIndex,_this select _forEachIndex]; - }forEach _this; -}; -#endif - if (_weaponList isEqualTo []) then {_weaponList = [_skillLevel] call blck_fnc_selectAILoadout}; if (_sideArms isEqualTo []) then {_sideArms = [_skillLevel] call blck_fnc_selectAISidearms}; @@ -52,17 +43,13 @@ if !(isNull _group) then _launcherType = "none"; }; private _unitPos = [_pos,3,6] call blck_fnc_findRandomLocationWithinCircle; - [_unitPos,_group,_skillLevel,_uniforms,_headGear,_vests,_backpacks,_launcherType, _weaponList, _sideArms, _scuba] call blck_fnc_spawnUnit; - //diag_log format["_fnc_spawnGroup: _unit %1 spawned at %2 at a distance from the group center of %3 and _vector of %4",_unit,_unitPos,_unitPos distance _pos,_pos getRelDir _unitPos]; }; _group selectLeader ((units _group) select 0); - if (_configureWaypoints) then { if (_scuba) then {_infantryType = "scuba"} else {_infantryType = "infantry"}; - #define infantryPatrolRadius 30 #define infantryWaypointTimeout [5,7.5,10] [_pos,_minDist,_maxDist,_group,"random","SAD",_infantryType,_patrolRadius,infantryWaypointTimeout] spawn blck_fnc_setupWaypoints; @@ -71,10 +58,5 @@ if !(isNull _group) then { diag_log "_fnc_spawnGroup:: ERROR CONDITION : NULL GROUP CREATED"; }; -#ifdef blck_debugMode -if (blck_debugLevel > 2) then -{ - diag_log format["_fnc_spawnGroup:_group = %1",_group]; -}; -#endif + diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_addItemToCrate.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_addItemToCrate.sqf index 7824516..df74fc3 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_addItemToCrate.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_addItemToCrate.sqf @@ -25,7 +25,7 @@ _isMagazine = false; _isBackpack = false; _quant = 0; - //diag_log format["_fn_addItemToCrate:: -- >> itemInfor = %1",_itemInfo]; + if (typeName _itemInfo isEqualTo "STRING") then {_item = _itemInfo; _quant = 1}; // case where only the item descriptor was provided if (typeName _itemInfo isEqualTo "ARRAY") then { diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_addMIssionToQue copy.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_addMIssionToQue copy.sqf deleted file mode 100644 index 9d8a1ba..0000000 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_addMIssionToQue copy.sqf +++ /dev/null @@ -1,50 +0,0 @@ -/* - Adds the basic list of parameters that define a mission such as the marker name, mission list, mission path, AI difficulty, and timer settings, to the arrays that the main thread inspects. - - By Ghostrider-GRG- - Copyright 2016 - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -params[ - "_missionList", // list of missions to be used for that category (blue, red, gree, orange, etc) - "_path", // path to the folder with the mission.sqf's - "_marker", // a root name for markers used in the mission - "_difficulty", - "_tMin", - "_tMax", - ["_noMissions",1] -]; - -//{diag_log format["_fnc_addMissionToCue: _this %1 = %2",_forEachIndex,_x]} forEach _this; -private["_compiledMission","_compiledMissionsList"]; - - - private _waitTime = diag_tickTime + (_tMin) + random((_tMax) - (_tMin)); - private _missionsData = []; // Parameters definine each of the missions for this difficulty are stored as arrays here. - { - private _missionFile = format["\q\addons\custom_server\Missions\%1\%2.sqf",_path,_x]; - private _missionCode = compileFinal preprocessFileLinenumbers _missionFile;//return all of the values that define how the mission is spawned as an array of values. - private _data = [] call _missionCode; - _missionsData pushBack _data; - } forEach _missionList; - - private _missionCategoryDescriptors = [ - _difficulty, - _noMissions, // Max no missions of this category - 0, // Number active - _tMin, // Used to calculate waittime in the future - _tMax, // as above - _waitTime, // time at which a mission should be spawned - _missionsData // - ]; - - blck_missionData pushBack _missionCategoryDescriptors; - diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_addMIssionToQue.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_addMIssionToQue.sqf index 5d03d6b..68fac18 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_addMIssionToQue.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_addMIssionToQue.sqf @@ -12,30 +12,36 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//params["_missionList","_compiledMission","_compiledMissionsList","_waitTime","_mission","_path","_marker","_difficulty","_tMin","_tMax",["_noMissions",1]]; params["_missionList","_path","_marker","_difficulty","_tMin","_tMax",["_noMissions",1]]; -private["_compiledMission","_compiledMissionsList"]; -_compiledMissionsList = []; -for "_i" from 1 to _noMissions do +private _waitTime = diag_tickTime + (_tMin) + random((_tMax) - (_tMin)); +private _missionsData = []; // Parameters definine each of the missions for this difficulty are stored as arrays here. { - _waitTime = diag_tickTime + (_tMin) + random((_tMax) - (_tMin)); - // 0 1 2 3 4 5 6 7 8 - //_mission = [_missionList,_path,format["%1%2",_marker,_i],_difficulty,_tMin,_tMax,_waitTime,[0,0,0],_allowReinforcements]; + private _missionFile = format["\q\addons\custom_server\Missions\%1\%2.sqf",_path,_x]; + private _missionCode = compileFinal preprocessFileLinenumbers _missionFile;//return all of the values that define how the mission is spawned as an array of values + if !(isNil "_missionCode") then { - //diag_log format["_fnc_addMissionToQue: _x = %1",_x]; - _compiledMission = compilefinal preprocessFileLineNumbers format["\q\addons\custom_server\Missions\%1\%2.sqf",_path,_x]; - _compiledMissionsList pushBack _compiledMission; - }forEach _missionList; - _mission = [_compiledMissionsList,format["%1%2",_marker,_i],_difficulty,_tMin,_tMax,_waitTime,[0,0,0]]; - #ifdef blck_debugMode - if (blck_debugLevel >= 2) then { - diag_log format["-fnc_addMissionToQue::-->> _mission = %1",[/*_mission select 0, */_mission select 1, _mission select 2, _mission select 3, _mission select 4, _mission select 5, _mission select 6]]; + private _data = [_marker,_difficulty] call _missionCode; + if !(isNil "_data") then + { + _missionsData pushBack _data; + }; + } else { + diag_log format["bad path\mission combination %1",_missionFile]; }; - #endif - //diag_log format["-fnc_addMissionToQue::-->> _mission = %1",[ _mission select 1, _mission select 2, _mission select 3, _mission select 4, _mission select 5, _mission select 6]]; - blck_pendingMissions pushback _mission; -}; +} forEach _missionList; + +private _missionCategoryDescriptors = [ + _difficulty, + _noMissions, // Max no missions of this category + 0, // Number active + _tMin, // Used to calculate waittime in the future + _tMax, // as above + _waitTime, // time at which a mission should be spawned + _missionsData // +]; + +blck_missionData pushBack _missionCategoryDescriptors; + + + -#ifdef blck_debugMode -if (blck_debugLevel >= 4) then {diag_log format["_fnc_addMissionToQue:: -- >> Result - blck_pendingMissions = %1",blck_pendingMissions];}; -#endif \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_cleanUpObjects.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_cleanUpObjects.sqf index 887836f..9e85083 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_cleanUpObjects.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_cleanUpObjects.sqf @@ -16,8 +16,6 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//diag_log format["_fnc_cleanUpObjects: time %1 | count blck_oldMissionObjects %2",diag_tickTime,count blck_oldMissionObjects]; - for "_i" from 1 to (count blck_oldMissionObjects) do { if (_i <= count blck_oldMissionObjects) then { private _oldObjs = blck_oldMissionObjects deleteAt 0; @@ -27,7 +25,6 @@ for "_i" from 1 to (count blck_oldMissionObjects) do { private _nearplayer = [_missionCenter,800] call blck_fnc_nearestPlayers; if (_nearPlayer isEqualTo []) then { - //diag_log format["_fnc_cleanUpObjects: _nearPlayer = %1 | _missionCenter = %2 | _objarr = %3",_nearplayer,_missionCenter,_objarr]; {deleteVehicle _x}forEach _objarr; } else { blck_oldMissionObjects pushback _oldObjs; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_clearMines.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_clearMines.sqf index 4f4c72c..8b59408 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_clearMines.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_clearMines.sqf @@ -14,8 +14,7 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; params ["_mines"]; -//_mines = _this select 0; // array containing the mines to be deleted -//diag_log format["deleting %1 mines----- >>>> ", count _mines]; + { deleteVehicle _x; } forEach _mines; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_crateMoved.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_crateMoved.sqf index b0b0d0e..ecd009e 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_crateMoved.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_crateMoved.sqf @@ -13,5 +13,4 @@ params["_crate"]; private _result = if ((_crate distance (_crate getVariable["crateSpawnPos",[0,0,0]])) > 10) then {true} else {false}; -//diag_log format["_fn_crateMoved:: _crate %1 | crateSpawnPos %2 | _result = %3",_crate,_result]; _result; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_endMission.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_endMission.sqf index f1c45c4..91c1b59 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_endMission.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_endMission.sqf @@ -13,12 +13,10 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp" -private["_cleanupAliveAITimer","_cleanupCompositionTimer","_isScubaMission"]; _fn_missionCleanup = { params["_coords","_mines","_objects","_blck_AllMissionAI","_markerName","_cleanupAliveAITimer","_cleanupCompositionTimer",["_isScubaMission",false]]; [_mines] call blck_fnc_clearMines; - //[_coords,_objects, _cleanupCompositionTimer] call blck_fnc_addObjToQue; blck_oldMissionObjects pushback [_coords,_objects, (diag_tickTime + _cleanupCompositionTimer)]; blck_liveMissionAI pushback [_coords,_blck_AllMissionAI, (diag_tickTime + _cleanupAliveAITimer)]; blck_missionsRunning = blck_missionsRunning - 1; @@ -55,68 +53,77 @@ params[ ["_vehicles",[]], ["_isScubaMission",false] ]; -/* -private _param = ["_coords","_mines","_objects","_crates","_blck_AllMissionAI","_endMsg","_markers","_markerPos","_markerName","_markerLabel","_endCondition","_vehicles","_isScubaMission"]; -{ - diag_log format["_fnc_endMission: parameter %1 named %2 = %3",_forEachIndex,_param select _forEachIndex,_x]; -} forEach _this; -*/ + { [_x] call blck_fnc_deleteMarker; }forEach (_markers); - -if (_endCondition > 0) exitWith // Mision aborted for some reason -{ - #define cleanupCompositionTimer 0 - #define cleanupAliveAITimer 0 - // params["_coords","_mines","_objects","_blck_AllMissionAI","_markerName","_cleanupAliveAITimer","_cleanupCompositionTimer",["_isScubaMission",false]]; - [_coords,_mines,_objects,_blck_AllMissionAI,_markerName,cleanupAliveAITimer,cleanupCompositionTimer,_isScubaMission] call _fn_missionCleanup; - /* - { - if (local _x) then {deleteVehicle _x}; - }forEach _crates; - */ - { - if (local _x) then {deleteVehicle _x}; - }forEach _vehicles; -}; -if (_endCondition <= 0) then // Normal Mission End State +switch (_endCondition) do { + case 1: { + if (blck_useSignalEnd) then + { + [_crates select 0] spawn blck_fnc_signalEnd; + { + _x enableRopeAttach true; + }forEach _crates; + }; + + [["end",_endMsg,_markerLabel]] call blck_fnc_messageplayers; + [_markerPos, _markerName] spawn blck_fnc_missionCompleteMarker; + { + if !(_x getVariable["lootLoaded",false] || _endCondition == 1) then // dont load loot if the asset was killed + { + [_x,_crateLoot,_lootCounts] call blck_fnc_fillBoxes; + }; + }forEach _crates; - if (blck_useSignalEnd) then - { - [_crates select 0] spawn blck_fnc_signalEnd; - { - _x enableRopeAttach true; - }forEach _crates; + { + private ["_v","_posnVeh"]; + _posnVeh = blck_monitoredVehicles find _x; // returns -1 if the vehicle is not in the array else returns 0-(count blck_monitoredVehicles -1) + if (_posnVeh >= 0) then + { + (blck_monitoredVehicles select _posnVeh) setVariable ["missionCompleted", diag_tickTime]; + } else { + _x setVariable ["missionCompleted", diag_tickTime]; + blck_monitoredVehicles pushback _x; + }; + } forEach _vehicles; + + [_coords,_mines,_objects,_blck_AllMissionAI,_markerName,blck_AliveAICleanUpTimer,blck_cleanupCompositionTimer,_isScubaMission] call _fn_missionCleanup; }; - diag_log format["_fnc_endMission (93) _endMsg = %1 | _markerLabel = %2",_endMsg,_markerLabel]; - if (_endCondition == 0) then {[["end",_endMsg,_markerLabel]] call blck_fnc_messageplayers;}; - if (_endCondition == -1) then {[["warning",_endMsg,_markerLabel]] call blck_fnc_messageplayers;}; - [_markerPos, _markerName] spawn blck_fnc_missionCompleteMarker; - { - if !(_x getVariable["lootLoaded",false] || _endCondition == 1) then // dont load loot if the asset was killed - { + case 2: { // Aborted for moving a crate - [_x,_crateLoot,_lootCounts] call blck_fnc_fillBoxes; - }; - }forEach _crates; + { + if ( _x distance (_x getVariable ["crateSpawnPos", (getPos _x)]) > max_distance_crate_moved_uncompleted_mission)then {deleteVehicle _x}; + } forEach _crates; + #define illegalCrateMoveMsg "Crate moved before mission completed" + [["warming",illegalCrateMoveMsg,_markerLabel]] call blck_fnc_messageplayers; + [_coords,_mines,_objects,_blck_AllMissionAI,_markerName,cleanupAliveAITimer,cleanupCompositionTimer,_isScubaMission] call _fn_missionCleanup; + }; + case 3: { // Mision aborted for killing an asset + #define cleanupCompositionTimer 0 + #define cleanupAliveAITimer 0 + + { + if (local _x) then {deleteVehicle _x}; + }forEach _crates; + [["warning",_endMsg,_markerLabel]] call blck_fnc_messageplayers; + [_coords,_mines,_objects,_blck_AllMissionAI,_markerName,cleanupAliveAITimer,cleanupCompositionTimer,_isScubaMission] call _fn_missionCleanup; - { - private ["_v","_posnVeh"]; - _posnVeh = blck_monitoredVehicles find _x; // returns -1 if the vehicle is not in the array else returns 0-(count blck_monitoredVehicles -1) - if (_posnVeh >= 0) then - { - (blck_monitoredVehicles select _posnVeh) setVariable ["missionCompleted", diag_tickTime]; - } else { - _x setVariable ["missionCompleted", diag_tickTime]; - blck_monitoredVehicles pushback _x; - }; - } forEach _vehicles; - // params["_coords","_mines","_objects","_blck_AllMissionAI","_markerName","_cleanupAliveAITimer","_cleanupCompositionTimer",["_isScubaMission",false]]; - [_coords,_mines,_objects,_blck_AllMissionAI,_markerName,blck_AliveAICleanUpTimer,blck_cleanupCompositionTimer,_isScubaMission] call _fn_missionCleanup; + }; + case 4: { + #define cleanupCompositionTimer 0 + #define cleanupAliveAITimer 0 + + { + if (local _x) then {deleteVehicle _x}; + }forEach _crates; + + [_coords,_mines,_objects,_blck_AllMissionAI,_markerName,cleanupAliveAITimer,cleanupCompositionTimer,_isScubaMission] call _fn_missionCleanup; + }; }; - _endCondition +[format["Mission Completed | _cords %1 : _markerClass %2 : _markerMissionName %3",_coords,_markerName,_markerLabel]] call blck_fnc_log; +blck_missionsRun = blck_missionsRun + 1; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_fillBoxes.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_fillBoxes.sqf index 02d4ccc..8d06a6c 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_fillBoxes.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_fillBoxes.sqf @@ -14,25 +14,19 @@ private["_a1","_item","_diff","_tries"]; params["_crate","_boxLoot","_itemCnts"]; - //diag_log format["_fnc_fillBoxes: _this = %1",_this]; - #ifdef blck_debugMode - { - diag_log format["_fnc_fillBoxes: _this select %1 = %2",_foreachindex, _this select _foreachindex]; - }foreach _this; - #endif + _itemCnts params["_wepCnt","_magCnt","_opticsCnt","_materialsCnt","_itemCnt","_bkcPckCnt"]; _boxLoot params["_weapons","_magazines","_optics","_materials","_items","_backpacks"]; - //diag_log format["_fnc_fillBoxes: _weapons = %1",_weapons]; if !(_weapons isEqualTo []) then { _tries = [_wepCnt] call blck_fnc_getNumberFromRange; - //diag_log format["_fnc_fillBoxes (31): loading %1 weapons",_tries]; + // Add some randomly selected weapons and corresponding magazines for "_i" from 0 to (_tries - 1) do { _item = selectRandom _weapons; - //diag_log format["_fnc_fillBoxes with weapons: _item = %1",_item]; + if (typeName _item isEqualTo "ARRAY") then // Check whether weapon name is part of an array that might also specify an ammo to use { _crate addWeaponCargoGlobal [_item select 0,1]; // if yes then assume the first element in the array is the weapon name @@ -51,16 +45,15 @@ }; }; - //diag_log format["_fnc_fillBoxes: _magazines = %1",_magazines]; if !(_magazines isEqualTo []) then { _tries = [_magCnt] call blck_fnc_getNumberFromRange; - //diag_log format["_fnc_fillBoxes (26): loading %1 magazines",_tries]; + // Add Magazines, grenades, and 40mm GL shells for "_i" from 0 to (_tries - 1) do { _item = selectRandom _magazines; - //diag_log format["_fnc_fillBoxes with magazines: _item = %1",_item]; + if (typeName _item isEqualTo "ARRAY") then { _diff = (_item select 2) - (_item select 1); // Take difference between max and min number of items to load and randomize based on this value @@ -73,16 +66,15 @@ }; }; - //diag_log format["_fnc_fillBoxes: _optics = %1",_optics]; if !(_optics isEqualTo []) then { _tries = [_opticsCnt] call blck_fnc_getNumberFromRange; - //diag_log format["_fnc_fillBoxes (72): loading %1 optics",_tries]; + // Add Optics for "_i" from 0 to (_tries - 1) do { _item = selectRandom _optics; - //diag_log format["_fnc_fillBoxes with optics: _item = %1",_item]; + if (typeName _item isEqualTo "ARRAY") then { _diff = (_item select 2) - (_item select 1); @@ -95,16 +87,15 @@ }; }; - //diag_log format["_fnc_fillBoxes: _materials = %1",_materials]; if !(_materials isEqualTo []) then { _tries = [_materialsCnt] call blck_fnc_getNumberFromRange; - //diag_log format["_fnc_fillBoxes (92): loading %1 materials",_materialsCnt]; + // Add materials (cindar, mortar, electrical parts etc) for "_i" from 0 to (_tries - 1) do { _item = selectRandom _materials; - //diag_log format["_fnc_fillBoxes with materials: _item = %1",_item]; + if (typeName _item isEqualTo "ARRAY") then { _diff = (_item select 2) - (_item select 1); @@ -117,16 +108,14 @@ }; }; - //diag_log format["_fnc_fillBoxes: _items = %1",_items]; if !(_items isEqualTo []) then { _tries = [_itemCnt] call blck_fnc_getNumberFromRange; - //diag_log format["_fnc_fillBoxes (112): loading %1 items",_itemCnt]; + // Add Items (first aid kits, multitool bits, vehicle repair kits, food and drinks) for "_i" from 0 to (_tries - 1) do { _item = selectRandom _items; - //diag_log format["_fnc_fillBoxes with items: _item = %1",_item]; if (typeName _item isEqualTo "ARRAY") then { _diff = (_item select 2) - (_item select 1); @@ -139,15 +128,13 @@ }; }; - //diag_log format["_fnc_fillBoxes: _backpacks = %1",_backpacks]; if !(_backpacks isEqualTo []) then { _tries = [_bkcPckCnt] call blck_fnc_getNumberFromRange; - //diag_log format["_fnc_fillBoxes (132): loading %1 backpacks",_tries]; for "_i" from 0 to (_tries - 1) do { _item = selectRandom _backpacks; - //diag_log format["_fnc_fillBoxes with backpacks: _item = %1",_item]; + if (typeName _item isEqualTo "ARRAY") then { _diff = (_item select 2) - (_item select 1); @@ -159,6 +146,3 @@ }; }; }; - //diag_log "_fnc_fillBoxes "; - //diag_log format["testCrateLoading: crate inventory = %1",getItemCargo _crate]; - //diag_log "_fnc_fillBoxes "; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_garrisonBuilding_ATLsystem.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_garrisonBuilding_ATLsystem.sqf index 49c86f6..b7daa0c 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_garrisonBuilding_ATLsystem.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_garrisonBuilding_ATLsystem.sqf @@ -28,12 +28,6 @@ if (_headGear isEqualTo []) then {_headGear = [_aiDifficultyLevel] call blck_f if (_vests isEqualTo []) then {_vests = [_aiDifficultyLevel] call blck_fnc_selectAIVests}; if (_backpacks isEqualTo []) then {_backpacks = [_aiDifficultyLevel] call blck_fnc_selectAIBackpacks}; -/* -{ - diag_log format["_fnc_garrisonBuilding_ATLsystem: _this %1 = %2",_forEachIndex,_this select _forEachIndex]; -}forEach _this; -*/ - private["_group","_buildingsSpawned","_staticsSpawned","_g","_building","_return"]; _buildingsSpawned = []; _staticsSpawned = []; @@ -41,25 +35,15 @@ _group = [blck_AI_Side,true] call blck_fnc_createGroup; if !(isNull _group) then { { - _g = _x; - /* - { - diag_log format["_g %1 = %2",_forEachIndex,_g select _forEachIndex]; - }forEach _g; - */ - // ["Land_Unfinished_Building_02_F",[-28.3966,34.8145,-0.00268841],0,true,true,[["B_HMG_01_high_F",[-5.76953,1.16504,7.21168],360]],[]], + _g = _x; _x params["_bldClassName","_bldRelPos","_bldDir","_s","_d","_statics","_men"]; - //diag_log format["_bldClassName = %1 | _bldRelPos = %2 | _bldDir = %3",_bldClassName,_bldRelPos,_bldDir]; _building = createVehicle[_bldClassName,[0,0,0],[],0,"CAN_COLLIDE"]; _building setPosATL (_bldRelPos vectorAdd _center); _building setDir _bldDir; _buildingsSpawned pushBack _building; - // params["_building","_group","_statics","_men",["_aiDifficultyLevel","Red"], ["_uniforms",[]],["_headGear",[]],["_vests",[]],["_backpacks",[]],["_launcher","none"],["_weaponList",[]],["_sideArms",[]]]; _staticsSpawned = [_building,_group,_statics,_men,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,"none",_weaponList,_sideArms] call blck_fnc_spawnGarrisonInsideBuilding_ATL; }forEach _garrisonedBuilding_ATLsystem; }; -//{ - //diag_log format["__fnc_garrisonBuilding_ATLsystem: %2 = %1",_x select 1, _x select 0]; -//}forEach [ [_buildingsSpawned,"Buildings"],[_staticsSpawned,"Statics"]]; + _return = [_group,_buildingsSpawned,_staticsSpawned]; _return diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_initializeMission.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_initializeMission.sqf index 1815061..523055a 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_initializeMission.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_initializeMission.sqf @@ -6,12 +6,8 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; - private ["_coords","_coordArray","_return"]; - - params["_missionCategoryDescriptors","_missionParameters"]; - _missionCategoryDescriptors params [ "_difficulty", "_noMissions", // Max no missions of this category @@ -22,87 +18,17 @@ params["_missionCategoryDescriptors","_missionParameters"]; "_missionsData" // ]; -/* -{ - diag_log format["fnc_initializeMission: _missionCategoryDescriptors:%1 = %2",_x,_missionCategoryDescriptors select _forEachIndex]; -} forEach [ - "_difficulty", - "_noMissions", // Max no missions of this category - "_noActive", // Number active - "_tMin", // Used to calculate waittime in the future - "_tMax", // as above - "_waitTime", // time at which a mission should be spawned - "_missionsData" // - ]; -*/ if (_noActive > _noMissions) exitWith {if (blck_debugOn) then {}}; _missionParameters params[ - "_defaultMissionLocations", // 1 - "_crateLoot", // 2 - "_lootCounts", // 3 - "_startMsg", // 4 - "_endMsg", // 5 - "_markerMissionName", // 6 "Scouts"; - "_markerType", // 7 "mil_triangle" - "_markerColor", // 8 ColorBlue - "_markerSize", // 9 [200,200] for ELLIPSE and rectangle markers only - "_markerBrush", // 10 "GRID", for ELLIPSE and rectangle markers only - "_missionLandscapeMode", // 11 - "_garrisonedBuildings_BuildingPosnSystem", - "_garrisonedBuilding_ATLsystem", // 13 - "_missionLandscape", // 14 - "_missionLootBoxes", // 15 - "_missionLootVehicles", // 16 - "_missionPatrolVehicles", // 17 - "_submarinePatrolParameters", // 18 - "_airPatrols", // 19 - "_noVehiclePatrols", // 20 - "_vehicleCrewCount", // 21 - "_missionEmplacedWeapons", // 22 - "_noEmplacedWeapons", // 23 - "_missionLootVehicles", // 24 - "_useMines", // 25 - "_minNoAI", // 26 - "_maxNoAI", - "_noAIGroups", - "_missionGroups", - "_scubaGroupParameters", - "_hostageConfig", - "_enemyLeaderConfig", - "_uniforms", - "_headgear", - "_vests", - "_backpacks", - "_weaponList", - "_sideArms", - "_chanceHeliPatrol", - "_noChoppers", - "_missionHelis", - "_chancePara", - "_noPara", - "_paraTriggerDistance", - "_paraSkill", - "_chanceLoot", - "_paraLoot", - "_paraLootCounts", - "_spawnCratesTiming", - "_loadCratesTiming", - "_endCondition", - "_isScubaMission" -]; - -/* - { - diag_log format["fnc_initializeMission: _missionParameters:%1 = %2",_x,_missionParameters select _forEachIndex]; - } forEach [ - "_defaultMissionLocations", // 1 - "_crateLoot", // 2 - "_lootCounts", // 3 - "_startMsg", // 2 - "_endMsg", // 3 - "_markerMissionName", + "_markerName", + "_markerMissionName", + "_endMsg", + "_startMsg", + "_defaultMissionLocations", + "_crateLoot", + "_lootCounts", "_markerType", "_markerColor", "_markerSize", @@ -120,7 +46,6 @@ _missionParameters params[ "_vehicleCrewCount", "_missionEmplacedWeapons", "_noEmplacedWeapons", - "_missionLootVehicles", "_useMines", "_minNoAI", "_maxNoAI", @@ -129,6 +54,7 @@ _missionParameters params[ "_scubaGroupParameters", "_hostageConfig", "_enemyLeaderConfig", + "_assetKilledMsg", "_uniforms", "_headgear", "_vests", @@ -150,8 +76,7 @@ _missionParameters params[ "_endCondition", "_isScubaMission" ]; -*/ -//diag_log format["_fnc_initializeMission: _isScubaMission = %1",_isScubaMission]; + _coordsArray = []; if !(_defaultMissionLocations isEqualTo []) then { @@ -165,46 +90,40 @@ if !(_defaultMissionLocations isEqualTo []) then }; }; -//diag_log format["_fnc_initializeMission: _coords = %1",_coords]; -//uiSleep 1; + if (_coords isEqualTo []) exitWith { - //diag_log format['_fnc_initializeMission: no safe location found, defering initialization']; false; }; -//diag_log format["_fnc_initializeMission(160): _defaultMissionLocations = %3 | _markerMissionName = %1 | _coords = %2",_markerMissionName,_coords,_defaultMissionLocations]; blck_ActiveMissionCoords pushback _coords; blck_missionsRunning = blck_missionsRunning + 1; -blck_missionsRun = blck_missionsRun + 1; -//diag_log format["_initializeMission (164): Total Dyanamic Land and UMS Run = %1 | total Dynamic and UMS Missions Running = %2", blck_missionsRun,blck_missionsRunning]; - private _markers = []; /* Handle map markers */ private _markerName = format["%1:%2",_markerMissionName,blck_missionsRun]; -//diag_log format["_initializeMission: _markerName = %1",_markerName]; -private "_missionMarkerPosition"; + +private "_markerPos"; if (blck_labelMapMarkers select 0) then { - _missionMarkerPosition = _coords; + _markerPos = _coords; }; if !(blck_preciseMapMarkers) then { - _missionMarkerPosition = [_coords,75] call blck_fnc_randomPosition; + _markerPos = [_coords,75] call blck_fnc_randomPosition; }; -private _markers = [_markerName,_coords,_markerMissionName,_markerColor,_markerType,_markerSize,_markerBrush] call blck_fnc_createMarker; -_markers params["_mainMarker",["_labelMarker",""]]; +_markerType params["_type",["_size",[250,250]],["_brush","GRID"]]; +private _markers = [_markerName,_markerPos,_markerMissionName,_markerColor,_type,_size,_brush] call blck_fnc_createMissionMarkers; /* Send a message to players. */ [["start",_startMsg,_markerMissionName]] call blck_fnc_messageplayers; - + private _missionTimeoutAt = diag_tickTime + blck_MissionTimeout; private _triggered = 0; private _spawnPara = if (random(1) < _chancePara) then {true} else {false}; @@ -216,7 +135,7 @@ private _blck_AllMissionAI = []; private _AI_Vehicles = []; private _assetSpawned = objNull; -private _missionData = [_coords,_mines,_objects,_crates, _blck_AllMissionAI,_assetSpawned,_missionAIVehicles,_mainMarker,_labelMarker]; +private _missionData = [_coords,_mines,_objects,_crates, _blck_AllMissionAI,_assetSpawned,_missionAIVehicles,_markers]; blck_activeMissionsList pushBack [_missionCategoryDescriptors,_missionTimeoutAt,_triggered,_spawnPara,_missionData,_missionParameters]; -true \ No newline at end of file +[format["Initialized Mission %1 | description %2 | difficulty %3 at %4",_markerName, _markerMissionName, _difficulty, diag_tickTime]] call blck_fnc_log; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf index f2d4dc8..16b9a45 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf @@ -17,14 +17,10 @@ private ["_abort","_crates","_aiGroup","_objects","_groupPatrolRadius","_mission "_AI_Vehicles","_timeOut","_aiDifficultyLevel","_missionPatrolVehicles","_missionGroups","_loadCratesTiming","_spawnCratesTiming","_assetSpawned","_hostageConfig", "_chanceHeliPatrol","_noPara","_chanceLoot","_heliCrew","_loadCratesTiming","_useMines","_blck_AllMissionAI","_delayTime","_groupPatrolRadius", "_wait","_missionStartTime","_playerInRange","_missionTimedOut","_temp","_patrolVehicles","_vehToSpawn","_noChoppers","_chancePara","_paraSkill","_marker","_vehicleCrewCount", - "_defaultMissionLocations","_garrisonedbuildings_buildingposnsystem","_garrisonedBuilding_ATLsystem", "_isScubaMission","_markerlabel"]; + "_defaultMissionLocations","_garrisonedbuildings_buildingposnsystem","_garrisonedBuilding_ATLsystem", "_isScubaMission","_markerlabel","_missionLootBoxes","_airpatrols"]; -params["_coords","_markerName","_aiDifficultyLevel"]; +params["_markerName","_aiDifficultyLevel"]; if (isNil "_markerLabel") then {_markerLabel = _markerMissionName}; -[_markerName, "active",_coords] call blck_fnc_updateMissionQue; - -diag_log format["[blckeagls] missionSpawner (17):: Initializing mission: _cords %1 : _markerName %2 : _aiDifficultyLevel %3",_coords,_markerName,_aiDifficultyLevel,_markerLabel]; - if (isNil "_assetKilledMsg") then {_assetKilledMsg = ""}; if (isNil "_markerColor") then {_markerColor = "ColorBlack"}; if (isNil "_markerType") then {_markerType = ["mil_box",[]]}; @@ -59,7 +55,6 @@ if (isNil "_garrisonedBuildings_BuildingPosnSystem") then {_garrisonedBuildings_ if (isNil "_vehicleCrewCount") then {_vehicleCrewCount = [_aiDifficultyLevel] call GMS_fnc_selectVehicleCrewCount}; if (isNil "_airpatrols") then {_airpatrols = []}; if (isNil "_submarinePatrolParameters") then {_submarinePatrolParameters = []}; - if (isNil "_scubagroupparameters") then {_scubagroupparameters = []}; if (isNil "_markerMissionName") then { diag_log format["_fnc_missionSpawner: _markerMissionName not defined, using default value"]; @@ -68,607 +63,70 @@ if (isNil "_markerMissionName") then { if (isNil "_noLootCrates") then {_noLootCrates = 1}; if (isNil "_lootCrates") then {_lootCrates = blck_crateTypes}; if (isNil "_lootCratePositions") then {_lootCratePositions = []}; - if (isNil "_isScubaMission") then {_isScubaMission = false}; if (isNil "_missionLootBoxes") then {_missionLootBoxes = []}; -private "_temp"; - -// If the mission is to be spawned at pre-defined coordinates then select one from the array that defines them -// otherwise use the _coords that were passed to the script in _this if (isNil "_defaultMissionLocations") then {_defaultMissionLocations = []}; if !(_defaultMissionLocations isEqualTo []) then { _coords = selectRandom _defaultMissionLocations; }; +_markerType params["_markerType",["_markersize",[250,250]],["_markerBrush","GRID"]]; +private _paraSkill = _aiDifficultyLevel; -blck_ActiveMissionCoords pushback _coords; -blck_missionsRunning = blck_missionsRunning + 1; -//diag_log format["_fnc_missionSpawner: count blck_ActiveMissionCoords = %1 | blck_ActiveMissionCoords = %2",count blck_ActiveMissionCoords,blck_ActiveMissionCoords]; - -_objects = []; -_mines = []; -_crates = []; -_aiGroup = []; -_missionAIVehicles = []; -_blck_AllMissionAI = []; -_AI_Vehicles = []; - -#define delayTime 1 -#define useRelativePos true - -#ifdef blck_debugMode -diag_log "_missionSpawner: All variables initialized"; -#endif -private _markerPos = _coords; - -if !(blck_preciseMapMarkers) then -{ - private _markerPos = [_coords,75] call blck_fnc_randomPosition; - //diag_log format["_fnc_missionSpawner (110): _markerPos = %1",_markerPos]; -} ; - -[["start",_startMsg,_markerMissionName]] call blck_fnc_messageplayers; - - -_markerType params["_type",["_size",[250,250]],["_brush","GRID"]]; -_markers = [_markerName,_markerPos,_markerMissionName,_markerColor,_type,_size,_brush] call blck_fnc_createMissionMarkers; - - -#ifdef blck_debugMode -if (blck_debugLevel > 0) then {diag_log "missionSpawner:: (145) message players and spawn a mission marker";}; -if (blck_debugLevel > 0) then {diag_log format["missionSpawner:: (146) _markers = %1",_markers];}; -if (blck_debugLevel > 0) then {diag_log "missionSpawner:: (147) waiting for player to trigger the mission";}; -#endif -//////// -// All parameters are defined, lets wait until a player is nearby or the mission has timed out -//////// - -_missionStartTime = diag_tickTime; -_playerInRange = false; -_missionTimedOut = false; -_wait = true; - -#ifdef blck_debugMode -if (blck_debugLevel > 0) then { - diag_log "missionSpawner:: (90) starting mission trigger loop"}; - diag_log format["missionSpawner (163) blck_MissionTimeout = %1", blck_MissionTimeout]; -#endif - -while {_wait} do -{ - //#ifdef blck_debugMode - if (blck_debugLevel > 2) exitWith {_playerInRange = true;diag_log "_fnc_missionSpawner (168): player trigger loop triggered by scripting";}; - //#endif - - if ([_coords, blck_TriggerDistance, false] call blck_fnc_playerInRange) exitWith {_playerInRange = true;}; - if ([_missionStartTime,blck_MissionTimeout] call blck_fnc_timedOut) exitWith {_missionTimedOut = true;}; - uiSleep 5; - - #ifdef blck_debugMode - if (blck_debugLevel > 3) then - { - diag_log format["missionSpawner:: Trigger Loop - blck_debugLevel = %1 and _coords = %2",blck_debugLevel, _coords]; - diag_log format["missionSpawner:: Trigger Loop - players in range = %1",{isPlayer _x && _x distance2D _coords < blck_TriggerDistance} count allPlayers]; - diag_log format["missionSpawner:: Trigger Loop - blck_MissionTimeout = %4 | _missionStartTime = %1 | time = %2 | timeout = %3",_missionStartTime, diag_tickTime, [_missionStartTime,blck_MissionTimeout] call blck_fnc_timedOut,blck_MissionTimeout]; - }; - #endif -}; - -if (_missionTimedOut) exitWith -{ - - // diag_log format["[blckeagls] missionSpawner (17):: Initializing mission: _cords %1 : _markerName %2 : _aiDifficultyLevel %3 _markerLabel %4",_coords,_markerName,_aiDifficultyLevel,_markerLabel]; - diag_log format["_fnc_missionSpawner (187): mission timed out: _markerName %1 | _markerLabel %2 | time %3",_markerName,_markerLabel,diag_tickTime]; - /* - params[ - "_coords", - "_mines", - "_objects", - "_crates", - "_blck_AllMissionAI", - "_endMsg", - "_markers", - "_markerPos", - "_markerName", - "_markerLabel", - ["_endCondition",0], - ["_vehicles",[]], - ["_isScubaMission",false] - +private _table = [ + _markerName, + _markerMissionName, // Name used for setMarkerText and also for the root name for all markers + _endMsg, + _startMsg, + _defaultMissionLocations, + _crateLoot, + _lootCounts, + _markerType, + _markerColor, + _markerSize, + _markerBrush, + _missionLandscapeMode, + _garrisonedBuildings_BuildingPosnSystem, + _garrisonedBuilding_ATLsystem, + _missionLandscape, + _missionLootBoxes, + _missionLootVehicles, + _missionPatrolVehicles, + _submarinePatrolParameters, + _airPatrols, + _noVehiclePatrols, + _vehicleCrewCount, + _missionEmplacedWeapons, + _noEmplacedWeapons, + _useMines, + _minNoAI, + _maxNoAI, + _noAIGroups, + _missionGroups, + _scubaGroupParameters, + _hostageConfig, + _enemyLeaderConfig, + _assetKilledMsg, + _uniforms, + _headgear, + _vests, + _backpacks, + _weaponList, + _sideArms, + _chanceHeliPatrol, + _noChoppers, + _missionHelis, + _chancePara, + _noPara, + _paraTriggerDistance, + _paraSkill, + _chanceLoot, + _paraLoot, + _paraLootCounts, + _spawnCratesTiming, + _loadCratesTiming, + _endCondition, + _isScubaMission ]; -*/ - [_coords,_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_markers,_markerPos,_markerName,_markerMissionName, 1] call blck_fnc_endMission; -}; -//////////////////////////////////////////////// -// Spawn the mission objects, loot chest, and AI -/////////////////////////////////////////////// -#ifdef blck_debugMode -if (blck_debugLevel > 0) then -{ - diag_log format["[blckeagls] missionSpawner:: (200) -- >> Mission tripped: _cords %1 : _markerName %2 : _aiDifficultyLevel %3 _markerLabel %4",_coords,_markerName,_aiDifficultyLevel,_markerMissionName]; -}; -#endif - -if (blck_SmokeAtMissions select 0) then // spawn a fire and smoke near the crate -{ - _temp = [_coords,blck_SmokeAtMissions select 1] call blck_fnc_smokeAtCrates; - if (typeName _temp isEqualTo "ARRAY") then - { - _objects append _temp; - }; -}; - -uiSleep delayTime; -if (_useMines) then -{ - _mines = [_coords] call blck_fnc_spawnMines; - -}; -uiSleep delayTime; -_temp = []; - -if (_missionLandscapeMode isEqualTo "random") then -{ - _temp = [_coords,_missionLandscape, 3, 15, 2] call blck_fnc_spawnRandomLandscape; -} else { - - _temp = [_coords, _missionLandscape] call blck_fnc_spawnCompositionObjects; -}; -if (typeName _temp isEqualTo "ARRAY") then -{ - _objects append _temp; -}; - -#ifdef blck_debugMode -if (blck_debugLevel > 0) then -{ - diag_log format["[blckeagls] missionSpawner:: (219) Landscape spawned: _cords %1 : _markerName %2 : _aiDifficultyLevel %3 _markerLabel %4",_coords,_markerName,_aiDifficultyLevel,_markerLabel]; -}; -#endif - -uiSleep delayTime; - -_abort = false; -_temp = []; - -_temp = [_coords, _minNoAI,_maxNoAI,_noAIGroups,_missionGroups,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnMissionAI; - -_abort = _temp select 1; - -if !(_abort) then -{ - _blck_AllMissionAI append (_temp select 0); -}; -//diag_log format["[blckeagls] missionSpawner:: (236) missionAI spawned: _markerName %1 : _markerLabel %2 : count _blck_AllMissionAI = %3",_markerName,_markerLabel, count _blck_AllMissionAI]; -if !(_scubaGroupParameters isEqualTo []) then -{ - #define isScubaMission true - //diag_log format["_fnc_dynamicUMSspawner: spawning scuba groups with _scubaGroupParameters = %1",_scubaGroupParameters]; - // params["_coords",["_minNoAI",3],["_maxNoAI",6],"_missionGroups",["_aiDifficultyLevel","red"],["_uniforms",blck_SkinList],["_headGear",blck_BanditHeadgear],["_vests",blck_vests],["_backpacks",[]],["_weapons",[]],["_sideArms",blck_Pistols],["_isScubaGroup",false]]; - private _temp = [_coords, _minNoAI,_maxNoAI,count _scubaGroupParameters,_scubaGroupParameters,_aiDifficultyLevel,blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,[],blck_UMS_weapons,[],_isScubaMission] call blck_fnc_spawnMissionAI; - diag_log format["_fnc_missionSpawner (243): _temp = %1",_temp]; - uiSleep 2; - _abort = _temp select 1; - - if !(_abort) then - { - _blck_AllMissionAI append (_temp select 0); - }; - diag_log format["[blckeagls] missionSpawner:: (250) scuba AI spawned: _markerName %1 : _markerLabel %2 : count _blck_AllMissionAI = %3",_markerName,_markerLabel, count _blck_AllMissionAI]; -}; - -#ifdef blck_debugMode -uiSleep 10; -if (blck_debugLevel > 0) then -{ - diag_log format["[blckeagls] missionSpawner:: (288) AI Patrols Spawned: _cords %1 : _markerName %2 : _aiDifficultyLevel %3 _markerLabel %4",_coords,_markerName,_aiDifficultyLevel,_markerLabel]; -}; -#endif - -_assetSpawned = objNull; -if !(_hostageConfig isEqualTo []) then -{ - _temp = [_coords,_hostageConfig] call blck_fnc_spawnHostage; - _assetSpawned = _temp select 0; - _objects pushBack (_temp select 1); - _blck_AllMissionAI pushBack _assetSpawned; -}; - -if !(_enemyLeaderConfig isEqualTo []) then -{ - _temp = [_coords,_enemyLeaderConfig] call blck_fnc_spawnLeader; - _assetSpawned = _temp select 0; - _objects pushBack (_temp select 1); - _blck_AllMissionAI pushBack _assetSpawned; -}; - -uiSleep delayTime; -_temp = [[],[],false]; -_abort = false; - -// Deal with helicopter patrols -_temp = []; -_noChoppers = [_noChoppers] call blck_fnc_getNumberFromRange; -if (_noChoppers > 0) then -{ - for "_i" from 1 to (_noChoppers) do - { - if (random(1) < _chanceHeliPatrol) then - { - _temp = [_coords,_aiDifficultyLevel,_missionHelis,_uniforms,_headGear,_vests,_backpacks,_weaponList, _sideArms,"none"] call blck_fnc_spawnMissionHeli; - - if (typeName _temp isEqualTo "ARRAY") then - { - _abort = _temp select 2; - if !(_abort) then - { - blck_monitoredVehicles pushBack (_temp select 0); - _blck_AllMissionAI append (_temp select 1); - }; - }; - }; - }; -}; - -#ifdef blck_debugMode -uiSleep 10; -if (blck_debugLevel > 2) then {diag_log "_fnc_missionSpawner (256) helipatrols spawned"}; -#endif - -uisleep 3; -if !(_garrisonedBuilding_ATLsystem isEqualTo []) then -{ - _temp = [_coords, _garrisonedBuilding_ATLsystem, _aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_garrisonBuilding_ATLsystem; - _objects append (_temp select 1); - blck_monitoredVehicles append (_temp select 2); - _blck_AllMissionAI append (units (_temp select 0)); -}; - - -#ifdef blck_debugMode -uiSleep 10; -if (blck_debugLevel > 2) then {diag_log "_fnc_missionSpawner (271) garrisons (ATL) spawned"}; -#endif - -uiSleep 3; -if !(_garrisonedBuildings_BuildingPosnSystem isEqualTo []) then -{ - _temp = [_coords, _garrisonedBuildings_BuildingPosnSystem, _aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_garrisonBuilding_RelPosSystem; - _objects append (_temp select 1); - blck_monitoredVehicles append (_temp select 2); - _blck_AllMissionAI append (units (_temp select 0)); -}; - -#ifdef blck_debugMode -uiSleep 10; -if (blck_debugLevel > 2) then {diag_log "_fnc_missionSpawner (285) garrisons (building position system) spawned"}; -#endif - -uiSleep 15; -private["_noEmplacedToSpawn"]; -_noEmplacedToSpawn = [_noEmplacedWeapons] call blck_fnc_getNumberFromRange; -if (blck_useStatic && (_noEmplacedToSpawn > 0)) then -{ - _temp = [_coords,_missionEmplacedWeapons,useRelativePos,_noEmplacedToSpawn,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnEmplacedWeaponArray; - _temp params ["_emplacedObjects","_units","_abort"]; - _objects append _emplacedObjects; - _blck_AllMissionAI append _units; -}; - -#ifdef blck_debugMode -uiSleep 10; -if (blck_debugLevel > 2) then {diag_log "_fnc_missionSpawner (309) emplaced weapons spawned"}; -#endif - -_vehToSpawn = [_noVehiclePatrols] call blck_fnc_getNumberFromRange; -if (blck_useVehiclePatrols && ((_vehToSpawn > 0) || !(_missionPatrolVehicles isEqualTo []) )) then -{ - //diag_log format["_missionSpawner(315): _vehToSpawn = %1 | _missionPatrolVehicles = %2",_vehToSpawn,_missionPatrolVehicles]; - _temp = [_coords,_vehToSpawn,_aiDifficultyLevel,_missionPatrolVehicles,useRelativePos,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms,false,_vehicleCrewCount] call blck_fnc_spawnMissionVehiclePatrols; - - _temp params ["_patrolVehicles","_units","_abort"]; - _blck_AllMissionAI append _units; -}; - -// Spawn any submarine patrols -if (blck_useVehiclePatrols && !(_submarinePatrolParameters isEqualTo []) ) then -{ - // params["_coords","_noVehiclePatrols","_aiDifficultyLevel","_missionPatrolVehicles",["_useRelativePos",true],["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_vests",blck_vests],["_backpacks",blck_backpacks],["_weaponList",[]],["_sideArms",blck_Pistols], ["_isScubaGroup",false]]; - _temp = [_coords,_vehToSpawn,_aiDifficultyLevel,_submarinePatrolParameters,true,_umsUniforms,_umsHeadgear,_umsVests,[],_umsWeapons,[],isScubaMission] call blck_fnc_spawnMissionVehiclePatrols; - _missionAIVehicles append (_temp select 0); - _blck_AllMissionAI append (_temp select 1); -}; - -#ifdef blck_debugMode -uiSleep 10; -if (blck_debugLevel > 2) then {diag_log "_fnc_missionSpawner (330) vehicle patrols spawned"}; -#endif - -uiSleep delayTime; -if (_spawnCratesTiming isEqualTo "atMissionSpawnGround") then -{ - if !(_missionLootBoxes isEqualTo []) then - { - _crates = [_coords,_missionLootBoxes,_loadCratesTiming, _spawnCratesTiming, "start", _aiDifficultyLevel] call blck_fnc_spawnMissionCrates; - } - else - { - _crates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_crateLoot,_lootCounts]], _loadCratesTiming, _spawnCratesTiming, "start", _aiDifficultyLevel] call blck_fnc_spawnMissionCrates; - }; - - if (blck_cleanUpLootChests) then - { - _objects append _crates; - }; -}; -uiSleep delayTime;; - -#ifdef blck_debugMode -uiSleep 10; -if (blck_debugLevel > 2) then {diag_log "_fnc_missionSpawner (355) loot crate(s) spawned"}; -#endif - -if !(_missionLootVehicles isEqualTo []) then -{ - _temp = [_coords,_missionLootVehicles,_loadCratesTiming,0] call blck_fnc_spawnMissionLootVehicles; - _crates append _temp; -}; -if (_noPara > 0 && (random(1) < _chancePara) && _paraTriggerDistance == 0) then -{ - diag_log format["_fnc_missionSpawner (436): spawning %1 paraunits at mission spawn",_noPara]; - private _paratroops = [_coords,_noPara,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnParaUnits; - if !(isNull _paratroops) then - { - _blck_AllMissionAI append (units _paratroops); - }; - if (random(1) < _chanceLoot) then - { - diag_log format["_fnc_missionSpawner (446): spawning supplemental loot with _chanceLoot = %1",_chanceLoot]; - private _extraCrates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_paraLoot,_paraLootCounts]], "atMissionSpawn","atMissionStartAir", "start", _aiDifficultyLevel] call blck_fnc_spawnMissionCrates; - if (blck_cleanUpLootChests) then - { - _objects append _extraCrates; - }; - }; -}; - -#ifdef blck_debugMode -uiSleep 10; -if (blck_debugLevel > 2) then {diag_log "_fnc_missionSpawner (384) mission loot vehicles spawned"}; -#endif - -private["_missionComplete","_endIfPlayerNear","_endIfAIKilled","_secureAsset","_crateStolen","_locations"]; -_missionComplete = -1; -_startTime = diag_tickTime; - -#ifdef blck_debugMode -uiSleep 10; -if (blck_debugLevel > 2) then {diag_log "_fnc_missionSpawner (393) waiting for mission end contitions to be met"}; -#endif - -switch (_endCondition) do -{ - case "playerNear": {_secureAsset = false; _endIfPlayerNear = true;_endIfAIKilled = false;}; - case "allUnitsKilled": {_secureAsset = false; _endIfPlayerNear = false;_endIfAIKilled = true;}; - case "allKilledOrPlayerNear": {_secureAsset = false; _endIfPlayerNear = true;_endIfAIKilled = true;}; - case "assetSecured": {_secureAsset = true; _endIfPlayerNear = false; _endIfAIKilled = false;}; -}; - -if (blck_showCountAliveAI) then -{ - diag_log format["_missionSpawner(419): updating AI Alive Counts for _markers = %1",_markers]; - [_markers select 1,_markerMissionName,_blck_AllMissionAI] call blck_fnc_updateMarkerAliveCount; - blck_missionLabelMarkers pushBack [_markers select 1,_markerMissionName,_blck_AllMissionAI]; -}; - -_crateStolen = false; -_locations = [_coords]; -private _spawnPara = if (random(1) < _chancePara) then {true} else {false}; -{ - _locations pushback (getPos _x); - _x setVariable["crateSpawnPos", (getPos _x)]; -} forEach _crates; - -private["_minNoAliveForCompletion","_result","_minPercentageKilled"]; -_minNoAliveForCompletion = (count _blck_AllMissionAI) - (round(blck_killPercentage * (count _blck_AllMissionAI))); -if (_secureAsset) then {_minNoAliveForCompletion = _minNoAliveForCompletion + 1}; - -while {_missionComplete isEqualTo -1} do -{ - #ifdef blck_debugMode - if (blck_debugLevel > 3) exitWith {uiSleep blck_triggerLoopCompleteTime;diag_log "_missionSpawner (492) scripted Mission End blck_debugLevel = 3";}; - #endif - - if (_endIfPlayerNear) then - { - if ([_locations,20,true] call blck_fnc_playerInRangeArray) then {_missionComplete = 1}; - }; - - if (_endIfAIKilled) then - { - if (({alive _x} count _blck_AllMissionAI) <= _minNoAliveForCompletion) then {_missionComplete = 1}; - }; - - if (_spawnCratesTiming isEqualTo "atMissionSpawnGround") then - { - { - private _d = _x distance (_x getVariable ["crateSpawnPos",_coords]); - //diag_log format["crate %1 moved %2 at %3",_x,_d,diag_tickTime]; - if (_d > 25) exitWith - { - _missionComplete = 1; - _crateStolen = true; - }; - }forEach _crates; - }; - - if (_secureAsset) then - { - if !(alive _assetSpawned) then - { - _missionComplete = 1; - [_assetSpawned] remoteExec["GMS_fnc_clearAllActions",-2, true]; - } else { - - if (({alive _x} count _blck_AllMissionAI) <= _minNoAliveForCompletion) then - { - if ((_assetSpawned getVariable["blck_unguarded",0]) isEqualTo 0) then - { - _assetSpawned setVariable["blck_unguarded",1,true]; - }; - - if ((_assetSpawned getVariable["blck_AIState",0]) isEqualTo 1) then - { - _missionComplete = 1; - _assetSpawned allowdamage false; - [_assetSpawned] remoteExec["GMS_fnc_clearAllActions",-2, true]; - }; - - }; - }; - }; - if (_spawnPara) then - { - if ([_coords,_paraTriggerDistance,true] call blck_fnc_playerInRange) then - { - _spawnPara = false; // The player gets one try to spawn these. - if (random(1) < _chancePara) then // - { - private _paratroops = [_coords,_noPara,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnParaUnits; - if !(isNull _paratroops) then - { - _blck_AllMissionAI append (units _paratroops); - }; - if (random(1) < _chanceLoot) then - { - private _extraCrates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_paraLoot,_paraLootCounts]], "atMissionSpawn","atMissionStartAir", "start", _aiDifficultyLevel] call blck_fnc_spawnMissionCrates; - if (blck_cleanUpLootChests) then - { - _objects append _extraCrates; - }; - }; - }; - }; - }; - uiSleep 1; -}; - -if (_crateStolen) exitWith -{ - /* - params[ - "_coords", - "_mines", - "_objects", - "_crates", - "_blck_AllMissionAI", - "_endMsg", - "_markers", - "_markerPos", - "_markerName", - "_markerLabel", - ["_endCondition",0], - ["_vehicles",[]], - ["_isScubaMission",false] -]; -*/ - [_coords,_mines,_objects,_crates, _blck_AllMissionAI,"Crate Removed from Mission Site Before Mission Completion: Mission Aborted",_markers,_markerPos,_markerName,_markerLabel, 2] call blck_fnc_endMission; -}; - -if (_spawnCratesTiming in ["atMissionEndGround","atMissionEndAir"]) then -{ - if (!(_secureAsset) || (_secureAsset && (alive _assetSpawned))) then - { - if !(_missionLootBoxes isEqualTo []) then - { - _crates = [_coords,_missionLootBoxes,_loadCratesTiming,_spawnCratesTiming, "end", _aiDifficultyLevel] call blck_fnc_spawnMissionCrates; - } - else - { - _crates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_crateLoot,_lootCounts]], _loadCratesTiming,_spawnCratesTiming, "end", _aiDifficultyLevel] call blck_fnc_spawnMissionCrates; - }; - - #ifdef blck_debugMode - if (blck_debugLevel > 0) then {diag_log format["_fnc_missionSpawner (531): _crates = %1", _crates]}; - #endif - - if (blck_cleanUpLootChests) then - { - _objects append _crates; - }; - - #ifdef blck_debugMode - if (blck_debugLevel > 0) then {diag_log format["[blckeagls] missionSpawner:: (428) Crates Spawned: _cords %1 : _markerName %2 : _aiDifficultyLevel %3 _markerLabel %4",_coords,_markerName,_aiDifficultyLevel,_markerLabel]}; - #endif - }; -}; - - -if (_spawnCratesTiming isEqualTo "atMissionSpawnGround" && _loadCratesTiming isEqualTo "atMissionCompletion") then -{ - if (!(_secureAsset) || (_secureAsset && (alive _assetSpawned))) then - { - { - [_x] call blck_fnc_loadMissionCrate; - } forEach _crates; - }; -}; - -private["_result"]; - - - -if (_secureAsset && (alive _assetSpawned)) then -{ - if (_assetSpawned getVariable["assetType",0] isEqualTo 1) then - { - _assetSpawned setVariable["GMSAnimations",[""],true]; - [_assetSpawned,""] remoteExec["switchMove",-2];; - uiSleep 0.1; - _assetSpawned enableAI "ALL"; - private _newPos = (getPos _assetSpawned) getPos [1000, random(360)]; - (group _assetSpawned) setCurrentWaypoint [group _assetSpawned, 0]; - [group _assetSpawned,0] setWaypointPosition [_newPos,0]; - [group _assetSpawned,0] setWaypointType "MOVE"; - }; - - if (_assetSpawned getVariable["assetType",0] isEqualTo 2) then - { - [_assetSpawned,""] remoteExec["switchMove",-2]; - _assetSpawned setVariable["GMSAnimations",_assetSpawned getVariable["endAnimation",["AidlPercMstpSnonWnonDnon_AI"]],true]; - [_assetSpawned,selectRandom(_assetSpawned getVariable["endAnimation",["AidlPercMstpSnonWnonDnon_AI"]])] remoteExec["switchMove",-2]; - }; -}; -if (_secureAsset && !(alive _assetSpawned)) then -{ -/* params[ - "_coords", - "_mines", - "_objects", - "_crates", - "_blck_AllMissionAI", - "_endMsg", - "_markers", - "_markerPos", - "_markerName", - "_markerLabel", - ["_endCondition",0], - ["_vehicles",[]], - ["_isScubaMission",false] -]; -*/ - [_coords,_mines,_objects,_crates,_blck_AllMissionAI,_assetKilledMsg,_markers,_markerPos,_markerName,_markerLabel, -1] call blck_fnc_endMission; -}; - -if (!(_secureAsset) || (_secureAsset && (alive _assetSpawned))) then -{ - [_coords,_mines,_objects,_crates,_blck_AllMissionAI,_endMsg,_markers,_markerPos,_markerName,_markerLabel, 0] call blck_fnc_endMission; -}; - -#ifdef blck_debugMode -if (blck_debugLevel > 2) then {diag_log format["[blckeagls] missionSpawner:: (507)end of mission: blck_fnc_endMission has returned control to _fnc_missionSpawner"]}; -#endif -diag_log format["_fnc_missionSpawner (643) Mission Completed | _cords %1 : _markerName %2 : _aiDifficultyLevel %3 _markerLabel %4",_coords,_markerName,_aiDifficultyLevel,_markerLabel]; -blck_missionsRun = blck_missionsRun + 1; -diag_log format["_fnc_missionSpawner (644): Total Dyanamic Land and UMS Run = %1", blck_missionsRun]; +_table diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_monitorInitializedMissions.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_monitorInitializedMissions.sqf index 5936a9c..4c6f35d 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_monitorInitializedMissions.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_monitorInitializedMissions.sqf @@ -2,7 +2,7 @@ GMS_fnc_monitorInitializedMissions by Ghostrider-GRG- */ -//diag_log format["fnc_monitorInitializedMissions: time = %1 | count blck_activeMissionsList %2 | blck_activeMissionsList %3",diag_tickTime,count blck_activeMissionsList,blck_activeMissionsList]; + for "_i" from 1 to (count blck_activeMissionsList) do { @@ -10,8 +10,7 @@ for "_i" from 1 to (count blck_activeMissionsList) do // Select a mission category (blue, red, green , etd) private _el = blck_activeMissionsList deleteAt 0; - //diag_log format["fnc_monitorInitializedMissions: _el = %1",_el]; - //blck_activeMissionsList pushBack [_missionCategoryDescriptors,_missionTimeoutAt,_triggered,_spawnPara,_missionData,_missionParameters]; + _el params [ "_missionCategoryDescriptors", // 0 "_missionTimeoutAt", // 1 @@ -20,29 +19,7 @@ for "_i" from 1 to (count blck_activeMissionsList) do "_missionData", // 6 "_missionParameters" // 7 ]; - /* - { - diag_log format["_fnc_monitorInitializedMissions: _el:%1 = %2",_x, _el select _forEachIndex]; - } forEach [ - "_missionCategoryDescriptors", // 0 - "_missionTimeoutAt", // 1 - "_triggered", // 2 - "_spawnPara", // 3 - "_missionData", // 6 - "_missionParameters" // 7 - ]; -*/ -/* - private _missionCategoryDescriptors = [ - _difficulty, - _noMissions, // Max no missions of this category - 0, // Number active - _tMin, // Used to calculate waittime in the future - _tMax, // as above - _waitTime, // time at which a mission should be spawned - _missionsData // - ]; -*/ + #define noActive 2 #define waitTime 5 #define missionData 6 @@ -56,84 +33,65 @@ for "_i" from 1 to (count blck_activeMissionsList) do "_waitTime", // time at which a mission should be spawned "_missionsData" // ]; - /* - { - diag_log format["fnc_monitorInitializeMission: _missionCategoryDescriptors:%1 = %2",_x,_missionCategoryDescriptors select _forEachIndex]; - } forEach [ - "_difficulty", - "_noMissions", // Max no missions of this category - "_noActive", // Number active - "_tMin", // Used to calculate waittime in the future - "_tMax", // as above - "_waitTime", // time at which a mission should be spawned - "_missionsData" // - ]; - */ - #define setMissionData _missionData = [_coords,_mines,_objects,_crates, _blck_AllMissionAI,_assetSpawned,_missionAIVehicles,_mainMarker,_labelMarker]; - //private _missionData = [_coords,_mines,_objects,_crates, _blck_AllMissionAI,_assetSpawned,_missionAIVehicles,_mainMarker,_labelMarker]; + // 0 1 2 3 4 5 6 7 8 - _missionData params ["_coords","_mines","_objects","_crates","_blck_AllMissionAI","_assetSpawned","_missionAIVehicles","_mainMarker","_labelMarker"]; - - /* - { - diag_log format["_fnc_monitorInitializedMissions (79): _missionData:%1 = %2",_x, _missionData select _forEachIndex]; - } forEach ["_coords","_mines","_objects","_crates","_blck_AllMissionAI","_assetSpawned","_missionAIVehicles","_mainMarker","_labelMarker"]; - */ + _missionData params ["_coords","_mines","_objects","_crates","_blck_AllMissionAI","_assetSpawned","_missionAIVehicles","_markers"]; - _missionParameters params[ - "_defaultMissionLocations", - "_crateLoot", // 0 - "_lootCounts", // 1 - "_startMsg", // 2 - "_endMsg", // 3 - "_markerMissionName", - "_markerType", - "_markerColor", - "_markerSize", - "_markerBrush", - "_missionLandscapeMode", - "_garrisonedBuildings_BuildingPosnSystem", - "_garrisonedBuilding_ATLsystem", - "_missionLandscape", - "_missionLootBoxes", - "_missionLootVehicles", - "_missionPatrolVehicles", - "_submarinePatrolParameters", - "_airPatrols", - "_noVehiclePatrols", - "_vehicleCrewCount", - "_missionEmplacedWeapons", - "_noEmplacedToSpawn", - "_missionLootVehicles", - "_useMines", - "_minNoAI", - "_maxNoAI", - "_noAIGroups", - "_missionGroups", - "_scubaGroupParameters", - "_hostageConfig", - "_enemyLeaderConfig", - "_uniforms", - "_headgear", - "_vests", - "_backpacks", - "_weaponList", - "_sideArms", - "_chanceHeliPatrol", - "_noChoppers", - "_missionHelis", - "_chancePara", - "_noPara", - "_paraTriggerDistance", - "_paraSkill", - "_chanceLoot", - "_paraLoot", - "_paraLootCounts", - "_spawnCratesTiming", - "_loadCratesTiming", - "_endCondition", - "_isScubaMission" - ]; +_missionParameters params[ + "_markerName", + "_markerMissionName", + "_endMsg", + "_startMsg", + "_defaultMissionLocations", + "_crateLoot", + "_lootCounts", + "_markerType", + "_markerColor", + "_markerSize", + "_markerBrush", + "_missionLandscapeMode", + "_garrisonedBuildings_BuildingPosnSystem", + "_garrisonedBuilding_ATLsystem", + "_missionLandscape", + "_missionLootBoxes", + "_missionLootVehicles", + "_missionPatrolVehicles", + "_submarinePatrolParameters", + "_airPatrols", + "_noVehiclePatrols", + "_vehicleCrewCount", + "_missionEmplacedWeapons", + "_noEmplacedWeapons", + "_useMines", + "_minNoAI", + "_maxNoAI", + "_noAIGroups", + "_missionGroups", + "_scubaGroupParameters", + "_hostageConfig", + "_enemyLeaderConfig", + "_assetKilledMsg", + "_uniforms", + "_headgear", + "_vests", + "_backpacks", + "_weaponList", + "_sideArms", + "_chanceHeliPatrol", + "_noChoppers", + "_missionHelis", + "_chancePara", + "_noPara", + "_paraTriggerDistance", + "_paraSkill", + "_chanceLoot", + "_paraLoot", + "_paraLootCounts", + "_spawnCratesTiming", + "_loadCratesTiming", + "_endCondition", + "_isScubaMission" +]; private _playerInRange = [_coords, blck_TriggerDistance, false] call blck_fnc_playerInRange; #define delayTime 1 @@ -157,34 +115,25 @@ for "_i" from 1 to (count blck_activeMissionsList) do _monitorAction = 1; }; }; - //diag_log format["_monitorInitializedMissions(149): _triggered = %1 | _monitorAction = %2",_triggered,_monitorAction]; - private _blck_localMissionMarker = [_markerType,_coords,"","",_markerColor,_markerType]; + switch (_monitorAction) do { // Handle Timeout case -1: { - diag_log format["_fnc_monitorInitializedMissions: mission timed out: %1",_el]; + [format["_fnc_monitorInitializedMissions: mission timed out: %1",_el]] call blck_fnc_log; _missionCategoryDescriptors set[noActive, _noActive - 1]; - // params ["_mines","_objects","_crates","_blck_AllMissionAI","_endMsg","_mainMarker","_labelMarker","_markerClass","_coords",["_endCondition",0]] - [_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_mainMarker,_labelMarker,_markerType,_coords,1] call blck_fnc_endMission; + [_coords,_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_markers,markerPos (_markers select 1),_markerName,_markerMissionName, 1] call blck_fnc_endMission; }; // Handle mission waiting to be triggerd and player is within the range to trigger case 0: { - if (blck_debugLevel >= 3) then - { - diag_log format["_fnc_moniorInitializedMissions: blck_debugLevel == 3, spawning objects for mission %1",_el]; - } else { - //diag_log format["_fnc_moniorInitializedMissions: mission TRIGGERED by player: spawning objects for mission %1",_el]; - }; - #define triggered 2 #define timedOut 1 _el set[triggered,1]; _el set[timedOut,diag_tickTime + 240]; - //diag_log format["_fnc_monitorInitializedMissions (167): spawning smoking wrecks as needed: blck_smokeAtMissions == %1",blck_SmokeAtMissions]; + private["_temp"]; if (blck_SmokeAtMissions select 0) then // spawn a fire and smoke near the crate { @@ -196,14 +145,12 @@ for "_i" from 1 to (count blck_activeMissionsList) do }; }; - //diag_log format["_fnc_monitorInitializedMissions (193): spawning mines as needed: _useMines == %1",_useMines]; if (_useMines) then { _mines = [_coords] call blck_fnc_spawnMines; uiSleep delayTime; }; - //diag_log format["_fnc_monitorInitializedMissions (200): spawning landscape as needed: _missionLandscapeMode = %1 | _missionLandscape = %2",_missionLandscapeMode,_missionLandscape]; if (_missionLandscapeMode isEqualTo "random") then { _temp = [_coords,_missionLandscape, 3, 15, 2] call blck_fnc_spawnRandomLandscape; @@ -215,31 +162,24 @@ for "_i" from 1 to (count blck_activeMissionsList) do uiSleep delayTime; try { - - //diag_log format["_fnc_monitorInitializedMissions (213): spawning AI Patrols as needed: _missionGroups == %1",_missionGroups]; _temp = [_coords, _minNoAI,_maxNoAI,_noAIGroups,_missionGroups,_difficulty,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnMissionAI; _temp params["_ai","_abort"]; if (_abort) throw 1; _blck_AllMissionAI append (_ai); uiSleep delayTime; - //diag_log format["_fnc_monitorInitializedMissions (220): spawning hostages as needed: _hostageConfig == %1",_hostageConfig]; - //private ["_assetSpawned"]; if !(_hostageConfig isEqualTo []) then { _temp = [_coords,_hostageConfig] call blck_fnc_spawnHostage; if (_temp isEqualTo grpNull) then {throw 1} else { _assetSpawned = _temp select 0; - // 0 1 2 3 4 5 6 7 - // _missionData params ["_coords","_mines","_objects","_crates","_blck_AllMissionAI","_assetSpawned","_mainMarker","_labelMarker"]; _missionData set[5,_assetSpawned]; _objects pushBack (_temp select 1); _blck_AllMissionAI pushBack _assetSpawned; }; }; - //diag_log format["_fnc_monitorInitializedMissions (234): spawning leaders as needed: _enemyLeaderConfig == %1",_enemyLeaderConfig]; if !(_enemyLeaderConfig isEqualTo []) then { private _temp = [_coords,_enemyLeaderConfig] call blck_fnc_spawnLeader; @@ -252,7 +192,6 @@ for "_i" from 1 to (count blck_activeMissionsList) do }; }; - //diag_log format["_fnc_monitorInitializedMissions (248): spawning chopers as needed: _noChoppers = %1 | _chanceHeliPatrol = %2 | _missionHelis = %3",_noChoppers,_chanceHeliPatrol,_missionHelis]; private _noChoppers = [_noChoppers] call blck_fnc_getNumberFromRange; if (_noChoppers > 0) then { @@ -276,7 +215,6 @@ for "_i" from 1 to (count blck_activeMissionsList) do }; uisleep 3; - //diag_log format["_fnc_monitorInitializedMissions (271): spawning garrisons using ATL coordinate system as needed: _garrisonedBuilding_ATLsystem == %1",_garrisonedBuilding_ATLsystem]; if (count _garrisonedBuilding_ATLsystem > 0) then // Note that there is no error checking here for nulGroups { private _temp = [_coords, _garrisonedBuilding_ATLsystem, _difficulty,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_garrisonBuilding_ATLsystem; @@ -290,7 +228,6 @@ for "_i" from 1 to (count blck_activeMissionsList) do }; uiSleep 3; - //diag_log format["_fnc_monitorInitializedMissions (285): spawning garrisons using relative coordinate system as needed: _garrisonedBuildings_BuildingPosnSystem == %1",_garrisonedBuildings_BuildingPosnSystem]; if (count _garrisonedBuildings_BuildingPosnSystem > 0) then { private _temp = [_coords, _garrisonedBuildings_BuildingPosnSystem, _difficulty,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_garrisonBuilding_RelPosSystem; @@ -305,13 +242,12 @@ for "_i" from 1 to (count blck_activeMissionsList) do uiSleep 15; private _userelativepos = true; - //diag_log format["_fnc_monitorInitializedMissions (300): spawning static turrets needed: _noEmplacedToSpawn == %1 | _missionEmplacedWeapons = %2",_noEmplacedToSpawn,_missionEmplacedWeapons]; - private _noEmplacedToSpawn = [_noEmplacedToSpawn] call blck_fnc_getNumberFromRange; - if (blck_useStatic && ((_noEmplacedToSpawn > 0) || count _missionEmplacedWeapons > 0)) then + private _noEmplacedWeapons = [_noEmplacedWeapons] call blck_fnc_getNumberFromRange; + if (blck_useStatic && ((_noEmplacedWeapons > 0) || count _missionEmplacedWeapons > 0)) then // TODO: add error checks for grpNull to the emplaced weapon spawner { - private _temp = [_coords,_missionEmplacedWeapons,_userelativepos,_noEmplacedToSpawn,_difficulty,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnEmplacedWeaponArray; + private _temp = [_coords,_missionEmplacedWeapons,_userelativepos,_noEmplacedWeapons,_difficulty,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnEmplacedWeaponArray; if (_temp isEqualTo grpNull) then {throw 1} else { _objects append (_temp select 0); @@ -320,7 +256,6 @@ for "_i" from 1 to (count blck_activeMissionsList) do }; uisleep 10; - //diag_log format["_fnc_monitorInitializedMissions (316): spawning patrol vehicles as needed: _noVehiclePatrols == %1 | _missionPatrolVehicles = %2",_noVehiclePatrols,_missionPatrolVehicles]; private _noVehiclePatrols = [_noVehiclePatrols] call blck_fnc_getNumberFromRange; if (blck_useVehiclePatrols && ((_noVehiclePatrols > 0) || count _missionPatrolVehicles > 0)) then { @@ -357,21 +292,20 @@ for "_i" from 1 to (count blck_activeMissionsList) do if (blck_showCountAliveAI) then { - [_mainMarker,_labelMarker,_markerMissionName,_blck_AllMissionAI] call blck_fnc_updateMarkerAliveCount; + blck_missionLabelMarkers pushBack [_markers select 1,_markerMissionName,_blck_AllMissionAI]; }; + { _x setVariable["crateSpawnPos", (getPos _x)]; } forEach _crates; private _spawnPara = if (random(1) < _chancePara) then {true} else {false}; - setMissionData // code defined above - //{diag_log format["_monotirInitializedMissions:(371) _missiondata %1 = %2",_forEachIndex,_x]} forEach _missionData; + _missionData = [_coords,_mines,_objects,_crates, _blck_AllMissionAI,_assetSpawned,_missionAIVehicles,_markers]; _el set[missionData, _missionData]; // Everything spawned withouth serous errors so lets keep the mission active for future monitoring blck_activeMissionsList pushBack _el; - //diag_log format["_fnc_monitorInitializedMissions (366): all objects, men and vehicles spawened, blck_activeMissionsList= %1", blck_activeMissionsList]; } catch @@ -379,20 +313,21 @@ for "_i" from 1 to (count blck_activeMissionsList) do if (_exception isEqualTo 1) then { _missionCategoryDescriptors set[noActive, _noActive - 1]; - // params ["_mines","_objects","_crates","_blck_AllMissionAI","_endMsg","_mainMarker","_labelMarker","_markerClass","_coords",["_endCondition",0]] - [_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_mainMarker,_labelMarker,_markerType,_coords, 1] call blck_fnc_endMission; - diag_log format["[blkeagls] grpNull returned by one or more critical functions, mission spawning aborted!"]; + [_coords,_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_markers,markerPos (_markers select 1),_markerName,_markerMissionName, 1] call blck_fnc_endMission; + ["Critial Error returned by one or more critical functions, mission spawning aborted!",'error'] call blck_fnc_log; }; }; }; case 1: { - //diag_log format["_fnc_moniorInitializedMissions(398): evaluating status of mission %1 | _missionTimeoutAt = %2 | time = %3 | _crates = %4",_el,_missionTimeoutAt,diag_tickTime,_crates]; private _missionComplete = -1; - private _crateStolen = -1; private ["_secureAsset","_endIfPlayerNear","_endIfAIKilled"]; + /* + "_endCondition", + */ + switch (_endCondition) do { case "playerNear": {_secureAsset = false; _endIfPlayerNear = true;_endIfAIKilled = false;}; @@ -400,49 +335,22 @@ for "_i" from 1 to (count blck_activeMissionsList) do case "allKilledOrPlayerNear": {_secureAsset = false; _endIfPlayerNear = true;_endIfAIKilled = true;}; case "assetSecured": {_secureAsset = true; _endIfPlayerNear = false; _endIfAIKilled = false;}; }; - if (blck_showCountAliveAI) then - { - [_mainMarker,_labelMarker,_markerMissionName,_blck_AllMissionAI] call blck_fnc_updateMarkerAliveCount; - }; + try { - if (blck_debugLevel == 5) throw 1; - if (blck_debugLevel == 6) then { - diag_log format["_fnc_monitorInitializedMissions: mission ended, condition CRATE MOVED, mission %1",_el]; - throw 2; - }; - if (blck_debugLevel == 7) then - { - diag_log format["_fnc_monitorInitializedMissions: mission ended, condition simulated death of asset, mission %1",_el]; - throw 3; - }; private _playerIsNear = [_crates,20,true] call blck_fnc_playerInRangeArray; private _minNoAliveForCompletion = (count _blck_AllMissionAI) - (round(blck_killPercentage * (count _blck_AllMissionAI))); private _aiKilled = if (({alive _x} count _blck_AllMissionAI) <= _minNoAliveForCompletion) then {true} else {false}; // mission complete - //diag_log format["_fnc_monitorInitializedMissions (404): _playerIsNear = %1 | _aiKilled = %2 | _crates = %3",_playerIsNear,_aiKilled,_crates]; + if (_endIfPlayerNear) then { - //diag_log format["_fnc_monitorInitializedMissions: mission ended, condition player near, mission %1",_el]; if (_playerIsNear) throw 1; // mission complete }; if (_endIfAIKilled) then { - //diag_log format["_fnc_monitorInitializedMissions: mission ended, condition AI Killed, mission %1",_el]; if (_aiKilled) throw 1; }; - if (_spawnCratesTiming isEqualTo "atMissionSpawnGround") then - { - { - private _d = _x distance (_x getVariable ["crateSpawnPos",_coords]); - if (_d > 25) then - { - //diag_log format["_fnc_monitorInitializedMissions: mission ended, condition CRATE MOVED, mission %1",_el]; - throw 2; - }; // crate moved illegally - }forEach _crates; - }; - if (_spawnPara) then { if ([_coords,_paraTriggerDistance,true] call blck_fnc_playerInRange) then @@ -472,21 +380,18 @@ for "_i" from 1 to (count blck_activeMissionsList) do { if !(alive _assetSpawned) then { - diag_log format["_line 498 asset %1 killed throwing error with code 3",_assetSpawned]; throw 3; } else { - diag_log format["line 501: asset alive, count _blck_AllMissionAI = %1",count _blck_AllMissionAI]; - if (({alive _x} count _blck_AllMissionAI) <= _minNoAliveForCompletion) then + + if (({alive _x} count _blck_AllMissionAI) <= (_minNoAliveForCompletion + 1)) then { if ((_assetSpawned getVariable["blck_unguarded",0]) isEqualTo 0) then { _assetSpawned setVariable["blck_unguarded",1,true]; - diag_log format["_assetSpawned: blck_unguarded updated to 1 for asset %1",_assetSpawned]; }; if ((_assetSpawned getVariable["blck_AIState",0]) isEqualTo 1) then { - diag_log format["_assetSpawned: blck_AIState updated to 1 for asset %1",_assetSpawned]; _assetSpawned allowdamage false; [_assetSpawned] remoteExec["GMS_fnc_clearAllActions",-2, true]; throw 1; @@ -495,13 +400,15 @@ for "_i" from 1 to (count blck_activeMissionsList) do }; }; - if (blck_debugLevel > 3 && diag_tickTime > _missionTimeoutAt) then + private _moved = false; + if ((_spawnCratesTiming isEqualTo "atMissionSpawnGround") && blck_crateMoveAllowed) then { - diag_log format["_monitoInitializeMissions: debugLevel == 3, mission triggered, timout condition reached, ending mission"]; - throw 1; - + { + if ( _x distance (_x getVariable ["crateSpawnPos", (getPos _x)]) > max_distance_crate_moved_uncompleted_mission) throw 2; + } forEach _crates; }; - setMissionData // Code defined above + + _missionData = [_coords,_mines,_objects,_crates, _blck_AllMissionAI,_assetSpawned,_missionAIVehicles,_markers]; _el set[missionData, _missionData]; @@ -511,7 +418,6 @@ for "_i" from 1 to (count blck_activeMissionsList) do catch // catch all conditions that cause the mission to end. { - //diag_log format["_fnc_monitorInitializeMissions (507): _exception = %1",_exception]; switch (_exception) do { case 1: { // Normal Mission End @@ -545,8 +451,6 @@ for "_i" from 1 to (count blck_activeMissionsList) do }; }; - _blck_localMissionMarker set [2, _markerMissionName]; - if (_secureAsset && (alive _assetSpawned)) then { if (_assetSpawned getVariable["assetType",0] isEqualTo 1) then @@ -568,54 +472,22 @@ for "_i" from 1 to (count blck_activeMissionsList) do [_assetSpawned,selectRandom(_assetSpawned getVariable["endAnimation",["AidlPercMstpSnonWnonDnon_AI"]])] remoteExec["switchMove",-2]; }; }; - diag_log format["_fnc_monitorInitializedMissions (430) calling <_fnc_endMission> | _cords %1 : _markerType %2 : _difficulty %3 _markerMissionName %4",_coords,_markerType,_difficulty,_markerMissionName]; - // params ["_mines","_objects","_crates","_blck_AllMissionAI","_endMsg","_mainMarker","_labelMarker","_markerClass","_coords",["_endCondition",0]]; - [_mines,_objects,_crates,_blck_AllMissionAI,_endMsg,_mainMarker,_labelMarker,_markerType,_coords, 0] call blck_fnc_endMission; - //diag_log format["_fnc_monitorInitializedMissions (430) Mission Completed | _cords %1 : _markerType %2 : _difficulty %3 _markerMissionName %4",_coords,_markerType,_difficulty,_markerMissionName]; + [_coords,_mines,_objects,_crates,_blck_AllMissionAI,_endMsg,_markers,markerPos (_markers select 1),_markerName,_markerMissionName, _exception] call blck_fnc_endMission; + _waitTime = diag_tickTime + _tMin + random(_tMax - _tMin); - /* - _missionCategoryDescriptors params [ - //"_marker", - "_difficulty", 0 - "_noMissions", 1 // Max no missions of this category - "_noActive", 2 // Number active - //"_timesSpawned", // times spawned, useful for keeping unique markers - "_tMin", 3 // Used to calculate waittime in the future - "_tMax", 4 // as above - "_waitTime", 5 // time at which a mission should be spawned - "_missionsData" // - ]; - */ _missionCategoryDescriptors set [noActive,_noActive - 1]; _missionCategoryDescriptors set [waitTime,_waitTime]; - /* - { - diag_log format["_fnc_monitorInitializedMissions (570): _missionCategoryDescriptors parameter %1 = %2",_x,_missionCategoryDescriptors select _forEachIndex]; - } forEach [ - //"_marker", - "_difficulty", - "_noMissions", // Max no missions of this category - "_noActive", // Number active - //"_timesSpawned", // times spawned, useful for keeping unique markers - "_tMin", // Used to calculate waittime in the future - "_tMax", // as above - "_waitTime", // time at which a mission should be spawned - "_missionsData" // - ]; - */ }; case 2: { // Abort, crate moved. - //[_mines,_objects,_crates,_blck_AllMissionAI,_endMsg,_mainMarker,_labelMarker,_markerType,_coords, 0] - [_mines,_objects,_crates, _blck_AllMissionAI,"Crate Removed from Mission Site Before Mission Completion: Mission Aborted",_mainMarker,_labelMarker,_markerType,_coords,2] call blck_fnc_endMission; _endMsg = "Crate Removed from Mission Site Before Mission Completion: Mission Aborted"; - [_mines,_objects,_crates,_blck_AllMissionAI,_endMsg,_mainMarker,_labelMarker,_markerType,_coords, 0] call blck_fnc_endMission; + [_coords,_mines,_objects,_crates, _blck_AllMissionAI,"Crate Removed from Mission Site Before Mission Completion: Mission Aborted",_markers,markerPos (_markers select 1),_markerName,_markerMissionName, _exception] call blck_fnc_endMission; }; case 3: { // Abort, key asset killed - diag_log format["Asset Killed, aborting mission"]; - #define missionAbort 1 - //[_mines,_objects,_crates,_blck_AllMissionAI,_endMsg,_mainMarker,_labelMarker,_markerType,_coords, 0] - [_mines,_objects,_crates,_blck_AllMissionAI,_endMsg,_mainMarker,_labelMarker,_markerType,_coords, missionAbort] call blck_fnc_endMission; + [_coords,_mines,_objects,_crates,_blck_AllMissionAI,_assetKilledMsg,_markers,markerPos (_markers select 1),_markerName,_markerMissionName, _exception] call blck_fnc_endMission; }; + case 4: { // Reserved for grpNull errors in the future + + }; }; }; }; @@ -624,4 +496,4 @@ for "_i" from 1 to (count blck_activeMissionsList) do blck_activeMissionsList pushBack _el; }; }; -}; \ No newline at end of file +}; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_selectAISidearms.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_selectAISidearms.sqf index b73689d..09b8360 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_selectAISidearms.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_selectAISidearms.sqf @@ -12,7 +12,7 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; params["_aiDifficultyLevel"]; //[["_aiDifficultyLevel",selectRandom["Red","Green"]]]; -//diag_log format["_fnc_selectAISidearms: _aiDifficultyLevel = %1",_aiDifficultyLevel]; + private["_sideArms"]; switch (toLower (_aiDifficultyLevel)) do { diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_selectVehicleCrewCount.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_selectVehicleCrewCount.sqf index 1f34079..a34351b 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_selectVehicleCrewCount.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_selectVehicleCrewCount.sqf @@ -19,5 +19,5 @@ switch (toLower(_diff)) do case "green": {_count = blck_vehCrew_green}; case "orange": {_count = blck_vehCrew_orange}; }; -///diag_log format["_fnc_selectVehicleCrewCount: _count set to %1",_count]; + _count diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_signalEnd.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_signalEnd.sqf index 99f19b9..cd6e4ff 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_signalEnd.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_signalEnd.sqf @@ -16,7 +16,7 @@ private ["_start","_maxHeight","_smokeShell","_light","_lightSource"]; params[["_crate",objNull],["_time",60]]; if (isNull _crate) exitWith {}; _start = diag_tickTime; -//diag_log format["signalEnd.sqf: _this = %1, _crate = %2",_this, _crate]; + _smokeShell = selectRandom ["SmokeShellOrange","SmokeShellBlue","SmokeShellPurple","SmokeShellRed","SmokeShellGreen","SmokeShellYellow"]; _lightSource = selectRandom ["Chemlight_green","Chemlight_red","Chemlight_yellow","Chemlight_blue"]; _light = objNull; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_monitorGarrisons_relPos.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_monitorGarrisons_relPos.sqf index af99c94..ef1eb54 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_monitorGarrisons_relPos.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_monitorGarrisons_relPos.sqf @@ -11,7 +11,7 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; private["_mode","_sm_groups","_pos","_element"]; if (blck_fnc_sm_spawnBuildingGarrison_relPos isEqualTo []) exitWith {}; -_sm_groups = +blcl_sm_garrisonBuilding_relPos; +_sm_groups = +blck_sm_garrisonBuilding_relPos; { _x params["_groupParameters","_group","_groupSpawned","_timesSpawned","_respawnAt"]; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnBuildingGarrisonASL.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnBuildingGarrisonASL.sqf index 4c7241b..4735b73 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnBuildingGarrisonASL.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnBuildingGarrisonASL.sqf @@ -1,11 +1,10 @@ params["_building","_aiDifficultyLevel","_statics","_units"]; -//diag_log format["_fnc_sm_spawnBuildingGarrisonASL: handling _building = %1 | at location = %2",_building,position _building]; + private _group = [blck_AI_Side,true] call blck_fnc_createGroup; if !(isNull _group) then { - //params["_building","_group","_statics","_men","_aiDifficultyLevel","_uniforms","_headGear","_vests","_backpacks",["_launcher","none"],"_weaponList","_sideArms"]; [_building,_group,_statics,_units,_aiDifficultyLevel] call blck_fnc_spawnGarrisonInsideBuilding_ATL; }; _group diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnEmplaced.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnEmplaced.sqf index 27b98fc..5d2efce 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnEmplaced.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnEmplaced.sqf @@ -19,38 +19,28 @@ _units = []; _abort = false; _pos = []; -//diag_log format["_sm_spawnEmplaced :: _missionEmplacedWeapons = %1",_missionEmplacedWeapons]; // Define _missionEmplacedWeapons if not already configured. if (_missionEmplacedWeapons isEqualTo []) then { _missionEmplacedWeaponPositions = [_coords,_noEmplacedWeapons,35,50] call blck_fnc_findPositionsAlongARadius; { _static = selectRandom blck_staticWeapons; - //diag_log format["_fnc_spawnEmplacedWeaponArray: creating spawn element [%1,%2]",_static,_x]; _missionEmplacedWeapons pushback [_static,_coords vectorAdd _x,_aiDifficultyLevel]; - //diag_log format["_fnc_spawnEmplacedWeaponArray: _mi updated to %1",_missionEmplacedWeapons]; } forEach _missionEmplacedWeaponPositions; }; -//diag_log format["_sm_spawnEmplaced:: _missionEmplacedWeapons = %1",_missionEmplacedWeapons]; + { _wepnClassName = _x select 0; _pos = _x select 1; _difficulty = _x select 2; - // params["_pos", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], "_center", ["_minDist",20], ["_maxDist",35], ["_uniforms",blck_SkinList], ["_headGear",blck_headgear] ]; private _empGroup = [blck_AI_Side,true] call blck_fnc_createGroup; if !(_empGroup) then { [_empGroup,_pos,1,1,_difficulty,_pos,1,2,_uniforms,_headGear,false] call blck_fnc_spawnGroup; _empGroup setcombatmode "RED"; _empGroup setBehaviour "COMBAT"; - // // params["_pos","_minDis","_maxDis","_group",["_mode","random"],["_wpPatrolMode","SAFE"],["_soldierType","null"],["_patrolRadius",30],["_wpTimeout",[5.0,7.5,10]]]; - // Not sure of the value of giving waypoints here - //[_pos,0.01,0.02,_empGroup,"random","SAD","emplaced"] spawn blck_fnc_setupWaypoints; - //if (isNull _empGroup) exitWith {_abort = _true}; - _wep = [_wepnClassName,[0,0,0],false] call blck_fnc_spawnVehicle; - //_empGroup setVariable["groupVehicle",_wep]; - //_wep setVariable["vehicleGroup",_empGroup]; + _wep = [_wepnClassName,[0,0,0],"NONE",0] call blck_fnc_spawnVehicle; _wep setVariable["GRG_vehType","emplaced"]; _wep setPosATL _pos; [_wep,false] call blck_fnc_configureMissionVehicle; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnEmplaceds.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnEmplaceds.sqf index e262077..4018aac 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnEmplaceds.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnEmplaceds.sqf @@ -19,34 +19,24 @@ _units = []; _abort = false; _pos = []; -//diag_log format["_sm_spawnEmplaced :: _missionEmplacedWeapons = %1",_missionEmplacedWeapons]; // Define _missionEmplacedWeapons if not already configured. if (_missionEmplacedWeapons isEqualTo []) then { _missionEmplacedWeaponPositions = [_coords,_noEmplacedWeapons,35,50] call blck_fnc_findPositionsAlongARadius; { _static = selectRandom blck_staticWeapons; - //diag_log format["_fnc_spawnEmplacedWeaponArray: creating spawn element [%1,%2]",_static,_x]; _missionEmplacedWeapons pushback [_static,_coords vectorAdd _x,_aiDifficultyLevel]; - //diag_log format["_fnc_spawnEmplacedWeaponArray: _mi updated to %1",_missionEmplacedWeapons]; } forEach _missionEmplacedWeaponPositions; }; -//diag_log format["_sm_spawnEmplaced:: _missionEmplacedWeapons = %1",_missionEmplacedWeapons]; + { _wepnClassName = _x select 0; _pos = _x select 1; _difficulty = _x select 2; - - /// params["_pos", "_center", _numai1, _numai2, _skillLevel, _minDist, _maxDist, _configureWaypoints, _uniforms, _headGear,_vests,_backpacks,_weaponList,_sideArms, _scuba ]; __empGroup = [_pos,_pos,1,1,_difficulty,1,2,false,_uniforms,_headGear] call blck_fnc_spawnGroup; _empGroup setcombatmode "RED"; _empGroup setBehaviour "COMBAT"; - // Not sure of the value of giving waypoints here. - //[_pos,0.01,0.02,_empGroup,"random","SAD","emplaced"] spawn blck_fnc_setupWaypoints; - //if (isNull _empGroup) exitWith {_abort = _true}; - _wep = [_wepnClassName,[0,0,0],false] call blck_fnc_spawnVehicle; - //_empGroup setVariable["groupVehicle",_wep]; - //_wep setVariable["vehicleGroup",_empGroup]; + _wep = [_wepnClassName,[0,0,0]] call blck_fnc_spawnVehicle; _wep setVariable["GRG_vehType","emplaced"]; _wep setPosATL _pos; [_wep,false] call blck_fnc_configureMissionVehicle; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnInfantryPatrols.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnInfantryPatrols.sqf index b78771b..aa59f9d 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnInfantryPatrols.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnInfantryPatrols.sqf @@ -27,13 +27,9 @@ _backpacks = [_aiDifficultyLevel] call blck_fnc_selectAIBackpacks; if !(_patrols isEqualTo []) then { { - //diag_log format["_sm_spawnInfantryPatrols.sqf:: _x = %1",_x]; // Use the pre-defined spawn positions and other parameters for each group. - // [[22819.4,16929.5,5.33892],"red",4, 75] _x params ["_pos","_difficulty","_noAI","_patrolRadius"]; private _group = [blck_AI_Side,true] call blck_fnc_createGroup; - // params[["_group","Error"],"_pos", "_center", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], ["_minDist",30], ["_maxDist",45],["_configureWaypoints",true], ["_uniforms",[]], ["_headGear",[]],["_vests",[]],["_backpacks",[]], - // ["_weaponList",[]],["_sideArms",[]], ["_scuba",false],["_patrolRadius",30]]; #define setupWaypoints true if !(isNull _group) then { diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnLootVehicles.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnLootVehicles.sqf index 71984ef..5c52919 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnLootVehicles.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnLootVehicles.sqf @@ -16,7 +16,7 @@ params["_vehicleDescriptors","_coords"]; { // data within the descriptor for each loot vehicle is organized as follows (not that the _allowDamageSim is included just for backward compatibilty but is not used) _x params["_vehcleClassName","_posATL","_vectorDirUp","_allowDamageSim","_loot","_lootCounts"]; - private _veh = [_vehcleClassName,_posATL] call blck_fnc_spawnVehicle; + private _veh = [_vehcleClassName,_posATL,"NONE",30] call blck_fnc_spawnVehicle; [_veh, _loot,_lootCounts] call blck_fnc_fillBoxes; } forEach _vehicleDescriptors; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnMission.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnMission.sqf index e359772..72fcdd0 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnMission.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnMission.sqf @@ -18,27 +18,18 @@ uiSleep 10; // Let the objects 'settle' before placing anything on or around the // Spawn Air Patrols -// params["_airPatrols","_noAirPatrols","_heliTypes","_center","_difficulty","_uniforms","_headGear"]; [_airPatrols,_noAirPatrols,_aircraftTypes,_missionCenter,_difficulty,_uniforms,_headgear,_weapons] call blck_fnc_sm_spawnAirPatrols; -//uiSleep 1; // Spawn Vehicle Patrols -// params["_coords","_noVehiclePatrols","_vehiclePatrolSpawns","_aiDifficultyLevel","_uniforms","_headGear",["_missionType","unspecified"]]; [_missionCenter,_noVehiclePatrols,_vehiclePatrolParameters,_difficulty,_uniforms,_headGear] call blck_fnc_sm_spawnVehiclePatrols; -//uiSleep 1; - // spawn infantry -// params["_patrols","_coords",["_minNoAI",3],["_maxNoAI",6],["_aiDifficultyLevel","red"],["_weapons",blck_WeaponList_Orange],["_uniforms",blck_SkinList],["_headGear",blck_BanditHeadgear]]; [_aiGroupParameters, _missionCenter,_minNoAI,_maxNoAI,_difficulty,_weapons,_uniforms,_headGear] call blck_fnc_sm_spawnInfantryPatrols; -//uiSleep 1; // spawn loot vehicles -// params["_objects","_coords","_loot","_lootCounts"]; [_missionLootVehicles,_missionCenter,_crateLoot,_lootCounts] call blck_fnc_sm_spawnLootContainers; // Spawn static weapons -// params["_missionEmplacedWeapons","_noEmplacedWeapons","_aiDifficultyLevel","_coords","_uniforms","_headGear"]; [_missionEmplacedWeapons,_noEmplacedWeapons,_difficulty,_missionCenter,_uniforms,_headGear] call blck_fnc_sm_spawnEmplaceds; // spawn loot chests @@ -47,5 +38,4 @@ uiSleep 10; // Let the objects 'settle' before placing anything on or around the _blck_localMissionMarker = ["",_missionCenter,"","",_markerColor,_markerType]; [_blck_localMissionMarker] call blck_fnc_spawnMarker; -diag_log format["[blckeagls] Static Mission Spawner: Mission %1 spawned",_mission]; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnVehiclePatrols.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnVehiclePatrols.sqf index 270f138..27f5f31 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnVehiclePatrols.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnVehiclePatrols.sqf @@ -12,16 +12,15 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; params["_coords","_noVehiclePatrols","_vehiclePatrolSpawns","_aiDifficultyLevel"]; -//diag_log format["_sm_spawnVehiclePatrols:: _vehiclePatrolSpawns = %1",_vehiclePatrolSpawns]; -private["_vehGroup","_patrolVehicle","_missionAI","_missiongroups","_vehicles","_return","_vehiclePatrolSpawns","_randomVehicle","_return","_abort"]; -private ["_weaponList","_sideArms","_uniforms","_headgear","_vests","_backpacks"]; + +private["_vehGroup","_patrolVehicle","_missionAI","_missiongroups","_vehicles","_return","_vehiclePatrolSpawns","_randomVehicle","_return","_abort", + "_weaponList","_sideArms","_uniforms","_headgear","_vests","_backpacks"]; if (_vehiclePatrolSpawns isEqualTo []) then { private["_spawnPoints","_vehType"]; _spawnPoints = [_coords,_noVehiclePatrols,75,100] call blck_fnc_findPositionsAlongARadius; { - // ["Vehicle Class Name", position[x,y,z], AI Skill [blue, red, green, orange],patrol radius [0 for static units], respawn time [seconds]] #define vehiclePatrolRadius 150 #define vehicleRespawnTime 900 _vehType = selectRandom blck_AIPatrolVehicles; @@ -48,6 +47,7 @@ if (_vehiclePatrolSpawns isEqualTo []) then #define useWaypoints true _patrolVehicle = [_spawnPos,_spawnPos,_vehicle,_patrolRadius,_patrolRadius,_vehGroup,useWaypoints,[difficulty] call blck_fnc_selectVehicleCrewCount,_patrolRadius] call blck_fnc_spawnVehiclePatrol; // Check whether we should pass the group; looks like we should. + }; } forEach _vehiclePatrolSpawns; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_staticPatrolMonitor.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_staticPatrolMonitor.sqf index be5a3ee..9570b6b 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_staticPatrolMonitor.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_staticPatrolMonitor.sqf @@ -11,7 +11,6 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//diag_log format["_fnc_staticPatrolMonitor called at %1",diag_tickTime]; [] call blck_fnc_sm_monitorInfantry; [] call blck_fnc_sm_monitorScuba; [] call blck_fnc_sm_monitorVehicles; @@ -19,7 +18,5 @@ [] call blck_fnc_sm_monitorEmplaced; [] call blck_fnc_sm_monitorShips; [] call blck_fnc_sm_monitorSubs; -//[] call blck_fnc_sm_monitorGarrisonsASL; -//[] call blck_fnc_sm_monitorGarrisons_relPos; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_smokeAtCrates.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_smokeAtCrates.sqf index 568f11c..c76f6c3 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_smokeAtCrates.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_smokeAtCrates.sqf @@ -12,54 +12,33 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; - + _wreckSelected = selectRandom ["Land_Wreck_Car2_F","Land_Wreck_Car3_F","Land_Wreck_Car_F","Land_Wreck_Offroad2_F","Land_Wreck_Offroad_F","Land_Tyres_F","Land_Pallets_F","Land_MetalBarrel_F"]; +params["_pos","_mode",["_maxDist",12],["_wreckChoices",_wreckSelected],["_addFire",false]]; private ["_objs","_wreckSelected","_smokeType","_fire","_posFire","_posWreck","_smoke","_dis","_minDis","_maxDis","_closest","_wrecks"]; -_objs = []; -// http://www.antihelios.de/EK/Arma/index.htm -_wrecks = ["Land_Wreck_Car2_F","Land_Wreck_Car3_F","Land_Wreck_Car_F","Land_Wreck_Offroad2_F","Land_Wreck_Offroad_F","Land_Tyres_F","Land_Pallets_F","Land_MetalBarrel_F"]; - -params["_pos","_mode",["_maxDist",12],["_wreckChoices",_wrecks],["_addFire",false]]; - -_wreckSelected = selectRandom _wreckChoices; -//_smokeTrail = "test_EmptyObjectForSmoke"; // "options are "test_EmptyObjectForFireBig", "test_EmptyObjectForSmoke" -_smokeType = if(_addFire) then {"test_EmptyObjectForFireBig"} else {"test_EmptyObjectForSmoke"}; + _smokeType = if(_addFire) then {"test_EmptyObjectForFireBig"} else {"test_EmptyObjectForSmoke"}; switch (_mode) do { - case "none": {if (true) exitWith {};}; + case "none": {_minDis = 0; _maxDis = 1; _closest = 1;}; case "center": {_minDis = 5; _maxDis = 15; _closest = 5;}; case "random": {_minDis = 15; _maxDis = 50; _closest = 10;}; default {_minDis = 5; _maxDis = 15; _closest = 5;}; }; -_dis = 0; -//_posWreck = [_pos, 0, 30, 10, 0, 20, 0] call BIS_fnc_findSafePos; // Position the wreck within 30 meters of the position and 5 meters away from the nearest object -// _minDis and _maxDis determine the spacing between the smoking item and the loot crate. -_minDis = 5; // Minimum distance of -//_maxDis = 50; -_closest = 10; +private _posWreck = [_pos, _minDis, 50, _closest, 0, 20, 0] call BIS_fnc_findSafePos; // find a safe spot near the location passed in the call -while {_dis < _maxDist} do -{ - _posWreck = [_pos, _minDis, 50, _closest, 0, 20, 0] call BIS_fnc_findSafePos; // find a safe spot near the location passed in the call - _dis = _posWreck distance _pos; -}; // spawn a wreck near the mission center _fire = createVehicle [_wreckSelected, [0,0,0], [], 0, "can_collide"]; _fire setVariable ["LAST_CHECK", (diag_tickTime + 14400)]; _fire setPos _posWreck; _fire setDir random(360); -//https://community.bistudio.com/wiki/setVectorUp -//_fire setVectorUp surfaceNormal position _fire; - // spawn asmoke or fire source near the wreck and attach it. -_smoke = createVehicle [_smokeType, [0,0,0], [], 0, "can_collide"]; // "test_EmptyObjectForSmoke" createVehicle _posFire; +_smoke = createVehicle [_smokeType, [0,0,0], [], 0, "can_collide"]; _smoke setVariable ["LAST_CHECK", (diag_tickTime + 14400)]; _smoke setPos _posWreck; -_smoke attachto [_fire, [0,0,1]]; +_smoke attachto [_fire, [0,0,1.5]]; -_objs = _objs + [_fire,_smoke]; -//diag_log format ["--smokeAtCrate.sqf:: _objs = %1",_objs]; +_objs = [_fire,_smoke]; _objs diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnBaseObjects.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnBaseObjects.sqf index c4c0915..4c9afd8 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnBaseObjects.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnBaseObjects.sqf @@ -34,13 +34,9 @@ _newObjs pushBack _obj; _dam = _x select 4; }; - //diag_log format["_fnc_spawnBaseObjects: className %1 | _center %2 | _offset %3 | element %4",_x select 0,_center,_x select 1,_forEachIndex]; - _obj = createVehicle[(_x select 0),_center vectorAdd (_x select 1),[],0,"CAN_COLLIDE"]; - //diag_log format["_fnc_spawnBaseObjects::-->> _x = %1 | _obj = %2",_x,_obj]; _newObjs pushback _obj; _obj setDir (_x select 2); - _obj enableDynamicSimulation _sim; _obj allowDamage _dam; if ((typeOf _obj) isKindOf "LandVehicle" || (typeOf _obj) isKindOf "Air" || (typeOf _obj) isKindOf "Sea") then diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnCrate.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnCrate.sqf index f883cec..884ae82 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnCrate.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnCrate.sqf @@ -10,27 +10,22 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -private ["_crate"]; params["_coords",["_crateType","Box_NATO_Wps_F"],["_crateDir",0]]; -_crate = createVehicle [_crateType,[0,0,0],[], 2, "NONE"]; +private _cratePos = _coords findEmptyPosition[15,25,_crateType]; +_crate = createVehicle [_crateType,_coords,[], 0, "NONE"]; _crate setVariable ["LAST_CHECK", 100000]; _crate allowDamage false; _crate enableRopeAttach false; [_crate] call blck_fnc_emptyObject; -//uiSleep 1; _crate setPosATL [_coords select 0, _coords select 1, (_coords select 2) + 0.25]; _crate setDir _crateDir; -//_crate setVectorUp [0,0,1]; _crate setVectorUp surfaceNormal position _crate; -// the function to have a lightsource on underwater objects needs work. + if ((_coords select 2) < 0 || surfaceIsWater (_coords)) then { private["_lantern","_bbr","_p1","_p2","_maxHeight"]; - //_lantern = createVehicle ["PortableHelipadLight_01_red_F", [0,0,0],[],0,"CAN_COLLIDE"];// Land_Camping_Light_F - //_lantern enableSimulationGlobal true; - //_lantern switchLight "on"; _light = "#lightpoint" createVehicle (getPos _crate); _light setLightDayLight true; _light setLightBrightness 1.0; @@ -40,7 +35,6 @@ if ((_coords select 2) < 0 || surfaceIsWater (_coords)) then _p1 = _bbr select 0; _p2 = _bbr select 1; _maxHeight = abs ((_p2 select 2) - (_p1 select 2)); - //diag_log format["_fnc_spawnCrate: _bbr = %1 | _maxHeight = %2",_bbr,_maxHeight]; _light attachTo [_crate, [0,0,(_maxHeight + 0.5)]]; }; _crate; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnEmplacedWeaponArray.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnEmplacedWeaponArray.sqf index a02ff33..195b9f5 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnEmplacedWeaponArray.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnEmplacedWeaponArray.sqf @@ -20,12 +20,6 @@ if (_backpacks isEqualTo []) then {_backpacks = [_aiDifficultyLevel] call blc if (_weaponList isEqualTo []) then {_weaponList = [_aiDifficultyLevel] call blck_fnc_selectAILoadout}; if (_sideArms isEqualTo []) then {[_aiDifficultyLevel] call blck_fnc_selectAISidearms}; -/* -{ - diag_log format["_fnc_spawnEmplacedWeaponArray: _this %1 varName %2 = %3",_forEachIndex,_x,_this select _forEachIndex]; -} forEach ["_coords","_missionEmplacedWeapons","_useRelativePos","_noEmplacedWeapons","_aiDifficultyLevel"]; -*/ - private["_return","_emplacedWeps","_emplacedAI","_wep","_units","_gunner","_abort","_pos","_mode","_useRelativePos","_useRelativePos"]; _emplacedWeps = []; _emplacedAI = []; @@ -58,8 +52,7 @@ if (_missionEmplacedWeapons isEqualTo []) then #define maxAI 1 #define minDist 1 #define maxDist 2 - - /// // params["_pos", "_center", _numai1, _numai2, _skillLevel, _minDist, _maxDist, _configureWaypoints, _uniforms, _headGear,_vests,_backpacks,_weaponList,_sideArms, _scuba ]; + private _empGroup = [blck_AI_Side,true] call blck_fnc_createGroup; if !(isNull _empGroup) then { diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnGarrisonInsideBuilding_ATL.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnGarrisonInsideBuilding_ATL.sqf index d0eebc7..dda8bef 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnGarrisonInsideBuilding_ATL.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnGarrisonInsideBuilding_ATL.sqf @@ -26,10 +26,8 @@ _staticsSpawned = []; _obj = [_staticClassName, [0,0,0]] call blck_fnc_spawnVehicle; _obj setVariable["GRG_vehType","emplaced"]; _staticsSpawned pushBack _obj; - //diag_log format["_fnc_spawnGarrisonInsideBuilding_ATL: _obj = %1 | _staticsSpawned = %2",_obj,_staticsSpawned]; _obj setPosATL (_staticRelPos vectorAdd getPosATL _building); _obj setDir _staticDir; - //diag_log format["_fnc_spawnGarrisonInsideBuilding_ATL: _obj = %1 | getPosATL _obj = %2",_obj,getPosATL _obj]; _unit = [[0,0,0],_group,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_launcher,_weaponList,_sideArms,false,true] call blck_fnc_spawnUnit; _unit moveInGunner _obj; }forEach _statics; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnGarrisonInsideBuilding_relPos.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnGarrisonInsideBuilding_relPos.sqf index 1160bda..4193761 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnGarrisonInsideBuilding_relPos.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnGarrisonInsideBuilding_relPos.sqf @@ -17,16 +17,15 @@ if (_uniforms isEqualTo []) then {_uniforms = [_aiDifficultyLevel] call blck_f if (_headGear isEqualTo []) then {_headGear = [_aiDifficultyLevel] call blck_fnc_selectAIHeadgear}; if (_vests isEqualTo []) then {_vests = [_aiDifficultyLevel] call blck_fnc_selectAIVests}; if (_backpacks isEqualTo []) then {_backpacks = [_aiDifficultyLevel] call blck_fnc_selectAIBackpacks}; -//if (_typesStatics isEqualTo []) then {_typesStatics = blck_staticWeapons}; -private["_staticsSpawned","_allBldPsn","_allBldPsn","_floor","_ceil","_statics","_units","_unit","_obj","_staticClassName","_usedBldPsn","_pos","_obj"]; -_allBldPsn = [_building] call BIS_fnc_buildingPositions; -_usedBldPsn = []; -_floor = floor((count _allBldPsn)/2); -_ceil = ceil((count _allBldPsn)/2); -_statics = if (_ceil > _noStatics) then {_noStatics} else {_ceil}; -_units = if (_floor > _noUnits) then {_noUnits} else {_floor}; -_staticsSpawned = []; +private["_unit","_obj","_staticClassName","_usedBldPsn","_pos","_obj"]; +private _allBldPsn = [_building] call BIS_fnc_buildingPositions; +private _usedBldPsn = []; +private _floor = floor((count _allBldPsn)/2); +private _ceil = ceil((count _allBldPsn)/2); +private _statics = if (_ceil > _noStatics) then {_noStatics} else {_ceil}; +private _units = if (_floor > _noUnits) then {_noUnits} else {_floor}; +private _staticsSpawned = []; uiSleep 1; for "_i" from 1 to _statics do { @@ -37,9 +36,7 @@ for "_i" from 1 to _statics do _obj = [_staticClassName, [0,0,0], true] call blck_fnc_spawnVehicle; _obj setVariable["GRG_vehType","emplaced"]; _staticsSpawned pushBack _obj; - diag_log format["_fnc_spawnGarrisonInsideBuilding_relPos: _obj = %1 | _staticsSpawned = %2",_obj,_staticsSpawned]; _obj setPosATL _pos; // (_pos vectorAdd (getPosATL _building)); - diag_log format["static weapon %1 placed in building %2 located at %4 at postion %3",_obj,_building,_pos, getPosATL _building]; _unit = [[0,0,0],_group,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_launcher,_weaponList,_sideArms,false,true] call blck_fnc_spawnUnit; _unit moveInGunner _obj; }; @@ -48,7 +45,6 @@ for "_i" from 1 to _units do { _pos = selectRandom _allBldPsn; _allBldPsn = _allBldPsn - [_pos]; - // ["_pos","_aiGroup",["_aiDifficultyLevel","red"],["_uniforms", []],["_headGear",[]],["_vests",[]],["_backpacks",[]],["_Launcher","none"],["_weaponList",[]],["_sideArms",[]],["_scuba",false],["_garrison",false]]; _unit = [[0,0,0],_group,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_launcher,_weaponList,_sideArms,false,true] call blck_fnc_spawnUnit; _unit setPosATL _pos; }; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMines.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMines.sqf index 83932ac..fe62427 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMines.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMines.sqf @@ -32,13 +32,10 @@ for "_i" from 1 to _noMines/2 do _xpos = (_pos select 0) + sin (_dir) * _radius; _ypos = (_pos select 1) + cos (_dir) * _radius; _posMine = [_xpos,_ypos,0]; - //_posMine = [[_xpos,_ypos,0],0,10,_closest,0,20,0] call BIS_fnc_findSafePos; // find a random loc _mine = createMine ["ATMine", _posMine, [], 0]; _mine setVariable ["LAST_CHECK", (diag_tickTime + 14400)]; _mine setPos _posMine; - //https://community.bistudio.com/wiki/setVectorUp _minesPlaced = _minesPlaced + [_mine]; - //diag_log format["[spawnMines.sqf] mine # %2 spawned at %1",_posMine,_i]; }; _dir = _dir + _incr; }; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionAI.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionAI.sqf index 079ab2e..504c380 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionAI.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionAI.sqf @@ -13,24 +13,14 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; #define configureWaypoints true -// TODO: consolidate code where possible, for example the recurring code to create the group and add units to the list of units spawned. -// TODO: find reason that this sometimes throws errors because it passes an array rather than group. params["_coords",["_minNoAI",3],["_maxNoAI",6],["_noAIGroups",0],["_missionGroups",[]],["_aiDifficultyLevel","red"],["_uniforms",[]],["_headGear",blck_BanditHeadgear],["_vests",[]],["_backpacks",[]],["_weapons",[]],["_sideArms",[]],["_isScubaGroup",false]]; -/* -private _params = ["_coords","_minNoAI","_maxNoAI","_noAIGroups","_missionGroups","_aiDifficultyLevel","_uniforms","_headGear","_vests","_backpacks","_weapons","_sideArms","_isScubaGroup"]; -{ - diag_log format["_fnc_spawnMissionAI: _this %1 | name %3 = %2",_forEachIndex,_x,_params select _forEachIndex]; -} forEach _this; -*/ - private _unitsToSpawn = 0; private _unitsPerGroup = 0; private _ResidualUnits = 0; private _adjusttedGroupSize = 0; -// TODO: Does not really look right if (_noAIGroups > 0) then { // Can add optional debug code here if needed. @@ -42,43 +32,24 @@ private _allSpawnedAI = []; private _abort = false; private _newGroup = grpNull; -//_newGroup setVariable ["soldierType","infantry"]; + if !(_missionGroups isEqualTo []) then { - //diag_log "_fnc_missionspawner: spawning pre-defined groups"; { _x params["_position","_minAI","_maxAI","_skillLevel","_minPatrolRadius","_maxPatrolRadius"]; private _p = ["_position","_minAI","_maxAI","_skillLevel","_minPatrolRadius","_maxPatrolRadius"]; private _p1 = [_position,_minAI,_maxAI,_skillLevel,_minPatrolRadius,_maxPatrolRadius]; - - /* - { - diag_log format["_fnc_spawnMissionAI: %1 = %2",_p select _forEachIndex, _x]; - } forEach _p1; - */ - private _groupSpawnPos = _coords vectorAdd _position; _newGroup = [blck_AI_Side,true] call blck_fnc_createGroup; - //diag_log format["_fnc_spawnMissionAI(55): _newGroup = %1",_newGroup]; _newGroup setVariable ["soldierType","infantry"]; - #ifdef blck_debugMode - if (blck_debugLevel >= 2) then - { - diag_log format["_fnc_spawnMissionAI (37):: case 1 - > _newGroup = %1",_newGroup]; - }; - #endif if !(isNull _newGroup) then { - //[["_group","Error"],"_pos", "_center", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], ["_minDist",30], ["_maxDist",45],["_configureWaypoints",true], ["_uniforms",[]], ["_headGear",[]],["_vests",[]],["_backpacks",[]],["_weaponList",[]],["_sideArms",[]], ["_scuba",false],["_patrolRadius",30]]; [_newGroup,_groupSpawnPos,_coords,_minAI,_maxAI,_aiDifficultyLevel,_minPatrolRadius,_maxPatrolRadius,configureWaypoints,_uniforms,_headGear,_vests,_backpacks,_weapons,_sideArms,_isScubaGroup] call blck_fnc_spawnGroup; _newGroup setVariable ["soldierType","infantry"]; - //private _newAI = units _newGroup; blck_monitoredMissionAIGroups pushback _newGroup; - - _allSpawnedAI append (units _newGroup); - diag_log format["_fnc_spawnMissionAI(77): group %1 | count _newAI = %2 | count _allSpawnedAI = %3",_forEachIndex,count (units _newGroup), count _allSpawnedAI]; + _allSpawnedAI append (units _newGroup); }; }forEach _missionGroups; }; @@ -90,46 +61,19 @@ if (_missionGroups isEqualTo [] && _noAIGroups > 0) then switch (_noAIGroups) do { case 1: { // spawn the group near the mission center - - #ifdef blck_debugMode - if (blck_debugLevel >= 2) then - { - diag_log format["missionSpawner: Spawning Groups: case 1: _noAIGroups=1"]; - }; - #endif _newGroup = [blck_AI_Side,true] call blck_fnc_createGroup; _newGroup setVariable ["soldierType","infantry"]; - #ifdef blck_debugMode - if (blck_debugLevel >= 2) then - { - diag_log format["_fnc_spawnMissionAI (37):: case 1 - > _newGroup = %1",_newGroup]; - }; - #endif if !(isNull _newGroup) then { [_newGroup,_coords,_coords,_unitsToSpawn,_unitsToSpawn,_aiDifficultyLevel,_minPatrolRadius,_maxPatrolRadius,configureWaypoints,_uniforms,_headGear,_vests,_backpacks,_weapons,_sideArms,_isScubaGroup] call blck_fnc_spawnGroup; _newGroup setVariable ["soldierType","infantry"]; _newAI = units _newGroup; blck_monitoredMissionAIGroups pushback _newGroup; - #ifdef blck_debugMode - if (blck_debugLevel >= 2) then - { - diag_log format["_fnc_spawnMissionAI(41): Spawning Groups: _noAIGroups=1 _newGroup=%1 _newAI = %2",_newGroup, _newAI]; - }; - #endif - _allSpawnedAI append _newAI; }; }; case 2: { - - #ifdef blck_debugMode - if (blck_debugLevel >= 2) then - { - diag_log format["_fnc_spawnMissionAI(47): Spawning Groups: case 2: _noAIGroups=2"]; // spawn groups on either side of the mission area - }; - #endif _groupLocations = [_coords,_noAIGroups,15,30] call blck_fnc_findPositionsAlongARadius; { if (_ResidualUnits > 0) then @@ -145,27 +89,12 @@ if (_missionGroups isEqualTo [] && _noAIGroups > 0) then { [_newGroup,_x,_coords,_adjusttedGroupSize,_adjusttedGroupSize,_aiDifficultyLevel,_minPatrolRadius,_maxPatrolRadius,configureWaypoints,_uniforms,_headGear,_vests,_backpacks,_weapons,_sideArms,_isScubaGroup] call blck_fnc_spawnGroup; _newAI = units _newGroup; - blck_monitoredMissionAIGroups pushback _newGroup; - #ifdef blck_debugMode - if (blck_debugLevel >= 2) then - { - diag_log format["_fnc_spawnMissionAI(61): case 2: _newGroup=%1",_newGroup]; - }; - #endif - _allSpawnedAI append _newAI; }; }forEach _groupLocations; }; case 3: { // spawn one group near the center of the mission and the rest on the perimeter - - #ifdef blck_debugMode - if (blck_debugLevel >= 2) then - { - diag_log format["_fnc_spawnMissionAI (68): Spawning Groups: case 3: _noAIGroups=3"]; - }; - #endif _newGroup = [blck_AI_Side,true] call blck_fnc_createGroup; _newGroup setVariable ["soldierType","infantry"]; if !(isNull _newGroup) then @@ -173,12 +102,6 @@ if (_missionGroups isEqualTo [] && _noAIGroups > 0) then [_newGroup,_coords,_coords,_unitsPerGroup + _ResidualUnits,_unitsPerGroup + _ResidualUnits,_aiDifficultyLevel,_minPatrolRadius,_maxPatrolRadius,configureWaypoints,_uniforms,_headGear,_vests,_backpacks,_weapons,_sideArms,_isScubaGroup] call blck_fnc_spawnGroup; _newAI = units _newGroup; blck_monitoredMissionAIGroups pushback _newGroup; - #ifdef blck_debugMode - if (blck_debugLevel >= 2) then - { - diag_log format["_fnc_spawnMissionAI (73): Case 3: _newGroup=%1",_newGroup]; - }; - #endif _allSpawnedAI append _newAI; _groupLocations = [_coords,2,20,35] call blck_fnc_findPositionsAlongARadius; { @@ -189,26 +112,12 @@ if (_missionGroups isEqualTo [] && _noAIGroups > 0) then [_newGroup,_x,_coords,_unitsPerGroup,_unitsPerGroup,_aiDifficultyLevel,_minPatrolRadius,_maxPatrolRadius,configureWaypoints,_uniforms,_headGear,_vests,_backpacks,_weapons,_sideArms,_isScubaGroup] call blck_fnc_spawnGroup; _newAI = units _newGroup; blck_monitoredMissionAIGroups pushback _newGroup; - #ifdef blck_debugMode - if (blck_debugLevel >= 2) then - { - diag_log format["_fnc_spawnMissionAI(78): Case 3: line 81: _newGroup = %1",_newGroup]; - }; - #endif _allSpawnedAI append _newAI; }; }forEach _groupLocations; }; }; default { // spawn one group near the center of the mission and the rest on the perimeter - - #ifdef blck_debugMode - if (blck_debugLevel >= 2) then - { - diag_log format["_fnc_spawnMissionAI (88) spawning groups: Case default:"]; - }; - #endif - _newGroup = [blck_AI_Side,true] call blck_fnc_createGroup; _newGroup setVariable ["soldierType","infantry"]; if (isNull _newGroup) then @@ -216,12 +125,6 @@ if (_missionGroups isEqualTo [] && _noAIGroups > 0) then [_newGroup,_coords,_coords,_unitsPerGroup + _ResidualUnits,_unitsPerGroup + _ResidualUnits,_aiDifficultyLevel,_minPatrolRadius,_maxPatrolRadius,configureWaypoints,_uniforms,_headGear,_vests,_backpacks,_weapons,_sideArms,_isScubaGroup] call blck_fnc_spawnGroup; _newAI = units _newGroup; blck_monitoredMissionAIGroups pushback _newGroup; - #ifdef blck_debugMode - if (blck_debugLevel >= 2) then - { - diag_log format["_fnc_spawnMissionAI(92): Spawning Groups: Default - > Center Position: _noAIGroups=1 _newGroup=%1 _newAI = %2",_newGroup, _newAI]; - }; - #endif _allSpawnedAI append _newAI; }; _groupLocations = [_coords,(_noAIGroups - 1),20,40] call blck_fnc_findPositionsAlongARadius; @@ -233,12 +136,6 @@ if (_missionGroups isEqualTo [] && _noAIGroups > 0) then [_newGroup,_x,_coords,_unitsPerGroup,_unitsPerGroup,_aiDifficultyLevel,_minPatrolRadius,_maxPatrolRadius,configureWaypoints,_uniforms,_headGear,_vests,_backpacks,_weapons,_sideArms,_isScubaGroup] call blck_fnc_spawnGroup; _newAI = units _newGroup; blck_monitoredMissionAIGroups pushback _newGroup; - #ifdef blck_debugMode - if (blck_debugLevel > 2) then - { - diag_log format["_fnc_spawnMissionAI(99): Default: Radial Positions: _newGroup=%1",_newGroup]; - }; - #endif _allSpawnedAI append _newAI; }; }forEach _groupLocations; @@ -246,12 +143,5 @@ if (_missionGroups isEqualTo [] && _noAIGroups > 0) then }; }; -#ifdef blck_debugMode -if (blck_debugLevel >= 1) then -{ - diag_log format["_fnc_spawnMissionAI(243): _abort = %1 | _allSpawnedAI = %2",_abort,_allSpawnedAI]; -}; -#endif -//diag_log format["_fnc_spawnMissionAI(246): _unitsToSpawn = %1 | count _allSpawnedAI = %2",_unitsToSpawn,count _allSpawnedAI]; _return = [_allSpawnedAI,_abort]; _return diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionCrates.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionCrates.sqf index a410831..df6853e 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionCrates.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionCrates.sqf @@ -17,7 +17,6 @@ _fnc_dropMissionCrates = { _markers = []; { - // params["_pos","_crate",["_crateVisualMarker",true],["_dropHeight", 150]]; [(getPos _x), _x, true, 150] call blck_fnc_paraDropObject; } forEach _crates; @@ -26,7 +25,6 @@ _fnc_dropMissionCrates = { { uiSleep 1; { - // (((getPos _crate) select 2) < 3) if ((getPos _x) select 2 < 5) then { _airborneCrates = _airborneCrates - [_x]; @@ -36,12 +34,9 @@ _fnc_dropMissionCrates = { _location = getPos _x; _blck_localMissionMarker = [format["crateMarker%1%2",_location select 0, _location select 1],_location,"","","ColorBlack",["mil_dot",[]]]; _marker = [_blck_localMissionMarker] call blck_fnc_spawnMarker; - //_markers pushBack _marker; blck_temporaryMarkers pushBack [_marker,diag_tickTime + 300]; - //uiSleep 0.5; _curPosCrate = getPos _x; _x setPos [_curPosCrate select 0, _curPosCrate select 1, 0.3]; - //_x setVectorDirAndUp[[0,1,0],[0,0,1]]; }; } forEach _crates; }; @@ -49,12 +44,8 @@ _fnc_dropMissionCrates = { params[ ["_coords", [0,0,0]], ["_cratesToSpawn",[]], ["_loadCrateTiming","atMissionSpawn"],["_spawnCrateTiming","atMissionSpawn"],["_missionState","start"], ["_difficulty","red"] ]; -/* + private _params = ["_coords","_cratesToSpawn","_loadCrateTiming","_spawnCrateTiming","_missionState","_difficulty"]; -{ - diag_log format["_fnc_spawnMissionCrates: %1 = %2 with _foreachindex = %3",_params select _foreachindex, _this select _foreachindex, _foreachindex]; -}forEach _this; -*/ if ((count _coords) == 2) then // assume only X and Y offsets are provided { @@ -64,6 +55,7 @@ private _cratesSpawned = []; { _x params["_crateType","_crateOffset","_lootArray","_lootCounts",["_crateDir",0]]; + private _pos = _coords vectorAdd _crateOffset; private _crate = [_pos,_crateType] call blck_fnc_spawnCrate; _crate setDir _crateDir; @@ -72,26 +64,15 @@ private _cratesSpawned = []; _crate setVariable["difficulty",_difficulty]; if (_loadCrateTiming isEqualTo "atMissionSpawn" || _missionState isEqualTo "end") then { - //diag_log format["_fnc_spawnMissionCrates: calling blck_fnc_loadMissionCrate for _crate = %1",_crate]; [_crate] call blck_fnc_loadMissionCrate; }; _cratesSpawned pushback _crate; - #define blck_debugMode - #ifdef blck_debugMode - if (blck_debugLevel >= 2) then - { - //diag_log format["_fnc_spawnMissionCrates: _crateType = %1 | _crateOffset = %2 | _lootArray = %3 | _lootCounts = %4",_crateType,_crateOffset,_lootArray,_lootCounts]; - _marker = createMarker [format["crateMarker%1",random(1000000)], _pos]; - _marker setMarkerType "mil_triangle"; - _marker setMarkerColor "colorGreen"; - _crate setVariable["crateMarker",_marker]; - }; - #endif + }forEach _cratesToSpawn; if (_spawnCrateTiming in ["atMissionEndAir","atMissionStartAir"]) then { [_cratesSpawned] spawn _fnc_dropMissionCrates; }; -//diag_log format["_fnc_spawnMissionCrates: _cratesSpawned = %1",_cratesSpawned]; + _cratesSpawned diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionLootVehicles.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionLootVehicles.sqf index b44771f..e0be5c4 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionLootVehicles.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionLootVehicles.sqf @@ -16,7 +16,6 @@ if (count _coords isEqualTo 2) then {_coords pushBack 0}; private _vehs = []; { _x params["_vehType","_vehOffset",["_dir",0],"_lootArray","_lootCounts"]; - //diag_log format["spawnMissionCVehicles: _vehType = %1 | _vehOffset = %2 | _lootCounts = %4 | _dir %5 | _lock %6 | _lootArray = %3 ",_vehType,_vehOffset,_lootArray,_lootCounts,_dir,_lock]; private _pos =_coords vectorAdd _vehOffset; _veh = [_vehType, _pos] call blck_fnc_spawnVehicle; if (typeName _dir isEqualTo "SCALAR") then @@ -30,7 +29,6 @@ private _vehs = []; _veh lock _lock; if (_loadCrateTiming isEqualTo "atMissionSpawn") then { - //diag_log format["blck_fnc_spawnMissionLootVehicles::-> loading loot at mission spawn for veh %1",_x]; [_veh,_lootArray,_lootCounts] call blck_fnc_fillBoxes; _veh setVariable["lootLoaded",true]; }; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionVehiclePatrols.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionVehiclePatrols.sqf index d515f84..41d59bd 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionVehiclePatrols.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionVehiclePatrols.sqf @@ -28,7 +28,7 @@ private["_vehGroup","_vehiclePatrolSpawns","_missionAI","_missiongroups","_vehic _vehicles = []; _missionAI = []; _abort = false; -//diag_log format["fnc_spawnMissionVehiclePatrols(29): _missionPatrolVehicles = %1",_missionPatrolVehicles]; + if (_missionPatrolVehicles isEqualTo []) then { _useRelativePos = false; @@ -37,7 +37,6 @@ if (_missionPatrolVehicles isEqualTo []) then _v = [_skillAI] call blck_fnc_selectPatrolVehicle; _missionPatrolVehicles pushBack [_v, _x]; }forEach _vehiclePatrolSpawns; - //diag_log format["fnc_spawnMissionVehiclePatrols(38): _missionPatrolVehicles updated to %1",_missionPatrolVehicles]; }; #define configureWaypoints false { diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnPendingMissions.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnPendingMissions.sqf index 0200063..cbad33f 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnPendingMissions.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnPendingMissions.sqf @@ -1,8 +1,3 @@ -/* - for ghostridergaming - By Ghostrider [GRG] - Copyright 2016 - checks the status of each entry in /* By Ghostrider [GRG] -------------------------- @@ -16,30 +11,19 @@ if (blck_missionsRunning >= blck_maxSpawnedMissions) exitWith {}; -private["_coords","_compiledMission","_search","_readyToSpawnQue","_missionToSpawn","_allowReinforcements"]; -_readyToSpawnQue = []; -{ - if ( (diag_tickTime > (_x select 5)) && ((_x select 5) > 0) ) then +{ + private _missionCategoryDescriptors = _x; + _missionCategoryDescriptors params["_difficulty","_maxNoMissions","_noActiveMissions","_tMin","_tMax","_waitTime","_missionsData"]; + + if (_noActiveMissions < _maxNoMissions && diag_tickTime > _waitTime && blck_missionsRunning < blck_maxSpawnedMissions) then { - _readyToSpawnQue pushback _x; + + // time to reset timers and spawn something. + private _wt = diag_tickTime + _tmin + (random(_tMax - _tMin)); + #define waitTime 5 + #define noActive 2 + _x set[waitTime, _wt]; // _x here is the _missionCategoryDescriptors being evaluated + _x set[noActive, _noActiveMissions + 1]; + private _missionInitialized = [_x,selectRandom _missionsData] call blck_fnc_initializeMission; }; -} forEach blck_pendingMissions; - -if (count _readyToSpawnQue > 0) then -{ - _missionToSpawn = selectRandom _readyToSpawnQue; - - - _coords = [] call blck_fnc_FindSafePosn; - if (_coords isEqualTo []) exitWith - { - diag_log format["[blckagls] fnc_spawnPendingMissions: _fnc_findSafePosn could not find a location for this mission; consider reducing distances between players, bases, missions or towns."]; - }; - _compiledMission = selectRandom (_missionToSpawn select 0); - - _missionMarker = _missionToSpawn select 1; - _missionDifficulty = _missionToSpawn select 2; - [_coords,_missionMarker,_missionDifficulty] spawn _compiledMission; -}; - -true +} forEach blck_missionData; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf index baf8ef2..059df64 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnRandomLandscape.sqf @@ -26,6 +26,7 @@ _wreck enableSimulationGlobal false; _wreck enableDynamicSimulation false; _objects pushBack _wreck; { + private _dir = random(360); private _radius = minObjectSpawnRadius + random(maxObjectSpawnRadius); _wreck = createVehicle[_x, _coords getPos[_radius,_dir], [], 2]; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnScubaGroup.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnScubaGroup.sqf index d03ddf8..200c798 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnScubaGroup.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnScubaGroup.sqf @@ -15,10 +15,7 @@ #define UMS_sidearms [] params["_group","_pos",["_skillLevel","red"],["_numUnits",6],["_patrolRadius",15]]; -//{diag_log format["_fnc_spawnScubaGroup: _this select %1 = %2",_foreachindex,_x]} forEach _this; - //params[["_group","Error"],"_pos", "_center", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], ["_minDist",30], ["_maxDist",45],["_configureWaypoints",true], - //["_uniforms",[]], ["_headGear",[]],["_vests",[]],["_backpacks",[]],["_weaponList",[]],["_sideArms",[]], ["_scuba",false],["_patrolRadius",30]]; [_group,_pos,_pos,_numUnits,_numUnits,_skillLevel, _patrolRadius - 2, _patrolRadius, configureWaypoints, blck_UMS_uniforms, blck_UMS_headgear, blck_UMS_vests, UMS_backpacks, blck_UMS_weapons, UMS_sidearms, isScubaGroup] call blck_fnc_spawnGroup; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnSurfacePatrol.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnSurfacePatrol.sqf index dc60d46..22c0cc5 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnSurfacePatrol.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnSurfacePatrol.sqf @@ -10,15 +10,14 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -// ["B_SDV_01_F",[22584.9,15304.8,-6.14801],"red",4, 75,0], + params["_SDV","_pos","_difficulty","_numAI","_patrolRadius","_respawnTime"]; -//diag_log format["_fnc_spawnSurfacePatrol: _this = %1",_this]; + private _group = [blck_AI_Side,true] call blck_fnc_createGroup; private _vehicle = objNull; if !(isNull _group) then { [_group,_pos,_numAI,_numAI,_difficulty,_pos,_patrolRadius - 2,_patrolRadius,blck_UMS_uniforms,blck_UMS_headgear,true,blck_UMS_weapons,blck_UMS_vests,true] call blck_fnc_spawnGroup; - // params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",30],["_maxDis",45],["_group",grpNull]]; _vehicle = [_pos,_pos,_vehType,_minDis,_maxDis,_group] call blck_fnc_spawnVehiclePatrol; }; _vehicle diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_updateMissionQue.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_updateMissionQue.sqf index ada9e9c..aef5975 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_updateMissionQue.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_updateMissionQue.sqf @@ -13,6 +13,7 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; params["_mission","_status",["_coords",[0,0,0]] ]; + // _mission is the name used to identify the marker associated with that particular mission. it is a unique identifier. #ifdef blck_debugMode if (blck_debugLevel > 3) then {diag_log format["_fnc_updateMissionQue :: _mission = %1 | _status = %2 | _coords = %3",_mission,_status,_coords];}; @@ -23,23 +24,14 @@ private["_index","_element","_waitTime"]; if (_mission isEqualTo (_x select 1)) exitWith { _index = _forEachIndex; - //diag_log format["_fnc_updateMissionQue: match found at _forEachIndex %1 for _mission with _x = %2",_forEachIndex,_x select 1]; }; }forEach blck_pendingMissions; + //_index = blck_pendingMissions find _mission; if (_index > -1) then { - #ifdef blck_debugMode - if (blck_debuglevel > 4) then {diag_log format ["_fnc_updateMissionQue :: blck_pendingMissions began as %1",blck_pendingMissions];}; - #endif - _element = blck_pendingMissions select _index; - #ifdef blck_debugMode - if (blck_debuglevel > 3) then {diag_log format["_fnc_updateMissionQue:: -- >> _element before update = %1",_element];}; - #endif - // 0 1 2 3 4 5 6 - //_mission = [_missionList,format["%1%2",_marker,_i],_difficulty,_tMin,_tMax,_waitTime,[0,0,0]]; if (toLower(_status) isEqualTo "active") then { _element set[5, -1]; _element set[6,_coords]; @@ -51,15 +43,7 @@ if (_index > -1) then _element set [6,[0,0,0]]; }; - #ifdef blck_debugMode - if (blck_debuglevel > 2) then {diag_log format["_fnc_updateMissionQue:: -- >> _element after update = %1",_element];}; - #endif - blck_pendingMissions set [_index, _element]; - - #ifdef blck_debugMode - if (blck_debuglevel > 4) then {diag_log format ["_fnc_updateMissionQue :: blck_pendingMissions after update = %1",blck_pendingMissions];}; - #endif }; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_sm_AddScubaGroup.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_sm_AddScubaGroup.sqf index 3b73fdc..93c4255 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_sm_AddScubaGroup.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_sm_AddScubaGroup.sqf @@ -12,5 +12,4 @@ params["_group"]; blck_sm_scubaGroups pushBack [_group,grpNull,0]; -//diag_log format["_sm_AddScubaGroup:: blck_sm_scubaGroups = %1",blck_sm_scubaGroups]; true \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/TimeAccel/GMS_fnc_Time.sqf b/@GMS/addons/custom_server/Compiles/TimeAccel/GMS_fnc_Time.sqf index c348954..c502f54 100644 --- a/@GMS/addons/custom_server/Compiles/TimeAccel/GMS_fnc_Time.sqf +++ b/@GMS/addons/custom_server/Compiles/TimeAccel/GMS_fnc_Time.sqf @@ -28,26 +28,18 @@ _sunrise = _arr select 0; _sunset = _arr select 1; _time = dayTime; -//diag_log "fnc_Time:: Debug settings ON"; -//diag_log format["_fnc_Time:: --> blck_useTimeAcceleration = %1", blck_useTimeAcceleration]; -//diag_log format["_fnc_Time:: -- > _sunrise = %1 | _sunset = %2 | _time = %3",_sunrise,_sunset,_time]; - - // Night if (_time > (_sunset + 0.5) || _time < (_sunrise - 0.5)) exitWith { setTimeMultiplier blck_timeAccelerationNight; - //diag_log format["NIGHT TIMGE ADJUSTMENT:: time accel updated to %1; time of day = %2",timeMultiplier,dayTime]; }; // Day if (_time > (_sunrise + 0.5) && _time < (_sunset - 0.5)) exitWith { - setTimeMultiplier blck_timeAccelerationDay; - //diag_log format["DAYTIME ADJUSTMENT:: time accel updated to %1; time of day = %2",timeMultiplier,dayTime]; + setTimeMultiplier blck_timeAccelerationDay; }; // default setTimeMultiplier blck_timeAccelerationDusk; -//diag_log format["DUSK ADJUSTMENT:: time accel updated to %1; time of day = %2",timeMultiplier,dayTime]; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_EH_AIHit.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_EH_AIHit.sqf index d1cf1a5..a49cb02 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_EH_AIHit.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_EH_AIHit.sqf @@ -7,7 +7,6 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ - //diag_log format["_EH_AIHit: _this = %1",_this]; if (isServer) then {_this call blck_fnc_processAIHit}; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_EH_AIfiredNear.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_EH_AIfiredNear.sqf index a9cc62c..40df60c 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_EH_AIfiredNear.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_EH_AIfiredNear.sqf @@ -27,7 +27,6 @@ Introduced with Arma 3 version 1.65 gunner: Object - gunner, whose weapons are fired */ -//#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//if (isServer) then {_this remoteExec ["blck_fnc_processAIKill",2]}; -//if (local (_this select 0)) then {_this call blck_fnc_processAIFiredNear}; +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; + _this call blck_fnc_processAIFiredNear \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_EH_AIHandleDamage.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_EH_HandleDamage.sqf similarity index 93% rename from @GMS/addons/custom_server/Compiles/Units/GMS_EH_AIHandleDamage.sqf rename to @GMS/addons/custom_server/Compiles/Units/GMS_EH_HandleDamage.sqf index daddfac..3683ba7 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_EH_AIHandleDamage.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_EH_HandleDamage.sqf @@ -25,6 +25,6 @@ private ["_unit","_killer","_group","_deleteAI_At"]; _unit = _this select 0; _source = _this select 3; -if (isPlayer _source) then { - [_unit,_source] call GRMS_fnc_alertGroup; +if !(isPlayer _source) then { + _unit setDamage 0; }; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_EH_unitWeaponReloaded.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_EH_unitWeaponReloaded.sqf index d8a14d1..763c0d9 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_EH_unitWeaponReloaded.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_EH_unitWeaponReloaded.sqf @@ -21,9 +21,5 @@ #define unit _this select 0 #define newMagazine _this select 3 select 0 (unit) addMagazine (newMagazine); -#ifdef blck_debugMode -if (blck_debugLevel > 2) then { - diag_log format["_EH_unitWeaponReloaded:: one magazine of type %1 added to inventory of unit %2",_mag,(_this select 3 select 0)]; -}; -#endif + diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertGroupUnits.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertGroupUnits.sqf index 41e6501..ad9ba25 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertGroupUnits.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertGroupUnits.sqf @@ -14,11 +14,11 @@ params[["_unit",objNull],["_target",objNull]]; if (isNull _unit) exitWith {}; -//diag_log format["_fnc_alertGroupUnits: _unit = %1 | _target = %2",_unit,_target]; + { - _x reveal [_target,(_x knowsAbout _target) + (_unit getVariable ["intelligence",1])]; - _x doSuppressiveFire _target; + if (random(1) < -.33) then {_x reveal [_target,(_x knowsAbout _target) + random(_unit getVariable ["intelligence",1]) ]}; + //_x doSuppressiveFire _target; }forEach (units (group _unit)); -//leader(group _target) doSuppressiveFire _target; +leader(group _target) doSuppressiveFire _target; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyGroups.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyGroups.sqf index 3490218..6d8d642 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyGroups.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyGroups.sqf @@ -12,12 +12,20 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -private["_nearbyGroups","_intelligence"]; params["_unit","_killer",["_searchRadius",300]]; private _nearbyGroups = allGroups select{(_unit distance (leader _x) < _searchRadius)}; + { private _group = _x; + + if (_group isEqualTo (group _unit)) then { - _x reveal[_killer,(_x knowsAbout _killer) + (_x getVariable ["intelligence",1])]; + [_unit,_killer] call blck_fnc_allertGroupUnits; + } else { + if (random(1) < 0.33) then + { + _x reveal[_killer,(_x knowsAbout _killer) + random(_x getVariable["intelligence",1])]; + }; }forEach (units _group); + }forEach _nearbyGroups; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyUnits.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyUnits.sqf index e52d81c..d305f31 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyUnits.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyUnits.sqf @@ -13,9 +13,9 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; params["_unit","_killer"]; -private["_units"]; +private "_units"; if (toLower(blck_modType) isEqualTo "epoch") then {_units = _unit nearEntities ["I_Soldier_EPOCH", (_unit getVariable ["alertDist",300])]}; if !(toLower(blck_modType) isEqualTo "epoch") then {_units = _unit nearEntities ["i_g_soldier_unarmed_f", (_unit getVariable ["alertDist",300])]}; { - _x reveal[_killer, (_x knowsAbout _killer) + (_unit getVariable ["intelligence",1])] + _x reveal[_killer, (_x knowsAbout _killer) + random(_unit getVariable ["intelligence",1])] }forEach _units; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyVehicles.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyVehicles.sqf index fa88d50..d8964a9 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyVehicles.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_alertNearbyVehicles.sqf @@ -12,13 +12,15 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; params[["_target",objNull]]; -//diag_log format["_fnc_alertNearbyVehicles: _target = %1 | typeName _target = %2",_target,typeName _target]; -if (isnull _target) exitWith {}; -private _nearestVehicles = (nearestObjects [getPos _target,["Car","Truck","Tank","Ship"],300]); -if (_nearestVehicles isEqualTo []) exitWith {}; -private _nearestVehicle = _nearestVehicles select 0; -//diag_log format["_fnc_alertNearbyVehicles: _target = %1 | _nearestVehicle = %2",_target,_nearestVehicle]; -[(crew _nearestVehicle) select 0,_target] call blck_fnc_alertGroupUnits; + +if !(isnull _target) then +{ + private _nearestVehicles = (nearestObjects [getPos _target,["Car","Tank","Ship","Air"],300]); + if !(_nearestVehicles isEqualTo []) then + { + if (random(1) < 0.33) then {[(crew (_nearestVehicles select 0)) select 0,_target] call blck_fnc_alertGroupUnits}; + }; +}; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_allertNearestGroup.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_allertNearestGroup.sqf index 0cdd748..3e5a979 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_allertNearestGroup.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_allertNearestGroup.sqf @@ -15,5 +15,5 @@ params["_group"]; private _nearbyGroup = [group _unit] call blck_fnc_findNearestGroup; { - _x reveal[_killer,(_x knowsAbout _killer) + (_unit getVariable ["intelligence",1])]; + _x reveal[_killer,(_x knowsAbout _killer) + random(_unit getVariable ["intelligence",1])]; }forEach (units _nearbyGroup); diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupAliveAI.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupAliveAI.sqf index d07ac3c..0b2b822 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupAliveAI.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupAliveAI.sqf @@ -10,12 +10,12 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//diag_log format["_fnc_cleanupaliveAI: called at %1 | count %2 | blck_liveMissionAI = %3",diag_ticktime,count blck_liveMissionAI,blck_liveMissionAI]; + for "_i" from 1 to (count blck_liveMissionAI) do { if ((_i) <= count blck_liveMissionAI) then { _units = blck_liveMissionAI deleteAt 0; _units params ["_missionCenter","_unitsarr","_timer"]; - //diag_log format["_fnc_cleanupAliveAI: _units = %4 | _missionCenter %1 | typeName _unitsArr = %2 | _unitsarr = %3",_missionCenter,typeName _unitsArr, _unitsarr,_units]; + if (diag_tickTime > _timer) then { private _nearplayer = [_missionCenter,800] call blck_fnc_nearestPlayers; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupDeadAI.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupDeadAI.sqf index baad677..d2dd75c 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupDeadAI.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_cleanupDeadAI.sqf @@ -11,17 +11,14 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//diag_log format["fnc_cleanupDeadAI: (partially deactivated) time %1 | count blck_deadAI %2",diag_tickTime,count blck_deadAI]; - { private _unit = _x; if (_unit getVariable["blck_cleanupAt",0] isEqualTo 0) then {_unit setVariable["blck_cleanupAt",diag_tickTime + blck_bodyCleanUpTimer]}; private _nearplayer = [position _unit,800] call blck_fnc_nearestPlayers; - //diag_log format["fnc_cleanupDeadAI: _unit = %1 | blck_cleanupat = %2 | _nearPlayer = %3",_unit, _unit getVariable["blck_cleanupAt",0],_nearPlayer]; + if (diag_tickTime > _unit getVariable ["blck_cleanupAt",0]) then { if (_nearplayer isequalto []) then { - //diag_log format["_fnc_cleanupDeadAI: handling deletion of unit %1",_unit]; { deleteVehicle _x; }forEach nearestObjects [getPos _unit,["WeaponHolderSimulated","GroundWeapoonHolder"],3]; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_deleteAI.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_deleteAI.sqf index 9e03276..0fc3251 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_deleteAI.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_deleteAI.sqf @@ -14,8 +14,6 @@ private["_ai","_group"]; params["_unit"]; -//if (blck_debugLevel > 2) then {diag_log format["_fnc_deleteAI::-> deleting unit = %1",_unit];}; - { _unit removeAllEventHandlers _x; }forEach ["reloaded"]; @@ -23,7 +21,6 @@ params["_unit"]; _unit removeAllMPEventHandlers _x; } forEach ["MPKilled","MPHit"]; _group = (group _unit); -[_unit] joinSilent grpNull; deleteVehicle _unit; if (count units _group isEqualTo 0) then { diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_placeCharacterInBuilding.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_placeCharacterInBuilding.sqf index 1cafabb..8be0c35 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_placeCharacterInBuilding.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_placeCharacterInBuilding.sqf @@ -11,12 +11,11 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; params["_character","_center","_characterBuildingConfigs"]; -//diag_log format["_fnc_placeCharacterInBuilding: _characterBuildingConfigs = %1",_characterBuildingConfigs]; + private ["_obj"]; if !(_characterBuildingConfigs isEqualTo []) then { _obj = createVehicle[(_characterBuildingConfigs select 0),_center vectorAdd (_characterBuildingConfigs select 1),[],0,"CAN_COLLIDE"]; - //diag_log format["_fnc_placeCharacterInBuilding: _obj = %1",_obj]; _obj setDir (_characterBuildingConfigs select 2); _obj allowDamage true; _obj enableDynamicSimulation true; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIHit.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIHit.sqf index fc95c99..516bb75 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIHit.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIHit.sqf @@ -13,43 +13,35 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; if !(isServer) exitWith {}; private ["_unit","_instigator","_group","_wp"]; -_unit = _this select 0 select 0; -_instigator = _this select 0 select 3; -//diag_log format["_fnc_processAIHit:(19): _units = %1 and _instigator = %2 units damage is %3",_unit,_instigator, damage _unit]; +(_this select 0) params["_unit","_causedBy","_damage","_instigator"]; + +if !(isPlayer _instigator) exitWith +{ + _unit setDamage ( (damage _unit) - _damage); +}; -//diag_log format["_fnc_processAIHit: evaluating case of ai not alive"]; if (!(alive _unit)) exitWith { - //diag_log format["_fnc_processAIHit: _unit %1 is dead",_unit]; [_unit, _instigator] call blck_fnc_processAIKill; }; -//diag_log format["_fnc_processAIHit: evaluating case of damage > 0.95"]; + if (damage _unit > 0.95) exitWith { - //diag_log format["_fnc_processAIHit: _unit %1 extensively damagged",_unit]; _unit setDamage 1.2; [_unit, _instigator] call blck_fnc_processAIKill; }; -//diag_log format["_fnc_processAIHit: evaluating case of killer not player"]; -if !(isPlayer _instigator) exitWith { - //diag_log format["_fnc_procesAIHit: _instigator %1 not player",_instigator]; -}; -//diag_log format["_processAIHit: calling [_unit,_instigator] call blck_fnc_alertGroupUnits with _unit = %1 and _instigator = %2",_unit,_instigator]; + + [_unit,_instigator,50] call GMS_fnc_alertNearbyGroups; [_instigator] call blck_fnc_alertNearbyVehicles; -//diag_log format["_fnc_processAIHit: updating group and waypoint settings"]; _group = group _unit; _wp = [_group, currentWaypoint _group]; _wp setWaypointBehaviour "COMBAT"; _group setCombatMode "RED"; _wp setWaypointCombatMode "RED"; -//diag_log format["_fnc_processAIHit: determining if prior heal has occured"]; -if (_unit getVariable ["hasHealed",false]) exitWith { - //diag_log format["_fnc_processAIHit: _unit %1 has already healed one",_unit]; -}; -//diag_log format["_fnc_processAIHit: no prior heal so evaluate whether one is needed"]; -if ((damage _unit) > 0.2 ) then +if (_unit getVariable ["hasHealed",false]) exitWith {}; + +if ((damage _unit) > 0.5 ) then { - //diag_log format["_EH_AIHit::-->> Healing unit %1",_unit]; _unit setVariable["hasHealed",true,true]; if (blck_useSmokeWhenHealing) then { @@ -58,8 +50,6 @@ if ((damage _unit) > 0.2 ) then _unit addItem "FAK"; _unit action ["HealSoldierSelf", _unit]; _unit setDamage 0; - //uiSleep 1; if ("FAK" in (items _unit)) then {_unit removeItem "FAK"}; - //_unit removeItem "FAK"; }; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf index 5b087c6..fc18cc8 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf @@ -9,7 +9,7 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ -// TODO: check that emplaced weapons that should be deleted are added to the scheduler. + // assumptions: this is always and only run on the server regardless if th event is triggered on an HC or other client. #include "\q\addons\custom_server\Configs\blck_defines.hpp"; @@ -42,7 +42,6 @@ if (count(units (group _unit)) isEqualTo 0) then deleteGroup _group; }; -//diag_log format["_fnc_processAIKill: unit linked to crew of vehicle %1 | typeOf (vehicle _unit = %2)",vehicle _unit,typeOf (vehicle _unit)]; if !((vehicle _unit) isKindOf "Man") then { [_unit, ["Eject", vehicle _unit]] remoteExec ["action",(owner _unit)]; @@ -58,14 +57,6 @@ _wp setWaypointBehaviour "COMBAT"; (group _unit) setCombatMode "RED"; _wp setWaypointCombatMode "RED"; -if (blck_showCountAliveAI) then -{ - { - diag_log format["_fnc_processAIKill: _x = %1",_x]; - _x call blck_fnc_updateMarkerAliveCount; - } forEach blck_missionLabelMarkers; -}; - if ([_unit,_killer] call blck_fnc_processIlleagalAIKills) then { - [_unit,_killer] call GMS_fnc_handlePlayerUpdates; + [_unit,_killer] call blck_fnc_handlePlayerUpdates; }; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIfiredNear.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIfiredNear.sqf index d3894e2..6ff6513 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIfiredNear.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIfiredNear.sqf @@ -13,26 +13,12 @@ See https://community.bistudio.com/wiki/Arma_3:_Event_Handlers#FiredNear for details on this event handler. - this addEventHandler ["FiredNear", { - params ["_unit", "_firer", "_distance", "_weapon", "_muzzle", "_mode", "_ammo", "_gunner"]; -}]; - - unit: Object - Object the event handler is assigned to - firer: Object - Object which fires a weapon near the unit - distance: Number - Distance in meters between the unit and firer (max. distance ~69m) - weapon: String - Fired weapon - muzzle: String - Muzzle that was used - mode: String - Current mode of the fired weapon - ammo: String - Ammo used - Introduced with Arma 3 version 1.65 - gunner: Object - gunner, whose weapons are fired */ -//#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; params["_unit","_firedBy"]; -//if ((side _unit) isEqualTo (side _firedBy) exitWith {}; // nearyby friendly fire + (group _unit) setBehaviour "COMBAT"; (group _unit) setCombatMode "RED"; -diag_log format["_fnc_processAIfiredNear: _unit %1 knows %2 about _firedBy %3",_unit, _unit knowsAbout _firedBy,_firedBy]; -diag_log format["_fnc_processAIfiredNear: owner _unit = %1 | local _unit = %2",owner _unit, local _unit]; + diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processIlleagalAIKills.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processIlleagalAIKills.sqf index f9b482c..6871c86 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processIlleagalAIKills.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processIlleagalAIKills.sqf @@ -10,17 +10,11 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -// assumptions: -// 1) if the muzzle that killed the AI was forbbiden then the kill does not count -// 2) if the vehicle the player was in when the player killed the AI, the kill does not count. -// data to check: blck_forbidenVehicles -// and blck_forbidenVehicleGuns -// blck_VK_RunoverDamage -// blck_RunGear private["_missionType","_wasRunover","_launcher","_legal"]; params["_unit","_killer"]; _legal = true; if (vehicle _killer == _killer) exitWith {true}; + // Player not in vehicle, no further checks needed. if (_killer == (driver (vehicle _killer))) then // If the killer is also the driver then the killer must have run the AI over { @@ -43,13 +37,8 @@ if (_killer == (driver (vehicle _killer))) then // If the killer is also the dr [vehicle _killer] call GMS_fnc_applyVehicleDamagePenalty; [_killer] call GMS_fnc_msgIED; _legal = false; - diag_log format[ - "_fnc_processIlleagalKills: _legal = %1 | (typeOf (vehicle _killer)) in blck_forbidenVehicles = %2 | (currentWeapon _killer) in blck_forbidenVehicleGuns) = %3", - _legal,(typeOf (vehicle _killer)) in blck_forbidenVehicles, - (currentWeapon _killer) in blck_forbidenVehicleGuns - ]; }; }; }; -//diag_log format["_fnc_testForIllegalKills: _legal = %1",_legal]; + _legal diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_removeNVG.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_removeNVG.sqf index 8cbe50e..9fe9b37 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_removeNVG.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_removeNVG.sqf @@ -12,13 +12,11 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; params["_unit"]; -//diag_log format["+--+ removing NVG for unit %1",_unit]; if (blck_useNVG) then { if (_unit getVariable ["hasNVG",false]) then { - _unit unassignitem "NVGoggles"; _unit removeweapon "NVGoggles"; }; }; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_setSkill.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_setSkill.sqf index 08f19b3..2e288fb 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_setSkill.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_setSkill.sqf @@ -11,8 +11,6 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -// Self explanatory -// [_group, _skill] call blck_setSkill; params ["_unit","_skillsArrray"]; private["_skillLevel"]; { diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnCharacter.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnCharacter.sqf index 8bf7da0..96ebff8 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnCharacter.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnCharacter.sqf @@ -13,14 +13,6 @@ params["_coords","_charConfigs"]; private["_char","_charGroup"]; _charConfigs params["_classname","_posn","_dir","_simDamg","_animations","_headgear","_uniforms"]; -#ifdef blck_debugMode -{ - diag_log format["_fnc_spawnchar: _forEachIndex = %1 | _x = %2",_forEachIndex,_x]; -}forEach _charConfigs; -diag_log format["_fnc_spawnchar: _this = %1",_this]; -diag_log format["_fnc_spawnchar _classname = %1 | _posn = %2 | _dir = %3 | _animations = %4",_classname,_posn,_dir,_animations]; -#endif - _charGroup = createGroup [blck_AI_Side, true]; _char = _charGroup createUnit [_classname,[0,0,0], [], 0, "NONE"]; _char setCaptive true; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnHostage.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnHostage.sqf index 3975d7e..955b93f 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnHostage.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnHostage.sqf @@ -17,7 +17,6 @@ _hostage remoteExec["GMS_fnc_initHostage", -2, true]; _hostage setVariable["assetType",1,true]; _building = [_hostage,_coords,_hostageConfigs select 7] call blck_fnc_placeCharacterInBuilding; _result = [_hostage,_building]; -//diag_log format["_fnd_spawnHostage: _result = %1",_result]; _result diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnLeader.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnLeader.sqf index f1ae006..cbe56ed 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnLeader.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnLeader.sqf @@ -16,9 +16,7 @@ _leader = [_coords, _leaderConfigs] call blck_fnc_spawnCharacter; _leader remoteExec["GMS_fnc_initLeader", -2, true]; _leader setVariable["assetType",2,true]; _leader setVariable["endAnimation",["Acts_CivilShocked_1"],true]; -//diag_log format["_fnc_spawnLeader: _leaderConfigs = %1",_leaderConfigs]; _building = [_leader,_coords,_leaderConfigs select 7] call blck_fnc_placeCharacterInBuilding; -//diag_log format["_fnc_spawnLeader: _building = %1",_building]; _result = [_leader,_building]; _result diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnParaUnits.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnParaUnits.sqf index 18332b3..2d20ae2 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnParaUnits.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnParaUnits.sqf @@ -30,7 +30,6 @@ private _params = ["_pos","_numAI","_skillAI"]; }forEach _params; #endif _paraGroup = [blck_AI_Side,true] call blck_fnc_createGroup; -//diag_log format["_fnc_spawnParaUnits: _paraGroup = %1",_paraGroup]; #define infantryPatrolRadius 30 #define infantryWaypointTimeout [5,7.5,10] [_pos,20,30,_paraGroup,"random","SAD","paraUnits",infantryPatrolRadius,infantryWaypointTimeout] call blck_fnc_setupWaypoints; @@ -45,24 +44,15 @@ for "_i" from 1 to _numAI do _spawnPos = _pos getPos[1,_dir]; _chute = createVehicle ["Steerable_Parachute_F", [_spawnPos select 0, _spawnPos select 1, 250], [], 0, "FLY"]; [_chute] call blck_fnc_protectVehicle; - // ["_pos","_aiGroup",["_skillLevel","red"],["_uniforms", blck_SkinList],["_headGear",blck_headgear],["_vests",blck_vests],["_backpacks",blck_backpacks],["_Launcher","none"],["_weaponList",[]],["_sideArms",[]],["_scuba",false]]; _unit = [getPos _chute,_paraGroup,_skillAI,_uniforms,_headGear,_vests,_backpacks,launcherType,_weapons,_sideArms,_isScuba] call blck_fnc_spawnUnit; - - #ifdef blck_debugMode - diag_log format["_fnc_spawnParaUnits: unit %1 = %2 dropping in chute %3",_i,_unit,_chute]; - #endif - - //_chute setPos [_spawnPos select 0, _spawnPos select 1, 125]; //(_offset select 2) - 10]; _unit assignAsDriver _chute; _unit moveInDriver _chute; - //_unit allowDamage true; _unit setVariable["chute",_chute]; _dir = _dir + _arc; uiSleep 2; }; - blck_monitoredMissionAIGroups pushback _paraGroup; _paraGroup diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnUnit.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnUnit.sqf index 6f9b73c..a355c2d 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnUnit.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnUnit.sqf @@ -22,19 +22,10 @@ if (_headGear isEqualTo []) then {_headGear = [_skillLevel] call blck_fnc_sele if (_vests isEqualTo []) then {_vests = [_skillLevel] call blck_fnc_selectAIVests}; if (_backpacks isEqualTo []) then {_backpacks = [_skillLevel] call blck_fnc_selectAIBackpacks}; -#ifdef blck_debugMode -if (blck_debugLevel >= 2) then -{ - private _params = ["_pos","_aiGroup","_skillLevel","_uniforms","_headGear","_vests","_backpacks","_Launcher","_weaponList","_sideArms","_scuba","_garrison"]; //"_weaponList", "_Launcher" - { - diag_log format["_fnc_spawnUnit::-> _this select %1 (%2) = %3",_forEachIndex, _params select _forEachIndex, _this select _forEachIndex]; - }forEach _this; -}; -#endif if (isNull _aiGroup) exitWith {diag_log "[blckeagls] ERROR CONDITION:-->> NULL-GROUP Provided to _fnc_spawnUnit"}; _unit = ObjNull; -//private _unitType = ""; + if (blck_modType isEqualTo "Epoch") then { "I_Soldier_EPOCH" createUnit [_pos, _aiGroup, "_unit = this", blck_baseSkill, "COLONEL"]; @@ -46,7 +37,6 @@ if (blck_modType isEqualTo "Epoch") then case "green":{_unit setVariable["Crypto",6 + floor(random(blck_maxMoneyGreen)),true];}; case "orange":{_unit setVariable["Crypto",8 + floor(random(blck_maxMoneyOrange)),true];}; }; - //diag_log format["_fnc_spawnUnit: for unit %1 Crypto set to %2",_unit,_unit getVariable "Crypto"]; }; if !(blck_modType isEqualTo "Epoch") then { @@ -58,11 +48,10 @@ if !(blck_modType isEqualTo "Epoch") then case "green":{_unit setVariable["ExileMoney",6 + floor(random(blck_maxMoneyGreen)),true];}; case "orange":{_unit setVariable["ExileMoney",8 + floor(random(blck_maxMoneyOrange)),true];}; }; - //diag_log format["_fnc_spawnUnit: for unit %1 ExileMoney set to %2",_unit,_unit getVariable "ExileMoney"]; }; -// findEmptyPosition [minDistance, maxDistance, vehicleType] + private _tempPos = _pos findEmptyPosition [0.1, 3, typeOf _unit]; -//diag_log format["_fnc_spawnUnit: _pos = %1 | _tempPos = %2",_pos,_tempPos]; + if !(_tempPos isEqualTo []) then {_unit setPos _tempPos}; [_unit] call blck_fnc_removeGear; @@ -74,18 +63,8 @@ if (_scuba) then _skin = ""; _counter = 1; -while {_skin isEqualTo "" && _counter < 10} do -{ - _unit forceAddUniform (selectRandom _uniforms); - _skin = uniform _unit; - #ifdef blck_debugMode - if (blck_debugLevel > 2) then - { - diag_log format["_fnc_spawnUnit::-->> for unit _unit % uniform is %2",_unit, uniform _unit]; - }; - #endif - _counter = _counter + 1; -}; +_unit forceAddUniform (selectRandom _uniforms); + //Sets AI Tactics _unit enableAI "ALL"; if(_garrison) then @@ -99,33 +78,26 @@ _unit setunitpos "AUTO"; if !(_headGear isEqualTo []) then { _unit addHeadgear (selectRandom _headGear); - //diag_log format["Headgear for unit %1 = %2",_unit, headgear _unit]; }; if !(_vests isEqualTo []) then { _unit addVest (selectRandom _vests); - //diag_log format["Vest for unit %1 = %2",_unit, vest _unit]; }; if (_weaponList isEqualTo []) then {_weaponList = call blck_fnc_selectAILoadout}; _weap = selectRandom _weaponList; _unit addWeaponGlobal _weap; _ammoChoices = getArray (configFile >> "CfgWeapons" >> _weap >> "magazines"); +_unit addMagazines[selectRandom _ammochoices,3]; _optics = getArray (configfile >> "CfgWeapons" >> _weap >> "WeaponSlotsInfo" >> "CowsSlot" >> "compatibleItems"); _pointers = getArray (configFile >> "CfgWeapons" >> _weap >> "WeaponSlotsInfo" >> "PointerSlot" >> "compatibleItems"); _muzzles = getArray (configFile >> "CfgWeapons" >> _weap >> "WeaponSlotsInfo" >> "MuzzleSlot" >> "compatibleItems"); _underbarrel = getArray (configFile >> "CfgWeapons" >> _weap >> "WeaponSlotsInfo" >> "UnderBarrelSlot" >> "compatibleItems"); -_legalOptics = _optics - blck_blacklistedOptics; -if (typeName _ammoChoices isEqualTo "ARRAY" and !(_ammochoices isEqualTo [])) then -{ - _unit addMagazines [selectRandom _ammoChoices, 3]; -} else { - diag_log format[" _fnc_spawnUnit: _weap = %1 | _ammoChoices = %2 | time = %3",_weap,_ammoChoices,time]; -}; + if (random 1 < 0.4) then {_unit addPrimaryWeaponItem (selectRandom _muzzles)}; -if (random 1 < 0.4) then {_unit addPrimaryWeaponItem (selectRandom _legalOptics)}; +if (random 1 < 0.4) then {_unit addPrimaryWeaponItem (selectRandom _optics)}; if (random 1 < 0.4) then {_unit addPrimaryWeaponItem (selectRandom _pointers)}; if (random 1 < 0.4) then {_unit addPrimaryWeaponItem (selectRandom _muzzles)}; if (random 1 < 0.4) then {_unit addPrimaryWeaponItem (selectRandom _underbarrel)}; @@ -137,7 +109,6 @@ if ((count(getArray (configFile >> "cfgWeapons" >> _weap >> "muzzles"))) > 1) th if !(_sideArms isEqualTo []) then { _weap = selectRandom _sideArms; - //diag_log format["[spawnUnit.sqf] _weap os %1",_weap]; _unit addWeaponGlobal _weap; _ammoChoices = getArray (configFile >> "CfgWeapons" >> _weap >> "magazines"); _unit addMagazines [selectRandom _ammoChoices, 2]; @@ -150,10 +121,9 @@ for "_i" from 1 to (1+floor(random(4))) do // Add First Aid or Grenade 50% of the time if (round(random 10) <= 5) then { - //diag_log format["spawnUnit.sqf] -- Item is %1", _item]; _unit addItem selectRandom blck_specialItems; }; -//diag_log format["_spawnUnit: _Launcher = %1",_Launcher]; + if ( !(_Launcher isEqualTo "none") && !(_backpacks isEqualTo [])) then { _unit addWeaponGlobal _Launcher; @@ -181,7 +151,7 @@ else }; _unit addWeapon selectRandomWeighted["",4,"Binocular",3,"Rangefinder",1]; - +//_unit addEventHandler ["HandleDamage",{_this call blck_EH_handleDamage;}]; _unit addEventHandler ["FiredNear",{_this call blck_EH_AIfiredNear;}]; _unit addEventHandler ["Reloaded", {_this call blck_EH_unitWeaponReloaded;}]; _unit addMPEventHandler ["MPKilled", {[(_this select 0), (_this select 1)] call blck_EH_AIKilled;}]; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_HandleAIVehicleHit.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_HandleAIVehicleHit.sqf index 293f762..26e12b9 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_HandleAIVehicleHit.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_HandleAIVehicleHit.sqf @@ -15,12 +15,10 @@ private ["_veh","_instigator","_group","_wp"]; _veh = _this select 0; _instigator = _this select 3; -//diag_log format["_fnc_HandleAIVehicleHit: _veh = %1 | _instigator = %2",_veh,_instigator]; if (!(isPlayer _instigator)) exitWith {}; _crew = crew _veh; _group = group (_crew select 0); [_crew select 0,_instigator,50] call GMS_fnc_alertNearbyGroups; -//diag_log format["_fnc_handleAIVehicleHit: calling blck_fnc_alertNearbyVehicles with _instigator = %1",_instigator]; [_instigator] call blck_fnc_alertNearbyVehicles; _group setBehaviour "COMBAT"; _wp = [_group, currentWaypoint _group]; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_handleEmptyStaticWeapon.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_handleEmptyStaticWeapon.sqf index 312e0f1..1076218 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_handleEmptyStaticWeapon.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_handleEmptyStaticWeapon.sqf @@ -13,11 +13,9 @@ params["_veh"]; if (blck_killEmptyStaticWeapons) then { - //diag_log format["_processAIKill: disabling static %1 and setting its delete time",_veh]; _veh setDamage 1; _veh setVariable["blck_deleteAtTime",diag_tickTime + 60,true]; }else { - //diag_log format["_processAIKill: releasing static %1 to players and setting a default delete timer",_veh]; [_veh] call blck_fnc_releaseVehicleToPlayers; //Call this from _processAIKill _veh setVariable["blck_DeleteAt",diag_tickTime + blck_vehicleDeleteTimer,true]; }; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_handleEmptyVehicle.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_handleEmptyVehicle.sqf index 9eac3b3..8c3dd03 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_handleEmptyVehicle.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_handleEmptyVehicle.sqf @@ -9,37 +9,29 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ -//diag_log format["_fnc_handleEmptyVehicle: _this = %1",_this]; params["_veh"]; -//diag_log format["_fnc_handleEmptyVehicle: vehicle %1 | count(crew _veh) = %2 | typoeOf _veh = %3 | description _veh = %4",_veh,count(crew _veh),typeOf _veh,gettext(configFile >> 'cfgWeapons' >> typeOf _veh >> 'displayName')]; + if (isServer) then { if ({alive _x} count (crew _veh) == 0 || crew(_veh) isEqualTo []) then { - //diag_log format["_fnc_handleEmptyVehicle: no units alive in vehicle %1",_veh, typeOf _veh,gettext (configFile >> 'cfgWeapons' >> typeOf _veh >> 'displayName')]; - // TODO: Make sure this variable is properly set on all vehicles. if (_veh getVariable["GRG_vehType","none"] isEqualTo "emplaced") then { - //diag_log format["_fnc_handleEmptyVehicle: emplaced weapon %1 being handled",_veh]; if (blck_killEmptyStaticWeapons) then { - //diag_log format["_fnc_handleEmptyVehicle: disabling static %1 and setting its delete time",_veh]; _veh setDamage 1; _veh setVariable["blck_deleteAtTime",diag_tickTime + 60,true]; }else { - //diag_log format["_fnc_handleEmptyVehicle: releasing static %1 to players and setting a default delete timer",_veh]; [_veh] call blck_fnc_releaseVehicleToPlayers; //Call this from _processAIKill _veh setVariable["blck_deleteAtTime",diag_tickTime + blck_vehicleDeleteTimer,true]; }; } else { if (blck_killEmptyAIVehicles) then { - //diag_log format["_fnc_handleEmptyVehicle: disabling vehicle %1 and setting a delete time",_veh]; _veh setDamage 0.7; _veh setFuel 0; _veh setVariable["blck_deleteAtTime",diag_tickTime + 60]; } else { - //diag_log format["_fnc_handleEmptyVehicle: releasing vehicle %1 to players and setting a default delete timer",_veh]; _veh setVariable["blck_deleteAtTime",diag_tickTime + blck_vehicleDeleteTimer,true]; [_veh] call blck_fnc_releaseVehicleToPlayers; }; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_handleVehicleGetOut.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_handleVehicleGetOut.sqf index 75e40bd..22fe042 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_handleVehicleGetOut.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_handleVehicleGetOut.sqf @@ -9,18 +9,6 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ -/* -this addEventHandler ["GetOut", { - params ["_vehicle", "_role", "_unit", "_turret"]; -}]; - vehicle: Object - Vehicle the event handler is assigned to - role: String - Can be either "driver", "gunner" or "cargo" - unit: Object - Unit that left the vehicle - Introduced with Arma 3 version 1.36 - turret: Array - turret path -*/ - -//diag_log format["_fnc_handleAIgetOut: _this = %1",_this]; #define veh _this select 0 if ((isServer) || local (veh)) then {[veh] call blck_fnc_checkForEmptyVehicle}; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_loadVehicleCrew.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_loadVehicleCrew.sqf index d49ff9a..fba1873 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_loadVehicleCrew.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_loadVehicleCrew.sqf @@ -8,46 +8,16 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ -/* - _loadVehicleCrew - Expects the group has units and they are configured -*/ + if (isNil "blck_blacklisted_vehicle_weapons") then {blck_blacklisted_vehicle_weapons = []}; params["_veh","_group",["_crewCount",4]]; private _units = units _group; -#ifdef blck_debugMode -if (blck_debugLevel > 2) then -{ - diag_log format["_fnc_loadVehicleCrew: _veh = %1 | _group = %2 | group units = %4 | _crewCount = %3",_veh,_group,_crewCount, units _group]; -}; -#endif + for "_i" from 1 to _crewCount do { if (_units isEqualTo []) exitWith {}; _crew = _units deleteAt 0; - /* - Note that in documentation for the moveinAny command the order seats are filled is: - driver - commander - gunner - other turrets - cargo - - https://community.bistudio.com/wiki/moveInAny - */ _crew moveInAny _veh; - #ifdef blck_debugMode - if (blck_debugLevel > 2) then - { - diag_log format["_fnc_loadVehicleCrew: loaded unit %1 into vehicle %2",_crew,_veh]; - diag_log format["_fnc_loadVehicleCrew: new crew for vehicle %1 = %2",_veh, crew _veh]; - }; - #endif }; {deleteVehicle _x} forEach _units; -#ifdef blck_debugMode -if (blck_debugLevel > 2) then -{ - diag_log format["_fnc_loadVehicleCrew: _veh = %1 | crew = %2 | driver = %3",_veh,crew _veh,driver _veh]; -}; -#endif + diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_processAIVehicleKill.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_processAIVehicleKill.sqf index 869d625..0dfb950 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_processAIVehicleKill.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_processAIVehicleKill.sqf @@ -11,19 +11,16 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; private ["_veh","_killer","_group","_wp"]; -//diag_log format["_fnc_processAIVehicleKill: _this = %1",_this]; -params["_veh","_killer","_killer"]; -//params["_veh","_killer"]; +params["_veh","_killer","_killer"]; { _veh removealleventhandlers _x; } forEach ["GetIn","GetOut","fired","hit","hitpart","reloaded","dammaged","HandleDamage"]; + { _veh removeAllMPEventHandlers _x; } forEach ["MPHit","MPKilled"]; -//diag_log format["_fnc_processAIVehicleKill: _this = %1",_this]; -//diag_log format["_fnc_processAIVehicleKill:: _veh = %1 and _killer = %2 units damage is %3",_veh,_killer, damage _veh]; if (!(isPlayer _killer)) exitWith {}; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_releaseVehicleToPlayers.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_releaseVehicleToPlayers.sqf index babbc55..708da89 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_releaseVehicleToPlayers.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_releaseVehicleToPlayers.sqf @@ -9,11 +9,10 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ -// assummptions: since this is called after an AI Killed event that always runs on the server we can assume this code will too. + #include "\q\addons\custom_server\Configs\blck_defines.hpp"; params["_veh"]; -//diag_log format["_fnc_releaseVehicleToPlayers: _veh = %1",_veh]; [_veh] call blck_fnc_unlockVehicle; { _veh removealleventhandlers _x; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_searchForNearbyPlayers.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_searchForNearbyPlayers.sqf index 080e552..3ecbc90 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_searchForNearbyPlayers.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_searchForNearbyPlayers.sqf @@ -19,9 +19,9 @@ _nearbyPlayers = [position _vehicle, _vehicle getVariable["blck_vehicleSearchRan _cansee = [objNull, "VIEW"] checkVisibility [eyePos _x, _player]; if (_cansee > 0) then { - //_knowledgeGained = (_searchRadius - (_x distance _groupLeader))/_searchRadius; + _knowledgeGained = (_searchRadius - (_x distance _groupLeader))/_searchRadius; _knowsAbout = _x knowsAbout _player; - _groupLeader reveal [_x, _knowsAbout + _kno_canseewledgeGained]; + _groupLeader reveal [_x, _knowsAbout + _knowledgeGained]; }; }foreEach crew _vehicle; }; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_sendHeliHome.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_sendHeliHome.sqf index ac6fe7f..9d328a9 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_sendHeliHome.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_sendHeliHome.sqf @@ -10,13 +10,10 @@ _pilot = (units _grpPilot) select 0; _heli = vehicle _pilot; diag_log "reinforcements deployed:: send heli back to spawn"; [[_heli], 300 /* 5 min*/] spawn blck_fnc_addObjToQue; -// select a random location abotu 2K from the mission _spawnVector = round(random(360)); _spawnDistance = 2000; _pos = getPos _heli; -// Use the new functionality of getPos -// https://community.bistudio.com/wiki/getPos _home = _pos getPos [_spawnDistance,_spawnVector]; // Send the heli back to base @@ -31,6 +28,4 @@ _grpPilot = group this; [_grpPilot,0] setWaypointTimeout [0.5,0.5,0.5]; -diag_log "reinforcements:: sending Heli Home"; - diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnBoatPatrol.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnBoatPatrol.sqf index b80a783..d986376 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnBoatPatrol.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnBoatPatrol.sqf @@ -14,23 +14,10 @@ private["_veh"]; params["_vehType","_pos",["_crewCount",4]]; -#ifdef blck_debugMode -if (blck_debugLevel > 1) then {diag_log format["spawnVehicle.sqf: _vehType = %1 | _pos = %2",_vehType,_pos];}; -#endif - private _veh = [_vehType,_pos] call blck_fnc_spawnVehicle; _veh setVariable["blck_vehicleSearchRadius",blck_playerDetectionRangeSurfaceVehicle]; _veh setVariable["blck_vehiclePlayerDetectionOdds",blck_vehiclePlayerDetectionOdds]; - -#ifdef blck_debugMode -if (blck_debugLevel > 1) then {diag_log format["spawnVehicle.sqf:: vehicle spawned is %1",_veh];}; -#endif -// params["_veh",["_clearInventory",true]]; [_veh,_clearInventory] call blck_fnc_configureMissionVehicle; -//[_veh,_group,_crewCount] call blck_fnc_loadVehicleCrew; -#ifdef blck_debugMode -if (blck_debugLevel > 1) then {diag_log format["spawnVehicle:: returning parameter _veh = %1",_veh];}; -#endif _veh diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionHeli.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionHeli.sqf index e8ce30c..e00f2ee 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionHeli.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionHeli.sqf @@ -21,8 +21,6 @@ if (_backpacks isEqualTo []) then {_backpacks = [_skillAI] call blck_fnc_sele if (_weaponList isEqualTo []) then {_weaponList = [_skillAI] call blck_fnc_selectAILoadout}; if (_sideArms isEqualTo []) then {[_skillAI] call blck_fnc_selectAISidearms}; -// params["_pos", "_center", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], ["_minDist",30], ["_maxDist",45],["_configureWaypoints",true], ["_uniforms",[]], -//["_headGear",[]],["_vests",[]],["_backpacks",[]],["_weaponList",[]],["_sideArms",[]], ["_scuba",false]]; switch (toLower(_skillAI)) do { case "blue": {_minDist = 150;_maxDist = blck_maxPatrolRadiusHelisBlue}; @@ -48,13 +46,6 @@ if !(isNull _grpPilot) then _grpPilot setVariable["arc",0]; _grpPilot setVariable["wpRadius",0]; _grpPilot setVariable["wpMode","SAD"]; - #ifdef blck_debugMode - if (blck_debugLevel > 2) then - { - diag_log format["_fnc_spawnMissionHeli - max radii are: blue %1 | red %2 | green %3 | orange %4",blck_maxPatrolRadiusHelisBlue,blck_maxPatrolRadiusHelisRed,blck_maxPatrolRadiusHelisGreen,blck_maxPatrolRadiusHelisOrange]; - diag_log format["_fnc_spawnMissionHeli(59): _skillAI = %1 | _minDist = %2 | _maxDist = %3",_skillAI,_minDist,_maxDist]; - }; - #endif #define aircraftPatrolRadius 800 #define aircraftWaypointTimeout [1,1.5,2] @@ -68,52 +59,17 @@ if !(isNull _grpPilot) then } else { _chopperType = _helis }; - - #ifdef blck_debugMode - if (blck_debugLevel > 1) then - { - diag_log format["_fnc_spawnMissionHeli(59): _skillAI = %1 | _minDist = %2 | _maxDist = %3",_skillAI,_minDist,_maxDist]; - diag_log format["_fnc_spawnMissionHeli (78):: _chopperType selected = %1",_chopperType]; - }; - #endif - //_patrolHeli = createVehicle [_chopperType, _coords, [], 90, "FLY"]; _patrolHeli = [_chopperType,_coords,"FLY"] call blck_fnc_spawnVehicle; - #ifdef blck_debugMode - if (blck_debugLevel > 2) then - { - diag_log format["_fnc_spawnMissionHeli (75): _patrolHeli = %1 | getPosATL _patrolHeli = %2",_patrolHeli,getposATL _patrolHeli]; - }; - #endif [_patrolHeli,2] call blck_fnc_configureMissionVehicle; - //_patrolHeli setVariable["blck_vehicle",true]; _patrolHeli setVariable["blck_vehicleSearchRadius",blck_playerDetectionRangeAir]; _patrolHeli setVariable["blck_vehiclePlayerDetectionOdds",blck_vehiclePlayerDetectionOdds]; - //_patrolHeli addEventHandler["GetOut",{_this remoteExec["blck_EH_vehicleGetOut",2]}]; - //[_patrolHeli] call blck_fnc_protectVehicle; _patrolHeli setFuel 1; _patrolHeli engineOn true; _patrolHeli flyInHeight 100; - //_patrolHeli setVehicleLock "LOCKED"; - // params["_veh","_group",["_crewCount",4]]; [_patrolHeli,_grpPilot,_crewCount] call blck_fnc_loadVehicleCrew; - - #ifdef blck_debugMode - if (blck_debugLevel > 1) then - { - diag_log format["_fnc_spawnMissionHeli (93):: heli %1 spawned with crew count of %2 | desired crew count = %3",_patrolHeli,count(crew _patrolHeli),_crewCount]; - diag_log format["_fnc_spawnMissionHeli (89): _patrolHeli = %1 | getPosATL _patrolHeli = %2 | driver _patrolHeli = %4",_patrolHeli,getposATL _patrolHeli,driver _patrolHeli]; - diag_log format["_fnc_spawnMissionHeli (133)::-->> Heli %1 outfited with a crew numbering %2",_patrolHeli, crew _patrolHeli]; - }; - #endif }; -//diag_log format["[blckeagls] _fnc_spawnMissionHeli:: _patrolHeli %1 | _grpPilot %2 | _abort %3",_patrolHeli,_grpPilot,_abort]; + _return = [_patrolHeli,units _grpPilot,_abort]; -#ifdef blck_debugMode -if (blck_debugLevel > 0) then -{ - diag_log format["_fnc_spawnMissionHeli:: function returning value for _return of %1",_return]; -}; -#endif _return; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionParatroops.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionParatroops.sqf index 415de3b..2fefe63 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionParatroops.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionParatroops.sqf @@ -24,75 +24,32 @@ _noPara = 0; _aborted = false; if (_skillAI isEqualTo "blue") then { - - #ifdef blck_debugMode - if (blck_debugON) then {diag_log "_fnc_spawnMissionParatroops: BLUE difficulty settings applied";}; - #endif - _chanceParatroops = blck_chanceParaBlue; _noPara = blck_noParaBlue; }; if (_skillAI isEqualTo "green") then { - - #ifdef blck_debugMode - if (blck_debugON) then {diag_log "_fnc_spawnMissionParatroops: GREEN difficulty settings applied";}; - #endif - _chanceParatroops = blck_chanceParaGreen; _noPara = blck_noParaGreen; }; if (_skillAI isEqualTo "orange") then { - - #ifdef blck_debugMode - if (blck_debugON) then {diag_log "_fnc_spawnMissionParatroops: ORANGE difficulty settings applied";}; - #endif - _chanceParatroops = blck_chanceParaOrange; _noPara = blck_noParaOrange; }; if (_skillAI isEqualTo "red") then { - #ifdef blck_debugMode - if (blck_debugON) then {diag_log "_fnc_spawnMissionParatroops: RED difficulty settings applied";}; - #endif - _chanceParatroops = blck_chanceParaRed; _noPara = blck_noParaRed; }; -#ifdef blck_debugMode -if (blck_debugLevel > 2) then {diag_log format["_fnc_spawnMissionParatroops (47): _chanceParatroops %1",_chanceParatroops];}; -if (blck_debugLevel > 2) then {diag_log format["_fnc_spawnMissionParatroops (48): _coords %1 | _numAI %2 | _skillAI %3 | _grpParatroops %4 | _heli %5",_coords,_noPara,_skillAI,_grpParatroops,_heli];}; -#endif - if ( (random(1) < _chanceParatroops)) then { if (isNull _grpParatroops) then { _grpParatroops = createGroup blck_AI_Side; - - #ifdef blck_debugMode - if (blck_debugLevel > 2) then - { - diag_log format["_fnc_spawnMissionParatroops (53):No group passed as a parameter, _grpParatroops %4 created",_grpParatroops]; - }; - #endif }; - - #ifdef blck_debugMode - if (blck_debugLevel > 2) then - { - diag_log format["_fnc_spawnMissionParatroops (58): function running and group %1 successfully created; now calling blck_fnc_spawnParaUnits",_grpParatroops]; - }; - #endif - - //params["_missionPos","_paraGroup",["_numAI",3],"_skillAI","_weapons","_uniforms","_headGear",["_heli",objNull]]; _aborted = [_coords,_grpParatroops,_noPara,_skillAI,_weapons,_uniforms,_headGear,_heli] call blck_fnc_spawnParaUnits; - //diag_log format["_fnc_spawnMissionParatroops: blck_fnc_spawnParaUnits returned a value of %1",_aborted]; }; -#ifdef blck_debugMode -diag_log format["_fnc_spawnMissionParatroops: _aborted = %1",_aborted]; -#endif + if (_aborted) then { _return = [[],true]; @@ -100,9 +57,5 @@ if (_aborted) then _return = [(units _grpParatroops),false]; }; -#ifdef blck_debugMode -diag_log format["_fnc_spawnMissionParatroops:-> _return = %1 | _abort = %2",_return,_aborted]; -#endif - _return diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionReinforcements.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionReinforcements.sqf index 1a3f42a..ae7f46d 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionReinforcements.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnMissionReinforcements.sqf @@ -12,7 +12,6 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -// [_coords,_aiDifficultyLevel,_chancePara,_noPara,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] params["_coords","_missionHelis","_spawnHeli",["_aiSkillsLevel","Red"],["_chancePara",0],["_noPara",0],["_uniforms",[]], ["_headGear",[]],["_vests",[]],["_backpacks",[]],["_weaponList",[]],["_sideArms",[]]]; if (_uniforms isEqualTo []) then {_uniforms = [_skillAI] call blck_fnc_selectAIUniforms}; @@ -22,38 +21,14 @@ if (_backpacks isEqualTo []) then {_backpacks = [_skillAI] call blck_fnc_selec if (_weaponList isEqualTo []) then {_weaponList = [_skillAI] call blck_fnc_selectAILoadout}; if (_sideArms isEqualTo []) then {[_skillAI] call blck_fnc_selectAISidearms}; -#ifdef blck_debugMode -if (blck_debugLevel >=2) then -{ - private _params = ["_coords","_missionHelis","_spawnHeli","_aiSkillsLevel","_chancePara","_noPara","_uniforms","_headGear","_vests","_backpacks","_weapons","_sideArms"]; - { - diag_log format["_fnc_spawnMissionReinforcements:: param %1 | isEqualTo %2 | _forEachIndex %3",_params select _forEachIndex,_this select _forEachIndex, _forEachIndex]; - }forEach _this; -}; -#endif - private["_return","_temp","_missionHelis"]; -#ifdef blck_debugMode -if (blck_debugLevel > 0) then {diag_log format["_fnc_spawnMissionReinforcements (25): Script Starting with _aiSkillsLevel = %1",_aiSkillsLevel]}; -#endif - _aiSkillsLevel = toLower _aiSkillsLevel; if ( _spawnHeli ) then // if helipatrols are 'enabled' then paratroops will only drop if a heli spawns. // The chance that they drop is linked to the value for them for that difficulty _aiSkillsLevel //see _fnc_spannMissionParatroops for how this is handled. { - _temp = [objNull,[],false]; - //params["_coords","_aiSkillsLevel",,"_weapons","_uniforms","_headgear""_helis"]; - - #ifdef blck_debugMode - if (blck_debugLevel > 2) then - { - diag_log "_fnc_spawnMissionReinforcements (64): calling _fnc_spawnMissionHeli to spawn heli and paratroops"; - }; - #endif - // params["_coords","_skillAI","_weapons","_uniforms","_headGear","_helis",["_chanceParas",0]]; _temp = [_coords,_missionHelis,_aiDifficultyLevel,_chancePara,_noPara,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnMissionHeli; if (typeName _temp isEqualTo "ARRAY") then { @@ -63,23 +38,12 @@ if ( _spawnHeli ) then // if helipatrols are 'enabled' then paratroops will only { _return = [objNull, [], true]; }; - - #ifdef blck_debugMode - if (blck_debugLevel > 2) then {diag_log format["_fnc_spawnMissionReinforcements (66): blck_fnc_spawnMissionHeli returned value of %1 for _return",_return];}; - #endif - } else { if (blck_debugLevel > 2) then {diag_log "_fnc_spawnMissionReinforcements (68): calling _fnc_spawnMissionParatroops to spawn para reinforcements";}; _temp = [objNull,[],false]; _temp = [_coords,_aiSkillsLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnMissionParatroops; - #ifdef blck_debugMode - if (blck_debugLevel > 2) then { - diag_log format["_fnc_spawnMissionReinforcements (71):: blck_fnc_spawnMissionParatroops returned value for _paratroops of %1",_temp]; - }; - #endif - if (typeName _temp isEqualTo "ARRAY") then { _return = [objNull, _temp select 0 /*units*/, _temp select 1 /*true/false*/]; @@ -88,8 +52,4 @@ if ( _spawnHeli ) then // if helipatrols are 'enabled' then paratroops will only }; }; -#ifdef blck_debugMode -if (blck_debugLevel > 1) then {diag_log format["_fnc_spawnMissionReinforcements (74):: _return = %1",_return];}; -#endif - _return \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnParaCrate.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnParaCrate.sqf index b2fa50a..c5e4f5e 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnParaCrate.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnParaCrate.sqf @@ -36,22 +36,16 @@ _offset = _supplyHeli getPos [10, _dir]; _chute = createVehicle ["I_Parachute_02_F", [100, 100, 100], [], 0, "FLY"]; [_chute] call blck_fnc_protectVehicle; _chute setPos [_offset select 0, _offset select 1, 100 ]; //(_offset select 2) - 10]; - -diag_log format["_fnc_spawnParaCrate:: chute spawned yielding object %1 at postion %2", _chute, getPos _chute]; //create the parachute and crate private["_crateSelected"]; _crateSelected = selectRandom["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_IND_AmmoVeh_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F"]; _crate = [getPos _chute, _crateSelected] call blck_fnc_spawnCrate; -//_crate = createVehicle [_crateSelected, position _chute, [], 0, "CAN_COLLIDE"]; _crate setPos [position _supplyHeli select 0, position _supplyHeli select 1, 250]; //(position _supplyHeli select 2) - 10]; _crate attachTo [_chute, [0, 0, -1.3]]; _crate allowdamage false; _crate enableRopeAttach true; // allow slingloading where possible -diag_log format["_fnc_spawnParaCrate:: crate spawned %1 at position %2 and attached to %3",_crate, getPos _crate, attachedTo _crate]; - - switch (_lootSetting) do { case "orange": {[_crate, blck_BoxLoot_Orange, _lootCounts] call blck_fnc_fillBoxes;}; @@ -60,8 +54,6 @@ switch (_lootSetting) do case "blue": {[_crate, blck_BoxLoot_Blue, _lootCounts] call blck_fnc_fillBoxes;}; default {[_crate, blck_BoxLoot_Red, _lootCounts] call blck_fnc_fillBoxes;}; }; - -diag_log format["_fnc_spawnParaCrate:: crate loaded and now at position %1 and attached to %2", getPos _crate, attachedTo _crate]; _fn_monitorCrate = { params["_crate","_chute"]; @@ -71,7 +63,6 @@ _fn_monitorCrate = { while {!_crateOnGround} do { uiSleep 1; - diag_log format["_fnc_spawnParaCrate:: Crate Altitude: %1 Crate Velocity: %2 Crate Position: %3 Crate attachedTo %4", getPos _crate select 2, velocityModelSpace _crate select 2, getPosATL _crate, attachedTo _crate]; if ( (((velocity _crate) select 2) < 0.1) || ((getPosATL _crate select 2) < 0.1) ) exitWith { uiSleep 10; // give some time for everything to settle diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnReinforcements.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnReinforcements.sqf index a219a08..90460fa 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnReinforcements.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnReinforcements.sqf @@ -13,66 +13,33 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; params["_coords","_aiSkillsLevel","_weapons","_uniforms","_headgear",["_chancePara",0]]; -/* -_coords = _this select 0; -_aiSkillsLevel = _this select 1; -_weapons = _this select 2; -_uniforms = _this select 3; -_headgear = _this select 4; -*/ private["_chanceHeliPatrol","_return","_temp","_missionHelis"]; -#ifdef blck_debugMode -if (blck_debugLevel > 0) then {diag_log format["_fnc_spawnMissionReinforcements (25): Script Starting with _aiSkillsLevel = %1",_aiSkillsLevel]}; -#endif + _aiSkillsLevel = toLower _aiSkillsLevel; if (_aiSkillsLevel isEqualTo "blue") then { - #ifdef blck_debugMode - if (blck_debugLevel > 0) then {diag_log "_fnc_spawnMissionReinforcements (29): BLUE difficulty settings applied";}; - #endif _chanceHeliPatrol = blck_chanceHeliPatrolBlue; _missionHelis = blck_patrolHelisBlue; }; if (_aiSkillsLevel isEqualTo "green") then { - #ifdef blck_debugMode - if (blck_debugLevel > 0) then {diag_log "_fnc_spawnMissionReinforcements (34): GREEN difficulty settings applied";}; - #endif _chanceHeliPatrol = blck_chanceHeliPatrolGreen; _missionHelis = blck_patrolHelisGreen; }; if (_aiSkillsLevel isEqualTo "orange") then { - #ifdef blck_debugMode - if (blck_debugLevel > 0) then {diag_log "_fnc_spawnMissionReinforcements (39): ORANGE difficulty settings applied";}; - #endif _chanceHeliPatrol = blck_chanceHeliPatrolOrange; _missionHelis = blck_patrolHelisOrange; }; if (_aiSkillsLevel isEqualTo "red") then { - #ifdef blck_debugMode - if (blck_debugLevel > 0) then {diag_log "_fnc_spawnMissionReinforcements (46): RED difficulty settings applied";}; - #endif _chanceHeliPatrol = blck_chanceHeliPatrolRed; _missionHelis = blck_patrolHelisRed; }; -#ifdef blck_debugMode -if (blck_debugLevel > 1) then {diag_log format["_fnc_spawnMissionReinforcements (50): Variables defined: _chanceHeliPatrol %1 | _missionHelis %2",_chanceHeliPatrol,_missionHelis];}; -#endif + if ( (_chanceHeliPatrol > 0) && (random (1) < _chanceHeliPatrol) ) then // if helipatrols are 'enabled' then paratroops will only drop if a heli spawns. // The chance that they drop is linked to the value for them for that difficulty _aiSkillsLevel //see _fnc_spannMissionParatroops for how this is handled. { - _temp = [objNull,[],false]; - //params["_coords","_aiSkillsLevel",,"_weapons","_uniforms","_headgear""_helis"]; - - #ifdef blck_debugMode - if (blck_debugLevel > 2) then - { - diag_log "_fnc_spawnMissionReinforcements (64): calling _fnc_spawnMissionHeli to spawn heli and paratroops"; - }; - #endif - // params["_coords","_skillAI","_weapons","_uniforms","_headGear","_helis",["_chanceParas",0]]; _temp = [_coords,_aiSkillsLevel,_weapons,_uniforms,_headgear,_missionHelis,_chancePara] call blck_fnc_spawnMissionHeli; if (typeName _temp isEqualTo "ARRAY") then { @@ -82,23 +49,9 @@ if ( (_chanceHeliPatrol > 0) && (random (1) < _chanceHeliPatrol) ) then // if he { _return = [objNull, [], true]; }; - - #ifdef blck_debugMode - if (blck_debugLevel > 2) then {diag_log format["_fnc_spawnMissionReinforcements (66): blck_fnc_spawnMissionHeli returned value of %1 for _return",_return];}; - #endif - } else { - if (blck_debugLevel > 2) then {diag_log "_fnc_spawnMissionReinforcements (68): calling _fnc_spawnMissionParatroops to spawn para reinforcements";}; - _temp = [objNull,[],false]; - // params["_coords","_skillAI","_weapons","_uniforms","_headgear"]; _temp = [_coords,_aiSkillsLevel,_weapons,_uniforms,_headgear] call blck_fnc_spawnMissionParatroops; - #ifdef blck_debugMode - if (blck_debugLevel > 2) then { - diag_log format["_fnc_spawnMissionReinforcements (71):: blck_fnc_spawnMissionParatroops returned value for _paratroops of %1",_temp]; - }; - #endif - if (typeName _temp isEqualTo "ARRAY") then { _return = [objNull, _temp select 0 /*units*/, _temp select 1 /*true/false*/]; @@ -107,8 +60,4 @@ if ( (_chanceHeliPatrol > 0) && (random (1) < _chanceHeliPatrol) ) then // if he }; }; -#ifdef blck_debugMode -if (blck_debugLevel > 1) then {diag_log format["_fnc_spawnMissionReinforcements (74):: _return = %1",_return];}; -#endif - _return \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnSubPatrol.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnSubPatrol.sqf index 729d0ec..8553fea 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnSubPatrol.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnSubPatrol.sqf @@ -14,23 +14,10 @@ params["_vehType","_pos",["_maxCrew",3]]; -#ifdef blck_debugMode -if (blck_debugLevel > 1) then {diag_log format["spawnVehicle.sqf: _vehType = %1 | _pos = %2",_vehType,_pos];}; -#endif - private _veh = [_vehType,_pos] call blck_fnc_spawnVehicle; _veh setVariable["blck_vehicleSearchRadius",blck_playerDetectionRangeSubs]; _veh setVariable["blck_vehiclePlayerDetectionOdds",blck_vehiclePlayerDetectionOdds]; - -#ifdef blck_debugMode -if (blck_debugLevel > 1) then {diag_log format["spawnVehicle.sqf:: vehicle spawned is %1",_veh];}; -#endif -//[_veh,_group,_crewCount] call blck_fnc_loadVehicleCrew; [_veh,2] call blck_fnc_configureMissionVehicle; -#ifdef blck_debugMode -if (blck_debugLevel > 1) then {diag_log format["spawnVehicle:: returning parameter _veh = %1",_veh];}; -#endif - _veh diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnVehicle.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnVehicle.sqf index 123e328..4048d6b 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnVehicle.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnVehicle.sqf @@ -12,9 +12,9 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -params["_vehType","_pos",["_special","NONE"]]; +params["_vehType","_pos",["_special","NONE"],["_radius",30]]; -private _veh = createVehicle[_vehType, _pos, [], 0, _special]; +private _veh = createVehicle[_vehType, _pos, [], _radius, _special]; _veh setVectorUp surfaceNormal position _veh; _veh allowDamage true; _veh enableRopeAttach true; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnVehiclePatrol.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnVehiclePatrol.sqf index 52713ef..530e01c 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnVehiclePatrol.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_spawnVehiclePatrol.sqf @@ -15,14 +15,6 @@ params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",40],["_maxDis",60],["_group",grpNull],["_setWaypoints",true],["_crewCount",4],["_patrolRadius",150],["_waypointTimeout",[5,7.5,10]]]; - -//_center Center of the mission area - this is usually the position treated as the center by the mission spawner. Vehicles will patrol the perimeter of the mission area. -// _pos the approximate spawn point for the vehicle -//_vehType = [_this,1,"I_G_Offroad_01_armed_F"] call BIS_fnc_param; -//_minDis = -//_maxDis = -//_groupForVehiclePatrol = The group with which to man the vehicle -// _crewCount = the number of AI including driver and gunners to place in the vehicle if (_group isEqualTo grpNull) exitWith { diag_log format["_fnc_spawnVehiclePatrol(30): Function can not accept a null group"]; @@ -30,8 +22,8 @@ if (_group isEqualTo grpNull) exitWith private _veh = objNull; -_veh = [_vehType,_pos] call blck_fnc_spawnVehicle; +_veh = [_vehType,_pos] call blck_fnc_spawnVehicle; _veh setVariable["blck_vehicleSearchRadius",blck_playerDetectionRangeGroundVehicle]; _veh setVariable["blck_vehiclePlayerDetectionOdds",blck_vehiclePlayerDetectionOdds]; @@ -41,13 +33,9 @@ private _maxCrew = [_crewCount] call blck_fnc_getNumberFromRange; [_veh,2] call blck_fnc_configureMissionVehicle; if (_setWaypoints) then { - // params["_pos","_minDis","_maxDis","_group",["_mode","random"],["_wpPatrolMode","SAD"],["_soldierType","null"] ]; [_center,_minDis,_maxDis,_group,"perimeter","SAD","vehicle",_patrolRadius,_waypointTimeout] spawn blck_fnc_setupWaypoints; - //diag_log format["_fnc_spawnVehiclePatrol(50): waypoint configuration set for vehicle %1 with crew %2",_veh, crew _veh]; }; - - _veh diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehicleMonitor.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehicleMonitor.sqf index 530d66a..148e9a9 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehicleMonitor.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehicleMonitor.sqf @@ -11,7 +11,6 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//diag_log format["_fnc_vehicleMonitor:: function called at %1 with _vehList %2 ",diag_tickTime,blck_monitoredVehicles]; // TODO: Test that vehicles that are either scheduled for deletion are for deletion pending change in owner are proparly handled (kept in the list, deleted when the time arrives). private _serverIDs = ([2] + (entities "HeadlessClient_F")); for "_i" from 1 to (count blck_monitoredVehicles) do @@ -23,12 +22,10 @@ for "_i" from 1 to (count blck_monitoredVehicles) do // if the owner is a player do not add back for further monitoring if ((owner _veh) in (_serverIDs)) then { - //diag_log format["_fnc_vehicleMonitor: vehicle %1 to be deleted at %2",_veh,(_veh getVariable ["blck_deleteAtTime",0])]; if ((_veh getVariable ["blck_deleteAtTime",0]) > 0) then { if (diag_tickTime > ( _veh getVariable ["blck_deleteAtTime",0])) then { - //diag_log format["_fnc_vehicleMonitor: deleting vehicle and crew for %1",_veh]; [_veh] call blck_fnc_destroyVehicleAndCrew; } else { blck_monitoredVehicles pushBack _veh; @@ -38,12 +35,7 @@ for "_i" from 1 to (count blck_monitoredVehicles) do blck_monitoredVehicles pushBack _veh; }; } else { - #ifdef blck_debugMode - if (blck_debugOn) then - { - diag_log format["_fnc_vehicleMonitor: owner of vehicle %1 is a player, discontinuing further monitoring",_veh]; - }; - #endif + }; }; }; diff --git a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehiclePlayerSensingLogic.sqf b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehiclePlayerSensingLogic.sqf index 032d7ca..5c2ad1f 100644 --- a/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehiclePlayerSensingLogic.sqf +++ b/@GMS/addons/custom_server/Compiles/Vehicles/GMS_fnc_vehiclePlayerSensingLogic.sqf @@ -13,8 +13,6 @@ // No params { - // - //params["_vehicle","_group","searchRadius","_detectionOdds"]; _group = group driver _vehicle; _searchRadius = _vehicle getVariable["blck_vehicleSearchRadius",800]; _detectionOdds = _vehicle getVariable["blck_vehiclePlayerDetectionOds",0.5]; diff --git a/@GMS/addons/custom_server/Compiles/blck_functions.sqf b/@GMS/addons/custom_server/Compiles/blck_functions.sqf index 0b45d12..20e562f 100644 --- a/@GMS/addons/custom_server/Compiles/blck_functions.sqf +++ b/@GMS/addons/custom_server/Compiles/blck_functions.sqf @@ -15,7 +15,7 @@ private _functions = [ // General functions ["blck_fnc_waitTimer","\q\addons\custom_server\Compiles\Functions\GMS_fnc_waitTimer.sqf"], - ["blck_fnc_timedOut","\q\addons\custom_server\Compiles\Functions\GMS_fnc_timedOut.sqf"], + //["blck_fnc_timedOut","\q\addons\custom_server\Compiles\Functions\GMS_fnc_timedOut.sqf"], ["blck_fnc_FindSafePosn","\q\addons\custom_server\Compiles\Functions\GMS_fnc_findSafePosn.sqf"], ["blck_fnc_findSafePosn_2","\q\addons\custom_server\Compiles\Functions\GMS_fnc_findSafePosn_2.sqf"], ["blck_fnc_randomPosition","\q\addons\custom_server\Compiles\Functions\GMS_fnc_randomPosn.sqf"], // find a randomPosn. see script for details. @@ -50,10 +50,11 @@ private _functions = [ ["blck_fnc_getAllMarkersOfSubtype","\q\addons\custom_server\Compiles\Functions\GMS_fnc_getAllMarkersOfSubtype.sqf"], ["blck_fnc_getAllDMSMarkers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_getAllDMSMarkers.sqf"], ["blck_fnc_createMissionMarkers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_createMissionMarkers.sqf"], + ["blck_fnc_log","\q\addons\custom_server\Compiles\Functions\GMS_fnc_log.sqf"], // Player-related functions - ["GMS_fnc_handlePlayerUpdates","\q\addons\custom_server\Compiles\Units\GMS_fnc_handlePlayerUpdates.sqf"], - ["blck_fnc_MessagePlayers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_AIM.sqf"], // Send messages to players regarding Missions + ["blck_fnc_handlePlayerUpdates","\q\addons\custom_server\Compiles\Units\GMS_fnc_handlePlayerUpdates.sqf"], + ["blck_fnc_MessagePlayers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_messagePlayers.sqf"], // Send messages to players regarding Missions // Mission-related functions ["blck_fnc_selectAILoadout","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAILoadout.sqf"], @@ -70,8 +71,6 @@ private _functions = [ ["blck_fnc_addMissionToQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_addMissionToQue.sqf"], ["blck_fnc_updateMissionQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_updateMissionQue.sqf"], ["blck_fnc_spawnPendingMissions","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnPendingMissions.sqf"], - //["blck_fnc_addLiveAItoQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_addLiveAItoQue.sqf"], - //["blck_fnc_addObjToQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_addObjToQue.sqf"], ["blck_fnc_spawnCrate","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnCrate.sqf"], // Simply spawns a crate of a specified type at a specific position. ["blck_fnc_spawnMissionCrates","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionCrates.sqf"], ["blck_fnc_cleanupObjects","\q\addons\custom_server\Compiles\Missions\GMS_fnc_cleanUpObjects.sqf"], @@ -106,36 +105,23 @@ private _functions = [ ["blck_fnc_sm_monitorEmplaced","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_monitorEmplaced.sqf"], ["blck_fnc_sm_monitorGarrisonsASL","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_monitorGarrisonsASL.sqf"], ["blck_fnc_sm_monitorGarrisons_relPos","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_monitorGarrisons_relPos.sqf"], - //["blck_fnc_sm_spawnVehiclePatrol","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnVehiclePatrol.sqf"], - //["blck_fnc_sm_spawnAirPatrol","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnAirPatrol.sqf"], - //["blck_fnc_sm_spawnEmplaced","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnEmplaced.sqf"], - //["blck_fnc_sm_spawnInfantryPatrol","\q\addons\custom_server\Compiles\Missions\GMS_sm_spawnInfantryPatrol.sqf"], ["blck_fnc_sm_staticPatrolMonitor","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_staticPatrolMonitor.sqf"], - //["blck_fnc_sm_checkForPlayerNearMission","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_checkForPlayerNearMission.sqf"], - //["blck_fnc_sm_spawnAirPatrols","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnAirPatrols.sqf"], - //["blck_fnc_sm_spawnEmplaceds","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnEmplaced.sqf"], - //["blck_fnc_sm_spawnInfantryPatrols","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnInfantryPatrols.sqf"], ["blck_fnc_sm_spawnLootContainers","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnLootContainers.sqf"], ["blck_fnc_sm_spawnObjects","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnObjects.sqf"], - //["blck_fnc_sm_spawnVehiclePatrols","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnVehiclePatrols.sqf"], ["blck_fnc_sm_spawnBuildingGarrison_ASL","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnBuildingGarrisonASL.sqf"], ["blck_fnc_sm_spawnBuildingGarrison_relPos","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnBuildingGarrison_relPos.sqf"], ["blck_fnc_sm_spawnObjectASLVectorDirUp","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnObjectASLVectorDirUp.sqf"], ["blck_fnc_spawnScubaGroup","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnScubaGroup.sqf"], ["blck_fnc_spawnSDVPatrol","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnSDVPatrol.sqf"], ["blck_fnc_spawnSurfacePatrol","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnSurfacePatrol.sqf"], - //["blck_fnc_sm_AddScubaGroup","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_AddScubaGroup.sqf"], - //["blck_fnc_sm_AddSurfaceVehicle","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_AddSurfaceVehicle.sqf"], - //["blck_fnc_sm_AddSDVVehicle","\q\addons\custom_server\Compiles\Missions\GMS_sm_AddSDVVehicle.sqf"], ["blck_fnc_sm_AddGroupToArray", "\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_AddGroupToArray.sqf"], - + ["blck_fnc_initializeMission", "\q\addons\custom_server\Compiles\Missions\GMS_fnc_initializeMission.sqf"], + ["blck_fnc_monitorInitializedMissions","\q\addons\custom_server\Compiles\Missions\GMS_fnc_monitorInitializedMissions.sqf"], + // Group-related functions ["blck_fnc_spawnGroup","\q\addons\custom_server\Compiles\Groups\GMS_fnc_spawnGroup.sqf"], // Spawn a single group and populate it with AI units] ["blck_fnc_setupWaypoints","\q\addons\custom_server\Compiles\Groups\GMS_fnc_setupWaypoints.sqf"], // Set default waypoints for a group - // 7/29/19 script mission; presume another function handles this now. - //["blck_fnc_missionGroupMonitor","\q\addons\custom_server\Compiles\Groups\GMS_fnc_missionGroupMonitor.sqf"], // Monitors active groups for those that are stuck in an SAD waypoint but not in combat - //["blck_fnc_changeToSADWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSADWaypoint.sqf"], - //["blck_fnc_changeToMoveWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToMoveWaypoint.sqf"], + //["blck_fnc_changeToSentryWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSentryWaypoint.sqf"], ["blck_fnc_setNextWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_setNextWaypoint.sqf"], ["blck_fnc_cleanEmptyGroups","\q\addons\custom_server\Compiles\Groups\GMS_fnc_cleanEmptyGroups.sqf"], // GMS_fnc_cleanEmptyGroups @@ -154,10 +140,7 @@ private _functions = [ ["blck_fnc_vehicleMonitor","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_vehicleMonitor.sqf"], ["blck_fnc_spawnMissionReinforcements","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnMissionReinforcements.sqf"], ["blck_fnc_spawnMissionHeli","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnMissionHeli.sqf"], - //["blck_EH_AIVehicle_HandleHit","\q\addons\custom_server\Compiles\Vehicles\GMS_EH_AIVehicle_Hit.sqf"], // Not needed, we can just call the function directly from the EH ["blck_fnc_HandleAIVehicleHit","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_HandleAIVehicleHit.sqf"], - // ["blck_EH_VehicleKilled","\q\addons\custom_server\Compiles\Vehicles\GMS_EH_VehicleKilled.sqf"], // Not needed, we can just call the function directly from the EH - // ["blck_EH_changeLocality","\q\addons\custom_server\Compiles\Vehicles\GMS_EH_changeLocality.sqf"], // Not used at present ["blck_fnc_processAIVehicleKill","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_processAIVehicleKill.sqf"], ["blck_fnc_selectPatrolVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_selectPatrolVehicle.sqf"], ["blck_fnc_releaseVehicleToPlayers","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_releaseVehicleToPlayers.sqf"], @@ -169,8 +152,6 @@ private _functions = [ ["blck_fnc_unlockVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_unlockVehicle.sqf"], ["GMS_fnc_applyVehicleDamagePenalty","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_applyVehicleDamagePenalty.sqf"], ["GMS_fnc_revealVehicleToUnits","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_revealVehicleToUnits.sqf"], - //["GMS_fnc_handleEmptyStaticWeapon","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_handleEmptyStaticWeapon.sqf"], - //["blck_EH_vehicleGetOut","\q\addons\custom_server\Compiles\Vehicles\GMS_EH_vehicleGetOut.sqf"], // Just call the function directly ["blck_fnc_handleVehicleGetOut","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_handleVehicleGetOut.sqf"], ["blck_fnc_checkForEmptyVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_checkForEmptyVehicle.sqf"], ["blck_fnc_handleEmptyVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_handleEmptyVehicle.sqf"], @@ -185,11 +166,9 @@ private _functions = [ ["blck_EH_AIHit","\q\addons\custom_server\Compiles\Units\GMS_EH_AIHit.sqf"], ["blck_EH_unitWeaponReloaded","\q\addons\custom_server\Compiles\Units\GMS_EH_unitWeaponReloaded.sqf"], ["blck_EH_AIfiredNear","\q\addons\custom_server\Compiles\Units\GMS_EH_AIfiredNear.sqf"], - //["blck_EH_animDone","\q\addons\custom_server\Compiles\Units\GMS_EH_animDone.sqf"], ["blck_fnc_processAIKill","\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIKill.sqf"], ["blck_fnc_removeLaunchers","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeLaunchers.sqf"], ["blck_fnc_removeNVG","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeNVG.sqf"], - //["blck_fnc_alertNearbyUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyUnits.sqf"], ["blck_fnc_alertGroupUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertGroupUnits.sqf"], ["GMS_fnc_alertNearbyGroups","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyGroups.sqf"], ["blck_fnc_alertNearbyVehicles","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyVehicles.sqf"], @@ -203,7 +182,6 @@ private _functions = [ ["blck_fnc_spawnLeader","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnLeader.sqf"], ["blck_fnc_spawnCharacter","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnCharacter.sqf"], ["blck_fnc_spawnParaUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnParaUnits.sqf"], - //["blck_fnc_nextAnim","\q\addons\custom_server\Compiles\Units\GMS_fnc_nextAnim.sqf"], ["blck_fnc_placeCharacterInBuilding","\q\addons\custom_server\Compiles\Units\GMS_fnc_placeCharacterInBuilding.sqf"], ["GMS_fnc_removeAllAIgear","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeAllAIgear.sqf"], @@ -219,6 +197,10 @@ private _functions = [ missionnamespace setvariable [_name,compileFinal preprocessFileLineNumbers _path]; } foreach _functions; +#ifdef GRGserver +if (isServer) then {blck_fnc_broadcastServerFPS = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_broadcastServerFPS.sqf";}; +diag_log "blck_functions loaded using GRGserver settings ---- >>>> "; +#endif diff --git a/@GMS/addons/custom_server/Compiles/blck_functions_HC.sqf b/@GMS/addons/custom_server/Compiles/blck_functions_HC.sqf index 9cb2f62..7083a2b 100644 --- a/@GMS/addons/custom_server/Compiles/blck_functions_HC.sqf +++ b/@GMS/addons/custom_server/Compiles/blck_functions_HC.sqf @@ -14,205 +14,13 @@ private _functions = [ // General functions - /* - ["blck_fnc_waitTimer","\q\addons\custom_server\Compiles\Functions\GMS_fnc_waitTimer.sqf"], - ["blck_fnc_timedOut","\q\addons\custom_server\Compiles\Functions\GMS_fnc_timedOut.sqf"], - ["blck_fnc_FindSafePosn","\q\addons\custom_server\Compiles\Functions\GMS_fnc_findSafePosn.sqf"], - ["blck_fnc_randomPosition","\q\addons\custom_server\Compiles\Functions\GMS_fnc_randomPosn.sqf"], // find a randomPosn. see script for details. - ["blck_fnc_findPositionsAlongARadius","\q\addons\custom_server\Compiles\Functions\GMS_fnc_findPositionsAlongARadius.sqf"], - ["blck_fnc_giveTakeCrypto","\q\addons\custom_server\Compiles\Functions\GMS_fnc_giveTakeCrypto.sqf"], - ["blck_fnc_timeAcceleration","\q\addons\custom_server\Compiles\TimeAccel\GMS_fnc_Time.sqf"], - ["blck_fnc_groupsOnAISide","\q\addons\custom_server\Compiles\Functions\GMS_fnc_GroupsOnAISide.sqf"], // Returns the number of groups on the side used by AI - ["blck_fnc_emptyObject","\q\addons\custom_server\Compiles\Functions\GMS_fnc_emptyObject.sqf"], - ["blck_fnc_playerInRange","\q\addons\custom_server\Compiles\Functions\GMS_fnc_playerInRange.sqf"], - ["blck_fnc_playerInRangeArray","\q\addons\custom_server\Compiles\Functions\GMS_fnc_playerInRangeArray.sqf"], - ["blck_fnc_mainThread","\q\addons\custom_server\Compiles\Functions\GMS_fnc_mainThread.sqf"], - ["blck_fnc_allPlayers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_allPlayers.sqf"], - ["blck_fnc_addItemToCrate","\q\addons\custom_server\Compiles\Functions\GMS_fnc_addItemToCrate.sqf"], - ["blck_fnc_loadLootItemsFromArray","\q\addons\custom_server\Compiles\Functions\GMS_fnc_loadLootItemsFromArray.sqf"], - ["blck_fnc_getNumberFromRange","\q\addons\custom_server\Compiles\Functions\GMS_fnc_getNumberFromRange.sqf"], - ["blck_fnc_spawnMarker","\q\addons\custom_server\Compiles\Functions\GMS_fnc_spawnMarker.sqf"], - ["blck_fnc_missionCompleteMarker","\q\addons\custom_server\Compiles\Functions\GMS_fnc_missionCompleteMarker.sqf"], - ["blck_fnc_deleteMarker","\q\addons\custom_server\Compiles\Functions\GMS_fnc_deleteMarker.sqf"], - ["blck_fnc_updateMarkerAliveCount","\q\addons\custom_server\Compiles\Functions\GMS_fnc_updateMarkerAliveCount.sqf"], - ["blck_fnc_addMoneyToObject","\q\addons\custom_server\Compiles\Functions\GMS_fnc_addMoneyToObject.sqf"], - ["blck_fnc_nearestPlayers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_nearestPlayers.sqf"], - ["GMS_fnc_msgIED","\q\addons\custom_server\Compiles\Functions\GMS_fnc_msgIED.sqf"], - ["GMS_fnc_cleanupTemporaryMarkers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_cleanupTemporaryMarkers.sqf"], - ["GMS_fnc_updateCrateSignals","\q\addons\custom_server\Compiles\Functions\GMS_fnc_updateCrateSignals.sqf"], - ["GMS_fnc_isClass","\q\addons\custom_server\Compiles\Functions\GMS_fnc_isClass.sqf"], - ["blck_fnc_findShoreLocation","q\addons\custom_server\Compiles\Functions\GMS_UMS_fnc_findShoreLocation.sqf"], - ["blck_fnc_findWaterDepth","q\addons\custom_server\Compiles\Functions\GMS_UMS_fnc_findWaterDepth.sqf"], - ["blck_fnc_setAILocality","\q\addons\custom_server\Compiles\Functions\GMS_fnc_setAILocality.sqf"], - ["blck_fnc_ai_offloadToClients","\q\addons\custom_server\Compiles\Functions\GMS_fnc_ai_offloadToClients.sqf"], - - // Player-related functions - ["GMS_fnc_handlePlayerUpdates","\q\addons\custom_server\Compiles\Units\GMS_fnc_handlePlayerUpdates.sqf"], - ["blck_fnc_MessagePlayers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_AIM.sqf"], // Send messages to players regarding Missions - - // Mission-related functions - ["blck_fnc_selectAILoadout","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAILoadout.sqf"], - ["blck_fnc_selectAISidearms","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAISidearms.sqf"], - ["blck_fnc_selectAIUniforms","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIUniforms.sqf"], - ["blck_fnc_selectAIHeadgear","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIHeadgear.sqf"], - ["blck_fnc_selectAIVests","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIVests.sqf"], - ["blck_fnc_selectAIBackpacks","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectAIBackpacks.sqf"], - ["blck_fnc_selectChanceHeliPatrol","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectChanceHeliPatrol.sqf"], - ["blck_fnc_selectMissionHelis","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectMissionHelis.sqf"], - ["blck_fnc_selectNumberAirPatrols","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectNumberAirPatrols.sqf"], - ["blck_fnc_selectNumberParatroops","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectNumberParatroops.sqf"], - ["blck_fnc_selectChanceParatroops","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selecctChanceParatroops.sqf"], - ["blck_fnc_addMissionToQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_addMissionToQue.sqf"], - ["blck_fnc_updateMissionQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_updateMissionQue.sqf"], - ["blck_fnc_spawnPendingMissions","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnPendingMissions.sqf"], - ["blck_fnc_addLiveAItoQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_addLiveAItoQue.sqf"], - ["blck_fnc_addObjToQue","\q\addons\custom_server\Compiles\Missions\GMS_fnc_addObjToQue.sqf"], - ["blck_fnc_spawnCrate","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnCrate.sqf"], // Simply spawns a crate of a specified type at a specific position. - ["blck_fnc_spawnMissionCrates","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionCrates.sqf"], - ["blck_fnc_cleanupObjects","\q\addons\custom_server\Compiles\Missions\GMS_fnc_cleanUpObjects.sqf"], - ["blck_fnc_spawnCompositionObjects","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnBaseObjects.sqf"], - ["blck_fnc_spawnRandomLandscape","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnRandomLandscape.sqf"], - ["blck_fnc_spawnMissionVehiclePatrols","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionVehiclePatrols.sqf"], - ["blck_fnc_spawnEmplacedWeaponArray","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnEmplacedWeaponArray.sqf"], - ["blck_fnc_spawnMissionAI","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionAI.sqf"], - ["blck_fnc_spawnMissionLootVehicles","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMissionLootVehicles.sqf"], - ["blck_fnc_fillBoxes","\q\addons\custom_server\Compiles\Missions\GMS_fnc_fillBoxes.sqf"], // Adds items to an object according to passed parameters. See the script for details. - ["blck_fnc_smokeAtCrates","\q\addons\custom_server\Compiles\Missions\GMS_fnc_smokeAtCrates.sqf"], // Spawns a wreck and adds smoke to it - ["blck_fnc_spawnMines","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnMines.sqf"], // Deploys mines at random locations around the mission center - ["blck_fnc_clearMines","\q\addons\custom_server\Compiles\Missions\GMS_fnc_clearMines.sqf"], // clears mines in an array passed as a parameter - ["blck_fnc_signalEnd","\q\addons\custom_server\Compiles\Missions\GMS_fnc_signalEnd.sqf"], // deploy smoke grenades at loot crates at the end of the mission. - ["blck_fnc_endMission","\q\addons\custom_server\Compiles\Missions\GMS_fnc_endMission.sqf"], - ["blck_fnc_paraDropObject","\q\addons\custom_server\Compiles\Missions\GMS_fnc_paraDropObject.sqf"], - ["blck_fnc_loadMissionCrate","\q\addons\custom_server\Compiles\Missions\GMS_fnc_loadMissionCrate.sqf"], - ["blck_fnc_crateMoved","\q\addons\custom_server\Compiles\Missions\GMS_fnc_crateMoved.sqf"], - ["blck_fnc_crateMarker","\q\addons\custom_server\Compiles\Missions\GMS_fnc_crateMarker.sqf"], - ["blck_fnc_garrisonBuilding_RelPosSystem","\q\addons\custom_server\Compiles\Missions\GMS_fnc_garrisonBuilding_relPosSystem.sqf"], - ["blck_fnc_garrisonBuilding_ATLsystem","\q\addons\custom_server\Compiles\Missions\GMS_fnc_garrisonBuilding_ATLsystem.sqf"], - ["blck_fnc_spawnGarrisonInsideBuilding_ATL","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnGarrisonInsideBuilding_ATL.sqf"], - ["blck_fnc_spawnGarrisonInsideBuilding_relPos","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnGarrisonInsideBuilding_relPos.sqf"], - ["GMS_fnc_selectVehicleCrewCount","\q\addons\custom_server\Compiles\Missions\GMS_fnc_selectVehicleCrewCount.sqf"], - ["blck_fnc_addDyanamicUMS_Mission","q\addons\custom_server\Compiles\Missions\GMS_fnc_addDynamicUMS_Mission.sqf"], - ["blck_fnc_sm_monitorInfantry","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_monitorInfantry.sqf"], - ["blck_fnc_sm_monitorScuba","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_monitorScuba.sqf"], - ["blck_fnc_sm_monitorVehicles","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_monitorVehicles.sqf"], - ["blck_fnc_sm_monitorAircraft","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_monitorAircraft.sqf"], - ["blck_fnc_sm_monitorShips","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_monitorShips.sqf"], - ["blck_fnc_sm_monitorSubs","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_monitorSubs.sqf"], - ["blck_fnc_sm_monitorEmplaced","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_monitorEmplaced.sqf"], - ["blck_fnc_sm_monitorGarrisonsASL","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_monitorGarrisonsASL.sqf"], - ["blck_fnc_sm_monitorGarrisons_relPos","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_monitorGarrisons_relPos.sqf"], - //["blck_fnc_sm_spawnVehiclePatrol","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnVehiclePatrol.sqf"], - ["blck_fnc_sm_spawnAirPatrol","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnAirPatrol.sqf"], - ["blck_fnc_sm_spawnEmplaced","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnEmplaced.sqf"], -// ["blck_fnc_sm_spawnInfantryPatrol","\q\addons\custom_server\Compiles\Missions\GMS_sm_spawnInfantryPatrol.sqf"], - ["blck_fnc_sm_staticPatrolMonitor","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_staticPatrolMonitor.sqf"], -// ["blck_fnc_sm_checkForPlayerNearMission","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_checkForPlayerNearMission.sqf"], - ["blck_fnc_sm_spawnAirPatrols","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnAirPatrols.sqf"], - //["blck_fnc_sm_spawnEmplaceds","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnEmplaced.sqf"], - ["blck_fnc_sm_spawnInfantryPatrols","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnInfantryPatrols.sqf"], - ["blck_fnc_sm_spawnLootContainers","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnLootContainers.sqf"], - ["blck_fnc_sm_spawnObjects","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnObjects.sqf"], - ["blck_fnc_sm_spawnVehiclePatrols","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnVehiclePatrols.sqf"], - ["blck_fnc_sm_spawnBuildingGarrison_ASL","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnBuildingGarrisonASL.sqf"], - ["blck_fnc_sm_spawnBuildingGarrison_relPos","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnBuildingGarrison_relPos.sqf"], - ["blck_fnc_sm_spawnObjectASLVectorDirUp","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_spawnObjectASLVectorDirUp.sqf"], - ["blck_fnc_spawnScubaGroup","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnScubaGroup.sqf"], - ["blck_fnc_spawnSDVPatrol","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnSDVPatrol.sqf"], - ["blck_fnc_spawnSurfacePatrol","\q\addons\custom_server\Compiles\Missions\GMS_fnc_spawnSurfacePatrol.sqf"], - //["blck_fnc_sm_AddScubaGroup","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_AddScubaGroup.sqf"], - //["blck_fnc_sm_AddSurfaceVehicle","\q\addons\custom_server\Compiles\Missions\GMS_fnc_sm_AddSurfaceVehicle.sqf"], - ["blck_fnc_sm_AddSDVVehicle","\q\addons\custom_server\Compiles\Missions\GMS_sm_AddSDVVehicle.sqf"], - ["blck_fnc_sm_AddGroupToArray", "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_AddGroupToArray.sqf"], - */ - // Group-related functions - //["blck_fnc_spawnGroup","\q\addons\custom_server\Compiles\Groups\GMS_fnc_spawnGroup.sqf"], // Spawn a single group and populate it with AI units] - //["blck_fnc_setupWaypoints","\q\addons\custom_server\Compiles\Groups\GMS_fnc_setupWaypoints.sqf"], // Set default waypoints for a group - // 7/29/19 script mission; presume another function handles this now. - //["blck_fnc_missionGroupMonitor","\q\addons\custom_server\Compiles\Groups\GMS_fnc_missionGroupMonitor.sqf"], // Monitors active groups for those that are stuck in an SAD waypoint but not in combat - //["blck_fnc_changeToSADWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSADWaypoint.sqf"], - //["blck_fnc_changeToMoveWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToMoveWaypoint.sqf"], - //["blck_fnc_changeToSentryWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_changeToSentryWaypoint.sqf"], ["blck_fnc_setNextWaypoint","\q\addons\custom_server\Compiles\Groups\GMS_fnc_setNextWaypoint.sqf"], - //["blck_fnc_cleanEmptyGroups","\q\addons\custom_server\Compiles\Groups\GMS_fnc_cleanEmptyGroups.sqf"], // GMS_fnc_cleanEmptyGroups - //["blck_fnc_findNearestInfantryGroup","\q\addons\custom_server\Compiles\Groups\GMS_fnc_findNearestInfantryGroup.sqf"], - //["blck_fnc_createGroup","\q\addons\custom_server\Compiles\Groups\GMS_fnc_create_AI_Group.sqf"], // create a group for which other functions spawn AI. - //["blck_fnc_simulationManager","\q\addons\custom_server\Compiles\Groups\GMS_fnc_simulationMonitor.sqf"], - //["blck_fnc_groupWaypointMonitor","\q\addons\custom_server\Compiles\Groups\GMS_fnc_groupWaypointMonitor.sqf"], - //["blck_fnc_checkgroupwaypointstatus","\q\addons\custom_server\Compiles\Groups\GMS_fnc_checkgroupwaypointstatus.sqf"], - // blck_fnc_checkgroupwaypointstatus - /* - // Functions specific to vehicles, whether wheeled, aircraft or static - ["blck_fnc_spawnVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehicle.sqf"], - ["blck_fnc_spawnVehiclePatrol","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehiclePatrol.sqf"], - ["blck_fnc_protectVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_protectVehicle.sqf"], - ["blck_fnc_configureMissionVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_configureMissionVehicle.sqf"], - ["blck_fnc_vehicleMonitor","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_vehicleMonitor.sqf"], - ["blck_fnc_spawnMissionReinforcements","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnMissionReinforcements.sqf"], - ["blck_fnc_spawnMissionHeli","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnMissionHeli.sqf"], - ["blck_EH_AIVehicle_HandleHit","\q\addons\custom_server\Compiles\Vehicles\GMS_EH_AIVehicle_Hit.sqf"], - ["blck_fnc_HandleAIVehicleHit","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_HandleAIVehicleHit.sqf"], - ["blck_EH_VehicleKilled","\q\addons\custom_server\Compiles\Vehicles\GMS_EH_VehicleKilled.sqf"], - ["blck_EH_changeLocality","\q\addons\custom_server\Compiles\Vehicles\GMS_EH_changeLocality.sqf"], - ["blck_fnc_processAIVehicleKill","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_processAIVehicleKill.sqf"], - ["blck_fnc_selectPatrolVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_selectPatrolVehicle.sqf"], - ["blck_fnc_releaseVehicleToPlayers","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_releaseVehicleToPlayers.sqf"], - ["blck_fnc_deleteAIVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_deleteAIVehicle.sqf"], - ["blck_fnc_destroyVehicleAndCrew","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_destroyVehicleAndCrew.sqf"], - ["blck_fnc_reloadVehicleAmmo","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_reloadVehicleAmmo.sqf"], - ["blck_fnc_scanForPlayersNearVehicles","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_scanForPlayersNearVehicles.sqf"], - ["blck_fnc_revealNearbyPlayers","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_revealNearbyPlayers.sqf"], - ["GMS_fnc_unlockServerVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_unlockServerVehicle.sqf"], - ["GMS_fnc_applyVehicleDamagePenalty","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_applyVehicleDamagePenalty.sqf"], - ["GMS_fnc_revealVehicleToUnits","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_revealVehicleToUnits.sqf"], - //["GMS_fnc_handleEmptyStaticWeapon","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_handleEmptyStaticWeapon.sqf"], - */ - //["blck_EH_vehicleGetOut","\q\addons\custom_server\Compiles\Vehicles\GMS_EH_vehicleGetOut.sqf"], ["blck_fnc_handleVehicleGetOut","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_handleVehicleGetOut.sqf"], - /* - ["blck_fnc_checkForEmptyVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_checkForEmptyVehicle.sqf"], - ["blck_fnc_handleEmptyVehicle","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_handleEmptyVehicle.sqf"], - ["blck_fnc_loadVehicleCrew","\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_loadVehicleCrew.sqf"], - */ - // functions to support Units - //["blck_fnc_removeGear","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeGear.sqf"], // Strip an AI unit of all gear. - //["blck_fnc_spawnUnit","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnUnit.sqf"], // spawn individual AI ["blck_EH_AIKilled","\q\addons\custom_server\Compiles\Units\GMS_EH_AIKilled.sqf"], // Event handler to process AI deaths - //["blck_EH_AIHit","\q\addons\custom_server\Compiles\Units\GMS_EH_AIHit.sqf"], - ["blck_EH_unitWeaponReloaded","\q\addons\custom_server\Compiles\Units\GMS_EH_unitWeaponReloaded.sqf"], ["blck_EH_AIfiredNear","\q\addons\custom_server\Compiles\Units\GMS_EH_AIfiredNear.sqf"], ["blck_fnc_processAIfiredNear","\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIFiredNear.sqf"], - - //["blck_EH_animDone","\q\addons\custom_server\Compiles\Units\GMS_EH_animDone.sqf"], - - ["blck_fnc_processAIKill","\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIKill.sqf"], - /* - ["blck_fnc_removeLaunchers","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeLaunchers.sqf"], - ["blck_fnc_removeNVG","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeNVG.sqf"], - ["blck_fnc_alertNearbyUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyUnits.sqf"], - ["blck_fnc_alertGroupUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertGroupUnits.sqf"], - ["GMS_fnc_alertNearbyGroups","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyGroups.sqf"], - ["blck_fnc_alertNearbyVehicles","\q\addons\custom_server\Compiles\Units\GMS_fnc_alertNearbyVehicles.sqf"], - ["blck_fnc_processIlleagalAIKills","\q\addons\custom_server\Compiles\Units\GMS_fnc_processIlleagalAIKills.sqf"], - ["blck_fnc_cleanupDeadAI","\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupDeadAI.sqf"], // handles deletion of AI bodies and gear when it is time. - ["blck_fnc_setSkill","\q\addons\custom_server\Compiles\Units\GMS_fnc_setSkill.sqf"], - ["blck_fnc_cleanupAliveAI","\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupAliveAI.sqf"], - ["blck_fnc_deleteAI","\q\addons\custom_server\Compiles\Units\GMS_fnc_deleteAI.sqf"], - ["blck_fnc_processAIHit","\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIHit.sqf"], - ["blck_fnc_spawnHostage","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnHostage.sqf"], - ["blck_fnc_spawnLeader","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnLeader.sqf"], - ["blck_fnc_spawnCharacter","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnCharacter.sqf"], - ["blck_fnc_spawnParaUnits","\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnParaUnits.sqf"], - //["blck_fnc_nextAnim","\q\addons\custom_server\Compiles\Units\GMS_fnc_nextAnim.sqf"], - ["blck_fnc_placeCharacterInBuilding","\q\addons\custom_server\Compiles\Units\GMS_fnc_placeCharacterInBuilding.sqf"], - ["GMS_fnc_removeAllAIgear","\q\addons\custom_server\Compiles\Units\GMS_fnc_removeAllAIgear.sqf"], - */ - // HC support functions - //["blck_fnc_HC_XferGroup","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_XferGroup.sqf"], - //["blck_fnc_HC_passToHCs","\q\addons\custom_server\Compiles\HC\GMS_fnc_passToHCs.sqf"], - //["blck_fnc_HC_leastBurdened","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_leastBurdened.sqf"], - //["blck_fnc_HC_countGroupsAssigned","\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_countGroupsAssigned.sqf"] - [] + ["blck_fnc_processAIKill","\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIKill.sqf"] ]; { diff --git a/@GMS/addons/custom_server/Compiles/blck_variables.sqf b/@GMS/addons/custom_server/Compiles/blck_variables.sqf index 1557a82..a2d60a8 100644 --- a/@GMS/addons/custom_server/Compiles/blck_variables.sqf +++ b/@GMS/addons/custom_server/Compiles/blck_variables.sqf @@ -41,7 +41,6 @@ blck_connectedHCs = []; blck_missionMarkerRootName = "blckeagls_marker"; DMS_missionMarkerRootName = "DMS_MissionMarker"; blck_missionLabelMarkers = []; - blck_temporaryMarkers = []; blck_illuminatedCrates = []; // [crate,duration,freq of replacement] blck_mainThreadUpdateInterval = 60; diff --git a/@GMS/addons/custom_server/Configs/blck_configs.sqf b/@GMS/addons/custom_server/Configs/blck_configs.sqf index 825e76c..491377a 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs.sqf @@ -17,8 +17,8 @@ changing any of these variables may break the mission systemChat */ blck_locationBlackList = []; // Do not touch ... - blck_debugON = false; // Do not touch ... - blck_debugLevel = 0; // Do not touch ... + blck_debugON = true; // Do not touch ... + blck_debugLevel = 3; // Do not touch ... #ifdef blck_milServer if (true) exitWith { @@ -42,8 +42,8 @@ 3) A time acceleration module. */ - blck_spawnMapAddons = true; // When true map addons will be spawned based on parameters define in custum_server\MapAddons\MapAddons_init.sqf - blck_spawnStaticLootCrates = true; // When true, static loot crates will be spawned and loaded with loot as specified in custom_server\SLS\SLS_init_Epoch.sqf (or its exile equivalent). + blck_spawnMapAddons = false; // When true map addons will be spawned based on parameters define in custum_server\MapAddons\MapAddons_init.sqf + blck_spawnStaticLootCrates = false; // When true, static loot crates will be spawned and loaded with loot as specified in custom_server\SLS\SLS_init_Epoch.sqf (or its exile equivalent). blck_simulationManager = blck_useBlckeaglsSimulationManager; //diag_log format["[blckeagls] blck_configs: blck_simulationManager = %1",blck_simulationManager]; /* @@ -53,7 +53,7 @@ */ // Note that you can define map-specific variants in custom_server\configs\blck_custom_config.sqf - blck_useTimeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. + blck_useTimeAcceleration = false; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. blck_timeAccelerationDay = 2; // Daytime time accelearation blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation blck_timeAccelerationNight = 12; // Nighttim time acceleration @@ -100,11 +100,11 @@ blck_showCountAliveAI = true; //Minimum distance between missions - blck_MinDistanceFromMission = 1000; + blck_MinDistanceFromMission = 800; blck_minDistanceToBases = 1000; blck_minDistanceToPlayer = 800; - blck_minDistanceFromTowns = 500; - blck_minDistanceFromDMS = 500; // minimum distance for a blackeagls mission from any nearby DMS missions. set to -1 to disable this check. + blck_minDistanceFromTowns = 400; + blck_minDistanceFromDMS = 800; // minimum distance for a blackeagls mission from any nearby DMS missions. set to -1 to disable this check. /////////////////////////////// // Mission Smoke and Signals @@ -113,7 +113,7 @@ // global loot crate options // Options to spawn a smoking wreck near the crate. When the first parameter is true, a wreck or junk pile will be spawned. // It's position can be either "center" or "random". smoking wreck will be spawned at a random location between 15 and 50 m from the mission. - blck_SmokeAtMissions = [false,"random"]; // set to [false,"anything here"] to disable this function altogether. + blck_SmokeAtMissions = [true,"random"]; // set to [false,"anything here"] to disable this function altogether. blck_useSignalEnd = true; // When true a smoke grenade/chemlight will appear at the loot crate for 2 min after mission completion. blck_missionEndCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" @@ -245,18 +245,18 @@ blck_maxSpawnedMissions = 9; // Reduce to 1 sec for immediate spawns, or longer if you wish to space the missions out - blck_TMin_Orange = 250; - blck_TMin_Green = 200; - blck_TMin_Blue = 120; - blck_TMin_Red = 150; - blck_TMin_UMS = 180; + blck_TMin_Orange = 480; + blck_TMin_Green = 420; + blck_TMin_Blue = 300; + blck_TMin_Red = 360; + blck_TMin_UMS = 300; //Maximum Spawn time between missions in seconds - blck_TMax_Orange = 360; - blck_TMax_Green = 300; - blck_TMax_Blue = 200; - blck_TMax_Red = 250; + blck_TMax_Orange = 520; + blck_TMax_Green = 500; + blck_TMax_Blue = 340; + blck_TMax_Red = 400; blck_TMax_UMS = 400; @@ -387,7 +387,7 @@ //blck_AIAlertDistance = [150,225,400,500]; // How precisely player locations will be revealed to AI after an AI kill // values are ordered as follows [blue, red, green, orange]; - blck_AIIntelligence = [0.3, 0.5, 0.7, 0.9]; + blck_AIIntelligence = [0.1, 0.2, 0.3, 0.4]; blck_baseSkill = 1.0; // The overal skill of the AI - range 0.1 to 1.0. @@ -494,14 +494,18 @@ if (toLower(blck_modType) isEqualTo "epoch") then { - diag_log format["[blckeagls] Loading Mission System using Parameters for %1",blck_modType]; + execVM "\q\addons\custom_server\Configs\blck_configs_epoch.sqf"; }; if (toLower(blck_modType) isEqualTo "exile") then { - diag_log format["[blckeagls] Loading Mission System using Parameters for %1",blck_modType]; + execVM "\q\addons\custom_server\Configs\blck_configs_exile.sqf"; }; + if (toLower(blck_modType) isEqualTo "default") then + { + execVM "\q\addons\custom_server\Configs\blck_configs_default.sqf"; + }; uiSleep 10; if (blck_useConfigsGeneratedLoadouts) then { diff --git a/@GMS/addons/custom_server/Configs/blck_configs_default.sqf b/@GMS/addons/custom_server/Configs/blck_configs_default.sqf new file mode 100644 index 0000000..3b78722 --- /dev/null +++ b/@GMS/addons/custom_server/Configs/blck_configs_default.sqf @@ -0,0 +1,876 @@ +/* + By Ghostrider [GRG] + Copyright 2016 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\init\build.sqf"; +diag_log format["[blckeagls] loading default configurations for blckeagls build %1",blck_buildNumber]; +//////////// +// default settings +//////////// + + // list of locations that are protected against mission spawns + + switch (toLower(worldName)) do + { + case "altis": { + blck_locationBlackList append [ + //Add location as [[xpos,ypos,0],minimumDistance], + // Note that there should not be a comma after the last item in this table + [[10800,10641,0],1000] // isthmus - missions that spawn here often are glitched. + ]; + }; + case "tanoa": { + blck_locationBlackList append [ ]; + }; + }; + +/********************************************************************************* + +AI WEAPONS, UNIFORMS, VESTS AND GEAR + +**********************************************************************************/ + + blck_AI_Side = EAST; + + blck_crateMoneyBlue = [100,250]; + blck_crateMoneyRed = [175, 300]; + blck_crateMoneyGreen = [300, 500]; + blck_crateMoneyOrange = [500, 750]; + + blck_allowSalesAtBlackMktTraders = true; // Allow vehicles to be sold at Halvjes black market traders. + + blck_maximumItemPriceInAI_Loadouts = 100; + + blck_lightlyArmed_ARMA3 = [ + "B_G_Offroad_01_armed_F", + "O_G_Offroad_01_armed_F", + "B_MRAP_01_gmg_F", + "B_MRAP_01_hmg_F", + "O_MRAP_02_gmg_F", + "O_MRAP_02_hmg_F", + "I_MRAP_03_hmg_F", + "I_MRAP_03_gmg_F", + "B_APC_Wheeled_01_cannon_F", + "I_APC_Wheeled_03_cannon_F" + ]; + + blck_tracked_APC_ARMA3 = [ + "B_APC_Tracked_01_rcws_F", + "B_APC_Tracked_01_CRV_F", + "B_APC_Tracked_01_AA_F", + "O_APC_Tracked_02_cannon_F", + "O_APC_Tracked_02_AA_F", + "O_APC_Wheeled_02_rcws_F", + "I_APC_tracked_03_cannon_F" + ]; + + blck_Tanks_ARMA3 = [ + //"B_MBT_01_arty_F", + "B_MBT_01_mlrs_F", + "B_MBT_01_TUSK_F", + "O_MBT_02_cannon_F", + //"O_MBT_02_arty_F", + "I_MBT_03_cannon_F" + ]; + + blck_APC_CUP = [ + "CUP_B_Mastiff_GMG_GB_D", + "CUP_B_Mastiff_HMG_GB_D", + "CUP_B_Ridgback_HMG_GB_D", + "CUP_B_Ridgback_GMG_GB_D", + "CUP_B_M1128_MGS_Desert", + "CUP_B_M1135_ATGMV_Desert_Slat", + "CUP_B_M1133_MEV_Desert_Slat", + "CUP_B_LAV25M240_desert_USMC", + "CUP_B_M1129_MC_MK19_Desert_Slat", + "CUP_B_LAV25_HQ_desert_USMC", + "CUP_B_BRDM2_ATGM_CDF", + "CUP_B_BTR60_CDF", + "CUP_B_M1130_CV_M2_Desert_Slat", + "CUP_B_M1126_ICV_MK19_Desert_Slat", + "CUP_O_BTR90_RU", + "CUP_O_GAZ_Vodnik_BPPU_RU", + "CUP_B_M1126_ICV_M2_Desert", + "CUP_B_M1126_ICV_MK19_Desert", + "CUP_B_M1130_CV_M2_Desert", + "CUP_B_M1126_ICV_M2_Desert_Slat", + "CUP_B_M1133_MEV_Desert", + "CUP_O_GAZ_Vodnik_AGS_RU", + "CUP_O_GAZ_Vodnik_PK_RU" + ]; + + blck_Tanks_CUP = [ + "CUP_B_M2A3Bradley_USA_D", + "CUP_B_M113_desert_USA", + "CUP_B_M163_USA", + "CUP_B_M6LineBacker_USA_D", + "CUP_B_M1A1_DES_US_Army", + "CUP_B_M1A2_TUSK_MG_DES_US_Army", + "CUP_B_AAV_USMC", + "CUP_B_M270_DPICM_USA", + "CUP_B_ZSU23_CDF", + "CUP_B_BMP2_CDF", + "CUP_B_T72_CDF", + "CUP_I_T34_NAPA", + "CUP_B_Challenger2_NATO", + "CUP_B_FV432_Bulldog_GB_D_RWS", + "CUP_B_FV432_Bulldog_GB_D", + "CUP_B_FV510_GB_D_SLAT", + "CUP_B_MCV80_GB_D_SLAT", + "CUP_O_2S6_RU", + "CUP_O_BMP3_RU", + "CUP_O_T90_RU", + "CUP_O_T55_SLA", + "CUP_O_BMP1P_TKA", + "CUP_B_M270_DPICM_USA", + "CUP_B_M2Bradley_USA_W", + "CUP_B_FV510_GB_D", + "CUP_B_MCV80_GB_D", + "CUP_B_M7Bradley_USA_D", + "CUP_O_2S6_RU", + "CUP_O_BMP1_TKA" + ]; + + blck_AIPatrolVehicles = ["B_LSV_01_armed_F","I_C_Offroad_02_LMG_F","B_T_LSV_01_armed_black_F","B_T_LSV_01_armed_olive_F","B_T_LSV_01_armed_sand_F"]; // Type of vehicle spawned to defend AI bases + blck_AIPatrolVehiclesBlue = blck_AIPatrolVehicles; + blck_AIPatrolVehiclesRed = blck_AIPatrolVehicles; + blck_AIPatrolVehiclesGreen = blck_AIPatrolVehicles; + blck_AIPatrolVehiclesOrange = blck_AIPatrolVehicles; + + // Blacklisted itesm + blck_blacklistedOptics = ["optic_Nightstalker","optic_tws","optic_tws_mg"]; + + // AI Weapons and Attachments + blck_bipods = ["bipod_01_F_blk","bipod_01_F_mtp","bipod_01_F_snd","bipod_02_F_blk","bipod_02_F_hex","bipod_02_F_tan","bipod_03_F_blk","bipod_03_F_oli"]; + + blck_Optics_Holo = ["optic_Hamr","optic_MRD","optic_Holosight","optic_Holosight_smg","optic_Aco","optic_ACO_grn","optic_ACO_grn_smg","optic_Aco_smg","optic_Yorris"]; + blck_Optics_Reticule = ["optic_Arco","optic_MRCO"]; + blck_Optics_Scopes = [ + "optic_AMS","optic_AMS_khk","optic_AMS_snd", + "optic_DMS", + "optic_KHS_blk","optic_KHS_hex","optic_KHS_old","optic_KHS_tan", + "optic_LRPS", + "optic_Nightstalker", + "optic_NVS", + "optic_SOS", + "optic_tws" + //"optic_tws_mg", + ]; + blck_Optics_Apex = [ + //Apex + "optic_Arco_blk_F", "optic_Arco_ghex_F", + "optic_DMS_ghex_F", + "optic_Hamr_khk_F", + "optic_ERCO_blk_F","optic_ERCO_khk_F","optic_ERCO_snd_F", + "optic_SOS_khk_F", + "optic_LRPS_tna_F","optic_LRPS_ghex_F", + "optic_Holosight_blk_F","optic_Holosight_khk_F","optic_Holosight_smg_blk_F" + ]; + blck_Optics = blck_Optics_Holo + blck_Optics_Reticule + blck_Optics_Scopes; + + #ifdef useAPEX + blck_Optics = blck_Optics + blck_Optics_Apex; + #endif + blck_bipods = [ + "bipod_01_F_blk","bipod_01_F_mtp","bipod_01_F_snd","bipod_02_F_blk","bipod_02_F_hex","bipod_02_F_tan","bipod_03_F_blk","bipod_03_F_oli", + //Apex + "bipod_01_F_khk" + ]; + + blck_silencers = [ + "muzzle_snds_338_black","muzzle_snds_338_green","muzzle_snds_338_sand","muzzle_snds_93mmg","muzzle_snds_93mmg_tan","muzzle_snds_acp","muzzle_snds_B", + "muzzle_snds_H","muzzle_snds_H_MG","muzzle_snds_H_SW","muzzle_snds_L","muzzle_snds_M", + //Apex + "muzzle_snds_H_khk_F","muzzle_snds_H_snd_F","muzzle_snds_58_blk_F","muzzle_snds_m_khk_F","muzzle_snds_m_snd_F","muzzle_snds_B_khk_F","muzzle_snds_B_snd_F", + "muzzle_snds_58_wdm_F","muzzle_snds_65_TI_blk_F","muzzle_snds_65_TI_hex_F","muzzle_snds_65_TI_ghex_F","muzzle_snds_H_MG_blk_F","muzzle_snds_H_MG_khk_F" + ]; + + blck_RifleSniper = [ + "srifle_EBR_F","srifle_GM6_F","srifle_LRR_F","srifle_DMR_01_F" + ]; + + blck_RifleAsault_556 = [ + "arifle_SDAR_F","arifle_TRG21_F","arifle_TRG20_F","arifle_TRG21_GL_F","arifle_Mk20_F","arifle_Mk20C_F","arifle_Mk20_GL_F","arifle_Mk20_plain_F","arifle_Mk20C_plain_F","arifle_Mk20_GL_plain_F","arifle_SDAR_F" + ]; + + blck_RifleAsault_650 = [ + "arifle_Katiba_F","arifle_Katiba_C_F","arifle_Katiba_GL_F","arifle_MXC_F","arifle_MX_F","arifle_MX_GL_F","arifle_MXM_F" + ]; + + blck_RifleAsault = blck_RifleAsault_556 + blck_RifleAsault_650; + + blck_RifleLMG = [ + "LMG_Mk200_F","LMG_Zafir_F" + ]; + + blck_RifleOther = [ + "SMG_01_F","SMG_02_F" + ]; + + blck_Pistols = [ + "hgun_PDW2000_F","hgun_ACPC2_F","hgun_Rook40_F","hgun_P07_F","hgun_Pistol_heavy_01_F","hgun_Pistol_heavy_02_F","hgun_Pistol_Signal_F" + ]; + blck_Pistols_blue = blck_Pistols; + blck_Pistols_red = blck_Pistols; + blck_Pistols_green = blck_Pistols; + blck_Pistols_orange = blck_Pistols; + + blck_DLC_MMG = [ + "MMG_01_hex_F","MMG_02_sand_F","MMG_01_tan_F","MMG_02_black_F","MMG_02_camo_F" + ]; + + blck_DLC_Sniper = [ + "srifle_DMR_02_camo_F","srifle_DMR_02_F","srifle_DMR_02_sniper_F","srifle_DMR_03_F","srifle_DMR_03_tan_F","srifle_DMR_04_F","srifle_DMR_04_Tan_F","srifle_DMR_05_blk_F","srifle_DMR_05_hex_F","srifle_DMR_05_tan_F","srifle_DMR_06_camo_F","srifle_DMR_06_olive_F" + ]; + blck_apexWeapons = ["arifle_AK12_F","arifle_AK12_GL_F","arifle_AKM_F","arifle_AKM_FL_F","arifle_AKS_F","arifle_ARX_blk_F","arifle_ARX_ghex_F","arifle_ARX_hex_F","arifle_CTAR_blk_F","arifle_CTAR_hex_F", + "arifle_CTAR_ghex_F","arifle_CTAR_GL_blk_F","arifle_CTARS_blk_F","arifle_CTARS_hex_F","arifle_CTARS_ghex_F","arifle_SPAR_01_blk_F","arifle_SPAR_01_khk_F","arifle_SPAR_01_snd_F", + "arifle_SPAR_01_GL_blk_F","arifle_SPAR_01_GL_khk_F","arifle_SPAR_01_GL_snd_F","arifle_SPAR_02_blk_F","arifle_SPAR_02_khk_F","arifle_SPAR_02_snd_F","arifle_SPAR_03_blk_F", + "arifle_SPAR_03_khk_F","arifle_SPAR_03_snd_F","arifle_MX_khk_F","arifle_MX_GL_khk_F","arifle_MXC_khk_F","arifle_MXM_khk_F"]; + + //This defines the random weapon to spawn on the AI + //https://community.bistudio.com/wiki/Arma_3_CfgWeapons_Weapons + blck_WeaponList_Orange = blck_RifleSniper + blck_RifleAsault_650 + blck_RifleLMG + blck_DLC_Sniper + blck_DLC_MMG; + blck_WeaponList_Green = blck_RifleSniper + blck_RifleAsault_650 +blck_RifleLMG + blck_DLC_MMG + blck_apexWeapons; + blck_WeaponList_Blue = blck_RifleOther + blck_RifleAsault_556 +blck_RifleAsault_650; + blck_WeaponList_Red = blck_RifleAsault_556 + blck_RifleSniper + blck_RifleAsault_650 + blck_RifleLMG; + + #ifdef useAPEX + + blck_WeaponList_Orange = blck_WeaponList_Orange + blck_apexWeapons; + blck_WeaponList_Green = blck_WeaponList_Green + blck_apexWeapons; + #endif + + blck_backpacks = ["B_Carryall_ocamo","B_Carryall_oucamo","B_Carryall_mcamo","B_Carryall_oli","B_Carryall_khk","B_Carryall_cbr" ]; + blck_ApexBackpacks = [ + "B_Bergen_mcamo_F","B_Bergen_dgtl_F","B_Bergen_hex_F","B_Bergen_tna_F","B_AssaultPack_tna_F","B_Carryall_ghex_F", + "B_FieldPack_ghex_F","B_ViperHarness_blk_F","B_ViperHarness_ghex_F","B_ViperHarness_hex_F","B_ViperHarness_khk_F", + "B_ViperHarness_oli_F","B_ViperLightHarness_blk_F","B_ViperLightHarness_ghex_F","B_ViperLightHarness_hex_F","B_ViperLightHarness_khk_F","B_ViperLightHarness_oli_F" + ]; + + #ifdef useAPEX + blck_backpacks = blck_backpacks + blck_ApexBackpacks; + #endif + blck_backpacks_blue = blck_backpacks; + blck_backpacks_red = blck_backpacks; + blck_backpacks_green = blck_backpacks; + blck_backpacks_orange = blck_backpacks; + + blck_BanditHeadgear = ["H_Shemag_khk","H_Shemag_olive","H_Shemag_tan","H_ShemagOpen_khk"]; + //This defines the skin list, some skins are disabled by default to permit players to have high visibility uniforms distinct from those of the AI. + blck_headgear = [ + "H_Cap_blk", + "H_Cap_blk_Raven", + "H_Cap_blu", + "H_Cap_brn_SPECOPS", + "H_Cap_grn", + "H_Cap_headphones", + "H_Cap_khaki_specops_UK", + "H_Cap_oli", + "H_Cap_press", + "H_Cap_red", + "H_Cap_tan", + "H_Cap_tan_specops_US", + "H_Watchcap_blk", + "H_Watchcap_camo", + "H_Watchcap_khk", + "H_Watchcap_sgg", + "H_MilCap_blue", + "H_MilCap_dgtl", + "H_MilCap_mcamo", + "H_MilCap_ocamo", + "H_MilCap_oucamo", + "H_MilCap_rucamo", + "H_Bandanna_camo", + "H_Bandanna_cbr", + "H_Bandanna_gry", + "H_Bandanna_khk", + "H_Bandanna_khk_hs", + "H_Bandanna_mcamo", + "H_Bandanna_sgg", + "H_Bandanna_surfer", + "H_Booniehat_dgtl", + "H_Booniehat_dirty", + "H_Booniehat_grn", + "H_Booniehat_indp", + "H_Booniehat_khk", + "H_Booniehat_khk_hs", + "H_Booniehat_mcamo", + "H_Booniehat_tan", + "H_Hat_blue", + "H_Hat_brown", + "H_Hat_camo", + "H_Hat_checker", + "H_Hat_grey", + "H_Hat_tan", + "H_StrawHat", + "H_StrawHat_dark", + "H_Beret_02", + "H_Beret_blk", + "H_Beret_blk_POLICE", + "H_Beret_brn_SF", + "H_Beret_Colonel", + "H_Beret_grn", + "H_Beret_grn_SF", + "H_Beret_ocamo", + "H_Beret_red", + "H_Shemag_khk", + "H_Shemag_olive", + "H_Shemag_olive_hs", + "H_Shemag_tan", + "H_ShemagOpen_khk", + "H_ShemagOpen_tan", + "H_TurbanO_blk", + + //Apex + "H_MilCap_tna_F", + "H_MilCap_ghex_F", + "H_Booniehat_tna_F", + "H_Beret_gen_F", + "H_MilCap_gen_F", + "H_Cap_oli_Syndikat_F", + "H_Cap_tan_Syndikat_F", + "H_Cap_blk_Syndikat_F", + "H_Cap_grn_Syndikat_F" + ]; + blck_helmets = [ + "H_HelmetB", + "H_HelmetB_black", + "H_HelmetB_camo", + "H_HelmetB_desert", + "H_HelmetB_grass", + "H_HelmetB_light", + "H_HelmetB_light_black", + "H_HelmetB_light_desert", + "H_HelmetB_light_grass", + "H_HelmetB_light_sand", + "H_HelmetB_light_snakeskin", + "H_HelmetB_paint", + "H_HelmetB_plain_blk", + "H_HelmetB_sand", + "H_HelmetB_snakeskin", + "H_HelmetCrew_B", + "H_HelmetCrew_I", + "H_HelmetCrew_O", + "H_HelmetIA", + "H_HelmetIA_camo", + "H_HelmetIA_net", + "H_HelmetLeaderO_ocamo", + "H_HelmetLeaderO_oucamo", + "H_HelmetO_ocamo", + "H_HelmetO_oucamo", + "H_HelmetSpecB", + "H_HelmetSpecB_blk", + "H_HelmetSpecB_paint1", + "H_HelmetSpecB_paint2", + "H_HelmetSpecO_blk", + "H_HelmetSpecO_ocamo", + "H_CrewHelmetHeli_B", + "H_CrewHelmetHeli_I", + "H_CrewHelmetHeli_O", + "H_HelmetCrew_I", + "H_HelmetCrew_B", + "H_HelmetCrew_O", + "H_PilotHelmetHeli_B", + "H_PilotHelmetHeli_I", + "H_PilotHelmetHeli_O", + "H_Helmet_Skate", + "H_HelmetB_TI_tna_F", + // Apex + //"H_HelmetO_ViperSP_hex_F", + //"H_HelmetO_ViperSP_ghex_F", + "H_HelmetB_tna_F", + "H_HelmetB_Enh_tna_F", + "H_HelmetB_Light_tna_F", + "H_HelmetSpecO_ghex_F", + "H_HelmetLeaderO_ghex_F", + "H_HelmetO_ghex_F", + "H_HelmetCrew_O_ghex_F" + ]; + blck_headgearList = blck_headgear + blck_helmets; + blck_headgear_blue = blck_headgearList; + blck_headgear_red = blck_headgearList; + blck_headgear_green = blck_headgearList; + blck_headgear_orange = blck_headgearList; + + //This defines the skin list, some skins are disabled by default to permit players to have high visibility uniforms distinct from those of the AI. + blck_SkinList_Male = [ + //https://community.bistudio.com/wiki/Arma_3_CfgWeapons_Equipment + "U_AntigonaBody", + "U_AttisBody", + "U_B_CombatUniform_mcam","U_B_CombatUniform_mcam_tshirt","U_B_CombatUniform_mcam_vest","U_B_CombatUniform_mcam_worn","U_B_CombatUniform_sgg","U_B_CombatUniform_sgg_tshirt","U_B_CombatUniform_sgg_vest","U_B_CombatUniform_wdl","U_B_CombatUniform_wdl_tshirt","U_B_CombatUniform_wdl_vest", + "U_B_CTRG_1","U_B_CTRG_2","U_B_CTRG_3", + "U_B_GhillieSuit", + "U_B_HeliPilotCoveralls","U_B_PilotCoveralls", + "U_B_SpecopsUniform_sgg", + "U_B_survival_uniform", + "U_B_Wetsuit", + //"U_BasicBody", + "U_BG_Guerilla1_1","U_BG_Guerilla2_1","U_BG_Guerilla2_2","U_BG_Guerilla2_3","U_BG_Guerilla3_1","U_BG_Guerilla3_2", + "U_BG_leader", + "U_C_Commoner_shorts","U_C_Commoner1_1","U_C_Commoner1_2","U_C_Commoner1_3","U_C_Commoner2_1","U_C_Commoner2_2","U_C_Commoner2_3", + "U_C_Farmer","U_C_Fisherman","U_C_FishermanOveralls","U_C_HunterBody_brn","U_C_HunterBody_grn", + //"U_C_Journalist", + "U_C_Novak", + //"U_C_Poloshirt_blue","U_C_Poloshirt_burgundy","U_C_Poloshirt_redwhite","U_C_Poloshirt_salmon","U_C_Poloshirt_stripped","U_C_Poloshirt_tricolour", + "U_C_Poor_1","U_C_Poor_2","U_C_Poor_shorts_1","U_C_Poor_shorts_2","U_C_PriestBody","U_C_Scavenger_1","U_C_Scavenger_2", + //"U_C_Scientist","U_C_ShirtSurfer_shorts","U_C_TeeSurfer_shorts_1","U_C_TeeSurfer_shorts_2", + "U_C_WorkerCoveralls","U_C_WorkerOveralls","U_Competitor", + "U_I_CombatUniform","U_I_CombatUniform_shortsleeve","U_I_CombatUniform_tshirt","U_I_G_resistanceLeader_F", + "U_I_G_Story_Protagonist_F", + "U_I_GhillieSuit", + "U_I_HeliPilotCoveralls", + "U_I_OfficerUniform", + "U_I_pilotCoveralls", + "U_I_Wetsuit", + "U_IG_Guerilla1_1","U_IG_Guerilla2_1","U_IG_Guerilla2_2","U_IG_Guerilla2_3","U_IG_Guerilla3_1","U_IG_Guerilla3_2", + "U_IG_leader", + "U_IG_Menelaos", + //"U_KerryBody", + //"U_MillerBody", + //"U_NikosAgedBody", + //"U_NikosBody", + "U_O_CombatUniform_ocamo","U_O_CombatUniform_oucamo", + "U_O_GhillieSuit", + "U_O_OfficerUniform_ocamo", + "U_O_PilotCoveralls", + "U_O_SpecopsUniform_blk", + "U_O_SpecopsUniform_ocamo", + "U_O_Wetsuit", + "U_OG_Guerilla1_1","U_OG_Guerilla2_1","U_OG_Guerilla2_2","U_OG_Guerilla2_3","U_OG_Guerilla3_1","U_OG_Guerilla3_2","U_OG_leader", + //"U_OI_Scientist", + //"U_OrestesBody", + "U_Rangemaster", + // DLC + "U_B_FullGhillie_ard","U_I_FullGhillie_ard","U_O_FullGhillie_ard","U_B_FullGhillie_sard","U_O_FullGhillie_sard","U_I_FullGhillie_sard","U_B_FullGhillie_lsh","U_O_FullGhillie_lsh","U_I_FullGhillie_lsh", + //Apex + "U_B_T_Soldier_F", + "U_B_T_Soldier_AR_F", + "U_B_T_Soldier_SL_F", + //"U_B_T_Sniper_F", + //"U_B_T_FullGhillie_tna_F", + "U_B_CTRG_Soldier_F", + "U_B_CTRG_Soldier_2_F", + "U_B_CTRG_Soldier_3_F", + "U_B_GEN_Soldier_F", + "U_B_GEN_Commander_F", + "U_O_T_Soldier_F", + "U_O_T_Officer_F", + //"U_O_T_Sniper_F", + //"U_O_T_FullGhillie_tna_F", + "U_O_V_Soldier_Viper_F", + "U_O_V_Soldier_Viper_hex_F", + "U_I_C_Soldier_Para_1_F", + "U_I_C_Soldier_Para_2_F", + "U_I_C_Soldier_Para_3_F", + "U_I_C_Soldier_Para_4_F", + "U_I_C_Soldier_Para_5_F", + "U_I_C_Soldier_Bandit_1_F", + "U_I_C_Soldier_Bandit_2_F", + "U_I_C_Soldier_Bandit_3_F", + "U_I_C_Soldier_Bandit_4_F", + "U_I_C_Soldier_Bandit_5_F", + "U_I_C_Soldier_Camo_F", + "U_C_man_sport_1_F", + "U_C_man_sport_2_F", + "U_C_man_sport_3_F", + "U_C_Man_casual_1_F", + "U_C_Man_casual_2_F", + "U_C_Man_casual_3_F", + "U_C_Man_casual_4_F", + "U_C_Man_casual_5_F", + "U_C_Man_casual_6_F", + "U_B_CTRG_Soldier_urb_1_F", + "U_B_CTRG_Soldier_urb_2_F", + "U_B_CTRG_Soldier_urb_3_F" + ]; + blck_SkinList = blck_SkinList_Male; + blck_SkinList_blue = blck_SkinList; + blck_SkinList_red = blck_SkinList; + blck_SkinList_green = blck_SkinList; + blck_SkinList_orange = blck_SkinList; + + blck_vests = [ + // DLC Vests + "V_PlateCarrierSpec_blk","V_PlateCarrierSpec_mtp","V_PlateCarrierGL_blk","V_PlateCarrierGL_mtp","V_PlateCarrierIAGL_oli" + ]; + blck_vests_blue = blck_vests; + blck_vests_red = blck_vests; + blck_vests_green = blck_vests; + blck_vests_orange = blck_vests; + + //CraftingFood + blck_Meats=[ + ]; + blck_Drink = [ + ]; + blck_Food = [ + ]; + blck_ConsumableItems = blck_Meats + blck_Drink + blck_Food; + blck_throwableExplosives = ["HandGrenade","MiniGrenade"]; + blck_otherExplosives = ["1Rnd_HE_Grenade_shell","3Rnd_HE_Grenade_shell","DemoCharge_Remote_Mag","SatchelCharge_Remote_Mag"]; + blck_explosives = blck_throwableExplosives + blck_otherExplosives; + blck_medicalItems = ["FAK"]; + blck_specialItems = blck_throwableExplosives + blck_medicalItems; + blck_NVG = ["NVG"]; + blck_buildingMaterials = []; + +/*************************************************************************************** +DEFAULT CONTENTS OF LOOT CRATES FOR EACH MISSION +Note however that these configurations can be used in any way you like or replaced with mission-specific customized loot arrays +for examples of how you can do this see \Major\Compositions.sqf +***************************************************************************************/ + + // values are: number of things from the weapons, magazines, optics, materials(cinder etc), items (food etc) and backpacks arrays to add, respectively. + blck_lootCountsOrange = [8,32,8,30,16,1]; // Orange + blck_lootCountsGreen = [7,24,6,16,18,1]; // Green + blck_lootCountsRed = [5,16,4,10,6,1]; // Red + blck_lootCountsBlue = [4,12,3,6,6,1]; // Blue + + blck_BoxLoot_Orange = + // Loot is grouped as [weapons],[magazines],[items] in order to be able to use the correct function to load the item into the crate later on. + // Each item consist of the following information ["ItemName",minNum, maxNum] where min is the smallest number added and min+max is the largest number added. + + [ + [// Weapons + #ifdef useAPEX + "arifle_AK12_F","arifle_AK12_GL_F","arifle_AKM_F","arifle_AKM_FL_F","arifle_AKS_F","arifle_ARX_blk_F","arifle_ARX_ghex_F","arifle_ARX_hex_F","arifle_CTAR_blk_F","arifle_CTAR_hex_F", + "arifle_CTAR_ghex_F","arifle_CTAR_GL_blk_F","arifle_CTARS_blk_F","arifle_CTARS_hex_F","arifle_CTARS_ghex_F","arifle_SPAR_01_blk_F","arifle_SPAR_01_khk_F","arifle_SPAR_01_snd_F", + "arifle_SPAR_01_GL_blk_F","arifle_SPAR_01_GL_khk_F","arifle_SPAR_01_GL_snd_F","arifle_SPAR_02_blk_F","arifle_SPAR_02_khk_F","arifle_SPAR_02_snd_F","arifle_SPAR_03_blk_F", + "arifle_SPAR_03_khk_F","arifle_SPAR_03_snd_F","arifle_MX_khk_F","arifle_MX_GL_khk_F","arifle_MXC_khk_F","arifle_MXM_khk_F", + #endif + ["MultiGun","EnergyPackLg"], + ["arifle_Katiba_F","30Rnd_65x39_caseless_green"], + ["arifle_Katiba_GL_F","30Rnd_65x39_caseless_green"], + ["arifle_MX_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXC_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag"], + ["arifle_SDAR_F","20Rnd_556x45_UW_mag"], + ["arifle_TRG20_F","30Rnd_556x45_Stanag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], + ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], + ["srifle_LRR_F","7Rnd_408_Mag"], + ["srifle_EBR_F","20Rnd_762x51_Mag"], + ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], + ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], + ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], + ["LMG_Zafir_F","150Rnd_762x54_Box"], + ["MMG_01_hex_F","150Rnd_93x64_Mag"], + ["MMG_01_tan_F","150Rnd_93x64_Mag"], + ["MMG_02_black_F","130Rnd_338_Mag"], + ["MMG_02_camo_F","130Rnd_338_Mag"], + ["MMG_02_sand_F","130Rnd_338_Mag"], + ["srifle_DMR_02_camo_F","10Rnd_338_Mag"], + ["srifle_DMR_02_F","10Rnd_338_Mag"], + ["srifle_DMR_02_sniper_F","10Rnd_338_Mag"], + ["srifle_DMR_03_F","10Rnd_338_Mag"], + ["srifle_DMR_03_tan_F","10Rnd_338_Mag"], + ["srifle_DMR_04_Tan_F","10Rnd_338_Mag"], + ["srifle_DMR_05_hex_F","10Rnd_338_Mag"], + ["srifle_DMR_05_tan_F","10Rnd_338_Mag"], + ["srifle_DMR_06_camo_F","10Rnd_338_Mag"], + ["srifle_DMR_04_F","10Rnd_127x54_Mag"], + ["srifle_DMR_05_blk_F","10Rnd_93x64_DMR_05_Mag"], + ["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"] + + ], + [//Magazines + ["3rnd_HE_Grenade_Shell",3,6], + ["30Rnd_65x39_caseless_green",3,6], + ["30Rnd_556x45_Stanag",3,6], + ["30Rnd_45ACP_Mag_SMG_01",3,6], + ["20Rnd_556x45_UW_mag",3,6], + ["20Rnd_762x51_Mag",7,14], + ["200Rnd_65x39_cased_Box",3,6], + ["100Rnd_65x39_caseless_mag_Tracer",3,6], + ["3rnd_HE_Grenade_Shell",1,3], + ["HandGrenade",1,4], + // Marksman Pack Ammo + ["10Rnd_338_Mag",1,4], + ["10Rnd_338_Mag",1,4], + ["10Rnd_127x54_Mag" ,1,4], + ["10Rnd_127x54_Mag",1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4], + // Apex Ammo + ["130Rnd_338_Mag",1,3], + ["150Rnd_93x64_Mag",1,3] + ], + [ // Optics + ["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3], + ["optic_Arco",1,3],["optic_Hamr",1,3],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Aco_smg",1,3],["optic_ACO_grn_smg",1,3], + ["optic_Holosight",1,3],["optic_Holosight_smg",1,3],["optic_SOS",1,3],["optic_MRCO",1,3],["optic_DMS",1,3],["optic_Yorris",1,3], + ["optic_MRD",1,3],["optic_LRPS",1,3],["optic_NVS",1,3],["optic_Nightstalker",1,2],["optic_Nightstalker",1,2],["optic_Nightstalker",1,2], + ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], + ["optic_AMS_khk",1,3],["optic_AMS_snd",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] + ], + [// Materials and supplies + + ], + [//Items + + ], + [ // Backpacks + ["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_ocamo",1,2],["B_AssaultPack_rgr",1,2],["B_AssaultPack_sgg",1,2], + ["B_Carryall_cbr",1,2],["B_Carryall_khk",1,2],["B_Carryall_mcamo",1,2],["B_Carryall_ocamo",1,2],["B_Carryall_oli",1,2],["B_Carryall_oucamo",1,2],["B_FieldPack_blk",1,2], + ["B_FieldPack_cbr",1,2],["B_FieldPack_khk",1,2],["B_FieldPack_ocamo",1,2],["B_FieldPack_oli",1,2],["B_FieldPack_oucamo",1,2],["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2], + ["B_Kitbag_rgr",1,2],["B_Kitbag_sgg",1,2],["B_Parachute",1,2],["B_TacticalPack_blk",1,2],["B_TacticalPack_mcamo",1,2],["B_TacticalPack_ocamo",1,2],["B_TacticalPack_oli",1,2], + ["B_TacticalPack_rgr",1,2] + ] + ]; + + blck_BoxLoot_Green = + [ + [// Weapons + // Format is ["Weapon Name","Magazine Name"], + #ifdef useAPEX + "arifle_AK12_F","arifle_AK12_GL_F","arifle_AKM_F","arifle_AKM_FL_F","arifle_AKS_F","arifle_ARX_blk_F","arifle_ARX_ghex_F","arifle_ARX_hex_F","arifle_CTAR_blk_F","arifle_CTAR_hex_F", + "arifle_CTAR_ghex_F","arifle_CTAR_GL_blk_F","arifle_CTARS_blk_F","arifle_CTARS_hex_F","arifle_CTARS_ghex_F","arifle_SPAR_01_blk_F","arifle_SPAR_01_khk_F","arifle_SPAR_01_snd_F", + "arifle_SPAR_01_GL_blk_F","arifle_SPAR_01_GL_khk_F","arifle_SPAR_01_GL_snd_F","arifle_SPAR_02_blk_F","arifle_SPAR_02_khk_F","arifle_SPAR_02_snd_F","arifle_SPAR_03_blk_F", + "arifle_SPAR_03_khk_F","arifle_SPAR_03_snd_F","arifle_MX_khk_F","arifle_MX_GL_khk_F","arifle_MXC_khk_F","arifle_MXM_khk_F", + #endif + ["MultiGun","EnergyPackLg"], + ["arifle_Katiba_F","30Rnd_65x39_caseless_green"], + ["arifle_Katiba_GL_F","30Rnd_65x39_caseless_green"], + ["arifle_MX_F","30Rnd_65x39_caseless_mag"], + ["arifle_MX_GL_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXC_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], + ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], + ["srifle_LRR_F","7Rnd_408_Mag"], + ["srifle_EBR_F","20Rnd_762x51_Mag"], + ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], + ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], + ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], + ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], + ["LMG_Zafir_F","150Rnd_762x54_Box"], + ["MMG_01_hex_F","150Rnd_93x64_Mag"], + ["MMG_01_tan_F","150Rnd_93x64_Mag"], + ["MMG_02_black_F","130Rnd_338_Mag"], + ["MMG_02_camo_F","130Rnd_338_Mag"], + ["MMG_02_sand_F","130Rnd_338_Mag"], + ["srifle_DMR_02_camo_F","10Rnd_338_Mag"], + ["srifle_DMR_02_F","10Rnd_338_Mag"], + ["srifle_DMR_02_sniper_F","10Rnd_338_Mag"], + ["srifle_DMR_03_F","10Rnd_338_Mag"], + ["srifle_DMR_03_tan_F","10Rnd_338_Mag"], + ["srifle_DMR_04_Tan_F","10Rnd_338_Mag"], + ["srifle_DMR_05_hex_F","10Rnd_338_Mag"], + ["srifle_DMR_05_tan_F","10Rnd_338_Mag"], + ["srifle_DMR_06_camo_F","10Rnd_338_Mag"], + ["srifle_DMR_04_F","10Rnd_127x54_Mag"], + ["srifle_DMR_05_blk_F","10Rnd_93x64_DMR_05_Mag"], + ["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"] + + ], + [//Magazines + // Format is ["Magazine name, Minimum number to add, Maximum number to add], + ["3rnd_HE_Grenade_Shell",2,4], + ["30Rnd_65x39_caseless_green",3,6], + ["30Rnd_556x45_Stanag",3,6], + ["30Rnd_556x45_Stanag",3,6], + ["30Rnd_45ACP_Mag_SMG_01",3,6], + ["20Rnd_556x45_UW_mag",3,6], + ["20Rnd_762x51_Mag",6,12], + ["200Rnd_65x39_cased_Box",3,6], + ["100Rnd_65x39_caseless_mag_Tracer",3,6], + ["3rnd_HE_Grenade_Shell",1,3], + ["HandGrenade",1,3], + // Marksman Pack Ammo + ["10Rnd_338_Mag",1,4], + ["10Rnd_338_Mag",1,4], + ["10Rnd_127x54_Mag" ,1,4], + ["10Rnd_127x54_Mag",1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4], + // Apex Ammo + ["130Rnd_338_Mag",1,3], + ["150Rnd_93x64_Mag",1,3] + ], + [ // Optics + ["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3], + ["optic_Arco",1,3],["optic_Hamr",1,3],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Aco_smg",1,3],["optic_ACO_grn_smg",1,3], + ["optic_Holosight",1,3],["optic_Holosight_smg",1,3],["optic_SOS",1,3],["optic_MRCO",1,3],["optic_DMS",1,3],["optic_Yorris",1,3], + ["optic_MRD",1,3],["optic_LRPS",1,3],["optic_NVS",1,3],["optic_Nightstalker",1,2],["optic_Nightstalker",1,2],["optic_Nightstalker",1,2], + ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], + ["optic_AMS_khk",1,3],["optic_AMS_snd",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] + ], + [ + + ], + [//Items + // Format is ["Item name, Minimum number to add, Maximum number to add], + ], + [ // Backpacks + ["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_ocamo",1,2],["B_AssaultPack_rgr",1,2],["B_AssaultPack_sgg",1,2], + ["B_Carryall_cbr",1,2],["B_Carryall_khk",1,2],["B_Carryall_mcamo",1,2],["B_Carryall_ocamo",1,2],["B_Carryall_oli",1,2],["B_Carryall_oucamo",1,2],["B_FieldPack_blk",1,2], + ["B_FieldPack_cbr",1,2],["B_FieldPack_khk",1,2],["B_FieldPack_ocamo",1,2],["B_FieldPack_oli",1,2],["B_FieldPack_oucamo",1,2],["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2], + ["B_Kitbag_rgr",1,2],["B_Kitbag_sgg",1,2],["B_Parachute",1,2],["B_TacticalPack_blk",1,2],["B_TacticalPack_mcamo",1,2],["B_TacticalPack_ocamo",1,2],["B_TacticalPack_oli",1,2], + ["B_TacticalPack_rgr",1,2] + ] + ]; + + blck_BoxLoot_Blue = + [ + [// Weapons + ["MultiGun","EnergyPackLg"], + ["arifle_Katiba_F","30Rnd_65x39_caseless_green"], + ["arifle_Katiba_GL_F","30Rnd_65x39_caseless_green"], + ["arifle_Mk20_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_plain_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20C_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_GL_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_GL_plain_F","30Rnd_556x45_Stanag"], + ["arifle_MX_F","30Rnd_65x39_caseless_mag"], + ["arifle_MX_GL_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXC_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag"], + ["arifle_SDAR_F","20Rnd_556x45_UW_mag"], + ["arifle_TRG20_F","30Rnd_556x45_Stanag"], + ["SMG_02_F","30Rnd_9x21_Mag"], + ["SMG_01_F","30Rnd_45ACP_Mag_SMG_01"], + ["Hgun_PDW2000_F","30Rnd_9x21_Mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], + ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], + ["srifle_LRR_F","7Rnd_408_Mag"], + ["srifle_EBR_F","20Rnd_762x51_Mag"], + ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], + ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], + ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], + ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], + ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"] + ], + [//Magazines + ["3rnd_HE_Grenade_Shell",1,2], + ["30Rnd_65x39_caseless_green",3,6], + ["30Rnd_556x45_Stanag",3,6], + ["30Rnd_556x45_Stanag",3,6], + ["30Rnd_45ACP_Mag_SMG_01",3,6], + ["20Rnd_556x45_UW_mag",3,6], + ["20Rnd_762x51_Mag",3,10], + ["200Rnd_65x39_cased_Box",3,6], + ["100Rnd_65x39_caseless_mag_Tracer",3,6], + ["3rnd_HE_Grenade_Shell",1,4], + // Marksman Pack Ammo + ["150Rnd_93x64_Mag",1,4], + ["10Rnd_338_Mag",1,4], + ["10Rnd_127x54_Mag" ,1,4], + ["10Rnd_127x54_Mag",1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4] + ], + [ // Optics + ["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3], + ["optic_Arco",1,3],["optic_Hamr",1,3],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Aco_smg",1,3],["optic_ACO_grn_smg",1,3], + ["optic_Holosight",1,3],["optic_Holosight_smg",1,3],["optic_SOS",1,3],["optic_MRCO",1,3],["optic_DMS",1,3],["optic_Yorris",1,3], + ["optic_MRD",1,3],["optic_LRPS",1,3],["optic_NVS",1,3],["optic_Nightstalker",1,2], + ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], + ["optic_AMS_khk",1,3],["optic_AMS_snd",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] + ], + [ + + ], + [//Items + + ], + [ // Backpacks + ["B_AssaultPack_dgtl",0,2],["B_AssaultPack_khk",0,2],["B_AssaultPack_mcamo",0,2],["B_AssaultPack_ocamo",0,2],["B_AssaultPack_rgr",0,2],["B_AssaultPack_sgg",0,2], + ["B_Carryall_cbr",0,2],["B_Carryall_khk",0,2],["B_Carryall_mcamo",0,2],["B_Carryall_ocamo",0,2],["B_Carryall_oli",0,2],["B_Carryall_oucamo",0,2],["B_FieldPack_blk",0,2], + ["B_FieldPack_cbr",0,2],["B_FieldPack_khk",0,2],["B_FieldPack_ocamo",0,2],["B_FieldPack_oli",0,2],["B_FieldPack_oucamo",0,2],["B_Kitbag_cbr",0,2],["B_Kitbag_mcamo",0,2], + ["B_Kitbag_rgr",0,2],["B_Kitbag_sgg",0,2],["B_Parachute",0,2],["B_TacticalPack_blk",0,2],["B_TacticalPack_mcamo",0,2],["B_TacticalPack_ocamo",0,2],["B_TacticalPack_oli",0,2], + ["B_TacticalPack_rgr",0,2] + ] + ]; + + blck_BoxLoot_Red = + [ + [// Weapons + ["MultiGun","EnergyPackLg"], + ["arifle_Katiba_F","30Rnd_65x39_caseless_green"], + ["arifle_Katiba_GL_F","30Rnd_65x39_caseless_green"], + ["arifle_Mk20_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_plain_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20C_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_GL_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_GL_plain_F","30Rnd_556x45_Stanag"], + ["arifle_MX_F","30Rnd_65x39_caseless_mag"], + ["arifle_MX_GL_F","30Rnd_65x39_caseless_mag"], + //["arifle_MX_SW_Black_Hamr_pointer_F","100Rnd_65x39_caseless_mag_Tracer"], + ["arifle_MXC_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag"], + ["arifle_SDAR_F","20Rnd_556x45_UW_mag"], + ["SMG_02_F","30Rnd_9x21_Mag"], + ["SMG_01_F","30Rnd_45ACP_Mag_SMG_01"], + ["Hgun_PDW2000_F","30Rnd_9x21_Mag"], + + ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], + ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], + + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], + ["srifle_LRR_F","7Rnd_408_Mag"], + ["srifle_EBR_F","20Rnd_762x51_Mag"], + ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], + + ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], + ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], + ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], + ["LMG_Zafir_F","150Rnd_762x54_Box"], + ["MMG_01_hex_F","150Rnd_93x64_Mag"], + ["srifle_DMR_04_Tan_F","10Rnd_338_Mag"], + ["srifle_DMR_06_camo_F","10Rnd_338_Mag"] + ], + [//Magazines + + ["3rnd_HE_Grenade_Shell",1,5],["30Rnd_65x39_caseless_green",3,6],["30Rnd_556x45_Stanag",3,6],["30Rnd_556x45_Stanag",3,6],["30Rnd_45ACP_Mag_SMG_01",3,6],["20Rnd_556x45_UW_mag",3,6], + ["10Rnd_762x51_Mag",3,6],["20Rnd_762x51_Mag",3,7],["200Rnd_65x39_cased_Box",3,6],["100Rnd_65x39_caseless_mag_Tracer",3,6], + ["3rnd_HE_Grenade_Shell",1,2],["HandGrenade",1,3],["EnergyPack",2,5], + // Marksman Pack Ammo + ["150Rnd_93x64_Mag",1,4], + ["10Rnd_338_Mag",1,4], + ["10Rnd_127x54_Mag" ,1,4], + ["10Rnd_127x54_Mag",1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4] + ], + [ // Optics + ["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3], + ["optic_Arco",1,3],["optic_Hamr",1,3],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Aco_smg",1,3],["optic_ACO_grn_smg",1,3], + ["optic_Holosight",1,3],["optic_Holosight_smg",1,3],["optic_SOS",1,3],["optic_MRCO",1,3],["optic_DMS",1,3],["optic_Yorris",1,3], + ["optic_MRD",1,3],["optic_LRPS",1,3],["optic_NVS",1,3],["optic_Nightstalker",1,2], + ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], + ["optic_AMS_khk",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] + ], + [ + + ], + [//Items + + ], + [ // Backpacks + ["B_AssaultPack_dgtl",0,2],["B_AssaultPack_khk",0,2],["B_AssaultPack_mcamo",0,2],["B_AssaultPack_ocamo",0,2],["B_AssaultPack_rgr",0,2],["B_AssaultPack_sgg",0,2], + ["B_Carryall_cbr",0,2],["B_Carryall_khk",0,2],["B_Carryall_mcamo",0,2],["B_Carryall_ocamo",0,2],["B_Carryall_oli",0,2],["B_Carryall_oucamo",0,2],["B_FieldPack_blk",0,2], + ["B_FieldPack_cbr",0,2],["B_FieldPack_khk",0,2],["B_FieldPack_ocamo",0,2],["B_FieldPack_oli",0,2],["B_FieldPack_oucamo",0,2],["B_Kitbag_cbr",0,2],["B_Kitbag_mcamo",0,2], + ["B_Kitbag_rgr",0,2],["B_Kitbag_sgg",0,2],["B_Parachute",0,2],["B_TacticalPack_blk",0,2],["B_TacticalPack_mcamo",0,2],["B_TacticalPack_ocamo",0,2],["B_TacticalPack_oli",0,2], + ["B_TacticalPack_rgr",0,2] + ] + ]; + +blck_contructionLoot = blck_BoxLoot_Orange; +blck_highPoweredLoot = blck_BoxLoot_Orange; +blck_supportLoot = blck_BoxLoot_Orange; + + +blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type. + +diag_log "[blckeagls] Default Configurations Loaded"; + diff --git a/@GMS/addons/custom_server/Configs/blck_configs_default_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_default_mil.sqf new file mode 100644 index 0000000..3b78722 --- /dev/null +++ b/@GMS/addons/custom_server/Configs/blck_configs_default_mil.sqf @@ -0,0 +1,876 @@ +/* + By Ghostrider [GRG] + Copyright 2016 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\init\build.sqf"; +diag_log format["[blckeagls] loading default configurations for blckeagls build %1",blck_buildNumber]; +//////////// +// default settings +//////////// + + // list of locations that are protected against mission spawns + + switch (toLower(worldName)) do + { + case "altis": { + blck_locationBlackList append [ + //Add location as [[xpos,ypos,0],minimumDistance], + // Note that there should not be a comma after the last item in this table + [[10800,10641,0],1000] // isthmus - missions that spawn here often are glitched. + ]; + }; + case "tanoa": { + blck_locationBlackList append [ ]; + }; + }; + +/********************************************************************************* + +AI WEAPONS, UNIFORMS, VESTS AND GEAR + +**********************************************************************************/ + + blck_AI_Side = EAST; + + blck_crateMoneyBlue = [100,250]; + blck_crateMoneyRed = [175, 300]; + blck_crateMoneyGreen = [300, 500]; + blck_crateMoneyOrange = [500, 750]; + + blck_allowSalesAtBlackMktTraders = true; // Allow vehicles to be sold at Halvjes black market traders. + + blck_maximumItemPriceInAI_Loadouts = 100; + + blck_lightlyArmed_ARMA3 = [ + "B_G_Offroad_01_armed_F", + "O_G_Offroad_01_armed_F", + "B_MRAP_01_gmg_F", + "B_MRAP_01_hmg_F", + "O_MRAP_02_gmg_F", + "O_MRAP_02_hmg_F", + "I_MRAP_03_hmg_F", + "I_MRAP_03_gmg_F", + "B_APC_Wheeled_01_cannon_F", + "I_APC_Wheeled_03_cannon_F" + ]; + + blck_tracked_APC_ARMA3 = [ + "B_APC_Tracked_01_rcws_F", + "B_APC_Tracked_01_CRV_F", + "B_APC_Tracked_01_AA_F", + "O_APC_Tracked_02_cannon_F", + "O_APC_Tracked_02_AA_F", + "O_APC_Wheeled_02_rcws_F", + "I_APC_tracked_03_cannon_F" + ]; + + blck_Tanks_ARMA3 = [ + //"B_MBT_01_arty_F", + "B_MBT_01_mlrs_F", + "B_MBT_01_TUSK_F", + "O_MBT_02_cannon_F", + //"O_MBT_02_arty_F", + "I_MBT_03_cannon_F" + ]; + + blck_APC_CUP = [ + "CUP_B_Mastiff_GMG_GB_D", + "CUP_B_Mastiff_HMG_GB_D", + "CUP_B_Ridgback_HMG_GB_D", + "CUP_B_Ridgback_GMG_GB_D", + "CUP_B_M1128_MGS_Desert", + "CUP_B_M1135_ATGMV_Desert_Slat", + "CUP_B_M1133_MEV_Desert_Slat", + "CUP_B_LAV25M240_desert_USMC", + "CUP_B_M1129_MC_MK19_Desert_Slat", + "CUP_B_LAV25_HQ_desert_USMC", + "CUP_B_BRDM2_ATGM_CDF", + "CUP_B_BTR60_CDF", + "CUP_B_M1130_CV_M2_Desert_Slat", + "CUP_B_M1126_ICV_MK19_Desert_Slat", + "CUP_O_BTR90_RU", + "CUP_O_GAZ_Vodnik_BPPU_RU", + "CUP_B_M1126_ICV_M2_Desert", + "CUP_B_M1126_ICV_MK19_Desert", + "CUP_B_M1130_CV_M2_Desert", + "CUP_B_M1126_ICV_M2_Desert_Slat", + "CUP_B_M1133_MEV_Desert", + "CUP_O_GAZ_Vodnik_AGS_RU", + "CUP_O_GAZ_Vodnik_PK_RU" + ]; + + blck_Tanks_CUP = [ + "CUP_B_M2A3Bradley_USA_D", + "CUP_B_M113_desert_USA", + "CUP_B_M163_USA", + "CUP_B_M6LineBacker_USA_D", + "CUP_B_M1A1_DES_US_Army", + "CUP_B_M1A2_TUSK_MG_DES_US_Army", + "CUP_B_AAV_USMC", + "CUP_B_M270_DPICM_USA", + "CUP_B_ZSU23_CDF", + "CUP_B_BMP2_CDF", + "CUP_B_T72_CDF", + "CUP_I_T34_NAPA", + "CUP_B_Challenger2_NATO", + "CUP_B_FV432_Bulldog_GB_D_RWS", + "CUP_B_FV432_Bulldog_GB_D", + "CUP_B_FV510_GB_D_SLAT", + "CUP_B_MCV80_GB_D_SLAT", + "CUP_O_2S6_RU", + "CUP_O_BMP3_RU", + "CUP_O_T90_RU", + "CUP_O_T55_SLA", + "CUP_O_BMP1P_TKA", + "CUP_B_M270_DPICM_USA", + "CUP_B_M2Bradley_USA_W", + "CUP_B_FV510_GB_D", + "CUP_B_MCV80_GB_D", + "CUP_B_M7Bradley_USA_D", + "CUP_O_2S6_RU", + "CUP_O_BMP1_TKA" + ]; + + blck_AIPatrolVehicles = ["B_LSV_01_armed_F","I_C_Offroad_02_LMG_F","B_T_LSV_01_armed_black_F","B_T_LSV_01_armed_olive_F","B_T_LSV_01_armed_sand_F"]; // Type of vehicle spawned to defend AI bases + blck_AIPatrolVehiclesBlue = blck_AIPatrolVehicles; + blck_AIPatrolVehiclesRed = blck_AIPatrolVehicles; + blck_AIPatrolVehiclesGreen = blck_AIPatrolVehicles; + blck_AIPatrolVehiclesOrange = blck_AIPatrolVehicles; + + // Blacklisted itesm + blck_blacklistedOptics = ["optic_Nightstalker","optic_tws","optic_tws_mg"]; + + // AI Weapons and Attachments + blck_bipods = ["bipod_01_F_blk","bipod_01_F_mtp","bipod_01_F_snd","bipod_02_F_blk","bipod_02_F_hex","bipod_02_F_tan","bipod_03_F_blk","bipod_03_F_oli"]; + + blck_Optics_Holo = ["optic_Hamr","optic_MRD","optic_Holosight","optic_Holosight_smg","optic_Aco","optic_ACO_grn","optic_ACO_grn_smg","optic_Aco_smg","optic_Yorris"]; + blck_Optics_Reticule = ["optic_Arco","optic_MRCO"]; + blck_Optics_Scopes = [ + "optic_AMS","optic_AMS_khk","optic_AMS_snd", + "optic_DMS", + "optic_KHS_blk","optic_KHS_hex","optic_KHS_old","optic_KHS_tan", + "optic_LRPS", + "optic_Nightstalker", + "optic_NVS", + "optic_SOS", + "optic_tws" + //"optic_tws_mg", + ]; + blck_Optics_Apex = [ + //Apex + "optic_Arco_blk_F", "optic_Arco_ghex_F", + "optic_DMS_ghex_F", + "optic_Hamr_khk_F", + "optic_ERCO_blk_F","optic_ERCO_khk_F","optic_ERCO_snd_F", + "optic_SOS_khk_F", + "optic_LRPS_tna_F","optic_LRPS_ghex_F", + "optic_Holosight_blk_F","optic_Holosight_khk_F","optic_Holosight_smg_blk_F" + ]; + blck_Optics = blck_Optics_Holo + blck_Optics_Reticule + blck_Optics_Scopes; + + #ifdef useAPEX + blck_Optics = blck_Optics + blck_Optics_Apex; + #endif + blck_bipods = [ + "bipod_01_F_blk","bipod_01_F_mtp","bipod_01_F_snd","bipod_02_F_blk","bipod_02_F_hex","bipod_02_F_tan","bipod_03_F_blk","bipod_03_F_oli", + //Apex + "bipod_01_F_khk" + ]; + + blck_silencers = [ + "muzzle_snds_338_black","muzzle_snds_338_green","muzzle_snds_338_sand","muzzle_snds_93mmg","muzzle_snds_93mmg_tan","muzzle_snds_acp","muzzle_snds_B", + "muzzle_snds_H","muzzle_snds_H_MG","muzzle_snds_H_SW","muzzle_snds_L","muzzle_snds_M", + //Apex + "muzzle_snds_H_khk_F","muzzle_snds_H_snd_F","muzzle_snds_58_blk_F","muzzle_snds_m_khk_F","muzzle_snds_m_snd_F","muzzle_snds_B_khk_F","muzzle_snds_B_snd_F", + "muzzle_snds_58_wdm_F","muzzle_snds_65_TI_blk_F","muzzle_snds_65_TI_hex_F","muzzle_snds_65_TI_ghex_F","muzzle_snds_H_MG_blk_F","muzzle_snds_H_MG_khk_F" + ]; + + blck_RifleSniper = [ + "srifle_EBR_F","srifle_GM6_F","srifle_LRR_F","srifle_DMR_01_F" + ]; + + blck_RifleAsault_556 = [ + "arifle_SDAR_F","arifle_TRG21_F","arifle_TRG20_F","arifle_TRG21_GL_F","arifle_Mk20_F","arifle_Mk20C_F","arifle_Mk20_GL_F","arifle_Mk20_plain_F","arifle_Mk20C_plain_F","arifle_Mk20_GL_plain_F","arifle_SDAR_F" + ]; + + blck_RifleAsault_650 = [ + "arifle_Katiba_F","arifle_Katiba_C_F","arifle_Katiba_GL_F","arifle_MXC_F","arifle_MX_F","arifle_MX_GL_F","arifle_MXM_F" + ]; + + blck_RifleAsault = blck_RifleAsault_556 + blck_RifleAsault_650; + + blck_RifleLMG = [ + "LMG_Mk200_F","LMG_Zafir_F" + ]; + + blck_RifleOther = [ + "SMG_01_F","SMG_02_F" + ]; + + blck_Pistols = [ + "hgun_PDW2000_F","hgun_ACPC2_F","hgun_Rook40_F","hgun_P07_F","hgun_Pistol_heavy_01_F","hgun_Pistol_heavy_02_F","hgun_Pistol_Signal_F" + ]; + blck_Pistols_blue = blck_Pistols; + blck_Pistols_red = blck_Pistols; + blck_Pistols_green = blck_Pistols; + blck_Pistols_orange = blck_Pistols; + + blck_DLC_MMG = [ + "MMG_01_hex_F","MMG_02_sand_F","MMG_01_tan_F","MMG_02_black_F","MMG_02_camo_F" + ]; + + blck_DLC_Sniper = [ + "srifle_DMR_02_camo_F","srifle_DMR_02_F","srifle_DMR_02_sniper_F","srifle_DMR_03_F","srifle_DMR_03_tan_F","srifle_DMR_04_F","srifle_DMR_04_Tan_F","srifle_DMR_05_blk_F","srifle_DMR_05_hex_F","srifle_DMR_05_tan_F","srifle_DMR_06_camo_F","srifle_DMR_06_olive_F" + ]; + blck_apexWeapons = ["arifle_AK12_F","arifle_AK12_GL_F","arifle_AKM_F","arifle_AKM_FL_F","arifle_AKS_F","arifle_ARX_blk_F","arifle_ARX_ghex_F","arifle_ARX_hex_F","arifle_CTAR_blk_F","arifle_CTAR_hex_F", + "arifle_CTAR_ghex_F","arifle_CTAR_GL_blk_F","arifle_CTARS_blk_F","arifle_CTARS_hex_F","arifle_CTARS_ghex_F","arifle_SPAR_01_blk_F","arifle_SPAR_01_khk_F","arifle_SPAR_01_snd_F", + "arifle_SPAR_01_GL_blk_F","arifle_SPAR_01_GL_khk_F","arifle_SPAR_01_GL_snd_F","arifle_SPAR_02_blk_F","arifle_SPAR_02_khk_F","arifle_SPAR_02_snd_F","arifle_SPAR_03_blk_F", + "arifle_SPAR_03_khk_F","arifle_SPAR_03_snd_F","arifle_MX_khk_F","arifle_MX_GL_khk_F","arifle_MXC_khk_F","arifle_MXM_khk_F"]; + + //This defines the random weapon to spawn on the AI + //https://community.bistudio.com/wiki/Arma_3_CfgWeapons_Weapons + blck_WeaponList_Orange = blck_RifleSniper + blck_RifleAsault_650 + blck_RifleLMG + blck_DLC_Sniper + blck_DLC_MMG; + blck_WeaponList_Green = blck_RifleSniper + blck_RifleAsault_650 +blck_RifleLMG + blck_DLC_MMG + blck_apexWeapons; + blck_WeaponList_Blue = blck_RifleOther + blck_RifleAsault_556 +blck_RifleAsault_650; + blck_WeaponList_Red = blck_RifleAsault_556 + blck_RifleSniper + blck_RifleAsault_650 + blck_RifleLMG; + + #ifdef useAPEX + + blck_WeaponList_Orange = blck_WeaponList_Orange + blck_apexWeapons; + blck_WeaponList_Green = blck_WeaponList_Green + blck_apexWeapons; + #endif + + blck_backpacks = ["B_Carryall_ocamo","B_Carryall_oucamo","B_Carryall_mcamo","B_Carryall_oli","B_Carryall_khk","B_Carryall_cbr" ]; + blck_ApexBackpacks = [ + "B_Bergen_mcamo_F","B_Bergen_dgtl_F","B_Bergen_hex_F","B_Bergen_tna_F","B_AssaultPack_tna_F","B_Carryall_ghex_F", + "B_FieldPack_ghex_F","B_ViperHarness_blk_F","B_ViperHarness_ghex_F","B_ViperHarness_hex_F","B_ViperHarness_khk_F", + "B_ViperHarness_oli_F","B_ViperLightHarness_blk_F","B_ViperLightHarness_ghex_F","B_ViperLightHarness_hex_F","B_ViperLightHarness_khk_F","B_ViperLightHarness_oli_F" + ]; + + #ifdef useAPEX + blck_backpacks = blck_backpacks + blck_ApexBackpacks; + #endif + blck_backpacks_blue = blck_backpacks; + blck_backpacks_red = blck_backpacks; + blck_backpacks_green = blck_backpacks; + blck_backpacks_orange = blck_backpacks; + + blck_BanditHeadgear = ["H_Shemag_khk","H_Shemag_olive","H_Shemag_tan","H_ShemagOpen_khk"]; + //This defines the skin list, some skins are disabled by default to permit players to have high visibility uniforms distinct from those of the AI. + blck_headgear = [ + "H_Cap_blk", + "H_Cap_blk_Raven", + "H_Cap_blu", + "H_Cap_brn_SPECOPS", + "H_Cap_grn", + "H_Cap_headphones", + "H_Cap_khaki_specops_UK", + "H_Cap_oli", + "H_Cap_press", + "H_Cap_red", + "H_Cap_tan", + "H_Cap_tan_specops_US", + "H_Watchcap_blk", + "H_Watchcap_camo", + "H_Watchcap_khk", + "H_Watchcap_sgg", + "H_MilCap_blue", + "H_MilCap_dgtl", + "H_MilCap_mcamo", + "H_MilCap_ocamo", + "H_MilCap_oucamo", + "H_MilCap_rucamo", + "H_Bandanna_camo", + "H_Bandanna_cbr", + "H_Bandanna_gry", + "H_Bandanna_khk", + "H_Bandanna_khk_hs", + "H_Bandanna_mcamo", + "H_Bandanna_sgg", + "H_Bandanna_surfer", + "H_Booniehat_dgtl", + "H_Booniehat_dirty", + "H_Booniehat_grn", + "H_Booniehat_indp", + "H_Booniehat_khk", + "H_Booniehat_khk_hs", + "H_Booniehat_mcamo", + "H_Booniehat_tan", + "H_Hat_blue", + "H_Hat_brown", + "H_Hat_camo", + "H_Hat_checker", + "H_Hat_grey", + "H_Hat_tan", + "H_StrawHat", + "H_StrawHat_dark", + "H_Beret_02", + "H_Beret_blk", + "H_Beret_blk_POLICE", + "H_Beret_brn_SF", + "H_Beret_Colonel", + "H_Beret_grn", + "H_Beret_grn_SF", + "H_Beret_ocamo", + "H_Beret_red", + "H_Shemag_khk", + "H_Shemag_olive", + "H_Shemag_olive_hs", + "H_Shemag_tan", + "H_ShemagOpen_khk", + "H_ShemagOpen_tan", + "H_TurbanO_blk", + + //Apex + "H_MilCap_tna_F", + "H_MilCap_ghex_F", + "H_Booniehat_tna_F", + "H_Beret_gen_F", + "H_MilCap_gen_F", + "H_Cap_oli_Syndikat_F", + "H_Cap_tan_Syndikat_F", + "H_Cap_blk_Syndikat_F", + "H_Cap_grn_Syndikat_F" + ]; + blck_helmets = [ + "H_HelmetB", + "H_HelmetB_black", + "H_HelmetB_camo", + "H_HelmetB_desert", + "H_HelmetB_grass", + "H_HelmetB_light", + "H_HelmetB_light_black", + "H_HelmetB_light_desert", + "H_HelmetB_light_grass", + "H_HelmetB_light_sand", + "H_HelmetB_light_snakeskin", + "H_HelmetB_paint", + "H_HelmetB_plain_blk", + "H_HelmetB_sand", + "H_HelmetB_snakeskin", + "H_HelmetCrew_B", + "H_HelmetCrew_I", + "H_HelmetCrew_O", + "H_HelmetIA", + "H_HelmetIA_camo", + "H_HelmetIA_net", + "H_HelmetLeaderO_ocamo", + "H_HelmetLeaderO_oucamo", + "H_HelmetO_ocamo", + "H_HelmetO_oucamo", + "H_HelmetSpecB", + "H_HelmetSpecB_blk", + "H_HelmetSpecB_paint1", + "H_HelmetSpecB_paint2", + "H_HelmetSpecO_blk", + "H_HelmetSpecO_ocamo", + "H_CrewHelmetHeli_B", + "H_CrewHelmetHeli_I", + "H_CrewHelmetHeli_O", + "H_HelmetCrew_I", + "H_HelmetCrew_B", + "H_HelmetCrew_O", + "H_PilotHelmetHeli_B", + "H_PilotHelmetHeli_I", + "H_PilotHelmetHeli_O", + "H_Helmet_Skate", + "H_HelmetB_TI_tna_F", + // Apex + //"H_HelmetO_ViperSP_hex_F", + //"H_HelmetO_ViperSP_ghex_F", + "H_HelmetB_tna_F", + "H_HelmetB_Enh_tna_F", + "H_HelmetB_Light_tna_F", + "H_HelmetSpecO_ghex_F", + "H_HelmetLeaderO_ghex_F", + "H_HelmetO_ghex_F", + "H_HelmetCrew_O_ghex_F" + ]; + blck_headgearList = blck_headgear + blck_helmets; + blck_headgear_blue = blck_headgearList; + blck_headgear_red = blck_headgearList; + blck_headgear_green = blck_headgearList; + blck_headgear_orange = blck_headgearList; + + //This defines the skin list, some skins are disabled by default to permit players to have high visibility uniforms distinct from those of the AI. + blck_SkinList_Male = [ + //https://community.bistudio.com/wiki/Arma_3_CfgWeapons_Equipment + "U_AntigonaBody", + "U_AttisBody", + "U_B_CombatUniform_mcam","U_B_CombatUniform_mcam_tshirt","U_B_CombatUniform_mcam_vest","U_B_CombatUniform_mcam_worn","U_B_CombatUniform_sgg","U_B_CombatUniform_sgg_tshirt","U_B_CombatUniform_sgg_vest","U_B_CombatUniform_wdl","U_B_CombatUniform_wdl_tshirt","U_B_CombatUniform_wdl_vest", + "U_B_CTRG_1","U_B_CTRG_2","U_B_CTRG_3", + "U_B_GhillieSuit", + "U_B_HeliPilotCoveralls","U_B_PilotCoveralls", + "U_B_SpecopsUniform_sgg", + "U_B_survival_uniform", + "U_B_Wetsuit", + //"U_BasicBody", + "U_BG_Guerilla1_1","U_BG_Guerilla2_1","U_BG_Guerilla2_2","U_BG_Guerilla2_3","U_BG_Guerilla3_1","U_BG_Guerilla3_2", + "U_BG_leader", + "U_C_Commoner_shorts","U_C_Commoner1_1","U_C_Commoner1_2","U_C_Commoner1_3","U_C_Commoner2_1","U_C_Commoner2_2","U_C_Commoner2_3", + "U_C_Farmer","U_C_Fisherman","U_C_FishermanOveralls","U_C_HunterBody_brn","U_C_HunterBody_grn", + //"U_C_Journalist", + "U_C_Novak", + //"U_C_Poloshirt_blue","U_C_Poloshirt_burgundy","U_C_Poloshirt_redwhite","U_C_Poloshirt_salmon","U_C_Poloshirt_stripped","U_C_Poloshirt_tricolour", + "U_C_Poor_1","U_C_Poor_2","U_C_Poor_shorts_1","U_C_Poor_shorts_2","U_C_PriestBody","U_C_Scavenger_1","U_C_Scavenger_2", + //"U_C_Scientist","U_C_ShirtSurfer_shorts","U_C_TeeSurfer_shorts_1","U_C_TeeSurfer_shorts_2", + "U_C_WorkerCoveralls","U_C_WorkerOveralls","U_Competitor", + "U_I_CombatUniform","U_I_CombatUniform_shortsleeve","U_I_CombatUniform_tshirt","U_I_G_resistanceLeader_F", + "U_I_G_Story_Protagonist_F", + "U_I_GhillieSuit", + "U_I_HeliPilotCoveralls", + "U_I_OfficerUniform", + "U_I_pilotCoveralls", + "U_I_Wetsuit", + "U_IG_Guerilla1_1","U_IG_Guerilla2_1","U_IG_Guerilla2_2","U_IG_Guerilla2_3","U_IG_Guerilla3_1","U_IG_Guerilla3_2", + "U_IG_leader", + "U_IG_Menelaos", + //"U_KerryBody", + //"U_MillerBody", + //"U_NikosAgedBody", + //"U_NikosBody", + "U_O_CombatUniform_ocamo","U_O_CombatUniform_oucamo", + "U_O_GhillieSuit", + "U_O_OfficerUniform_ocamo", + "U_O_PilotCoveralls", + "U_O_SpecopsUniform_blk", + "U_O_SpecopsUniform_ocamo", + "U_O_Wetsuit", + "U_OG_Guerilla1_1","U_OG_Guerilla2_1","U_OG_Guerilla2_2","U_OG_Guerilla2_3","U_OG_Guerilla3_1","U_OG_Guerilla3_2","U_OG_leader", + //"U_OI_Scientist", + //"U_OrestesBody", + "U_Rangemaster", + // DLC + "U_B_FullGhillie_ard","U_I_FullGhillie_ard","U_O_FullGhillie_ard","U_B_FullGhillie_sard","U_O_FullGhillie_sard","U_I_FullGhillie_sard","U_B_FullGhillie_lsh","U_O_FullGhillie_lsh","U_I_FullGhillie_lsh", + //Apex + "U_B_T_Soldier_F", + "U_B_T_Soldier_AR_F", + "U_B_T_Soldier_SL_F", + //"U_B_T_Sniper_F", + //"U_B_T_FullGhillie_tna_F", + "U_B_CTRG_Soldier_F", + "U_B_CTRG_Soldier_2_F", + "U_B_CTRG_Soldier_3_F", + "U_B_GEN_Soldier_F", + "U_B_GEN_Commander_F", + "U_O_T_Soldier_F", + "U_O_T_Officer_F", + //"U_O_T_Sniper_F", + //"U_O_T_FullGhillie_tna_F", + "U_O_V_Soldier_Viper_F", + "U_O_V_Soldier_Viper_hex_F", + "U_I_C_Soldier_Para_1_F", + "U_I_C_Soldier_Para_2_F", + "U_I_C_Soldier_Para_3_F", + "U_I_C_Soldier_Para_4_F", + "U_I_C_Soldier_Para_5_F", + "U_I_C_Soldier_Bandit_1_F", + "U_I_C_Soldier_Bandit_2_F", + "U_I_C_Soldier_Bandit_3_F", + "U_I_C_Soldier_Bandit_4_F", + "U_I_C_Soldier_Bandit_5_F", + "U_I_C_Soldier_Camo_F", + "U_C_man_sport_1_F", + "U_C_man_sport_2_F", + "U_C_man_sport_3_F", + "U_C_Man_casual_1_F", + "U_C_Man_casual_2_F", + "U_C_Man_casual_3_F", + "U_C_Man_casual_4_F", + "U_C_Man_casual_5_F", + "U_C_Man_casual_6_F", + "U_B_CTRG_Soldier_urb_1_F", + "U_B_CTRG_Soldier_urb_2_F", + "U_B_CTRG_Soldier_urb_3_F" + ]; + blck_SkinList = blck_SkinList_Male; + blck_SkinList_blue = blck_SkinList; + blck_SkinList_red = blck_SkinList; + blck_SkinList_green = blck_SkinList; + blck_SkinList_orange = blck_SkinList; + + blck_vests = [ + // DLC Vests + "V_PlateCarrierSpec_blk","V_PlateCarrierSpec_mtp","V_PlateCarrierGL_blk","V_PlateCarrierGL_mtp","V_PlateCarrierIAGL_oli" + ]; + blck_vests_blue = blck_vests; + blck_vests_red = blck_vests; + blck_vests_green = blck_vests; + blck_vests_orange = blck_vests; + + //CraftingFood + blck_Meats=[ + ]; + blck_Drink = [ + ]; + blck_Food = [ + ]; + blck_ConsumableItems = blck_Meats + blck_Drink + blck_Food; + blck_throwableExplosives = ["HandGrenade","MiniGrenade"]; + blck_otherExplosives = ["1Rnd_HE_Grenade_shell","3Rnd_HE_Grenade_shell","DemoCharge_Remote_Mag","SatchelCharge_Remote_Mag"]; + blck_explosives = blck_throwableExplosives + blck_otherExplosives; + blck_medicalItems = ["FAK"]; + blck_specialItems = blck_throwableExplosives + blck_medicalItems; + blck_NVG = ["NVG"]; + blck_buildingMaterials = []; + +/*************************************************************************************** +DEFAULT CONTENTS OF LOOT CRATES FOR EACH MISSION +Note however that these configurations can be used in any way you like or replaced with mission-specific customized loot arrays +for examples of how you can do this see \Major\Compositions.sqf +***************************************************************************************/ + + // values are: number of things from the weapons, magazines, optics, materials(cinder etc), items (food etc) and backpacks arrays to add, respectively. + blck_lootCountsOrange = [8,32,8,30,16,1]; // Orange + blck_lootCountsGreen = [7,24,6,16,18,1]; // Green + blck_lootCountsRed = [5,16,4,10,6,1]; // Red + blck_lootCountsBlue = [4,12,3,6,6,1]; // Blue + + blck_BoxLoot_Orange = + // Loot is grouped as [weapons],[magazines],[items] in order to be able to use the correct function to load the item into the crate later on. + // Each item consist of the following information ["ItemName",minNum, maxNum] where min is the smallest number added and min+max is the largest number added. + + [ + [// Weapons + #ifdef useAPEX + "arifle_AK12_F","arifle_AK12_GL_F","arifle_AKM_F","arifle_AKM_FL_F","arifle_AKS_F","arifle_ARX_blk_F","arifle_ARX_ghex_F","arifle_ARX_hex_F","arifle_CTAR_blk_F","arifle_CTAR_hex_F", + "arifle_CTAR_ghex_F","arifle_CTAR_GL_blk_F","arifle_CTARS_blk_F","arifle_CTARS_hex_F","arifle_CTARS_ghex_F","arifle_SPAR_01_blk_F","arifle_SPAR_01_khk_F","arifle_SPAR_01_snd_F", + "arifle_SPAR_01_GL_blk_F","arifle_SPAR_01_GL_khk_F","arifle_SPAR_01_GL_snd_F","arifle_SPAR_02_blk_F","arifle_SPAR_02_khk_F","arifle_SPAR_02_snd_F","arifle_SPAR_03_blk_F", + "arifle_SPAR_03_khk_F","arifle_SPAR_03_snd_F","arifle_MX_khk_F","arifle_MX_GL_khk_F","arifle_MXC_khk_F","arifle_MXM_khk_F", + #endif + ["MultiGun","EnergyPackLg"], + ["arifle_Katiba_F","30Rnd_65x39_caseless_green"], + ["arifle_Katiba_GL_F","30Rnd_65x39_caseless_green"], + ["arifle_MX_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXC_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag"], + ["arifle_SDAR_F","20Rnd_556x45_UW_mag"], + ["arifle_TRG20_F","30Rnd_556x45_Stanag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], + ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], + ["srifle_LRR_F","7Rnd_408_Mag"], + ["srifle_EBR_F","20Rnd_762x51_Mag"], + ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], + ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], + ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], + ["LMG_Zafir_F","150Rnd_762x54_Box"], + ["MMG_01_hex_F","150Rnd_93x64_Mag"], + ["MMG_01_tan_F","150Rnd_93x64_Mag"], + ["MMG_02_black_F","130Rnd_338_Mag"], + ["MMG_02_camo_F","130Rnd_338_Mag"], + ["MMG_02_sand_F","130Rnd_338_Mag"], + ["srifle_DMR_02_camo_F","10Rnd_338_Mag"], + ["srifle_DMR_02_F","10Rnd_338_Mag"], + ["srifle_DMR_02_sniper_F","10Rnd_338_Mag"], + ["srifle_DMR_03_F","10Rnd_338_Mag"], + ["srifle_DMR_03_tan_F","10Rnd_338_Mag"], + ["srifle_DMR_04_Tan_F","10Rnd_338_Mag"], + ["srifle_DMR_05_hex_F","10Rnd_338_Mag"], + ["srifle_DMR_05_tan_F","10Rnd_338_Mag"], + ["srifle_DMR_06_camo_F","10Rnd_338_Mag"], + ["srifle_DMR_04_F","10Rnd_127x54_Mag"], + ["srifle_DMR_05_blk_F","10Rnd_93x64_DMR_05_Mag"], + ["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"] + + ], + [//Magazines + ["3rnd_HE_Grenade_Shell",3,6], + ["30Rnd_65x39_caseless_green",3,6], + ["30Rnd_556x45_Stanag",3,6], + ["30Rnd_45ACP_Mag_SMG_01",3,6], + ["20Rnd_556x45_UW_mag",3,6], + ["20Rnd_762x51_Mag",7,14], + ["200Rnd_65x39_cased_Box",3,6], + ["100Rnd_65x39_caseless_mag_Tracer",3,6], + ["3rnd_HE_Grenade_Shell",1,3], + ["HandGrenade",1,4], + // Marksman Pack Ammo + ["10Rnd_338_Mag",1,4], + ["10Rnd_338_Mag",1,4], + ["10Rnd_127x54_Mag" ,1,4], + ["10Rnd_127x54_Mag",1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4], + // Apex Ammo + ["130Rnd_338_Mag",1,3], + ["150Rnd_93x64_Mag",1,3] + ], + [ // Optics + ["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3], + ["optic_Arco",1,3],["optic_Hamr",1,3],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Aco_smg",1,3],["optic_ACO_grn_smg",1,3], + ["optic_Holosight",1,3],["optic_Holosight_smg",1,3],["optic_SOS",1,3],["optic_MRCO",1,3],["optic_DMS",1,3],["optic_Yorris",1,3], + ["optic_MRD",1,3],["optic_LRPS",1,3],["optic_NVS",1,3],["optic_Nightstalker",1,2],["optic_Nightstalker",1,2],["optic_Nightstalker",1,2], + ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], + ["optic_AMS_khk",1,3],["optic_AMS_snd",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] + ], + [// Materials and supplies + + ], + [//Items + + ], + [ // Backpacks + ["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_ocamo",1,2],["B_AssaultPack_rgr",1,2],["B_AssaultPack_sgg",1,2], + ["B_Carryall_cbr",1,2],["B_Carryall_khk",1,2],["B_Carryall_mcamo",1,2],["B_Carryall_ocamo",1,2],["B_Carryall_oli",1,2],["B_Carryall_oucamo",1,2],["B_FieldPack_blk",1,2], + ["B_FieldPack_cbr",1,2],["B_FieldPack_khk",1,2],["B_FieldPack_ocamo",1,2],["B_FieldPack_oli",1,2],["B_FieldPack_oucamo",1,2],["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2], + ["B_Kitbag_rgr",1,2],["B_Kitbag_sgg",1,2],["B_Parachute",1,2],["B_TacticalPack_blk",1,2],["B_TacticalPack_mcamo",1,2],["B_TacticalPack_ocamo",1,2],["B_TacticalPack_oli",1,2], + ["B_TacticalPack_rgr",1,2] + ] + ]; + + blck_BoxLoot_Green = + [ + [// Weapons + // Format is ["Weapon Name","Magazine Name"], + #ifdef useAPEX + "arifle_AK12_F","arifle_AK12_GL_F","arifle_AKM_F","arifle_AKM_FL_F","arifle_AKS_F","arifle_ARX_blk_F","arifle_ARX_ghex_F","arifle_ARX_hex_F","arifle_CTAR_blk_F","arifle_CTAR_hex_F", + "arifle_CTAR_ghex_F","arifle_CTAR_GL_blk_F","arifle_CTARS_blk_F","arifle_CTARS_hex_F","arifle_CTARS_ghex_F","arifle_SPAR_01_blk_F","arifle_SPAR_01_khk_F","arifle_SPAR_01_snd_F", + "arifle_SPAR_01_GL_blk_F","arifle_SPAR_01_GL_khk_F","arifle_SPAR_01_GL_snd_F","arifle_SPAR_02_blk_F","arifle_SPAR_02_khk_F","arifle_SPAR_02_snd_F","arifle_SPAR_03_blk_F", + "arifle_SPAR_03_khk_F","arifle_SPAR_03_snd_F","arifle_MX_khk_F","arifle_MX_GL_khk_F","arifle_MXC_khk_F","arifle_MXM_khk_F", + #endif + ["MultiGun","EnergyPackLg"], + ["arifle_Katiba_F","30Rnd_65x39_caseless_green"], + ["arifle_Katiba_GL_F","30Rnd_65x39_caseless_green"], + ["arifle_MX_F","30Rnd_65x39_caseless_mag"], + ["arifle_MX_GL_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXC_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], + ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], + ["srifle_LRR_F","7Rnd_408_Mag"], + ["srifle_EBR_F","20Rnd_762x51_Mag"], + ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], + ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], + ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], + ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], + ["LMG_Zafir_F","150Rnd_762x54_Box"], + ["MMG_01_hex_F","150Rnd_93x64_Mag"], + ["MMG_01_tan_F","150Rnd_93x64_Mag"], + ["MMG_02_black_F","130Rnd_338_Mag"], + ["MMG_02_camo_F","130Rnd_338_Mag"], + ["MMG_02_sand_F","130Rnd_338_Mag"], + ["srifle_DMR_02_camo_F","10Rnd_338_Mag"], + ["srifle_DMR_02_F","10Rnd_338_Mag"], + ["srifle_DMR_02_sniper_F","10Rnd_338_Mag"], + ["srifle_DMR_03_F","10Rnd_338_Mag"], + ["srifle_DMR_03_tan_F","10Rnd_338_Mag"], + ["srifle_DMR_04_Tan_F","10Rnd_338_Mag"], + ["srifle_DMR_05_hex_F","10Rnd_338_Mag"], + ["srifle_DMR_05_tan_F","10Rnd_338_Mag"], + ["srifle_DMR_06_camo_F","10Rnd_338_Mag"], + ["srifle_DMR_04_F","10Rnd_127x54_Mag"], + ["srifle_DMR_05_blk_F","10Rnd_93x64_DMR_05_Mag"], + ["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"] + + ], + [//Magazines + // Format is ["Magazine name, Minimum number to add, Maximum number to add], + ["3rnd_HE_Grenade_Shell",2,4], + ["30Rnd_65x39_caseless_green",3,6], + ["30Rnd_556x45_Stanag",3,6], + ["30Rnd_556x45_Stanag",3,6], + ["30Rnd_45ACP_Mag_SMG_01",3,6], + ["20Rnd_556x45_UW_mag",3,6], + ["20Rnd_762x51_Mag",6,12], + ["200Rnd_65x39_cased_Box",3,6], + ["100Rnd_65x39_caseless_mag_Tracer",3,6], + ["3rnd_HE_Grenade_Shell",1,3], + ["HandGrenade",1,3], + // Marksman Pack Ammo + ["10Rnd_338_Mag",1,4], + ["10Rnd_338_Mag",1,4], + ["10Rnd_127x54_Mag" ,1,4], + ["10Rnd_127x54_Mag",1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4], + // Apex Ammo + ["130Rnd_338_Mag",1,3], + ["150Rnd_93x64_Mag",1,3] + ], + [ // Optics + ["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3], + ["optic_Arco",1,3],["optic_Hamr",1,3],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Aco_smg",1,3],["optic_ACO_grn_smg",1,3], + ["optic_Holosight",1,3],["optic_Holosight_smg",1,3],["optic_SOS",1,3],["optic_MRCO",1,3],["optic_DMS",1,3],["optic_Yorris",1,3], + ["optic_MRD",1,3],["optic_LRPS",1,3],["optic_NVS",1,3],["optic_Nightstalker",1,2],["optic_Nightstalker",1,2],["optic_Nightstalker",1,2], + ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], + ["optic_AMS_khk",1,3],["optic_AMS_snd",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] + ], + [ + + ], + [//Items + // Format is ["Item name, Minimum number to add, Maximum number to add], + ], + [ // Backpacks + ["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_ocamo",1,2],["B_AssaultPack_rgr",1,2],["B_AssaultPack_sgg",1,2], + ["B_Carryall_cbr",1,2],["B_Carryall_khk",1,2],["B_Carryall_mcamo",1,2],["B_Carryall_ocamo",1,2],["B_Carryall_oli",1,2],["B_Carryall_oucamo",1,2],["B_FieldPack_blk",1,2], + ["B_FieldPack_cbr",1,2],["B_FieldPack_khk",1,2],["B_FieldPack_ocamo",1,2],["B_FieldPack_oli",1,2],["B_FieldPack_oucamo",1,2],["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2], + ["B_Kitbag_rgr",1,2],["B_Kitbag_sgg",1,2],["B_Parachute",1,2],["B_TacticalPack_blk",1,2],["B_TacticalPack_mcamo",1,2],["B_TacticalPack_ocamo",1,2],["B_TacticalPack_oli",1,2], + ["B_TacticalPack_rgr",1,2] + ] + ]; + + blck_BoxLoot_Blue = + [ + [// Weapons + ["MultiGun","EnergyPackLg"], + ["arifle_Katiba_F","30Rnd_65x39_caseless_green"], + ["arifle_Katiba_GL_F","30Rnd_65x39_caseless_green"], + ["arifle_Mk20_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_plain_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20C_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_GL_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_GL_plain_F","30Rnd_556x45_Stanag"], + ["arifle_MX_F","30Rnd_65x39_caseless_mag"], + ["arifle_MX_GL_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXC_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag"], + ["arifle_SDAR_F","20Rnd_556x45_UW_mag"], + ["arifle_TRG20_F","30Rnd_556x45_Stanag"], + ["SMG_02_F","30Rnd_9x21_Mag"], + ["SMG_01_F","30Rnd_45ACP_Mag_SMG_01"], + ["Hgun_PDW2000_F","30Rnd_9x21_Mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], + ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], + ["srifle_LRR_F","7Rnd_408_Mag"], + ["srifle_EBR_F","20Rnd_762x51_Mag"], + ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], + ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], + ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], + ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], + ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"] + ], + [//Magazines + ["3rnd_HE_Grenade_Shell",1,2], + ["30Rnd_65x39_caseless_green",3,6], + ["30Rnd_556x45_Stanag",3,6], + ["30Rnd_556x45_Stanag",3,6], + ["30Rnd_45ACP_Mag_SMG_01",3,6], + ["20Rnd_556x45_UW_mag",3,6], + ["20Rnd_762x51_Mag",3,10], + ["200Rnd_65x39_cased_Box",3,6], + ["100Rnd_65x39_caseless_mag_Tracer",3,6], + ["3rnd_HE_Grenade_Shell",1,4], + // Marksman Pack Ammo + ["150Rnd_93x64_Mag",1,4], + ["10Rnd_338_Mag",1,4], + ["10Rnd_127x54_Mag" ,1,4], + ["10Rnd_127x54_Mag",1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4] + ], + [ // Optics + ["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3], + ["optic_Arco",1,3],["optic_Hamr",1,3],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Aco_smg",1,3],["optic_ACO_grn_smg",1,3], + ["optic_Holosight",1,3],["optic_Holosight_smg",1,3],["optic_SOS",1,3],["optic_MRCO",1,3],["optic_DMS",1,3],["optic_Yorris",1,3], + ["optic_MRD",1,3],["optic_LRPS",1,3],["optic_NVS",1,3],["optic_Nightstalker",1,2], + ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], + ["optic_AMS_khk",1,3],["optic_AMS_snd",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] + ], + [ + + ], + [//Items + + ], + [ // Backpacks + ["B_AssaultPack_dgtl",0,2],["B_AssaultPack_khk",0,2],["B_AssaultPack_mcamo",0,2],["B_AssaultPack_ocamo",0,2],["B_AssaultPack_rgr",0,2],["B_AssaultPack_sgg",0,2], + ["B_Carryall_cbr",0,2],["B_Carryall_khk",0,2],["B_Carryall_mcamo",0,2],["B_Carryall_ocamo",0,2],["B_Carryall_oli",0,2],["B_Carryall_oucamo",0,2],["B_FieldPack_blk",0,2], + ["B_FieldPack_cbr",0,2],["B_FieldPack_khk",0,2],["B_FieldPack_ocamo",0,2],["B_FieldPack_oli",0,2],["B_FieldPack_oucamo",0,2],["B_Kitbag_cbr",0,2],["B_Kitbag_mcamo",0,2], + ["B_Kitbag_rgr",0,2],["B_Kitbag_sgg",0,2],["B_Parachute",0,2],["B_TacticalPack_blk",0,2],["B_TacticalPack_mcamo",0,2],["B_TacticalPack_ocamo",0,2],["B_TacticalPack_oli",0,2], + ["B_TacticalPack_rgr",0,2] + ] + ]; + + blck_BoxLoot_Red = + [ + [// Weapons + ["MultiGun","EnergyPackLg"], + ["arifle_Katiba_F","30Rnd_65x39_caseless_green"], + ["arifle_Katiba_GL_F","30Rnd_65x39_caseless_green"], + ["arifle_Mk20_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_plain_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20C_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_GL_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_GL_plain_F","30Rnd_556x45_Stanag"], + ["arifle_MX_F","30Rnd_65x39_caseless_mag"], + ["arifle_MX_GL_F","30Rnd_65x39_caseless_mag"], + //["arifle_MX_SW_Black_Hamr_pointer_F","100Rnd_65x39_caseless_mag_Tracer"], + ["arifle_MXC_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag"], + ["arifle_SDAR_F","20Rnd_556x45_UW_mag"], + ["SMG_02_F","30Rnd_9x21_Mag"], + ["SMG_01_F","30Rnd_45ACP_Mag_SMG_01"], + ["Hgun_PDW2000_F","30Rnd_9x21_Mag"], + + ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], + ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], + + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], + ["srifle_LRR_F","7Rnd_408_Mag"], + ["srifle_EBR_F","20Rnd_762x51_Mag"], + ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], + + ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], + ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], + ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], + ["LMG_Zafir_F","150Rnd_762x54_Box"], + ["MMG_01_hex_F","150Rnd_93x64_Mag"], + ["srifle_DMR_04_Tan_F","10Rnd_338_Mag"], + ["srifle_DMR_06_camo_F","10Rnd_338_Mag"] + ], + [//Magazines + + ["3rnd_HE_Grenade_Shell",1,5],["30Rnd_65x39_caseless_green",3,6],["30Rnd_556x45_Stanag",3,6],["30Rnd_556x45_Stanag",3,6],["30Rnd_45ACP_Mag_SMG_01",3,6],["20Rnd_556x45_UW_mag",3,6], + ["10Rnd_762x51_Mag",3,6],["20Rnd_762x51_Mag",3,7],["200Rnd_65x39_cased_Box",3,6],["100Rnd_65x39_caseless_mag_Tracer",3,6], + ["3rnd_HE_Grenade_Shell",1,2],["HandGrenade",1,3],["EnergyPack",2,5], + // Marksman Pack Ammo + ["150Rnd_93x64_Mag",1,4], + ["10Rnd_338_Mag",1,4], + ["10Rnd_127x54_Mag" ,1,4], + ["10Rnd_127x54_Mag",1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4] + ], + [ // Optics + ["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3], + ["optic_Arco",1,3],["optic_Hamr",1,3],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Aco_smg",1,3],["optic_ACO_grn_smg",1,3], + ["optic_Holosight",1,3],["optic_Holosight_smg",1,3],["optic_SOS",1,3],["optic_MRCO",1,3],["optic_DMS",1,3],["optic_Yorris",1,3], + ["optic_MRD",1,3],["optic_LRPS",1,3],["optic_NVS",1,3],["optic_Nightstalker",1,2], + ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], + ["optic_AMS_khk",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] + ], + [ + + ], + [//Items + + ], + [ // Backpacks + ["B_AssaultPack_dgtl",0,2],["B_AssaultPack_khk",0,2],["B_AssaultPack_mcamo",0,2],["B_AssaultPack_ocamo",0,2],["B_AssaultPack_rgr",0,2],["B_AssaultPack_sgg",0,2], + ["B_Carryall_cbr",0,2],["B_Carryall_khk",0,2],["B_Carryall_mcamo",0,2],["B_Carryall_ocamo",0,2],["B_Carryall_oli",0,2],["B_Carryall_oucamo",0,2],["B_FieldPack_blk",0,2], + ["B_FieldPack_cbr",0,2],["B_FieldPack_khk",0,2],["B_FieldPack_ocamo",0,2],["B_FieldPack_oli",0,2],["B_FieldPack_oucamo",0,2],["B_Kitbag_cbr",0,2],["B_Kitbag_mcamo",0,2], + ["B_Kitbag_rgr",0,2],["B_Kitbag_sgg",0,2],["B_Parachute",0,2],["B_TacticalPack_blk",0,2],["B_TacticalPack_mcamo",0,2],["B_TacticalPack_ocamo",0,2],["B_TacticalPack_oli",0,2], + ["B_TacticalPack_rgr",0,2] + ] + ]; + +blck_contructionLoot = blck_BoxLoot_Orange; +blck_highPoweredLoot = blck_BoxLoot_Orange; +blck_supportLoot = blck_BoxLoot_Orange; + + +blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type. + +diag_log "[blckeagls] Default Configurations Loaded"; + diff --git a/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf index 218813a..cd4c22d 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf @@ -526,6 +526,15 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR "U_B_CTRG_Soldier_urb_2_F", "U_B_CTRG_Soldier_urb_3_F" ]; + blck_femaleUniformsEpoch = [ + "U_CamoBlue_uniform", "U_CamoBrn_uniform", "U_CamoPinkPolka_uniform","U_CamoPink_uniform","U_CamoOutback_uniform", + "U_CamoBubblegum_uniform","U_CamoBiker_uniform","U_CamoAloha_uniform","U_CamoRed_uniform" + ]; + blck_femaleWetsuitsEpoch = [ + "U_Wetsuit_uniform","U_Wetsuit_White","U_Wetsuit_Blue","U_Wetsuit_Purp","U_Wetsuit_Camo" + ]; + blck_skinlist_male = blck_SkinList; + blck_SkinList = blck_femaleUniformsEpoch + blck_femaleWetsuitsEpoch + blck_SkinList_Male; blck_SkinList_blue = blck_SkinList; blck_SkinList_red = blck_SkinList; blck_SkinList_green = blck_SkinList; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_exile_mil - Namalks v146.sqf b/@GMS/addons/custom_server/Configs/blck_configs_exile_mil - Namalks v146.sqf deleted file mode 100644 index f273281..0000000 --- a/@GMS/addons/custom_server/Configs/blck_configs_exile_mil - Namalks v146.sqf +++ /dev/null @@ -1,1170 +0,0 @@ -/* - By Ghostrider [GRG] - Copyright 2016 - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ - -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -//////////// -// Exile-specific settings -//////////// - -// list of locations that are protected against mission spawns - -switch (toLower(worldName)) do -{ - case "altis": { - blck_locationBlackList append [ - //Add location as [[xpos,ypos,0],minimumDistance], - // Note that there should not be a comma after the last item in this table - [[10800,10641,0],1000] // isthmus - missions that spawn here often are glitched. - ]; - }; - case "tanoa": { - blck_locationBlackList append [ ]; - }; -}; - -/********************************************************************************* - -AI WEAPONS, UNIFORMS, VESTS AND GEAR - -**********************************************************************************/ - - blck_blacklistSpawns = false; - blck_listConcreteMixerZones = false; - blck_AI_Side = EAST; - - blck_crateMoneyBlue = [100,250]; - blck_crateMoneyRed = [175, 300]; - blck_crateMoneyGreen = [300, 500]; - blck_crateMoneyOrange = [500, 750]; - - // When true, AI loadouts will be set from the class names in CfgPricing rather than the settings in the mod-specific configuration files - blck_useConfigsGeneratedLoadouts = true; - blck_maximumItemPriceInAI_Loadouts = 1000; - - blck_armed_vehicles_Exile = [ - "Exile_Car_BTR40_MG_Green", - "Exile_Car_HMMWV_M134_Green", - "Exile_Car_HMMWV_M2_Green", - "B_LSV_01_armed_F", - "Exile_Car_Offroad_Armed_Guerilla01" - ]; - - blck_lightlyArmed_ARMA3 = [ - "B_G_Offroad_01_armed_F", - "O_G_Offroad_01_armed_F", - "B_MRAP_01_gmg_F", - "B_MRAP_01_hmg_F", - "O_MRAP_02_gmg_F", - "O_MRAP_02_hmg_F", - "I_MRAP_03_hmg_F", - "I_MRAP_03_gmg_F", - "B_APC_Wheeled_01_cannon_F", - "I_APC_Wheeled_03_cannon_F" - ]; - - blck_tracked_APC_ARMA3 = [ - "B_APC_Tracked_01_rcws_F", - "B_APC_Tracked_01_CRV_F", - "B_APC_Tracked_01_AA_F", - "O_APC_Tracked_02_cannon_F", - "O_APC_Tracked_02_AA_F", - "O_APC_Wheeled_02_rcws_F", - "I_APC_tracked_03_cannon_F" - ]; - - blck_Tanks_ARMA3 = [ - //"B_MBT_01_arty_F", - //"B_MBT_01_mlrs_F", - "B_MBT_01_TUSK_F", - "O_MBT_02_cannon_F", - //"O_MBT_02_arty_F", - "I_MBT_03_cannon_F" - ]; - - _blck_APC_CUP = [ - "CUP_B_Mastiff_GMG_GB_D", - "CUP_B_Mastiff_HMG_GB_D", - "CUP_B_Ridgback_HMG_GB_D", - "CUP_B_Ridgback_GMG_GB_D", - "CUP_B_M1128_MGS_Desert", - "CUP_B_M1135_ATGMV_Desert_Slat", - "CUP_B_M1133_MEV_Desert_Slat", - "CUP_B_LAV25M240_desert_USMC", - "CUP_B_M1129_MC_MK19_Desert_Slat", - "CUP_B_LAV25_HQ_desert_USMC", - "CUP_B_BRDM2_ATGM_CDF", - "CUP_B_BTR60_CDF", - "CUP_B_M1130_CV_M2_Desert_Slat", - "CUP_B_M1126_ICV_MK19_Desert_Slat", - "CUP_O_BTR90_RU", - "CUP_O_GAZ_Vodnik_BPPU_RU", - "CUP_B_M1126_ICV_M2_Desert", - "CUP_B_M1126_ICV_MK19_Desert", - "CUP_B_M1130_CV_M2_Desert", - "CUP_B_M1126_ICV_M2_Desert_Slat", - "CUP_B_M1133_MEV_Desert", - "CUP_O_GAZ_Vodnik_AGS_RU", - "CUP_O_GAZ_Vodnik_PK_RU" - ]; - - _blck_Tanks_CUP = [ - "CUP_B_M2A3Bradley_USA_D", - //"CUP_B_M113_desert_USA", - //"CUP_B_M163_USA", - "CUP_B_M6LineBacker_USA_D", - "CUP_B_M1A1_DES_US_Army", - "CUP_B_M1A2_TUSK_MG_DES_US_Army", - //"CUP_B_AAV_USMC", - //"CUP_B_M270_DPICM_USA", - "CUP_B_ZSU23_CDF", - //"CUP_B_BMP2_CDF", - "CUP_B_T72_CDF", - //"CUP_I_T34_NAPA", - "CUP_B_Challenger2_NATO", - //"CUP_B_FV432_Bulldog_GB_D_RWS", - //"CUP_B_FV432_Bulldog_GB_D", - "CUP_B_FV510_GB_D_SLAT", - //"CUP_B_MCV80_GB_D_SLAT", - //"CUP_O_2S6_RU", - "CUP_O_BMP3_RU", - "CUP_O_T90_RU", - "CUP_O_T55_SLA" //, - //"CUP_O_BMP1P_TKA", - //"CUP_B_M270_DPICM_USA", - //"CUP_B_M2Bradley_USA_W", - //"CUP_B_FV510_GB_D", - //"CUP_B_MCV80_GB_D", - //"CUP_B_M7Bradley_USA_D", - //"CUP_O_2S6_RU", - //"CUP_O_BMP1_TKA"" - ]; - - blck_AIPatrolVehicles = - [ - //"Exile_Car_Offroad_Armed_Guerilla01", - //"Exile_Car_Offroad_Armed_Guerilla02", - //"Exile_Car_BTR40_MG_Green", - //"Exile_Car_BTR40_MG_Camo", - //"Exile_Car_HMMWV_M134_Green", - //"Exile_Car_HMMWV_M134_Desert", - //"Exile_Car_HMMWV_M134_Desert", - "Exile_Car_HMMWV_M2_Desert", - "B_LSV_01_armed_F", - //"_MRAP_02_gmg_ghex_F", - //"O_MRAP_02_hmg_ghex_F", - //"O_MRAP_03_gmg_ghex_F", - //"O_MRAP_03_hmg_ghex_F", - "B_MBT_01_cannon_F", - "B_MBT_01_cannon_F", // Duplicate to increase chance that these will spawn relative to others - //"B_MBT_01_mlrs_base_F", - //"B_MBT_01_mlrs_F", - "B_MBT_01_TUSK_F", - "B_MBT_01_TUSK_F",// Duplicate to increase chance that these will spawn relative to others - "B_APC_Tracked_01_AA_F", - "B_APC_Tracked_01_AA_F",// Duplicate to increase chance that these will spawn relative to others - "B_APC_Tracked_01_AA_F",// Duplicate to increase chance that these will spawn relative to others - "B_APC_Tracked_01_CRV_F", - "B_APC_Tracked_01_rcws_F" - ]; // Type of vehicle spawned to defend AI bases - - blck_AIPatrolVehiclesBlue = [ - "Exile_Car_Offroad_Armed_Guerilla01", - "Exile_Car_Offroad_Armed_Guerilla02", - "Exile_Car_BTR40_MG_Green", - "Exile_Car_BTR40_MG_Camo", - "Exile_Car_HMMWV_M134_Green", - "Exile_Car_HMMWV_M134_Desert", - "Exile_Car_HMMWV_M134_Desert", - "Exile_Car_HMMWV_M2_Desert", - "B_LSV_01_armed_F" - ]; - - blck_AIPatrolVehiclesRed = blck_lightlyArmed_ARMA3 + _blck_APC_CUP; - blck_AIPatrolVehiclesGreen = blck_Tanks_ARMA3 + _blck_Tanks_CUP; - blck_AIPatrolVehiclesOrange = blck_Tanks_ARMA3 + _blck_Tanks_CUP; - - if (toLower(worldName) isEqualTo "namalsk") then - { - = [ - "B_G_Offroad_01_armed_F", - "O_G_Offroad_01_armed_F", - //"B_MRAP_01_gmg_F", - "B_MRAP_01_hmg_F", - //"O_MRAP_02_gmg_F", - "O_MRAP_02_hmg_F", - "I_MRAP_03_hmg_F" - //"I_MRAP_03_gmg_F", - //"B_APC_Wheeled_01_cannon_F", - //"I_APC_Wheeled_03_cannon_F" - ]; - diag_log "blck)configs_exile_mil.sqf:: - > Using special settings for namalsk"; - blck_AIPatrolVehiclesRed = blck_lightlyArmed_ARMA3 + blck_AIPatrolVehiclesBlue; - blck_AIPatrolVehiclesGreen = blck_AIPatrolVehiclesRed; - blck_AIPatrolVehiclesOrange = blck_AIPatrolVehiclesRed; - }; - - // Blacklisted itesm - blck_blacklistedOptics = ["optic_Nightstalker","optic_tws","optic_tws_mg"]; - - // AI Weapons and Attachments - blck_bipods = ["bipod_01_F_blk","bipod_01_F_mtp","bipod_01_F_snd","bipod_02_F_blk","bipod_02_F_hex","bipod_02_F_tan","bipod_03_F_blk","bipod_03_F_oli"]; - - blck_Optics_Holo = ["optic_Hamr","optic_MRD","optic_Holosight","optic_Holosight_smg","optic_Aco","optic_ACO_grn","optic_ACO_grn_smg","optic_Aco_smg","optic_Yorris"]; - blck_Optics_Reticule = ["optic_Arco","optic_MRCO"]; - blck_Optics_Scopes = [ - "optic_AMS","optic_AMS_khk","optic_AMS_snd", - "optic_DMS", - "optic_KHS_blk","optic_KHS_hex","optic_KHS_old","optic_KHS_tan", - "optic_LRPS", - "optic_Nightstalker", - "optic_NVS", - "optic_SOS", - "optic_tws", - "optic_tws_mg" - ]; - - #ifdef useAPEX - blck_Optics_Apex = [ - //Apex - "optic_Arco_blk_F", "optic_Arco_ghex_F", - "optic_DMS_ghex_F", - "optic_Hamr_khk_F", - "optic_ERCO_blk_F","optic_ERCO_khk_F","optic_ERCO_snd_F", - "optic_SOS_khk_F", - "optic_LRPS_tna_F","optic_LRPS_ghex_F", - "optic_Holosight_blk_F","optic_Holosight_khk_F","optic_Holosight_smg_blk_F" - ]; - blck_Optics = blck_Optics_Holo + blck_Optics_Reticule + blck_Optics_Scopes; - blck_Optics = blck_Optics + blck_Optics_Apex; - #endif - - blck_bipods = [ - "bipod_01_F_blk","bipod_01_F_mtp","bipod_01_F_snd","bipod_02_F_blk","bipod_02_F_hex","bipod_02_F_tan","bipod_03_F_blk","bipod_03_F_oli", - //Apex - "bipod_01_F_khk" - ]; - - blck_silencers = [ - "muzzle_snds_338_black","muzzle_snds_338_green","muzzle_snds_338_sand","muzzle_snds_93mmg","muzzle_snds_93mmg_tan","muzzle_snds_acp","muzzle_snds_B", - "muzzle_snds_H","muzzle_snds_H_MG","muzzle_snds_H_SW","muzzle_snds_L","muzzle_snds_M", - //Apex - "muzzle_snds_H_khk_F","muzzle_snds_H_snd_F","muzzle_snds_58_blk_F","muzzle_snds_m_khk_F","muzzle_snds_m_snd_F","muzzle_snds_B_khk_F","muzzle_snds_B_snd_F", - "muzzle_snds_58_wdm_F","muzzle_snds_65_TI_blk_F","muzzle_snds_65_TI_hex_F","muzzle_snds_65_TI_ghex_F","muzzle_snds_H_MG_blk_F","muzzle_snds_H_MG_khk_F" - ]; - - blck_RifleSniper = [ - "srifle_EBR_F","srifle_GM6_F","srifle_LRR_F","srifle_DMR_01_F" - ]; - - blck_RifleAsault_556 = [ - "arifle_SDAR_F","arifle_TRG21_F","arifle_TRG20_F","arifle_TRG21_GL_F","arifle_Mk20_F","arifle_Mk20C_F","arifle_Mk20_GL_F","arifle_Mk20_plain_F","arifle_Mk20C_plain_F","arifle_Mk20_GL_plain_F","arifle_SDAR_F" - ]; - - blck_RifleAsault_650 = [ - "arifle_Katiba_F","arifle_Katiba_C_F","arifle_Katiba_GL_F","arifle_MXC_F","arifle_MX_F","arifle_MX_GL_F","arifle_MXM_F" - ]; - - blck_RifleAsault = [ - "arifle_Katiba_F","arifle_Katiba_C_F","arifle_Katiba_GL_F","arifle_MXC_F","arifle_MX_F","arifle_MX_GL_F","arifle_MXM_F","arifle_SDAR_F", - "arifle_TRG21_F","arifle_TRG20_F","arifle_TRG21_GL_F","arifle_Mk20_F","arifle_Mk20C_F","arifle_Mk20_GL_F","arifle_Mk20_plain_F","arifle_Mk20C_plain_F","arifle_Mk20_GL_plain_F" - ]; - - blck_RifleLMG = [ - "LMG_Mk200_F","LMG_Zafir_F" - ]; - - blck_RifleOther = [ - "SMG_01_F","SMG_02_F" - ]; - - blck_Pistols = [ - "hgun_PDW2000_F","hgun_ACPC2_F","hgun_Rook40_F","hgun_P07_F","hgun_Pistol_heavy_01_F","hgun_Pistol_heavy_02_F","hgun_Pistol_Signal_F" - ]; - blck_Pistols_blue = blck_Pistols; - blck_Pistols_red = blck_Pistols; - blck_Pistols_green = blck_Pistols; - blck_Pistols_orange = blck_Pistols; - - blck_DLC_MMG = [ - "MMG_01_hex_F","MMG_02_sand_F","MMG_01_tan_F","MMG_02_black_F","MMG_02_camo_F" - ]; - - blck_DLC_Sniper = [ - "srifle_DMR_02_camo_F","srifle_DMR_02_F","srifle_DMR_02_sniper_F","srifle_DMR_03_F","srifle_DMR_03_tan_F","srifle_DMR_04_F","srifle_DMR_04_Tan_F","srifle_DMR_05_blk_F","srifle_DMR_05_hex_F","srifle_DMR_05_tan_F","srifle_DMR_06_camo_F","srifle_DMR_06_olive_F" - ]; - - //This defines the random weapon to spawn on the AI - //https://community.bistudio.com/wiki/Arma_3_CfgWeapons_Weapons - blck_WeaponList_Orange = blck_RifleSniper + blck_RifleAsault_650 + blck_RifleLMG + blck_DLC_Sniper + blck_DLC_MMG; - blck_WeaponList_Green = blck_RifleSniper + blck_RifleAsault_650 +blck_RifleLMG + blck_DLC_MMG; - blck_WeaponList_Blue = blck_RifleOther + blck_RifleAsault_556 + blck_RifleAsault_650; - blck_WeaponList_Red = blck_RifleAsault_556 + blck_RifleSniper + blck_RifleAsault_650 + blck_RifleLMG; - - #ifdef useAPEX - blck_apexWeapons = ["arifle_AK12_F","arifle_AK12_GL_F","arifle_AKM_F","arifle_AKM_FL_F","arifle_AKS_F","arifle_ARX_blk_F","arifle_ARX_ghex_F","arifle_ARX_hex_F","arifle_CTAR_blk_F","arifle_CTAR_hex_F", - "arifle_CTAR_ghex_F","arifle_CTAR_GL_blk_F","arifle_CTARS_blk_F","arifle_CTARS_hex_F","arifle_CTARS_ghex_F","arifle_SPAR_01_blk_F","arifle_SPAR_01_khk_F","arifle_SPAR_01_snd_F", - "arifle_SPAR_01_GL_blk_F","arifle_SPAR_01_GL_khk_F","arifle_SPAR_01_GL_snd_F","arifle_SPAR_02_blk_F","arifle_SPAR_02_khk_F","arifle_SPAR_02_snd_F","arifle_SPAR_03_blk_F", - "arifle_SPAR_03_khk_F","arifle_SPAR_03_snd_F","arifle_MX_khk_F","arifle_MX_GL_khk_F","arifle_MXC_khk_F","arifle_MXM_khk_F"]; - - blck_WeaponList_Orange = blck_WeaponList_Orange + blck_apexWeapons; - blck_WeaponList_Green = blck_WeaponList_Green + blck_apexWeapons; - #endif - - - - blck_backpacks = ["B_Carryall_ocamo","B_Carryall_oucamo","B_Carryall_mcamo","B_Carryall_oli","B_Carryall_khk","B_Carryall_cbr" ]; - - #ifdef useAPEX - blck_ApexBackpacks = [ - "B_Bergen_mcamo_F","B_Bergen_dgtl_F","B_Bergen_hex_F","B_Bergen_tna_F","B_AssaultPack_tna_F","B_Carryall_ghex_F", - "B_FieldPack_ghex_F","B_ViperHarness_blk_F","B_ViperHarness_ghex_F","B_ViperHarness_hex_F","B_ViperHarness_khk_F", - "B_ViperHarness_oli_F","B_ViperLightHarness_blk_F","B_ViperLightHarness_ghex_F","B_ViperLightHarness_hex_F","B_ViperLightHarness_khk_F","B_ViperLightHarness_oli_F" - ]; - blck_backpacks = blck_backpacks + blck_ApexBackpacks; - #endif - blck_backpacks_blue = blck_backpacks; - blck_backpacks_red = blck_backpacks; - blck_backpacks_green = blck_backpacks; - blck_backpacks_orange = blck_backpacks; - - blck_BanditHeadgear = ["H_Shemag_khk","H_Shemag_olive","H_Shemag_tan","H_ShemagOpen_khk"]; - //This defines the skin list, some skins are disabled by default to permit players to have high visibility uniforms distinct from those of the AI. - blck_headgear = [ - "H_Cap_blk", - "H_Cap_blk_Raven", - "H_Cap_blu", - "H_Cap_brn_SPECOPS", - "H_Cap_grn", - "H_Cap_headphones", - "H_Cap_khaki_specops_UK", - "H_Cap_oli", - "H_Cap_press", - "H_Cap_red", - "H_Cap_tan", - "H_Cap_tan_specops_US", - "H_Watchcap_blk", - "H_Watchcap_camo", - "H_Watchcap_khk", - "H_Watchcap_sgg", - "H_MilCap_blue", - "H_MilCap_dgtl", - "H_MilCap_mcamo", - "H_MilCap_ocamo", - "H_MilCap_oucamo", - "H_MilCap_rucamo", - "H_Bandanna_camo", - "H_Bandanna_cbr", - "H_Bandanna_gry", - "H_Bandanna_khk", - "H_Bandanna_khk_hs", - "H_Bandanna_mcamo", - "H_Bandanna_sgg", - "H_Bandanna_surfer", - "H_Booniehat_dgtl", - "H_Booniehat_dirty", - "H_Booniehat_grn", - "H_Booniehat_indp", - "H_Booniehat_khk", - "H_Booniehat_khk_hs", - "H_Booniehat_mcamo", - "H_Booniehat_tan", - "H_Hat_blue", - "H_Hat_brown", - "H_Hat_camo", - "H_Hat_checker", - "H_Hat_grey", - "H_Hat_tan", - "H_StrawHat", - "H_StrawHat_dark", - "H_Beret_02", - "H_Beret_blk", - "H_Beret_blk_POLICE", - "H_Beret_brn_SF", - "H_Beret_Colonel", - "H_Beret_grn", - "H_Beret_grn_SF", - "H_Beret_ocamo", - "H_Beret_red", - "H_Shemag_khk", - "H_Shemag_olive", - "H_Shemag_olive_hs", - "H_Shemag_tan", - "H_ShemagOpen_khk", - "H_ShemagOpen_tan", - "H_TurbanO_blk", - "H_CrewHelmetHeli_B", - "H_CrewHelmetHeli_I", - "H_CrewHelmetHeli_O", - "H_HelmetCrew_I", - "H_HelmetCrew_B", - "H_HelmetCrew_O", - "H_PilotHelmetHeli_B", - "H_PilotHelmetHeli_I", - "H_PilotHelmetHeli_O", - //Apex - - "H_MilCap_tna_F", - "H_MilCap_ghex_F", - "H_Booniehat_tna_F", - "H_Beret_gen_F", - "H_MilCap_gen_F", - "H_Cap_oli_Syndikat_F", - "H_Cap_tan_Syndikat_F", - "H_Cap_blk_Syndikat_F", - "H_Cap_grn_Syndikat_F" - ]; - blck_helmets = [ - "H_HelmetB", - "H_HelmetB_black", - "H_HelmetB_camo", - "H_HelmetB_desert", - "H_HelmetB_grass", - "H_HelmetB_light", - "H_HelmetB_light_black", - "H_HelmetB_light_desert", - "H_HelmetB_light_grass", - "H_HelmetB_light_sand", - "H_HelmetB_light_snakeskin", - "H_HelmetB_paint", - "H_HelmetB_plain_blk", - "H_HelmetB_sand", - "H_HelmetB_snakeskin", - "H_HelmetCrew_B", - "H_HelmetCrew_I", - "H_HelmetCrew_O", - "H_HelmetIA", - "H_HelmetIA_camo", - "H_HelmetIA_net", - "H_HelmetLeaderO_ocamo", - "H_HelmetLeaderO_oucamo", - "H_HelmetO_ocamo", - "H_HelmetO_oucamo", - "H_HelmetSpecB", - "H_HelmetSpecB_blk", - "H_HelmetSpecB_paint1", - "H_HelmetSpecB_paint2", - "H_HelmetSpecO_blk", - "H_HelmetSpecO_ocamo", - "H_CrewHelmetHeli_B", - "H_CrewHelmetHeli_I", - "H_CrewHelmetHeli_O", - "H_HelmetCrew_I", - "H_HelmetCrew_B", - "H_HelmetCrew_O", - "H_PilotHelmetHeli_B", - "H_PilotHelmetHeli_I", - "H_PilotHelmetHeli_O", - "H_Helmet_Skate", - "H_HelmetB_TI_tna_F", - // Apex - //"H_HelmetO_ViperSP_hex_F", - //"H_HelmetO_ViperSP_ghex_F", - "H_HelmetB_tna_F", - "H_HelmetB_Enh_tna_F", - "H_HelmetB_Light_tna_F", - "H_HelmetSpecO_ghex_F", - "H_HelmetLeaderO_ghex_F", - "H_HelmetO_ghex_F", - "H_HelmetCrew_O_ghex_F" - ]; - blck_headgearList = blck_headgear + blck_helmets; - blck_headgear_blue = blck_headgearList; - blck_headgear_red = blck_headgearList; - blck_headgear_green = blck_headgearList; - blck_headgear_orange = blck_headgearList; - - //This defines the skin list, some skins are disabled by default to permit players to have high visibility uniforms distinct from those of the AI. - blck_SkinList = [ - //https://community.bistudio.com/wiki/Arma_3_CfgWeapons_Equipment - // I have commented out some high visibility uniforms that can be reserved for players or special missions. - // for example, you could have a uniform list specified in a mission template. - "U_AntigonaBody", - "U_AttisBody", - "U_B_CombatUniform_mcam","U_B_CombatUniform_mcam_tshirt","U_B_CombatUniform_mcam_vest","U_B_CombatUniform_mcam_worn","U_B_CombatUniform_sgg","U_B_CombatUniform_sgg_tshirt","U_B_CombatUniform_sgg_vest","U_B_CombatUniform_wdl","U_B_CombatUniform_wdl_tshirt","U_B_CombatUniform_wdl_vest", - "U_B_CTRG_1","U_B_CTRG_2","U_B_CTRG_3", - "U_B_GhillieSuit", - "U_B_HeliPilotCoveralls","U_B_PilotCoveralls", - "U_B_SpecopsUniform_sgg", - "U_B_survival_uniform", - "U_B_Wetsuit", - //"U_BasicBody", - "U_BG_Guerilla1_1","U_BG_Guerilla2_1","U_BG_Guerilla2_2","U_BG_Guerilla2_3","U_BG_Guerilla3_1","U_BG_Guerilla3_2", - "U_BG_leader", - "U_C_Commoner_shorts","U_C_Commoner1_1","U_C_Commoner1_2","U_C_Commoner1_3","U_C_Commoner2_1","U_C_Commoner2_2","U_C_Commoner2_3", - "U_C_Farmer","U_C_Fisherman","U_C_FishermanOveralls","U_C_HunterBody_brn","U_C_HunterBody_grn", - //"U_C_Journalist", - "U_C_Novak", - //"U_C_Poloshirt_blue","U_C_Poloshirt_burgundy","U_C_Poloshirt_redwhite","U_C_Poloshirt_salmon","U_C_Poloshirt_stripped","U_C_Poloshirt_tricolour", - "U_C_Poor_1","U_C_Poor_2","U_C_Poor_shorts_1","U_C_Poor_shorts_2","U_C_PriestBody","U_C_Scavenger_1","U_C_Scavenger_2", - //"U_C_Scientist","U_C_ShirtSurfer_shorts","U_C_TeeSurfer_shorts_1","U_C_TeeSurfer_shorts_2", - "U_C_WorkerCoveralls","U_C_WorkerOveralls","U_Competitor", - "U_I_CombatUniform","U_I_CombatUniform_shortsleeve","U_I_CombatUniform_tshirt","U_I_G_resistanceLeader_F", - "U_I_G_Story_Protagonist_F", - "U_I_GhillieSuit", - "U_I_HeliPilotCoveralls", - "U_I_OfficerUniform", - "U_I_pilotCoveralls", - "U_I_Wetsuit", - "U_IG_Guerilla1_1","U_IG_Guerilla2_1","U_IG_Guerilla2_2","U_IG_Guerilla2_3","U_IG_Guerilla3_1","U_IG_Guerilla3_2", - "U_IG_leader", - "U_IG_Menelaos", - //"U_KerryBody", - //"U_MillerBody", - //"U_NikosAgedBody", - //"U_NikosBody", - "U_O_CombatUniform_ocamo","U_O_CombatUniform_oucamo", - "U_O_GhillieSuit", - "U_O_OfficerUniform_ocamo", - "U_O_PilotCoveralls", - "U_O_SpecopsUniform_blk", - "U_O_SpecopsUniform_ocamo", - "U_O_Wetsuit", - "U_OG_Guerilla1_1","U_OG_Guerilla2_1","U_OG_Guerilla2_2","U_OG_Guerilla2_3","U_OG_Guerilla3_1","U_OG_Guerilla3_2","U_OG_leader", - //"U_OI_Scientist", - //"U_OrestesBody", - "U_Rangemaster", - // DLC - "U_B_FullGhillie_ard","U_I_FullGhillie_ard","U_O_FullGhillie_ard","U_B_FullGhillie_sard","U_O_FullGhillie_sard","U_I_FullGhillie_sard","U_B_FullGhillie_lsh","U_O_FullGhillie_lsh","U_I_FullGhillie_lsh", - //Apex - "U_B_T_Soldier_F", - "U_B_T_Soldier_AR_F", - "U_B_T_Soldier_SL_F", - //"U_B_T_Sniper_F", - //"U_B_T_FullGhillie_tna_F", - "U_B_CTRG_Soldier_F", - "U_B_CTRG_Soldier_2_F", - "U_B_CTRG_Soldier_3_F", - "U_B_GEN_Soldier_F", - "U_B_GEN_Commander_F", - "U_O_T_Soldier_F", - "U_O_T_Officer_F", - //"U_O_T_Sniper_F", - //"U_O_T_FullGhillie_tna_F", - "U_O_V_Soldier_Viper_F", - "U_O_V_Soldier_Viper_hex_F", - "U_I_C_Soldier_Para_1_F", - "U_I_C_Soldier_Para_2_F", - "U_I_C_Soldier_Para_3_F", - "U_I_C_Soldier_Para_4_F", - "U_I_C_Soldier_Para_5_F", - "U_I_C_Soldier_Bandit_1_F", - "U_I_C_Soldier_Bandit_2_F", - "U_I_C_Soldier_Bandit_3_F", - "U_I_C_Soldier_Bandit_4_F", - "U_I_C_Soldier_Bandit_5_F", - "U_I_C_Soldier_Camo_F", - "U_C_man_sport_1_F", - "U_C_man_sport_2_F", - "U_C_man_sport_3_F", - "U_C_Man_casual_1_F", - "U_C_Man_casual_2_F", - "U_C_Man_casual_3_F", - "U_C_Man_casual_4_F", - "U_C_Man_casual_5_F", - "U_C_Man_casual_6_F", - "U_B_CTRG_Soldier_urb_1_F", - "U_B_CTRG_Soldier_urb_2_F", - "U_B_CTRG_Soldier_urb_3_F" - ]; - blck_SkinList_blue = blck_SkinList; - blck_SkinList_red = blck_SkinList; - blck_SkinList_green = blck_SkinList; - blck_SkinList_orange = blck_SkinList; - - blck_vests = [ - "V_Press_F", - "V_Rangemaster_belt", - "V_TacVest_blk", - "V_TacVest_blk_POLICE", - "V_TacVest_brn", - "V_TacVest_camo", - "V_TacVest_khk", - "V_TacVest_oli", - "V_TacVestCamo_khk", - "V_TacVestIR_blk", - "V_I_G_resistanceLeader_F", - "V_BandollierB_blk", - "V_BandollierB_cbr", - "V_BandollierB_khk", - "V_BandollierB_oli", - "V_BandollierB_rgr", - "V_Chestrig_blk", - "V_Chestrig_khk", - "V_Chestrig_oli", - "V_Chestrig_rgr", - "V_HarnessO_brn", - "V_HarnessO_gry", - "V_HarnessOGL_brn", - "V_HarnessOGL_gry", - "V_HarnessOSpec_brn", - "V_HarnessOSpec_gry", - "V_PlateCarrier1_blk", - "V_PlateCarrier1_rgr", - "V_PlateCarrier2_rgr", - "V_PlateCarrier3_rgr", - "V_PlateCarrierGL_blk", - "V_PlateCarrierGL_mtp", - "V_PlateCarrierGL_rgr", - "V_PlateCarrierH_CTRG", - "V_PlateCarrierIA1_dgtl", - "V_PlateCarrierIA2_dgtl", - "V_PlateCarrierIAGL_dgtl", - "V_PlateCarrierIAGL_oli", - "V_PlateCarrierL_CTRG", - "V_PlateCarrierSpec_blk", - "V_PlateCarrierSpec_mtp", - #ifdef useAPEX - //Apex - "V_TacChestrig_grn_F", - "V_TacChestrig_oli_F", - "V_TacChestrig_cbr_F", - "V_PlateCarrier1_tna_F", - "V_PlateCarrier2_tna_F", - "V_PlateCarrierSpec_tna_F", - "V_PlateCarrierGL_tna_F", - "V_HarnessO_ghex_F", - "V_HarnessOGL_ghex_F", - "V_BandollierB_ghex_F", - "V_TacVest_gen_F", - "V_PlateCarrier1_rgr_noflag_F", - #endif - "V_PlateCarrier2_rgr_noflag_F" - ]; - blck_vests_blue = blck_vests; - blck_vests_red = blck_vests; - blck_vests_green = blck_vests; - blck_vests_orange = blck_vests; - - //CraftingFood - blck_Meats=[ - - ]; - blck_Drink = [ - "Exile_Item_PlasticBottleCoffee", - "Exile_Item_PowerDrink", - "Exile_Item_PlasticBottleFreshWater", - "Exile_Item_Beer", - "Exile_Item_EnergyDrink", - "Exile_Item_MountainDupe" - ]; - blck_Food = [ - "Exile_Item_EMRE", - "Exile_Item_GloriousKnakworst", - "Exile_Item_Surstromming", - "Exile_Item_SausageGravy", - "Exile_Item_Catfood", - "Exile_Item_ChristmasTinner", - "Exile_Item_BBQSandwich", - "Exile_Item_Dogfood", - "Exile_Item_BeefParts", - "Exile_Item_Cheathas", - "Exile_Item_Noodles", - "Exile_Item_SeedAstics", - "Exile_Item_Raisins", - "Exile_Item_Moobar", - "Exile_Item_InstantCoffee" - ]; - - #ifdef useCUP - - #endif - - #ifdef useRHS - - #endif - blck_ConsumableItems = blck_Meats + blck_Drink + blck_Food; - blck_throwableExplosives = ["HandGrenade","MiniGrenade"]; - blck_otherExplosives = ["1Rnd_HE_Grenade_shell","3Rnd_HE_Grenade_shell","DemoCharge_Remote_Mag","SatchelCharge_Remote_Mag"]; - blck_explosives = blck_throwableExplosives + blck_otherExplosives; - blck_medicalItems = ["Exile_Item_InstaDoc","Exile_Item_Bandage","Exile_Item_Vishpirin"]; - blck_specialItems = blck_throwableExplosives + blck_medicalItems; - - blck_NVG = ["NVGoggles","NVGoggles_INDEP","NVGoggles_OPFOR","Exile_Item_XM8"]; - blck_buildingMaterials = ["Exile_Item_ExtensionCord","Exile_Item_JunkMetal","Exile_Item_LightBulb","Exile_Item_MetalBoard", - "Exile_Item_MetalPole","Exile_Item_MetalScrews","Exile_Item_Cement","Exile_Item_Sand","Exile_Item_MetalWire","Exile_Item_ExtensionCord","Exile_Item_JunkMetal"]; - blck_tools = ["Exile_Item_Matches","Exile_Item_CookingPot","Exile_Melee_Axe","Exile_Melee_SledgeHammmer","Exile_Item_Handsaw","Exile_Item_Pliers","Exile_Item_CanOpener","Exile_Item_Shovel"]; - -/*************************************************************************************** -DEFAULT CONTENTS OF LOOT CRATES FOR EACH MISSION -Note however that these configurations can be used in any way you like or replaced with mission-specific customized loot arrays -for examples of how you can do this see \Major\Compositions.sqf -***************************************************************************************/ - - // values are: number of things from the weapons, magazines, optics, materials(cinder etc), items (food etc) and backpacks arrays to add, respectively. - blck_lootCountsOrange = [8,32,8,35,16,2]; // Orange - blck_lootCountsGreen = [7,24,6,25,18,2]; // Green - blck_lootCountsRed = [5,16,4,10,6,1]; // Red - blck_lootCountsBlue = [4,12,3,6,6,1]; // Blue - - blck_BoxLoot_Orange = - // Loot is grouped as [weapons],[magazines],[items] in order to be able to use the correct function to load the item into the crate later on. - // Each item consist of the following information ["ItemName",minNum, maxNum] where min is the smallest number added and min+max is the largest number added. - - [ - [// Weapons - #ifdef useAPEX - "arifle_AK12_F","arifle_AK12_GL_F","arifle_AKM_F","arifle_AKM_FL_F","arifle_AKS_F","arifle_ARX_blk_F","arifle_ARX_ghex_F","arifle_ARX_hex_F","arifle_CTAR_blk_F","arifle_CTAR_hex_F", - "arifle_CTAR_ghex_F","arifle_CTAR_GL_blk_F","arifle_CTARS_blk_F","arifle_CTARS_hex_F","arifle_CTARS_ghex_F","arifle_SPAR_01_blk_F","arifle_SPAR_01_khk_F","arifle_SPAR_01_snd_F", - "arifle_SPAR_01_GL_blk_F","arifle_SPAR_01_GL_khk_F","arifle_SPAR_01_GL_snd_F","arifle_SPAR_02_blk_F","arifle_SPAR_02_khk_F","arifle_SPAR_02_snd_F","arifle_SPAR_03_blk_F", - "arifle_SPAR_03_khk_F","arifle_SPAR_03_snd_F","arifle_MX_khk_F","arifle_MX_GL_khk_F","arifle_MXC_khk_F","arifle_MXM_khk_F", - #endif - ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], - ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], - ["srifle_DMR_01_F","10Rnd_762x51_Mag"], - ["srifle_LRR_F","7Rnd_408_Mag"], - ["srifle_EBR_F","20Rnd_762x51_Mag"], - ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], - ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], - ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], - ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], - ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"], - ["MMG_01_hex_F","150Rnd_93x64_Mag"], - ["MMG_01_tan_F","150Rnd_93x64_Mag"], - ["MMG_02_black_F","150Rnd_93x64_Mag"], - ["MMG_02_camo_F","150Rnd_93x64_Mag"], - ["MMG_02_sand_F","150Rnd_93x64_Mag"], - ["srifle_DMR_02_camo_F","10Rnd_338_Mag"], - ["srifle_DMR_02_F","10Rnd_338_Mag"], - ["srifle_DMR_02_sniper_F","10Rnd_338_Mag"], - ["srifle_DMR_03_F","10Rnd_338_Mag"], - ["srifle_DMR_03_tan_F","10Rnd_338_Mag"], - ["srifle_DMR_04_Tan_F","10Rnd_338_Mag"], - ["srifle_DMR_05_hex_F","10Rnd_338_Mag"], - ["srifle_DMR_05_tan_F","10Rnd_338_Mag"], - ["srifle_DMR_06_camo_F","10Rnd_338_Mag"], - ["srifle_DMR_04_F","10Rnd_127x54_Mag"], - ["srifle_DMR_05_blk_F","10Rnd_93x64_DMR_05_Mag"], - ["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"] - ], - [//Magazines - ["3rnd_HE_Grenade_Shell",3,6], - ["30Rnd_65x39_caseless_green",3,6], - ["30Rnd_556x45_Stanag",3,6], - ["30Rnd_45ACP_Mag_SMG_01",3,6], - ["20Rnd_556x45_UW_mag",3,6], - ["20Rnd_762x51_Mag",7,14], - ["200Rnd_65x39_cased_Box",3,6], - ["100Rnd_65x39_caseless_mag_Tracer",3,6], - ["3rnd_HE_Grenade_Shell",1,3], - ["HandGrenade",1,5], - // Marksman Pack Ammo - ["10Rnd_338_Mag",3,5], - ["10Rnd_338_Mag",3,5], - ["10Rnd_127x54_Mag" ,3,5], - ["10Rnd_127x54_Mag",3,5], - ["10Rnd_93x64_DMR_05_Mag" ,3,5], - ["10Rnd_93x64_DMR_05_Mag" ,3,5], - ["150Rnd_93x64_Mag",3,5], - ["130Rnd_338_Mag",3,5] - ], - [ // Optics - ["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2], - ["optic_Arco",1,3], - ["optic_SOS",1,3],["optic_MRCO",1,3],["optic_DMS",1,3],["optic_Yorris",1,3], - ["optic_MRD",1,3],["optic_LRPS",1,3],["optic_NVS",1,3],["optic_Nightstalker",1,2],["optic_Nightstalker",1,2],["optic_Nightstalker",1,2], - ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], - ["optic_AMS_khk",1,3],["optic_AMS_snd",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] - ], - [// Materials and supplies - ["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,8],["Exile_Item_ExtensionCord",1,8],["Exile_Item_FuelCanisterEmpty",1,2], - ["Exile_Item_JunkMetal",1,10],["Exile_Item_LightBulb",1,10],["Exile_Item_MetalBoard",1,10],["Exile_Item_MetalPole",1,10],["Exile_Item_CamoTentKit",1,10],["Exile_Item_WorkBenchKit",1,10], - ["Exile_Item_WoodWindowKit",1,10],["Exile_Item_WoodWallKit",1,10],["Exile_Item_WoodStairsKit",1,10],["Exile_Item_WoodGateKit",1,10],["Exile_Item_WoodDoorwayKit",1,10],["Exile_Item_MetalBoard",1,10], - ["Exile_Item_MetalBoard",1,10],["Exile_Item_ExtensionCord",1,10],["Exile_Item_MetalPole",1,10],["Exile_Item_Sand",3,10],["Exile_Item_Cement",3,10],["Exile_Item_Sand",3,10],["Exile_Item_Cement",3,10], - ["Exile_Item_MetalWire",3,10],["Exile_Item_MetalScrews",3,10] - // - ], - [//Items - ["Exile_Item_InstaDoc",1,2],["NVGoggles",1,2],["Rangefinder",1,2],["Exile_Item_Bandage",1,3],["Exile_Item_Vishpirin",1,3], - ["Exile_Item_Catfood",1,3],["Exile_Item_Surstromming",1,3],["Exile_Item_BBQSandwich",1,3],["Exile_Item_ChristmasTinner",1,3],["Exile_Item_SausageGravy",1,3],["Exile_Item_GloriousKnakworst",1,3], - ["Exile_Item_BeefParts",1,3],["Exile_Item_Cheathas",1,3],["Exile_Item_Noodles",1,3],["Exile_Item_SeedAstics",1,3],["Exile_Item_Raisins",1,3],["Exile_Item_Moobar",1,3],["Exile_Item_InstantCoffee",1,3],["Exile_Item_EMRE",1,3], - ["Exile_Item_PlasticBottleCoffee",1,3],["Exile_Item_PowerDrink",1,3],["Exile_Item_PlasticBottleFreshWater",1,3],["Exile_Item_Beer",1,3],["Exile_Item_EnergyDrink",1,3],["Exile_Item_MountainDupe",1,3] - ], - [ // Backpacks - ["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_cbr",1,2],["B_AssaultPack_rgr",1,2],["B_AssaultPack_sgg",1,2], - ["B_Carryall_cbr",1,2],["B_Carryall_khk",1,2],["B_Carryall_mcamo",1,2],["B_Carryall_ocamo",1,2],["B_Carryall_oli",1,2],["B_Carryall_oucamo",1,2], - ["B_FieldPack_blk",1,2],["B_FieldPack_cbr",1,2],["B_FieldPack_ocamo",1,2],["B_FieldPack_oucamo",1,2], - ["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2],["B_Kitbag_sgg",1,2], - ["B_Parachute",1,2],["V_RebreatherB",1,2],["V_RebreatherIA",1,2],["V_RebreatherIR",1,2], - ["B_TacticalPack_blk",1,2],["B_TacticalPack_mcamo",1,2],["B_TacticalPack_ocamo",1,2],["B_TacticalPack_oli",1,2],["B_TacticalPack_rgr",1,2], - ["B_Bergen_blk",1,2],["B_Bergen_mcamo",1,2],["B_Bergen_rgr",1,2],["B_Bergen_sgg",1,2], - ["B_HuntingBackpack",1,2],["B_OutdoorPack_blk",1,2],["B_OutdoorPack_blu",1,2],["B_OutdoorPack_tan",1,2] - ] - ]; - - blck_BoxLoot_Green = - [ - [// Weapons - // Format is ["Weapon Name","Magazine Name"], - #ifdef useAPEX - "arifle_AK12_F","arifle_AK12_GL_F","arifle_AKM_F","arifle_AKM_FL_F","arifle_AKS_F","arifle_ARX_blk_F","arifle_ARX_ghex_F","arifle_ARX_hex_F","arifle_CTAR_blk_F","arifle_CTAR_hex_F", - "arifle_CTAR_ghex_F","arifle_CTAR_GL_blk_F","arifle_CTARS_blk_F","arifle_CTARS_hex_F","arifle_CTARS_ghex_F","arifle_SPAR_01_blk_F","arifle_SPAR_01_khk_F","arifle_SPAR_01_snd_F", - "arifle_SPAR_01_GL_blk_F","arifle_SPAR_01_GL_khk_F","arifle_SPAR_01_GL_snd_F","arifle_SPAR_02_blk_F","arifle_SPAR_02_khk_F","arifle_SPAR_02_snd_F","arifle_SPAR_03_blk_F", - "arifle_SPAR_03_khk_F","arifle_SPAR_03_snd_F","arifle_MX_khk_F","arifle_MX_GL_khk_F","arifle_MXC_khk_F","arifle_MXM_khk_F", - #endif - ["arifle_Katiba_F","30Rnd_65x39_caseless_green"], - ["arifle_Katiba_GL_F","30Rnd_65x39_caseless_green"], - ["arifle_MX_F","30Rnd_65x39_caseless_mag"], - ["arifle_MX_GL_F","30Rnd_65x39_caseless_mag"], - ["arifle_MXC_F","30Rnd_65x39_caseless_mag"], - ["arifle_MXM_F","30Rnd_65x39_caseless_mag"], - ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], - ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], - ["srifle_DMR_01_F","10Rnd_762x51_Mag"], - ["srifle_LRR_F","7Rnd_408_Mag"], - ["srifle_EBR_F","20Rnd_762x51_Mag"], - ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], - ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], - ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], - ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], - ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"], - ["MMG_01_hex_F","150Rnd_93x64_Mag"], - ["srifle_DMR_02_camo_F","10Rnd_338_Mag"], - ["srifle_DMR_03_F","10Rnd_338_Mag"], - ["srifle_DMR_04_Tan_F","10Rnd_338_Mag"], - ["srifle_DMR_05_hex_F","10Rnd_338_Mag"], - ["srifle_DMR_06_camo_F","10Rnd_338_Mag"] - ], - [//Magazines - // Format is ["Magazine name, Minimum number to add, Maximum number to add], - ["3rnd_HE_Grenade_Shell",2,4], - ["30Rnd_65x39_caseless_green",3,6], - ["30Rnd_556x45_Stanag",3,6], - ["30Rnd_556x45_Stanag",3,6], - ["30Rnd_45ACP_Mag_SMG_01",3,6], - ["20Rnd_556x45_UW_mag",3,6], - ["20Rnd_762x51_Mag",6,12], - ["200Rnd_65x39_cased_Box",3,6], - ["100Rnd_65x39_caseless_mag_Tracer",3,6], - ["3rnd_HE_Grenade_Shell",1,3], - ["HandGrenade",1,3], - // Marksman Pack Ammo - ["10Rnd_338_Mag",1,4], - ["10Rnd_338_Mag",1,4], - ["10Rnd_127x54_Mag" ,1,4], - ["10Rnd_127x54_Mag",1,4], - ["10Rnd_93x64_DMR_05_Mag" ,1,4], - ["10Rnd_93x64_DMR_05_Mag" ,1,4], - ["130Rnd_338_Mag",3,5] - ], - [ // Optics - ["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3], - ["optic_Arco",1,3],["optic_Hamr",1,3],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Aco_smg",1,3],["optic_ACO_grn_smg",1,3], - ["optic_Holosight",1,3],["optic_Holosight_smg",1,3],["optic_SOS",1,3],["optic_MRCO",1,3],["optic_DMS",1,3],["optic_Yorris",1,3], - ["optic_MRD",1,3],["optic_LRPS",1,3],["optic_NVS",1,3],["optic_Nightstalker",1,2],["optic_Nightstalker",1,2],["optic_Nightstalker",1,2], - ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], - ["optic_AMS_khk",1,3],["optic_AMS_snd",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] - ], - [// Materials and supplies - ["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,8],["Exile_Item_ExtensionCord",1,8],["Exile_Item_FuelCanisterEmpty",1,2], - ["Exile_Item_JunkMetal",1,5],["Exile_Item_LightBulb",1,5],["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_CamoTentKit",1,5],["Exile_Item_WorkBenchKit",1,5], - ["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalWire",3,10],["Exile_Item_MetalScrews",3,10],["Exile_Item_ExtensionCord",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_Sand",2,5], - ["Exile_Item_Cement",2,8],["Exile_Item_Sand",2,8],["Exile_Item_Cement",2,8] - ], - [//Items - ["Exile_Item_InstaDoc",1,2],["NVGoggles",1,2],["Rangefinder",1,2],["Exile_Item_Bandage",1,6],["Exile_Item_Vishpirin",1,6], - ["Exile_Item_Catfood",1,3],["Exile_Item_Surstromming",1,3],["Exile_Item_BBQSandwich",1,3],["Exile_Item_ChristmasTinner",1,3],["Exile_Item_SausageGravy",1,3],["Exile_Item_GloriousKnakworst",1,3], - ["Exile_Item_BeefParts",1,3],["Exile_Item_Cheathas",1,3],["Exile_Item_Noodles",1,3],["Exile_Item_SeedAstics",1,3],["Exile_Item_Raisins",1,3],["Exile_Item_Moobar",1,3],["Exile_Item_InstantCoffee",1,3],["Exile_Item_EMRE",1,3], - ["Exile_Item_PlasticBottleCoffee",1,3],["Exile_Item_PowerDrink",1,3],["Exile_Item_PlasticBottleFreshWater",1,3],["Exile_Item_Beer",1,3],["Exile_Item_EnergyDrink",1,3],["Exile_Item_MountainDupe",1,3] - ], - [ // Backpacks - ["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_cbr",1,2],["B_AssaultPack_rgr",1,2],["B_AssaultPack_sgg",1,2], - ["B_Carryall_cbr",1,2],["B_Carryall_khk",1,2],["B_Carryall_mcamo",1,2],["B_Carryall_ocamo",1,2],["B_Carryall_oli",1,2],["B_Carryall_oucamo",1,2], - ["B_FieldPack_blk",1,2],["B_FieldPack_cbr",1,2],["B_FieldPack_ocamo",1,2],["B_FieldPack_oucamo",1,2], - ["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2],["B_Kitbag_sgg",1,2], - ["B_Parachute",1,2],["V_RebreatherB",1,2],["V_RebreatherIA",1,2],["V_RebreatherIR",1,2], - ["B_TacticalPack_blk",1,2],["B_TacticalPack_mcamo",1,2],["B_TacticalPack_ocamo",1,2],["B_TacticalPack_oli",1,2],["B_TacticalPack_rgr",1,2], - ["B_Bergen_blk",1,2],["B_Bergen_mcamo",1,2],["B_Bergen_rgr",1,2],["B_Bergen_sgg",1,2], - ["B_HuntingBackpack",1,2],["B_OutdoorPack_blk",1,2],["B_OutdoorPack_blu",1,2],["B_OutdoorPack_tan",1,2] - ] - ]; - - blck_BoxLoot_Blue = - [ - [// Weapons - ["arifle_Katiba_F","30Rnd_65x39_caseless_green"], - ["arifle_Katiba_GL_F","30Rnd_65x39_caseless_green"], - ["arifle_Mk20_F","30Rnd_556x45_Stanag"], - ["arifle_Mk20_plain_F","30Rnd_556x45_Stanag"], - ["arifle_Mk20C_F","30Rnd_556x45_Stanag"], - ["arifle_Mk20_GL_F","30Rnd_556x45_Stanag"], - ["arifle_Mk20_GL_plain_F","30Rnd_556x45_Stanag"], - ["arifle_MX_F","30Rnd_65x39_caseless_mag"], - ["arifle_MX_GL_F","30Rnd_65x39_caseless_mag"], - ["arifle_MXC_F","30Rnd_65x39_caseless_mag"], - ["arifle_MXM_F","30Rnd_65x39_caseless_mag"], - ["arifle_SDAR_F","20Rnd_556x45_UW_mag"], - ["arifle_TRG20_F","30Rnd_556x45_Stanag"], - ["SMG_02_F","30Rnd_9x21_Mag"], - ["SMG_01_F","30Rnd_45ACP_Mag_SMG_01"], - ["Hgun_PDW2000_F","30Rnd_9x21_Mag"], - ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], - ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], - ["srifle_DMR_01_F","10Rnd_762x51_Mag"], - ["srifle_LRR_F","7Rnd_408_Mag"], - ["srifle_EBR_F","20Rnd_762x51_Mag"], - ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], - ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], - ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], - ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], - ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"] - ], - [//Magazines - ["3rnd_HE_Grenade_Shell",1,2], - ["30Rnd_65x39_caseless_green",3,6], - ["30Rnd_556x45_Stanag",3,6], - ["30Rnd_556x45_Stanag",3,6], - ["30Rnd_45ACP_Mag_SMG_01",3,6], - ["20Rnd_556x45_UW_mag",3,6], - ["20Rnd_762x51_Mag",3,10], - ["200Rnd_65x39_cased_Box",3,6], - ["100Rnd_65x39_caseless_mag_Tracer",3,6], - ["3rnd_HE_Grenade_Shell",1,4], - ["HandGrenade",1,3], - // Marksman Pack Ammo - ["150Rnd_93x64_Mag",1,4], - ["10Rnd_338_Mag",1,4], - ["10Rnd_127x54_Mag" ,1,4], - ["10Rnd_127x54_Mag",1,4], - ["10Rnd_93x64_DMR_05_Mag" ,1,4] - ], - [ // Optics - ["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3], - ["optic_Arco",1,3],["optic_Hamr",1,3],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Aco_smg",1,3],["optic_ACO_grn_smg",1,3], - ["optic_Holosight",1,3],["optic_Holosight_smg",1,3],["optic_SOS",1,3],["optic_MRCO",1,3],["optic_DMS",1,3],["optic_Yorris",1,3], - ["optic_MRD",1,3],["optic_LRPS",1,3],["optic_NVS",1,3],["optic_Nightstalker",1,2], - ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], - ["optic_AMS_khk",1,3],["optic_AMS_snd",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] - ], - [// Materials and supplies - ["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,3],["Exile_Item_ExtensionCord",1,2],["Exile_Item_FuelCanisterEmpty",1,2], - ["Exile_Item_JunkMetal",1,6],["Exile_Item_LightBulb",1,6],["Exile_Item_MetalBoard",1,6],["Exile_Item_MetalPole",1,6],["Exile_Item_CamoTentKit",1,6],["Exile_Item_MetalWire",1,4] - ], - [//Items - ["Exile_Item_InstaDoc",1,2],["NVGoggles",1,2],["Rangefinder",1,2],["Exile_Item_Bandage",1,3],["Exile_Item_Vishpirin",1,3], - ["Exile_Item_Catfood",1,3],["Exile_Item_Surstromming",1,3],["Exile_Item_BBQSandwich",1,3],["Exile_Item_ChristmasTinner",1,3],["Exile_Item_SausageGravy",1,3],["Exile_Item_GloriousKnakworst",1,3], - ["Exile_Item_BeefParts",1,3],["Exile_Item_Cheathas",1,3],["Exile_Item_Noodles",1,3],["Exile_Item_SeedAstics",1,3],["Exile_Item_Raisins",1,3],["Exile_Item_Moobar",1,3],["Exile_Item_InstantCoffee",1,3],["Exile_Item_EMRE",1,3], - ["Exile_Item_PlasticBottleCoffee",1,3],["Exile_Item_PowerDrink",1,3],["Exile_Item_PlasticBottleFreshWater",1,3],["Exile_Item_Beer",1,3],["Exile_Item_EnergyDrink",1,3],["Exile_Item_MountainDupe",1,3] - ], - [ // Backpacks - ["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_cbr",1,2],["B_AssaultPack_rgr",1,2],["B_AssaultPack_sgg",1,2], - ["B_Carryall_cbr",1,2],["B_Carryall_khk",1,2],["B_Carryall_mcamo",1,2],["B_Carryall_ocamo",1,2],["B_Carryall_oli",1,2],["B_Carryall_oucamo",1,2], - ["B_FieldPack_blk",1,2],["B_FieldPack_cbr",1,2],["B_FieldPack_ocamo",1,2],["B_FieldPack_oucamo",1,2], - ["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2],["B_Kitbag_sgg",1,2], - ["B_Parachute",1,2],["V_RebreatherB",1,2],["V_RebreatherIA",1,2],["V_RebreatherIR",1,2], - ["B_TacticalPack_blk",1,2],["B_TacticalPack_mcamo",1,2],["B_TacticalPack_ocamo",1,2],["B_TacticalPack_oli",1,2],["B_TacticalPack_rgr",1,2], - ["B_Bergen_blk",1,2],["B_Bergen_mcamo",1,2],["B_Bergen_rgr",1,2],["B_Bergen_sgg",1,2], - ["B_HuntingBackpack",1,2],["B_OutdoorPack_blk",1,2],["B_OutdoorPack_blu",1,2],["B_OutdoorPack_tan",1,2] - ] - ]; - - blck_BoxLoot_Red = - [ - [// Weapons - ["arifle_Katiba_F","30Rnd_65x39_caseless_green"], - ["arifle_Katiba_GL_F","30Rnd_65x39_caseless_green"], - ["arifle_Mk20_F","30Rnd_556x45_Stanag"], - ["arifle_Mk20_plain_F","30Rnd_556x45_Stanag"], - ["arifle_Mk20C_F","30Rnd_556x45_Stanag"], - ["arifle_Mk20_GL_F","30Rnd_556x45_Stanag"], - ["arifle_Mk20_GL_plain_F","30Rnd_556x45_Stanag"], - ["arifle_MX_F","30Rnd_65x39_caseless_mag"], - ["arifle_MX_GL_F","30Rnd_65x39_caseless_mag"], - //["arifle_MX_SW_Black_Hamr_pointer_F","100Rnd_65x39_caseless_mag_Tracer"], - ["arifle_MXC_F","30Rnd_65x39_caseless_mag"], - ["arifle_MXM_F","30Rnd_65x39_caseless_mag"], - ["arifle_SDAR_F","20Rnd_556x45_UW_mag"], - ["arifle_TRG20_F","30Rnd_556x45_Stanag"], - ["SMG_02_F","30Rnd_9x21_Mag"], - ["SMG_01_F","30Rnd_45ACP_Mag_SMG_01"], - ["Hgun_PDW2000_F","30Rnd_9x21_Mag"], - ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], - ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], - ["srifle_DMR_01_F","10Rnd_762x51_Mag"], - ["srifle_LRR_F","7Rnd_408_Mag"], - ["srifle_EBR_F","20Rnd_762x51_Mag"], - ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], - ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], - ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], - ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], - ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"], - ["MMG_01_hex_F","150Rnd_93x64_Mag"], - ["srifle_DMR_04_Tan_F","10Rnd_338_Mag"], - ["srifle_DMR_06_camo_F","10Rnd_338_Mag"] - ], - [//Magazines - - ["3rnd_HE_Grenade_Shell",1,5],["30Rnd_65x39_caseless_green",3,6],["30Rnd_556x45_Stanag",3,6],["30Rnd_556x45_Stanag",3,6],["30Rnd_45ACP_Mag_SMG_01",3,6],["20Rnd_556x45_UW_mag",3,6], - ["10Rnd_762x51_Mag",3,6],["20Rnd_762x51_Mag",3,7],["200Rnd_65x39_cased_Box",3,6],["100Rnd_65x39_caseless_mag_Tracer",3,6], - // Marksman Pack Ammo - ["150Rnd_93x64_Mag",1,4], - ["10Rnd_338_Mag",1,4], - ["10Rnd_127x54_Mag" ,1,4], - ["10Rnd_127x54_Mag",1,4], - ["10Rnd_93x64_DMR_05_Mag" ,1,4] - ], - [ // Optics - ["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3], - ["optic_Arco",1,3],["optic_Hamr",1,3],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Aco_smg",1,3],["optic_ACO_grn_smg",1,3], - ["optic_Holosight",1,3],["optic_Holosight_smg",1,3],["optic_SOS",1,3],["optic_MRCO",1,3],["optic_DMS",1,3],["optic_Yorris",1,3], - ["optic_MRD",1,3],["optic_LRPS",1,3],["optic_NVS",1,3],["optic_Nightstalker",1,2], - ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], - ["optic_AMS_khk",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] - ], - [// Materials and supplies - ["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,8],["Exile_Item_ExtensionCord",1,8],["Exile_Item_FuelCanisterEmpty",1,2], - ["Exile_Item_JunkMetal",1,5],["Exile_Item_LightBulb",1,5],["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_CamoTentKit",1,5],["Exile_Item_WorkBenchKit",1,5], - ["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalWire",3,10],["Exile_Item_MetalScrews",3,10],["Exile_Item_ExtensionCord",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_Sand",2,5], - ["Exile_Item_Cement",2,5],["Exile_Item_Sand",2,5],["Exile_Item_Cement",2,5] - ], - [//Items - ["Exile_Item_InstaDoc",1,2],["NVGoggles",1,2],["Exile_Item_Energydrink",1,4],["Exile_Item_Beer",1,3],["Rangefinder",1,2], - ["Exile_Item_Catfood",1,3],["Exile_Item_Surstromming",1,3],["Exile_Item_BBQSandwich",1,3],["Exile_Item_ChristmasTinner",1,3],["Exile_Item_SausageGravy",1,3],["Exile_Item_GloriousKnakworst",1,3] - ], - [ // Backpacks - ["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_cbr",1,2],["B_AssaultPack_rgr",1,2],["B_AssaultPack_sgg",1,2], - ["B_Carryall_cbr",1,2],["B_Carryall_khk",1,2],["B_Carryall_mcamo",1,2],["B_Carryall_ocamo",1,2],["B_Carryall_oli",1,2],["B_Carryall_oucamo",1,2], - ["B_FieldPack_blk",1,2],["B_FieldPack_cbr",1,2],["B_FieldPack_ocamo",1,2],["B_FieldPack_oucamo",1,2], - ["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2],["B_Kitbag_sgg",1,2], - ["B_Parachute",1,2],["V_RebreatherB",1,2],["V_RebreatherIA",1,2],["V_RebreatherIR",1,2], - ["B_TacticalPack_blk",1,2],["B_TacticalPack_mcamo",1,2],["B_TacticalPack_ocamo",1,2],["B_TacticalPack_oli",1,2],["B_TacticalPack_rgr",1,2], - ["B_Bergen_blk",1,2],["B_Bergen_mcamo",1,2],["B_Bergen_rgr",1,2],["B_Bergen_sgg",1,2], - ["B_HuntingBackpack",1,2],["B_OutdoorPack_blk",1,2],["B_OutdoorPack_blu",1,2],["B_OutdoorPack_tan",1,2] - ] - ]; - - - -blck_contructionLootExile = [ - [// Weapons - - ], - [//Magazines - - ], - [ // Optics - - ], - [// Materials and supplies - - // - ["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,8],["Exile_Item_ExtensionCord",1,8],["Exile_Item_FuelCanisterEmpty",1,2], - ["Exile_Item_JunkMetal",1,10],["Exile_Item_LightBulb",1,10],["Exile_Item_MetalBoard",1,10],["Exile_Item_MetalPole",1,10],["Exile_Item_CamoTentKit",1,10],["Exile_Item_MetalScrews",3,10], - ["Exile_Item_MetalPole",1,10],["Exile_Item_Sand",2,10],["Exile_Item_Cement",2,10] - ], - [//Items - "Exile_Item_Matches","Exile_Item_CookingPot","Exile_Item_CanOpener","Exile_Item_Handsaw","Exile_Item_Pliers","Exile_Item_Grinder","Exile_Item_Foolbox","Exile_Item_Hammer", - "Exile_Item_CordlessScrewdriver","Exile_Item_FireExtinguisher","Exile_Item_OilCanister","Exile_Item_Screwdriver","Exile_Item_Shovel","Exile_Item_Wrench","Exile_Item_CordlessScrewdriver", - "Exile_Item_FireExtinguisher","Exile_Item_OilCanister","Exile_Item_Screwdriver","Exile_Item_DuctTape","Binocular","Rangefinder","ItemGPS","ItemMap","ItemCompass","ItemRadio","ItemWatch", - "Exile_Item_XM8" - ], - [ // Backpacks - - ] -]; -blck_contructionLoot = blck_contructionLootExile; -blck_supportLootExile = [ - [// Weapons - - ], - [//Magazines - - ], - [ // Optics - - ], - [// Materials and supplies - - ], - [//Items - ["Exile_Item_Matches",2,4],["Exile_Item_CookingPot",2,4],["Exile_Item_CanOpener",2,4], - ["Exile_Item_InstaDoc",1,2],["NVGoggles",1,2],["Rangefinder",1,2],["Exile_Item_Bandage",1,3],["Exile_Item_Vishpirin",1,3], - ["Exile_Item_Catfood",1,3],["Exile_Item_Surstromming",1,3],["Exile_Item_BBQSandwich",1,3],["Exile_Item_ChristmasTinner",1,3],["Exile_Item_SausageGravy",1,3],["Exile_Item_GloriousKnakworst",1,3], - ["Exile_Item_BeefParts",1,3],["Exile_Item_Cheathas",1,3],["Exile_Item_Noodles",1,3],["Exile_Item_SeedAstics",1,3],["Exile_Item_Raisins",1,3],["Exile_Item_Moobar",1,3],["Exile_Item_InstantCoffee",1,3],["Exile_Item_EMRE",1,3], - ["Exile_Item_PlasticBottleCoffee",1,3],["Exile_Item_PowerDrink",1,3],["Exile_Item_PlasticBottleFreshWater",1,3],["Exile_Item_Beer",1,3],["Exile_Item_EnergyDrink",1,3],["Exile_Item_MountainDupe",1,3] - ], - [ // Backpacks - - ] -]; - -blck_supportLoot = blck_supportLootExile; - -blck_highPoweredLoot = [ - [// Weapons - ["MMG_01_hex_F","150Rnd_93x64_Mag"], - ["MMG_01_tan_F","150Rnd_93x64_Mag"], - ["MMG_02_black_F","150Rnd_93x64_Mag"], - ["MMG_02_camo_F","150Rnd_93x64_Mag"], - ["MMG_02_sand_F","150Rnd_93x64_Mag"], - ["srifle_DMR_02_camo_F","10Rnd_338_Mag"], - ["srifle_DMR_02_F","10Rnd_338_Mag"], - ["srifle_DMR_02_sniper_F","10Rnd_338_Mag"], - ["srifle_DMR_03_F","10Rnd_338_Mag"], - ["srifle_DMR_03_tan_F","10Rnd_338_Mag"], - ["srifle_DMR_04_Tan_F","10Rnd_338_Mag"], - ["srifle_DMR_05_hex_F","10Rnd_338_Mag"], - ["srifle_DMR_05_tan_F","10Rnd_338_Mag"], - ["srifle_DMR_06_camo_F","10Rnd_338_Mag"], - ["srifle_DMR_04_F","10Rnd_127x54_Mag"], - ["srifle_DMR_05_blk_F","10Rnd_93x64_DMR_05_Mag"], - ["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"], - ["launch_NLAW_F","NLAW_F"], - ["launch_RPG32_F","RPG7_F"], - ["launch_B_Titan_F","Titan_AT"], - ["launch_I_Titan_F","Titan_AT"], - ["launch_O_Titan_F","Titan_AP"], - ["launch_B_Titan_short_F","Titan_AA"], - ["launch_I_Titan_short_F","Titan_AA"], - ["launch_O_Titan_short_F","Titan_AA"], - ["launch_RPG7_F","RPG32_F"], - ["launch_O_Vorona_brown_F","vorona_HEAT"], - ["launch_O_Vorona_green_F","Vorona_HE"] - ], - [//Magazines - ["NLAW_F",1,3], - ["RPG32_F",1,3], - ["RPG32_HE_F",1,3], - ["Titan_AA",1,3], - ["Titan_AT",1,3], - ["Titan_AP",1,3], - ["RPG7_F",1,3], - ["vorona_HEAT",1,3], - ["Vorona_HE",1,3], - //["10Rnd_338_Mag",1,5], - ["10Rnd_338_Mag",3,5], - //["10Rnd_127x54_Mag" ,1,5], - ["10Rnd_127x54_Mag",3,5], - ["10Rnd_93x64_DMR_05_Mag" ,3,5], - //["10Rnd_93x64_DMR_05_Mag" ,1,5], - ["150Rnd_93x64_Mag",2,5], - ["130Rnd_338_Mag",3,5] - ], - [ // Optics - - ], - [// Materials and supplies - - ], - [//Items - ], - [ // Backpacks - - ] -]; - // Time the marker remains after completing the mission in seconds - experimental not yet implemented - - blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type. - - diag_log format["[blckeagls] Configurations for Exile Loaded"]; - - blck_configsExileLoaded = true; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf index 81fc6b1..b4a0b17 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf @@ -52,7 +52,7 @@ blck_useHC = false; // Experimental (should be working). // Credit to Defent and eraser for their excellent work on scripts to transfer AI to clients for which these settings are required. - blck_ai_offload_to_client = true; // forces AI to be transfered to player's PCs. Disable if you have players running slow PCs. + blck_ai_offload_to_client = false; // forces AI to be transfered to player's PCs. Disable if you have players running slow PCs. // ******************************************************* // Experimental; may cause issues with waypoints // ******************************************************* @@ -76,10 +76,10 @@ blck_showCountAliveAI = true; //Minimum distance between missions - blck_MinDistanceFromMission = 1000; - blck_minDistanceToBases = 1000; - blck_minDistanceToPlayer = 800; - blck_minDistanceFromTowns = 500; + blck_MinDistanceFromMission = 800; + blck_minDistanceToBases = 500; + blck_minDistanceToPlayer = 500; + blck_minDistanceFromTowns = 300; blck_minDistanceFromDMS = 500; // minimum distance for a blackeagls mission from any nearby DMS missions. set to -1 to disable this check. /////////////////////////////// @@ -430,6 +430,11 @@ diag_log format["[blckeagls] Loading Mission System using Parameters for %1 for militarized servers",blck_modType]; execVM "\q\addons\custom_server\Configs\blck_configs_exile_mil.sqf"; }; + if (toLower(blck_modType) isEqualTo "default") then + { + diag_log format["[blckeagls] Loading Mission System using Parameters for %1 for militarized servers",blck_modType]; + execVM "\q\addons\custom_server\Configs\blck_configs_default_mil.sqf"; + }; //waitUntil{!isNil "blck_useConfigsGeneratedLoadouts"}; //waitUntil {!isNil "blck_maximumItemPriceInAI_Loadouts"}; uiSleep 10; diff --git a/@GMS/addons/custom_server/Configs/blck_custom_config.sqf b/@GMS/addons/custom_server/Configs/blck_custom_config.sqf index d5b9514..7569ce4 100644 --- a/@GMS/addons/custom_server/Configs/blck_custom_config.sqf +++ b/@GMS/addons/custom_server/Configs/blck_custom_config.sqf @@ -1227,3 +1227,5 @@ diag_log format["[blckeagls] blck_CUPHeadgear = %1",if (isNil "blck_CUPHeadgear" diag_log "[blckeagls] end of Custom Configurations for RHS 5/2/20"; blck_customConfigsLoaded = 1; + + diff --git a/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf b/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf index d0c6c16..5ced698 100644 --- a/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf +++ b/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_Lists.sqf @@ -15,14 +15,14 @@ private ["_staticMissions"]; _staticMissions = [ // [mod (Epoch, Exile), map (Altis, Tanoa etc), mission center, eg [10445,2014,0], filename.sqf (name of static mission template for that mission)]; - ["Epoch","Altis","template.sqf"], - ["Epoch","Altis","staticMissionExample2_Epoch.sqf"], + //["Epoch","Altis","template.sqf"], + //["Epoch","Altis","staticMissionExample2_Epoch.sqf"], - ["Exile","Altis","template.sqf"], - ["Exile","Altis","staticMissionExample2_Exile.sqf"], + //["Exile","Altis","template.sqf"], + //["Exile","Altis","staticMissionExample2_Exile.sqf"], - ["newmission","newmap","somescript.sqf"] // Here just so you dont have to worry about all those commas + //["newmission","newmap","somescript.sqf"] // Here just so you dont have to worry about all those commas ]; diag_log "[blckeagls] GMS_StaticMissions_Lists.sqf "; diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_AddAircraft.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_AddAircraft.sqf deleted file mode 100644 index 2aed2f4..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_AddAircraft.sqf +++ /dev/null @@ -1,17 +0,0 @@ -/* - by Ghostrider [GRG] - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//diag_log format["_sm_addAircraft: _this = %5",_this]; -params["_aircraftPatrol"]; -//diag_log format["_sm_addAircraft: _aircraftPatrol = %1",_aircraftPatrol]; -blck_sm_Aircraft pushBack [_aircraftPatrol,grpNull,0]; -//diag_log format["_sm_addAircraft: updated blck_sm_Aircraft = %1",blck_sm_Aircraft]; -true diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_AddEmplaced.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_AddEmplaced.sqf deleted file mode 100644 index 01d7722..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_AddEmplaced.sqf +++ /dev/null @@ -1,16 +0,0 @@ -/* - by Ghostrider [GRG] - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -params["_emplacedWeapon"]; -blck_sm_Emplaced pushBack [_emplacedWeapon,grpNull,0]; -diag_log format["_sm_AddEmplaced::-> _emplacedWeapon = %1, blck_sm_Emplaced = %2",_emplacedWeapon,blck_sm_Emplaced]; -true \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_AddGroup.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_AddGroup.sqf deleted file mode 100644 index 49abe09..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_AddGroup.sqf +++ /dev/null @@ -1,16 +0,0 @@ -/* - by Ghostrider [GRG] - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -params["_group"]; -blck_sm_Groups pushBack [_group,grpNull,0]; -diag_log format["_sm_AddGroup:: blck_sm_Groups = %1",blck_sm_Groups]; -true \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_AddGroupToArray.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_AddGroupToArray.sqf deleted file mode 100644 index 4efaebc..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_AddGroupToArray.sqf +++ /dev/null @@ -1,22 +0,0 @@ -/* - by Ghostrider [GRG] - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -params["_array","_patrolInformation",["_timesToRespawn",-1]]; -waitUntil {blck_sm_monitoring isEqualTo 0}; -_array pushBack [ - _patrolInformation, - grpNull, - 0, // groupSpawned - 0, // times Spawned - 0, // Respawn At - _timesToRespawn // Max Times to Respawn -]; -_array diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_AddVehicle.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_AddVehicle.sqf deleted file mode 100644 index 47dd046..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_AddVehicle.sqf +++ /dev/null @@ -1,16 +0,0 @@ -/* - by Ghostrider [GRG] - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -params["_vehicle"]; -blck_sm_Vehicles pushBack [_vehicle,grpNull,0]; -//diag_log format["_fnc_sm_AddVehicle: _vehicle = %1",_vehicle]; -true \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_initializeMission.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_initializeMission.sqf deleted file mode 100644 index c0fe1b9..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_initializeMission.sqf +++ /dev/null @@ -1,88 +0,0 @@ -/* - by Ghostrider [GRG] - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -params["_mission"]; -// Spawn landscape -// params["_objects"]; -if (isNil "_markerColor") then {_markerColor = "ColorBlack"}; -if (isNil "_markerType") then {_markerType = ["mil_box",[]]}; -if (isNil "_missionLandscape") then {_missionLandscape = []}; -if (isNil "_garrisonedBuilding_ASLsystem") then { - //diag_log "_fnc_sm_initializeMission: _garrisonedBuilding_ASLsystem set to []"; - _garrisonedBuilding_ASLsystem = []; - }; -if (isNil "_garrisonedBuildings_BuildingPosnSystem") then { - //diag_log "_fnc_sm_initializeMission: _garrisonedBuildings_BuildingPosnSystem set to []"; - _garrisonedBuildings_BuildingPosnSystem = []; - }; -if (isNil "_airPatrols") then {_airPatrols = []}; -if (isNil "_aiGroupParameters") then {_aiGroupParameters = []}; -if (isNil "_missionEmplacedWeapons") then {_missionEmplacedWeapons = []}; -if (isNil "_vehiclePatrolParameters") then {_vehiclePatrolParameters = []}; -if (isNil "_missionLootVehicles") then {_missionLootVehicles = []}; - -_markerClass = format["static%1",floor(random(1000000))]; -_blck_localMissionMarker = [_markerClass,_missionCenter,"","",_markerColor,_markerType]; -if (blck_labelMapMarkers select 0) then -{ - _blck_localMissionMarker set [2, _markerMissionName]; -}; -if !(blck_preciseMapMarkers) then -{ - _blck_localMissionMarker set [1,[_missionCenter,75] call blck_fnc_randomPosition]; -}; -_blck_localMissionMarker set [3,blck_labelMapMarkers select 1]; // Use an arrow labeled with the mission name? -[_blck_localMissionMarker] call blck_fnc_spawnMarker; - -[_missionLandscape] call blck_fnc_sm_spawnObjects; - -{ - //diag_log format["processing _garrisonedBuilding_ASL %1 which = %2",_forEachIndex,_x]; - // ["Land_i_House_Big_02_V2_F",[23650.3,18331.9,3.19],[[0,1,0],[0,0,1]],[true,true],"Red", - _x params["_buildingClassName","_buildingPosnASL","_buildingVectorDirUp","_buildingDamSim","_aiDifficulty","_staticsASL","_unitsASL","_respawnTimer","_noRespawns"]; - private _building = [_buildingClassName,_buildingPosnASL,_buildingVectorDirUp,_buildingDamSim] call blck_fnc_sm_spawnObjectASLVectorDirUp; - [blck_sm_garrisonBuildings_ASL,[_building,_aiDifficulty,_staticsASL,_unitsASL,_respawnTimer,_noRespawns]] call blck_fnc_sm_AddGroupToArray; - //diag_log format["_fnc_sm_initializeMission: blck_sm_garrisonBuildings_ASL updated to: %1",blck_sm_garrisonBuildings_ASL]; -}forEach _garrisonedBuilding_ASLsystem; - -// blcl_sm_garrisonBuilding_relPos -{ - //diag_log format["processing _garrisonedBuilding_relPos %1 which = %2",_forEachIndex,_x]; - _x params["_buildingClassName","_buildingPosnASL","_buildingVectorDirUp","_buildingDamSim","_aiDifficulty","_p","_noStatics","_typesStatics","_noUnits","_respawnTimer","_noRespawns"]; - private _building = [_buildingClassName,_buildingPosnASL,_buildingVectorDirUp,_buildingDamSim] call blck_fnc_sm_spawnObjectASLVectorDirUp; - [blcl_sm_garrisonBuilding_relPos,[_building,_aiDifficulty,_noStatics,_typesStatics,_noUnits,_respawnTimer,_noRespawns]] call blck_fnc_sm_AddGroupToArray; - //diag_log format["_fnc_sm_initializeMission: blcl_sm_garrisonBuilding_relPos updated to: %1",blcl_sm_garrisonBuilding_relPos]; -}forEach _garrisonedBuildings_BuildingPosnSystem; - -{ - [blck_sm_Aircraft,_x] call blck_fnc_sm_AddGroupToArray; - -}forEach _airPatrols; -//uiSleep 1; - -{ - [blck_sm_Infantry,_x] call blck_fnc_sm_AddGroupToArray; -}forEach _aiGroupParameters; - -{ - [blck_sm_Emplaced,_x] call blck_fnc_sm_AddGroupToArray; -}forEach _missionEmplacedWeapons; - -{ - [blck_sm_Vehicles,_x] call blck_fnc_sm_AddGroupToArray; -}forEach _vehiclePatrolParameters; - -uiSleep 30; -// spawn loot chests -[_missionLootBoxes,_missionCenter] call blck_fnc_sm_spawnLootContainers; -[_missionLootVehicles,_missionCenter] call blck_fnc_sm_spawnLootContainers; -diag_log format["[blckeagls] Static Mission Spawner: Mission %1 spawned",_mission]; - diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorAircraft.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorAircraft.sqf deleted file mode 100644 index 325b8d2..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorAircraft.sqf +++ /dev/null @@ -1,93 +0,0 @@ -/* - by Ghostrider [GRG] - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ - -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//private["_mode","_sm_groups"]; -//_sm_groups = +blck_sm_Aircraft; -//diag_log format["_fnc_monitorAircraft: time %2 | blck_sm_Aircraft %1",blck_sm_Aircraft,diag_tickTime]; -for "_i" from 1 to (count blck_sm_Aircraft) do -{ - if (_i == (count blck_sm_Aircraft)) exitWith {}; - private _element = blck_sm_Aircraft deleteAt 0; - _element params["_groupParameters","_group","_groupSpawned","_timesSpawned","_respawnAt","_maxRespawns"]; - //diag_log format["_fnc_monitorAircraft: _x %1",_element]; - //diag_log format["_fnc_monitorAircraft: _groupParameters = %1",_groupParameters]; - //diag_log format["_fnc_monitorAircraft (9): _group %1 | _groupSpawned %2 | _timesSpawned %3 | _respawnAt %4",_group,_groupSpawned,_timesSpawned,_respawnAt]; - _groupParameters params["_pos","_difficulty","_units","_patrolRadius","_respawnTime"]; - _groupParameters params["_aircraftType","_pos","_difficulty","_patrolRadius","_respawnTime"]; - //diag_log format["_fnc_monitorAircraft: _aircraftType | %1 | _pos = %2 | _difficulty = %3 | _patrolRadius = %4 | _respawnTime = %5",_aircraftType,_pos,_difficulty,_patrolRadius,_respawnTime]; - - if (!(isNull _group) && {alive _x} count (units _group) == 0) then - { - deleteGroup _group; - _group = grpNull; - }; - if (isNull _group) then - { - _mode = -1; - if ((_timesSpawned == 0) && (_groupSpawned == 0)) then {_mode = 1}; // spawn-respawn - if (_timesSpawned > 0) then - { - if ((_groupSpawned == 1) && (_respawnTime == 0)) then {_mode = 0}; // remove patrol from further evaluation - if ((_timesSpawned > _maxRespawns) && (_maxRespawns != -1)) then {_mode = 0}; - if ((_groupSpawned == 1) && (_respawnTime > 0)) then {_mode = 2}; // set up for respawn at a later time - if ((_groupSpawned == 0) && (diag_tickTime > _respawnAt)) then {_mode = 1}; - }; - switch (_mode) do - { - case 0: {}; - case 1: { - - if ([_pos,staticPatrolTriggerRange] call blck_fnc_playerInRange) then - { - _return = [_pos,_difficulty,[_aircraftType]] call blck_fnc_spawnMissionHeli; - _group = group (driver (_return select 0)); - _element set[patrolGroup,_group]; - _element set[groupSpawned,1]; - _element set[timesSpawned,_timesSpawned + 1]; - _element set[respawnAt,0]; - }; - blck_sm_Aircraft pushBack _element; - }; - case 2: { - _element set[respawnAt,diag_tickTime + _respawnTime]; - _element set[groupSpawned,0]; - blck_sm_Aircraft pushBack _element; - //diag_log format["_fnc_monitorAircraft: update respawn time to %1",_respawnAt]; - }; - default {}; - }; - //diag_log format["_fnc_monitorAircraft(56) respawn conditions evaluated : _group = %1 | _groupSpawned = %2 | _timesSpawned = %3",_group,_groupSpawned,_timesSpawned]; - } else { - //diag_log format["_fnc_monitorAircraft: diag_tickTime = %1 | playerNearAt = %2",diag_tickTime,_group getVariable["playerNearAt",-1]]; - if ([_pos,staticPatrolTriggerRange] call blck_fnc_playerInRange) then - { - _group setVariable["playerNearAt",diag_tickTime]; - //diag_log format["_fnc_monitorAircraft: playerNearAt updated to %1",_group getVariable["playerNearAt",-1]]; - blck_sm_Aircraft pushBack _element; - } else { - if (diag_tickTime > (_group getVariable["playerNearAt",diag_tickTime]) + blck_sm_groupDespawnTime) then - { - //diag_log format["_fnc_monitorAircraft: despanwing patrol for _element %1",_element]; - //_groupParameters set [2, {alive _x} count (units _group)]; - private _veh = vehicle (leader _group); - {deleteVehicle _x} forEach (units _group); - deleteGroup _group; - [_veh] call blck_fnc_destroyVehicleAndCrew; - _element set[groupParameters,_groupParameters]; - _element set[patrolGroup ,grpNull]; - _element set[timesSpawned,(_timesSpawned - 1)]; - _element set[groupSpawned,0]; - }; - blck_sm_Aircraft pushBack _element; - }; - }; -}; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorEmplaced.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorEmplaced.sqf deleted file mode 100644 index a4cb16b..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorEmplaced.sqf +++ /dev/null @@ -1,92 +0,0 @@ -/* - by Ghostrider [GRG] - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -//diag_log format["_fnc_monitorEmplaced: time %2 | blck_sm_Emplaced %1",blck_sm_Emplaced,diag_tickTime]; -for "_i" from 0 to (count blck_sm_Emplaced) do -{ - if (_i >= (count blck_sm_Emplaced)) exitWith {}; - private _element = blck_sm_Emplaced deleteAt 0; - _element params["_groupParameters","_group","_groupSpawned","_timesSpawned","_respawnAt","_maxRespawns"]; - //diag_log format["_fnc_monitorEmplaced: _element %1",_element]; - //diag_log format["_fnc_monitorEmplaced: _groupParameters = %1",_groupParameters]; - //diag_log format["_fnc_monitorEmplaced (9): _group %1 | _groupSpawned %2 | _timesSpawned %3 | _respawnAt %4",_group,_groupSpawned,_timesSpawned,_respawnAt]; - _groupParameters params["_pos","_difficulty","_units","_patrolRadius","_respawnTime"]; - _groupParameters params["_vehicleType","_pos","_difficulty","_patrolRadius","_respawnTime"]; - //diag_log format["_fnc_monitorEmplaced: _vehicleType | %1 | _pos = %2 | _difficulty = %3 | _patrolRadius = %4 | _respawnTime = %5",_vehicleType,_pos,_difficulty,_patrolRadius,_respawnTime]; - - if (!(isNull _group) && {alive _x} count (units _group) == 0) then - { - deleteGroup _group; - _group = grpNull; - }; - if (isNull _group) then - { - _mode = -1; - if ((_timesSpawned == 0) && (_groupSpawned == 0)) then {_mode = 1}; // spawn-respawn - if (_timesSpawned > 0) then - { - if ((_groupSpawned == 1) && (_respawnTime == 0)) then {_mode = 0}; // remove patrol from further evaluation - if ((_timesSpawned > _maxRespawns) && (_maxRespawns != -1)) then {_mode = 0}; - if ((_groupSpawned == 1) && (_respawnTime > 0)) then {_mode = 2}; // set up for respawn at a later time - if ((_groupSpawned == 0) && (diag_tickTime > _respawnAt)) then {_mode = 1}; - }; - switch (_mode) do - { - case 0: {}; - case 1: { - - if ([_pos,staticPatrolTriggerRange] call blck_fnc_playerInRange) then - { - // params["_coords","_missionEmplacedWeapons","_useRelativePos","_noEmplacedWeapons","_aiDifficultyLevel",["_uniforms",[]], ["_headGear",[]],["_vests",[]],["_backpacks",[]],["_weaponList",[]],["_sideArms",[]]]; - private _return = [_pos,[_groupParameters],false,1,_difficulty] call blck_fnc_spawnEmplacedWeaponArray; - _group = group( (_return select 1) select 0); - _element set[patrolGroup,_group]; - _element set[groupSpawned,1]; - _element set[timesSpawned,_timesSpawned + 1]; - _element set[respawnAt,0]; - }; - blck_sm_Emplaced pushBack _element; - }; - case 2: { - _element set[respawnAt,diag_tickTime + _respawnTime]; - _element set[groupSpawned,0]; - blck_sm_Emplaced pushBack _element; - //diag_log format["_fnc_monitorEmplaced: update respawn time to %1",_respawnAt]; - }; - default {}; - }; - //diag_log format["_fnc_monitorEmplaced(56) respawn conditions evaluated : _group = %1 | _groupSpawned = %2 | _timesSpawned = %3",_group,_groupSpawned,_timesSpawned]; - } else { - //diag_log format["_fnc_monitorEmplaced: diag_tickTime = %1 | playerNearAt = %2",diag_tickTime,_group getVariable["playerNearAt",-1]]; - if ([_pos,staticPatrolTriggerRange] call blck_fnc_playerInRange) then - { - _group setVariable["playerNearAt",diag_tickTime]; - //diag_log format["_fnc_monitorEmplaced: playerNearAt updated to %1",_group getVariable["playerNearAt",-1]]; - blck_sm_Emplaced pushBack _element; - } else { - if (diag_tickTime >= (_group getVariable["playerNearAt",diag_tickTime]) + blck_sm_groupDespawnTime) then - { - //diag_log format["_fnc_monitorEmplaced: despanwing patrol for _element %1",_element]; - //_groupParameters set [2, {alive _x} count (units _group)]; - private _veh = vehicle (leader _group); - {deleteVehicle _x} forEach (units _group); - deleteGroup _group; - [_veh] call blck_fnc_destroyVehicleAndCrew; - _element set[groupParameters,_groupParameters]; - _element set[patrolGroup ,grpNull]; - _element set[timesSpawned,(_timesSpawned - 1)]; - _element set[groupSpawned,0]; - }; - blck_sm_Emplaced pushBack _element; - }; - }; -}; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorGarrisonsASL.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorGarrisonsASL.sqf deleted file mode 100644 index b48d478..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorGarrisonsASL.sqf +++ /dev/null @@ -1,97 +0,0 @@ -/* - by Ghostrider [GRG] - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -private["_mode","_sm_groups"]; -//diag_log format["_fnc_sm_monitorGarrisonASL: blck_fnc_spawnGarrisonInsideBuilding_ATL = %1",blck_sm_garrisonBuildings_ASL]; -if (blck_sm_garrisonBuildings_ASL isEqualTo []) exitWith {}; -for "_i" from 0 to (count blck_sm_garrisonBuildings_ASL) do - { - if (_i >= (count blck_sm_garrisonBuildings_ASL)) exitWith {}; - private _element = blck_sm_garrisonBuildings_ASL deleteAt 0; - _element params["_groupParameters","_group","_groupSpawned","_timesSpawned","_respawnAt"]; - // ["_building","_aiDifficultyLevel","_staticsATL","_unitsATL"]; - _groupParameters params['_building','_aiDifficulty','_staticsASL','_unitsASL','_respawnTime','_maxRespawns']; - //diag_log format["_fnc_sm_monitorGarrisonASL: _group = %1 | _timesSpawned = %2 | _respawnTime = %3 | _respawnAt = %4 | _groupSpawned = %5",_group,_timesSpawned,_respawnTime,_respawnAt,_groupSpawned]; - private _pos = position _building; - if (!(isNull _group) && {alive _x} count (units _group) == 0) then - { - deleteGroup _group; - _group = grpNull; - }; - if (isNull _group) then - { - _mode = -1; - if ((_timesSpawned == 0) && (_groupSpawned == 0)) then {_mode = 1}; // spawn-respawn - if (_timesSpawned > 0) then - { - if ((_groupSpawned == 1) && (_respawnTime == 0)) then {_mode = 0}; // remove patrol from further evaluation - if ((_timesSpawned > _maxRespawns) && (_maxRespawns != -1)) then {_mode = 0}; - if ((_groupSpawned == 1) && (_respawnTime > 0)) then {_mode = 2}; // set up for respawn at a later time - if ((_groupSpawned == 0) && (diag_tickTime > _respawnAt)) then {_mode = 1}; - }; - switch (_mode) do - { - case 0: {}; - case 1: { - - if ([_pos,staticPatrolTriggerRange] call blck_fnc_playerInRange) then - { - // ["_building","_aiDifficultyLevel","_staticsATL","_unitsATL"] - //diag_log format - private _group = [_building,_aiDifficulty,_staticsASL,_unitsASL] call blck_fnc_sm_spawnBuildingGarrison_ASL; - _timesSpawned = _timesSpawned + 1; - _groupSpawned = 1; - _respawnAt = 0; - _element set[patrolGroup,_group]; - _element set[groupSpawned,1]; - _element set[timesSpawned,_timesSpawned]; - _element set[respawnAt,_respawnAt]; - //blck_sm_garrisonBuildings_ASL set[blck_sm_garrisonBuildings_ASL find _x,_element]; - }; - blck_sm_garrisonBuildings_ASL pushBack _element; - }; - case 2: { - _groupSpawned = 0; - _respawnAt = diag_tickTime + _respawnTime; - _element set[respawnAt,_respawnAt]; - _element set[groupSpawned,_groupSpawned]; - //blck_sm_garrisonBuildings_ASL set[blck_sm_garrisonBuildings_ASL find _x,_element]; - blck_sm_garrisonBuildings_ASL pushBack _element; - }; - default {}; - }; - - } else { - - if ([_pos,staticPatrolTriggerRange] call blck_fnc_playerInRange) then - { - _group setVariable["playerNearAt",diag_tickTime]; - blck_sm_garrisonBuildings_ASL pushBack _element; - } else { - if (diag_tickTime > (_group getVariable["playerNearAt",diag_tickTime]) + blck_sm_groupDespawnTime) then - { - - //_groupParameters set [2, {alive _x} count (units _group)]; - private _veh = vehicle (leader _group); - {deleteVehicle _x} forEach (units _group); - deleteGroup _group; - [_veh] call blck_fnc_destroyVehicleAndCrew; - _element set[groupParameters,_groupParameters]; - _element set[patrolGroup ,grpNull]; - _element set[timesSpawned,(_timesSpawned - 1)]; - _element set[groupSpawned,0]; - //blck_sm_garrisonBuildings_ASL set[(blck_sm_garrisonBuildings_ASL find _x), _element]; - - }; - blck_sm_garrisonBuildings_ASL pushBack _element; - }; - }; -}; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorGarrisons_relPos.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorGarrisons_relPos.sqf deleted file mode 100644 index af99c94..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorGarrisons_relPos.sqf +++ /dev/null @@ -1,89 +0,0 @@ -/* - by Ghostrider [GRG] - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -private["_mode","_sm_groups","_pos","_element"]; -if (blck_fnc_sm_spawnBuildingGarrison_relPos isEqualTo []) exitWith {}; -_sm_groups = +blcl_sm_garrisonBuilding_relPos; - -{ - _x params["_groupParameters","_group","_groupSpawned","_timesSpawned","_respawnAt"]; - // [_building,_aiDifficulty,_noStatics,_typesStatics,_noUnits,_respawn] - _groupParameters params['_building','_aiDifficulty','_noStatics','_typesStatics','_noUnits','_respawnTime','_maxRespawns']; - _element = +_x;// - _pos = position _building; - if (!(isNull _group) && {alive _x} count (units _group) == 0) then - { - deleteGroup _group; - _group = grpNull; - }; - if (isNull _group) then - { - _mode = -1; - if ((_timesSpawned == 0) && (_groupSpawned == 0)) then {_mode = 1}; // spawn-respawn - if (_timesSpawned > 0) then - { - if ((_groupSpawned == 1) && (_respawnTime == 0)) then {_mode = 0}; // remove patrol from further evaluation - if ((_timesSpawned > _maxRespawns) && (_maxRespawns != -1)) then {_mode = 0}; - if ((_groupSpawned == 1) && (_respawnTime > 0)) then {_mode = 2}; // set up for respawn at a later time - if ((_groupSpawned == 0) && (diag_tickTime > _respawnAt)) then {_mode = 1}; - }; - switch (_mode) do - { - case 0: {blcl_sm_garrisonBuilding_relPos deleteAt (blcl_sm_garrisonBuilding_relPos find _x)}; - case 1: { - - if (true /*[_pos,staticPatrolTriggerRange] call blck_fnc_playerInRange*/) then - { - // ["_building","_skillLevel","_noStatics","_typesStatics","_noUnits"]; - private _group = [_building,_aiDifficulty,_noStatics,_typesStatics,_noUnits] call blck_fnc_sm_spawnBuildingGarrison_relPos; - _timesSpawned = _timesSpawned + 1; - _groupSpawned = 1; - _respawnAt = 0; - _element set[patrolGroup,_group]; - _element set[groupSpawned,1]; - _element set[timesSpawned,_timesSpawned]; - _element set[respawnAt,_respawnAt]; - blcl_sm_garrisonBuilding_relPos set[blcl_sm_garrisonBuilding_relPos find _x,_element]; - }; - }; - case 2: { - _groupSpawned = 0; - _respawnAt = diag_tickTime + _respawnTime; - _element set[respawnAt,_respawnAt]; - _element set[groupSpawned,_groupSpawned]; - blcl_sm_garrisonBuilding_relPos set[blcl_sm_garrisonBuilding_relPos find _x,_element]; - - }; - default {}; - }; - - } else { - - if ([_pos,staticPatrolTriggerRange] call blck_fnc_playerInRange) then - { - _group setVariable["playerNearAt",diag_tickTime]; - - } else { - if (diag_tickTime > (_group getVariable["playerNearAt",diag_tickTime]) + blck_sm_groupDespawnTime) then - { - - _groupParameters set [2, {alive _x} count (units _group)]; - private _veh = vehicle (leader _group); - [_veh] call blck_fnc_destroyVehicleAndCrew; - _element set[groupParameters,_groupParameters]; - _element set[patrolGroup ,grpNull]; - _element set[timesSpawned,(_timesSpawned - 1)]; - _element set[groupSpawned,0]; - blcl_sm_garrisonBuilding_relPos set[(blcl_sm_garrisonBuilding_relPos find _x), _element]; - }; - }; - }; -}forEach _sm_groups; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorInfantry.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorInfantry.sqf deleted file mode 100644 index db85898..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorInfantry.sqf +++ /dev/null @@ -1,111 +0,0 @@ -/* - by Ghostrider [GRG] - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//diag_log format["_fnc_monitorInfantry(12): time %2 | blck_sm_Infantry %1",blck_sm_Infantry,diag_tickTime]; -if (blck_sm_Infantry isEqualTo []) exitWith {}; -private["_element"]; -for "_i" from 0 to (count blck_sm_Infantry) do -{ - if (_i >= count(blck_sm_Infantry)) exitWith {}; - _element = blck_sm_Infantry deleteAt 0; - //diag_log format["(18) element = %1",_element]; - //diag_log format["_fnc_monitorInfantry(20): _element %1 | _i = %2",_element,_i]; - - if !(_element isEqualTo []) then - { - _element params["_groupParameters","_group","_groupSpawned","_timesSpawned","_respawnAt","_maxRespawns"]; - _groupParameters params["_pos","_difficulty","_units","_patrolRadius","_respawnTime","_maxRespawns"]; - //diag_log format["_fnc_monitorInfantry(21): _groupParameters = %1",_groupParameters]; - //diag_log format["_fnc_monitorInfantry (22): _group %1 | _groupSpawned %2 | _timesSpawned %3 | _respawnAt %4",_group,_groupSpawned,_timesSpawned,_respawnAt]; - //diag_log format["_fnc_monitorInfantry(28): _pos = %1 | _difficulty = 2 | _units = %3 | _patrolRadius = %4 | _respawnTime = %5",_pos,_difficulty,_units,_patrolRadius,_respawnTime]; - if (!(isNull _group) && {alive _x} count (units _group) == 0) then - { - deleteGroup _group; - _group = grpNull; - }; - if (isNull _group) then - { - _mode = -1; - if ((_timesSpawned == 0) && (_groupSpawned == 0)) then {_mode = 1}; // spawn-respawn - if (_timesSpawned > 0) then - { - if ((_groupSpawned == 1) && (_respawnTime == 0)) then {_mode = 0}; // remove patrol from further evaluation - if ((_timesSpawned > _maxRespawns) && (_maxRespawns != -1)) then {_mode = 0}; - if ((_groupSpawned == 1) && (_respawnTime > 0)) then {_mode = 2}; // set up for respawn at a later time - if ((_groupSpawned == 0) && (diag_tickTime > _respawnAt)) then {_mode = 1}; - }; - - switch (_mode) do - { - case 0: { - //diag_log format["_fnc_sm_monitorInfantry(46): no further respawns requested for %1",_element]; - }; - case 1: { // Spawn Group Now - //diag_log format["_fnc_sm_monitorInfantry(49): spawning infantry group with element = %1",_element]; - if ([_pos,staticPatrolTriggerRange] call blck_fnc_playerInRange) then - { - private _numAI = [_units] call blck_fnc_getNumberFromRange; - //params["_pos", "_center", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], ["_minDist",20], ["_maxDist",35],["_configureWaypoints",true], ["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_vests",blck_vests],["_backpacks",blck_backpacks],["_weaponList",[]],["_sideArms",blck_Pistols], ["_scuba",false] ]; - _group = [ - _pos,_pos,_numAI,_numAI,_difficulty,_patrolRadius-1,_patrolRadius,true, - [_difficulty] call blck_fnc_selectAIUniforms, - [_difficulty] call blck_fnc_selectAIHeadgear, - [_difficulty] call blck_fnc_selectAIVests, - [_difficulty] call blck_fnc_selectAIBackpacks, - [_difficulty] call blck_fnc_selectAILoadout, - [_difficulty] call blck_fnc_selectAISidearms - ] call blck_fnc_spawnGroup; - _element set[patrolGroup,_group]; - _element set[groupSpawned,1]; - _element set[timesSpawned,_timesSpawned + 1]; - _element set[respawnAt,0]; - //diag_log format["_fnc_monitorInfantry (67): _element %1",_element]; - //diag_log format["_fnc_monitorInfantry (69): blck_sm_Infantry %1",blck_sm_Infantry]; - }; - blck_sm_Infantry pushBack _element; - }; - case 2: { // Spawn Group at a Later Time. - blck_liveMissionAI pushBack[units _group,diag_tickTime]; // schedule units of group for deletion now. - _element set[respawnAt,diag_tickTime + _respawnTime]; - _element set[groupSpawned,0]; - blck_sm_Infantry pushBack _element; - //diag_log format["_fnc_monitorInfantry(77): update respawn time to %1",_respawnAt]; - }; - default {}; - }; - //diag_log format["_fnc_monitorInfantry(81) respawn conditions evaluated : _group = %1 | _groupSpawned = %2 | _timesSpawned = %3",_group,_groupSpawned,_timesSpawned]; - } else { - //diag_log format["_fnc_monitorInfantry(83): diag_tickTime = %1 | playerNearAt = %2",diag_tickTime,_group getVariable["playerNearAt",-1]]; - if ([_pos,staticPatrolTriggerRange] call blck_fnc_playerInRange) then - { - _group setVariable["playerNearAt",diag_tickTime]; - //diag_log format["_fnc_monitorInfantry(87): playerNearAt updated to %1",_group getVariable["playerNearAt",-1]]; - blck_sm_Infantry pushBack _element; - } else { - if (diag_tickTime > (_group getVariable["playerNearAt",diag_tickTime]) + blck_sm_groupDespawnTime) then - { - //diag_log format["_fnc_monitorInfantry(92): despanwing patrol for _element %1",_element]; - _groupParameters set [2, {alive _x} count (units _group)]; - {[_x] call blck_fnc_deleteAI} forEach (units _group); - deleteGroup _group; - _element set[groupParameters,_groupParameters]; - _element set[patrolGroup ,grpNull]; - _element set[timesSpawned,(_timesSpawned - 1)]; - _element set[groupSpawned,0]; - //diag_log format["_fnc_monitorInfantry (101): _element %1",_element]; - //diag_log format["_fnc_monitorInfantry (102): blck_sm_Infantry %1",blck_sm_Infantry]; - }; - blck_sm_Infantry pushBack _element; - }; - }; - }; - //blck_sm_Infantry pushBack _element; -}; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorScuba.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorScuba.sqf deleted file mode 100644 index 9ffcad5..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorScuba.sqf +++ /dev/null @@ -1,92 +0,0 @@ -/* - by Ghostrider [GRG] - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ - -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//diag_log format["_fnc_monitorScubaGroups: time %2 | blck_sm_scubaGroups %1",blck_sm_scubaGroups,diag_tickTime]; -if (blck_sm_scubaGroups isEqualTo []) exitWith {}; -for "_i" from 0 to (count blck_sm_scubaGroups) do -{ - if (_i >= (count blck_sm_scubaGroups)) exitWith {}; - private _element = blck_sm_scubaGroups deleteAt 0; - _element params["_groupParameters","_group","_groupSpawned","_timesSpawned","_respawnAt","_maxRespawns"]; - //diag_log format["_fnc_monitorScubaGroups: _element %1 | _i = %2",_element,_i]; - //diag_log format["_fnc_monitorScubaGroups: _groupParameters = %1",_groupParameters]; - //diag_log format["_fnc_monitorScubaGroups (9): _group %1 | _groupSpawned %2 | _timesSpawned %3 | _respawnAt %4",_group,_groupSpawned,_timesSpawned,_respawnAt]; - _groupParameters params["_pos","_difficulty","_units","_patrolRadius","_respawnTime","_maxRespawns"]; - //diag_log format["_fnc_monitorScubaGroups: _pos = %1 | _difficulty = 2 | _units = %3 | _patrolRadius = %4 | _respawnTime = %5",_pos,_difficulty,_units,_patrolRadius,_respawnTime]; - - if (!(isNull _group) && {alive _x} count (units _group) == 0) then - { - deleteGroup _group; - _group = grpNull; - }; - if (isNull _group) then - { - _mode = -1; - if ((_timesSpawned == 0) && (_groupSpawned == 0)) then {_mode = 1}; // spawn-respawn - if (_timesSpawned > 0) then - { - if ((_groupSpawned == 1) && (_respawnTime == 0)) then {_mode = 0}; // remove patrol from further evaluation - if ((_timesSpawned > _maxRespawns) && (_maxRespawns != -1)) then {_mode = 0}; - if ((_groupSpawned == 1) && (_respawnTime > 0)) then {_mode = 2}; // set up for respawn at a later time - if ((_groupSpawned == 0) && (diag_tickTime > _respawnAt)) then {_mode = 1}; - }; - switch (_mode) do - { - case 0: { - //diag_log format["_fnc_sm_monitorInfantry(46): no further respawns requested for %1",_element]; - }; - case 1: { - if ([_pos,staticPatrolTriggerRange] call blck_fnc_playerInRange) then - { - private _numAI = [_units] call blck_fnc_getNumberFromRange; - //params["_pos", "_center", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], ["_minDist",20], ["_maxDist",35],["_configureWaypoints",true], ["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_vests",blck_vests],["_backpacks",blck_backpacks],["_weaponList",[]],["_sideArms",blck_Pistols], ["_scuba",false] ]; - _group = [_pos,_difficulty,_units,_patrolRadius] call blck_fnc_spawnScubaGroup; - _element set[patrolGroup,_group]; - _element set[groupSpawned,1]; - _element set[timesSpawned,_timesSpawned + 1]; - _element set[respawnAt,0]; - }; - blck_sm_scubaGroups pushBack _element; - }; - case 2: { - blck_liveMissionAI pushBack[units _group,diag_tickTime]; // schedule units of group for deletion now. - _element set[respawnAt,diag_tickTime + _respawnTime]; - _element set[groupSpawned,0]; - blck_sm_scubaGroups pushBack _element; - //diag_log format["_fnc_monitorScubaGroups: update respawn time to %1",_respawnAt]; - }; - default {}; - }; - //diag_log format["_fnc_monitorScubaGroups(56) respawn conditions evaluated : _group = %1 | _groupSpawned = %2 | _timesSpawned = %3",_group,_groupSpawned,_timesSpawned]; - } else { - //diag_log format["_fnc_monitorScubaGroups: diag_tickTime = %1 | playerNearAt = %2",diag_tickTime,_group getVariable["playerNearAt",-1]]; - if ([_pos,staticPatrolTriggerRange] call blck_fnc_playerInRange) then - { - _group setVariable["playerNearAt",diag_tickTime]; - blck_sm_scubaGroups pushBack _element; - //diag_log format["_fnc_monitorScubaGroups: playerNearAt updated to %1",_group getVariable["playerNearAt",-1]]; - } else { - if (diag_tickTime > (_group getVariable["playerNearAt",diag_tickTime]) + blck_sm_groupDespawnTime) then - { - //diag_log format["_fnc_monitorScubaGroups: despanwing patrol for _element %1",_element]; - _groupParameters set [2, {alive _x} count (units _group)]; - {[_x] call blck_fnc_deleteAI} forEach (units _group); - deleteGroup _group; - _element set[groupParameters,_groupParameters]; - _element set[patrolGroup ,grpNull]; - _element set[timesSpawned,(_timesSpawned - 1)]; - _element set[groupSpawned,0]; - }; - blck_sm_scubaGroups pushBack _element; - }; - }; -}; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorShips.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorShips.sqf deleted file mode 100644 index 5f3a0b2..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorShips.sqf +++ /dev/null @@ -1,94 +0,0 @@ -/* - by Ghostrider [GRG] - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ - -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -//diag_log format["_fnc_monitorShips: time %2 | blck_sm_surfaceShips %1",blck_sm_surfaceShips,diag_tickTime]; -for "_i" from 0 to (count blck_sm_surfaceShips) do -{ - if (_i >= (count blck_sm_surfaceShips)) exitWith {}; - private _element = blck_sm_surfaceShips deleteAt 0; - _element params["_groupParameters","_group","_groupSpawned","_timesSpawned","_respawnAt","_maxRespawns"]; - //diag_log format["_fnc_monitorShips: _element %1",_element]; - //diag_log format["_fnc_monitorShips: _groupParameters = %1",_groupParameters]; - //diag_log format["_fnc_monitorShips (9): _group %1 | _groupSpawned %2 | _timesSpawned %3 | _respawnAt %4",_group,_groupSpawned,_timesSpawned,_respawnAt]; - _groupParameters params["_pos","_difficulty","_units","_patrolRadius","_respawnTime"]; - _groupParameters params["_vehicleType","_pos","_difficulty","_patrolRadius","_respawnTime","_maxRespawns"]; - //diag_log format["_fnc_monitorVehicles: _vehicleType | %1 | _pos = %2 | _difficulty = %3 | _patrolRadius = %4 | _respawnTime = %5",_vehicleType,_pos,_difficulty,_patrolRadius,_respawnTime]; - - if (!(isNull _group) && {alive _x} count (units _group) == 0) then - { - deleteGroup _group; - _group = grpNull; - }; - if (isNull _group) then - { - _mode = -1; - if ((_timesSpawned == 0) && (_groupSpawned == 0)) then {_mode = 1}; // spawn-respawn - if (_timesSpawned > 0) then - { - if ((_groupSpawned == 1) && (_respawnTime == 0)) then {_mode = 0}; // remove patrol from further evaluation - if ((_timesSpawned > _maxRespawns) && (_maxRespawns != -1)) then {_mode = 0}; - if ((_groupSpawned == 1) && (_respawnTime > 0)) then {_mode = 2}; // set up for respawn at a later time - if ((_groupSpawned == 0) && (diag_tickTime > _respawnAt)) then {_mode = 1}; - }; - switch (_mode) do - { - case 0: {}; - case 1: { - - if ([_pos,staticPatrolTriggerRange] call blck_fnc_playerInRange) then - { - _return = [_pos,1,_difficulty,[_groupParameters],false] call blck_fnc_spawnMissionVehiclePatrols; - //diag_log format["_fnc_monitorShips: _return = %1",_return]; - _group = group ((_return select 1) select 0); - _element set[patrolGroup,_group]; - _element set[groupSpawned,1]; - _element set[timesSpawned,_timesSpawned + 1]; - _element set[respawnAt,0]; - //blck_sm_surfaceShips pushBack _element; - }; - blck_sm_surfaceShips pushBack _element; - }; - case 2: { - _element set[respawnAt,diag_tickTime + _respawnTime]; - _element set[groupSpawned,0]; - blck_sm_surfaceShips pushBack _element; - //diag_log format["_fnc_monitorShips: update respawn time to %1",_respawnAt]; - }; - default {}; - }; - //diag_log format["_fnc_monitorShips(56) respawn conditions evaluated : _group = %1 | _groupSpawned = %2 | _timesSpawned = %3",_group,_groupSpawned,_timesSpawned]; - } else { - //diag_log format["_fnc_monitorShips: diag_tickTime = %1 | playerNearAt = %2",diag_tickTime,_group getVariable["playerNearAt",-1]]; - if ([_pos,staticPatrolTriggerRange] call blck_fnc_playerInRange) then - { - _group setVariable["playerNearAt",diag_tickTime]; - //diag_log format["_fnc_monitorShips: playerNearAt updated to %1",_group getVariable["playerNearAt",-1]]; - blck_sm_surfaceShips pushBack _element; - } else { - if (diag_tickTime > (_group getVariable["playerNearAt",diag_tickTime]) + blck_sm_groupDespawnTime) then - { - //diag_log format["_fnc_monitorShips: despanwing patrol for _element %1",_element]; - //_groupParameters set [2, {alive _x} count (units _group)]; - private _veh = vehicle (leader _group); - {deleteVehicle _x} forEach (units _group); - deleteGroup _group; - [_veh] call blck_fnc_destroyVehicleAndCrew; - _element set[groupParameters,_groupParameters]; - _element set[patrolGroup ,grpNull]; - _element set[timesSpawned,(_timesSpawned - 1)]; - _element set[groupSpawned,0]; - }; - blck_sm_surfaceShips pushBack _element; - }; - }; -}; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorStaticUnits.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorStaticUnits.sqf deleted file mode 100644 index ceb0974..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorStaticUnits.sqf +++ /dev/null @@ -1,236 +0,0 @@ -/* - by Ghostrider [GRG] - for ghostridergaming - 12/5/17 - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -private _triggerRange = 2000; -_fnc_updateGroupSpawnTimerFields = { - //diag_log format["_fnc_updateGroupSpawnTimerFields::-> _this = %1",_this]; - params["_array","_element",["_group",grpNull],["_spawnTime",0]]; - private["_index"]; - _index = _array find _element; - _element set[1,_group]; - _element set[2,_spawnTime]; - _array set[_index,_element]; -}; - -private["_group","_groupParameters","_numAI","_return"]; -_sm_groups = +blck_sm_Groups; -{ - - // [ [px, py, pz] /* position*/, "difficulty", 4 /*Number to Spawn*/, 150 /*radius of patrol*/, _respawnTime, _group, _spawnAt] - _x params["_groupParameters","_group","_spawnAt"]; - _groupParameters params["_pos","_difficulty","_units","_patrolRadius","_respawnTime","_maxRespawns"]; - //diag_log format["<_sm_monitorStaticUnits::Group spawning routine:: _units = %1 | _x = %2 |_forEachIndex = %3",_units,_x,_forEachIndex]; - private _groupSpawned = false; - if ([_pos,_triggerRange] call blck_fnc_playerInRange) then - { - if ((isNull _group) && (diag_tickTime > _spawnAt) && (_spawnAt != -1)) then // no group has been spawned, spawn one. - { - //diag_log format["[blckeagls static group spawner] evaluating _x = %1 ",_x]; - _numAI = [_units] call blck_fnc_getNumberFromRange; - //diag_log format["[blckeagls static group spawner] _units = %1 and _numAI = %2",_units,_numAI]; - // // params["_pos", "_center", _numai1, _numai2, _skillLevel, _minDist, _maxDist, _configureWaypoints, _uniforms, _headGear,_vests,_backpacks,_weaponList,_sideArms, _scuba ]; - _group = [_pos,_pos,_numAI,_numAI,_difficulty,_patrolRadius-2,_patrolRadius,true] call blck_fnc_spawnGroup; - //diag_log format["[blckeagls static group spawner] _group %1",_group]; - [blck_sm_Groups,_x,_group,-1] call _fnc_updateGroupSpawnTimerFields; - //diag_log format["_sm_monitorStaticUnits | spawn Group step :: blck_sm_Groups updated to %1",blck_sm_Groups]; - }; - if (!(_groupSpawned) && (isNull _group) && (_spawnAt == -1) && (_respawnTime > 0)) then // a group was spawned and all units are dead and we should rspawn them after a certain interval - { - [blck_sm_Groups,_x,_group,(diag_tickTime + _respawnTime)] call _fnc_updateGroupSpawnTimerFields; - //diag_log format["_sm_monitorStaticUnits | set Group respawn time step :: blck_sm_Groups updated to %1",blck_sm_Groups]; - }; - if (!(_groupSpawned) && (isNull _group) && (_spawnAt == -1) && (_respawnTime == 0) ) then // a group was spawned and all units are dead but we should not do a respawn - { - blck_sm_Groups deleteAt (blck_sm_Groups find _x); - }; - }; -}forEach _sm_groups; - -_sm_scubaGroups = +blck_sm_scubaGroups; -{ - - // [ [px, py, pz] /* position*/, "difficulty", 4 /*Number to Spawn*/, 150 /*radius of patrol*/, _respawnTime, _group, _spawnAt] - _x params["_groupParameters","_group","_spawnAt"]; - _groupParameters params["_pos","_difficulty","_units","_patrolRadius","_respawnTime"]; - //diag_log format["<_sm_monitorScubaUnits:: _group = %1 | _x = %2 |_forEachIndex = %3",_group,_x,_forEachIndex]; - private _groupSpawned = false; - if ([_pos,_triggerRange] call blck_fnc_playerInRange) then - { - if ((isNull _group) && (diag_tickTime > _spawnAt) && (_spawnAt != -1)) then // no group has been spawned, spawn one. - { - //diag_log format["[blckeagls static scubaGroup spawner] evaluating _x = %1 ",_x]; - _numAI = [_units] call blck_fnc_getNumberFromRange; - //diag_log format["[blckeagls static scubaGroup spawning routine] _units = %1 and _numAI = %2",_units,_numAI]; - //params["_pos", "_numUnits", ["_skillLevel","red"], "_center", ["_minDist",20], ["_maxDist",35], ["_uniforms",blck_UMS_uniforms], ["_headGear",blck_UMS_headgear],["_configureWaypoints",true],["_weapons",blck_UMS_weapons],["_vests",blck_UMS_vests]]; - _group = [_pos,_difficulty,_units,_patrolRadius] call blck_fnc_spawnScubaGroup; - //diag_log format["[blckeagls static scubaGroup spawner] _group %1",_group]; - [blck_sm_scubaGroups,_x,_group,-1] call _fnc_updateGroupSpawnTimerFields; - //diag_log format["_sm_monitorStaticUnits | spawn Group step :: blck_sm_Groups updated to %1",blck_sm_Groups]; - }; - if (!(_groupSpawned) && (isNull _group) && (_spawnAt == -1) && (_respawnTime > 0)) then // a group was spawned and all units are dead and we should rspawn them after a certain interval - { - [blck_sm_scubaGroups,_x,_group,(diag_tickTime + _respawnTime)] call _fnc_updateGroupSpawnTimerFields; - //diag_log format["_sm_monitorStaticUnits | set scubaGroup respawn time step :: blck_sm_Groups updated to %1",blck_sm_scubaGroups]; - }; - if (!(_groupSpawned) && (isNull _group) && (_spawnAt == -1) && (_respawnTime == 0) ) then // a group was spawned and all units are dead but we should not do a respawn - { - blck_sm_scubaGroups deleteAt (blck_sm_scubaGroups find _x); - }; - }; -}forEach _sm_scubaGroups; - -_sm_Emplaced = +blck_sm_Emplaced; -{ - // ["B_G_Mortar_01_F",[22944.3,16820.5,3.14243],"green",0,0,_group,_spawnAt] - //diag_log format["_sm_monitorEmplacedUnits::-> _x = %1",_x]; - _x params["_groupParameters","_group","_spawnAt"]; - _groupParameters params["_weapType","_pos","_difficulty","_patrolRadius","_respawnTime"]; - if ([_pos,_triggerRange] call blck_fnc_playerInRange) then - { - if ( (_group isEqualTo grpNull) && (diag_tickTime > _spawnAt) && (_spawnAt != -1) ) then // no group has been spawned, spawn one. - { - //diag_log format["[blckeagls static Emplaced spawner] _weapType = %1 and _difficulty = %2",_weapType,_difficulty]; - // params["_coords","_missionEmplacedWeapons","_useRelativePos","_noEmplacedWeapons","_aiDifficultyLevel",["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_vests",blck_vests],["_backpacks",blck_backpacks],["_weaponList",[]],["_sideArms",blck_Pistols]]; - _group = [_pos,[_groupParameters],false,1,_difficulty] call blck_fnc_spawnEmplacedWeaponArray; - [blck_sm_Emplaced,_x,_group,-1] call _fnc_updateGroupSpawnTimerFields; - //diag_log format["_sm_monitorStaticUnits | spawn emplaced step :: blck_sm_Emplaced updated to %1",blck_sm_Emplaced]; - }; - }; - if ( (_group isEqualTo grpNull) && (_spawnAt == -1) && (_respawnTime > 0) ) then // a group was spawned and all units are dead - { - [blck_sm_Emplaced,_x,_group,(diag_tickTime + _respawnTime)] call _fnc_updateGroupSpawnTimerFields; - //diag_log format["_sm_monitorStaticUnits | set Group respawn time step :: blck_sm_Emplaced updated to %1",blck_sm_Emplaced]; - }; - if ( (_group isEqualTo grpNull) && (_spawnAt == -1) && (_respawnTime == 0)) then // a group was spawned and all units are dead - { - blck_sm_Emplaced deleteAt (blck_sm_Emplaced find _x); - }; - -}forEach _sm_Emplaced; - -_sm_Vehicles = +blck_sm_Vehicles; -{ - // ["B_G_Offroad_01_armed_F",[22819.4,16929.5,3.17413],"red",600,0,_group,_spawnAt], - //diag_log format["_sm_monitorVehicles::-> _x = %1",_x]; - _x params["_groupParameters","_group","_spawnAt"]; - _groupParameters params["_vehicleType","_pos","_difficulty","_patrolRadius","_respawnTime"]; - if ([_pos,_triggerRange] call blck_fnc_playerInRange) then - { - if ( (_group isEqualTo grpNull) && (diag_tickTime > _spawnAt) && (_spawnAt != -1) ) then // no group has been spawned, spawn one. - { - //params["_coords","_noVehiclePatrols","_aiDifficultyLevel","_missionPatrolVehicles",["_useRelativePos",true],["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_vests",blck_vests],["_backpacks",blck_backpacks],["_weaponList",[]],["_sideArms",blck_Pistols], ["_isScubaGroup",false]]; - _return = [_pos,1,_difficulty,[_groupParameters],false] call blck_fnc_spawnMissionVehiclePatrols; - // _return = [_vehicles, _missionAI, _abort]; - _group = group (_return select 1 select 0); - [blck_sm_Vehicles,_x,_group,-1] call _fnc_updateGroupSpawnTimerFields; - //diag_log format["_sm_monitorStaticUnits | spawn emplaced step :: blck_sm_Vehicles updated to %1",blck_sm_Vehicles]; - }; - }; - if ( (_group isEqualTo grpNull) && (_spawnAt == -1) && (_respawnTime > 0) ) then // a group was spawned and all units are dead - { - [blck_sm_Vehicles,_x,_group,(diag_tickTime + _respawnTime)] call _fnc_updateGroupSpawnTimerFields; - //diag_log format["_sm_monitorStaticUnits | set Group respawn time step :: blck_sm_Vehicles updated to %1",blck_sm_Vehicles]; - }; - if ( (_group isEqualTo grpNull) && (_spawnAt == -1) && (_respawnTime == 0) ) then // a group was spawned and all units are dead - { - blck_sm_Vehicles deleteAt (blck_sm_Vehicles find _x); - }; -}forEach _sm_Vehicles; - -_sm_surfaceVehicles = +blck_sm_surfaceShips; -{ - // ["B_G_Offroad_01_armed_F",[22819.4,16929.5,3.17413],"red",600,0,_group,_spawnAt], - _x params["_groupParameters","_group","_spawnAt"]; - _groupParameters params["_weapType","_pos","_difficulty","_patrolRadius","_respawnTime"]; - if ([_pos,_triggerRange] call blck_fnc_playerInRange) then - { - if ( (_group isEqualTo grpNull) && (diag_tickTime > _spawnAt) && (_spawnAt != -1) ) then // no group has been spawned, spawn one. - { - //diag_log format["[blckeagls static vehiclePatrol spawner] _weapType = %1 and _difficulty = %2",_weapType,_difficulty]; - [_pos,1,_difficulty,[_groupParameters],false] call blck_fnc_spawnMissionVehiclePatrols; - _return params ["_vehicles", "_missionAI", "_abort"]; - _group = group (_missionAI select 0); - [blck_sm_surfaceShips,_x,_group,-1] call _fnc_updateGroupSpawnTimerFields; - //diag_log format["_sm_monitorStaticUnits | spawn emplaced step :: blck_sm_Vehicles updated to %1",blck_sm_Vehicles]; - }; - }; - if ( (_group isEqualTo grpNull) && (_spawnAt == -1) && (_respawnTime > 0) ) then // a group was spawned and all units are dead - { - [blck_sm_surfaceShips,_x,_group,(diag_tickTime + _respawnTime)] call _fnc_updateGroupSpawnTimerFields; - //diag_log format["_sm_monitorStaticUnits | set Group respawn time step :: blck_sm_Vehicles updated to %1",blck_sm_Vehicles]; - }; - if ( (_group isEqualTo grpNull) && (_spawnAt == -1) && (_respawnTime == 0) ) then // a group was spawned and all units are dead - { - blck_sm_surfaceShips deleteAt (blck_sm_surfaceShips find _x); - }; -}forEach _sm_surfaceVehicles; - -_sm_SDVVehicles = +blck_sm_submarines; -{ - // ["B_G_Offroad_01_armed_F",[22819.4,16929.5,3.17413],"red",600,0,_group,_spawnAt], - _x params["_groupParameters","_group","_spawnAt"]; - _groupParameters params["_weapType","_pos","_difficulty","_patrolRadius","_respawnTime"]; - if ([_pos,_triggerRange] call blck_fnc_playerInRange) then - { - if ( (_group isEqualTo grpNull) && (diag_tickTime > _spawnAt) && (_spawnAt != -1) ) then // no group has been spawned, spawn one. - { - //diag_log format["[blckeagls static sub patrol spawner] _weapType = %1 and _difficulty = %2",_weapType,_difficulty]; - //params["_coords","_noVehiclePatrols","_aiDifficultyLevel","_missionPatrolVehicles",["_useRelativePos",true],["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_vests",blck_vests],["_backpacks",blck_backpacks],["_weaponList",[]],["_sideArms",blck_Pistols], ["_isScubaGroup",false]]; - _return = [_pos,1,_difficulty,[_groupParameters],false,blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,blck_backpacks,blck_UMS_weapons,blck_Pistols,true] call blck_fnc_spawnMissionVehiclePatrols; - _return params ["_vehicles", "_missionAI", "_abort"]; - _group = group (_missionAI select 0); - [blck_sm_submarines,_x,_group,-1] call _fnc_updateGroupSpawnTimerFields; - //diag_log format["_sm_monitorStaticUnits | spawn emplaced step :: blck_sm_Vehicles updated to %1",blck_sm_Vehicles]; - }; - }; - if ( (_group isEqualTo grpNull) && (_spawnAt == -1) && (_respawnTime > 0) ) then // a group was spawned and all units are dead - { - [blck_sm_submarines,_x,_group,(diag_tickTime + _respawnTime)] call _fnc_updateGroupSpawnTimerFields; - //diag_log format["_sm_monitorStaticUnits | set Group respawn time step :: blck_sm_Vehicles updated to %1",blck_sm_Vehicles]; - }; - if ( (_group isEqualTo grpNull) && (_spawnAt == -1) && (_respawnTime == 0) ) then // a group was spawned and all units are dead - { - blck_sm_submarines deleteAt (blck_sm_submarines find _x); - }; -}forEach _sm_SDVVehicles; - -_sm_Aircraft = +blck_sm_Aircraft; -{ - // ["Exile_Chopper_Huey_Armed_Green",[22923.4,16953,3.19],"red",1000,0], - _x params["_groupParameters","_group","_spawnAt"]; - _groupParameters params["_aircraftType","_pos","_difficulty","_patrolRadius","_respawnTime"]; - if ([_pos,_triggerRange] call blck_fnc_playerInRange) then - { - if ( (isNull _group) && (diag_tickTime > _spawnAt) && (_spawnAt != -1)) then // no group has been spawned, spawn one. - { - _weapon = [toLower _difficulty] call blck_fnc_selectAILoadout; - //params["_coords","_skillAI","_helis",["_uniforms", blck_SkinList],["_headGear",blck_headgear],["_vests",blck_vests],["_backpacks",blck_backpacks],["_Launcher","none"],["_weaponList",[]],["_sideArms",[]]] - //diag_log format["[blckeagls static aircraftePatrol spawner] _weapon = %1 and _difficulty = %2",_weapon,_difficulty]; - _return = [_pos,_difficulty,[_aircraftType]] call blck_fnc_spawnMissionHeli; // Allow the spawner to fit the default AI Loadouts for blckeagls; revisit at a later time when custom uniforms are set up for these AI. - //diag_log format["[blckeagls] static aircraftePatrol spawner -> _return = %1",_return]; - _return params ["_patrolHeli","_ai","_abort"]; - _group = group (_ai select 0); - [blck_sm_Aircraft,_x,_group,-1] call _fnc_updateGroupSpawnTimerFields; - //diag_log format["_sm_monitorStaticUnits | spawn emplaced step :: blck_sm_Aircraft updated to %1",blck_sm_Aircraft]; - }; - }; - if ( (isNull _group) && (_spawnAt == -1) && (_respawnTime > 0) ) then // a group was spawned and all units are dead - { - [blck_sm_Aircraft,_x,_group,(diag_tickTime + _respawnTime)] call _fnc_updateGroupSpawnTimerFields; - //diag_log format["_sm_monitorStaticUnits | set Group respawn time step :: blck_sm_Aircraft updated to %1",blck_sm_Aircraft]; - }; - if ( (_group isEqualTo grpNull) && (_spawnAt == -1) && (_respawnTime == 0) ) then // a group was spawned and all units are dead - { - blck_sm_Aircraft deleteAt (blck_sm_Aircraft find _x); - }; -}forEach _sm_Aircraft; diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorSubs.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorSubs.sqf deleted file mode 100644 index fc2790d..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorSubs.sqf +++ /dev/null @@ -1,94 +0,0 @@ -/* - by Ghostrider [GRG] - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ - -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -//diag_log format["_fnc_monitorSubs: time %2 | blck_sm_submarines %1",blck_sm_submarines,diag_tickTime]; -for "_i" from 0 to (count blck_sm_submarines) do -{ - if (_i >= (count blck_sm_submarines)) exitWith {}; - private _element = blck_sm_submarines deleteAt 0; - _element params["_groupParameters","_group","_groupSpawned","_timesSpawned","_respawnAt","_maxRespawns"]; - //diag_log format["_fnc_monitorSubs: _element %1",_element]; - //diag_log format["_fnc_monitorSubs: _groupParameters = %1",_groupParameters]; - //diag_log format["_fnc_monitorSubs (9): _group %1 | _groupSpawned %2 | _timesSpawned %3 | _respawnAt %4",_group,_groupSpawned,_timesSpawned,_respawnAt]; - //_groupParameters params["_pos","_difficulty","_units","_patrolRadius","_respawnTime"]; - _groupParameters params["_vehicleType","_pos","_difficulty","_patrolRadius","_respawnTime","_maxRespawns"]; - //diag_log format["_fnc_monitorVehicles: _vehicleType | %1 | _pos = %2 | _difficulty = %3 | _patrolRadius = %4 | _respawnTime = %5",_vehicleType,_pos,_difficulty,_patrolRadius,_respawnTime]; - - if (!(isNull _group) && {alive _x} count (units _group) == 0) then - { - deleteGroup _group; - _group = grpNull; - }; - if (isNull _group) then - { - _mode = -1; - if ((_timesSpawned == 0) && (_groupSpawned == 0)) then {_mode = 1}; // spawn-respawn - if (_timesSpawned > 0) then - { - if ((_groupSpawned == 1) && (_respawnTime == 0)) then {_mode = 0}; // remove patrol from further evaluation - if ((_timesSpawned > _maxRespawns) && (_maxRespawns != -1)) then {_mode = 0}; - if ((_groupSpawned == 1) && (_respawnTime > 0)) then {_mode = 2}; // set up for respawn at a later time - if ((_groupSpawned == 0) && (diag_tickTime > _respawnAt)) then {_mode = 1}; - }; - switch (_mode) do - { - case 0: {}; - case 1: { - - if ([_pos,staticPatrolTriggerRange] call blck_fnc_playerInRange) then - { - _return = [_pos,1,_difficulty,[_groupParameters],false,blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,blck_backpacks,blck_UMS_weapons,blck_Pistols,true] call blck_fnc_spawnMissionVehiclePatrols; - //diag_log format["_fnc_monitorSubs: _return = %1",_return]; - _group = group ((_return select 1) select 0); - _element set[patrolGroup,_group]; - _element set[groupSpawned,1]; - _element set[timesSpawned,_timesSpawned + 1]; - _element set[respawnAt,0]; - //blck_sm_submarines pushBack _element; - }; - blck_sm_submarines pushBack _element; - }; - case 2: { - _element set[respawnAt,diag_tickTime + _respawnTime]; - _element set[groupSpawned,0]; - bblck_sm_submarines pushBack _element; - //diag_log format["_fnc_monitorSubs: update respawn time to %1",_respawnAt]; - }; - default {}; - }; - //diag_log format["_fnc_monitorSubs(56) respawn conditions evaluated : _group = %1 | _groupSpawned = %2 | _timesSpawned = %3",_group,_groupSpawned,_timesSpawned]; - } else { - //diag_log format["_fnc_monitorSubs: diag_tickTime = %1 | playerNearAt = %2",diag_tickTime,_group getVariable["playerNearAt",-1]]; - if ([_pos,staticPatrolTriggerRange] call blck_fnc_playerInRange) then - { - _group setVariable["playerNearAt",diag_tickTime]; - //diag_log format["_fnc_monitorSubs: playerNearAt updated to %1",_group getVariable["playerNearAt",-1]]; - blck_sm_submarines pushBack _element; - } else { - if (diag_tickTime > (_group getVariable["playerNearAt",diag_tickTime]) + blck_sm_groupDespawnTime) then - { - //diag_log format["_fnc_monitorSubs: despanwing patrol for _element %1",_element]; - //_groupParameters set [2, {alive _x} count (units _group)]; - private _veh = vehicle (leader _group); - {deleteVehicle _x} forEach (units _group); - deleteGroup _group; - [_veh] call blck_fnc_destroyVehicleAndCrew; - _element set[groupParameters,_groupParameters]; - _element set[patrolGroup ,grpNull]; - _element set[timesSpawned,(_timesSpawned - 1)]; - _element set[groupSpawned,0]; - }; - blck_sm_submarines pushBack _element; - }; - }; -}; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorVehicles.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorVehicles.sqf deleted file mode 100644 index 50b5f48..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_monitorVehicles.sqf +++ /dev/null @@ -1,96 +0,0 @@ -/* - by Ghostrider [GRG] - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ - -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//diag_log format["_fnc_monitorVehicles: time %2 | blck_sm_Vehicles %1",blck_sm_Vehicles,diag_tickTime]; -for "_i" from 0 to (count blck_sm_Vehicles) do -{ - if (_i >= (count blck_sm_Vehicles)) exitWith {}; - private _element = blck_sm_Vehicles deleteAt 0; - //diag_log format["_fnc_monitorVehicles(18): _element %1",_element]; - _element params["_groupParameters","_group","_groupSpawned","_timesSpawned","_respawnAt","_maxRespawns"]; - //diag_log format["_fnc_monitorVehicles: _groupParameters = %1",_groupParameters]; - //diag_log format["_fnc_monitorVehicles (21): _group %1 | _groupSpawned %2 | _timesSpawned %3 | _respawnAt %4",_group,_groupSpawned,_timesSpawned,_respawnAt]; - _groupParameters params["_vehicleType","_pos","_difficulty","_patrolRadius","_respawnTime","_maxRespawns"]; - //diag_log format["_fnc_monitorVehicles(23): _vehicleType | %1 | _pos = %2 | _difficulty = %3 | _patrolRadius = %4 | _respawnTime = %5",_vehicleType,_pos,_difficulty,_patrolRadius,_respawnTime]; - - if (!(isNull _group) && {alive _x} count (units _group) == 0) then - { - deleteGroup _group; - _group = grpNull; - }; - if (isNull _group) then - { - _mode = -1; - if ((_timesSpawned == 0) && (_groupSpawned == 0)) then {_mode = 1}; // spawn-respawn - if (_timesSpawned > 0) then - { - if ((_groupSpawned == 1) && (_respawnTime == 0)) then {_mode = 0}; // remove patrol from further evaluation - if ((_timesSpawned > _maxRespawns) && (_maxRespawns != -1)) then {_mode = 0}; - if ((_groupSpawned == 1) && (_respawnTime > 0)) then {_mode = 2}; // set up for respawn at a later time - if ((_groupSpawned == 0) && (diag_tickTime > _respawnAt)) then {_mode = 1}; - }; - switch (_mode) do - { - case 0: {}; - case 1: { - - if ([_pos,staticPatrolTriggerRange] call blck_fnc_playerInRange) then - { - // params["_coords","_noVehiclePatrols","_aiDifficultyLevel","_missionPatrolVehicles",["_useRelativePos",true],["_uniforms",[]], ["_headGear",[]],["_vests",[]],["_backpacks",[]],["_weaponList",[]],["_sideArms",[]], ["_isScubaGroup",false]]; - _return = [_pos,1,_difficulty,[_groupParameters],false] call blck_fnc_spawnMissionVehiclePatrols; - //diag_log format["_fnc_monitorVehicles(50): _return = %1",_return]; - _group = group ((_return select 1) select 0); - // _element [[""Exile_Car_Offroad_Armed_Guerilla02"",[22809.5,16699.2,8.78706],""green"",600,90],O Alpha 1-1,1,1,0,-1]" - // _groupParameters = [""Exile_Car_Offroad_Armed_Guerilla02"",[22809.5,16699.2,8.78706],""green"",600,90]" - _element set[patrolGroup,_group]; - _element set[groupSpawned,1]; - _element set[timesSpawned,_timesSpawned + 1]; - _element set[respawnAt,0]; - }; - blck_sm_Vehicles pushBack _element; - }; - case 2: { - _element set[respawnAt,diag_tickTime + _respawnTime]; - _element set[groupSpawned,0]; - blck_sm_Vehicles pushBack _element; - //diag_log format["_fnc_monitorVehicles(63): update respawn time to %1",_respawnAt]; - }; - default {}; - }; - //diag_log format["_fnc_monitorVehicles(67) respawn conditions evaluated : _group = %1 | _groupSpawned = %2 | _timesSpawned = %3",_group,_groupSpawned,_timesSpawned]; - } else { - //diag_log format["_fnc_monitorVehicles(69): diag_tickTime = %1 | playerNearAt = %2 | _playerInRange = %3",diag_tickTime,_group getVariable["playerNearAt",-1],[_pos,staticPatrolTriggerRange] call blck_fnc_playerInRange]; - if ([_pos,staticPatrolTriggerRange] call blck_fnc_playerInRange) then - { - _group setVariable["playerNearAt",diag_tickTime]; - //diag_log format["_fnc_monitorVehicles(73): playerNearAt updated to %1",_group getVariable["playerNearAt",-1]]; - blck_sm_Vehicles pushBack _element; - } else { - if (diag_tickTime > (_group getVariable["playerNearAt",diag_tickTime]) + blck_sm_groupDespawnTime) then - { - //diag_log format["_fnc_monitorVehicles(78): despanwing patrol for _element %1",_element]; - // _element [[""Exile_Car_Offroad_Armed_Guerilla02"",[22809.5,16699.2,8.78706],""green"",600,90],O Alpha 1-1,1,1,0,-1]" - // _groupParameters = [""Exile_Car_Offroad_Armed_Guerilla02"",[22809.5,16699.2,8.78706],""green"",600,90]" - //_groupParameters set [2, {alive _x} count (units _group)]; - private _veh = vehicle (leader _group); - {deleteVehicle _x} forEach (units _group); - deleteGroup _group; - [_veh] call blck_fnc_destroyVehicleAndCrew; - _element set[groupParameters,_groupParameters]; - _element set[patrolGroup ,grpNull]; - _element set[timesSpawned,(_timesSpawned - 1)]; - _element set[groupSpawned,0]; - }; - blck_sm_Vehicles pushBack _element; - }; - }; -}; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnAirPatrol.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnAirPatrol.sqf deleted file mode 100644 index 02dc685..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnAirPatrol.sqf +++ /dev/null @@ -1,31 +0,0 @@ -/* - by Ghostrider [GRG] - for ghostridergaming - 12/5/17 - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -diag_log format["_fnc_sm_spawnAirPatrols: _this = %1",_this]; -params["_airPatrols"]; -private["_aircraft","_pos","_difficulty","_uniforms","_headGear"]; -_aircraft = _x select 0; -_pos = _x select 1; -_difficulty = _x select 2; -_uniforms = blck_SkinList; -_headGear = blck_headgearList; -switch (_difficulty) do -{ - case "blue": {_weapons = blck_WeaponList_Blue;}; - case "red": {_weapons = blck_WeaponList_Red}; - case "green": {_weapons = blck_WeaponList_Green}; - case "orange": {_weapons = blck_WeaponList_Orange}; -}; -_return = [_pos,_difficulty,_weapons,_uniforms,_headGear,_aircraft] call blck_fnc_spawnMissionHeli; -_group = group (_return select 1 select 0); -_group - diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnAirPatrols.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnAirPatrols.sqf deleted file mode 100644 index 9aaf64e..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnAirPatrols.sqf +++ /dev/null @@ -1,50 +0,0 @@ -/* - by Ghostrider [GRG] - for ghostridergaming - 12/5/17 - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -/* -_coords = _this select 0; -_skillAI = _this select 1; -_weapons = _this select 2; -_uniforms = _this select 3; -_headGear = _this select 4; -_helis = _this select 5; -*/ - -params["_airPatrols","_noAirPatrols","_heliTypes","_center","_difficulty","_uniforms","_headGear","_weapons"]; -diag_log format["_sm_spawnAirPatrols:: _this = %1",_this]; -diag_log format["_sm_spawnAirPatrols:: _airPatrols = %1",_airPatrols]; -if (_airPatrols isEqualTo []) then -{ - for "_i" from 1 to _noAirPatrols do - { - /* - _coords = _this select 0; - _skillAI = _this select 1; - _weapons = _this select 2; - _uniforms = _this select 3; - _headGear = _this select 4; - _helis = _this select 5; - */ - [_center,_difficulty,_weapons,_uniforms,_headGear,_heliTypes,0] call blck_fnc_spawnMissionHeli; - }; -} else { - { - /* - /*[aircraft classname, position, difficulty(blue, red etc)]*/ - _aircraft = _x select 0; - _pos = _x select 1; - _difficulty = _x select 2; - [_pos,_difficulty,_weapons,_uniforms,_headGear,_aircraft] call blck_fnc_spawnMissionHeli; - }forEach _airPatrols; -}; - diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnBuildingGarrisonASL.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnBuildingGarrisonASL.sqf deleted file mode 100644 index 6cb3fd4..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnBuildingGarrisonASL.sqf +++ /dev/null @@ -1,8 +0,0 @@ - - -params["_building","_aiDifficultyLevel","_statics","_units"]; -diag_log format["_fnc_sm_spawnBuildingGarrisonASL: handling _building = %1 | at location = %2",_building,position _building]; -private _group = [] call blck_fnc_create_AI_Group; -//params["_building","_group","_statics","_men","_aiDifficultyLevel","_uniforms","_headGear","_vests","_backpacks",["_launcher","none"],"_weaponList","_sideArms"]; -[_building,_group,_statics,_units,_aiDifficultyLevel] call blck_fnc_spawnGarrisonInsideBuilding_ATL; -_group diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnBuildingGarrison_relPos.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnBuildingGarrison_relPos.sqf deleted file mode 100644 index a49e28f..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnBuildingGarrison_relPos.sqf +++ /dev/null @@ -1,8 +0,0 @@ - - -params["_building","_skillLevel","_noStatics","_typesStatics","_noUnits"]; -diag_log format["_fnc_sm_spawnBuildingGarrison_relPos: handling _building = %1 | at location = %2",_building,position _building]; -private _group = [] call blck_fnc_create_AI_Group; -// ["_building","_group","_noStatics","_typesStatics","_noUnits",["_aiDifficultyLevel","Red"], -[_building,_group,_noStatics,[],_noUnits,_skillLevel] call blck_fnc_spawnGarrisonInsideBuilding_relPos; -_group \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnEmplaced.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnEmplaced.sqf deleted file mode 100644 index 8632a43..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnEmplaced.sqf +++ /dev/null @@ -1,59 +0,0 @@ -/* - by Ghostrider [GRG] - for ghostridergaming - 12/5/17 - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -params["_missionEmplacedWeapons","_noEmplacedWeapons","_aiDifficultyLevel","_coords","_uniforms","_headGear"]; -private["_return","_emplacedWeps","_emplacedAI","_wep","_units","_gunner","_abort","_pos","_mode"]; -_emplacedWeps = []; -_emplacedAI = []; -_units = []; -_abort = false; -_pos = []; - -//diag_log format["_sm_spawnEmplaced :: _missionEmplacedWeapons = %1",_missionEmplacedWeapons]; -// Define _missionEmplacedWeapons if not already configured. -if (_missionEmplacedWeapons isEqualTo []) then -{ - _missionEmplacedWeaponPositions = [_coords,_noEmplacedWeapons,35,50] call blck_fnc_findPositionsAlongARadius; - { - _static = selectRandom blck_staticWeapons; - //diag_log format["_fnc_spawnEmplacedWeaponArray: creating spawn element [%1,%2]",_static,_x]; - _missionEmplacedWeapons pushback [_static,_coords vectorAdd _x,_aiDifficultyLevel]; - //diag_log format["_fnc_spawnEmplacedWeaponArray: _mi updated to %1",_missionEmplacedWeapons]; - } forEach _missionEmplacedWeaponPositions; -}; -//diag_log format["_sm_spawnEmplaced:: _missionEmplacedWeapons = %1",_missionEmplacedWeapons]; -{ - _wepnClassName = _x select 0; - _pos = _x select 1; - _difficulty = _x select 2; - - // params["_pos", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], "_center", ["_minDist",20], ["_maxDist",35], ["_uniforms",blck_SkinList], ["_headGear",blck_headgear] ]; - _empGroup = [_pos,1,1,_difficulty,_pos,1,2,_uniforms,_headGear,false] call blck_fnc_spawnGroup; - _empGroup setcombatmode "RED"; - _empGroup setBehaviour "COMBAT"; - // Unsure of the value of setting waypoints for emplaced weapons - //[_pos,0.01,0.02,_empGroup,"random","SAD","emplaced"] spawn blck_fnc_setupWaypoints; - //if (isNull _empGroup) exitWith {_abort = _true}; - _wep = [_wepnClassName,[0,0,0],false] call blck_fnc_spawnVehicle; - //_empGroup setVariable["groupVehicle",_wep]; - //_wep setVariable["vehicleGroup",_empGroup]; - _wep setVariable["GRG_vehType","emplaced"]; - _wep setPosATL _pos; - [_wep,false] call blck_fnc_configureMissionVehicle; - _units = units _empGroup; - _gunner = _units select 0; - _gunner moveingunner _wep; -} forEach _missionEmplacedWeapons; -blck_monitoredVehicles append _emplacedWeps; - -true diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnEmplaceds.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnEmplaceds.sqf deleted file mode 100644 index a0c6ba0..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnEmplaceds.sqf +++ /dev/null @@ -1,59 +0,0 @@ -/* - by Ghostrider [GRG] - for ghostridergaming - 12/5/17 - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -params["_missionEmplacedWeapons","_noEmplacedWeapons","_aiDifficultyLevel","_coords","_uniforms","_headGear"]; -private["_return","_emplacedWeps","_emplacedAI","_wep","_units","_gunner","_abort","_pos","_mode"]; -_emplacedWeps = []; -_emplacedAI = []; -_units = []; -_abort = false; -_pos = []; - -//diag_log format["_sm_spawnEmplaced :: _missionEmplacedWeapons = %1",_missionEmplacedWeapons]; -// Define _missionEmplacedWeapons if not already configured. -if (_missionEmplacedWeapons isEqualTo []) then -{ - _missionEmplacedWeaponPositions = [_coords,_noEmplacedWeapons,35,50] call blck_fnc_findPositionsAlongARadius; - { - _static = selectRandom blck_staticWeapons; - //diag_log format["_fnc_spawnEmplacedWeaponArray: creating spawn element [%1,%2]",_static,_x]; - _missionEmplacedWeapons pushback [_static,_coords vectorAdd _x,_aiDifficultyLevel]; - //diag_log format["_fnc_spawnEmplacedWeaponArray: _mi updated to %1",_missionEmplacedWeapons]; - } forEach _missionEmplacedWeaponPositions; -}; -//diag_log format["_sm_spawnEmplaced:: _missionEmplacedWeapons = %1",_missionEmplacedWeapons]; -{ - _wepnClassName = _x select 0; - _pos = _x select 1; - _difficulty = _x select 2; - - /// params["_pos", "_center", _numai1, _numai2, _skillLevel, _minDist, _maxDist, _configureWaypoints, _uniforms, _headGear,_vests,_backpacks,_weaponList,_sideArms, _scuba ]; - __empGroup = [_pos,_pos,1,1,_difficulty,1,2,false,_uniforms,_headGear] call blck_fnc_spawnGroup; - _empGroup setcombatmode "RED"; - _empGroup setBehaviour "COMBAT"; - // Unsure of the value of setting waypoints for emplaced weapons - //[_pos,0.01,0.02,_empGroup,"random","SAD","emplaced"] spawn blck_fnc_setupWaypoints; - //if (isNull _empGroup) exitWith {_abort = _true}; - _wep = [_wepnClassName,[0,0,0],false] call blck_fnc_spawnVehicle; - //_empGroup setVariable["groupVehicle",_wep]; - //_wep setVariable["vehicleGroup",_empGroup]; - _wep setVariable["GRG_vehType","emplaced"]; - _wep setPosATL _pos; - [_wep,false] call blck_fnc_configureMissionVehicle; - _units = units _empGroup; - _gunner = _units select 0; - _gunner moveingunner _wep; -} forEach _missionEmplacedWeapons; -blck_monitoredVehicles append _emplacedWeps; - -true diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnInfantryPatrols.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnInfantryPatrols.sqf deleted file mode 100644 index e99242a..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnInfantryPatrols.sqf +++ /dev/null @@ -1,37 +0,0 @@ -/* - by Ghostrider [GRG] - for ghostridergaming - 12/5/17 - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -// params["_coords",["_minNoAI",3],["_maxNoAI",6],["_aiDifficultyLevel","red"],["_uniforms",blck_SkinList],["_headGear",blck_BanditHeadgear]]; -params["_patrols","_coords",["_minNoAI",3],["_maxNoAI",6],["_aiDifficultyLevel","red"],["_weapons",blck_WeaponList_Orange],["_uniforms",blck_SkinList],["_headGear",blck_BanditHeadgear]]; -//diag_log format["_sm_spawnInfantryPatrols:: _this = %1",_this]; -//diag_log format["_sm_spawnInfantryPatrols:: patrols = %1",_patrols]; -if (_patrols isEqualTo []) then -{ - // Use the random spawn logic from the regular dyanmic mission system. - //params[_coords,"_maxNoAI,_missionGroups,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weapons,sideArms,_isScubaGroup]; - [_coords,_minNoAI,_maxNoAI,_aiDifficultyLevel,_uniforms,_headGear] call blck_fnc_spawnMissionAI -} else { - { - //diag_log format["_sm_spawnInfantryPatrols.sqf:: _x = %1",_x]; - // Use the pre-defined spawn positions and other parameters for each group. - // [[22819.4,16929.5,5.33892],"red",4, 75] - private["_pos","_difficulty","_noAI","_patrolRadius"]; - _pos = _x select 0; // Position at which to spawn the group - _difficulty = _x select 1; // AI difficulty setting (blue, green etc) - _noAI = _x select 2; // Number of AI to spawn with the group - _patrolRadius = _x select 3; // Radius within which AI should patrol - // params["_pos", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], "_center", ["_minDist",20], ["_maxDist",35], ["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_configureWaypoints",true] ]; - [_pos,_pos,_noAI,_noAI,_difficulty,_patrolRadius,_patrolRadius,true,_uniforms,_headGear] call blck_fnc_spawnGroup; - }forEach _patrols; -}; - diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnLootContainers.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnLootContainers.sqf deleted file mode 100644 index a2fe092..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnLootContainers.sqf +++ /dev/null @@ -1,40 +0,0 @@ -/* - by Ghostrider [GRG] - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -params["_objects","_coords"]; -private["_object"]; - -if !(_objects isEqualTo []) exitWith -{ // Spawn loot crates where specified in _objects using the information for loot parameters provided for each location. - { - #ifdef blck_debugMode - if (blck_debugLevel > 2) then - { - diag_log format["_fnc_sm_spawnLootContainers (21):-> _x = %1",_x]; - }; - #endif - //diag_log format["_fnc_sm_spawnLootContainers (21):-> _x = %1",_x]; - // [selectRandom blck_crateTypes,[22904.8,16742.5,6.30195],[[0,1,0],[0,0,1]],[true,false], _crateLoot, _lootCounts] - _x params["_crateClassName","_cratePosASL","_vectorDirUp","_allowDamageSim","_crateLoot","_lootCounts"]; - _crate = [_cratePosASL, _crateClassName] call blck_fnc_spawnCrate; - [_crate, _crateLoot,_lootCounts] call blck_fnc_fillBoxes; - } forEach _objects; -}; - -// In the case where no loot crate parameters are defined in _objects just spawn 1 at the center of the mission. -if (_objects isEqualTo []) then -{ - _crateType = selectRandom blck_crateTypes; - _crate = [_coords,_crateType] call blck_fnc_spawnCrate; - [_crate,blck_BoxLoot_Red,blck_lootCountsGreen] call blck_fnc_fillBoxes; -}; - diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnMission.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnMission.sqf deleted file mode 100644 index 3bac3b3..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnMission.sqf +++ /dev/null @@ -1,53 +0,0 @@ -/* - GMS_fnc_sm_spawnMission - - by Ghostrider [GRG] - for ghostridergaming - 12/5/17 - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -params["_mission"]; -// Spawn landscape -// params["_objects"]; -[_missionLandscape] call blck_fnc_sm_spawnObjects; -uiSleep 10; // Let the objects 'settle' before placing anything on or around them. - - -// Spawn Air Patrols -// params["_airPatrols","_noAirPatrols","_heliTypes","_center","_difficulty","_uniforms","_headGear"]; -[_airPatrols,_noAirPatrols,_aircraftTypes,_missionCenter,_difficulty,_uniforms,_headgear,_weapons] call blck_fnc_sm_spawnAirPatrols; -//uiSleep 1; - -// Spawn Vehicle Patrols -// params["_coords","_noVehiclePatrols","_vehiclePatrolSpawns","_aiDifficultyLevel","_uniforms","_headGear",["_missionType","unspecified"]]; -[_missionCenter,_noVehiclePatrols,_vehiclePatrolParameters,_difficulty,_uniforms,_headGear] call blck_fnc_sm_spawnVehiclePatrols; -//uiSleep 1; - - -// spawn infantry -// params["_patrols","_coords",["_minNoAI",3],["_maxNoAI",6],["_aiDifficultyLevel","red"],["_weapons",blck_WeaponList_Orange],["_uniforms",blck_SkinList],["_headGear",blck_BanditHeadgear]]; -[_aiGroupParameters, _missionCenter,_minNoAI,_maxNoAI,_difficulty,_weapons,_uniforms,_headGear] call blck_fnc_sm_spawnInfantryPatrols; -//uiSleep 1; - -// spawn loot vehicles -// params["_objects","_coords","_loot","_lootCounts"]; -[_missionLootVehicles,_missionCenter,_crateLoot,_lootCounts] call blck_fnc_sm_spawnLootContainers; - -// Spawn static weapons -// params["_missionEmplacedWeapons","_noEmplacedWeapons","_aiDifficultyLevel","_coords","_uniforms","_headGear"]; -[_missionEmplacedWeapons,_noEmplacedWeapons,_difficulty,_missionCenter,_uniforms,_headGear] call blck_fnc_sm_spawnEmplaceds; - -// spawn loot chests -[_missionLootBoxes,_missionCenter,_crateLoot,_lootCounts] call blck_fnc_sm_spawnLootContainers; - -_blck_localMissionMarker = ["",_missionCenter,"","",_markerColor,_markerType]; -[_blck_localMissionMarker] call blck_fnc_spawnMarker; - -diag_log format["[blckeagls] Static Mission Spawner: Mission %1 spawned",_mission]; - diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnObjectASLVectorDirUp.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnObjectASLVectorDirUp.sqf deleted file mode 100644 index 9ed7137..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnObjectASLVectorDirUp.sqf +++ /dev/null @@ -1,21 +0,0 @@ - -/* - by Ghostrider [GRG] - for ghostridergaming - 12/5/17 - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -params["_buildingClassName","_posASL","_vectorDirUp","_enableDamSim"]; -_object = createVehicle [_buildingClassName, [0,0,0], [], 0, "CAN_COLLIDE"]; -_object setPosASL _posASL; -_object setVectorDirAndUp _vectorDirUp; -_object enableSimulationGlobal (_enableDamSim select 0); -_object allowDamage (_enableDamSim select 1); - -_object \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnObjects.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnObjects.sqf deleted file mode 100644 index c9f885f..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnObjects.sqf +++ /dev/null @@ -1,19 +0,0 @@ -/* - by Ghostrider [GRG] - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -params["_objects"]; -private["_objects","_object"]; -{ - _object = [_x select 0, _x select 1, _x select 2, _x select 3] call blck_fnc_sm_spawnObjectASLVectorDirUp; -} forEach _objects; - - diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnVehiclePatrol.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnVehiclePatrol.sqf deleted file mode 100644 index 689b715..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnVehiclePatrol.sqf +++ /dev/null @@ -1,33 +0,0 @@ -/* - by Ghostrider [GRG] - for ghostridergaming - 12/5/17 - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -params["_airPatrols"]; -private["_aircraft","_pos","_difficulty","_uniforms","_headGear"]; -_aircraft = _x select 0; -_pos = _x select 1; -_difficulty = _x select 2; -_uniforms = blck_SkinList; -_headGear = blck_headgearList; -switch (_difficulty) do -{ - case "blue": {_weapons = blck_WeaponList_Blue;}; - case "red": {_weapons = blck_WeaponList_Red}; - case "green": {_weapons = blck_WeaponList_Green}; - case "orange": {_weapons = blck_WeaponList_Orange}; -}; -_vehGroup = [_spawnPos,3,3,_aiDifficultyLevel,_coords,1,2,_uniforms,_headGear,false] call blck_fnc_spawnGroup; -//params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",30],["_maxDis",45],["_group",grpNull]]; -_return = [_pos,_difficulty,_weapons,_uniforms,_headGear,_aircraft] call blck_fnc_spawnVehiclePatrol; -_group = group (_return select 1 select 0); -_group - diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnVehiclePatrols.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnVehiclePatrols.sqf deleted file mode 100644 index 76e3cb0..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_spawnVehiclePatrols.sqf +++ /dev/null @@ -1,43 +0,0 @@ -/* - by Ghostrider [GRG] - for ghostridergaming - 12/5/17 - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - - -params["_coords","_noVehiclePatrols","_vehiclePatrolSpawns","_aiDifficultyLevel","_uniforms","_headGear",["_missionType","unspecified"]]; -//diag_log format["_sm_spawnVehiclePatrols:: _vehiclePatrolSpawns = %1",_vehiclePatrolSpawns]; -private["_vehGroup","_patrolVehicle","_missionAI","_missiongroups","_vehicles","_return","_vehiclePatrolSpawns","_randomVehicle","_return","_abort"]; -//if (count _weapons isEqualTo 0) then {_weaponList = [_aiDifficultyLevel] call blck_fnc_selectAILoadout}; -if (_vehiclePatrolSpawns isEqualTo []) then -{ - private["_spawnPoints","_vehType"]; - _spawnPoints = [_coords,_noVehiclePatrols,75,100] call blck_fnc_findPositionsAlongARadius; - { - // ["B_G_Offroad_01_armed_F",[22819.4,16929.5,3.17413],"red", 600], - _vehType = selectRandom blck_AIPatrolVehicles; - _vehiclePatrolSpawns pushBack [_vehType, _x, _aiDifficultyLevel, 150]; - } forEach _spawnPoints; -}; - -{ - _x params ["_vehicle","_spawnPos","_difficulty","_patrolRadius"]; - _vehGroup = [_spawnPos,_spawnPos,3,3,_difficulty,1,2,_uniforms,_headGear,false] call blck_fnc_spawnGroup; - //params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",40],["_maxDis",60],["_group",grpNull],["_setWaypoints",true],["_crewCount",4],["_patrolRadius",150],["_waypointTimeout",[5,7.5,10]]] - _patrolVehicle = [_spawnPos,_spawnPos,_vehicle,_patrolRadius,_patrolRadius,_vehGroup,[_aiDifficultyLevel]call blck_fnc_selectVehicleCrewCount] call blck_fnc_spawnVehiclePatrol; - //if !(isNull _patrolVehicle) then - //{ - //_patrolVehicle setVariable["vehicleGroup",_vehGroup]; - //}; -} forEach _vehiclePatrolSpawns; - -true - - diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_staticPatrolMonitor.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_staticPatrolMonitor.sqf deleted file mode 100644 index f57a5de..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_sm_staticPatrolMonitor.sqf +++ /dev/null @@ -1,27 +0,0 @@ -/* - by Ghostrider [GRG] - for ghostridergaming - 12/5/17 - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -// GMS_fnc_sm_missionPatrolMonitor - -[] call blck_fnc_sm_monitorInfantry; -[] call blck_fnc_sm_monitorScuba; -//uiSleep 0.1; -[] call blck_fnc_sm_monitorVehicles; -[] call blck_fnc_sm_monitorAircraft; -[] call blck_fnc_sm_monitorEmplaced; - -[] call blck_fnc_sm_monitorShips; -[] call blck_fnc_sm_monitorSubs; -//[] call blck_fnc_sm_monitorGarrisonsASL; -//[] call blck_fnc_sm_monitorGarrisons_relPos; - - diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_spawnSDVPatrol.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_spawnSDVPatrol.sqf deleted file mode 100644 index 653d82b..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_spawnSDVPatrol.sqf +++ /dev/null @@ -1,23 +0,0 @@ -/* - by Ghostrider [GRG] - Copyright 2016 - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -// ["B_SDV_01_F",[22584.9,15304.8,-6.14801],"red",4, 75,0], -params["_SDV","_pos","_difficulty","_numAI","_patrolRadius","_respawnTime"]; -//diag_log format["_fnc_spawnSDVPatrol: _this = %1",_this]; -private["_vehicle","_group","_diveDepth"]; - -_group = [_pos,_numAI,_numAI,_difficulty,_pos,_patrolRadius - 2,_patrolRadius,blck_UMS_uniforms,blck_UMS_headgear,true,blck_UMS_weapons,blck_UMS_vests,true] call blck_fnc_spawnGroup; -//params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",40],["_maxDis",60],["_group",grpNull],["_setWaypoints",true],["_crewCount",4],["_patrolRadius",150],["_waypointTimeout",[5,7.5,10]]] -#define SDVwaypointTimeout [5,7.5,10] -_vehicle = [[_pos select 0, _pos select 1,0],[_pos select 0, _pos select 1,0],_vehType,_patrolRadius - 2,_patrolRadius,_group,true,_numAI,_patrolradius,SDVwaypointTimeout] call blck_fnc_spawnVehiclePatrol; -_diveDepth = 0.5 * [_pos] call blck_fnc_findWaterDepth; -(driver _vehicle) swiminDepth (_diveDepth select 2); -_group \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_spawnScubaGroup.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_spawnScubaGroup.sqf deleted file mode 100644 index b9d40c1..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_spawnScubaGroup.sqf +++ /dev/null @@ -1,38 +0,0 @@ -/* - by Ghostrider [GRG] - Copyright 2016 - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -#define configureWaypoints true -#define isScubaGroup true -// [_pos,_difficulty,_units,_patrolRadius] -params["_pos",["_skillLevel","red"],["_numUnits",6],["_patrolRadius",15]]; -//diag_log format["_fnc_spawnScubaGroup: _this = %1",_this]; -private["_group","_diveDepth"]; -_group = grpNull; -//params["_pos", "_center", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], ["_minDist",20], ["_maxDist",35],["_configureWaypoints",true], ["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_vests",blck_vests],["_backpacks",blck_backpacks],["_weaponList",[]],["_sideArms",blck_Pistols], ["_scuba",false] ]; -_group = [_pos,_pos,_numUnits,_numUnits,_skillLevel, _patrolRadius - 2, _patrolRadius, configureWaypoints, blck_UMS_uniforms, blck_UMS_headgear, blck_UMS_vests, [], blck_UMS_weapons, [], isScubaGroup] call blck_fnc_spawnGroup; -//diag_log format["_fnc_spawnScubaGroup (14): -> value returned for group = %1",_group]; -private _waterDepth = [_pos] call blck_fnc_findWaterDepth; -_diveDepth = _waterDepth * 0.5; -{ - _x swimInDepth (_diveDepth); -} forEach units _group; - -#ifdef blck_debugMode -if (blck_debugLevel > 1) then -{ - { - diag_log format["_fnc_spawnScubaGroup:: _this select %1 = %2",_forEachIndex,_this select _forEachIndex]; - }forEach _this; - - diag_log format["_fnc_spawnScubaGroup:: -->> group spawned = %1",_group]; -}; -#endif -_group; diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_spawnSurfacePatrol.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_spawnSurfacePatrol.sqf deleted file mode 100644 index 403a90f..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_fnc_spawnSurfacePatrol.sqf +++ /dev/null @@ -1,22 +0,0 @@ - -/* - by Ghostrider [GRG] - Copyright 2016 - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -// ["B_SDV_01_F",[22584.9,15304.8,-6.14801],"red",4, 75,0], -params["_SDV","_pos","_difficulty","_numAI","_patrolRadius","_respawnTime"]; -//diag_log format["_fnc_spawnSurfacePatrol: _this = %1",_this]; -private["_vehicle"]; -_group = [_pos,_numAI,_numAI,_difficulty,_pos,_patrolRadius - 2,_patrolRadius,blck_UMS_uniforms,blck_UMS_headgear,true,blck_UMS_weapons,blck_UMS_vests,true] call blck_fnc_spawnGroup; -//params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",40],["_maxDis",60],["_group",grpNull],["_setWaypoints",true],["_crewCount",4],["_patrolRadius",150],["_waypointTimeout",[5,7.5,10]]] -#define shipWaypointTimeout [10,12,5,15] -_vehicle = [_pos,_pos,_vehType,_minDis,_maxDis,_group,true,_numAI,_patrolRadius,shipWaypointTimeout] call blck_fnc_spawnVehiclePatrol; -_vehicle - diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_sm_AddSDVVehicle.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_sm_AddSDVVehicle.sqf deleted file mode 100644 index 49581d0..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_sm_AddSDVVehicle.sqf +++ /dev/null @@ -1,15 +0,0 @@ -/* - by Ghostrider [GRG] - Copyright 2016 - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -params["_vehicle"]; -blck_sm_submarines pushBack [_vehicle,grpNull,0]; -true \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_sm_AddScubaGroup.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_sm_AddScubaGroup.sqf deleted file mode 100644 index 3b73fdc..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_sm_AddScubaGroup.sqf +++ /dev/null @@ -1,16 +0,0 @@ -/* - by Ghostrider [GRG] - Copyright 20167 - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -params["_group"]; -blck_sm_scubaGroups pushBack [_group,grpNull,0]; -//diag_log format["_sm_AddScubaGroup:: blck_sm_scubaGroups = %1",blck_sm_scubaGroups]; -true \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_sm_AddSurfaceVehicle.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_sm_AddSurfaceVehicle.sqf deleted file mode 100644 index 3150815..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/GMS_sm_AddSurfaceVehicle.sqf +++ /dev/null @@ -1,15 +0,0 @@ -/* - by Ghostrider [GRG] - Copyright 2016 - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -params["_vehicle"]; -blck_sm_surfaceShips pushBack [_vehicle,grpNull,0]; -true \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/_GMS_fnc_sm_init_functions.sqf b/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/_GMS_fnc_sm_init_functions.sqf deleted file mode 100644 index 73661a5..0000000 --- a/@GMS/addons/custom_server/Missions/Static/Old_Unused_Code/_GMS_fnc_sm_init_functions.sqf +++ /dev/null @@ -1,80 +0,0 @@ -/* - by Ghostrider [GRG] - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//diag_log "[blckeagls] GMS_fnc_sm_init_functions.sqf "; -//blck_sm_Groups = []; -blck_sm_Infantry = []; -blck_sm_Vehicles = []; -blck_sm_Aircraft = []; -blck_sm_Emplaced = []; -blck_sm_scubaGroups = []; -blck_sm_surfaceShips = []; -blck_sm_submarines = []; -blck_sm_lootContainers = []; -blck_sm_garrisonBuildings_ASL = []; -blcl_sm_garrisonBuilding_relPos = []; - -blck_fnc_sm_AddGroupToArray = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_AddGroupToArray.sqf"; - -/* -blck_fnc_sm_AddGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_AddGroup.sqf"; -blck_fnc_sm_AddVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_AddVehicle.sqf"; -blck_fnc_sm_AddAircraft = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_AddAircraft.sqf"; -blck_fnc_sm_AddEmplaced = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_AddEmplaced.sqf"; -*/ -private _functions = [ - //["blck_fnc_sm_monitorStaticUnits","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorStaticPatrols.sqf"], - ["blck_fnc_sm_monitorInfantry","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorInfantry.sqf"], - ["blck_fnc_sm_monitorScuba","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorScuba.sqf"], - ["blck_fnc_sm_monitorVehicles","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorVehicles.sqf"], - ["blck_fnc_sm_monitorAircraft","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorAircraft.sqf"], - ["blck_fnc_sm_monitorShips","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorShips.sqf"], - ["blck_fnc_sm_monitorSubs","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorSubs.sqf"], - ["blck_fnc_sm_monitorEmplaced","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorEmplaced.sqf"], - ["blck_fnc_sm_monitorGarrisonsASL","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorGarrisonsASL.sqf"], - ["blck_fnc_sm_monitorGarrisons_relPos","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorGarrisons_relPos.sqf"], - ["blck_fnc_sm_spawnVehiclePatrol","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnVehiclePatrol.sqf"], - ["blck_fnc_sm_spawnAirPatrol","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnAirPatrol.sqf"], - ["blck_fnc_sm_spawnEmplaced","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnEmplaced.sqf"], -// ["blck_fnc_sm_spawnInfantryPatrol","\q\addons\custom_server\Missions\Static\Code\GMS_sm_spawnInfantryPatrol.sqf"], - ["blck_fnc_sm_staticPatrolMonitor","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_staticPatrolMonitor.sqf"], -// ["blck_fnc_sm_checkForPlayerNearMission","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_checkForPlayerNearMission.sqf"], - ["blck_fnc_sm_spawnAirPatrols","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnAirPatrols.sqf"], - ["blck_fnc_sm_spawnEmplaceds","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnEmplaced.sqf"], - ["blck_fnc_sm_spawnInfantryPatrols","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnInfantryPatrols.sqf"], - ["blck_fnc_sm_spawnLootContainers","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnLootContainers.sqf"], - ["blck_fnc_sm_spawnObjects","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnObjects.sqf"], - ["blck_fnc_sm_spawnVehiclePatrols","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnVehiclePatrols.sqf"], - ["blck_fnc_sm_spawnBuildingGarrison_ASL","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnBuildingGarrisonASL.sqf"], - ["blck_fnc_sm_spawnBuildingGarrison_relPos","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnBuildingGarrison_relPos.sqf"], - ["blck_fnc_sm_spawnObjectASLVectorDirUp","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnObjectASLVectorDirUp.sqf"], - ["blck_fnc_spawnScubaGroup","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_spawnScubaGroup.sqf"], - ["blck_fnc_spawnSDVPatrol","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_spawnSDVPatrol.sqf"], - ["blck_fnc_spawnSurfacePatrol","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_spawnSurfacePatrol.sqf"], - //["blck_fnc_sm_AddScubaGroup","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_AddScubaGroup.sqf"], - //["blck_fnc_sm_AddSurfaceVehicle","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_AddSurfaceVehicle.sqf"], - ["blck_fnc_sm_AddSDVVehicle","\q\addons\custom_server\Missions\Static\Code\GMS_sm_AddSDVVehicle.sqf"] -]; -{ - _x params ["_name","_path"]; - missionnamespace setvariable [_name,compileFinal preprocessFileLineNumbers _path]; -} foreach _functions; - -diag_log "[blckeagls] GMS_sm_init_functions.sqf "; - - -/* -blck_fnc_spawnScubaGroup = compileFinal preprocessFileLineNumbers "q\addons\custom_server\Missions\UMS\code\GMS_fnc_spawnScubaGroup.sqf"; -blck_fnc_spawnSDVPatrol = compileFinal preprocessFileLineNumbers "q\addons\custom_server\Missions\UMS\code\GMS_fnc_spawnSDVPatrol.sqf"; -blck_fnc_spawnSurfacePatrol = compileFinal preprocessFileLineNumbers "q\addons\custom_server\Missions\UMS\code\GMS_fnc_spawnSurfacePatrol.sqf"; -blck_fnc_sm_AddScubaGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\UMS\code\GMS_sm_AddScubaGroup.sqf"; -blck_fnc_sm_AddSurfaceVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\UMS\code\GMS_sm_AddSurfaceVehicle.sqf"; -blck_fnc_sm_AddSDVVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\UMS\code\GMS_sm_AddSDVVehicle.sqf"; diff --git a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_configurations.sqf b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_configurations.sqf index 3185e74..a9d24f8 100644 --- a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_configurations.sqf +++ b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_configurations.sqf @@ -65,11 +65,10 @@ if ((toLower blck_modType) isEqualTo "default") then "Exile_Boat_SDV_Grey" ]; - blck_UMS_crates = - [ + blck_UMS_crates = blck_crateTypes; - ]; }; + blck_UMS_unarmedSurfaceVessels = [ "B_Boat_Transport_01_F", diff --git a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_init.sqf b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_init.sqf index c888f56..78da88b 100644 --- a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_init.sqf +++ b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_init.sqf @@ -8,20 +8,20 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ -diag_log "[blckeagls] Initializing UMS"; +//diag_log "[blckeagls] Initializing UMS"; #include "\q\addons\custom_server\Configs\blck_defines.hpp"; blck_dynamicUMS_MissionsRuning = 0; blck_priorDynamicUMS_Missions = []; blck_UMS_ActiveDynamicMissions = []; -diag_log "Including GMS_UMS_configurations.sqf"; +//diag_log "Including GMS_UMS_configurations.sqf"; #include "GMS_UMS_configurations.sqf"; -diag_log "Including GMS_UMS_dynamicMissionLIsts.sqf"; +//diag_log "Including GMS_UMS_dynamicMissionLIsts.sqf"; #include "GMS_UMS_dynamicMissionList.sqf"; -diag_log format ["Initializing UMS static missions at %1",diag_tickTime]; +//diag_log format ["Initializing UMS static missions at %1",diag_tickTime]; [] execVM "q\addons\custom_server\Missions\UMS\GMS_UMS_StaticMissions_init.sqf"; -diag_log "[blckeagls] UMS "; +//diag_log "[blckeagls] UMS "; diff --git a/@GMS/addons/custom_server/Missions/UMS/GMS_fnc_spawnDynamicUMSMission.sqf b/@GMS/addons/custom_server/Missions/UMS/GMS_fnc_spawnDynamicUMSMission.sqf deleted file mode 100644 index 9e34194..0000000 --- a/@GMS/addons/custom_server/Missions/UMS/GMS_fnc_spawnDynamicUMSMission.sqf +++ /dev/null @@ -1,418 +0,0 @@ -/* - Dynamic Underwater Mission Spawner - By Ghostrider GRG - Copyright 2016 - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -#define isScubaMission true -#define delayTime 1 -private ["_abort","_crates","_aiGroup","_objects","_mines","_blck_AllMissionAI","_blck_localMissionMarker", - "_AI_Vehicles","_timeOut","_aiDifficultyLevel","_missionPatrolVehicles","_missionGroups","_loadCratesTiming","_spawnCratesTiming","_assetSpawned", - "_blck_AllMissionAI","_delayTime","_wait","_missionStartTime","_playerInRange","_missionTimedOut","_temp","_patrolVehicles","_vehToSpawn","_marker","_vehicleCrewCount", - "_defaultMissionLocations"]; - -params["_coords","_mission",["_allowReinforcements",false]]; - -_markerClass = _mission; -_aiDifficultyLevel = _difficulty; // _difficulty is defined in the mission description file. see \addons\custom_server\Missions\UMS\dynamicMissions\default.sqf for an example - -diag_log format["[blckeagls Dynamic UMS] dynamicUMSspawner (34):: Initializing mission: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName]; - - -if (isNil "_assetKilledMsg") then {_assetKilledMsg = ""}; -if (isNil "_markerColor") then {_markerColor = "ColorBlack"}; -if (isNil "_markerType") then {_markerType = ["mil_box",[]]}; -if (isNil "_markerSize") then {_markerSize = []}; -if (isNil "_endCondition") then {_endCondition = blck_missionEndCondition}; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear"}; -if (isNil "_spawnCratesTiming") then {_spawnCratesTiming = blck_spawnCratesTiming}; // Choices: "atMissionSpawnGround","atMissionStartAir","atMissionEndGround","atMissionEndAir". -if (isNil "_loadCratesTiming") then {_loadCratesTiming = blck_loadCratesTiming}; // valid choices are "atMissionCompletion" and "atMissionSpawn"; -if (isNil "_missionPatrolVehicles") then {_missionPatrolVehicles = []}; -if (isNil "_missionGroups") then {_missionGroups = []}; -if (isNil "_hostageConfig") then {_hostageConfig = []}; -if (isNil "_enemyLeaderConfig") then {_enemyLeaderConfig = []}; -if (isNil "_useMines") then {_useMines = blck_useMines;}; -if (isNil "_weaponList") then {_weaponList = [_aiDifficultyLevel] call blck_fnc_selectAILoadout}; -if (isNil "_sideArms") then {_sideArms = [_aiDifficultyLevel] call blck_fnc_selectAISidearms}; -if (isNil "_uniforms") then {_uniforms = [_aiDifficultyLevel] call blck_fnc_selectAIUniforms}; -if (isNil "_headGear") then {_headGear = [_aiDifficultyLevel] call blck_fnc_selectAIHeadgear}; -if (isNil "_vests") then {_vests = [_aiDifficultyLevel] call blck_fnc_selectAIVests}; -if (isNil "_backpacks") then {_backpacks = [_aiDifficultyLevel] call blck_fnc_selectAIBackpacks}; -if (isNil "_chanceHeliPatrol") then {_chanceHeliPatrol = [_aiDifficultyLevel] call blck_fnc_selectChanceHeliPatrol}; -if (isNil "_noChoppers") then {_noChoppers = [_aiDifficultyLevel] call blck_fnc_selectNumberAirPatrols}; -if (isNil "_chancePara") then {_chancePara = [_aiDifficultyLevel] call blck_fnc_selectChanceParatroops}; -if (isNil "_missionHelis") then {_missionHelis = [_aiDifficultyLevel] call blck_fnc_selectMissionHelis}; -if (isNil "_noPara") then {_noPara = [_aiDifficultyLevel] call blck_fnc_selectNumberParatroops}; -if (isNil "_paraSkill") then {_paraSkill = _aiDifficultyLevel}; -if (isNil "_chanceLoot") then {_chanceLoot = 1.0}; //0.5}; -if (isNil "_paraTriggerDistance") then {_paraTriggerDistance = 400;}; -if (isNil "_paraLoot") then {_paraLoot = blck_BoxLoot_Green}; // Add diffiiculty based settings -if (isNil "_paraLootCounts") then {_paraLootCounts = blck_lootCountsRed}; // Add difficulty based settings -if (isNil "_missionLootVehicles") then {_missionLootVehicles = []}; -if (isNil "_garrisonedBuilding_ATLsystem") then {_garrisonedBuilding_ATLsystem = []}; -if (isNil "_garrisonedBuildings_BuildingPosnSystem") then {_garrisonedBuildings_BuildingPosnSystem = []}; -if (isNil "_vehicleCrewCount") then {_vehicleCrewCount = [_aiDifficultyLevel] call GMS_fnc_selectVehicleCrewCount}; -if (isNil "_defaultMissionLocations") then {_defaultMissionLocations = []}; -if (isNil "_submarinePatrolParameters") then {_submarinePatrolParameters = []}; -if (isNil "_airpatrols") then {_airpatrols = []}; -if (isNil "_scubagroupparameters") then {_scubagroupparameters = []}; -if (isNil "_markerMissionName") then { - diag_log format["_fnc_missionSpawner: _markerMissionName not defined, using default value"]; - _markerMissionName = "Default Mission Name"; -}; -if (isNil "_noLootCrates") then {_noLootCrates = 1}; -if (isNil "_lootCrates") then {_lootCrates = blck_crateTypes}; -if (isNil "_lootCratePositions") then {_lootCratePositions = []}; -if (isNil "_isScubaMission") then {_isScubaMission = false}; -if (isNil "_missionLootBoxes") then {_missionLootBoxes = []}; - -_objects = []; -_mines = []; -_crates = []; -_aiGroup = []; -_missionAIVehicles = []; -_blck_AllMissionAI = []; -_AI_Vehicles = []; -_blck_localMissionMarker = [_markerClass,_coords,"","",_markerColor,_markerType]; -_delayTime = 1; -_groupPatrolRadius = 50; - -if (blck_labelMapMarkers select 0) then -{ - _blck_localMissionMarker set [2, _markerMissionName]; -}; -if !(blck_preciseMapMarkers) then -{ - _blck_localMissionMarker set [1,[_coords,75] call blck_fnc_randomPosition]; -}; -_blck_localMissionMarker set [3,blck_labelMapMarkers select 1]; // Use an arrow labeled with the mission name? -[["start",_startMsg,_markerMissionName]] call blck_fnc_messageplayers; -_marker = [_blck_localMissionMarker] call blck_fnc_spawnMarker; -_blck_localMissionMarker set [0, _marker]; -//////// -// All parameters are defined, let's wait until a player is nearby or the mission has timed out -//////// - -_missionStartTime = diag_tickTime; -_playerInRange = false; -_missionTimedOut = false; - -_wait = true; - -while {_wait} do -{ - if ([_coords, blck_TriggerDistance, false] call blck_fnc_playerInRange) exitWith {_playerInRange = true;}; - if ([_missionStartTime,blck_MissionTimeout] call blck_fnc_timedOut) exitWith {_missionTimedOut = true;}; - uiSleep 5; - -}; - -if (_missionTimedOut) exitWith -{ - // Deal with the case in which the mission timed out. - blck_priorDynamicUMS_Missions pushback [_coords,diag_tickTime]; - blck_UMS_ActiveDynamicMissions = blck_UMS_ActiveDynamicMissions - [_coords]; - blck_dynamicUMS_MissionsRuning = blck_dynamicUMS_MissionsRuning - 1; - diag_log format["_fnc_dynamicUMSSpawner (187): mission timed out"]; - [_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 1] call blck_fnc_endMission; -}; - -//////// -// Spawn the mission objects, loot chest, and AI -//////// - -if (blck_SmokeAtMissions select 0) then // spawn a fire and smoke near the crate -{ - _temp = [_coords,blck_SmokeAtMissions select 1] call blck_fnc_smokeAtCrates; - if (typeName _temp isEqualTo "ARRAY") then - { - _objects append _temp; - }; -}; - -uiSleep delayTime; -if (_useMines) then -{ - _mines = [_coords] call blck_fnc_spawnMines; - //uiSleep _delayTime;; -}; -uiSleep delayTime; -_temp = []; -//diag_log format["_dynamicUMSspawner"" _missionLandscape = %1 | _missionLandscapeMode = %2",_missionLandscape, _missionLandscapeMode]; -if (_missionLandscapeMode isEqualTo "random") then -{ - _temp = [_coords,_missionLandscape, 3, 15, 2] call blck_fnc_spawnRandomLandscape; -}; -if (_missionLandscapeMode isEqualTo "precise") then -{ - //params["_center","_objects"]; - _temp = [_coords, _missionLandscape] call blck_fnc_spawnCompositionObjects; - //uiSleep 1; -}; -//diag_log format["_fnc_dynamicUMSspawner: _temp = %1, typeName _temp = %2",_temp, typeName _temp]; -if (typeName _temp isEqualTo "ARRAY") then -{ - _objects append _temp; -}; - -uiSleep delayTime;; - -_temp = [_coords,_missionLootVehicles] call blck_fnc_spawnMissionLootVehicles; -//uisleep 1; -_crates append _temp; - -uiSleep _delayTime; - -private _abort = false; -private _temp = [[],[],false]; -diag_log format["_fnc_dynamicUMSspawner: spawning infantry using data in _missionGroups with _missionGroups = %1",_missionGroups]; -// Require that the server admin define the location of any infantry patrols given that missions will be off-shore. -// AI could be spawned on a platform or floating structure. -if (count _missionGroups > 0) then -{ - if (isNil "_noAIGroups") then {_noAIGroups = 1}; - diag_log format["_fnc_dynamicUMSSpawner: _noAIGroups = %1",_noAIGroups]; - // _temp = [_coords, _minNoAI,_maxNoAI,_noAIGroups,_missionGroups,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnMissionAI; - _temp = [_coords, _minNoAI,_maxNoAI,_noAIGroups,_missionGroups,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnMissionAI; - _blck_AllMissionAI append (_temp select 0); -}; - -private "_temp"; -if (count _scubaGroupParameters > 0) then -{ - //diag_log format["_fnc_dynamicUMSspawner: spawning scuba groups with _scubaGroupParameters = %1",_scubaGroupParameters]; - // params["_coords",["_minNoAI",3],["_maxNoAI",6],"_missionGroups",["_aiDifficultyLevel","red"],["_uniforms",blck_SkinList],["_headGear",blck_BanditHeadgear],["_vests",blck_vests],["_backpacks",[]],["_weapons",[]],["_sideArms",blck_Pistols],["_isScubaGroup",false]]; - _temp = [_coords, _minNoAI,_maxNoAI,count _scubaGroupParameters,_scubaGroupParameters,_aiDifficultyLevel,blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,[],blck_UMS_weapons,[],isScubaMission] call blck_fnc_spawnMissionAI; - _blck_AllMissionAI append (_temp select 0); -}; - -uiSleep _delayTime; - -_temp = [[],[],false]; -_abort = false; -private["_patrolVehicles","_vehToSpawn"]; -_vehToSpawn = 0; - -// Spawn any surface patrols -if (blck_useVehiclePatrols && count _vehiclePatrolParameters > 0) then -{ - // params["_coords","_noVehiclePatrols","_aiDifficultyLevel","_missionPatrolVehicles",["_useRelativePos",true],["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_vests",blck_vests],["_backpacks",blck_backpacks],["_weaponList",[]],["_sideArms",blck_Pistols], ["_isScubaGroup",false]]; - _temp = [_coords,_vehToSpawn,_aiDifficultyLevel,_vehiclePatrolParameters,true,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms,false,_vehicleCrewCount /*,blck_UMS_weapons,blck_UMS_vests,isScubaMission*/ ] call blck_fnc_spawnMissionVehiclePatrols; - _missionAIVehicles append (_temp select 0); - _blck_AllMissionAI append (_temp select 1); -}; -// Spawn any submarine patrols -if (blck_useVehiclePatrols && count _submarinePatrolParameters > 0) then -{ - // params["_coords","_noVehiclePatrols","_aiDifficultyLevel","_missionPatrolVehicles",["_useRelativePos",true],["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_vests",blck_vests],["_backpacks",blck_backpacks],["_weaponList",[]],["_sideArms",blck_Pistols], ["_isScubaGroup",false]]; - _temp = [_coords,_vehToSpawn,_aiDifficultyLevel,_submarinePatrolParameters,true,blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,[],blck_UMS_weapons,[],isScubaMission] call blck_fnc_spawnMissionVehiclePatrols; - _missionAIVehicles append (_temp select 0); - _blck_AllMissionAI append (_temp select 1); -}; - -uiSleep delayTime; - -_noChoppers = [_noChoppers] call blck_fnc_getNumberFromRange; -_noPara = [_noPara] call blck_fnc_getNumberFromRange; - -if (_noChoppers > 0) then -{ - for "_i" from 1 to (_noChoppers) do - { - if (random(1) < _chanceHeliPatrol) then - { - //_temp = [_coords,_missionHelis,spawnHeli,_aiDifficultyLevel,_chancePara,_noPara,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnMissionReinforcements; - _temp = [_coords,_aiDifficultyLevel,_missionHelis] call blck_fnc_spawnMissionHeli; - blck_monitoredVehicles pushBack (_temp select 0); - _blck_AllMissionAI append (_temp select 1); - }; - }; -}; - -////////////////////////// -// Spawn Crates and Emplaced Weapons Last to try to force them to correct positions relative to spawned buildinga or other objects. - -uiSleep 15; -private["_noEmplacedToSpawn"]; -_noEmplacedToSpawn = [_noEmplacedWeapons] call blck_fnc_getNumberFromRange; -//diag_log format["_dynamicUMSspawner:: _noEmplacedToSpawn = %1",_vehToSpawn]; -if (blck_useStatic && ((_noEmplacedToSpawn > 0)) || count _missionEmplacedWeapons > 0) then -{ - _temp = [_coords,_missionEmplacedWeapons,true,_noEmplacedToSpawn,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnEmplacedWeaponArray; - _objects append (_temp select 0); - _blck_AllMissionAI append (_temp select 1); -}; - -uiSleep _delayTime; -if (isNil "blck_UMS_crates") then {blck_UMS_crates = blck_crateTypes}; -if (blck_UMS_crates isEqualTo []) then {blck_UMS_crates = blck_crateTypes}; -if (_spawnCratesTiming isEqualTo "atMissionSpawnGround") then -{ - if (count _missionLootBoxes > 0) then - { - _crates = [_coords,_missionLootBoxes,_loadCratesTiming, _spawnCratesTiming, "start", _aiDifficultyLevel] call blck_fnc_spawnMissionCrates; - } - else - { - _crates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_crateLoot,_lootCounts]], _loadCratesTiming, _spawnCratesTiming, "start", _aiDifficultyLevel] call blck_fnc_spawnMissionCrates; - }; - - if (blck_cleanUpLootChests) then - { - _objects append _crates; - }; -}; - -if (blck_cleanUpLootChests) then -{ - _objects append _crates; -}; -if (_noPara > 0 && (random(1) < _chancePara) && _paraTriggerDistance == 0) then -{ - private _paratroops = [_coords,_noPara,_aiDifficultyLevel,blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,[],blck_UMS_weapons,[],isScubaMission] call blck_fnc_spawnParaUnits; - if !(isNull _paratroops) then - { - _blck_AllMissionAI append (units _paratroops); - }; - if (random(1) < _chanceLoot) then - { - private _extraCrates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_paraLoot,_paraLootCounts]], "atMissionSpawn","atMissionStartAir", "start", _aiDifficultyLevel] call blck_fnc_spawnMissionCrates; - if (blck_cleanUpLootChests) then - { - _objects append _extraCrates; - }; - }; -}; - -// Trigger for mission end -private["_missionComplete","_endIfPlayerNear","_endIfAIKilled"]; -_missionComplete = -1; -_startTime = diag_tickTime; -if (blck_showCountAliveAI) then -{ - if !(_marker isEqualTo "") then - { - [_marker,_markerMissionName,_blck_AllMissionAI] call blck_fnc_updateMarkerAliveCount; - blck_missionMarkers pushBack [_marker,_markerMissionName,_blck_AllMissionAI]; - }; -}; -switch (_endCondition) do -{ - case "playerNear": {_endIfPlayerNear = true;_endIfAIKilled = false;}; - case "allUnitsKilled": {_endIfPlayerNear = false;_endIfAIKilled = true;}; - case "allKilledOrPlayerNear": {_endIfPlayerNear = true;_endIfAIKilled = true;}; -}; - -private["_locations"]; -_locations = [_coords]; -{ - _locations pushback (getPos _x); - _x setVariable["crateSpawnPos", (getPos _x)]; -} forEach _crates; - -if (blck_showCountAliveAI) then -{ - if !(_marker isEqualTo "") then - { - [_marker,_markerMissionName,_blck_AllMissionAI] call blck_fnc_updateMarkerAliveCount; - blck_missionMarkers pushBack [_marker,_markerMissionName,_blck_AllMissionAI]; - }; -}; - -private _spawnPara = if (random(1) < _chancePara) then {true} else {false}; -_missionComplete = -1; -while {_missionComplete isEqualTo -1} do -{ - if ((_endIfPlayerNear) && [_locations,10,true] call blck_fnc_playerInRangeArray) exitWith {}; - if ((_endIfAIKilled) && ({alive _x} count _blck_AllMissionAI) < 1) exitWith {}; - - if (_spawnCratesTiming isEqualTo "atMissionSpawn") then - { - { - if ({[_x] call blck_fnc_crateMoved} count _crates > 0) exitWith - { - _missionComplete = 1; - _crateStolen = true; - }; - }forEach _crates; - }; - if (_spawnPara) then - { - - if ([_coords,_paraTriggerDistance,true] call blck_fnc_playerInRange) then - { - _spawnPara = false; // The player gets one try to spawn these. - if (random(1) < _chancePara) then // - { - // blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,[],blck_UMS_weapons,[],isScubaMission] call blck_fnc_spawnParaUnits;] call blck_fnc_spawnParaUnits; - private _paratroops = [_coords,_noPara,_aiDifficultyLevel,blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,[],blck_UMS_weapons,[],isScubaMission] call blck_fnc_spawnParaUnits; - if !(isNull _paratroops) then - { - _blck_AllMissionAI append (units _paratroops); - }; - if (random(1) < _chanceLoot) then - { - private _extraCrates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_paraLoot,_paraLootCounts]], "atMissionSpawn","atMissionStartAir", "start", _aiDifficultyLevel] call blck_fnc_spawnMissionCrates; - if (blck_cleanUpLootChests) then - { - _objects append _extraCrates; - }; - }; - }; - }; - }; - //diag_log format["dynamicUMSspawner:: (483) missionCompleteLoop - > players near = %1 and ai alive = %2 and crates stolen = %3",[_coords,20] call blck_fnc_playerInRange, {alive _x} count _blck_AllMissionAI, _crateStolen]; - uiSleep 4; -}; -if (_crateStolen) exitWith -{ - //diag_log format["dynamicUMSspawner:: (542) Crate Stolen Callening _fnc_endMission - > players near = %1 and ai alive = %2 and crates stolen = %3",[_locations,10,true] call blck_fnc_playerInRangeArray, {alive _x} count _blck_AllMissionAI, _crateStolen]; - [_mines,_objects,_crates, _blck_AllMissionAI,"Crate Removed from Mission Site Before Mission Completion: Mission Aborted",_blck_localMissionMarker,_coords,_mission,2,isScubaMission] call blck_fnc_endMission; -}; - -if (_spawnCratesTiming in ["atMissionEndGround","atMissionEndAir"]) then -{ - if (count _missionLootBoxes > 0) then - { - _crates = [_coords,_missionLootBoxes,_loadCratesTiming,_spawnCratesTiming, "end", _aiDifficultyLevel] call blck_fnc_spawnMissionCrates; - } - else - { - _crates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_crateLoot,_lootCounts]], _loadCratesTiming,_spawnCratesTiming, "end", _aiDifficultyLevel] call blck_fnc_spawnMissionCrates; - }; - - if (blck_cleanUpLootChests) then - { - _objects append _crates; - }; -}; - -if (_spawnCratesTiming isEqualTo "atMissionSpawnGround" && _loadCratesTiming isEqualTo "atMissionCompletion") then -{ - { - [_x] call blck_fnc_loadMissionCrate; - } forEach _crates; -}; - -private["_result"]; -// Force passing the mission name for informational purposes. -_blck_localMissionMarker set [2, _markerMissionName]; -if (blck_showCountAliveAI) then -{ - //_marker setMarkerText format["%1: All AI Dead",_markerMissionName]; - { - if ((_x select 1) isEqualTo _markerMissionName) exitWith{blck_missionMarkers deleteAt _forEachIndex}; - }forEach blck_missionMarkers; -}; -// params["_mines","_objects","_crates","_blck_AllMissionAI","_endMsg","_blck_localMissionMarker","_coords","_mission",["_endCondition",0],["_vehicles",[]],["_isScubaMission",false]]; -_result = [_mines,_objects,_crates,_blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_mission,0,_missionAIVehicles,isScubaMission] call blck_fnc_endMission; - -blck_missionsRun = blck_missionsRun + 1; -diag_log format["[blckeagls] dynamicUMSspawner:: Total Dyanamic Land and UMS Run = %1", blck_missionsRun]; diff --git a/@GMS/addons/custom_server/changeLog.sqf b/@GMS/addons/custom_server/changeLog.sqf index e6b3ec0..15afaf7 100644 --- a/@GMS/addons/custom_server/changeLog.sqf +++ b/@GMS/addons/custom_server/changeLog.sqf @@ -7,7 +7,16 @@ Many thanks for new Coding and ideas from Grahame. Significant Changes: ===================== -6.98 Build 204 +7.00 Build 212 +New: +Fixed: Don and Hostage missions could not be completed +Fixed: Missions tended to spawn all at once +Fixed: vehicles are spawned at a safe spot which should reduce unintended explosions +Added: The system has been upgreaded to a state-based system, meaning one scrpt is running once all missions are initialized. +Changed: a lot of debugging was removed. + + +6.98 Build 206 FIXED: few minor bug fixes. FIXED: Static Mission Loot vehicles are no longer deleted by Epoch servers when players enter them. FIXED: an error in coordinates for some randomly spawned missions tha added an extra 0 to the array with the coordinaates. @@ -29,6 +38,11 @@ Changed: some code for finding locations for a new mission. Added: all blckeagls map markers have the same prefix: "blckeagls_marker" + + + + + 6.96 Build 199 Added support for Arma servers not running Epoch or Exile diff --git a/@GMS/addons/custom_server/init/GMS_fnc_getTraderCites.sqf b/@GMS/addons/custom_server/init/GMS_fnc_getTraderCites.sqf index d019e5b..72f7a2a 100644 --- a/@GMS/addons/custom_server/init/GMS_fnc_getTraderCites.sqf +++ b/@GMS/addons/custom_server/init/GMS_fnc_getTraderCites.sqf @@ -1,4 +1,3 @@ -// pull trader cities from config /* By Ghostrider [GRG] -------------------------- @@ -16,7 +15,6 @@ if ((tolower blck_modType) isEqualTo "epoch") then private _config = configFile >> "CfgEpoch"; private _configWorld = _config >> worldname; private _telePos = getArray(configFile >> "CfgEpoch" >> worldName >> "telePos" ); - diag_log format["_fnc_getTraderCities: _telePos = %1",_telePos]; { blck_locationBlackList pushback [_x select 3, 1000]; } foreach _telePos; diff --git a/@GMS/addons/custom_server/init/blck_init_HC.sqf b/@GMS/addons/custom_server/init/blck_init_HC.sqf index 8cc671f..3302e53 100644 --- a/@GMS/addons/custom_server/init/blck_init_HC.sqf +++ b/@GMS/addons/custom_server/init/blck_init_HC.sqf @@ -15,10 +15,7 @@ if (hasInterface || isServer) exitWith{}; if !(isNil "blck_Initialized") exitWith{}; private _blck_loadingStartTime = diag_tickTime; #include "\q\addons\custom_server\init\build.sqf"; -//call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf"; call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_functions_HC.sqf"; -//call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Configs\blck_configs.sqf"; -//call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Configs\blck_custom_config.sqf"; diag_log format["[blckeagls] Loading Headless Client Version %2 | Build Date %1 | Build %3 | loaded in %4 seconds",blck_buildDate,blck_versionNumber,blck_buildNumber,diag_tickTime - _blck_loadingStartTime]; while {true} do { diff --git a/@GMS/addons/custom_server/init/blck_init_server.sqf b/@GMS/addons/custom_server/init/blck_init_server.sqf index ad041bf..a43c155 100644 --- a/@GMS/addons/custom_server/init/blck_init_server.sqf +++ b/@GMS/addons/custom_server/init/blck_init_server.sqf @@ -11,66 +11,62 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -diag_log format["[blckeagls] blck_init_server started"]; +/////////////////////////////////////////////// +// prevent the system from being started twice +////////////////////////////////////////////// +if !(isNil "blck_missionSystemRunning") exitWith {}; +blck_missionSystemRunning = true; // Only run this on a dedicated server if ( !(isServer) || hasInterface) exitWith{}; -// Only run this once -if !(isNil "blck_Initialized") exitWith{}; - -// This is just a flag so we know if blckeagls has been started or not. -blck_Initialized = true; - // find and set Mod blck_modType = ""; if (!isNull (configFile >> "CfgPatches" >> "exile_server")) then {blck_modType = "Exile"}; if (!isnull (configFile >> "CfgPatches" >> "a3_epoch_server")) then {blck_modType = "Epoch"}; if (!(blck_modType in ["Exile","Epoch"] )) then {blck_modType = "default"}; -diag_log format["[blckeagls] blck_modType = %1",blck_modtype]; publicVariable "blck_modType"; + +// Just some housekeeping for ghost. +private _blck_loadingStartTime = diag_tickTime; +#include "\q\addons\custom_server\init\build.sqf"; + +// compile functions +[] call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_functions.sqf"; + +// Load Configs +[] call compile preprocessfilelinenumbers "\q\addons\custom_server\Configs\blck_configs.sqf"; +waitUntil{(!isNil "blck_useHC") && (!isNil "blck_simulationManager") && (!isNil "blck_debugOn") && (!isNil "blck_AI_Side")}; +if (blck_debugOn) then {diag_log format["[blckeagls] blck_AI_Side = %1",blck_AI_Side]}; + // This block waits for the mod to start but is disabled for now if ((tolower blck_modType) isEqualto "epoch") then { diag_log "[blckeagls] Waiting until EpochMod is ready..."; - //waituntil {!isnil "EPOCH_SERVER_READY"}; + if !(blck_debugOn) then {waitUntil {!isnil "EPOCH_SERVER_READY"}}; diag_log "[blckeagls] EpochMod is ready...loading blckeagls"; }; if ((toLower blck_modType) isEqualTo "exile") then { diag_log "[blckeagls] Waiting until ExileMod is ready ..."; - //waitUntil {!PublicServerIsLoaded}; + if !(blck_debugOn) then {waitUntil {!isNil "PublicServerIsLoaded"}}; diag_log "[blckeagls] Exilemod is ready...loading blckeagls"; }; if ((toLower blck_modType) isEqualTo "default") then { diag_log "[blckeagls] Configuring Mission System for Default Settings..."; }; -// Just some housekeeping for ghost. -private _blck_loadingStartTime = diag_tickTime; -#include "\q\addons\custom_server\init\build.sqf"; -diag_log format["[blckeagls] build information loaded at %1",diag_tickTime]; - - -// compile functions -[] call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_functions.sqf"; -diag_log format["[blckeagls] functions compiled at %1",diag_tickTime]; - - -[] call compile preprocessfilelinenumbers "\q\addons\custom_server\Configs\blck_configs.sqf"; -diag_log format["[blckeagls] blck_configs.sqf run at %1",diag_tickTime]; -waitUntil{(!isNil "blck_useHC") && (!isNil "blck_simulationManager") && (!isNil "blck_debugOn") && (!isNil "blck_AI_Side")}; -uiSleep 10; // Load any user-defined specifications or overrides +// HINT: Use these for map-specific settings #include "\q\addons\custom_server\Configs\blck_custom_config.sqf"; -diag_log format["[blckeagls] Custom Configurations Loaded at %1",diag_tickTime]; -diag_log format["[blckeagls] debug mode settings:blck_debugON = %1 | blck_debugLevel = %3",blck_debugON,blck_debugLevel]; +if (blck_debugOn) then {diag_log format["[blckeagls] Custom Configurations Loaded at %1",diag_tickTime]}; +if (blck_debugOn) then {diag_log format["[blckeagls] debug mode settings:blck_debugON = %1 | blck_debugLevel = %2",blck_debugON,blck_debugLevel]}; // Load vaariables used to store information for the mission system. [] call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf"; -diag_log format["[blckeagls] Variables loaded at %1",diag_tickTime]; +if (blck_debugOn) then {diag_log format["[blckeagls] Variables loaded at %1",diag_tickTime]}; // configure dynamic simulation management is this is being used. if (blck_simulationManager == 2) then @@ -84,45 +80,44 @@ if (blck_spawnMapAddons) then { call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\MapAddons\MapAddons_init.sqf"; }else{ - diag_log "[blckeagls] Map Addons disabled"; + ["Map Addons disabled"] call blck_fnc_log; }; // find and set Mapcenter and size call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\init\GMS_fnc_findWorld.sqf"; -diag_log "[blckeagls] Map-specific information defined"; +if (blck_debugOn) then {diag_log "[blckeagls] Map-specific information defined"}; // set up the lists of available missions for each mission category #include "\q\addons\custom_server\Missions\GMS_missionLists.sqf"; -diag_log "[blckeagls] Mission Lists Loaded Successfully"; - +if (blck_debugOn) then {diag_log "[blckeagls] Mission Lists Loaded Successfully"}; call compile preprocessfilelinenumbers "\q\addons\custom_server\Missions\Static\GMS_StaticMissions_init.sqf"; call compile preprocessfilelinenumbers "q\addons\custom_server\Missions\UMS\GMS_UMS_init.sqf"; // loads functions and spawns any static missions. -diag_log "[blckeagls] blck_init_server: ->> Static and UMS systems initialized."; +if (blck_debugOn) then {diag_log "[blckeagls] blck_init_server: ->> Static and UMS systems initialized."}; switch (blck_simulationManager) do { - case 2: {diag_log "[blckeagls] dynamic simulation manager enabled"}; - case 1: {diag_log "[blckeagls] blckeagls simulation manager enabled"}; - case 0: {diag_log "[blckeagls] simulation management disabled"}; + case 2: {["dynamic simulation manager enabled"] call blck_fnc_log}; + case 1: {["blckeagls simulation manager enabled"] call blck_fnc_log}; + case 0: {["[blckeagls] simulation management disabled"] call blck_fnc_log}; }; -diag_log format["[blckeagls] version %1 Build %2 Loaded in %3 seconds",blck_versionNumber,blck_buildNumber,diag_tickTime - _blck_loadingStartTime]; //,blck_modType]; -diag_log format["[blckeagls] waiting for players to join ---- >>>>"]; +[format["[blckeagls] version %1 Build %2 Loaded in %3 seconds",blck_versionNumber,blck_buildNumber,diag_tickTime - _blck_loadingStartTime]] call blck_fnc_log; +[format["[blckeagls] waiting for players to join ---- >>>>"]] call blck_fnc_log; if ( !(blck_debugON) && (blck_debugLevel isEqualTo 0)) then { waitUntil{{isPlayer _x}count allPlayers > 0}; - diag_log "[blckeagls] Player Connected, spawning missions"; + ["]Player Connected, spawning missions"] call blck_fnc_log; } else { - diag_log "[blckeagls] Debug mode ON, proceding without players"; + ["Debug mode ON, proceding without players"] call blck_fnc_log; }; if (blck_spawnStaticLootCrates) then { [] spawn compile preprocessfilelinenumbers "\q\addons\custom_server\SLS\SLS_init.sqf"; - diag_log "[blckeagls] SLS:: -- >> Static Loot Spawner Done"; + ["SLS:: -- >> Static Loot Spawner Done"] call blck_fnc_log; }else{ - diag_log "[blckeagls] SLS:: -- >> Static Loot Spawner disabled"; + ["SLS:: -- >> Static Loot Spawner disabled"] call blck_fnc_log; }; if (blck_blacklistTraderCities) then @@ -135,7 +130,7 @@ if (blck_ai_offload_to_client) then if (blck_useHC) then { blck_useHC = false; - diag_log "[blckeagls] blck_useHC has been diabled to allow offloading to clients"; + ["blck_useHC has been diabled to allow offloading to clients",'warning'] call blck_fnc_log; }; // Broadcast some code to clients publicVariable "blck_fnc_setNextWaypoint"; @@ -158,6 +153,8 @@ _fn_setupLocationType = { _locations }; +if (isNil "blck_crateMoveAllowed") then {blck_crateMoveAllowed = false}; + private _villages = ["NameVillage"] call _fn_setupLocationType; private _cites = ["NameCity"] call _fn_setupLocationType; private _capitals = ["NameCityCapital"] call _fn_setupLocationType; @@ -169,56 +166,26 @@ blck_townLocations = _villages + _cites + _capitals + _marine + _other + _airpor { blck_locationBlackList pushBack [locationPosition _x, blck_minDistanceFromTowns]; } forEach blck_townLocations; -diag_log format["_init_server: count blck_townLocations = %1 || blck_townLocations = %2",count blck_townLocations, blck_townLocations]; //Start the mission timers if (blck_enableOrangeMissions > 0) then { - //[_missionListOrange,_pathOrange,"OrangeMarker","orange",blck_TMin_Orange,blck_TMax_Orange] spawn blck_fnc_missionTimer;//Starts major mission system (Orange Map Markers) [_missionListOrange,_pathOrange,"OrangeMarker","orange",blck_TMin_Orange,blck_TMax_Orange,blck_enableOrangeMissions] call blck_fnc_addMissionToQue; }; if (blck_enableGreenMissions > 0) then { - //[_missionListGreen,_pathGreen,"GreenMarker","green",blck_TMin_Green,blck_TMax_Green] spawn blck_fnc_missionTimer;//Starts major mission system 2 (Green Map Markers) [_missionListGreen,_pathGreen,"GreenMarker","green",blck_TMin_Green,blck_TMax_Green,blck_enableGreenMissions] call blck_fnc_addMissionToQue; }; if (blck_enableRedMissions > 0) then { - //[_missionListRed,_pathRed,"RedMarker","red",blck_TMin_Red,blck_TMax_Red] spawn blck_fnc_missionTimer;//Starts minor mission system (Red Map Markers)//Starts minor mission system 2 (Red Map Markers) [_missionListRed,_pathRed,"RedMarker","red",blck_TMin_Red,blck_TMax_Red,blck_enableRedMissions] call blck_fnc_addMissionToQue; }; if (blck_enableBlueMissions > 0) then { - //[_missionListBlue,_pathBlue,"BlueMarker","blue",blck_TMin_Blue,blck_TMax_Blue] spawn blck_fnc_missionTimer;//Starts minor mission system (Blue Map Markers) [_missionListBlue,_pathBlue,"BlueMarker","blue",blck_TMin_Blue,blck_TMax_Blue,blck_enableBlueMissions] call blck_fnc_addMissionToQue; }; -#ifdef GRGserver -diag_log "[blckeagls] Running GhostriderGaming Version"; -//diag_log format["[blckeagls] _init_server: blck_enableScoutsMissions = %1",blck_enableScoutsMissions]; -if (blck_enableScoutsMissions > 0) then -{ - //[_missionListScouts,_pathScouts,"ScoutsMarker","red",blck_TMin_Scouts,blck_TMax_Scouts] spawn blck_fnc_missionTimer; - [_missionListScouts,_pathScouts,"ScoutsMarker","red",blck_TMin_Scouts,blck_TMax_Scouts,blck_enableScoutsMissions,false] call blck_fnc_addMissionToQue; -}; -//diag_log format["[blckeagls] _init_server: blck_enableHunterMissions = %1",blck_enableHunterMissions]; -if (blck_enableHunterMissions > 0) then -{ - //[_missionListHunters,_pathHunters,"HunterMarker","green",blck_TMin_Hunter,blck_TMax_Hunter] spawn blck_fnc_missionTimer; - // params["_missionList","_path","_marker","_difficulty","_tMin","_tMax","_noMissions"]; - [_missionListHunters,_pathHunters,"HunterMarker","green",blck_TMin_Hunter,blck_TMax_Hunter,blck_enableHunterMissions,false] call blck_fnc_addMissionToQue; -}; - -// Running new version of Crash sites. -//diag_log format["[blckeagls] _init_server: blck_maxCrashSites = %1",blck_maxCrashSites]; -if (blck_maxCrashSites > 0) then -{ - [] execVM "\q\addons\custom_server\Missions\HeliCrashs\Crashes2.sqf"; -}; -//diag_log "loading DLS System"; -call compile preprocessfilelinenumbers "\q\addons\custom_server\DLS\DLS_init.sqf"; -#endif // Setup a group for AI corpses blck_graveyardGroup = createGroup [blck_AI_Side,false]; @@ -229,40 +196,5 @@ blck_graveyardGroup setVariable ["blck_group",1]; [] spawn blck_fnc_mainThread; blck_pvs_version = blck_versionNumber; publicVariable "blck_pvs_version"; -diag_log format["[blckeagls] version %1 Build %2 Date %4 Loaded in %3 seconds",blck_versionNumber,blck_buildNumber,diag_tickTime - _blck_loadingStartTime,blck_buildDate]; //,blck_modType]; +[format["[blckeagls] version %1 Build %2 Date %4 Loaded in %3 seconds",blck_versionNumber,blck_buildNumber,diag_tickTime - _blck_loadingStartTime,blck_buildDate]] call blck_fnc_log; -/* -if (blck_debugOn || (blck_debugLevel >= 1)) then -{ - private _pos = [] call blck_fnc_findSafePosn; - private _root = ""; - private _path = "Orange"; - private _mission = "officeComplex"; //"bunkerMission"; - private _compiledMission = compilefinal preprocessFileLineNumbers format["\q\addons\custom_server\Missions\%1\%2.sqf",_path,_mission]; - diag_log format["[blckeagls] mission test sequence run for mission path %1 name %2",_path,_mission]; - [_pos,"testMarkerGRG","blue"] spawn _compiledMission; - diag_log format["testmarker mission spawned at %1",diag_tickTime]; - { - diag_log format[" findSafePosn speed tests"; - private _allCoords = []; - private _t1 = diag_tickTime; - for "_i" from 1 to 25 do - { - private _coords = [] call blck_fnc_FindSafePosn; - - }; - diag_log format["blck_init_server: time elapsed for 10000 calls to blck_fnc_findSafePosn = %1",diag_tickTime - _t1]; - _t1 = diag_tickTime; - _allCoords = []; - for "_j" from 1 to 25 do - { - private _coords = [] call blck_fnc_FindSafePosn_2; - }; - diag_log format["blck_init_server: time elapsed for 10000 calls to blck_fnc_findSafePosn_2 = %1",diag_tickTime - _t1]; -}; diff --git a/@GMS/addons/custom_server/init/build.sqf b/@GMS/addons/custom_server/init/build.sqf index 13e3ea5..e3af767 100644 --- a/@GMS/addons/custom_server/init/build.sqf +++ b/@GMS/addons/custom_server/init/build.sqf @@ -1,4 +1,4 @@ -#define blck_buildNumber 205 -#define blck_versionNumber 6.98 -#define blck_buildDate "6-3-20" +#define blck_buildNumber 212 +#define blck_versionNumber 7.00 +#define blck_buildDate "7-29-20" diff --git a/@GMS/addons/custom_server/init/fn_init.sqf b/@GMS/addons/custom_server/init/fn_init.sqf index 6540b7c..9a87671 100644 --- a/@GMS/addons/custom_server/init/fn_init.sqf +++ b/@GMS/addons/custom_server/init/fn_init.sqf @@ -11,12 +11,6 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -/////////////////////////////////////////////// -// prevent the system from being started twice -////////////////////////////////////////////// -if !(isNil "blck_missionSystemRunning") exitWith {}; -blck_missionSystemRunning = true; - ///////////////////////////////////////////// // Run the initialization routinge //////////////////////////////////////////// @@ -31,8 +25,3 @@ if (!isServer && !hasInterface) then [] execVM "\q\addons\custom_server\init\blck_init_HC.sqf"; }; -/* - TODO - Check patrol radius for Air units, Ship units, land vehicle units, and infantry, both static and dynamically spawned. - -*/ From 0789181c6a1d4e9956f5ae806bf7d07d32e04dbf Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Sat, 1 Aug 2020 14:56:22 -0400 Subject: [PATCH 02/25] Build 213 Improvements in how location for missions is found. --- .../Functions/GMS_fnc_findSafePosn.sqf | 41 +-- .../GMS_fnc_monitorInitializedMissions.sqf | 2 + .../custom_server/Missions/Blue/garrison.sqf | 141 ++++++++++ .../Missions/GMS_missionLists.sqf | 8 +- .../Missions/Green/banditVillage.sqf | 112 ++++++++ .../Missions/Green/charlston.sqf | 185 +++++++++++++ .../custom_server/Missions/Green/factory.sqf | 136 ++++++++++ .../Missions/Green/fortification.sqf | 197 ++++++++++++++ .../Missions/Green/munitionsResearch.sqf | 110 ++++++++ .../custom_server/Missions/Orange/bunker.sqf | 147 +++++++++++ .../custom_server/Missions/Orange/dashq.sqf | 248 ++++++++++++++++++ .../Missions/Orange/tko_camp.sqf | 201 ++++++++++++++ .../custom_server/Missions/Red/carThieves.sqf | 74 ++++++ .../custom_server/init/GMS_fnc_findWorld.sqf | 4 +- @GMS/addons/custom_server/init/build.sqf | 4 +- 15 files changed, 1587 insertions(+), 23 deletions(-) create mode 100644 @GMS/addons/custom_server/Missions/Blue/garrison.sqf create mode 100644 @GMS/addons/custom_server/Missions/Green/banditVillage.sqf create mode 100644 @GMS/addons/custom_server/Missions/Green/charlston.sqf create mode 100644 @GMS/addons/custom_server/Missions/Green/factory.sqf create mode 100644 @GMS/addons/custom_server/Missions/Green/fortification.sqf create mode 100644 @GMS/addons/custom_server/Missions/Green/munitionsResearch.sqf create mode 100644 @GMS/addons/custom_server/Missions/Orange/bunker.sqf create mode 100644 @GMS/addons/custom_server/Missions/Orange/dashq.sqf create mode 100644 @GMS/addons/custom_server/Missions/Orange/tko_camp.sqf create mode 100644 @GMS/addons/custom_server/Missions/Red/carThieves.sqf diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf index 19dd853..5af818f 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf @@ -47,7 +47,7 @@ _fn_buildBlacklistedLocationsList = { { _blacklistedLocs append ([] call blck_fnc_getAllDMSMarkers); }; - //diag_log format["_blacklistedLocs = %1",_blacklistedLocs]; + _blacklistedLocs }; @@ -58,36 +58,47 @@ private _mindistToMissions = blck_MinDistanceFromMission; private _minToRecentMissionLocation = 200; private _coords = []; private _blacklistedLocations = [_minDistToBases,_minDistToPlayers,_minDistToTowns,_mindistToMissions,_minToRecentMissionLocation] call _fn_buildBlacklistedLocationsList; -//diag_log format["_blacklistedLocations = %1",_blacklistedLocations]; private _count = 25; -while {_coords isEqualTo [] && _count > 0} do +private "_isFlatCoords"; +private _slope = 0.10; + +_coords = [blck_mapCenter,0,blck_mapRange,10,0,_slope,0,_blacklistedLocations] call BIS_fnc_findSafePos; +if !(_coords isEqualTo []) then { - /* - 6-13-20 - Notes - increased min distance to objects from 3 to 10 - decreased max slope from 5 to 0.5 - */ + _isFlatCoords = _coords isFlatEmpty [10,0,_slope,30,0,false]; +}; - _coords = [blck_mapCenter,0,blck_mapRange,10,0,0.5,0,_blacklistedLocations] call BIS_fnc_findSafePos; +while { (_isFlatCoords isEqualTo [] || _coords isEqualTo []) && _count > 0} do +{ + _coords = [blck_mapCenter,0,blck_mapRange,10,0,_slope,0,_blacklistedLocations] call BIS_fnc_findSafePos; /* Check whether the location is flat enough: returns [] if not. */ - private _isFlat = _coords isFlatEmpty [20,0,0.5,100,0,false]; - if (_coords isEqualTo [] || !(_isFlat isEqualTo [])) then + // position isFlatEmpty [minDistance, mode, maxGradient, maxGradientRadius, overLandOrWater, shoreLine, ignoreObject] + + if !(_coords isEqualTo []) then + { + _isFlatCoords = _coords isFlatEmpty [10,0,_slope,30,0,false]; + }; + + if (_coords isEqualTo [] || !(_isFlatCoords isEqualTo [])) then { { //private _range = (_x select 1) * 0.7; _x set[1,(_x select 1) * 0.75]; } forEach _blackListedLocations; _count = _count - 1; + _slope = _slope + 0.02; + uiSleep 0.1; }; }; -if (_coords isEqualTo []) then +if (_coords isEqualTo [] || _isFlatCoords isEqualTo []) then { diag_log format["[blckeagls] Could not find a safe position for a mission, consider reducing values for minimum distances between missions and players, bases, other missions or towns"]; +} else { + _isFlatCoords set[2, 0]; }; -_coords - + +_isFlatCoords diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_monitorInitializedMissions.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_monitorInitializedMissions.sqf index 4c6f35d..a6a5aeb 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_monitorInitializedMissions.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_monitorInitializedMissions.sqf @@ -306,6 +306,7 @@ _missionParameters params[ // Everything spawned withouth serous errors so lets keep the mission active for future monitoring blck_activeMissionsList pushBack _el; + if (blck_debugOn) then {[format["Spawned Mission %1 | description %2 | difficulty %3 at %4",_markerName, _markerMissionName, _difficulty, diag_tickTime]] call blck_fnc_log;} } catch @@ -477,6 +478,7 @@ _missionParameters params[ _waitTime = diag_tickTime + _tMin + random(_tMax - _tMin); _missionCategoryDescriptors set [noActive,_noActive - 1]; _missionCategoryDescriptors set [waitTime,_waitTime]; + if (blck_debugOn) then {[format["Ended Mission %1 | description %2 | difficulty %3 at %4",_markerName, _markerMissionName, _difficulty, diag_tickTime]] call blck_fnc_log;} }; case 2: { // Abort, crate moved. _endMsg = "Crate Removed from Mission Site Before Mission Completion: Mission Aborted"; diff --git a/@GMS/addons/custom_server/Missions/Blue/garrison.sqf b/@GMS/addons/custom_server/Missions/Blue/garrison.sqf new file mode 100644 index 0000000..191984a --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Blue/garrison.sqf @@ -0,0 +1,141 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Green Mission with template = default"; +_crateLoot = blck_BoxLoot_Green; +_lootCounts = blck_lootCountsGreen; +_startMsg = "An enemy garrison!"; +_endMsg = "The garrison is under survivor control!"; +_markerLabel = ""; +_markerType = ["ellipse",[225,225],"GRID"]; +_markerColor = "ColorBlue"; +_markerMissionName = "Garrison"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + + + + +_garrisonedBuildings_BuildingPosnSystem = [ + ["Land_Unfinished_Building_02_F",[-28.137,-48.6494,-0.00268841],0,true,true,0.67,3,[],4], + ["Land_i_Shop_02_V2_F",[22.688,35.2515,-0.00268841],0,true,true,0.67,3,[],4] +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Unfinished_Building_02_F",[-28.3966,34.8145,-0.00268841],0,true,true,[["B_HMG_01_high_F",[-5.76953,1.16504,7.21168],360]],[]], + ["Land_Unfinished_Building_02_F",[20.1816,-44.2554,-0.00268841],0,true,true,[],[[[4.68567,3.59082,0.257384],0],[[-5.20032,5.66797,3.96986],0]]] +]; + +_missionLandscape = [ + ["Land_i_House_Big_02_V3_F",[-64.5577,-100.259,-0.00268841],0,true,true], + ["Land_u_House_Big_01_V1_F",[-65.2944,63.9878,-0.00268841],0,true,true], + ["Sign_Sphere100cm_F",[-25.4528,-44.6294,0.614402],0,true,true], + ["Sign_Arrow_Direction_Green_F",[24.8673,-40.6646,0.254696],0,true,true], + ["Sign_Arrow_Direction_Green_F",[14.9813,-38.5874,3.96717],0,true,true], + ["Sign_Arrow_F",[10.937,-14.8413,1.03384],0,true,true], + ["Sign_Sphere100cm_F",[18.4126,35.3154,0.499284],0,true,true], + ["Land_i_House_Big_02_V1_F",[53.7161,-101.875,-0.00268841],0,true,true], + ["Land_i_House_Big_02_V2_F",[52.6943,66.0278,-0.00268841],0,true,true] +]; + +_missionLootBoxes = [ + ["Box_IND_AmmoOrd_F",[-25.7473,-46.3496,3.72631],_crateLoot,_lootCounts,359.995], + ["Box_NATO_Ammo_F",[-31.2815,14.4961,-0.00268984],_crateLoot,_lootCounts,359.995], + ["Box_AAF_Equip_F",[-2.56213,-16.4194,-0.00268888],_crateLoot,_lootCounts,359.999], + ["Box_IND_AmmoOrd_F",[3.29309,-24.7749,-0.00268984],_crateLoot,_lootCounts,359.995], + ["Box_NATO_Wps_F",[18.3497,-0.543945,-0.00268888],_crateLoot,_lootCounts,360] +]; + +_missionLootVehicles = [ + ["B_G_Van_01_transport_F",[10.937,-14.8413,1.03384],_crateLoot,_lootCounts,0] +]; + +_missionPatrolVehicles = [ + ["B_LSV_01_armed_F",[-1.72729,-70.439,-0.0251398],0.00168032], + ["B_MRAP_01_gmg_F",[-3.96387,50.4224,-0.0167227],0.000187991] + //["B_G_Van_01_transport_F",[11.2661,-13.9561,0.0110526],359.998] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ + ["B_Heli_Light_01_dynamicLoadout_F",[-52.1934,-2.21631,0.00351906],0.0012961] +]; + +_missionEmplacedWeapons = [ + ["B_HMG_01_high_F",[-34.1661,35.9795,7.20899],360], + ["B_GMG_01_high_F",[43.4441,-24.4961,-0.0144982],360] +]; + +_missionGroups = [ + [[-31.2625,5.21875,-0.00124931],3,6,"Red",30,45], + [[-46.3765,18.731,-0.00124931],3,6,"Red",30,45], + [[-21.8778,18.8506,-0.00124931],3,6,"Red",30,45], + [[-3.32458,-42.5176,-0.00124931],3,6,"Red",30,45], + [[-2.06714,36.3027,-0.00124931],3,6,"Red",30,45], + [[29.3705,-18.0239,-0.00124931],3,6,"Red",30,45] +]; + +_scubaGroupParameters = [ +]; +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Green; +_maxNoAI = blck_MaxAI_Green; +_noAIGroups = blck_AIGrps_Green; +_noVehiclePatrols = blck_SpawnVeh_Green; +_noEmplacedWeapons = blck_SpawnEmplaced_Green; +_minNoAI = blck_MinAI_Blue; // Setting this in the mission file overrides the defaults such as blck_MinAI_Blue +_maxNoAI = blck_MaxAI_Blue; // Setting this in the mission file overrides the defaults +_noAIGroups = blck_AIGrps_Blue; // Setting this in the mission file overrides the defaults +_noVehiclePatrols = blck_SpawnVeh_Blue; // Setting this in the mission file overrides the defaults +_noEmplacedWeapons = blck_SpawnEmplaced_Blue; // Setting this in the mission file overrides the defaults +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; // Setting this in the mission file overrides the defaults +_uniforms = blck_SkinList; // Setting this in the mission file overrides the defaults +_headgear = blck_headgear; // Setting this in the mission file overrides the defaults +_vests = blck_vests; +_backpacks = blck_backpacks; +_weaponList = ["blue"] call blck_fnc_selectAILoadout; +_sideArms = blck_Pistols; +_chanceHeliPatrol = blck_chanceHeliPatrolBlue; // Setting this in the mission file overrides the defaults +_noChoppers = blck_noPatrolHelisBlue; +_missionHelis = blck_patrolHelisBlue; + +_chancePara = blck_chanceParaBlue; // Setting this in the mission file overrides the defaults +_noPara = blck_noParaBlue; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. +_chanceLoot = 0.0; +_paraLoot = blck_BoxLoot_Blue; +_paraLootCounts = blck_lootCountsRed; // Throw in something more exotic than found at a normal blue mission. + +_spawnCratesTiming = blck_spawnCratesTiming; // Choices: "atMissionSpawnGround","atMissionEndGround","atMissionEndAir". + // Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute. + // This sets the default value but can be overridden by defining _spawnCrateTiming in the file defining a particular mission. +_loadCratesTiming = blck_loadCratesTiming; // valid choices are "atMissionCompletion" and "atMissionSpawn"; + // Pertains only to crates spawned at mission spawn. + // This sets the default but can be overridden for specific missions by defining _loadCratesTiming + + // Examples: + // To spawn crates at mission start loaded with gear set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionSpawn" + // To spawn crates at mission start but load gear only after the mission is completed set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionCompletion" + // To spawn crates on the ground at mission completion set blck_spawnCratesTiming = "atMissionEndGround" // Note that a loaded crate will be spawned. + // To spawn crates in the air and drop them by chutes set blck_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned. +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" + // Setting this in the mission file overrides the defaults +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/GMS_missionLists.sqf b/@GMS/addons/custom_server/Missions/GMS_missionLists.sqf index e90786b..12e6090 100644 --- a/@GMS/addons/custom_server/Missions/GMS_missionLists.sqf +++ b/@GMS/addons/custom_server/Missions/GMS_missionLists.sqf @@ -14,13 +14,13 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; private _pathBlue = "Blue"; -private _missionListBlue = ["default","hostage1","captive1","medicalCamp","redCamp","resupplyCamp"]; +private _missionListBlue = ["default","hostage1","captive1","medicalCamp","redCamp","resupplyCamp","garrison"]; private _pathRed = "Red"; -private _missionListRed = ["default","redCamp","medicalCamp","resupplyCamp"]; +private _missionListRed = ["default","redCamp","medicalCamp","resupplyCamp","carThieves"]; private _pathGreen = "Green"; -private _missionListGreen = ["default","medicalCamp","redCamp","resupplyCamp"]; +private _missionListGreen = ["default","medicalCamp","redCamp","resupplyCamp","banditVillage","charlston","factory","fortification","munitionsResearch"]; private _pathOrange = "Orange"; -private _missionListOrange = ["default","medicalCamp","redCamp","resupplyCamp"]; +private _missionListOrange = ["default","medicalCamp","redCamp","resupplyCamp","bunker","dashq","tko_camp"]; diff --git a/@GMS/addons/custom_server/Missions/Green/banditVillage.sqf b/@GMS/addons/custom_server/Missions/Green/banditVillage.sqf new file mode 100644 index 0000000..a4b8533 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Green/banditVillage.sqf @@ -0,0 +1,112 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Green Mission with template = default"; +_crateLoot = blck_BoxLoot_Green; +_lootCounts = blck_lootCountsGreen; +_startMsg = "An enemy village was sighted in a nearby sector! Check the Green marker on your map for the location!"; +_endMsg = "The Sector at the Green Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ellipse",[225,225],"GRID"]; +_markerColor = "ColorGreen"; +_markerMissionName = "Village"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + + +_garrisonedBuildings_BuildingPosnSystem = [ + ["Land_Unfinished_Building_02_F",[-28.137,-48.6494,0],0,true,true,0.67,3,[],4], + ["Land_i_Shop_02_V2_F",[22.688,35.2515,0],0,true,true,0.67,3,[],4] +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Unfinished_Building_02_F",[-28.3966,34.8145,0],0,true,true,[["B_HMG_01_high_F",[-5.76953,1.16504,7.2248],0]],[]], + ["Land_Unfinished_Building_02_F",[20.1816,-44.2554,0],0,true,true,[],[[[4.68567,3.59082,0.257384],0],[[-5.20032,5.66797,3.96986],0]]] +]; + +_missionLandscape = [ + ["Land_i_House_Big_02_V3_F",[-64.5577,-100.259,0],0,true,true], + ["Land_u_House_Big_01_V1_F",[-65.2944,63.9878,0],0,true,true], + // ["Sign_Sphere100cm_F",[-25.4528,-44.6294,0.617091],0,true,true], + // ["Sign_Arrow_Direction_Green_F",[24.8673,-40.6646,0.257384],0,true,true], + // ["Sign_Arrow_Direction_Green_F",[14.9813,-38.5874,3.96986],0,true,true], + //["Sign_Arrow_F",[10.937,-14.8413,1.03653],0,true,true], + // ["Sign_Sphere100cm_F",[18.4126,35.3154,0.501973],0,true,true], + ["Land_i_House_Big_02_V1_F",[53.7161,-101.875,0],0,true,true], + ["Land_i_House_Big_02_V2_F",[52.6943,66.0278,0],0,true,true] +]; + +_missionLootBoxes = [ + selectRandom[ + ["Box_IND_AmmoOrd_F",[-25.7473,-46.3496,3.73],_crateLoot,_lootCounts,0], + ["Box_NATO_Ammo_F",[-31.2815,14.4961,0],_crateLoot,_lootCounts,0], + ["Box_AAF_Equip_F",[-2.56213,-16.4194,0],_crateLoot,_lootCounts,0], + ["Box_IND_AmmoOrd_F",[3.29309,-24.7749,0],_crateLoot,_lootCounts,0], + ["Box_NATO_Wps_F",[18.3497,-0.543945,0],_crateLoot,_lootCounts,0] + ] +]; + +_missionLootVehicles = [ + // ["",[10.937,-14.8413,1.03653],_crateLoot,_lootCounts,0] +]; + +_missionPatrolVehicles = [ + //["B_LSV_01_armed_F",[-1.72583,-70.4502,0],0], + //["B_MRAP_01_gmg_F",[-3.95642,50.4224,-9.53674e-007],0], + // ["B_G_Van_01_transport_F",[11.2654,-13.9736,-0.000131607],0] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ + ["B_Heli_Light_01_dynamicLoadout_F",[-52.1934,-2.21387,0],0] +]; + +_missionEmplacedWeapons = [ + ["B_HMG_01_high_F",[-34.1661,35.9795,7.2248],0], + ["B_GMG_01_high_F",[43.4441,-24.4961,0],0] +]; + +_missionGroups = [ + [[-31.2625,5.21875,0.00143909],3,6,"Green",30,45], + [[-3.32458,-42.5176,0.00143909],3,6,"Green",30,45], + [[-7.85986,-2.72217,0.00143909],3,6,"Green",30,45], + [[-2.06714,36.3027,0.00143909],3,6,"Green",30,45], + [[29.3705,-18.0239,0.00143909],3,6,"Green",30,45] +]; + +_scubaGroupParameters = [ +]; + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Green; +_maxNoAI = blck_MaxAI_Green; +_noAIGroups = blck_AIGrps_Green; +_noVehiclePatrols = blck_SpawnVeh_Green; +_noEmplacedWeapons = blck_SpawnEmplaced_Green; +_uniforms = blck_SkinList; +_headgear = blck_headgear; +_chanceLoot = 0.6; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,8,8,0],[0,0,0,8,8,0],[8,8,0,0,0,0],[0,0,0,0,12,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. +//_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/charlston.sqf b/@GMS/addons/custom_server/Missions/Green/charlston.sqf new file mode 100644 index 0000000..844ca31 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Green/charlston.sqf @@ -0,0 +1,185 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +_crateLoot = blck_BoxLoot_Red; +_lootCounts = blck_lootCountsRed; +_startMsg = "Camp Charlston is being built by the enemy in a nearby sector."; +_endMsg = "Camp Charleston is under survivor control!"; +_markerLabel = ""; +_markerType = ["ellipse",[200,200],"GRID"]; +_markerColor = "ColorRed"; +_markerMissionName = "Camp Charleston"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = []; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_Patrol_V1_F",[4.47693,-36.1753,-0.00143862],0,true,true,[["B_HMG_01_high_F",[1.09753,-0.78125,4.33092],182.337],["B_HMG_01_high_F",[-8.18188,3.96289,-0.0121179],270.389],["B_HMG_01_high_F",[11.7308,-7.875,-0.0121193],181.165]],[]], + ["Land_Cargo_Tower_V1_F",[6.56189,-19.98,-0.00143909],180,true,true,[["B_HMG_01_high_F",[12.7545,4.6084,-0.0121183],225.183],["B_HMG_01_high_F",[-4.78821,0.935547,17.8764],270.571],["B_HMG_01_high_F",[3.17285,4.91357,17.7788],0.00164279]],[]], + ["Land_Cargo_HQ_V1_F",[2.97693,0.074707,-0.00143862],180,true,true,[["B_HMG_01_high_F",[-5.3407,0.772461,3.1134],181.165]],[]], + ["Land_Cargo_Patrol_V1_F",[41.4769,-36.1753,-0.00143862],0,true,true,[["B_HMG_01_high_F",[1.27466,-0.849121,4.33092],181.165],["B_HMG_01_high_F",[-7.82532,-8.49463,-0.0121193],181.165]],[]] +]; + +_missionLandscape = [ + ["Land_CncWall4_F",[-8.77258,1.07471,-0.00143909],90,true,true], + ["Land_CncWall4_F",[-8.77258,-4.17529,-0.00143909],90,true,true], + ["Land_CncWall4_F",[-8.77258,6.32471,-0.00143909],90,true,true], + ["Land_CncWall4_F",[-6.52258,8.57471,-0.00143909],180,true,true], + ["Land_CncWall1_F",[-8.77258,-7.42529,-0.00143909],90,true,true], + ["Land_CncWall1_F",[-8.52258,-8.67529,-0.00143909],60,true,true], + ["Land_New_WiredFence_10m_F",[-9.77258,-4.92529,-0.00143909],90,true,true], + ["Land_New_WiredFence_10m_F",[-9.77258,5.07471,-0.00143909],90,true,true], + ["Land_LampShabby_F",[19.8737,-40.29,-0.00143909],149.832,true,true], + ["Land_BagFence_Round_F",[-4.80505,-33.3926,-0.00143909],45.9826,true,true], + ["Land_BagFence_Round_F",[14.8495,-44.9292,-0.00143909],45,true,true], + ["Land_BagFence_Round_F",[-4.76855,-31.2666,-0.00143909],135.983,true,true], + ["Land_BagFence_Round_F",[14.599,-41.1792,-0.00143909],120,true,true], + ["Land_BagFence_Long_F",[11.2294,-22.6245,-0.00143909],180,true,true], + ["Land_BagFence_Long_F",[12.6,-24.3042,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[11.224,-25.6792,-0.00143909],180,true,true], + ["Land_BagFence_Long_F",[-2.69324,-34.1782,-0.00143909],180.983,true,true], + ["Land_BagFence_Long_F",[17.1,-45.6792,-0.00143909],180,true,true], + ["Land_BagFence_Long_F",[18.4745,-44.1792,-0.00143909],90,true,true], + ["Land_CncBarrier_F",[19.975,-35.6792,-0.00143909],270,true,true], + ["Land_PortableLight_double_F",[7.0155,-26.8413,-0.00143909],270,true,true], + ["Land_CncWall4_F",[4.47742,-22.6753,-0.00143909],90,true,true], + ["Land_CncWall4_F",[1.22742,-35.1753,-0.00143909],90,true,true], + ["Land_CncWall4_F",[3.47742,-37.4253,-0.00143909],0,true,true], + ["Land_CncWall1_F",[1.47742,-31.9253,-0.00143909],105,true,true], + ["Land_CncWall1_F",[7.97742,-36.6753,-0.00143909],330,true,true], + ["Land_CncWall1_F",[6.72742,-37.1753,-0.00143909],345,true,true], + ["Land_CncWall1_F",[5.31714,-26.9092,-0.00143909],75,true,true], + ["Land_CncWall1_F",[4.80066,-25.6685,-0.00143909],60,true,true], + ["Land_BagFence_End_F",[15.9755,-40.3042,-0.00143909],0,true,true], + ["Land_BagFence_End_F",[-1.75403,-30.4434,-0.00143909],330.983,true,true], + ["Land_BagFence_End_F",[18.8319,-42.6753,-0.00143909],330,true,true], + ["Land_BagFence_End_F",[-0.797119,-32.9614,-0.00143909],300.983,true,true], + ["Land_New_WiredFence_10m_F",[4.97937,-39.5308,-0.00143909],0,true,true], + ["Land_New_WiredFence_10m_F",[14.7274,-39.4253,-0.00143909],0,true,true], + ["Land_New_WiredFence_10m_F",[0.272339,-34.5835,-0.00143909],90,true,true], + ["Land_BagFence_Corner_F",[-1.31201,-33.8271,-0.00143909],90.9826,true,true], + ["Land_BarGate_F",[24.7274,-41.9253,-0.00143909],0,true,true], + ["Land_Mil_WiredFence_Gate_F",[24.7274,-39.6675,-0.00143909],0,true,true], + ["Land_New_WiredFence_10m_Dam_F",[0.227417,-24.6753,-0.00143909],90,true,true], + ["Land_BagFence_Short_F",[-2.88318,-30.6743,-0.00143909],180.983,true,true], + ["Land_BagFence_Short_F",[14.224,-43.0542,-0.00143909],270,true,true], + ["Land_Mil_WallBig_4m_F",[25.6038,-18.8174,-0.00143909],270,true,true], + ["Land_BagFence_Round_F",[18.3368,-16.3926,-0.00143909],45,true,true], + ["Land_BagFence_Long_F",[11.349,-18.1792,-0.00143909],180,true,true], + ["Land_BagFence_Long_F",[12.7245,-16.8042,-0.00143909],90,true,true], + ["Land_BagFence_Long_F",[11.349,-15.4312,-0.00143909],180,true,true], + ["Land_BagFence_Long_F",[20.8373,-17.0176,-0.00143909],0,true,true], + ["Land_CncWall4_F",[-0.272583,-9.17529,-0.00143909],0,true,true], + ["Land_CncWall4_F",[-5.64758,-9.17529,-0.00143909],0,true,true], + ["Land_CncWall4_F",[5.10242,-9.17529,-0.00143909],0,true,true], + ["Land_CncWall4_F",[3.97742,8.57471,-0.00143909],180,true,true], + ["Land_CncWall4_F",[4.47742,-17.4253,-0.00143909],90,true,true], + ["Land_CncWall4_F",[8.72742,7.19971,-0.00143909],210,true,true], + ["Land_CncWall4_F",[-1.27258,8.57471,-0.00143909],180,true,true], + ["Land_CncWall4_F",[4.48242,-12.2109,-0.00143909],90,true,true], + ["Land_CncWall4_F",[12.7274,-3.80029,-0.00143909],270,true,true], + ["Land_CncWall4_F",[12.7274,1.44971,-0.00143909],270,true,true], + ["Land_CncWall1_F",[11.6024,-7.92529,-0.00143909],315,true,true], + ["Land_CncWall1_F",[11.6024,5.44971,-0.00143909],210,true,true], + ["Land_CncWall1_F",[12.4774,4.57471,-0.00143909],240,true,true], + ["Land_CncWall1_F",[10.6024,-8.55029,-0.00143909],345,true,true], + ["Land_CncWall1_F",[12.3524,-6.92529,-0.00143909],300,true,true], + ["Land_New_WiredFence_10m_F",[14.9774,9.57471,-0.00143909],180,true,true], + ["Land_New_WiredFence_10m_F",[4.97742,9.57471,-0.00143909],180,true,true], + ["Land_New_WiredFence_10m_F",[-5.27258,-9.42529,-0.00143909],0,true,true], + ["Land_New_WiredFence_10m_F",[-5.02258,9.57471,-0.00143909],180,true,true], + ["Land_New_WiredFence_10m_F",[0.227417,-14.6753,-0.00143909],90,true,true], + ["Land_CncShelter_F",[8.84314,-9.19678,-0.00143909],0,true,true], + ["Land_New_WiredFence_10m_Dam_F",[24.9774,-0.050293,-0.00143909],180,true,true], + ["Land_New_WiredFence_10m_Dam_F",[19.7274,5.07471,-0.00143909],270,true,true], + ["Land_BagFence_Short_F",[17.7123,-14.3945,-0.00143909],90,true,true], + ["Land_Mil_WallBig_4m_F",[23.4019,-2.35938,-0.00143909],0,true,true], + ["Land_Mil_WallBig_4m_F",[17.7269,-11.4253,-0.00143909],270,true,true], + ["Land_Mil_WallBig_4m_F",[19.2269,-6.17529,-0.00143909],0,true,true], + ["Land_Mil_WallBig_4m_F",[20.0457,-13.5703,-0.00143909],180,true,true], + ["Land_Mil_WallBig_4m_F",[21.1479,-4.53125,-0.00143909],270,true,true], + ["Land_LampShabby_F",[29.5619,-40.2676,-0.00143909],210,true,true], + ["Land_LampShabby_F",[40.4146,-21.3286,-0.00143909],326.67,true,true], + ["Land_BagFence_Round_F",[34.9688,-45.8774,-0.00143909],315,true,true], + ["Land_BagFence_Round_F",[32.8423,-45.8774,-0.00143909],45,true,true], + ["Land_BagFence_Long_F",[35.7183,-43.7524,-0.00143909],90,true,true], + ["Land_CncBarrier_F",[29.725,-35.5542,-0.00143909],270,true,true], + ["Land_CncWall4_F",[41.7274,-38.6753,-0.00143909],0,true,true], + ["Land_CncWall4_F",[43.9774,-36.4253,-0.00143909],270,true,true], + ["Land_CncWall1_F",[38.4774,-38.4253,-0.00143909],15,true,true], + ["Land_CncWall1_F",[37.2401,-37.894,-0.00143909],30,true,true], + ["Land_CncWall1_F",[43.7274,-33.1753,-0.00143909],255,true,true], + ["Land_BagFence_End_F",[34.4688,-41.8774,-0.00143909],210,true,true], + ["Land_BagFence_End_F",[31.9678,-42.8774,-0.00143909],240,true,true], + ["Land_New_WiredFence_10m_F",[44.515,-24.8999,-0.00143909],270,true,true], + ["Land_New_WiredFence_10m_F",[34.7274,-39.1753,-0.00143909],0,true,true], + ["Land_New_WiredFence_10m_F",[44.515,-34.6499,-0.00143909],270,true,true], + ["Land_BagFence_Corner_F",[35.3433,-42.3774,-0.00143909],0,true,true], + ["Land_New_WiredFence_5m_F",[42.2655,-39.1499,-0.00143909],0,true,true], + ["Land_BagFence_Short_F",[32.2178,-44.0024,-0.00143909],90,true,true], + ["Land_Mil_WallBig_4m_F",[39.1169,-22.2583,-0.00143909],180,true,true], + ["Land_Mil_WallBig_4m_F",[31.9081,-20.9619,-0.00143909],180,true,true], + ["Land_Mil_WallBig_4m_F",[41.4412,-20.3794,-0.00143909],90,true,true], + ["Land_Mil_WallBig_4m_F",[27.9435,-20.9658,-0.00143909],180,true,true], + ["Land_Cargo_HQ_V1_F",[33.7463,-12.4639,-0.00143862],271.492,true,true], + ["Land_New_WiredFence_10m_F",[44.4774,-4.92529,-0.00143909],270,true,true], + ["Land_New_WiredFence_10m_F",[44.4774,-14.9253,-0.00143909],270,true,true], + ["Land_New_WiredFence_10m_F",[34.9774,-0.175293,-0.00143909],180,true,true], + ["Land_New_WiredFence_5m_F",[42.4774,-0.175293,-0.00143909],180,true,true], + ["Land_Mil_WallBig_4m_F",[31.3369,-2.34375,-0.00143909],0,true,true], + ["Land_Mil_WallBig_4m_F",[41.4467,-8.47168,-0.00143909],90,true,true], + ["Land_Mil_WallBig_4m_F",[41.4458,-12.4146,-0.00143909],90,true,true], + ["Land_Mil_WallBig_4m_F",[41.4386,-16.4019,-0.00143909],90,true,true], + ["Land_Mil_WallBig_4m_F",[35.2737,-2.33789,-0.00143909],0,true,true], + ["Land_Mil_WallBig_4m_F",[41.4539,-4.48438,-0.00143909],90,true,true], + ["Land_Mil_WallBig_4m_F",[39.1295,-2.32617,-0.00143909],0,true,true], + ["Land_Mil_WallBig_4m_F",[27.3386,-2.35352,-0.00143909],0,true,true] +]; + +_missionLootBoxes = []; + +_missionLootVehicles = []; + +_missionPatrolVehicles = [ + // ["B_G_Offroad_01_armed_F",[21.4174,19.0781,0.00804281],90.3115], + // ["B_G_Offroad_01_armed_F",[27.5131,-53.1431,0.00819397],268.528] +]; + +_missionLootBoxes = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. +_missionLootVehicles = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. +_missionEmplacedWeapons = []; +_missionGroups = []; + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Red; +_maxNoAI = blck_MaxAI_Red; +_noAIGroups = blck_AIGrps_Red; +_noVehiclePatrols = blck_SpawnVeh_Red; +_noEmplacedWeapons = blck_SpawnEmplaced_Red; +_uniforms = blck_SkinList; +_headgear = blck_headgear; +_chanceLoot = 0.6; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,8,8,0],[0,0,0,8,8,0],[8,8,0,0,0,0],[0,0,0,0,12,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. +//_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/factory.sqf b/@GMS/addons/custom_server/Missions/Green/factory.sqf new file mode 100644 index 0000000..9d5f2c7 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Green/factory.sqf @@ -0,0 +1,136 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepaGreen for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Green Mission with template = default"; +_crateLoot = blck_BoxLoot_Green; +_lootCounts = blck_lootCountsGreen; +_startMsg = "An Ammunition Factory was sighted in a nearby sector! Check the Green marker on your map for the location!"; +_endMsg = "The Factory at the Green Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[300,300],"Solid"]; +_markerColor = "ColorGreen"; +_markerMissionName = "Factory"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_Tower_V3_F",[-18.6987,-51.7905,-0.0014348],91.6296,true,true,[["B_HMG_01_high_F",[3.31396,2.89209,8.57585],359.999],["B_HMG_01_high_F",[13.0347,0.8479,-0.0121226],360],["B_HMG_01_high_F",[-9.4834,13.5967,-0.0121226],0.00158913],["B_HMG_01_high_F",[-0.601074,3.90967,17.8764],359.999],["B_HMG_01_high_F",[-0.877441,-4.83179,17.8764],359.999],["B_HMG_01_high_F",[-9.77783,29.3799,-0.0121226],360]],[]], + ["Land_Cargo_Patrol_V3_F",[-27.1675,-15.407,-0.00143814],91.6296,true,true,[["B_HMG_01_high_F",[-1.15381,1.24658,4.33092],275.276]],[]], + ["Land_Cargo_Patrol_V3_F",[-10.7632,4.77441,-0.00143814],181.63,true,true,[["B_HMG_01_high_F",[-1.32959,1.03662,4.33092],359.999]],[]], + ["Land_Cargo_Patrol_V3_F",[12.9375,3.5835,-0.00143814],181.63,true,true,[["B_HMG_01_high_F",[1.57861,1.04736,4.33093],357.402],["B_HMG_01_high_F",[8.41357,-9.20557,-0.0121202],0.0033673]],[]] +]; + +_missionLandscape = [ + //["babe_helper",[-4335.99,-3525.64,-0.00143862],0,true,true], + //["Sign_Arrow_Green_F",[-4333.49,-3526.14,-0.00143862],0,true,true], + //["Sign_Arrow_F",[-4333.49,-3526.14,-0.00143862],0,true,true], + //["Sign_Arrow_Yellow_F",[-4333.49,-3526.14,-0.00143862],0,true,true], + ["Land_BagFence_Long_F",[-29.7012,-38.5171,-0.00143862],91.6296,true,true], + ["Land_BagFence_Long_F",[-27.5103,-40.5801,-0.00143862],181.63,true,true], + ["Land_HBarrier_Big_F",[-22.1475,-58.7117,-0.00143862],181.63,true,true], + ["Land_HBarrier_Big_F",[-25.2705,-45.3574,-0.00143862],91.6296,true,true], + ["Land_HBarrier_Big_F",[-25.3784,-53.6096,-0.00143862],91.6296,true,true], + ["Land_BagFence_Corner_F",[-29.377,-40.2764,-0.00143862],181.63,true,true], + ["Land_BagFence_Corner_F",[-25.5186,-40.8857,-0.00143862],1.62962,true,true], + ["Land_BagFence_Long_F",[-27.6362,-36.2009,-0.00143862],1.62962,true,true], + ["Land_HBarrier_Big_F",[-31.3271,-12.1621,-0.00143862],91.6296,true,true], + ["Land_HBarrier_Big_F",[-26.2822,-19.4336,-0.00143862],181.63,true,true], + ["Land_HBarrier_Big_F",[-31.4404,-20.5371,-0.00143862],91.6296,true,true], + ["Land_BagFence_Corner_F",[-29.3945,-36.5234,-0.00143862],271.63,true,true], + ["CamoNet_OPFOR_F",[-25.6099,-22.126,-0.00143862],1.62962,true,true], + ["CamoNet_OPFOR_big_F",[-23.2964,2.06958,-0.00143862],1.62962,true,true], + ["Land_HBarrier_Big_F",[-31.3423,-3.90796,-0.00143862],91.6296,true,true], + ["Land_HBarrier_Big_F",[-27.8384,9.37231,-0.00143862],181.63,true,true], + ["Land_HBarrier_Big_F",[-31.2295,4.46704,-0.00143862],91.6296,true,true], + ["Land_HBarrier_Big_F",[-19.4634,9.25928,-0.00143862],181.63,true,true], + ["Land_BagFence_Round_F",[-3.56348,-51.6428,-0.00143862],316.63,true,true], + ["Land_BagFence_Long_F",[-6.08105,-52.1965,-0.00143862],181.63,true,true], + ["Land_HBarrier_Big_F",[11.7363,-54.9075,-0.00143862],181.63,true,true], + ["Land_HBarrier_Big_F",[3.36133,-54.7944,-0.00143862],181.63,true,true], + ["Land_HBarrier_Big_F",[-8.54834,-55.4766,-0.00143862],91.6296,true,true], + ["Land_HBarrier_Big_F",[-13.6416,-58.7065,-0.00143862],181.63,true,true], + ["Land_dp_mainFactory_F",[7.44922,-29.397,-0.00143862],1.62962,true,true], + ["Land_HBarrier_Big_F",[-6.04248,6.25171,-0.00143862],271.63,true,true], + ["Land_HBarrier_Big_F",[11.5215,8.25244,-0.00143862],181.63,true,true], + ["Land_HBarrier_Big_F",[-11.2095,9.27417,-0.00143862],181.63,true,true], + ["Land_HBarrier_Big_F",[8.12988,3.34741,-0.00143862],91.6296,true,true], + ["Land_HBarrier_Big_F",[19.9902,-54.8926,-0.00143862],181.63,true,true], + ["Land_HBarrier_Big_F",[32.8569,-43.4072,-0.00143862],271.63,true,true], + ["Land_HBarrier_Big_F",[28.146,-54.7991,-0.00143862],181.63,true,true], + ["Land_HBarrier_Big_F",[32.873,-51.5361,-0.00143862],271.63,true,true], + ["Land_BagFence_Round_F",[37.7549,-30.4514,-0.00143862],316.63,true,true], + ["Land_BagFence_Round_F",[37.8594,-28.2903,-0.00143862],226.63,true,true], + ["Land_BagFence_Long_F",[35.2378,-31.0051,-0.00143862],181.63,true,true], + ["Land_HBarrier_Big_F",[33.3535,-19.7563,-0.00143862],271.63,true,true], + ["Land_HBarrier_Big_F",[30.1147,-14.9102,-0.00143862],181.63,true,true], + ["Land_HBarrier_Big_F",[32.8462,-34.9041,-0.00143862],271.63,true,true], + ["Land_HBarrier_Big_F",[24.9575,-11.6372,-0.00143862],271.63,true,true], + ["CamoNet_OPFOR_F",[21.7773,-9.21729,-0.00143862],91.6296,true,true], + ["Land_HBarrier_Big_F",[19.8965,8.1394,-0.00143862],181.63,true,true], + ["Land_HBarrier_Big_F",[24.9307,4.99487,-0.00143862],271.63,true,true], + ["Land_HBarrier_Big_F",[24.9414,-3.5083,-0.00143862],271.63,true,true] +]; + +_missionLootBoxes = []; + +_missionLootVehicles = []; + +_missionPatrolVehicles = [ + // ["B_G_Offroad_01_armed_F",[-53.8027,-29.7834,0.00867844],0.00103655], + // ["B_G_Offroad_01_armed_F",[51.0596,-25.7876,0.00815535],0.00104356] +]; + +_submarinePatrolParameters = []; + +_airPatrols = []; + +_missionEmplacedWeapons = []; // + +_missionGroups = []; + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Green; +_maxNoAI = blck_MaxAI_Green; +_noAIGroups = blck_AIGrps_Green; +_noVehiclePatrols = blck_SpawnVeh_Green; +_noEmplacedWeapons = blck_SpawnEmplaced_Green; +_uniforms = blck_SkinList; +_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Green"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +//_endCondition = "playerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/fortification.sqf b/@GMS/addons/custom_server/Missions/Green/fortification.sqf new file mode 100644 index 0000000..877b677 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Green/fortification.sqf @@ -0,0 +1,197 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Green Mission with template = default"; +_crateLoot = blck_BoxLoot_Green; +_lootCounts = blck_lootCountsGreen; +_startMsg = "An enemy fortification was sighted in a nearby sector! Check the Green marker on your map for the location!"; +_endMsg = "The Sector at the Green Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ellipse",[225,225],"GRID"]; +_markerColor = "ColorGreen"; +_markerMissionName = "Fortification"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_Patrol_V1_F",[4.47693,-36.1753,-0.00143862],0,true,true,[["B_HMG_01_high_F",[1.09753,-0.78125,4.33092],182.337],["B_HMG_01_high_F",[-8.18188,3.96289,-0.0121179],270.389],["B_HMG_01_high_F",[11.7308,-7.875,-0.0121193],181.165]],[]], + ["Land_Cargo_Tower_V1_F",[6.56189,-19.98,-0.00143909],180,true,true,[["B_HMG_01_high_F",[12.7545,4.6084,-0.0121183],225.183],["B_HMG_01_high_F",[-4.78821,0.935547,17.8764],270.571],["B_HMG_01_high_F",[3.17285,4.91357,17.7788],0.00164279]],[]], + ["Land_Cargo_HQ_V1_F",[2.97693,0.074707,-0.00143862],180,true,true,[["B_HMG_01_high_F",[-5.3407,0.772461,3.1134],181.165]],[]], + ["Land_Cargo_Patrol_V1_F",[41.4769,-36.1753,-0.00143862],0,true,true,[["B_HMG_01_high_F",[1.27466,-0.849121,4.33092],181.165],["B_HMG_01_high_F",[-7.82532,-8.49463,-0.0121193],181.165]],[]] +]; + +_missionLandscape = [ + ["Land_CncWall4_F",[-8.77258,1.07471,-0.00143909],90,true,true], + ["Land_CncWall4_F",[-8.77258,-4.17529,-0.00143909],90,true,true], + ["Land_CncWall4_F",[-8.77258,6.32471,-0.00143909],90,true,true], + ["Land_CncWall4_F",[-6.52258,8.57471,-0.00143909],180,true,true], + ["Land_CncWall1_F",[-8.77258,-7.42529,-0.00143909],90,true,true], + ["Land_CncWall1_F",[-8.52258,-8.67529,-0.00143909],60,true,true], + ["Land_New_WiredFence_10m_F",[-9.77258,-4.92529,-0.00143909],90,true,true], + ["Land_New_WiredFence_10m_F",[-9.77258,5.07471,-0.00143909],90,true,true], + ["Land_LampShabby_F",[19.8737,-40.29,-0.00143909],149.832,true,true], + ["Land_BagFence_Round_F",[-4.80505,-33.3926,-0.00143909],45.9826,true,true], + ["Land_BagFence_Round_F",[14.8495,-44.9292,-0.00143909],45,true,true], + ["Land_BagFence_Round_F",[-4.76855,-31.2666,-0.00143909],135.983,true,true], + ["Land_BagFence_Round_F",[14.599,-41.1792,-0.00143909],120,true,true], + ["Land_BagFence_Long_F",[11.2294,-22.6245,-0.00143909],180,true,true], + ["Land_BagFence_Long_F",[12.6,-24.3042,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[11.224,-25.6792,-0.00143909],180,true,true], + ["Land_BagFence_Long_F",[-2.69324,-34.1782,-0.00143909],180.983,true,true], + ["Land_BagFence_Long_F",[17.1,-45.6792,-0.00143909],180,true,true], + ["Land_BagFence_Long_F",[18.4745,-44.1792,-0.00143909],90,true,true], + ["Land_CncBarrier_F",[19.975,-35.6792,-0.00143909],270,true,true], + ["Land_PortableLight_double_F",[7.0155,-26.8413,-0.00143909],270,true,true], + ["Land_CncWall4_F",[4.47742,-22.6753,-0.00143909],90,true,true], + ["Land_CncWall4_F",[1.22742,-35.1753,-0.00143909],90,true,true], + ["Land_CncWall4_F",[3.47742,-37.4253,-0.00143909],0,true,true], + ["Land_CncWall1_F",[1.47742,-31.9253,-0.00143909],105,true,true], + ["Land_CncWall1_F",[7.97742,-36.6753,-0.00143909],330,true,true], + ["Land_CncWall1_F",[6.72742,-37.1753,-0.00143909],345,true,true], + ["Land_CncWall1_F",[5.31714,-26.9092,-0.00143909],75,true,true], + ["Land_CncWall1_F",[4.80066,-25.6685,-0.00143909],60,true,true], + ["Land_BagFence_End_F",[15.9755,-40.3042,-0.00143909],0,true,true], + ["Land_BagFence_End_F",[-1.75403,-30.4434,-0.00143909],330.983,true,true], + ["Land_BagFence_End_F",[18.8319,-42.6753,-0.00143909],330,true,true], + ["Land_BagFence_End_F",[-0.797119,-32.9614,-0.00143909],300.983,true,true], + ["Land_New_WiredFence_10m_F",[4.97937,-39.5308,-0.00143909],0,true,true], + ["Land_New_WiredFence_10m_F",[14.7274,-39.4253,-0.00143909],0,true,true], + ["Land_New_WiredFence_10m_F",[0.272339,-34.5835,-0.00143909],90,true,true], + ["Land_BagFence_Corner_F",[-1.31201,-33.8271,-0.00143909],90.9826,true,true], + ["Land_BarGate_F",[24.7274,-41.9253,-0.00143909],0,true,true], + ["Land_Mil_WiredFence_Gate_F",[24.7274,-39.6675,-0.00143909],0,true,true], + ["Land_New_WiredFence_10m_Dam_F",[0.227417,-24.6753,-0.00143909],90,true,true], + ["Land_BagFence_Short_F",[-2.88318,-30.6743,-0.00143909],180.983,true,true], + ["Land_BagFence_Short_F",[14.224,-43.0542,-0.00143909],270,true,true], + ["Land_Mil_WallBig_4m_F",[25.6038,-18.8174,-0.00143909],270,true,true], + ["Land_BagFence_Round_F",[18.3368,-16.3926,-0.00143909],45,true,true], + ["Land_BagFence_Long_F",[11.349,-18.1792,-0.00143909],180,true,true], + ["Land_BagFence_Long_F",[12.7245,-16.8042,-0.00143909],90,true,true], + ["Land_BagFence_Long_F",[11.349,-15.4312,-0.00143909],180,true,true], + ["Land_BagFence_Long_F",[20.8373,-17.0176,-0.00143909],0,true,true], + ["Land_CncWall4_F",[-0.272583,-9.17529,-0.00143909],0,true,true], + ["Land_CncWall4_F",[-5.64758,-9.17529,-0.00143909],0,true,true], + ["Land_CncWall4_F",[5.10242,-9.17529,-0.00143909],0,true,true], + ["Land_CncWall4_F",[3.97742,8.57471,-0.00143909],180,true,true], + ["Land_CncWall4_F",[4.47742,-17.4253,-0.00143909],90,true,true], + ["Land_CncWall4_F",[8.72742,7.19971,-0.00143909],210,true,true], + ["Land_CncWall4_F",[-1.27258,8.57471,-0.00143909],180,true,true], + ["Land_CncWall4_F",[4.48242,-12.2109,-0.00143909],90,true,true], + ["Land_CncWall4_F",[12.7274,-3.80029,-0.00143909],270,true,true], + ["Land_CncWall4_F",[12.7274,1.44971,-0.00143909],270,true,true], + ["Land_CncWall1_F",[11.6024,-7.92529,-0.00143909],315,true,true], + ["Land_CncWall1_F",[11.6024,5.44971,-0.00143909],210,true,true], + ["Land_CncWall1_F",[12.4774,4.57471,-0.00143909],240,true,true], + ["Land_CncWall1_F",[10.6024,-8.55029,-0.00143909],345,true,true], + ["Land_CncWall1_F",[12.3524,-6.92529,-0.00143909],300,true,true], + ["Land_New_WiredFence_10m_F",[14.9774,9.57471,-0.00143909],180,true,true], + ["Land_New_WiredFence_10m_F",[4.97742,9.57471,-0.00143909],180,true,true], + ["Land_New_WiredFence_10m_F",[-5.27258,-9.42529,-0.00143909],0,true,true], + ["Land_New_WiredFence_10m_F",[-5.02258,9.57471,-0.00143909],180,true,true], + ["Land_New_WiredFence_10m_F",[0.227417,-14.6753,-0.00143909],90,true,true], + ["Land_CncShelter_F",[8.84314,-9.19678,-0.00143909],0,true,true], + ["Land_New_WiredFence_10m_Dam_F",[24.9774,-0.050293,-0.00143909],180,true,true], + ["Land_New_WiredFence_10m_Dam_F",[19.7274,5.07471,-0.00143909],270,true,true], + ["Land_BagFence_Short_F",[17.7123,-14.3945,-0.00143909],90,true,true], + ["Land_Mil_WallBig_4m_F",[23.4019,-2.35938,-0.00143909],0,true,true], + ["Land_Mil_WallBig_4m_F",[17.7269,-11.4253,-0.00143909],270,true,true], + ["Land_Mil_WallBig_4m_F",[19.2269,-6.17529,-0.00143909],0,true,true], + ["Land_Mil_WallBig_4m_F",[20.0457,-13.5703,-0.00143909],180,true,true], + ["Land_Mil_WallBig_4m_F",[21.1479,-4.53125,-0.00143909],270,true,true], + ["Land_LampShabby_F",[29.5619,-40.2676,-0.00143909],210,true,true], + ["Land_LampShabby_F",[40.4146,-21.3286,-0.00143909],326.67,true,true], + ["Land_BagFence_Round_F",[34.9688,-45.8774,-0.00143909],315,true,true], + ["Land_BagFence_Round_F",[32.8423,-45.8774,-0.00143909],45,true,true], + ["Land_BagFence_Long_F",[35.7183,-43.7524,-0.00143909],90,true,true], + ["Land_CncBarrier_F",[29.725,-35.5542,-0.00143909],270,true,true], + ["Land_CncWall4_F",[41.7274,-38.6753,-0.00143909],0,true,true], + ["Land_CncWall4_F",[43.9774,-36.4253,-0.00143909],270,true,true], + ["Land_CncWall1_F",[38.4774,-38.4253,-0.00143909],15,true,true], + ["Land_CncWall1_F",[37.2401,-37.894,-0.00143909],30,true,true], + ["Land_CncWall1_F",[43.7274,-33.1753,-0.00143909],255,true,true], + ["Land_BagFence_End_F",[34.4688,-41.8774,-0.00143909],210,true,true], + ["Land_BagFence_End_F",[31.9678,-42.8774,-0.00143909],240,true,true], + ["Land_New_WiredFence_10m_F",[44.515,-24.8999,-0.00143909],270,true,true], + ["Land_New_WiredFence_10m_F",[34.7274,-39.1753,-0.00143909],0,true,true], + ["Land_New_WiredFence_10m_F",[44.515,-34.6499,-0.00143909],270,true,true], + ["Land_BagFence_Corner_F",[35.3433,-42.3774,-0.00143909],0,true,true], + ["Land_New_WiredFence_5m_F",[42.2655,-39.1499,-0.00143909],0,true,true], + ["Land_BagFence_Short_F",[32.2178,-44.0024,-0.00143909],90,true,true], + ["Land_Mil_WallBig_4m_F",[39.1169,-22.2583,-0.00143909],180,true,true], + ["Land_Mil_WallBig_4m_F",[31.9081,-20.9619,-0.00143909],180,true,true], + ["Land_Mil_WallBig_4m_F",[41.4412,-20.3794,-0.00143909],90,true,true], + ["Land_Mil_WallBig_4m_F",[27.9435,-20.9658,-0.00143909],180,true,true], + ["Land_Cargo_HQ_V1_F",[33.7463,-12.4639,-0.00143862],271.492,true,true], + ["Land_New_WiredFence_10m_F",[44.4774,-4.92529,-0.00143909],270,true,true], + ["Land_New_WiredFence_10m_F",[44.4774,-14.9253,-0.00143909],270,true,true], + ["Land_New_WiredFence_10m_F",[34.9774,-0.175293,-0.00143909],180,true,true], + ["Land_New_WiredFence_5m_F",[42.4774,-0.175293,-0.00143909],180,true,true], + ["Land_Mil_WallBig_4m_F",[31.3369,-2.34375,-0.00143909],0,true,true], + ["Land_Mil_WallBig_4m_F",[41.4467,-8.47168,-0.00143909],90,true,true], + ["Land_Mil_WallBig_4m_F",[41.4458,-12.4146,-0.00143909],90,true,true], + ["Land_Mil_WallBig_4m_F",[41.4386,-16.4019,-0.00143909],90,true,true], + ["Land_Mil_WallBig_4m_F",[35.2737,-2.33789,-0.00143909],0,true,true], + ["Land_Mil_WallBig_4m_F",[41.4539,-4.48438,-0.00143909],90,true,true], + ["Land_Mil_WallBig_4m_F",[39.1295,-2.32617,-0.00143909],0,true,true], + ["Land_Mil_WallBig_4m_F",[27.3386,-2.35352,-0.00143909],0,true,true] +]; +_missionLootBoxes = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. +_missionLootVehicles = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. + +_missionPatrolVehicles = [ + // ["B_G_Offroad_01_armed_F",[21.4174,19.0781,0.00804281],90.3115], + //["B_G_Offroad_01_armed_F",[27.5131,-53.1431,0.00819397],268.528] +]; + +_submarinePatrolParameters = []; + +_airPatrols = []; + +_missionEmplacedWeapons = [ + ["B_HMG_01_high_F",[16.2078,-44.0503,-0.0135579],181.165], + ["B_HMG_01_high_F",[-3.70496,-32.2124,-0.0135565],270.389], + ["B_HMG_01_high_F",[19.3164,-15.3716,-0.0135574],225.183], + ["B_HMG_01_high_F",[33.6516,-44.6699,-0.0135579],181.165] +]; + +_missionGroups = [ + [[14.1273,-35.917,0],3,6,"Green",30,45], + [[22.5463,-29.3013,0],3,6,"Green",30,45], + [[16.6399,3.69727,0],3,6,"Green",30,45], + [[10.8357,-1.10449,0],3,6,"Green",30,45], + [[8.39612,-12.7705,0],3,6,"Green",30,45], + [[21.4102,-9.12207,0],3,6,"Green",30,45], + [[39.7784,-27.1958,0],3,6,"Green",30,45] +]; + +_scubaGroupParameters = []; + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Green; +_maxNoAI = blck_MaxAI_Green; +_noAIGroups = blck_AIGrps_Green; +_noVehiclePatrols = blck_SpawnVeh_Green; +_noEmplacedWeapons = blck_SpawnEmplaced_Green; +_uniforms = blck_SkinList; +_headgear = blck_headgear; +_chanceLoot = 0.6; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,8,8,0],[0,0,0,8,8,0],[8,8,0,0,0,0],[0,0,0,0,12,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. +//_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/munitionsResearch.sqf b/@GMS/addons/custom_server/Missions/Green/munitionsResearch.sqf new file mode 100644 index 0000000..9e7eec3 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Green/munitionsResearch.sqf @@ -0,0 +1,110 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Green Mission with template = default"; +_crateLoot = blck_BoxLoot_Green; +_lootCounts = blck_lootCountsOrange; +_startMsg = "An munitions research center was sighted in a nearby sector! Check the Green marker on your map for the location!"; +_endMsg = "The Sector at the Green Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ellipse",[225,225],"GRID"]; +_markerColor = "ColorGreen"; +_markerMissionName = "Munitions"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" +_missionLandscape = [ + ["Flag_AltisColonial_F",[3,3,0],0,[false,false]], + ["Land_Research_HQ_F",[-40.4258,-57.4492,-7.15256e-007],0,[true,false]], + ["Land_Research_HQ_F",[79.9063,68.1406,2.38419e-007],0,[true,false]], + ["Land_Research_house_V1_F",[-27.6895,70.9883,0],0,[true,false]], + ["Land_Research_house_V1_F",[-110.166,14.3926,0],0,[true,false]], + ["Land_Research_house_V1_F",[54.5078,-70.8457,0],0,[true,false]], + ["Land_Cargo_Patrol_V1_F",[111.865,11.9375,9.53674e-007],0,[true,false]], + ["Land_Cargo_HQ_V2_F",[-115.473,-44.5977,-4.76837e-007],0,[true,false]], + ["Land_SharpRock_apart",[-59.6836,-59.5996,-4.76837e-007],0,[false,false]], + ["Land_W_sharpRock_apart",[-81.6973,-42.4082,-4.76837e-007],0,[false,false]], + ["Land_SharpRock_apart",[-96.2168,-5.32031,4.76837e-007],0,[false,false]], + ["Land_Limestone_01_apart_F",[-79.2305,43.4219,0],0,[false,false]], + ["Land_Limestone_01_apart_F",[-50.2344,82.4746,0],0,[false,false]], + ["Land_BluntRock_apart",[3.88281,-71.5488,-2.38419e-007],0,[false,false]], + ["Land_Limestone_01_apart_F",[35.8926,-77.5918,0],0,[false,false]], + ["Land_Limestone_01_apart_F",[78.541,-52.3926,-4.76837e-007],0,[false,false]], + ["Land_Limestone_01_apart_F",[103.91,-6.88867,0],0,[false,false]], + ["Land_BluntRock_apart",[-11.5586,93.9688,-2.38419e-007],0,[false,false]], + ["Land_W_sharpStone_02",[54.7344,96.7012,0],0,[false,false]], + ["Land_BluntRock_apart",[77.4453,88.8301,-2.38419e-007],0,[false,false]], + ["Land_SharpRock_apart",[104.758,45.668,0],0,[false,false]], + ["Land_Limestone_01_02_F",[99.5117,23.752,-4.76837e-007],0,[false,false]], + ["Land_Limestone_01_02_F",[49.8477,50.0039,0],0,[false,false]], + ["Land_Limestone_01_02_F",[-8.14844,32.2227,4.76837e-007],0,[false,false]], + ["Land_Limestone_01_02_F",[-35.334,35.1465,-2.38419e-007],0,[false,false]], + ["Land_SharpStone_02",[-28.6523,1.33398,4.76837e-007],0,[false,false]], + ["Land_SharpStone_02",[-58.707,-7.46094,-4.76837e-007],0,[false,false]], + ["Land_Limestone_01_02_F",[64.5078,31.9707,0],0,[false,false]], + ["Land_Limestone_01_02_F",[33.7246,11.5469,0],0,[false,false]], + ["Land_SharpStone_02",[69.4277,-3.20313,0],0,[false,false]], + ["Land_SharpStone_02",[53.7227,-40.1777,-2.38419e-007],0,[false,false]], + ["Land_Limestone_01_02_F",[-6.26563,-46.0996,-4.76837e-007],0,[false,false]] +]; // list of objects to spawn as landscape +_missionLootBoxes = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. +_missionLootVehicles = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. +_missionEmplacedWeapons = + [ + /*["B_HMG_01_high_F",[31.7266,-34.6699,-4.76837e-007],0,[true,false]], + ["B_HMG_01_high_F",[-24.5781,-33.8281,-3.1268],0,[true,false]], + ["B_G_Mortar_01_F",[73.1836,62.9492,-3.1265],0,[true,false]] + */ + ["B_HMG_01_high_F",[47.1777,73.5469,-3.12644],0,[true,false]], + ["B_GMG_01_high_F",[-32.8926,-35.8047,-3.1268],0,[true,false]], + ["B_G_Mortar_01_F",[33.1582,-34.8867,-4.76837e-007],0,[true,false]] + ]; // can be used to define the precise placement of static weapons [[1,2,3] /*loc 1*/, [2,3,4] /*loc 2*/]; if blank random locations will be used + +_missionGroups = + [ + //_x params["_position","_minAI","_maxAI","_skillLevel","_minPatrolRadius","_maxPatrolRadius"]; + [[-52.6523,15.8281,-0.00143838],5,6,"Green",8,15], + [[-48.6113,-38.877,-0.00143886],5,6,"Green",8,15], + [[18.4492,-39.5684,-0.00143838],5,6,"Green",8,15], + [[42.6504,31.6621,-0.00143886],5,6,"Green",8,15], + [[7.51563,46.4531,-0.001438864],5,6,"Green",8,15], + [[-8.99219,-11.623,-0.00143838],5,6,"Green",8,15] +]; // Can be used to define spawn positions of AI patrols + +_missionPatrolVehicles = [ + [selectRandom blck_AIPatrolVehiclesGreen,[27.8945,100.275,0],0,[true,false]], + [selectRandom blck_AIPatrolVehiclesGreen,[-84.7793,72.2617,9.53674e-007],0,[true,false]], + [selectRandom blck_AIPatrolVehiclesGreen,[-87.8457,-109.947,7.15256e-007],0,[true,false]] +]; // can be used to define the spawn positions of vehicle patrols + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Green; +_maxNoAI = blck_MaxAI_Green; +_noAIGroups = blck_AIGrps_Green; +_noVehiclePatrols = blck_SpawnVeh_Green; +_noEmplacedWeapons = blck_SpawnEmplaced_Green; +_uniforms = blck_SkinList; +_headgear = blck_headgear; + +_chancePara = 2; +_chanceLoot = 2; //0.6; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,8,8,0],[0,0,0,8,8,0],[8,8,0,0,0,0],[0,0,0,0,12,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. +//_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Orange/bunker.sqf b/@GMS/addons/custom_server/Missions/Orange/bunker.sqf new file mode 100644 index 0000000..a7acc2f --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Orange/bunker.sqf @@ -0,0 +1,147 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Thomas TKO + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +diag_log "[blckeagls] Spawning Orange Mission with template = bunkerMission"; +_crateLoot = blck_BoxLoot_Orange; +_lootCounts = [15,50,20,60,44,5]; // blck_lootCountsOrange = [8,32,8,30,16,1]; +_startMsg = "A Mafia General is building a heavily defended bunker. Stop him and claim a reward!"; +_endMsg = "The Mafia General has been defeated!"; +_markerLabel = ""; +_markerType = ["ellipse",[300,300],"GRID"]; +_markerColor = "ColorBlack"; +_markerMissionName = " Bunker"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +_garrisonedBuildings_BuildingPosnSystem = []; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Bunker_01_big_F",[-19.0896,9.22754,0.760561],90.071,true,true,[["O_HMG_01_high_F",[-1.09302,-0.0102539,3.2837],0.00152979],["O_HMG_01_high_F",[-5.45947,-3.38574,0.109706],359.994],["O_HMG_01_high_F",[-0.41333,-10.5659,-0.774119],360],["O_HMG_01_high_F",[-0.826416,11.6274,-0.774119],0.00143682],["O_HMG_01_high_F",[11.355,-8.68066,-0.774117],0.000274398]],[]], + ["Land_Bunker_01_tall_F",[-18.5415,-8.59961,-0.00143909],90.071,true,true,[["O_HMG_01_high_F",[5.50562,-2.54395,-0.0121188],359.999],["O_HMG_01_high_F",[-1.72095,-0.109375,4.96893],359.998],["O_HMG_01_high_F",[11.7644,-6.72168,-0.0121179],0.000580947]],[]], + ["Land_Bunker_01_tall_F",[-18.9246,28.8105,-0.00143909],90.071,true,true,[["O_HMG_01_high_F",[5.47437,2.47559,-0.0121174],0.000287307],["O_HMG_01_high_F",[-1.38867,-0.0722656,4.967],359.999],["O_HMG_01_high_F",[10.5693,2.00635,-0.0121202],0.00145235],["O_HMG_01_high_F",[11.8271,5.87988,-0.0121174],0.000287344]],[]], + ["Land_Bunker_01_big_F",[17.0344,10.9336,0.760561],270.416,true,true,[["O_HMG_01_high_F",[0.966064,0.202148,3.2837],0.000261147],["O_HMG_01_high_F",[5.86353,3.25586,0.109696],0.000366296],["O_HMG_01_high_F",[-0.366211,10.3037,-0.774117],0.000287276],["O_HMG_01_high_F",[0.436768,-11.6377,-0.774117],0.000287533],["O_HMG_01_high_F",[-11.8674,-9.59229,-0.774119],359.999]],[]], + ["Land_Bunker_01_tall_F",[16.7253,-8.66455,-0.00143909],270.416,true,true,[["O_HMG_01_high_F",[-5.13818,-2.33496,-0.0121202],0.00145227],["O_HMG_01_high_F",[1.45801,0.0512695,4.96698],360],["O_HMG_01_high_F",[-10.4924,-6.61719,-0.0121179],0.000581377]],[]], + ["Land_Bunker_01_tall_F",[16.5664,28.7466,-0.00143909],270.416,true,true,[["O_HMG_01_high_F",[-5.00977,2.1792,-0.0121174],0.000287538],["O_HMG_01_high_F",[1.80957,0.26709,4.96756],0.000969946],["O_HMG_01_high_F",[-10.7739,2.07715,-0.0121174],0.000287469],["O_HMG_01_high_F",[-12.0127,6.1333,-0.0121188],360]],[]] +]; + +_missionLandscape = [ + ["Sign_Arrow_F",[-3166.38,-5166.64,-0.00143909],0,true,true], + ["Sign_Arrow_Green_F",[-3166.38,-5166.64,-0.00143909],0,true,true], + ["Sign_Arrow_Yellow_F",[-3166.38,-5166.64,-0.00143909],0,true,true], + ["babe_helper",[-3168.88,-5166.14,-0.00143909],87.9418,true,true], + ["Land_Bunker_01_blocks_3_F",[-16.9785,-4.23682,-0.00143909],270.35,true,true], + ["Land_Bunker_01_blocks_3_F",[-8.35254,-12.7046,-0.00143909],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[-3.26245,-12.6987,-0.00143909],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[-13.3396,-12.7207,-0.502439],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[-16.9604,0.749512,-0.00143909],270.35,true,true], + ["Land_Bunker_01_blocks_3_F",[-16.9265,17.7563,-0.00143909],270.35,true,true], + ["CamoNet_INDP_big_F",[-0.926514,-2.50049,-0.00143909],182.545,true,true], + ["Land_Bunker_01_blocks_3_F",[-8.79468,32.8765,-0.00143909],0.106,true,true], + ["Land_Bunker_01_blocks_3_F",[-13.7825,32.8735,-0.432439],0.106,true,true], + ["Land_Bunker_01_blocks_3_F",[-5.68066,30.3096,-0.00143909],90.192,true,true], + ["Land_Bunker_01_blocks_3_F",[-16.9097,22.7437,-0.00143909],270.35,true,true], + ["Land_Bunker_01_blocks_3_F",[1.72437,-12.6807,-0.00143909],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[14.7463,-2.58447,-0.00143909],90.695,true,true], + ["Land_Bunker_01_blocks_3_F",[6.82544,-12.6665,-0.00143909],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[14.7935,2.40039,-0.00143909],90.695,true,true], + ["Land_Bunker_01_blocks_3_F",[11.8125,-12.6494,-0.529439],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[3.42236,30.3735,-0.00143909],269.774,true,true], + ["Land_Bunker_01_blocks_3_F",[14.9304,19.4072,-0.00143909],90.695,true,true], + ["Land_Bunker_01_blocks_3_F",[6.38452,32.8735,-0.00143909],0.106,true,true], + ["Land_Bunker_01_blocks_3_F",[14.9763,24.3936,-0.00143909],90.695,true,true], + ["Land_Bunker_01_blocks_3_F",[11.3713,32.8774,-0.363439],0.106,true,true] +]; + +_missionLootBoxes = [ + ["B_supplyCrate_F",[0.0446777,-1.31494,-0.001441],_crateLoot,_lootCounts,0.00167282] +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + // ["O_LSV_02_armed_F",[-40.6245,8.75732,-0.0378561],359.999], + // ["O_LSV_02_unarmed_F",[35.2053,8.41943,-0.0378113],359.999] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = [ + ["O_HMG_01_high_F",[-6.7771,-15.3213,-0.013557],0.000580947], + ["O_HMG_01_high_F",[-7.73462,0.546875,-0.0135565],0.000274398], + ["O_HMG_01_high_F",[-19.5029,-1.33838,-0.0135579],360], + ["O_HMG_01_high_F",[-4.04785,-6.94092,-0.0135589],0.00145283], + ["O_HMG_01_high_F",[-13.0359,-11.1436,-0.0135579],359.999], + ["O_HMG_01_high_F",[-8.35522,30.8169,-0.0135593],0.00145235], + ["O_HMG_01_high_F",[-7.09741,34.6904,-0.0135565],0.000287344], + ["O_HMG_01_high_F",[-13.4502,31.2861,-0.0135565],0.000287307], + ["O_HMG_01_high_F",[-19.916,20.855,-0.0135579],0.00143682], + ["O_HMG_01_high_F",[6.23291,-15.2817,-0.013557],0.000581377], + ["O_HMG_01_high_F",[5.16699,1.34131,-0.0135579],359.999], + ["O_HMG_01_high_F",[11.5872,-10.9995,-0.0135593],0.00145227], + ["O_HMG_01_high_F",[17.4712,-0.704102,-0.0135565],0.000287533], + ["O_HMG_01_high_F",[2.62817,-6.73193,-0.0135579],359.999], + ["O_HMG_01_high_F",[4.55371,34.8799,-0.0135579],360], + ["O_HMG_01_high_F",[11.5566,30.9258,-0.0135565],0.000287538], + ["O_HMG_01_high_F",[16.6682,21.2373,-0.0135565],0.000287276], + ["O_HMG_01_high_F",[5.79248,30.8237,-0.0135565],0.000287469] +]; + +_missionGroups = [ + [[-7.90332,-2.77295,0],3,6,"Orange",30,45], + [[-0.937012,12.8022,0],3,6,"Orange",30,45], + [[-9.20801,24.0776,0],3,6,"Orange",30,45], + [[8.76147,-1.29004,0],3,6,"Orange",30,45], + [[-0.792725,7.7959,0],3,6,"Orange",30,45], + [[-0.269531,30.3203,0],3,6,"Orange",30,45], + [[8.71509,21.3311,0],3,6,"Orange",30,45] +]; + +_scubaGroupParameters = [ +]; + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Orange; +_maxNoAI = blck_MaxAI_Orange; +_noAIGroups = blck_AIGrps_Orange; +_noVehiclePatrols = blck_SpawnVeh_Orange; +_noEmplacedWeapons = blck_SpawnEmplaced_Orange; +_uniforms = blck_SkinList; +_headgear = blck_headgear; + +_chanceHeliPatrol = blck_chanceHeliPatrolBlue; // Setting this in the mission file overrides the defaults +_noChoppers = blck_noPatrolHelisOrange; +_missionHelis = blck_patrolHelisOrange; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "orange"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,25,25,0],[0,0,0,25,25,0],[20,30,0,0,0,0],[0,0,0,0,30,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +diag_log format["[blckeagls] Bunker Mission Parameters Loaded at %1",diag_tickTime]; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Orange/dashq.sqf b/@GMS/addons/custom_server/Missions/Orange/dashq.sqf new file mode 100644 index 0000000..cca74cf --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Orange/dashq.sqf @@ -0,0 +1,248 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Thomas TKO + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Orange Mission with template = default"; +_crateLoot = blck_BoxLoot_Orange; +_lootCounts = blck_lootCountsOrange; +_startMsg = "An enemy Operations Base was sighted in a nearby sector! Check the Orange marker on your map for the location!"; +_endMsg = "The Operations Base at the Orange Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[300,300],"Solid"]; +_markerColor = "ColorOrange"; +_markerMissionName = "Operations Base"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_HQ_V1_F",[-0.358154,-18.6514,-0.00143862],179.905,true,true,[["B_HMG_01_high_F",[-6.5437,1.09253,3.11855],145.121],["B_HMG_01_high_F",[-13.9094,-10.7791,-0.0121183],206.716]],[]] +]; + +_missionLandscape = [ + ["Land_PortableLight_double_F",[-42.614,-26.0178,-0.00143909],225.577,true,true], + ["Land_CncWall4_F",[-45.3523,-21.509,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-33.5913,-28.1145,-0.00143909],359.905,true,true], + ["Land_CncWall4_F",[-38.842,-28.124,-0.00143909],359.905,true,true], + ["Land_CncWall1_F",[-44.093,-26.7578,-0.00143909],44.9051,true,true], + ["Land_CncWall1_F",[-43.0923,-27.5063,-0.00143909],29.9051,true,true], + ["Land_CncWall1_F",[-45.2207,-24.6689,-0.00143909],74.9051,true,true], + ["Land_CncWall1_F",[-44.845,-25.7581,-0.00143909],59.9051,true,true], + ["Land_CncWall1_F",[-41.9668,-28.0046,-0.00143909],14.9051,true,true], + ["Land_BagBunker_01_large_green_F",[-49.7271,-16.9226,-0.00143909],90.2555,true,true], + ["Land_Cargo_Tower_V1_F",[-36.3582,-19.3394,-0.00143909],89.905,true,true], + ["Land_CncWall4_F",[-33.4968,-9.73975,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[-45.3792,-5.75879,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-45.3867,-0.508789,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-45.3694,-11.0095,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-45.3955,4.74121,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-45.4041,9.99072,-0.00143909],89.9051,true,true], + ["Land_CncWall1_F",[-32.0076,1.70923,-0.00143909],74.9051,true,true], + ["Land_CncWall1_F",[-31.6313,0.61792,-0.00143909],59.9051,true,true], + ["Land_BagBunker_01_large_green_F",[-49.7959,14.4089,-0.00143909],90.2555,true,true], + ["Land_Cargo_HQ_V1_F",[-34.4014,20.1455,-0.00143862],269.491,true,true], + ["Land_CncWall4_F",[-45.4214,20.4915,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-45.4302,25.7415,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-38.8159,32.2512,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[-33.5662,32.2607,-0.00143909],179.905,true,true], + ["Land_CncWall1_F",[-43.0654,31.7451,-0.00143909],149.905,true,true], + ["Land_CncWall1_F",[-41.9753,32.1199,-0.00143909],164.905,true,true], + ["Land_CncWall1_F",[-44.0635,30.9924,-0.00143909],134.905,true,true], + ["Land_CncWall1_F",[-44.8127,29.991,-0.00143909],119.905,true,true], + ["Land_CncWall1_F",[-45.3108,28.8672,-0.00143909],104.905,true,true], + ["Land_BagFence_Round_F",[-15.3367,-30.4338,-0.00143909],44.9051,true,true], + ["Land_BagFence_Round_F",[-25.8376,-30.2017,-0.00143909],314.905,true,true], + ["Land_PortableLight_double_F",[-2.30811,-29.9211,-0.00143909],44.7366,true,true], + ["Land_CncWall4_F",[-2.09229,-28.0632,-0.00143909],359.905,true,true], + ["Land_CncWall4_F",[-26.9856,-16.3538,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[-13.8528,-21.4565,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-26.9783,-21.6038,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[-7.34155,-28.0718,-0.00143909],359.905,true,true], + ["Land_CncWall4_F",[-13.8606,-16.2065,-0.00143909],89.9051,true,true], + ["Land_CncWall1_F",[-13.3455,-25.7068,-0.00143909],59.9051,true,true], + ["Land_CncWall1_F",[-12.593,-26.7058,-0.00143909],44.9051,true,true], + ["Land_CncWall1_F",[-27.5952,-25.8552,-0.00143909],299.905,true,true], + ["Land_CncWall1_F",[-27.0967,-24.7288,-0.00143909],284.905,true,true], + ["Land_CncWall1_F",[-13.7209,-24.6165,-0.00143909],74.9051,true,true], + ["Land_CncWall1_F",[-10.4666,-27.9514,-0.00143909],14.9051,true,true], + ["Land_CncWall1_F",[-29.3428,-27.6084,-0.00143909],329.905,true,true], + ["Land_CncWall1_F",[-30.4331,-27.9832,-0.00143909],344.905,true,true], + ["Land_CncWall1_F",[-11.592,-27.4541,-0.00143909],29.9051,true,true], + ["Land_CncWall1_F",[-28.3438,-26.855,-0.00143909],314.905,true,true], + ["Land_BagFence_Long_F",[-25.2168,-27.7002,-0.00143909],269.905,true,true], + ["Land_BagFence_Long_F",[-15.9658,-27.9348,-0.00143909],269.905,true,true], + ["Land_BagFence_Long_F",[-12.8359,-31.0559,-0.00143909],359.905,true,true], + ["Land_BagFence_Long_F",[-28.3364,-30.8318,-0.00143909],179.905,true,true], + ["Land_BagFence_Round_F",[-7.19092,10.5073,-0.00143909],44.9051,true,true], + ["Land_PortableLight_double_F",[-11.7207,0.158936,-0.00143909],135.598,true,true], + ["Land_PortableLight_double_F",[-29.4041,0.418701,-0.00143909],218.658,true,true], + ["Land_CncWall4_F",[-7.24731,-9.69678,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[-20.376,-1.73682,-0.00143909],359.905,true,true], + ["Land_CncWall4_F",[-25.6274,-1.74609,-0.00143909],359.905,true,true], + ["Land_CncWall4_F",[-15.1272,-1.72925,-0.00143909],359.905,true,true], + ["Land_CncWall1_F",[-10.4058,-9.82935,-0.00143909],164.905,true,true], + ["Land_CncWall1_F",[-10.8779,-1.22144,-0.00143909],329.905,true,true], + ["Land_CncWall1_F",[-9.13086,0.531982,-0.00143909],299.905,true,true], + ["Land_CncWall1_F",[-11.4956,-10.2031,-0.00143909],149.905,true,true], + ["Land_CncWall1_F",[-8.63257,1.65747,-0.00143909],284.905,true,true], + ["Land_CncWall1_F",[-11.9688,-1.59668,-0.00143909],344.905,true,true], + ["Land_CncWall1_F",[-27.4932,-12.1047,-0.00143909],239.905,true,true], + ["Land_CncWall1_F",[-12.4951,-10.9553,-0.00143909],134.905,true,true], + ["Land_CncWall1_F",[-13.2424,-11.9563,-0.00143909],119.905,true,true], + ["Land_CncWall1_F",[-29.8777,-1.12744,-0.00143909],29.9051,true,true], + ["Land_CncWall1_F",[-9.87939,-0.470703,-0.00143909],314.905,true,true], + ["Land_CncWall1_F",[-30.3708,-9.86011,-0.00143909],194.905,true,true], + ["Land_CncWall1_F",[-30.8787,-0.378906,-0.00143909],44.9051,true,true], + ["Land_CncWall1_F",[-29.2468,-10.3582,-0.00143909],209.905,true,true], + ["Land_CncWall1_F",[-13.7417,-13.0818,-0.00143909],104.905,true,true], + ["Land_CncWall1_F",[-28.2449,-11.1069,-0.00143909],224.905,true,true], + ["Land_CncWall1_F",[-27.1179,-13.1948,-0.00143909],254.905,true,true], + ["Land_CncWall1_F",[-28.7524,-1.62573,-0.00143909],14.9051,true,true], + ["Land_BagFence_Long_F",[-7.8208,13.0066,-0.00143909],269.905,true,true], + ["Land_BagFence_Long_F",[-4.69067,9.88257,-0.00143909],359.905,true,true], + ["Land_Cargo_Patrol_V1_F",[-19.8857,1.92358,-0.00143862],359.905,true,true], + ["Land_Cargo_HQ_V1_F",[-17.6404,20.1672,-0.00143862],269.491,true,true], + ["Land_HelipadSquare_F",[0.169189,17.6489,-0.00143909],359.936,true,true], + ["Land_BagFence_Round_F",[-7.21484,25.1335,-0.00143909],134.905,true,true], + ["Land_BagFence_Round_F",[-8.354,36.8232,-0.00143909],134.905,true,true], + ["Land_CncWall4_F",[-23.0659,32.2773,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[-12.615,32.3005,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[-17.8164,32.2856,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[-7.396,32.3115,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[-2.25146,35.2305,-0.00143909],179.977,true,true], + ["Land_CncWall4_F",[-28.3167,32.269,-0.00143909],179.905,true,true], + ["Land_CncWall1_F",[-4.03638,32.6663,-0.00143909],149.461,true,true], + ["Land_BagFence_Long_F",[-4.71533,25.7625,-0.00143909],359.905,true,true], + ["Land_BagFence_Long_F",[-5.85449,37.4521,-0.00143909],359.905,true,true], + ["Land_BagFence_Long_F",[-7.83618,22.6321,-0.00143909],89.9051,true,true], + ["Land_BagFence_Long_F",[-8.97534,34.3218,-0.00143909],89.9051,true,true], + ["Land_PortableLight_double_F",[12.1106,-26.1833,-0.00143909],149.905,true,true], + ["Land_CncWall4_F",[15.0215,-21.5349,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[8.38428,-28.1101,-0.00143909],359.905,true,true], + ["Land_CncWall4_F",[15.0137,-16.2847,-0.00143909],269.905,true,true], + ["Land_CncWall1_F",[14.9031,-24.6597,-0.00143909],284.905,true,true], + ["Land_CncWall1_F",[12.6567,-27.5383,-0.00143909],329.905,true,true], + ["Land_CncWall1_F",[11.5676,-27.9133,-0.00143909],344.905,true,true], + ["Land_CncWall1_F",[14.4038,-25.7854,-0.00143909],299.905,true,true], + ["Land_CncWall1_F",[13.656,-26.7861,-0.00143909],314.905,true,true], + ["Land_BagFence_Long_F",[12.5037,-23.1807,-0.00143909],89.3707,true,true], + ["Land_BagFence_Long_F",[11.072,-24.5706,-0.00143909],359.905,true,true], + ["Land_BagFence_Long_F",[10.9707,-21.8315,-0.00143909],179.371,true,true], + ["Land_BagFence_Long_F",[9.56812,-23.1921,-0.00143909],269.905,true,true], + ["Land_BagBunker_01_large_green_F",[3.83936,-32.5405,-0.00143909],0,true,true], + ["Land_TTowerSmall_2_F",[11.5024,-23.7861,-0.00143909],179.905,true,true], + ["Land_Cargo_House_V1_F",[9.00171,-10.2603,-0.00143909],89.905,true,true], + ["Land_Cargo_House_V1_F",[8.98071,2.86475,-0.00143909],89.905,true,true], + ["Land_Medevac_house_V1_F",[8.99219,-3.76099,-0.00143909],90.3921,true,true], + ["Land_BagFence_Round_F",[8.05933,10.2788,-0.00143909],314.905,true,true], + ["Land_PortableLight_double_F",[12.8176,7.44629,-0.00143909],134.905,true,true], + ["Land_CncWall4_F",[14.9788,4.71558,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[15.0054,-11.0347,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[14.9961,-5.78418,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[14.9878,-0.533936,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[14.9705,9.96558,-0.00143909],269.905,true,true], + ["Land_BagFence_Long_F",[8.68018,12.7852,-0.00143909],269.905,true,true], + ["Land_BagFence_Long_F",[5.55933,9.6499,-0.00143909],179.905,true,true], + ["Land_BagBunker_01_large_green_F",[19.272,16.1316,-0.00143909],269.832,true,true], + ["Land_BagFence_Round_F",[7.91089,24.9097,-0.00143909],224.905,true,true], + ["Land_BagFence_Round_F",[9.05054,36.9314,-0.00143909],224.905,true,true], + ["Land_PortableLight_double_F",[11.8816,29.2671,-0.00143909],44.7366,true,true], + ["Land_CncWall4_F",[14.9529,20.4653,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[8.43433,32.3303,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[2.95288,35.22,-0.00143909],179.977,true,true], + ["Land_CncWall4_F",[14.9443,25.7156,-0.00143909],269.905,true,true], + ["Land_CncWall1_F",[14.4373,29.9646,-0.00143909],239.905,true,true], + ["Land_CncWall1_F",[14.813,28.8745,-0.00143909],254.905,true,true], + ["Land_CncWall1_F",[13.6853,30.9644,-0.00143909],224.905,true,true], + ["Land_CncWall1_F",[12.6843,31.7119,-0.00143909],209.905,true,true], + ["Land_CncWall1_F",[11.5593,32.2114,-0.00143909],194.905,true,true], + ["Land_CncWall1_F",[5.11841,32.7061,-0.00143909],209.905,true,true], + ["Land_BagFence_Long_F",[8.54004,22.4104,-0.00143909],89.9051,true,true], + ["Land_BagFence_Long_F",[9.67969,34.4321,-0.00143909],89.9051,true,true], + ["Land_BagFence_Long_F",[5.40894,25.5288,-0.00143909],179.905,true,true], + ["Land_BagFence_Long_F",[6.54858,37.5505,-0.00143909],179.905,true,true] +]; + +_missionLootBoxes = [ + ["B_supplyCrate_F",[0.0717773,16.9431,-0.00143814],_crateLoot,_lootCounts,0.000320471] +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + // ["O_T_LSV_02_armed_F",[-62.7971,0.422119,-0.0236669],0.00164848], + // ["O_T_LSV_02_armed_F",[31.9084,-7.18774,-0.0238085],0.00168349] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = [ + ["B_HMG_01_high_F",[-27.1521,-29.2402,-0.0135579],154.874], + ["B_HMG_01_high_F",[-14.2676,-29.4304,-0.013557],206.716], + ["B_HMG_01_high_F",[-12.8362,1.83374,-0.0135579],25.3994], + ["B_HMG_01_high_F",[-26.5833,1.45483,-0.0135574],336.99], + ["B_HMG_01_high_F",[-26.2922,25.8635,-0.0135584],25.3994], + ["B_HMG_01_high_F",[-5.00732,29.4277,-0.0135579],359.999], + ["B_HMG_01_high_F",[-7.33691,36.0117,-0.0135584],357.806], + ["B_HMG_01_high_F",[8.54346,36.1248,-0.0135579],359.962] +]; + +_missionGroups = [ + [[-41.0581,-3.45898,0],3,6,"Red",30,45], + [[-37.6394,8.57202,0],3,6,"Red",30,45], + [[-21.9045,-23.5044,0],3,6,"Red",30,45], + [[-4.78564,-4.45728,0],3,6,"Red",30,45], + [[-12.2888,11.2847,0],3,6,"Red",30,45], + [[-19.8623,-10.6353,0],3,6,"Red",30,45], + [[4.07446,-4.8584,0],3,6,"Red",30,45] +]; + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Orange; +_maxNoAI = blck_MaxAI_Orange; +_noAIGroups = blck_AIGrps_Orange; +_noVehiclePatrols = blck_SpawnVeh_Orange; +_noEmplacedWeapons = blck_SpawnEmplaced_Orange; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "orange"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +//_endCondition = "playerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Orange/tko_camp.sqf b/@GMS/addons/custom_server/Missions/Orange/tko_camp.sqf new file mode 100644 index 0000000..a76162d --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Orange/tko_camp.sqf @@ -0,0 +1,201 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Orange Mission with template = default"; +_crateLoot = blck_BoxLoot_Orange; +_lootCounts = blck_lootCountsOrange; +_startMsg = "An enemy Military Camp was sighted in a nearby sector! Check the Orange marker on your map for the location!"; +_endMsg = "The Military Camp at the Orange Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[300,300],"Solid"]; +_markerColor = "ColorOrange"; +_markerMissionName = "Military Camp"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_House_V3_F",[8.00928,15.6453,-0.00143909],0,true,true,[["B_HMG_01_high_F",[-8.28516,3.27148,-0.0121188],0.000433404]],[]] +]; + +_missionLandscape = [ + //["babe_helper",[-3327.46,-2809.42,-0.00143909],0,true,true], + //["Sign_Arrow_Green_F",[-3324.96,-2809.92,-0.00143909],0,true,true], + //["Sign_Arrow_F",[-3324.96,-2809.92,-0.00143909],0,true,true], + //["Sign_Arrow_Yellow_F",[-3324.96,-2809.92,-0.00143909],0,true,true], + ["Land_HBarrier_Big_F",[-2.76221,-30.3596,-0.00143909],0,true,true], + ["Land_HBarrier_1_F",[-9.74463,-27.0081,-0.00143909],180,true,true], + ["Land_BagFence_Long_F",[-9.74268,-29.0042,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[-8.36182,-30.3743,-0.00143909],180,true,true], + ["CamoNet_OPFOR_open_F",[-0.361816,-1.01782,-0.00143909],180,true,true], + ["Land_HBarrier_3_F",[-15.3853,-13.9866,-0.00143909],315,true,true], + ["Land_HBarrier_Big_F",[-3.61768,-5.26782,-0.00143909],180,true,true], + ["Land_HBarrier_Big_F",[-5.46533,3.40405,-0.00143909],0,true,true], + ["Land_HBarrier_Big_F",[-18.5767,-14.5354,-0.00143909],45,true,true], + ["Land_HBarrier_Big_F",[-12.4985,-20.3987,-0.00143909],45,true,true], + ["Land_HBarrier_1_F",[-22.9692,-2.77563,-0.00143909],270,true,true], + ["Land_HBarrier_1_F",[-23.3423,0.478271,-0.00143909],15,true,true], + ["Land_BagFence_Long_F",[-24.5767,-9.90649,-0.00143909],315,true,true], + ["Land_BagFence_Long_F",[-22.8071,-8.13794,-0.00143909],315,true,true], + ["Land_BagFence_Long_F",[-18.7427,-12.3811,-0.00143909],315,true,true], + ["Land_BagFence_Long_F",[-23.2368,2.26245,-0.00143909],90,true,true], + ["Land_BagFence_Long_F",[-21.8657,6.25952,-0.00143909],0,true,true], + ["Land_BagFence_Long_F",[-22.3657,-13.8772,-0.00143909],135,true,true], + ["Land_BagFence_Long_F",[-9.74268,-25.1174,-0.00143909],90,true,true], + ["Land_BagFence_Long_F",[-18.5649,-8.3147,-0.00143909],45,true,true], + ["Land_BagFence_Long_F",[-23.2368,4.88843,-0.00143909],90,true,true], + ["Land_BagFence_Long_F",[-25.2192,0.111084,-0.00143909],0,true,true], + ["Land_BagFence_Long_F",[-25.2192,-2.76587,-0.00143909],0,true,true], + ["Land_BagFence_Long_F",[-26.5884,-1.39282,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[-24.3989,-13.9709,-0.00143909],225,true,true], + ["Land_BagFence_Round_F",[-17.5747,-10.4006,-0.00143909],270,true,true], + ["Land_BagFence_Round_F",[-25.5493,-11.9026,-0.00143909],90,true,true], + ["Land_BagFence_Round_F",[-20.7212,-7.07642,-0.00143909],180,true,true], + ["Land_BagFence_End_F",[-9.7583,-23.3167,-0.00143909],270,true,true], + ["Land_Cargo_Patrol_V3_F",[-10.9263,-16.053,-0.00143862],45,true,true], + ["Land_Cargo_House_V3_F",[-3.09424,-20.7424,-0.00143909],180,true,true], + ["CamoNet_OPFOR_open_F",[-0.225098,8.17163,-0.00143909],0,true,true], + ["Land_HBarrier_3_F",[-1.85596,17.1208,-0.00143909],180,true,true], + ["Land_HBarrier_3_F",[-2.70752,19.4275,-0.00143909],90,true,true], + ["Land_HBarrier_Big_F",[-19.6177,9.36694,-0.00143909],270,true,true], + ["Land_HBarrier_Big_F",[-19.6646,17.5466,-0.00143909],90,true,true], + ["Land_HBarrier_1_F",[-4.93994,9.58374,-0.00143909],270,true,true], + ["Land_HBarrier_1_F",[-16.4673,27.1775,-0.00143909],285,true,true], + ["Land_HBarrier_1_F",[-2.68408,25.3513,-0.00143909],120,true,true], + ["Land_BagFence_Long_F",[-2.30908,23.7244,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[-19.7173,23.0505,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[-19.7153,25.9265,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[-18.3462,27.4314,-0.00143909],0,true,true], + ["Land_Cargo_Patrol_V3_F",[-15.4087,10.7146,-0.00143862],90,true,true], + ["Land_HBarrier_5_F",[-15.7407,14.7517,-0.00143909],0,true,true], + ["Land_HBarrier_5_F",[-6.33838,7.41382,-0.00143909],270,true,true], + ["Land_HBarrier_Big_F",[4.87646,-28.4124,-0.00143909],330,true,true], + ["Land_HBarrier_3_F",[10.5171,0.540771,-0.00143909],0,true,true], + ["Land_HBarrier_3_F",[11.3687,-7.17212,-0.00143909],270,true,true], + ["Land_HBarrier_Big_F",[23.0171,-13.6155,-0.00143909],285,true,true], + ["Land_HBarrier_Big_F",[3.04834,3.62964,-0.00143909],1.36604e-005,true,true], + ["Land_HBarrier_Big_F",[11.8745,-23.9084,-0.00143909],330,true,true], + ["Land_HBarrier_Big_F",[7.90967,0.343506,-0.00143909],90,true,true], + ["Land_HBarrier_Big_F",[24.978,-5.36938,-0.00143909],285,true,true], + ["Land_HBarrier_Big_F",[11.2808,-4.62427,-0.00143909],180,true,true], + ["Land_HBarrier_Big_F",[25.9077,2.68921,-0.00143909],270,true,true], + ["Land_HBarrier_1_F",[4.35498,-2.41431,-0.00143909],90,true,true], + ["Land_HBarrier_1_F",[21.0073,-21.7493,-0.00143909],30,true,true], + ["Land_BagFence_Long_F",[19.1304,-21.6174,-0.00143909],0,true,true], + ["Land_BagFence_Long_F",[16.5073,-21.6174,-0.00143909],0,true,true], + ["Land_BagFence_Long_F",[7.89795,6.07788,-0.00143909],270,true,true], + ["Land_Loudspeakers_F",[21.2026,-15.3088,-0.00143909],196,true,true], + ["Land_HBarrier_5_F",[17.7847,6.20483,-0.00143909],270,true,true], + ["Land_HBarrier_5_F",[11.3823,-11.5022,-0.00143909],270,true,true], + ["Land_HBarrier_5_F",[5.75146,-0.244385,-0.00143909],90,true,true], + ["Land_Cargo_House_V3_F",[5.49561,-9.99927,-0.00143909],90,true,true], + ["Land_Cargo_House_V3_F",[5.03076,-17.6174,-0.00143909],150,true,true], + ["CamoNet_OPFOR_open_F",[22.6538,9.88257,-0.00143909],270,true,true], + ["Land_HBarrier_3_F",[18.7593,9.75757,-0.00143909],0,true,true], + ["Land_HBarrier_Big_F",[9.20264,21.2849,-0.00143909],180,true,true], + ["Land_HBarrier_Big_F",[15.9546,18.7849,-0.00143909],225,true,true], + ["Land_HBarrier_Big_F",[22.4077,16.1892,-0.00143909],0,true,true], + ["Land_HBarrier_Big_F",[0.70459,21.283,-0.00143909],180,true,true], + ["Land_HBarrier_Big_F",[25.7827,11.0642,-0.00143909],90,true,true], + ["Land_BagFence_Long_F",[4.57764,19.0466,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[4.57764,16.1716,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[11.3843,19.2634,-0.00143909],90,true,true], + ["Land_BagFence_End_F",[4.57764,14.4216,-0.00143909],90,true,true], + ["Land_BagFence_End_F",[7.68896,7.77515,-0.00143909],240,true,true], + ["Land_BagFence_End_F",[11.3843,17.5134,-0.00143909],90,true,true] +]; + +_missionLootBoxes = [ + ["B_supplyCrate_F",[1.55273,0.0065918,-0.00143957],_crateLoot,_lootCounts,0.000522983] +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["B_LSV_01_armed_F",[-41.377,-5.40894,-0.0238895],0.00171121], + ["B_LSV_01_armed_F",[39.5627,-5.26709,-0.0237107],0.00169144] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = [ + ["B_HMG_01_high_F",[-8.31958,-28.7351,-0.0135579],359.998], + ["B_HMG_01_high_F",[-25.1523,-1.33643,-0.0135579],359.999], + ["B_HMG_01_high_F",[-23.7974,-12.0527,-0.0135579],359.998], + ["B_HMG_01_high_F",[-18.7363,-10.283,-0.0135579],359.998], + ["B_HMG_01_high_F",[-21.9993,4.10132,-0.0135579],359.999], + ["B_HMG_01_high_F",[-18.2954,25.033,-0.0135579],359.999], + ["B_HMG_01_high_F",[-0.275879,18.9167,-0.0135579],0.000433404], + ["B_HMG_01_high_F",[18.0608,-20.4434,-0.0135579],359.999], + ["B_HMG_01_high_F",[5.96338,-3.91113,-0.0135593],286.946] +]; + +_missionGroups = [ + //[[-2.42578,-9.81299,0],3,6,"Red",30,45], + //[[-16.3196,-3.59033,0],3,6,"Red",30,45], + //[[-4.65015,-0.520264,0],3,6,"Red",30,45], + //[[-7.48169,-14.3093,0],3,6,"Red",30,45], + //[[-5.94653,-0.124756,0],3,6,"Red",30,45], + //[[20.2122,-6.24878,0],3,6,"Red",30,45], + //[[20.0557,6.34253,0],3,6,"Red",30,45], + [[15.1677,-10.6943,0],3,6,"Red",30,45], + [[2.0083,-14.293,-4.76837e-007],3,6,"Red",30,45], + [[1.84692,-7.56616,-4.76837e-007],3,6,"Red",30,45], + [[2.71069,-14.7263,-4.76837e-007],3,6,"Red",30,45], + [[2.50513,-13.1191,0],3,6,"Red",30,45], + [[13.8992,11.4729,0],3,6,"Red",30,45], + [[3.75098,11.2024,0],3,6,"Red",30,45], + [[18.3645,19.8477,0],3,6,"Red",30,45], + [[3.17798,26.7761,0],3,6,"Red",30,45] +]; + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Orange; +_maxNoAI = blck_MaxAI_Orange; +_noAIGroups = blck_AIGrps_Orange; +_noVehiclePatrols = blck_SpawnVeh_Orange; +_noEmplacedWeapons = blck_SpawnEmplaced_Orange; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "orange"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +//_endCondition = "playerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/carThieves.sqf b/@GMS/addons/custom_server/Missions/Red/carThieves.sqf new file mode 100644 index 0000000..66e5a6b --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Red/carThieves.sqf @@ -0,0 +1,74 @@ +/* +Mission Compositions by Ghostrider [GRG] for ghostridergaming +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Red Mission with template = default"; +_crateLoot = blck_BoxLoot_Red; +_lootCounts = blck_lootCountsRed; +_startMsg = "Car thieves were sighted in a nearby sector! Check the Red marker on your map for the location!"; +_endMsg = "The Sector at the Red Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ellipse",[200,200],"GRID"]; +_markerColor = "ColorRed"; +_markerMissionName = "Thieves"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" +_missionLandscape = [ + ["Flag_AAF_F",[4,4,0],0,[false,false]], + ["Land_i_Garage_V2_F",[3.875,-30.1152,0],252.899,[true,true]], + ["Land_i_Garage_V2_F",[-17.2246,28.0176,-0.00298452],65.4825,[true,true]], + ["Land_i_House_Big_02_V2_F",[30.9844,14.6074,-2.38419e-007],77.0403,[true,true]], + ["Land_i_House_Big_01_V3_F",[-42.3359,-7.80469,2.38419e-007],343.548,[true,true]], + ["Land_Wreck_Truck_F",[48.3457,-1.48242,0],0,[false,false]], + ["Land_Wreck_Car2_F",[34.3457,-12.3398,2.38419e-007],0,[false,false]], + ["Land_Wreck_Car3_F",[23.7402,-24.3887,0],0,[false,false]], + ["Land_Wreck_Hunter_F",[21.4395,-35.9492,2.38419e-007],0,[false,false]], + ["Land_Wreck_Van_F",[14.5645,21.1934,-0.000167847],0,[false,false]], + ["Land_Wreck_Offroad_F",[12.6328,29.0918,0.000607967],0,[false,false]], + ["Land_Wreck_Offroad2_F",[-0.875,27.1035,0.00187802],0,[false,false]], + ["Land_Wreck_UAZ_F",[-24.3984,22.4688,-0.000131845],0,[false,false]], + ["Land_Wreck_Ural_F",[-31.2441,18.7832,-1.90735e-006],0,[false,false]], + ["Land_Wreck_Truck_dropside_F",[-35.7227,7.54883,2.38419e-007],0,[false,false]], + ["Land_Wreck_Heli_Attack_01_F",[-34.1113,27.1094,0.00630307],0,[false,false]], + ["Land_Wreck_Heli_Attack_01_F",[-5.27734,-35.4395,2.38419e-007],0,[false,false]], + ["Land_Wreck_Heli_Attack_02_F",[-15.1113,-41.4531,0],0,[false,false]], + ["Land_UWreck_Heli_Attack_02_F",[-24.7617,-27.7559,0],0,[false,false]], + ["Land_HistoricalPlaneDebris_04_F",[-15.4902,-27.8711,0],0,[false,false]], + ["Land_HistoricalPlaneDebris_03_F",[-42.4453,13.793,0],0,[false,false]], + ["Land_HistoricalPlaneDebris_02_F",[35.041,-24.9219,0],0,[false,false]], + ["Land_HistoricalPlaneDebris_01_F",[42.6582,-17.5762,0],0,[false,false]], + ["Land_Wreck_Slammer_hull_F",[25.1035,30.7656,0.00311899],0,[false,false]], + ["Land_Wreck_Slammer_F",[-5.16797,38.9414,0.0154414],0,[false,false]], + ["Land_CargoBox_V1_F",[-9.66406,-16.6582,0],0,[false,false]], + ["Land_Cargo40_blue_F",[6.50195,-19.627,0],154.788,[false,false]], + ["Land_Cargo40_blue_F",[-7.36914,-23.0078,0],0,[false,false]], + ["Land_Cargo40_blue_F",[-19.6152,-18.0742,0],41.2042,[false,false]], + ["Land_CncBarrier_F",[-6.70508,9.58203,0],141.162,[false,false]], + ["Land_CncBarrierMedium4_F",[4.69141,12.666,0],0,[false,false]], + //["Land_CncBarrierMedium4_F",[-11.3613,5.03516,0],136.997,[false,false]], + ["Land_CncBarrierMedium4_F",[-17.4824,-0.664063,0],136.997,[false,false]], + ["Land_CncBarrierMedium4_F",[-22.625,-7.21289,0],301.167,[false,false]] + +]; // list of objects to spawn as landscape +_missionLootBoxes = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. +_missionLootVehicles = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. +_missionEmplacedWeapons = []; // can be used to define the precise placement of static weapons [[1,2,3] /*loc 1*/, [2,3,4] /*loc 2*/]; if blank random locations will be used +_minNoAI = blck_MinAI_Red; +_maxNoAI = blck_MaxAI_Red; +_noAIGroups = blck_AIGrps_Red; +_noVehiclePatrols = blck_SpawnVeh_Red; +_noEmplacedWeapons = blck_SpawnEmplaced_Red; +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +#ifdef blck_useCUP +_uniforms = blck_CUPUniforms; +_weaponList = blck_CUPWeapons; +_vests = blck_CUPVests; +_backpacs = blck_CUPBackpacks; +_headgear = blck_CUPHeadgear; +#endif + +//_endCondition = "playerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf b/@GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf index 9f5615a..9b4d7b6 100644 --- a/@GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf +++ b/@GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf @@ -34,8 +34,8 @@ switch (toLower worldName) do blck_mapRange = 6000; }; case "livonia":{ - blck_mapCenter = [6500,6500,0]; - blck_mapRange = 6100; + blck_mapCenter = [6500,6000,0]; + blck_mapRange = 5800; }; case "gm_weferlingen_summer":{ blck_mapCenter = [10000,10000,0]; diff --git a/@GMS/addons/custom_server/init/build.sqf b/@GMS/addons/custom_server/init/build.sqf index e3af767..1a19199 100644 --- a/@GMS/addons/custom_server/init/build.sqf +++ b/@GMS/addons/custom_server/init/build.sqf @@ -1,4 +1,4 @@ -#define blck_buildNumber 212 +#define blck_buildNumber 214 #define blck_versionNumber 7.00 -#define blck_buildDate "7-29-20" +#define blck_buildDate "8-1-20" From 170035504a2cc225c5f8284b7097924b855eaae9 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Sun, 2 Aug 2020 08:06:32 -0400 Subject: [PATCH 03/25] added some new credits --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index fb4c8ff..b77bc58 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,9 @@ Included is an updated version of blckeagls mission system. This began as an eff * Credits Epoch Mod developer team. blckeagls - Mission system 2.0.2 + Thomas_TKO for new missions + poreid for endless testing and feedback + Schalldampfer for bug reports and coding tips Grahame for suggestions for new features, coding improvements and updates to the Epoch-specific Configs. Narines - bug fixes and improvements. Bill (DBD Clan) for example compositions. From b870dfbfd0bc127c18808e269542cf9ab528554b Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Sun, 2 Aug 2020 08:08:27 -0400 Subject: [PATCH 04/25] Updated Changelog --- changeLog.sqf | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/changeLog.sqf b/changeLog.sqf index c7cc4eb..d44ab2d 100644 --- a/changeLog.sqf +++ b/changeLog.sqf @@ -5,9 +5,23 @@ Contributions by Narines: bug fixes, testing, infinite ammo fix. Ideas or code from that by He-Man, Vampire and KiloSwiss have been used for certain functions. Many thanks for new Coding and ideas from Grahame. + + Significant Changes: + ===================== -6.98 Build 205 +7.00 Build 212 +New: +Fixed: Don and Hostage missions could not be completed +Fixed: Missions tended to spawn all at once +Fixed: vehicles are spawned at a safe spot which should reduce unintended explosions +Fixed: Missions sometimes spawned on steep hillsides. +Fixed: Vehicles sometimes blew up on spawn. +Added: The system has been upgreaded to a state-based system, meaning one scrpt is running once all missions are initialized. +Changed: a lot of debugging was removed. + + +6.98 Build 206 FIXED: few minor bug fixes. FIXED: Static Mission Loot vehicles are no longer deleted by Epoch servers when players enter them. FIXED: an error in coordinates for some randomly spawned missions tha added an extra 0 to the array with the coordinaates. @@ -28,8 +42,11 @@ Removed: some debugging and map sepcific settings from blck_custom_config.sqf Changed: some code for finding locations for a new mission. Added: all blckeagls map markers have the same prefix: "blckeagls_marker" -Known Issues - - Live AI Counts are sometimes inaccurate at UMS Dynamic Missions + + + + + 6.96 Build 199 Added support for Arma servers not running Epoch or Exile From ffd41d0025d4b651588098f4aa4f004ff1499903 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Thu, 6 Aug 2020 01:02:58 -0400 Subject: [PATCH 05/25] Build 214 - improvements in finding mission positions --- .../Functions/GMS_fnc_findSafePosn.sqf | 145 ++++++++++++++---- .../GMS_fnc_monitorInitializedMissions.sqf | 7 +- .../custom_server/Configs/blck_configs.sqf | 16 +- .../Configs/blck_configs_mil.sqf | 6 +- 4 files changed, 130 insertions(+), 44 deletions(-) diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf index 5af818f..a7e28d3 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf @@ -8,6 +8,13 @@ All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. http://creativecommons.org/licenses/by-nc-sa/4.0/ + + Notes: cosine acute angle = hypotenuse / opposite. We always know the opposite = 1/2 mapsize so if we pick a random angle, we can calculate distance to edge of map. + Thus, we can have a random direction, calculate distance to the map edge as cos(direction - east/south/west/north angle) * 1/2 mapsize. Then, we can use 1/2 the lenght of the hypotenuse as the search range. + In this way we can reduce the radius of the search by about 1/2 and ensure a wider range of terrain is selected. + + However, if we use this approach, we risk having some missions spawn outside the map so much check for that. + It may be quicker just to pick a random angle and use 1/2 map size to search a position obtained by getPos[(1/2 mapSize),random(359)]; to pick that random seed location for the search. */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; @@ -51,54 +58,134 @@ _fn_buildBlacklistedLocationsList = { _blacklistedLocs }; +_fnc_nearWater = { + private _result = false; + private _coords = _this select 0; + private _radius = _this select 1; + + for "_i" from 0 to 359 step 45 do { + //_checkposition = [(_coords select 0) + (sin(_i)*_radius), (_coords select 1) + (cos(_i)*_radius)]; + //_checkposition2 = [(_coords select 0) + (sin(_i)*_radius/2), (_coords select 1) + (cos(_i)*_radius/2)]; + //_checkPosition = _coords getPos[_radius, _i]; + if (surfaceIsWater (_coords getPos[_radius, _i])) exitWith { + _result = true; + }; + }; + _result +}; + private _minDistToBases = blck_minDistanceToBases; private _minDistToPlayers = blck_minDistanceToPlayer; private _minDistToTowns = blck_minDistanceFromTowns; private _mindistToMissions = blck_MinDistanceFromMission; private _minToRecentMissionLocation = 200; +private _keyDistances = [_minDistToBases,_minDistToPlayers,_minDistToTowns,_minToRecentMissionLocation]; private _coords = []; -private _blacklistedLocations = [_minDistToBases,_minDistToPlayers,_minDistToTowns,_mindistToMissions,_minToRecentMissionLocation] call _fn_buildBlacklistedLocationsList; +//private _blacklistedLocations = [_minDistToBases,_minDistToPlayers,_minDistToTowns,_mindistToMissions,_minToRecentMissionLocation] call _fn_buildBlacklistedLocationsList; private _count = 25; -private "_isFlatCoords"; -private _slope = 0.10; - -_coords = [blck_mapCenter,0,blck_mapRange,10,0,_slope,0,_blacklistedLocations] call BIS_fnc_findSafePos; -if !(_coords isEqualTo []) then +private _flatCoords = []; +private _slope = 0.15; +private _searchDist = blck_mapRange / 2; +private _timeIn = diag_tickTime; +private _validspot = false; +while { !_validspot} do { - _isFlatCoords = _coords isFlatEmpty [10,0,_slope,30,0,false]; -}; + private _angle = random(359); + private _searchCenter = blck_mapCenter getPos[_searchDist, random(359)]; + _coords = [_searchCenter,0,_searchDist,10,0,_slope,0] call BIS_fnc_findSafePos; -while { (_isFlatCoords isEqualTo [] || _coords isEqualTo []) && _count > 0} do -{ - - _coords = [blck_mapCenter,0,blck_mapRange,10,0,_slope,0,_blacklistedLocations] call BIS_fnc_findSafePos; - /* Check whether the location is flat enough: returns [] if not. */ - // position isFlatEmpty [minDistance, mode, maxGradient, maxGradientRadius, overLandOrWater, shoreLine, ignoreObject] - - if !(_coords isEqualTo []) then + if (_coords isEqualTo []) then { - _isFlatCoords = _coords isFlatEmpty [10,0,_slope,30,0,false]; - }; - - if (_coords isEqualTo [] || !(_isFlatCoords isEqualTo [])) then - { - { - //private _range = (_x select 1) * 0.7; - _x set[1,(_x select 1) * 0.75]; - } forEach _blackListedLocations; _count = _count - 1; _slope = _slope + 0.02; - uiSleep 0.1; + uiSleep 0.1; // to give the server a chance to handle other jobs for a moment + } else { + + //uiSleep 1; + _validspot = true; + + if (count _coords > 2) then { + _validspot = false; + }; + if(_validspot) then { + if ([_coords,500] call _fnc_nearWater) then { + _validspot = false; + }; + }; + if(_validspot) then { + _isflat = _coords isFlatEmpty [20,0,0.5,100,0,false]; + if (_isflat isequalto []) then { + _validspot = false; + }; + }; + if(_validspot) then { + { + if (_coords distance _x < blck_MinDistanceFromMission) exitwith { + _validspot = false; + }; + } foreach (blck_ActiveMissionCoords); + }; + + // Check for near Bases + if(_validspot) then { + if (blck_modType isEqualTo "Epoch") then { + { + if (_coords distance _x < blck_minDistanceToBases) exitwith { + _validspot = false; + }; + } foreach (missionnamespace getvariable ["Epoch_PlotPoles",[]]); + } + else { + if (blck_modType isEqualTo "Exile") then { + { + if (_coords distance _x < blck_minDistanceToBases) exitwith { + _validspot = false; + }; + } foreach (nearestObjects [blck_mapCenter, ["Exile_Construction_Flag_Static"], blck_mapRange + 25000]); + }; + }; + }; + + // Check for near Players + if(_validspot) then { + { + if (_coords distance _x < blck_minDistanceToPlayer) exitwith { + _validspot = false; + }; + } foreach allplayers; + }; + + // Check for near locations + if (_validspot) then { + { + if (_coords distance (_x select 0) < (_x select 1)) exitWith { + _validspot = false; + }; + } forEach blck_locationBlackList; + }; + + // Check for DMS missions + if (blck_minDistanceFromDMS > 0 && _validspot) then + { + { + if (_coords distance _x < blck_minDistanceFromDMS) exitWith { + _validspot = false; + }; + } forEach ([] call blck_fnc_getAllDMSMarkers); + }; + }; + //diag_log format["_fnc_findSafePosn: _coords = %1 | _flatCoords = %2 | _searchCenter = %3 | _angle %4 | _count = %5 | _validSpot = %6",_coords,_flatCoords,_searchCenter,_angle,_count,_validspot]; }; -if (_coords isEqualTo [] || _isFlatCoords isEqualTo []) then +if (_coords isEqualTo []) then { diag_log format["[blckeagls] Could not find a safe position for a mission, consider reducing values for minimum distances between missions and players, bases, other missions or towns"]; } else { - _isFlatCoords set[2, 0]; + _coords set[2, 0]; + diag_log format["_fnc_findSafePosn: _exit with _coords = %1 | time spent = %2",_coords,diag_tickTime - _timeIn]; }; -_isFlatCoords +_coords diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_monitorInitializedMissions.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_monitorInitializedMissions.sqf index a6a5aeb..db67a66 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_monitorInitializedMissions.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_monitorInitializedMissions.sqf @@ -268,8 +268,9 @@ _missionParameters params[ }; }; uiSleep delayTime; - - if (_spawnCratesTiming isEqualTo "atMissionSpawnGround") then + if (blck_debugLevel >= 3) then {diag_log format["monitorInitializedMissions: _spawnCrateTiming = %1 _loadCratesTiming = %2 | _markerMissionName = %3",_spawnCratesTiming,_loadCratesTiming, _markerMissionName]}; + if (blck_debugLevel >= 3) then {diag_log format["monitorInitializedMissions: _missionLootBoxes = %1",_missionLootBoxes]}; + if (_spawnCratesTiming in ["atMissionSpawnGround","atMissionStartAir"]) then { if (_missionLootBoxes isEqualTo []) then { @@ -306,7 +307,6 @@ _missionParameters params[ // Everything spawned withouth serous errors so lets keep the mission active for future monitoring blck_activeMissionsList pushBack _el; - if (blck_debugOn) then {[format["Spawned Mission %1 | description %2 | difficulty %3 at %4",_markerName, _markerMissionName, _difficulty, diag_tickTime]] call blck_fnc_log;} } catch @@ -478,7 +478,6 @@ _missionParameters params[ _waitTime = diag_tickTime + _tMin + random(_tMax - _tMin); _missionCategoryDescriptors set [noActive,_noActive - 1]; _missionCategoryDescriptors set [waitTime,_waitTime]; - if (blck_debugOn) then {[format["Ended Mission %1 | description %2 | difficulty %3 at %4",_markerName, _markerMissionName, _difficulty, diag_tickTime]] call blck_fnc_log;} }; case 2: { // Abort, crate moved. _endMsg = "Crate Removed from Mission Site Before Mission Completion: Mission Aborted"; diff --git a/@GMS/addons/custom_server/Configs/blck_configs.sqf b/@GMS/addons/custom_server/Configs/blck_configs.sqf index 491377a..e431e94 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs.sqf @@ -17,8 +17,8 @@ changing any of these variables may break the mission systemChat */ blck_locationBlackList = []; // Do not touch ... - blck_debugON = true; // Do not touch ... - blck_debugLevel = 3; // Do not touch ... + blck_debugON = false; // Do not touch ... + blck_debugLevel = 0; // Do not touch ... #ifdef blck_milServer if (true) exitWith { @@ -100,8 +100,8 @@ blck_showCountAliveAI = true; //Minimum distance between missions - blck_MinDistanceFromMission = 800; - blck_minDistanceToBases = 1000; + blck_MinDistanceFromMission = 2000; + blck_minDistanceToBases = 800; blck_minDistanceToPlayer = 800; blck_minDistanceFromTowns = 400; blck_minDistanceFromDMS = 800; // minimum distance for a blackeagls mission from any nearby DMS missions. set to -1 to disable this check. @@ -122,7 +122,7 @@ /////////////////////////////// blck_killPercentage = 0.999999; // The mission will complete if this fraction of the total AI spawned has been killed. // This facilitates mission completion when one or two AI are spawned into objects. - blck_spawnCratesTiming = "atMissionSpawnGround"; // Choices: "atMissionSpawnGround","atMissionEndGround","atMissionEndAir". + blck_spawnCratesTiming = "atMissionSpawnGround"; // Choices: "atMissionSpawnGround","atMissionStartAir","atMissionEndGround","atMissionEndAir". // Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute. // This sets the default value but can be overridden by defining _spawnCrateTiming in the file defining a particular mission. blck_loadCratesTiming = "atMissionSpawn"; // valid choices are "atMissionCompletion" and "atMissionSpawn"; @@ -145,10 +145,10 @@ blck_VK_Gear = true; // When set to true, AI that have been killed by a player in a vehicle in the list of forbidden vehicles or using a forbiden gun will be stripped of gear and the vehicle will be given blck_RunGearDamage of damage blck_VK_RunoverDamage = true; // when the AI was run over blck_RunGearDamage of damage will be applied to the killer's vehicle. blck_VK_GunnerDamage = false; // when the AI was killed by a gunner on a vehicle that is is in the list of forbidden vehicles, blck_RunGearDamage of damage will be applied to the killer's vehicle each time an AI is killed with a vehicle's gun. - blck_forbidenVehicles = ["B_MRAP_01_hmg_F","O_MRAP_02_hmg_F","I_MRAP_03_hmg_F","B_MRAP_01_hmg_F","O_MRAP_02_hmg_F"]; // Add any vehicles for which you wish to forbid vehicle kills + blck_forbidenVehicles = []; // Examples include ["B_MRAP_01_hmg_F","O_MRAP_02_hmg_F","I_MRAP_03_hmg_F","B_MRAP_01_hmg_F","O_MRAP_02_hmg_F"]; // Add any vehicles for which you wish to forbid vehicle kills // For a listing of the guns mounted on various land vehicles see the following link: https://community.bistudio.com/wiki/Arma_3_CfgWeapons_Vehicle_Weapons // HMG_M2 is mounted on the armed offroad that is spawned by Epoch - blck_forbidenVehicleGuns = ["LMG_RCWS","LMG_M200","HMG_127","HMG_127_APC","HMG_M2","HMG_NSVT","GMG_40mm","GMG_UGV_40mm","autocannon_40mm_CTWS","autocannon_30mm_CTWS","autocannon_35mm","LMG_coax","autocannon_30mm","HMG_127_LSV_01"]; // Add any vehicles for which you wish to forbid vehicle kills, o + blck_forbidenVehicleGuns = []; // examples include["LMG_RCWS","LMG_M200","HMG_127","HMG_127_APC","HMG_M2","HMG_NSVT","GMG_40mm","GMG_UGV_40mm","autocannon_40mm_CTWS","autocannon_30mm_CTWS","autocannon_35mm","LMG_coax","autocannon_30mm","HMG_127_LSV_01"]; // Add any vehicles for which you wish to forbid vehicle kills, o /////////////////////////////// @@ -242,7 +242,7 @@ // Change this value to reduce the number of spawned missions at any one time. - blck_maxSpawnedMissions = 9; + blck_maxSpawnedMissions = 15; // Reduce to 1 sec for immediate spawns, or longer if you wish to space the missions out blck_TMin_Orange = 480; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf index b4a0b17..476ff73 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf @@ -76,8 +76,8 @@ blck_showCountAliveAI = true; //Minimum distance between missions - blck_MinDistanceFromMission = 800; - blck_minDistanceToBases = 500; + blck_MinDistanceFromMission = 2000; + blck_minDistanceToBases = 800; blck_minDistanceToPlayer = 500; blck_minDistanceFromTowns = 300; blck_minDistanceFromDMS = 500; // minimum distance for a blackeagls mission from any nearby DMS missions. set to -1 to disable this check. @@ -89,7 +89,7 @@ // global loot crate options // Options to spawn a smoking wreck near the crate. When the first parameter is true, a wreck or junk pile will be spawned. // It's position can be either "center" or "random". smoking wreck will be spawned at a random location between 15 and 50 m from the mission. - blck_SmokeAtMissions = [false,"random"]; // set to [false,"anything here"] to disable this function altogether. + blck_SmokeAtMissions = [true,"random"]; // set to [false,"anything here"] to disable this function altogether. blck_useSignalEnd = true; // When true a smoke grenade/chemlight will appear at the loot crate for 2 min after mission completion. /////////////////////////////// From 4c83429b960dd8aefe80f10968624c057d067bac Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Thu, 6 Aug 2020 23:47:52 -0400 Subject: [PATCH 06/25] Fix for UMS with the new mission spawner --- .../Configs/blck_configs_default.sqf | 98 ++++++++++++++++++- .../Configs/blck_configs_default_mil.sqf | 90 ++++++++++++++++- .../Configs/blck_configs_epoch.sqf | 87 +++++++++++++++- .../Configs/blck_configs_epoch_mil.sqf | 94 ++++++++++++++++-- .../Configs/blck_configs_exile.sqf | 88 ++++++++++++++++- .../Configs/blck_configs_exile_mil.sqf | 85 +++++++++++++++- .../Missions/GMS_missionLists.sqf | 3 + .../Missions/UMS/GMS_UMS_configurations.sqf | 4 +- .../Missions/UMS/GMS_UMS_init.sqf | 2 +- @GMS/addons/custom_server/changeLog.sqf | 8 +- .../custom_server/init/blck_init_server.sqf | 5 +- @GMS/addons/custom_server/init/build.sqf | 2 +- changeLog.sqf | 5 +- 13 files changed, 537 insertions(+), 34 deletions(-) diff --git a/@GMS/addons/custom_server/Configs/blck_configs_default.sqf b/@GMS/addons/custom_server/Configs/blck_configs_default.sqf index 3b78722..c2d43e0 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_default.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_default.sqf @@ -45,6 +45,8 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_crateMoneyRed = [175, 300]; blck_crateMoneyGreen = [300, 500]; blck_crateMoneyOrange = [500, 750]; + + blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type. blck_allowSalesAtBlackMktTraders = true; // Allow vehicles to be sold at Halvjes black market traders. @@ -63,6 +65,18 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR "I_APC_Wheeled_03_cannon_F" ]; + blck_light_AT_ARMA3 = [ + "O_G_Offroad_01_AT_F", + "B_G_Offroad_01_AT_F", + "O_T_LSV_02_AT_F", + "O_LSV_02_AT_F", + "B_T_LSV_01_AT_F", + "B_LSV_01_AT_F" + ]; + blck_tracked_AA_ARMA3 = [ + "O_APC_Tracked_02_AA_F", + "B_APC_Tracked_01_AA_F" + ]; blck_tracked_APC_ARMA3 = [ "B_APC_Tracked_01_rcws_F", "B_APC_Tracked_01_CRV_F", @@ -523,6 +537,87 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_NVG = ["NVG"]; blck_buildingMaterials = []; + blck_UMS_uniforms = + [ + "U_I_Wetsuit", + "U_O_Wetsuit", + "U_B_Wetsuit" + ]; + + blck_UMS_headgear = + [ + "G_Diving", + "G_B_Diving", + "G_O_Diving", + "G_I_Diving" + ]; + + blck_UMS_vests = + [ + "V_RebreatherB", + "V_RebreatherIA", + "V_RebreatherIR" + ]; + + blck_UMS_weapons = + [ + "arifle_SDAR_F" + ]; + + if ((tolower blck_modType) isEqualTo "exile") then + { + blck_UMS_submarines = + [ + + "Exile_Boat_SDV_CSAT", + "Exile_Boat_SDV_Digital", + "Exile_Boat_SDV_Grey" + ]; + + blck_UMS_crates = ["Exile_Container_SupplyBox"]; + }; + if ((tolower blck_modType) isEqualTo "epoch") then + { + blck_UMS_submarines = ["B_SDV_01_EPOCH"]; + blck_UMS_crates = blck_crateTypes; + //blck_UMS_crates = ["container_epoch"]; + }; + if ((toLower blck_modType) isEqualTo "default") then + { + blck_UMS_submarines = + [ + + "Exile_Boat_SDV_CSAT", + "Exile_Boat_SDV_Digital", + "Exile_Boat_SDV_Grey" + ]; + + blck_UMS_crates = blck_crateTypes; + + }; + + blck_UMS_unarmedSurfaceVessels = + [ + "B_Boat_Transport_01_F", + "I_Boat_Transport_01_F" + ]; + blck_UMS_armedSurfaceVessels = + [ + "B_Boat_Armed_01_minigun_F", + "I_Boat_Armed_01_minigun_F" + ]; + blck_UMS_surfaceVessels = blck_UMS_unarmedSurfaceVessels + blck_UMS_armedSurfaceVessels; + blck_UMS_shipWrecks = + [ + "Land_Boat_06_wreck_F", + "Land_Boat_05_wreck_F", + "Land_Boat_04_wreck_F", + "Land_Boat_02_abandoned_F", + "Land_Boat_01_abandoned_red_F", + "Land_Boat_01_abandoned_blue_F" + ]; + + /*************************************************************************************** DEFAULT CONTENTS OF LOOT CRATES FOR EACH MISSION Note however that these configurations can be used in any way you like or replaced with mission-specific customized loot arrays @@ -869,8 +964,5 @@ blck_contructionLoot = blck_BoxLoot_Orange; blck_highPoweredLoot = blck_BoxLoot_Orange; blck_supportLoot = blck_BoxLoot_Orange; - -blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type. - diag_log "[blckeagls] Default Configurations Loaded"; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_default_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_default_mil.sqf index 3b78722..54c5125 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_default_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_default_mil.sqf @@ -12,7 +12,7 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; #include "\q\addons\custom_server\init\build.sqf"; -diag_log format["[blckeagls] loading default configurations for blckeagls build %1",blck_buildNumber]; +//diag_log format["[blckeagls] loading default configurations for blckeagls build %1",blck_buildNumber]; //////////// // default settings //////////// @@ -45,6 +45,9 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_crateMoneyRed = [175, 300]; blck_crateMoneyGreen = [300, 500]; blck_crateMoneyOrange = [500, 750]; + + + blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type. blck_allowSalesAtBlackMktTraders = true; // Allow vehicles to be sold at Halvjes black market traders. @@ -506,7 +509,87 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_vests_red = blck_vests; blck_vests_green = blck_vests; blck_vests_orange = blck_vests; - + + blck_UMS_uniforms = + [ + "U_I_Wetsuit", + "U_O_Wetsuit", + "U_B_Wetsuit" + ]; + + blck_UMS_headgear = + [ + "G_Diving", + "G_B_Diving", + "G_O_Diving", + "G_I_Diving" + ]; + + blck_UMS_vests = + [ + "V_RebreatherB", + "V_RebreatherIA", + "V_RebreatherIR" + ]; + + blck_UMS_weapons = + [ + "arifle_SDAR_F" + ]; + + if ((tolower blck_modType) isEqualTo "exile") then + { + blck_UMS_submarines = + [ + + "Exile_Boat_SDV_CSAT", + "Exile_Boat_SDV_Digital", + "Exile_Boat_SDV_Grey" + ]; + + blck_UMS_crates = ["Exile_Container_SupplyBox"]; + }; + if ((tolower blck_modType) isEqualTo "epoch") then + { + blck_UMS_submarines = ["B_SDV_01_EPOCH"]; + blck_UMS_crates = blck_crateTypes; + //blck_UMS_crates = ["container_epoch"]; + }; + if ((toLower blck_modType) isEqualTo "default") then + { + blck_UMS_submarines = + [ + + "Exile_Boat_SDV_CSAT", + "Exile_Boat_SDV_Digital", + "Exile_Boat_SDV_Grey" + ]; + + blck_UMS_crates = blck_crateTypes; + + }; + + blck_UMS_unarmedSurfaceVessels = + [ + "B_Boat_Transport_01_F", + "I_Boat_Transport_01_F" + ]; + blck_UMS_armedSurfaceVessels = + [ + "B_Boat_Armed_01_minigun_F", + "I_Boat_Armed_01_minigun_F" + ]; + blck_UMS_surfaceVessels = blck_UMS_unarmedSurfaceVessels + blck_UMS_armedSurfaceVessels; + blck_UMS_shipWrecks = + [ + "Land_Boat_06_wreck_F", + "Land_Boat_05_wreck_F", + "Land_Boat_04_wreck_F", + "Land_Boat_02_abandoned_F", + "Land_Boat_01_abandoned_red_F", + "Land_Boat_01_abandoned_blue_F" + ]; + //CraftingFood blck_Meats=[ ]; @@ -869,8 +952,5 @@ blck_contructionLoot = blck_BoxLoot_Orange; blck_highPoweredLoot = blck_BoxLoot_Orange; blck_supportLoot = blck_BoxLoot_Orange; - -blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type. - diag_log "[blckeagls] Default Configurations Loaded"; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf b/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf index fb54a89..a4d56a6 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf @@ -45,6 +45,8 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_crateMoneyRed = [175, 300]; blck_crateMoneyGreen = [300, 500]; blck_crateMoneyOrange = [500, 750]; + + blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type. blck_allowSalesAtBlackMktTraders = true; // Allow vehicles to be sold at Halvjes black market traders. @@ -515,7 +517,87 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_vests_red = blck_vests; blck_vests_green = blck_vests; blck_vests_orange = blck_vests; - + + blck_UMS_uniforms = + [ + "U_I_Wetsuit", + "U_O_Wetsuit", + "U_B_Wetsuit" + ]; + + blck_UMS_headgear = + [ + "G_Diving", + "G_B_Diving", + "G_O_Diving", + "G_I_Diving" + ]; + + blck_UMS_vests = + [ + "V_RebreatherB", + "V_RebreatherIA", + "V_RebreatherIR" + ]; + + blck_UMS_weapons = + [ + "arifle_SDAR_F" + ]; + + if ((tolower blck_modType) isEqualTo "exile") then + { + blck_UMS_submarines = + [ + + "Exile_Boat_SDV_CSAT", + "Exile_Boat_SDV_Digital", + "Exile_Boat_SDV_Grey" + ]; + + blck_UMS_crates = ["Exile_Container_SupplyBox"]; + }; + if ((tolower blck_modType) isEqualTo "epoch") then + { + blck_UMS_submarines = ["B_SDV_01_EPOCH"]; + blck_UMS_crates = blck_crateTypes; + //blck_UMS_crates = ["container_epoch"]; + }; + if ((toLower blck_modType) isEqualTo "default") then + { + blck_UMS_submarines = + [ + + "Exile_Boat_SDV_CSAT", + "Exile_Boat_SDV_Digital", + "Exile_Boat_SDV_Grey" + ]; + + blck_UMS_crates = blck_crateTypes; + + }; + + blck_UMS_unarmedSurfaceVessels = + [ + "B_Boat_Transport_01_F", + "I_Boat_Transport_01_F" + ]; + blck_UMS_armedSurfaceVessels = + [ + "B_Boat_Armed_01_minigun_F", + "I_Boat_Armed_01_minigun_F" + ]; + blck_UMS_surfaceVessels = blck_UMS_unarmedSurfaceVessels + blck_UMS_armedSurfaceVessels; + blck_UMS_shipWrecks = + [ + "Land_Boat_06_wreck_F", + "Land_Boat_05_wreck_F", + "Land_Boat_04_wreck_F", + "Land_Boat_02_abandoned_F", + "Land_Boat_01_abandoned_red_F", + "Land_Boat_01_abandoned_blue_F" + ]; + //CraftingFood blck_Meats=[ "SnakeCarcass_EPOCH","RabbitCarcass_EPOCH","ChickenCarcass_EPOCH","GoatCarcass_EPOCH","SheepCarcass_EPOCH","DogCarcass_EPOCH","ItemTrout","ItemSeaBass","ItemTuna" @@ -1095,8 +1177,5 @@ blck_contructionLoot = blck_BoxLoot_Orange; blck_highPoweredLoot = blck_BoxLoot_Orange; blck_supportLoot = blck_BoxLoot_Orange; - -blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type. - diag_log "[blckeagls] Configurations for Epoch Loaded"; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf index cd4c22d..64d7ed9 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf @@ -45,6 +45,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_crateMoneyRed = [175, 300]; blck_crateMoneyGreen = [300, 500]; blck_crateMoneyOrange = [500, 750]; + blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type. blck_maximumItemPriceInAI_Loadouts = 100; @@ -152,10 +153,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR ]; blck_AIPatrolVehicles = ["B_G_Offroad_01_armed_EPOCH","B_LSV_01_armed_F"]; // Type of vehicle spawned to defend AI bases - blck_AIPatrolVehiclesBlue = blck_AIPatrolVehicles; - blck_AIPatrolVehiclesRed = blck_AIPatrolVehicles; - blck_AIPatrolVehiclesGreen = blck_AIPatrolVehicles; - blck_AIPatrolVehiclesOrange = blck_AIPatrolVehicles; + blck_AIPatrolVehicles = [ @@ -180,6 +178,12 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR "B_APC_Tracked_01_CRV_F", "B_APC_Tracked_01_rcws_F" ]; // Type of vehicle spawned to defend AI bases + + blck_AIPatrolVehiclesBlue = blck_AIPatrolVehicles; + blck_AIPatrolVehiclesRed = blck_AIPatrolVehicles; + blck_AIPatrolVehiclesGreen = blck_AIPatrolVehicles; + blck_AIPatrolVehiclesOrange = blck_AIPatrolVehicles; + // Blacklisted itesm blck_blacklistedOptics = ["optic_Nightstalker","optic_tws","optic_tws_mg"]; @@ -550,6 +554,86 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_vests_red = blck_vests; blck_vests_green = blck_vests; blck_vests_orange = blck_vests; + + blck_UMS_uniforms = + [ + "U_I_Wetsuit", + "U_O_Wetsuit", + "U_B_Wetsuit" + ]; + + blck_UMS_headgear = + [ + "G_Diving", + "G_B_Diving", + "G_O_Diving", + "G_I_Diving" + ]; + + blck_UMS_vests = + [ + "V_RebreatherB", + "V_RebreatherIA", + "V_RebreatherIR" + ]; + + blck_UMS_weapons = + [ + "arifle_SDAR_F" + ]; + + if ((tolower blck_modType) isEqualTo "exile") then + { + blck_UMS_submarines = + [ + + "Exile_Boat_SDV_CSAT", + "Exile_Boat_SDV_Digital", + "Exile_Boat_SDV_Grey" + ]; + + blck_UMS_crates = ["Exile_Container_SupplyBox"]; + }; + if ((tolower blck_modType) isEqualTo "epoch") then + { + blck_UMS_submarines = ["B_SDV_01_EPOCH"]; + blck_UMS_crates = blck_crateTypes; + //blck_UMS_crates = ["container_epoch"]; + }; + if ((toLower blck_modType) isEqualTo "default") then + { + blck_UMS_submarines = + [ + + "Exile_Boat_SDV_CSAT", + "Exile_Boat_SDV_Digital", + "Exile_Boat_SDV_Grey" + ]; + + blck_UMS_crates = blck_crateTypes; + + }; + + blck_UMS_unarmedSurfaceVessels = + [ + "B_Boat_Transport_01_F", + "I_Boat_Transport_01_F" + ]; + blck_UMS_armedSurfaceVessels = + [ + "B_Boat_Armed_01_minigun_F", + "I_Boat_Armed_01_minigun_F" + ]; + blck_UMS_surfaceVessels = blck_UMS_unarmedSurfaceVessels + blck_UMS_armedSurfaceVessels; + blck_UMS_shipWrecks = + [ + "Land_Boat_06_wreck_F", + "Land_Boat_05_wreck_F", + "Land_Boat_04_wreck_F", + "Land_Boat_02_abandoned_F", + "Land_Boat_01_abandoned_red_F", + "Land_Boat_01_abandoned_blue_F" + ]; //CraftingFood blck_Meats=[ @@ -1010,7 +1094,5 @@ for examples of how you can do this see \Major\Compositions.sqf blck_highPoweredLoot = blck_BoxLoot_Orange; blck_supportLoot = blck_BoxLoot_Orange; - blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type. - diag_log "[blckeagls] Configurations for Epoch Loaded"; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf b/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf index 099a0b9..df6fb37 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf @@ -56,7 +56,9 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_crateMoneyRed = [175, 300]; blck_crateMoneyGreen = [300, 500]; blck_crateMoneyOrange = [500, 750]; - + + blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type. + blck_maximumItemPriceInAI_Loadouts = 1000; blck_armed_vehicles_Exile = [ @@ -643,6 +645,86 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_vests_red = blck_vests; blck_vests_green = blck_vests; blck_vests_orange = blck_vests; + + blck_UMS_uniforms = + [ + "U_I_Wetsuit", + "U_O_Wetsuit", + "U_B_Wetsuit" + ]; + + blck_UMS_headgear = + [ + "G_Diving", + "G_B_Diving", + "G_O_Diving", + "G_I_Diving" + ]; + + blck_UMS_vests = + [ + "V_RebreatherB", + "V_RebreatherIA", + "V_RebreatherIR" + ]; + + blck_UMS_weapons = + [ + "arifle_SDAR_F" + ]; + + if ((tolower blck_modType) isEqualTo "exile") then + { + blck_UMS_submarines = + [ + + "Exile_Boat_SDV_CSAT", + "Exile_Boat_SDV_Digital", + "Exile_Boat_SDV_Grey" + ]; + + blck_UMS_crates = ["Exile_Container_SupplyBox"]; + }; + if ((tolower blck_modType) isEqualTo "epoch") then + { + blck_UMS_submarines = ["B_SDV_01_EPOCH"]; + blck_UMS_crates = blck_crateTypes; + //blck_UMS_crates = ["container_epoch"]; + }; + if ((toLower blck_modType) isEqualTo "default") then + { + blck_UMS_submarines = + [ + + "Exile_Boat_SDV_CSAT", + "Exile_Boat_SDV_Digital", + "Exile_Boat_SDV_Grey" + ]; + + blck_UMS_crates = blck_crateTypes; + + }; + + blck_UMS_unarmedSurfaceVessels = + [ + "B_Boat_Transport_01_F", + "I_Boat_Transport_01_F" + ]; + blck_UMS_armedSurfaceVessels = + [ + "B_Boat_Armed_01_minigun_F", + "I_Boat_Armed_01_minigun_F" + ]; + blck_UMS_surfaceVessels = blck_UMS_unarmedSurfaceVessels + blck_UMS_armedSurfaceVessels; + blck_UMS_shipWrecks = + [ + "Land_Boat_06_wreck_F", + "Land_Boat_05_wreck_F", + "Land_Boat_04_wreck_F", + "Land_Boat_02_abandoned_F", + "Land_Boat_01_abandoned_red_F", + "Land_Boat_01_abandoned_blue_F" + ]; //CraftingFood blck_Meats=[ @@ -1190,6 +1272,4 @@ blck_highPoweredLoot = [ ] ]; - blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type. - - diag_log format["[blckeagls] Configurations for Exile Loaded"]; +diag_log format["[blckeagls] Configurations for Exile Loaded"]; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf index 7affd6e..cf33878 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf @@ -47,6 +47,8 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_crateMoneyGreen = [300, 500]; blck_crateMoneyOrange = [500, 750]; + blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type. + blck_maximumItemPriceInAI_Loadouts = 1000; blck_armed_vehicles_Exile = [ @@ -663,6 +665,86 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_vests_red = blck_vests; blck_vests_green = blck_vests; blck_vests_orange = blck_vests; + + blck_UMS_uniforms = + [ + "U_I_Wetsuit", + "U_O_Wetsuit", + "U_B_Wetsuit" + ]; + + blck_UMS_headgear = + [ + "G_Diving", + "G_B_Diving", + "G_O_Diving", + "G_I_Diving" + ]; + + blck_UMS_vests = + [ + "V_RebreatherB", + "V_RebreatherIA", + "V_RebreatherIR" + ]; + + blck_UMS_weapons = + [ + "arifle_SDAR_F" + ]; + + if ((tolower blck_modType) isEqualTo "exile") then + { + blck_UMS_submarines = + [ + + "Exile_Boat_SDV_CSAT", + "Exile_Boat_SDV_Digital", + "Exile_Boat_SDV_Grey" + ]; + + blck_UMS_crates = ["Exile_Container_SupplyBox"]; + }; + if ((tolower blck_modType) isEqualTo "epoch") then + { + blck_UMS_submarines = ["B_SDV_01_EPOCH"]; + blck_UMS_crates = blck_crateTypes; + //blck_UMS_crates = ["container_epoch"]; + }; + if ((toLower blck_modType) isEqualTo "default") then + { + blck_UMS_submarines = + [ + + "Exile_Boat_SDV_CSAT", + "Exile_Boat_SDV_Digital", + "Exile_Boat_SDV_Grey" + ]; + + blck_UMS_crates = blck_crateTypes; + + }; + + blck_UMS_unarmedSurfaceVessels = + [ + "B_Boat_Transport_01_F", + "I_Boat_Transport_01_F" + ]; + blck_UMS_armedSurfaceVessels = + [ + "B_Boat_Armed_01_minigun_F", + "I_Boat_Armed_01_minigun_F" + ]; + blck_UMS_surfaceVessels = blck_UMS_unarmedSurfaceVessels + blck_UMS_armedSurfaceVessels; + blck_UMS_shipWrecks = + [ + "Land_Boat_06_wreck_F", + "Land_Boat_05_wreck_F", + "Land_Boat_04_wreck_F", + "Land_Boat_02_abandoned_F", + "Land_Boat_01_abandoned_red_F", + "Land_Boat_01_abandoned_blue_F" + ]; //CraftingFood blck_Meats=[ @@ -1238,9 +1320,6 @@ blck_highPoweredLoot = [ ] ]; - // Time the marker remains after completing the mission in seconds - experimental not yet implemented - blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type. - diag_log format["[blckeagls] Configurations for Exile Loaded"]; diff --git a/@GMS/addons/custom_server/Missions/GMS_missionLists.sqf b/@GMS/addons/custom_server/Missions/GMS_missionLists.sqf index 12e6090..5123d6f 100644 --- a/@GMS/addons/custom_server/Missions/GMS_missionLists.sqf +++ b/@GMS/addons/custom_server/Missions/GMS_missionLists.sqf @@ -24,3 +24,6 @@ private _missionListGreen = ["default","medicalCamp","redCamp","resupplyCamp"," private _pathOrange = "Orange"; private _missionListOrange = ["default","medicalCamp","redCamp","resupplyCamp","bunker","dashq","tko_camp"]; + +private _pathUMS = "UMS\dynamicMissions"; +private _missionListUMS = ["default"]; diff --git a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_configurations.sqf b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_configurations.sqf index a9d24f8..67b1e5a 100644 --- a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_configurations.sqf +++ b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_configurations.sqf @@ -52,8 +52,8 @@ if ((tolower blck_modType) isEqualTo "exile") then if ((tolower blck_modType) isEqualTo "epoch") then { blck_UMS_submarines = ["B_SDV_01_EPOCH"]; - //blck_UMS_crates = blck_crateTypes; - blck_UMS_crates = ["container_epoch"]; + blck_UMS_crates = blck_crateTypes; + //blck_UMS_crates = ["container_epoch"]; }; if ((toLower blck_modType) isEqualTo "default") then { diff --git a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_init.sqf b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_init.sqf index 78da88b..3514792 100644 --- a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_init.sqf +++ b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_init.sqf @@ -18,7 +18,7 @@ blck_UMS_ActiveDynamicMissions = []; //diag_log "Including GMS_UMS_configurations.sqf"; #include "GMS_UMS_configurations.sqf"; //diag_log "Including GMS_UMS_dynamicMissionLIsts.sqf"; -#include "GMS_UMS_dynamicMissionList.sqf"; +//#include "GMS_UMS_dynamicMissionList.sqf"; //diag_log format ["Initializing UMS static missions at %1",diag_tickTime]; [] execVM "q\addons\custom_server\Missions\UMS\GMS_UMS_StaticMissions_init.sqf"; diff --git a/@GMS/addons/custom_server/changeLog.sqf b/@GMS/addons/custom_server/changeLog.sqf index 15afaf7..fc29705 100644 --- a/@GMS/addons/custom_server/changeLog.sqf +++ b/@GMS/addons/custom_server/changeLog.sqf @@ -6,12 +6,16 @@ Ideas or code from that by He-Man, Vampire and KiloSwiss have been used for cert Many thanks for new Coding and ideas from Grahame. Significant Changes: + ===================== -7.00 Build 212 -New: +7.00 Build 214 +New: Option to drop crates on a parachute at mission spawn which adds some randomness to where crates end up. + blck_spawnCratesTiming = "addMissionSpawnAir"; Fixed: Don and Hostage missions could not be completed Fixed: Missions tended to spawn all at once Fixed: vehicles are spawned at a safe spot which should reduce unintended explosions +Fixed: Missions sometimes spawned on steep hillsides. +Fixed: Vehicles sometimes blew up on spawn. Added: The system has been upgreaded to a state-based system, meaning one scrpt is running once all missions are initialized. Changed: a lot of debugging was removed. diff --git a/@GMS/addons/custom_server/init/blck_init_server.sqf b/@GMS/addons/custom_server/init/blck_init_server.sqf index a43c155..e9286be 100644 --- a/@GMS/addons/custom_server/init/blck_init_server.sqf +++ b/@GMS/addons/custom_server/init/blck_init_server.sqf @@ -184,7 +184,10 @@ if (blck_enableBlueMissions > 0) then { [_missionListBlue,_pathBlue,"BlueMarker","blue",blck_TMin_Blue,blck_TMax_Blue,blck_enableBlueMissions] call blck_fnc_addMissionToQue; }; - +if (blck_numberUnderwaterDynamicMissions > 0) then +{ + [_missionListUMS,_pathUMS,"UMSMarker","Red",blck_TMin_UMS,blck_TMax_UMS,blck_numberUnderwaterDynamicMissions] call blck_fnc_addMissionToQue; +}; // Setup a group for AI corpses diff --git a/@GMS/addons/custom_server/init/build.sqf b/@GMS/addons/custom_server/init/build.sqf index 1a19199..ba3383d 100644 --- a/@GMS/addons/custom_server/init/build.sqf +++ b/@GMS/addons/custom_server/init/build.sqf @@ -1,4 +1,4 @@ #define blck_buildNumber 214 #define blck_versionNumber 7.00 -#define blck_buildDate "8-1-20" +#define blck_buildDate "8-5-20" diff --git a/changeLog.sqf b/changeLog.sqf index d44ab2d..1016d3b 100644 --- a/changeLog.sqf +++ b/changeLog.sqf @@ -10,8 +10,9 @@ Many thanks for new Coding and ideas from Grahame. Significant Changes: ===================== -7.00 Build 212 -New: +7.00 Build 214 +New: Option to drop crates on a parachute at mission spawn which adds some randomness to where crates end up. + blck_spawnCratesTiming = "addMissionSpawnAir"; Fixed: Don and Hostage missions could not be completed Fixed: Missions tended to spawn all at once Fixed: vehicles are spawned at a safe spot which should reduce unintended explosions From 5b15fa15b9c9c0d225c5b7e56ab8cafb0dd25228 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Sun, 9 Aug 2020 20:36:38 -0400 Subject: [PATCH 07/25] Added tool for generating dynamic missions from within the editor --- @blckeagls_EDEN/addons/3EDEN_plugin.pbo | Bin 0 -> 58107 bytes @blckeagls_EDEN/addons/3EDEN_plugin.pbo.bak | Bin 0 -> 58054 bytes .../addons/3EDEN_plugin/Core/fn_about.sqf | 2 + .../Core/fn_buildingContainer.sqf | 24 + .../addons/3EDEN_plugin/Core/fn_display.sqf | 8 + .../addons/3EDEN_plugin/Core/fn_help.sqf | 2 + .../addons/3EDEN_plugin/Core/fn_init.sqf | 57 +++ .../3EDEN_plugin/Core/fn_isInfantry.sqf | 11 + .../addons/3EDEN_plugin/Core/fn_isInside.sqf | 43 ++ .../addons/3EDEN_plugin/Export/Untitled-1.txt | 90 ++++ .../3EDEN_plugin/Export/fn_exportDynamic.sqf | 254 +++++++++++ .../3EDEN_plugin/Export/fn_exportStatic.sqf | 20 + .../Export/pullDynamicMission.sqf | 411 ++++++++++++++++++ .../3EDEN_plugin/Export/pullMarkerInfo.sqf | 62 +++ .../3EDEN_plugin/Export/setCenterAtPlayer.sqf | 1 + .../addons/3EDEN_plugin/Export/template.sqf | 71 +++ .../addons/3EDEN_plugin/Guidelines.txt | 21 + .../3EDEN_plugin/Static/pullMarkerInfo.sqf | 62 +++ .../3EDEN_plugin/Static/setCenterAtPlayer.sqf | 1 + .../addons/3EDEN_plugin/Static/template.sqf | 81 ++++ .../addons/3EDEN_plugin/config.cpp | 128 ++++++ 21 files changed, 1349 insertions(+) create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin.pbo create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin.pbo.bak create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_about.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_buildingContainer.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_display.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_help.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_init.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_isInfantry.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_isInside.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-1.txt create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportStatic.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Export/pullDynamicMission.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Export/pullMarkerInfo.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Export/setCenterAtPlayer.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Export/template.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Guidelines.txt create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Static/pullMarkerInfo.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Static/setCenterAtPlayer.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Static/template.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/config.cpp diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin.pbo b/@blckeagls_EDEN/addons/3EDEN_plugin.pbo new file mode 100644 index 0000000000000000000000000000000000000000..aa888d3e93e4e8144ead73462866dcfef9b7dc0d GIT binary patch literal 58107 zcmeHw&2MDMveyNK9v*2V1Pk5<=}cYq>yKOQk9L2|blY9pWJ*wg|l?62D(WW}ZA>WxMU} zx$|y$rtPZyjEszojEszk{6&^V-~Xcg(@lm)@$r0jG?JWnP7D0Se_QDA^NUH`i~8{} z%I3$XW6AscuWFIj54St~yq2WV{?V`#9ww9VeD>p!WIxtIzxccVd7;D4w$$My?)T#1 z@mew*hiEr-HU86I(<=Y^KP+_k+1BXA*{C0$xpGhbik9o`-0twREq4<2N3PH#)BRsZ z_xx-N#ltv<@&Eo!E%pEY`$C7GU7>7acoYuDY2N9#rqh1`;P}}ungKbokj6A5Hpw z)AClFWpOfe9sE7h!GHZncRKv+)z}KtH&KeQCa&}!{|yD_pZ(+geSS8jvuL~)4aZTs zGJb`*@Mi7rX!&3K?|-tt&(Eg9I2vHm#yMX8&EL|3|8jk?!_TJNcf)Z!?nk}*OOC$& z+<@>;zhCU|vtnSML%amQru5|jHWexWAN_3w_=|t_^}hXV#+v_GxcB*IpMQ35fxo-` zFw26qqvKcMxO)<1pMQ4#`Db&Qdf4y2iNfQ4)>-aFLnJe6E{%Si#A(#~K1w-d!Pmj! z{L(W&XQkImhS}Z$vd&wq+Ilbf6Oge<)`WLaIC3R5X%HTVzvIf)>Y5l128s8biTwBZ zXA3v`Q$WZ!lVNv^0V+xgNLgNgzW&nULvf{)K`fl}*W6Luk1+n06zz=qljC@}uZ3EI z41?pyUthtwj<=AfQ|+=A7R=<7SrSX2W9i)%iXBg=)MplXfMyhGW#QXs19PQ|W;5xA z{YrI~`5_9&CsA6Pr$nDs@^rjwCsFr}&C{uzGlM3N3NFAS%M`FkE^3=I?FeHprIC*Y zIzMxxBpY*(m?Wj%ImNw!M!tM>GV6}h{#r6POg=6(vzx7GIN2Ge@kqK-8Zw*IvQRVe zqRHIl(xeZ#CS|TguC>BlU6$S}S$VB?A$unpg=siW(sDY8T9=#Ik6LXZ zMRq0a?w~+%$11hp_4zGmvSqprl(y!C#xzZlRR^r;(vHXuUz!edJb`7tOY@7tQIZC$ z81y<>b#QnVyf^`Er&!zR{THua+&3#_ZY~slMpR-&_XGB=?CEIORYAxWHH!el&cSp@ zE5Y|R>`%z*7R{v8)-5AeaZny2(Hj&ez%)7?c4aDB(GFp56nDoH@DdDnKV04?k?%hb z$Kn2S70ojHL2`DJq`w-b`{Zk#Za6;*L)%i*fQp1LWkjZ6V2SDqV=`4OC?9W7B%l)U z){jWY`cfk(lw4T2`T5XACBOMg=jmo8f})J{eRL9c`$ZvXwX>7pY!IcL!!V0F-w-tm zQtkb-@53|>4^bf)CqXYdf?V_YX9JO619G521mP6CQa8(B7mSV~h@q1p8;9vQ7(`hX z9;2d7j)uKzVn2Et^;vm02`F?1B5XbV{IgLSzlBH}bR+?*0Zaco3St1%FP|L#HtLQu z)aZ0YXx5^p)9u6Px5y1zuamHc{UPdXcD^B1cI?q8E0velz_g8+B4x)XI72lQ+-2V1 z*Cv6;Z3PF7dOd`r5eMJVc4Pn@APGl}Qs)L(

Z{AZ1F+Z_NbO7hen0R`4q#s66W3 zaQLPnYv&{$N!wwZ);GHnr!4UKXT3N)?(~yma_m7k-fPJ=6_6Q6y&xP1x0YIMDTEQd z*^LL$!86M0bFU+CvLUGGBnpUcU@E{7m`72542OZvUVxndpI&1AQERob6CiOd8J(r^ z@yR%Nu=rpRtXz))LXFv8t21e}@w*F(IZo2ER=f3WGRdOW!2w3#NC~nNhI$;0UnSYf z&L(Kf&$SeRA_f>gH=CqKVK>S!b};*|10K^icu3nJ`R$n8V6THt+WIHRqCPT%#dg3{ z`*o=u-0{CZxQoeKT3kG6cP9LQoKB+l(jp;WSg7E>QwD^{FDA0)IdB#q1$XXrPHn&F zC(iyf9`?460*9&KPyQtMf`#I2{l`hz$1?0p?%oZe(|G(tJU$7|9UWuPh1STo-jgQQ z!|q8?1OZv>J+GTLZ*Y5;RDr`80d*5($F>^vlXo|b+&I0`tHMB-Sb z%uj&jxf(PJ6r2J4s}2Af5KGQZ_wy7p3!L6s3jQo-PE2?J0s`gP3LKjIg4IKY&n0FU zdW-oa&0r`%bh;$eUeDUaw$aW_g+tnpRyP}N?ryqjgy5W3!LfhA_3y#Ol~>>xzF zGwHw;<~mzVqwo!ij}x8*z&ZAGc}(J$*o$^XSeGF3vE8=NtdW%n5;;ew2LTE~@m_17 z3LDm=8U|^0T)}UXcxc-1xL$>U+`$gmGff7|OUrkIE+865<{T1~yCd7I%n8Mc={)oE z&nVhLY< z#@6*Lz!D3)-DotXEEdRlCBqVlg4Pg{3|35vy2$_^Y#lDl4)(n*YNF7XVBLP#PKPg( zl?|JPaw{8VN(J`QLT-5K=MGWvMVd@Tu4R57WqJK!VkAu{<#-Uc-C%{j8zRduxlWa3 zH|nXBQ!Hxp^74bY25wH_vw&#YiN<5{1?46~5jYHf1JP(<&rW%=R9OTfZ3sHRjy%Df zggAV1-6=BIXcH=~-yvFVMB@#$e!&#nP%n0hrcU2Y^o7~AOfRQw97`xAEgXgY45Fn- z3rLHGvQo^<-_J%^Nm%mS8%Q46{Iu0^Eka_$!~YcXx#|AW2{`m4zrwo6U2nYw|0`?G?u#24HNB_0A$h! zU@{aWX%?Q5@U%iP1@RRGBwHv?QE;!pn*au3%iGp(H-ZMrbh|iC9Y-m|nlUE;BY3#D zD4UK;I!cp4VEHJ{dGDY`0KW{txp6CnB`7TjPsK7!qZpT4X*U|+9FC0&f?+s31CJeH z2W1-6@st4O1L`H`plt|n+Bl)^jPQUPbDQ9KlIO)Sj*$gEF1cCo4u_Hj{sLujd&K^X zUda5}HkZ2Y0$>M=T<>gp=S>XF0`^v1|6pI`jsY@A0J8unxo61)XSz4oP!1=9Q7{<= znWW=r8uoet_Dr<++etQ#kIsStmHph1h2O}a93^iO3|=lNGIuc+r3%1>v4sk!$X6H) z^_fx7gIG4gS(@V#WMKPDM#8TMziCp|sg=VlsoMM|N$Yjg(-H5Uq&QPSRL>IVZ>Y7< zVMM116%haqQoM-s0_BireJWd_BsC-ebYhe;4{0Bu$q-y?6RC%oclvCZJPN0VUVt@>i4;RchDE5rqRI(NzeYQR`D9_7 z$06n=!#mksqv3Mx*a{*zkc#c>0A5f%$RAVEJ(=LX6=y*CAyC0Ck20XYf{dYJ8)#|_ zCOPC>8&L$;i`03Gc8y5H0h(wL#2UPsaS0r*oOF)~oAj|GM;er0`_3GbJL>S892OD5MZISf6?RmX-H|F%0ittLXjB0V<7h-7Cj~rXqTpJ z!(=hC6!QtoS3(I}hM=iskt*fcAX9RfSNvWDHX@5nLZ=04kU0pCppz03w}=N-l1uUw z(-Z#qQGoZzX37X~qT=d1mc>t2Z-F!r^2l{b{O0U}tM6rkGn!+tGGj8KWsXoFz|z!v ze8et$LOb9(mGv&m`!aJ6*vPf62v{c?Qb*kr#$>swK@eJWS<271M{>(=R~U=zBV~_%3A*4nsA@H9JJs89$*>cpoAJ&E9-?Y=9XLbd1PyX4T>fzpllFLGjxwu9 z!l5}=6ho*Fpim3t8i0Bs(8Cco)C3cezQef~VumV}MfT@(UPWJ=s~V{aqe7l@s#;nI zqj|Pxf$%jUf+BU2t4~{7;jnd=tNM;n%~NYy)S;4ehQT?{Der@b=ah2+nF>3|J{A2? z2P(9@S19Z9F920Eka-GqaC2S>QMW(mwG4J-MWIu!V~F6;G?@VYp?yzAK>`#H1*KL4 z&r2X8n~E=HXVkS5yH1C1rbbYPCb^8esMHSh5auRGw(6_Q30AM2QzA>|zY2UCB!TUB zNZSn^2(}v?iQFyF%xwyl)L*ZO8Z)qXD^i}pS(vvz$=JvE9oU9m#8a|^LCE)U79WD( z$7gJ>?uUXCr3TTXPP?kO^koIiM2goC8LuI(d;LJNa++5?R_jei%$ttuba6j;K;1h# zm_qxcQc+W@lGnhZ;o3!rv$SJg|vo?uD_Lm-@Pp_#icL_pzZ5WayT znwR&kMUQ+mjXMjLp4Sz516CTDjDoFKBiuY7<&Jed@EoNVP=SI*J)oS=tlA!TTE*Lx z(v=L5_|fmI^ghMR%h$>o$f?fpZyL`t^L~2&0jHYtX{YRz3Coz%Q~YmP^#ePjh5IPs ziI=+cG6+6*fC`f)pzpCq)n8}57kZIN5|S`&6jAOj!B&N8ZW!Z@7g%l_!is<92p800 z46q6mwrTAExcSL0ru(rO^Pll9i^#TfTD#v~%yPWe-B!!qNK~@V^2;yfw84|6cbCw@ z2^;oOHV^wRbOp;^0=4MDV=o~ds>f+y0t&LG@Ex;`3T&{`Om3hIEDp7@|Aye9VLJ)aIyB1khERE2bgA!#s}+BrDg2HJ=>Sf1qdvqiI|Pg)~>8 z0>r8g^il<#M#TZABgQ`-F+_34xp$Z z@Nte!N6zCPaO=x0si89*7tJMbb60s8?6Jk`<;q3zl&;q7O>uKit_VB2%+>N`x>JRx z?X-+X*QL{oUiLzIO5c^6Xxn>r9xFw29M@l3t0hOnbZ)8QG~acaJFXOE$5a;c(wSrP zR)GS^s}QIj%z`kd;YTQ0SqJ8Fn-ye}H1!Wq)}9(@Cjx_{R);)-f3p+ZZOaEJ1o*d` z^l8A{>Kvw%>_oHx7&UB=EHt^P(B6UF)v-#@E&;Wr{8PJhhD^=dC3iw;KsBe`yR01o zlji}VJd0m!ErHQxtr23ECt$n0RSv@Dt*yV@U4QNJAd#CKs{kNG!aOl2gSg+xU~*+# z0vx2RAq2vvO=&O9hUWJ#?IZ0j|Ci zQ;}-+_RguQfM`884C;WB{4eg@A!2!OMTMNY%X{?H!gl0}Jq6${CzKq+%yr(hnRB~( z94#2r$K6dFHC61fqqWOP+O&(=-h((&!7Q0K8<*jeMuUrPza}}imj~FvT)NvB7rPVgHL>p?$3cx z<)4jIs5YJ-iwKp-00kidmo|5Ng%N)8`Gvy@PLICXqz?~pTg9%PWy&nW&A~{n|Gn%x zcWQVBO|fatTbC!s*vzb{C)U_^JyuhkEn~IY+IjwcXK~3`?4u)RybJbI!}nw{SE;Wu z6zs{c+9M06>P3jLSf;H7aG6fKE{lZndVW>Ny?9Z7;Bqdm-y%rGnaw7LP3yLRNQd_l zr@ju_9pL~7MT}dr)fq8>DjNXM4ztwQWgi!lG3wB?k zuBsI~UPlZyfFg~;hbsYX-`%@tzDnMHFM?E;P(UnGoll9|)6PlgrK|?@UQeorLjY9I z>Zt&U-t#iJolE>e+iqWT<0xU(7|9opkIwT0RA2Tt!7?vx$gPEYba0`ac&`$MrS8fv#Z_suYQ2dj=_V^~SWFZI!w(jM*sR0li|qs!VB z?=93O*CpQmWjyTmComOg?f#yqQT&%CvG-Ov2tb; zR4)5ea|~b566>xwP2TGAz<5D{##hMzw z%xkvU=!SUhcFlI6yp{(9*~`Va9a)`gw_oK$c?UM{TD@Si{qSkLmK$NSKWgdR;mM{o zq#?dR7ZMyTVLsgEyDZ)~h^|Fg*TP<-Fy4YE-3?IX#{;NA%U?kZW83Z;tj`%|5yxp|2XZ-MSqK1{OHPGzfi%iM&%Aje$9rDg#tboB?b02LBWWEP-e7NCOR z*u?ov+&FF~y2dO(g%@fBx5q1gKmjUf(^N5dxtdp(Gb~am(0CLSQk%k*RuA)2%tq3g z*~pvV5+?_DV5l`4`Ac?6ApI6-xb?OB34&km?5@1t{Y?mMNG2)cq)CxAjZ3ZgLtqV30pY%`dbX~iudDCRr z2yGd=Ns=OhkA(G8X5o%Q!aD3B8!qm(&3S&a>iq>nShPD-hcoB@R`i9ugzKEvhim>g zXuaygvt7afFh){n0URN0I1D|(|AdtpZ2%eWTn7kO9&2_h>upy%5w?c7xw5A9$)hV% zHAuaUTEwscHku(LHyy<(g2tqX3Wvx5j9ZPkNhWe9BHZ-xDi-6wLAwc`Pt{>+G*1`% zk@4Www=UoSmfEg$wV$V|OTw%eryzp*n_$r*T>ZdulrOiJ;eKlT^YFx)wbWmM7oxOJ zYh?Iq;g{gqsyE?1tAWrkCcfT*P~1ejzzx$3ghsG$lUU*~Gtz2n=K^O%>brqvYp28b z7I^q|XrpJuq8;B+;fk_$9)CL4%*e@5d)%uSH z83L#FdkjP=`v>r7!dhV!;x^8US7bqE7*h1H8zELH*J{?qYg{%MY~C5bb)6t!9>&=v zY37f7n1EWMSw|#p#Kn;1jwT0;!A;u-?P&ubae-;ri!=0#m=h-Y1=pFx#28Id0LZ{e zgbiRFnRo9@#3nos7!BkN8#Kgl#ULXwugD>0TN1%yn1|uy0Qp#eENH9Qb5*3b3In33 z)af2#rOP#1-82c5aB01F?;d_{zuMi{ez~$K-|yKxP!PiKhQ=XU;)E7hijDRG^J|8f zV%!alx$#bBl)-CBGx(qH%^)76iDx+GTL-oiVoIey1`d&?G|;^be_{;4T{KjL+2x5u zm@*?|$>h7{BpCJ3=Rw&QLrWE+co$r z$i9|A{QB2Ha34Pb3=I4SIT6_8X&@qTKptnx{N^{6H)bAWg!ek za;X7PsUjx@62z}aMQWLDmxkxL-dQzo482OS;m%ox=jK2{Feir5cb^ObRCR(!BQ#ib z)dR;isaV^Vy`8~X>w+ES?TBZG`N~et4Kojl9;fy(n7U4ioZcOQt-BQm(K$6H12(E5 zFZJKhFyXn7JbQ98k?(gx)*yB+CIPlE!=a-;7s=x4%%J{g5ca+Kmwy3aWPrEA~9IF zw-uh6_v26xrRbo5wI+77ngSC*eHx4H5|925IN%b$Kd_0*`0x-*>kRf3RH)0!3G~7bcq0 zjv_%E|I6{5{Bqy%Z7>ov2ARoX!Vz?=R{5IhtqU2vrV2d*33P$oK!iyIoWq@PPMC%= z=aj)0SM{wW%1T_WZE4YT??w9nFm)B-F;HLAlHGd($6ua@o>{a=tZVWXB4wae2n-(k zz@uH@Uvxp4#)yzDT*1<$$D=qRC!@gEN}5Aj0mClU!?5d5_CRmQ_~sfo&kEWFUdR~dU~Nnai#W3xMG zWQp~gBwaPEf#R(`?`aq$j7kqB4vrG^hCYvko|z~^DJGfW@Nqp?!hW&K$o7lQuF|v! z?yz|PRyq`0s&Q~#L;!gmQ`X2~bC8q#v9OjtnQVfKWP}&(i&!+LgDfW13?wgaFp#4K zS&09NAb4Zl?Xo>D28eA6@4zX~Fz(g|Z8~~wW81M&SZv9=f`M~jp%6jC&1z5EL4BGB4Cs1}+WXI)x3t%{b?KY^0JW+zr+!P#&DV=B2^Vm^PL&`bp_uS5<^x`%oJOhwn@6Zrhj8_idi*tA#3cf? zB0nEjA=fc7Aw(yzd)pgG--r}VlIkA9B>*c=4!q@hSeTN-sgkLQ4rTxNLqSAoOChpl zG#@)waqRfc9y^FcS?6^FQvHv2Cu1jpJFYL_wQ9~d9c=h2f&nk$qD91A?Ib1)yK)ed z32+VBjfTAxj&wG|?NuDB2Y~S+*HFEjcw3=ah>%!D)jitVM>q*SUn>VpvwiqM)~pm+ zsHf!C6r11d+d2eCnP%Ur6LBR*b>&q}>>dnSZGlq4$x&p}EsbyR?Ih?5_yPv8ZS%cz zv}4M)PEp*HDX8j+T}!rBu_uxIZD%z_4BWaoOeyEhQ-O5~K^Y;&ka+QYl?w!NRA@e7 zP3hbKS=s7qS}YvBF4Lr<^>R#7%KC@4+Grg+o_{PvqxxuJ`octQUS%CngYL5o!zm%b zRL_JJ?IrJ6p+LY&wu(hiB91}>^GdT-f-WiDqy zwsyZRkf1O)ccwiDn{nq+TPKp2xa0xI3b1%hz%5TJ|7(IQ&pgh&kWkI)zOZo#otZZ+ z>j@zTf59UEPTckuqCG5cuJ0z4ahHf*rowmMB3*XxR0 z3NLATbfp&52k2bZjciDDEP|6>uSfCq3LJ#CUJ&@})t!bsd2aqmoxE~xc@=w#E^EjM~%0O2GSm8>zASWDLPTzO6NxpO}o?4BZ%r|JRLGvcF zUN?KSlkU%XU8VXd*C>$&1_T7FnN}A#sgYB=5;n9_UH?~^e_Z}S2gYq$bYDUQZ%r7! zCOR;Tk5g|vU0rA<%Tm4c+L2x_b|qGa#9}hNsJvw?jJDLm*(hyr2kn5=VyIhT>h+BY zcdgVHy>A`X?a<3;5f)4W>)?^r9&|&{Q5ij;Uff%`n7a?8xE68aNn$n|fH!D)@^)F3 zyn_WH2-~Vw26YLxD+vW!)0b_drir{WsoYc&FksC1Ertn*mutE-Nbvf!a#2ydugno{ z{@Dt4Kxjyf+SR5(F;4MUzaDV>E;ejoHk@;?DXJx}x+7^fh0|W~0B*LW%X6$+mZg*3 z%(ILvTStnuT&pOs)>W(LTR2wo)Q#WxlWUQx?5na=fZn=puECxRXTqzP^5%CFgYq^i zBWJk%swRpM3FaIlvg2&ljJ4BHCf8I99bCU{U7|C3&ZfHyvi+FvVA})SLkM&ZxdA#*Nfr^e zRFch=3aTewi13<%S_nzViRM$zCA9|CI4XNi)C2i1ET{~ok@B57&E9^w?ZN3kt+1wo zk|!Y94B)6%u0yi$8z@%h_FAi*Z?|4BaQg{f)x;@5DE70iE0xTba6<$g5fddw%g^+F8knOc9Lls|Sno4?#v>e)(h`mbUXt zUoAa+2r`1H0?2Hs4U!6;fX*H)irG-49QE-0w_IDoXifu>kB}&4=xBM( zw#)@D&K(`Jh0i`mtE6ayFqgyZoWR5#TLe%jJm}z}diME27*&`K_5HvL>g6%}Z9Pr7 zxI_D(A`zlJu9}w~wabNt96dm122VOzDBl?;-@*4Ly;H&po}}p|D0Ys2b6t87VqxgY zcp6AzowS8;$Hm1&U|^Bhg1C%}{fBrB&vdsX<=iBQ5u`~ocydLxNjI3g?rI%|lB6XA z-s|SaE>N(8=k%KU`N;*w z;qq&+)G^GT>9=?mrO&vT&6#^kxIR)(g{Q3H*Z2ajf@6>BL8jWn!!A_P*kX(@;|!=# zbd}6{1g8R+toKA0dh9A6hX@pYjLK_}U{a`s#=(QdCA<44sD^*^i^BY;!}*R<)yRsfSoeF=OdD6&yIXB8Q6(0hxa^#VG%@lwwvU{4Y$ zGFTa7^ze_Mo!ZM}cprlvL}@n;`vLe*8m)*Q;=}nxSQHHgct0jEfWdPDu$_#@qo)fC z-4u=%G2ZOdGV`FDg}x3TTR1$sKkVMm!UePf<0Rewuk$huf=FEWu8o<*nrCPTx2NZ5 z?J>+^6dw1pgJ5SAz8g}@^CFG#p0}k0@vDYEpHj`&_UU+T*7@s2So(!%kT0IG4V2)e z-5NEXE_iyLBK@!#Xi)9*GOZOnWS2jkc8TDlkM?$tNAdbzL^eA>OUZTuFBGN@g7Q7G+T9NMKpoOz%I(LKyK^j&!Aa_~`tBsNF+Cv0&|EPpoxwNd$9 zZetj9uY|FcXo{5Ym8>eZg>;1cY+lEeuZ3IVJzgi^V{>%+T2x%WLrg&<8gHoe3#Q

Vn%p7_Tak6=x9+R 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 L{EvV8r@j9V#c_>T literal 0 HcmV?d00001 diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_about.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_about.sqf new file mode 100644 index 0000000..bde065d --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_about.sqf @@ -0,0 +1,2 @@ + +diag_log format["About called at %1",diag_tickTime]; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_buildingContainer.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_buildingContainer.sqf new file mode 100644 index 0000000..15839de --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_buildingContainer.sqf @@ -0,0 +1,24 @@ +/* + Returns the builing containing an object or objNull + By Ghostrider-GRG- + Copyright 2020 +*/ + +params["_u",["_category","House"]]; +private _pos = getPosASL _u; +private _building = objNull; +private _surfacesAbove = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) + 100],_u,_u,true,10]; +//diag_log format["_surfacesAbove = %1",_surfacesAbove]; +{ + if ((_x select 2) isKindOf _category && !(_x isEqualTo _u)) exitWith {_building = (_x select 2)}; +} forEach _surfacesAbove; +if (_building isEqualTo objNull) then +{ + private _surfacesBelow = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) - 10],_u,_u,true,100]; + diag_log format["_surfacesBelow = %1",_surfacesBelow]; + { + if ((_x select 2) isKindOf _category && !(_x isEqualTo _u)) exitWith {_building = (_x select 2)}; + } forEach _surfacesBelow; +}; +diag_log format["_fn_buildingContainer: _u = %1 | _building = %2",_u,_building]; +_building \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_display.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_display.sqf new file mode 100644 index 0000000..7e74fb2 --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_display.sqf @@ -0,0 +1,8 @@ + +params["_message"]; + +// As found in fn_3DENExportTerrainBuilder.sqf +//private _message = ["this is ","an array"]; +private _lineBreak = toString [10]; +uiNameSpace setVariable ["Display3DENCopy_data", ["missionName.sqf", _message joinString _lineBreak]]; +(findDisplay 313) createdisplay "Display3DENCopy"; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_help.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_help.sqf new file mode 100644 index 0000000..12ca93a --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_help.sqf @@ -0,0 +1,2 @@ + +diag_log format["Help called at %1",diag_tickTime]; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_init.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_init.sqf new file mode 100644 index 0000000..d7712cb --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_init.sqf @@ -0,0 +1,57 @@ + +blck_dynamicStartMessage = "TODO: Change approiately"; +blck_dynamicEndMessage = "TODO: Change Appropriately"; +blck_dynamicCrateLoot = "_crateLoot = blck_BoxLoot_Green;"; +blck_dynamicCrateLootCounts = "_lootCounts = blck_lootCountsGreen;"; +blck_dynamicmarkerMissionName = '_markerMissionName = "TODO: Update appropriately";'; +blck_dynamicMissionDifficulty = "Blue"; +diag_log format["Initilization Complete for 3EDEN plugin for blckeagls"]; +/* +_markerMissionName = "Research Center"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Green; +_maxNoAI = blck_MaxAI_Green; +_noAIGroups = blck_AIGrps_Green; +_noVehiclePatrols = blck_SpawnVeh_Green; +_noEmplacedWeapons = blck_SpawnEmplaced_Green; +_minNoAI = blck_MinAI_Blue; // Setting this in the mission file overrides the defaults such as blck_MinAI_Blue +_maxNoAI = blck_MaxAI_Blue; // Setting this in the mission file overrides the defaults +_noAIGroups = blck_AIGrps_Blue; // Setting this in the mission file overrides the defaults +_noVehiclePatrols = blck_SpawnVeh_Blue; // Setting this in the mission file overrides the defaults +_noEmplacedWeapons = blck_SpawnEmplaced_Blue; // Setting this in the mission file overrides the defaults +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; // Setting this in the mission file overrides the defaults +_uniforms = blck_SkinList; // Setting this in the mission file overrides the defaults +_headgear = blck_headgear; // Setting this in the mission file overrides the defaults +_vests = blck_vests; +_backpacks = blck_backpacks; +_weaponList = ["blue"] call blck_fnc_selectAILoadout; +_sideArms = blck_Pistols; +_chanceHeliPatrol = blck_chanceHeliPatrolBlue; // Setting this in the mission file overrides the defaults +_noChoppers = blck_noPatrolHelisBlue; +_missionHelis = blck_patrolHelisBlue; +_chancePara = blck_chanceParaBlue; // Setting this in the mission file overrides the defaults +_noPara = blck_noParaBlue; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. +_chanceLoot = 0.0; // The chance that a loot crate will be dropped with paratroops. +_paraLoot = blck_BoxLoot_Blue; +_paraLootCounts = blck_lootCountsRed; // Throw in something more exotic than found at a normal blue mission. + +_spawnCratesTiming = blck_spawnCratesTiming; // Choices: "atMissionSpawnGround","atMissionEndGround","atMissionEndAir". + // Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute. + // This sets the default value but can be overridden by defining _spawnCrateTiming in the file defining a particular mission. +_loadCratesTiming = blck_loadCratesTiming; // valid choices are "atMissionCompletion" and "atMissionSpawn"; + // Pertains only to crates spawned at mission spawn. + // This sets the default but can be overridden for specific missions by defining _loadCratesTiming + + // Examples: + // To spawn crates at mission start loaded with gear set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionSpawn" + // To spawn crates at mission start but load gear only after the mission is completed set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionCompletion" + // To spawn crates on the ground at mission completion set blck_spawnCratesTiming = "atMissionEndGround" // Note that a loaded crate will be spawned. + // To spawn crates in the air and drop them by chutes set blck_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned. +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" + // Setting this in the mission file overrides the defaults +diag_log format["Inilized 3EDEN Plugin for blckeagles"]; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_isInfantry.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_isInfantry.sqf new file mode 100644 index 0000000..0faf3e0 --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_isInfantry.sqf @@ -0,0 +1,11 @@ + +/* + Returns true if a unit is on foot otherwise returns false. + By Ghostrider-GRG- + Copyright 2020 +*/ + + private _u = _this select 0; + private _isInfantry = if ((_u isKindOf "Man") && (vehicle _u) isEqualTo _u) then {true} else {false}; + //diag_log format["_fn_isInfantry: _isInfantry = %1",_isInfantry]; + _isInfantry \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_isInside.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_isInside.sqf new file mode 100644 index 0000000..62c50b3 --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_isInside.sqf @@ -0,0 +1,43 @@ +/* + Determine if an object is inside or ontop of another object base on line of sight. + Returns true if this is the case, false otherwise. + By Ghostrider-GRG- + Copyright 2020 +*/ + +// returns true if an object is inside, underneath or on top of a building otherwise returns false. +////////////////////// +// Determin if a unit is inside a building using two separate checkVisibility +////////////////////// + +params["_u",["_category","House"]]; + +private _pos = getPosASL _u; +private _above = lineIntersects [_pos, [_pos select 0, _pos select 1, (_pos select 2) + 100],_u]; +private _below = lineintersects [_pos, [_pos select 0, _pos select 1, (_pos select 2) - 2],_u]; +//diag_log format["_fn_isInside: _u %1 | _category = %5 | typeOf _u %4 | _above %2 | _below %3 ",_u,_above,_below,typeOf _u, _category]; + +// If there is something above or below the object do a quick double-check to make sure there is a building there and not something else. +if (_above) then // test if any surfaces above are from buildingPos +{ + private _surfacesAbove = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) + 100],_u,_u,true,100]; + _above = false; + { + //diag_log format["_fn_isInside: _x-2 = %2 | typeOf _x = %3",_x,_x select 2,typeOf (_x select 2)]; + if ((_x select 2) isKindOf _category) then {_above = true}; + }forEach _surfacesAbove; +}; + +if (_below) then +{ + private _surfacesBelow = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) - 10],_u,_u,true,100]; + _above = false; + { + //diag_log format["_fn_isInside: _x-2 = %2 | typeOf _x = %3",_x,_x select 2,typeOf (_x select 2)]; + if ((_x select 2) isKindOf _category) then {_above = true}; + }forEach _surfacesBelow; +}; + +private _isInside = if (_above || _below) then {true} else {false}; +//diag_log format["_fn_isInside: _isInside = %1",_isInside]; +_isInside \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-1.txt b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-1.txt new file mode 100644 index 0000000..a8b85e3 --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-1.txt @@ -0,0 +1,90 @@ + + +/* + Output from GRG Plugin for blckeagls + For Credits and Acknowledgements see the Readme and comments +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +_markerType = [,[0,0],]; +_markerColor = ; +_startMsg = TODO: Change approiately; +_endMsg = TODO: Change Appropriately; +_markerMissionName = TODO: Update appropriately; +_crateLoot = blck_BoxLoot_Blue; +_lootCounts = blck_lootCountsBlue; + +_missionLandscape = [ + +]; + +_simpleObjects = [ + +]; + +_missionPatrolVehicles = [ + ["B_MRAP_01_hmg_F",array,0], + ["B_Truck_01_mover_F",array,0] +]; + +_submarinePatrolParameters = [ + +]; + +_airPatrols = [ + ["B_Heli_Light_01_dynamicLoadout_F",array,0] +]; + +_missionEmplacedWeapons = [ + ["B_GMG_01_F",array,0], + ["B_HMG_01_F",array,0] +]; + +_missionGroups = [ + ,[array,3,6,"Red",30,45], + ,[array,3,6,"Red",30,45] +]; + +_scubaGroupParameters = [ + +]; + +_missionLootBoxes = [ + ["Box_IND_Wps_F",array,_crateLoot,_lootCounts,0], + ["Box_AAF_Equip_F",array,_crateLoot,_lootCounts,0], + ["Box_IND_AmmoOrd_F",array,_crateLoot,_lootCounts,0], + ["Box_IND_WpsLaunch_F",array,_crateLoot,_lootCounts,0] +]; + +_missionLandscapeMode = "precise"; +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Blue]; +_maxNoAI = blck_MaxAI_Blue; +_noAIGroups = blck_AIGrps_Blue; +_noVehiclePatrols = blck_SpawnVeh_Blue; +_noEmplacedWeapons = blck_SpawnEmplaced_Blue; +_minNoAI = blck_MinAI_Blue; +_maxNoAI = blck_MaxAI_Blue; +_noAIGroups = blck_AIGrps_Blue; +_noVehiclePatrols = blck_SpawnVeh_Blue; +_noEmplacedWeapons = blck_SpawnEmplaced_Blue; +_uniforms = blck_SkinList; +_headgear = blck_headgear; +_vests = blck_vests; +_backpacks = blck_backpacks; +_weaponList = ['Blue'] call blck_fnc_selectAILoadout; +_sideArms = blck_Pistols; +_chanceHeliPatrol = blck_chanceHeliPatrolBlue; +_noChoppers = blck_noPatrolHelisBlue; +_missionHelis = blck_patrolHelisBlue; + +_chancePara = blck_chanceParaBlue; +_noPara = blck_noParaBlue; +_paraTriggerDistance = 400; +_paraSkill = 'Blue'; +_chanceLoot = 0.0; +_paraLoot = blck_BoxLoot_Blue; +_paraLootCounts = blck_lootCountsBlue; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf new file mode 100644 index 0000000..09ac390 --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf @@ -0,0 +1,254 @@ +#define aiDifficulty "Red" +#define minAI 3 +#define maxAI 6 +#define minPatrolRadius 30 +#define maxPatrolRadius 45 +#define AI_respawnTime 600 +#define aiVehiclePatrolRadius 75 +#define vehiclePatrolRespawnTime 600 +#define staticWeaponRespawnTime 600 +#define aiAircraftPatrolRespawnTime 600 +#define aiAircraftPatrolRadius 1700 +#define oddsOfGarrison 0.67 +#define maxGarrisonStatics 3 +#define maxGarrisonUnits 4 +#define typesGarrisonStatics [] // When empty a static will be randomly chosen from the defaults for blckeagls +#define garrisonMarkerObject "Sign_Sphere100cm_F" // This can be anything you like. I find this large sphere easy to see and convenient. +#define unitMarkerObject "Sign_Arrow_Direction_Green_F" // This can be anything. I chose this arrow type because it allows you to easily indicate direction. +#define objectAtMissionCenter "RoadCone_L_F" +#define lootVehicleMarker "Sign_Arrow_F" +#define landVehicles "LandVehicle" + +private _entities = all3DENEntities; +diag_log format["Dynamic Export called at %1",diag_tickTime]; +if (isNil "blck_dynamicStartMessage") then +{ + blck_dynamicStartMessage = "TODO: Change approiately"; +}; +if (isNil "blck_dynamicEndMessage") then +{ + blck_dynamicEndMessage = "TODO: Change Appropriately"; +}; +if (isNil "blck_dynamicCrateLoot") then +{ + blck_dynamicCrateLoot = "_crateLoot = blck_BoxLoot_Green;"; +}; +if (isNil "blck_dynamicCrateLootCounts") then { + blck_dynamicCrateLootCounts = "_lootCounts = blck_lootCountsGreen;"; +}; +if (isNil "blck_dynamicmarkerMissionName") then +{ + blck_dynamicmarkerMissionName = "TODO: Update appropriately"; +}; +if (isNil "blck_dynamicMissionDifficulty") then +{ + blck_dynamicMissionDifficulty = "Blue"; +}; + +private _markers = _entities select 5; +diag_log format["_markers = %1",_markers]; +private ["_m1","_type","_shape","_size","_color","_brush"]; +if !(_markers isEqualTo []) then { + _m1 = _markers select 0; + _type = markerType _m1; + _shape = markerShape _m1; + _size = markerSize _m1; + _color = markerColor _m1; + _brush = markerBrush _m1; + CENTER = markerPos _m1; +} else { + _type = "mil_square"; + _shape = "null"; + _size = "[0,0]"; + _color = "COLORRED"; + _brush = "null"; + CENTER = [0,0,0]; +}; +diag_log format["_m1 = %1 | _type = %2 | _shape = %3 | _size = %4 | _color = %5 | _brush = %6",_m1,markerType _m1,markerShape _m1,MarkerSize _m1, markercolor _m1,markerbrush _m1]; +private _garrisonedBuildings = []; +private _missionLootVehicles = []; + +private _staticObjects = allMissionObjects "Static" select {!(isSimpleObject _x) && (_x in _garrisonedBuildings) && !((typeOf _x) isEqualTo unitMarkerObject) && !((typeOf _x) isEqualTo garrisonMarkerObject)}; +if (CENTER isEqualTo [0,0,0]) then {CENTER = getPosATL (_staticObjects select 0)}; +private _missionLandscape = []; +diag_log format["_missionLandscape: %1",_staticObjects]; +{ + _missionLandscape pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true']; +}forEach _staticObjects; + +private _simpleObjects = allMissionObjects "Static" select {isSimpleObject _x}; +diag_log format["_simpleObjects = %1",_simpleObjects]; +private _missionSimpleObjects = []; +{ + if !(_x in _garrisonedBuildings && !((typeOf _x) isEqualTo unitMarkerObject) && !((typeOf _x) isEqualTo garrisonMarkerObject)) then + { + _missionSimpleObjects pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true']; + }; +} forEach _simpleObjects; + +private _missionPatrolVehicles = []; +private _patrolVehicles = ((allMissionObjects "Car") + (allMissionObjects "Tank") + allMissionObjects "Ship") select {!((typeOf _x) isKindOf "SDV_01_base_F") && !(_x in _missionLootVehicles)}; +diag_log format["_patrolVehicles = _count = %2 | %1",_patrolVehicles,count _patrolVehicles]; +{ + _missionPatrolVehicles pushBack format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x]; +}forEach _patrolVehicles; + +private _subs = allMissionObjects "SDV_01_base_F" select {((typeOf _x) isKindOf "SDV_01_base_F") && !(_x in _missionLootVehicles)}; +private _subPatrols = []; +diag_log format["_subs = %1",_subs]; +{ + _lines pushBack format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x]; +} forEach _subs; + +private _airvehicles = allMissionObjects "Air"; +private _airPatrols = []; +diag_log format["_airPatrolvehicles = %1",_airvehicles]; +{ + _airPatrols pushBack format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true']; +} forEach _airvehicles; + +private _allstaticWeapons = allMissionObjects "StaticWeapon"; +private _staticWeapons = []; +diag_log format["_staticWeapons = %1",_staticWeapons]; +{ + _staticWeapons pushBack format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true']; +} forEach _allstaticWeapons; +private _isInside = false; +private _infantry = allMissionObjects "Man" select {!(surfaceIsWater (getPos _x)) && !(_isInside) && !(isPlayer _x) && ((vehicle _x isEqualTo _x))}; +diag_log format["_infantry = %1",_infantry]; +_infantryGroups = []; +{ + _infantryGroups pushBack format[' ,[%1,%2,%3,"%4",%5,%6]',(getPosATL _x) vectorDiff CENTER,minAI,maxAI,aiDifficulty,minPatrolRadius,maxPatrolRadius]; +} forEach _infantry; + +private _scuba = allMissionObjects "Man" select {(surfaceIsWater (getPos _x)) && !(_isInside) && !(isPlayer _x) && ((vehicle _x isEqualTo _x))}; +diag_log format["_scuba = %1",_scuba]; +private _scubaGroups = []; +{ + _scubaGroups pushBack format[' [%1,%2,%3,"%4",%5,%6]',(getPosATL _x) vectorDiff CENTER,minAI,maxAI,aiDifficulty,minPatrolRadius,maxPatrolRadius]; +} forEach _scuba; + +private _lootBoxes = ((allMissionObjects "ReammoBox") + (allMissionObjects "ReammoBox_F")); +diag_log format["_lootBoxes = %1",_lootBoxes]; +private _lootContainers = []; +{ + _lootContainers pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER, '_crateLoot','_lootCounts',getDir _x]; +}forEach _lootBoxes; + +private _lines = []; +private _lineBreak = toString [10]; + +_lines pushBack "/*"; +_lines pushBack " Output from GRG Plugin for blckeagls"; +_lines pushBack " For Credits and Acknowledgements see the Readme and comments"; +_lines pushBack "*/"; +_lines pushBack ""; +_lines pushBack '#include "\q\addons\custom_server\Configs\blck_defines.hpp";'; +_lines pushBack '#include "\q\addons\custom_server\Missions\privateVars.sqf";'; +_lines pushBack ""; +_lines pushBack format["_markerType = %1",format["[%1,%2,%3];",_type,_size,_brush]]; +_lines pushBack format["_markerColor = %1;",_color]; +_lines pushBack format['_startMsg = %1;',blck_dynamicStartMessage]; +_lines pushBack format['_endMsg = %1;',blck_dynamicEndMessage]; +_lines pushBack format['_markerMissionName = %1;',blck_dynamicmarkerMissionName]; +_lines pushBack format['_crateLoot = blck_BoxLoot_%1;',blck_dynamicMissionDifficulty]; +_lines pushBack format['_lootCounts = blck_lootCounts%1;',blck_dynamicMissionDifficulty]; +_lines pushBack ""; +_lines pushBack "_missionLandscape = ["; +_lines pushback (_missionLandscape joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_simpleObjects = ["; +_lines pushback (_simpleObjects joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_missionPatrolVehicles = ["; +_lines pushback (_missionPatrolVehicles joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_submarinePatrolParameters = ["; +_lines pushback (_subPatrols joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_airPatrols = ["; +_lines pushback (_airPatrols joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_missionEmplacedWeapons = ["; +_lines pushback (_staticWeapons joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_missionGroups = ["; +_lines pushback (_infantryGroups joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_scubaGroupParameters = ["; +_lines pushback (_scubaGroups joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_missionLootBoxes = ["; +_lines pushback (_lootContainers joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack '_missionLandscapeMode = "precise";'; // acceptable values are "none","random","precise"'; +_lines pushBack "_useMines = blck_useMines;"; +_lines pushBack format["_minNoAI = blck_MinAI_%1;",blck_dynamicMissionDifficulty]; +_lines pushBack format["_maxNoAI = blck_MaxAI_%1;",blck_dynamicMissionDifficulty]; +_lines pushBack format["_noAIGroups = blck_AIGrps_%1;",blck_dynamicMissionDifficulty]; +_lines pushBack format["_noVehiclePatrols = blck_SpawnVeh_%1;",blck_dynamicMissionDifficulty]; +_lines pushBack format["_noEmplacedWeapons = blck_SpawnEmplaced_%1;",blck_dynamicMissionDifficulty]; +_lines pushBack format ["_minNoAI = blck_MinAI_%1;",blck_dynamicMissionDifficulty]; // Setting this in the mission file overrides the defaults such as blck_MinAI_Blue +_lines pushBack format["_maxNoAI = blck_MaxAI_Blue;",blck_dynamicMissionDifficulty]; // Setting this in the mission file overrides the defaults +_lines pushBack format["_noAIGroups = blck_AIGrps_%1;",blck_dynamicMissionDifficulty]; // Setting this in the mission file overrides the defaults +_lines pushBack format["_noVehiclePatrols = blck_SpawnVeh_%1;",blck_dynamicMissionDifficulty]; // Setting this in the mission file overrides the defaults +_lines pushBack format["_noEmplacedWeapons = blck_SpawnEmplaced_%1;",blck_dynamicMissionDifficulty]; // Setting this in the mission file overrides the defaults +// Change _useMines to true/false below to enable mission-specific settings. +_linse pushBack "_useMines = blck_useMines;"; // Setting this in the mission file overrides the defaults +_lines pushBack "_uniforms = blck_SkinList;"; // Setting this in the mission file overrides the defaults +_lines pushBack "_headgear = blck_headgear;"; // Setting this in the mission file overrides the defaults +_lines pushBack "_vests = blck_vests;"; +_lines pushBack "_backpacks = blck_backpacks;"; +_lines pushBack format["_weaponList = ['%1'] call blck_fnc_selectAILoadout;",blck_dynamicMissionDifficulty]; +_lines pushBack "_sideArms = blck_Pistols;"; +_lines pushBack format["_chanceHeliPatrol = blck_chanceHeliPatrol%1;",blck_dynamicMissionDifficulty]; // Setting this in the mission file overrides the defaults +_lines pushBack format["_noChoppers = blck_noPatrolHelis%1;",blck_dynamicMissionDifficulty]; +_lines pushBack format["_missionHelis = blck_patrolHelis%1;",blck_dynamicMissionDifficulty]; +_lines pushBack ""; +_lines pushBack format["_chancePara = blck_chancePara%1;",blck_dynamicMissionDifficulty]; // Setting this in the mission file overrides the defaults +_lines pushBack format["_noPara = blck_noPara%1;",blck_dynamicMissionDifficulty]; // Setting this in the mission file overrides the defaults +_lines pushBack format["_paraTriggerDistance = 400;"]; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_lines pushBack format["_paraSkill = '%1';",blck_dynamicMissionDifficulty]; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. +_lines pushBack format["_chanceLoot = 0.0;"]; // The chance that a loot crate will be dropped with paratroops. +_lines pushBack format["_paraLoot = blck_BoxLoot_%1;",blck_dynamicMissionDifficulty]; +_lines pushBack format["_paraLootCounts = blck_lootCounts%1;",blck_dynamicMissionDifficulty]; // Throw in something more exotic than found at a normal blue mission. + +_lines pushBack '#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf";'; + +// As found in fn_3DENExportTerrainBuilder.sqf +uiNameSpace setVariable ["Display3DENCopy_data", ["dynamicMission.sqf", _lines joinString _lineBreak]]; +(findDisplay 313) createdisplay "Display3DENCopy"; +/* +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +_chancePara = blck_chanceParaBlue; // Setting this in the mission file overrides the defaults +_noPara = blck_noParaBlue; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. +_chanceLoot = 0.0; // The chance that a loot crate will be dropped with paratroops. +_paraLoot = blck_BoxLoot_Blue; +_paraLootCounts = blck_lootCountsRed; // Throw in something more exotic than found at a normal blue mission. + +_spawnCratesTiming = blck_spawnCratesTiming; // Choices: "atMissionSpawnGround","atMissionEndGround","atMissionEndAir". + // Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute. + // This sets the default value but can be overridden by defining _spawnCrateTiming in the file defining a particular mission. +_loadCratesTiming = blck_loadCratesTiming; // valid choices are "atMissionCompletion" and "atMissionSpawn"; + // Pertains only to crates spawned at mission spawn. + // This sets the default but can be overridden for specific missions by defining _loadCratesTiming + + // Examples: + // To spawn crates at mission start loaded with gear set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionSpawn" + // To spawn crates at mission start but load gear only after the mission is completed set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionCompletion" + // To spawn crates on the ground at mission completion set blck_spawnCratesTiming = "atMissionEndGround" // Note that a loaded crate will be spawned. + // To spawn crates in the air and drop them by chutes set blck_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned. +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" + // Setting this in the mission file overrides the defaults \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportStatic.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportStatic.sqf new file mode 100644 index 0000000..d9fce70 --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportStatic.sqf @@ -0,0 +1,20 @@ + + + +diag_log format["Dynamic Export called at %1",diag_tickTime]; +private _lines = []; +private _lineBreak = toString [10]; + +_lines pushBack "/*"; +_lines pushBack " Ourput from GRG Plugin for blckeagls"; +_lines pushBack " For Credits and Acknowledgements see the Readme and comments"; +_lines pushBack "*/"; +_lines pushBack ""; +_lines pushBack '#include "\q\addons\custom_server\Configs\blck_defines.hpp";'; +_lines pushBack '#include "\q\addons\custom_server\Missions\privateVars.sqf";'; + +// As found in fn_3DENExportTerrainBuilder.sqf +uiNameSpace setVariable ["Display3DENCopy_data", ["dynamicMission.sqf", _lines joinString _lineBreak]]; +(findDisplay 313) createdisplay "Display3DENCopy"; + + diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/pullDynamicMission.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/pullDynamicMission.sqf new file mode 100644 index 0000000..f603283 --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/pullDynamicMission.sqf @@ -0,0 +1,411 @@ + + +diag_log "========== =========================="; + +private _markers = all3DENEntities select 5; + +/////////////////// +// Define some values for our AI +// Change values of these variables to suit your needs +/////////////////// +#define aiDifficulty "Red" +#define minAI 3 +#define maxAI 6 +#define minPatrolRadius 30 +#define maxPatrolRadius 45 +#define AI_respawnTime 600 +#define aiVehiclePatrolRadius 75 +#define vehiclePatrolRespawnTime 600 +#define staticWeaponRespawnTime 600 +#define aiAircraftPatrolRespawnTime 600 +#define aiAircraftPatrolRadius 1700 +#define oddsOfGarrison 0.67 +#define maxGarrisonStatics 3 +#define maxGarrisonUnits 4 +#define typesGarrisonStatics [] // When empty a static will be randomly chosen from the defaults for blckeagls +#define garrisonMarkerObject "Sign_Sphere100cm_F" // This can be anything you like. I find this large sphere easy to see and convenient. +#define unitMarkerObject "Sign_Arrow_Direction_Green_F" // This can be anything. I chose this arrow type because it allows you to easily indicate direction. +#define objectAtMissionCenter "RoadCone_L_F" +#define lootVehicleMarker "Sign_Arrow_F" +#define landVehicles "LandVehicle" + +/////////////////// +// Define the coordinates of the center of the mission. +/////////////////// +if (isNil "CENTER") then +{ + CENTER = [0,0,0]; +}; +if (CENTER isEqualTo [0,0,0]) then +{ + hint "Please define a center point for your mission"; + _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]; + if (count _obj > 0) then + { + CENTER = [3,3,0] vectorAdd (getPosATL _obj1); + }; + hint format["Position of Road Cone at %1 used to define mission center",CENTER]; + diag_log format["Position of Road Cone at %1 used to define mission center",CENTER]; + diag_log format["Player located at position %1",position player]; +}; +diag_log format["CENTER Set to %1",CENTER]; + +/////////////////// +// Identify any buildings in which a garrison should be spawned using the Arma building positions. +// Tell the script which buildings to garrison by placing an object inside that designates them as such. +// I use a large yellow sphere for this purpose. +// The function below assembles a list of such buildings for use in defining the data for mission buildings. +/////////////////// + +_cb = ""; + +////////////////// +// *** OPTIONAL **** +// Place a marker over your mission and configure it as you would like to to appear in the tame. +// The marker configuration will be included in the output of this script. +// Note ** Only the first marker placed will be processed ** +// Configure Marker +///////////////// + +diag_log format["<< ---- pullDynamicMision: START %1 ---- >>",diag_tickTime]; + +//////////////////////// +// Begin pulling data here +/////////////////////// + +_cb = _cb + format["_garrisonedBuildings_BuildingPosnSystem = [",endl]; + +_helpers = allMissionObjects garrisonMarkerObject; +//diag_log format["_helpers = %1",_helpers]; +{ + if ( (typeOf _x) isEqualTo garrisonMarkerObject) then + { + private _isInside = [_x] call _fn_isInside; + if (_isInside) then + { + _building = [_x] call _fn_buildingContainer; + _garrisonedBuildings pushbackunique _building; + _garrisonedBuildings pushbackunique _x; + // data structure ["building Classname",[/*building pos*/],/*building dir*/,/*odds of garrison*/, /*Max Statics*/,/*types statics*/,/*max units*/], + // 1 2 3 4 5 6 7 8 9 + _line = format[' ["%1",%2,%3,%4,%5,%6,%7,%8,%9]',typeOf _building,(getPosATL _building) vectorDiff CENTER,getDir _building, 'true','true',oddsOfGarrison,maxGarrisonStatics,typesGarrisonStatics,maxGarrisonUnits]; + systemChat _line; + //diag_log _line; + if (_forEachIndex == 0) then + { + _cb = _cb + format["%1%2",endl,_line]; + } else { + _cb = _cb + format[",%1%2",endl,_line]; + }; + }; + }; +} forEach _helpers; +_cb = _cb + format["%1];%1%1",endl]; + +_logging = format["_garrisonedBuildings = %1",_garrisonedBuildings]; +diag_log _logging; +systemChat _logging; +//diag_log format["_cb = %1%2",endl,_cb]; + + +/* + This bit will set up the garrison for each building having units and / or statics inside it or on top. + Coding must ensure that nothing is repeated but everything is captured. +*/ + +_fn_configureGarrisonForBuildingATL = { + private["_b","_staticsInBuilding","_unitsInBuilding","_staticsText","_unitsText","_buildingGarrisonATL","_staticsInBuilding","_unitsInBuilding","_count"]; + _b = _this select 0; + _count = 0; + if (_b in _garrisonedBuildings) exitWith {""}; + _staticsText = ""; + _unitsText = ""; + _buildingGarrisonATL = ""; + _staticsInBuilding = nearestObjects[getPosATL _building,["StaticWeapon"],sizeOf (typeOf _building)]; + { + if !(_x in _configuredStatics) then + { + _isInside = [_x] call _fn_isInside; + if (_isInside) then {_building = [_x] call _fn_buildingContainer}; + 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]; + } else { + _staticsText = _staticsText + format[',["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff (getPosATL _b),getDir _x]; + }; + }; + }; + } forEach _staticsInBuilding; + _unitsInBuilding = nearestObjects[getPosATL _building,[unitMarkerObject],sizeOf (typeOf _building)]; + + { + if !(_x in _configuredUnits) then + { + _isInside = [_x] call _fn_isInside; + if (_isInside) then {_building = [_x] call _fn_buildingContainer}; + if (_b isEqualTo _building) then + { + _configuredUnits pushBackUnique _x; + + if (_unitsText isEqualTo "") then + { + _unitsText = format["[%1,%2]",(getPosATL _x) vectorDiff (getPosATL _b),getDir _x]; + } else { + _unitsText = _unitsText + format[",[%1,%2]",(getPosATL _x) vectorDiff (getPosATL _b),getDir _x]; + }; + _count = _count + 1; + }; + }; + } forEach _unitsInBuilding; + if ( !(_staticsText isEqualTo "") || !(_unitsText isEqualTo "")) then + { + _buildingGarrisonATL = format[' ["%1",%2,%3,%4,%5,[%6],[%7]]',typeOf _b,(getPosATL _b) vectorDiff CENTER,getDir _b,'true','true',_staticsText,_unitsText]; + _garrisonedBuildings pushBackUnique _b; + }; + _buildingGarrisonATL +}; + +private _count = 0; +_cb = _cb + "_garrisonedBuilding_ATLsystem = ["; +{ + private _isInside = [_x] call _fn_isInside; + if (_isInside) then + { + private _building = [_x] call _fn_buildingContainer; + 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]; + private _buildingGarrisonInformation = [_building] call _fn_configureGarrisonForBuildingATL; + diag_log format["_buildingGarrisonInformation = %1",_buildingGarrisonInformation]; + if !(_buildingGarrisonInformation isEqualTo "") then + { + if (_count == 0) then + { + _cb = _cb + format["%1%2",endl,_buildingGarrisonInformation]; + } else { + _cb = _cb + format[",%1%2",endl,_buildingGarrisonInformation]; + }; + _count = _count + 1; + }; + }; + }; + +} forEach ((allMissionObjects "StaticWeapon") + (allMissionObjects "Man") + (allMissionObjects unitMarkerObject)); +_cb = _cb + format["%1];%1%1",endl]; + +/////////////////// +// Configure info remaining mission landscape +/////////////////// +_land = allMissionObjects "Static"; +_count = 0; +_cb = _cb + format["_missionLandscape = [",endl]; +{ + diag_log format["evaluating mission landscape: _x = %1 | typeOf _x = %1",_x, typeOf _x]; + //diag_log format["evaluating mission landscape: _x %1 | typeOf _x %1",_x, _x isKindOf "Helper_Base_F"]; + 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 (_count == 0) then + { + _cb = _cb + format["%1%2",endl,_line]; + } else { + _cb = _cb + format[",%1%2",endl,_line]; + }; + _count = _count + 1; + }; +}forEach allMissionObjects "Static"; +_cb = _cb + format["%1];%1%1",endl]; + +/////////////////// +// Configure loot boxes +/////////////////// +_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 + { + _cb = _cb + format["%1%2",endl,_line]; + } else { + _cb = _cb + format[",%1%2",endl,_line]; + }; +}forEach ((allMissionObjects "ReammoBox") + (allMissionObjects "ReammoBox_F")); +_cb = _cb + format["%1];%1%1",endl]; + +/////////////////// +// Setup Info for loot vehicles +/////////////////// +_missionLootVehicles = []; +_missionVehicles = ((allMissionObjects "Car") + (allMissionObjects "Tank") + allMissionObjects "Ship"); +_lootVehicleMarkers = allMissionObjects lootVehicleMarker; +diag_log format["_lootVehicleMarkers = %1",_lootVehicleMarkers]; +_cb = _cb + format["_missionLootVehicles = ["]; +{ + _kindOf = "nothing"; + _isInside = [_x,"Car"] call _fn_isInside; + if (_isInside) then {_kindOf = "Car"}; + if !(_isInside) then {_isInside = [_x,"Ship"] call _fn_isInside}; + if (_isInside) then {_kindOf = "Ship"}; + if (_isInside) then + { + + _object = [_x,_kindOf] call _fn_buildingContainer; + diag_log format["object %1 is inside object %2",_x,_object]; + _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 + { + _cb = _cb + format["%1%2",endl,_line]; + } else { + _cb = _cb + format[",%1%2",endl,_line]; + }; + }; +} forEach allMissionObjects lootVehicleMarker; +_cb = _cb + format["%1];%1%1",endl]; + +/////////////////// +// Setup Info for vehicle patrols +/////////////////// +_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 + { + _cb = _cb + format["%1%2",endl,_line]; + } else { + _cb = _cb + format[",%1%2",endl,_line]; + }; + }; +}forEach ((allMissionObjects "Car") + (allMissionObjects "Tank") + allMissionObjects "Ship"); +_cb = _cb + format["%1];%1%1",endl]; + +_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 + { + _cb = _cb + format["%1%2",endl,_line]; + } else { + _cb = _cb + format[",%1%2",endl,_line]; + }; + }; +}forEach allMissionObjects "Ship"; +_cb = _cb + format["%1];%1%1",endl]; + +/////////////////// +// Configs for Air Patrols +/////////////////// +_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 + { + _cb = _cb + format["%1%2",endl,_line]; + } else { + _cb = _cb + format[",%1%2",endl,_line]; + }; +}forEach allMissionObjects "Air"; +_cb = _cb + format["%1];%1%1",endl]; + +/////////////////// +// Setup info for remaining static/emplaced weapons +/////////////////// +_count = 0; +_cb = _cb + format["_missionEmplacedWeapons = ["]; +{ + + //if !(_x in _configuredStatics) then + private _isInside = [_x] call _fn_isInside; + if !(_isInside) 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 + { + _cb = _cb + format["%1%2",endl,_line]; + } else { + _cb = _cb + format[",%1%2",endl,_line]; + }; + _count = _count + 1; + }; + +}forEach allMissionObjects "StaticWeapon"; +_cb = _cb + format["%1];%1%1",endl]; + +/////////////////// +// Setup information for infantry groups spawning outside buildings +/////////////////// +_cb = _cb + format["_missionGroups = ["]; +{ + //[[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]; + if (_isInfantry) then + { + if (!(surfaceIsWater (getPos _x)) && !(_isInside) && !(isPlayer _x)) then + { + _line = format[' [%1,%2,%3,"%4",%5,%6]',(getPosATL _x) vectorDiff CENTER,minAI,maxAI,aiDifficulty,minPatrolRadius,maxPatrolRadius]; + systemChat _line; + if (_forEachIndex == 0) then + { + _cb = _cb + format["%1%2",endl,_line]; + } else { + _cb = _cb + format[",%1%2",endl,_line]; + }; + }; + }; +}forEach allMissionObjects "Man"; +_cb = _cb + format["%1];%1%1",endl]; + +_cb = _cb + "_scubaGroupParameters = ["; +{ + //[[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]; + if (_isInfantry) then + { + if ((surfaceIsWater (getPos _x)) && !(_isInside) && !(isPlayer _x)) then + { + _line = format[' [%1,%2,%3,"%4",%5,%6]',(getPosATL _x) vectorDiff CENTER,minAI,maxAI,aiDifficulty,minPatrolRadius,maxPatrolRadius]; + systemChat _line; + if (_forEachIndex == 0) then + { + _cb = _cb + format["%1%2",endl,_line]; + } else { + _cb = _cb + format[",%1%2",endl,_line]; + }; + }; + }; +}forEach allMissionObjects "Man"; +_cb = _cb + format["%1];%1%1",endl]; + +/////////////////// +// All done, notify the user and copy the output to the clipboard +/////////////////// +_msg = "All Objects organzied, formated and copied to the Clipboard"; +hint _msg; +systemChat _msg; +systemChat format["_cb has %1 characters",count _cb]; +copyToClipboard _cb; +diag_log "DONE"; + diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/pullMarkerInfo.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/pullMarkerInfo.sqf new file mode 100644 index 0000000..442a5b1 --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/pullMarkerInfo.sqf @@ -0,0 +1,62 @@ + +_cb = ""; + +////////////////// +// *** OPTIONAL **** +// Place a marker over your mission and configure it as you would like to to appear in the tame. +// The marker configuration will be included in the output of this script. +// Note ** Only the first marker placed will be processed ** +// Configure Marker +///////////////// +/* + _markerType = ["ELIPSE",[175,175],"GRID"]; + _markerType = ["mil_triangle",[0,0]]; +*/ + +diag_log format["<< ---- START %1 ---- >>",diag_tickTime]; + +_allmkr = allMapMarkers; +diag_log format["_allmkr = %1",_allmkr]; +if (count _allmkr == 0) then +//if !(typeName _mk isEqualTo "STRING") then +{ + hint "No Marker Found, no Marker Definitions Will Be generated"; + uiSleep 5; +} else { + + _mk = _allmkr select 0; + 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 (toUpper(markerShape _mk)) do + { + case "ELLIPSE": { + _cb = _cb + format['_markerType = ["%1",%2,"%3"];%4',toUpper(MarkerShape _mk),getMarkerSize _mk,toUpper(markerBrush _mk),endl]; + }; + case "RECTANGLE": { + _cb = _cb + format['_markerType = ["%1",%2,"%3"];%4',toUpper(MarkerShape _mk),getMarkerSize _mk,toUpper(markerBrush _mk),endl]; + }; + case "ICON": { + _cb = _cb + format['_markerType = ["%1"];%2',getMarkerType _mk,endl]; + }; + }; + + _cb = _cb + format['_markerColor = "%1";%2',markerColor _mk,endl]; + _cb = _cb + format['_markerLabel = "%1";%2',MarkerText _mk,endl]; + _cb = _cb + format["%1%1",endl]; +}; + +/////////////////// +// All done, notify the user and copy the output to the clipboard +/////////////////// +_msg = "Marker Data organzied, formated and copied to the Clipboard"; +hint _msg; +systemChat _msg; +systemChat format["_cb has %1 characters",count _cb]; +copyToClipboard _cb; +diag_log "DONE"; + diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/setCenterAtPlayer.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/setCenterAtPlayer.sqf new file mode 100644 index 0000000..6db9def --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/setCenterAtPlayer.sqf @@ -0,0 +1 @@ +CENTER = getPos player; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/template.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/template.sqf new file mode 100644 index 0000000..4ac8b8f --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/template.sqf @@ -0,0 +1,71 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Green Mission with template = default"; +_crateLoot = blck_BoxLoot_G;reen +_lootCounts = blck_lootCountsGreen; +_startMsg = "An enemy research center was sighted in a nearby sector! Check the Green marker on your map for the location!"; +_endMsg = "The Sector at the Green Marker is under survivor control!"; + +_markerMissionName = "Research Center"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Green; +_maxNoAI = blck_MaxAI_Green; +_noAIGroups = blck_AIGrps_Green; +_noVehiclePatrols = blck_SpawnVeh_Green; +_noEmplacedWeapons = blck_SpawnEmplaced_Green; +_minNoAI = blck_MinAI_Blue; // Setting this in the mission file overrides the defaults such as blck_MinAI_Blue +_maxNoAI = blck_MaxAI_Blue; // Setting this in the mission file overrides the defaults +_noAIGroups = blck_AIGrps_Blue; // Setting this in the mission file overrides the defaults +_noVehiclePatrols = blck_SpawnVeh_Blue; // Setting this in the mission file overrides the defaults +_noEmplacedWeapons = blck_SpawnEmplaced_Blue; // Setting this in the mission file overrides the defaults +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; // Setting this in the mission file overrides the defaults +_uniforms = blck_SkinList; // Setting this in the mission file overrides the defaults +_headgear = blck_headgear; // Setting this in the mission file overrides the defaults +_vests = blck_vests; +_backpacks = blck_backpacks; +_weaponList = ["blue"] call blck_fnc_selectAILoadout; +_sideArms = blck_Pistols; +_chanceHeliPatrol = blck_chanceHeliPatrolBlue; // Setting this in the mission file overrides the defaults +_noChoppers = blck_noPatrolHelisBlue; +_missionHelis = blck_patrolHelisBlue; +_chancePara = blck_chanceParaBlue; // Setting this in the mission file overrides the defaults +_noPara = blck_noParaBlue; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. +_chanceLoot = 0.0; // The chance that a loot crate will be dropped with paratroops. +_paraLoot = blck_BoxLoot_Blue; +_paraLootCounts = blck_lootCountsRed; // Throw in something more exotic than found at a normal blue mission. + +_spawnCratesTiming = blck_spawnCratesTiming; // Choices: "atMissionSpawnGround","atMissionEndGround","atMissionEndAir". + // Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute. + // This sets the default value but can be overridden by defining _spawnCrateTiming in the file defining a particular mission. +_loadCratesTiming = blck_loadCratesTiming; // valid choices are "atMissionCompletion" and "atMissionSpawn"; + // Pertains only to crates spawned at mission spawn. + // This sets the default but can be overridden for specific missions by defining _loadCratesTiming + + // Examples: + // To spawn crates at mission start loaded with gear set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionSpawn" + // To spawn crates at mission start but load gear only after the mission is completed set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionCompletion" + // To spawn crates on the ground at mission completion set blck_spawnCratesTiming = "atMissionEndGround" // Note that a loaded crate will be spawned. + // To spawn crates in the air and drop them by chutes set blck_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned. +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" + // Setting this in the mission file overrides the defaults + +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Guidelines.txt b/@blckeagls_EDEN/addons/3EDEN_plugin/Guidelines.txt new file mode 100644 index 0000000..31f573d --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Guidelines.txt @@ -0,0 +1,21 @@ +Variables to define +marker parameters +Marker Text + +Mission start message +Mission end message +Mission level + +To pull units: +private _units = allUnits; + + +To pull objects: +_center = allMissionObejcts "RoadCone_L_F"; +_buildings = allMissionObjects "Building"; +_things = allMissionObjects "ThingX"; +_baseObjects = _buildings append _things; + +_static = allMissionObejcts "StaticWeapon"; +_vehicles = allMissionObejcts "Car" + allMissionObejcts "Tank" + allMissionObejcts "Ship"; +_air = allMissionObejcts "Air"; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Static/pullMarkerInfo.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Static/pullMarkerInfo.sqf new file mode 100644 index 0000000..442a5b1 --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Static/pullMarkerInfo.sqf @@ -0,0 +1,62 @@ + +_cb = ""; + +////////////////// +// *** OPTIONAL **** +// Place a marker over your mission and configure it as you would like to to appear in the tame. +// The marker configuration will be included in the output of this script. +// Note ** Only the first marker placed will be processed ** +// Configure Marker +///////////////// +/* + _markerType = ["ELIPSE",[175,175],"GRID"]; + _markerType = ["mil_triangle",[0,0]]; +*/ + +diag_log format["<< ---- START %1 ---- >>",diag_tickTime]; + +_allmkr = allMapMarkers; +diag_log format["_allmkr = %1",_allmkr]; +if (count _allmkr == 0) then +//if !(typeName _mk isEqualTo "STRING") then +{ + hint "No Marker Found, no Marker Definitions Will Be generated"; + uiSleep 5; +} else { + + _mk = _allmkr select 0; + 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 (toUpper(markerShape _mk)) do + { + case "ELLIPSE": { + _cb = _cb + format['_markerType = ["%1",%2,"%3"];%4',toUpper(MarkerShape _mk),getMarkerSize _mk,toUpper(markerBrush _mk),endl]; + }; + case "RECTANGLE": { + _cb = _cb + format['_markerType = ["%1",%2,"%3"];%4',toUpper(MarkerShape _mk),getMarkerSize _mk,toUpper(markerBrush _mk),endl]; + }; + case "ICON": { + _cb = _cb + format['_markerType = ["%1"];%2',getMarkerType _mk,endl]; + }; + }; + + _cb = _cb + format['_markerColor = "%1";%2',markerColor _mk,endl]; + _cb = _cb + format['_markerLabel = "%1";%2',MarkerText _mk,endl]; + _cb = _cb + format["%1%1",endl]; +}; + +/////////////////// +// All done, notify the user and copy the output to the clipboard +/////////////////// +_msg = "Marker Data organzied, formated and copied to the Clipboard"; +hint _msg; +systemChat _msg; +systemChat format["_cb has %1 characters",count _cb]; +copyToClipboard _cb; +diag_log "DONE"; + diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Static/setCenterAtPlayer.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Static/setCenterAtPlayer.sqf new file mode 100644 index 0000000..6db9def --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Static/setCenterAtPlayer.sqf @@ -0,0 +1 @@ +CENTER = getPos player; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Static/template.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Static/template.sqf new file mode 100644 index 0000000..c1d11ca --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Static/template.sqf @@ -0,0 +1,81 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Green Mission with template = default"; +_crateLoot = blck_BoxLoot_Green; +_lootCounts = blck_lootCountsGreen; +_startMsg = "An enemy research center was sighted in a nearby sector! Check the Green marker on your map for the location!"; +_endMsg = "The Sector at the Green Marker is under survivor control!"; + +_markerMissionName = "Research Center"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Green; +_maxNoAI = blck_MaxAI_Green; +_noAIGroups = blck_AIGrps_Green; +_noVehiclePatrols = blck_SpawnVeh_Green; +_noEmplacedWeapons = blck_SpawnEmplaced_Green; +_minNoAI = blck_MinAI_Blue; // Setting this in the mission file overrides the defaults such as blck_MinAI_Blue +_maxNoAI = blck_MaxAI_Blue; // Setting this in the mission file overrides the defaults +_noAIGroups = blck_AIGrps_Blue; // Setting this in the mission file overrides the defaults +_noVehiclePatrols = blck_SpawnVeh_Blue; // Setting this in the mission file overrides the defaults +_noEmplacedWeapons = blck_SpawnEmplaced_Blue; // Setting this in the mission file overrides the defaults +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; // Setting this in the mission file overrides the defaults +_uniforms = blck_SkinList; // Setting this in the mission file overrides the defaults +_headgear = blck_headgear; // Setting this in the mission file overrides the defaults +_vests = blck_vests; +_backpacks = blck_backpacks; +_weaponList = ["blue"] call blck_fnc_selectAILoadout; +_sideArms = blck_Pistols; +_chanceHeliPatrol = blck_chanceHeliPatrolBlue; // Setting this in the mission file overrides the defaults +_noChoppers = blck_noPatrolHelisBlue; +_missionHelis = blck_patrolHelisBlue; + +_chancePara = blck_chanceParaBlue; // Setting this in the mission file overrides the defaults +_noPara = blck_noParaBlue; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. +_chanceLoot = 0.0; +_paraLoot = blck_BoxLoot_Blue; +_paraLootCounts = blck_lootCountsRed; // Throw in something more exotic than found at a normal blue mission. + +_spawnCratesTiming = blck_spawnCratesTiming; // Choices: "atMissionSpawnGround","atMissionEndGround","atMissionEndAir". + // Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute. + // This sets the default value but can be overridden by defining _spawnCrateTiming in the file defining a particular mission. +_loadCratesTiming = blck_loadCratesTiming; // valid choices are "atMissionCompletion" and "atMissionSpawn"; + // Pertains only to crates spawned at mission spawn. + // This sets the default but can be overridden for specific missions by defining _loadCratesTiming + + // Examples: + // To spawn crates at mission start loaded with gear set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionSpawn" + // To spawn crates at mission start but load gear only after the mission is completed set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionCompletion" + // To spawn crates on the ground at mission completion set blck_spawnCratesTiming = "atMissionEndGround" // Note that a loaded crate will be spawned. + // To spawn crates in the air and drop them by chutes set blck_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned. +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" + // Setting this in the mission file overrides the defaults +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/config.cpp b/@blckeagls_EDEN/addons/3EDEN_plugin/config.cpp new file mode 100644 index 0000000..36c278d --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/config.cpp @@ -0,0 +1,128 @@ +/* + +*/ + +class CfgPatches +{ + class blckeagls_3den + { + requiredVersion = 0.1; + requiredAddons[] = {"3den"}; + units[] = {}; + weapons[] = {}; + magazines[] = {}; + ammo[] = {}; + }; +}; + +/////////////////////////////////////////////////////////////////////////////// + +class CfgFunctions +{ + + class blck3EDEN + { + class Export + { + file = "3EDEN_plugin\Export"; + class exportDynamic {}; + class exportStatic {}; + //class buildingContainer {}; + //class isInfantry {}; + //class isInside {}; + + //class saveInitPlayerLocal {}; + //class saveWeather {}; + //class saveMarkers {}; + //class exportCheck {}; + }; + + class Core + { + file = "3EDEN_plugin\Core"; + class help {}; + class about {}; + class init { + postInit = 1; + }; + }; + + }; + +}; + +/////////////////////////////////////////////////////////////////////////////// + +class ctrlCombo; + +/////////////////////////////////////////////////////////////////////////////// + +class ctrlMenuStrip; + +class display3DEN +{ + class Controls + { + class MenuStrip: ctrlMenuStrip + { + class Items + { + items[] += {"Blackeagls"}; + + class Blackeagls + { + text = "Blackeagls"; + items[] = { + "blckAbout3EDENPlugin", + "blckSeparator", + "blckSaveStaticMission", + "blckSaveDynamicMission", + "blck3EDENPluginHelp" + }; + }; + + class blckAbout3EDENPlugin + { + text = "3EDEN Plugin Version 1.0 for BlckEagls by Ghostrider-GRG-"; + action = "call blck3EDEN_fnc_about"; + }; + + class blckSeparator + { + value = 0; + }; + + class blckSaveStaticMission + { + text = "Save StaticMission"; + action = "call blck3EDEN_fnc_exportStatic"; + picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\save_ca.paa"; + }; + + class blckSaveDynamicMission + { + text = "Save Dynamic Mission"; + action = "call blck3EDEN_fnc_exportDynamic"; + picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\save_ca.paa"; + }; + + class Blck3EDENPluginHelp + { + text = "Help"; + action = "call blck3EDEN_fnc_Help"; + //picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\save_ca.paa"; + }; + + }; + }; + }; +}; + +/////////////////////////////////////////////////////////////////////////////// + +class CfgVehicles +{ + class B_Soldier_base_F; + // + +}; \ No newline at end of file From e80ed787dcfa9258d1efd7c9d53d06b3b8d0d3e9 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Mon, 10 Aug 2020 18:33:48 -0400 Subject: [PATCH 08/25] A few fixes / additions Fixed an issue that prevented settings for the marker brush from being applied. Added several Chernarus variants to the worlds recognized. Updated Build information to 215. --- .../Functions/GMS_fnc_findSafePosn.sqf | 1 + .../Missions/GMS_fnc_initializeMission.sqf | 15 ++++- .../custom_server/init/GMS_fnc_findWorld.sqf | 62 ++++--------------- @GMS/addons/custom_server/init/build.sqf | 4 +- 4 files changed, 29 insertions(+), 53 deletions(-) diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf index a7e28d3..3500071 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf @@ -189,3 +189,4 @@ if (_coords isEqualTo []) then _coords + diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_initializeMission.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_initializeMission.sqf index 523055a..50ef6f8 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_initializeMission.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_initializeMission.sqf @@ -115,9 +115,20 @@ if !(blck_preciseMapMarkers) then { _markerPos = [_coords,75] call blck_fnc_randomPosition; }; +private _markerData = [_markerType,_markerColor,_markerSize,_markerBrush]; -_markerType params["_type",["_size",[250,250]],["_brush","GRID"]]; -private _markers = [_markerName,_markerPos,_markerMissionName,_markerColor,_type,_size,_brush] call blck_fnc_createMissionMarkers; +if (blck_debugLevel >= 3) then +{ + { + diag_log format["_initializeMission: %1 = %2",_x,_markerData select _forEachIndex]; + } forEach [ + "_markerType", + "_markerColor", + "_markerSize", + "_markerBrush" + ]; +}; +private _markers = [_markerName,_markerPos,_markerMissionName,_markerColor,_markerType,_markerSize,_markerBrush] call blck_fnc_createMissionMarkers; /* Send a message to players. diff --git a/@GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf b/@GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf index 9b4d7b6..27438e8 100644 --- a/@GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf +++ b/@GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf @@ -15,57 +15,21 @@ diag_log format["[blckeagls] Loading Map-specific settings with worldName = %1",worldName]; switch (toLower worldName) do {// These may need some adjustment - including a test for shore or water should help as well to avoid missions spawning on water. - case "altis":{ - diag_log "[blckeagls] Altis-specific settings for Epoch loaded"; - blck_mapCenter = [12000,10000,0]; - blck_mapRange = 25000; - }; - case "stratis":{ - diag_log "[blckeagls] Stratis-specific settings loaded"; - blck_mapCenter = [3900,4500,0]; - blck_mapRange = 4500; - }; - case "tanoa":{ - blck_mapCenter = [9000,9000,0]; - blck_mapRange = 10000; - }; - case "malden":{ - blck_mapCenter = [6000,7000,0]; - blck_mapRange = 6000; - }; - case "livonia":{ - blck_mapCenter = [6500,6000,0]; - blck_mapRange = 5800; - }; - case "gm_weferlingen_summer":{ - blck_mapCenter = [10000,10000,0]; - blck_mapRange = 10000; - }; - case "chernarus":{ - diag_log "[blckeagls] Chernarus-specific settings loaded"; - blck_mapCenter = [7100, 7750, 0]; - blck_mapRange = 5300; - }; - case "namalsk":{ - blck_mapCenter = [5700, 8700, 0]; - blck_mapRange = 10000; - }; + case "altis":{blck_mapCenter = [12000,10000,0]; blck_mapRange = 25000;}; + case "stratis":{blck_mapCenter = [3900,4500,0]; blck_mapRange = 4500;}; + case "tanoa":{blck_mapCenter = [9000,9000,0]; blck_mapRange = 10000;}; + case "malden":{ blck_mapCenter = [6000,7000,0]; blck_mapRange = 6000;}; + case "livonia":{blck_mapCenter = [6500,6000,0]; blck_mapRange = 5800;}; + case "gm_weferlingen_summer":{blck_mapCenter = [10000,10000,0]; blck_mapRange = 10000;}; + case "chernarus":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 5300;}; + case "namalsk":{blck_mapCenter = [5700, 8700, 0]; blck_mapRange = 10000;}; case "chernarus_summer":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 6000;}; - case "bornholm":{ - blck_mapCenter = [11240, 11292, 0]; - blck_mapRange = 14400; - }; - case "esseker":{ - diag_log "Esseker-specific settings loaded"; - blck_mapCenter = [6049.26,6239.63,0]; //centerPosition = {7100, 7750, 300}; - blck_mapRange = 6000; - }; + case "chernarus_winter":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 6000;}; + case "cup_chernarus_a3":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 6000;}; + case "bornholm":{blck_mapCenter = [11240, 11292, 0];blck_mapRange = 14400;}; + case "esseker":{blck_mapCenter = [6049.26,6239.63,0]; blck_mapRange = 6000;}; case "taviana":{blck_mapCenter = [10370, 11510, 0];blck_mapRange = 14400;}; - - case "napf": { - blck_mapCenter = [10240,10240,0]; - blck_mapRange = 14000; - }; + case "napf": {blck_mapCenter = [10240,10240,0]; blck_mapRange = 14000;}; case "australia": {blck_mapCenter = [20480,20480, 150];blck_mapRange = 40960;}; case "panthera3":{blck_mapCenter = [4400, 4400, 0];blck_mapRange = 4400;}; case "isladuala":{blck_mapCenter = [4400, 4400, 0];blck_mapRange = 4400;}; diff --git a/@GMS/addons/custom_server/init/build.sqf b/@GMS/addons/custom_server/init/build.sqf index ba3383d..811202a 100644 --- a/@GMS/addons/custom_server/init/build.sqf +++ b/@GMS/addons/custom_server/init/build.sqf @@ -1,4 +1,4 @@ -#define blck_buildNumber 214 +#define blck_buildNumber 215 #define blck_versionNumber 7.00 -#define blck_buildDate "8-5-20" +#define blck_buildDate "8-10-20" From 97972454979fe5d1210a97367e926e100f455175 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Tue, 11 Aug 2020 01:26:55 -0400 Subject: [PATCH 09/25] Small update to editor tool --- .../addons/3EDEN_plugin/Export/Untitled-1.txt | 69 +++++----- .../3EDEN_plugin/Export/fn_exportDynamic.sqf | 122 +++++++++--------- 2 files changed, 96 insertions(+), 95 deletions(-) diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-1.txt b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-1.txt index a8b85e3..bfcab63 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-1.txt +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-1.txt @@ -10,14 +10,18 @@ _markerType = [,[0,0],]; _markerColor = ; -_startMsg = TODO: Change approiately; -_endMsg = TODO: Change Appropriately; +_startMsg = "TODO: Change approiately"; +_endMsg = "TODO: Change Appropriately; _markerMissionName = TODO: Update appropriately; _crateLoot = blck_BoxLoot_Blue; _lootCounts = blck_lootCountsBlue; _missionLandscape = [ - + ["Land_Unfinished_Building_01_F",[0,0,0],0,true,true], + ["Land_u_Shed_Ind_F",[-61.9277,-7.80664,-0.0579567],0,true,true], + ["Land_Shed_08_brown_F",[-47.9512,26.3086,-0.0630035],0,true,true], + ["Land_Shed_02_F",[-6.22852,78.9766,-0.0466728],0,true,true], + ["Land_Wreck_AFV_Wheeled_01_F",[-38.0176,-20.6309,-0.0216446],0,true,true] ]; _simpleObjects = [ @@ -25,8 +29,8 @@ _simpleObjects = [ ]; _missionPatrolVehicles = [ - ["B_MRAP_01_hmg_F",array,0], - ["B_Truck_01_mover_F",array,0] + ["B_Truck_01_mover_F",[-8.7207,13.8828,-0.0554924],0], + ["B_MRAP_01_hmg_F",[-29.7793,16.5488,-0.054863],0] ]; _submarinePatrolParameters = [ @@ -34,17 +38,17 @@ _submarinePatrolParameters = [ ]; _airPatrols = [ - ["B_Heli_Light_01_dynamicLoadout_F",array,0] + ["B_Heli_Light_01_dynamicLoadout_F",[-39.4199,9.21094,-0.0559273],0] ]; _missionEmplacedWeapons = [ - ["B_GMG_01_F",array,0], - ["B_HMG_01_F",array,0] + ["B_GMG_01_F",[-37.9668,-4.69336,-0.0563164],0], + ["B_HMG_01_F",[11.2852,43.7969,-0.0578575],0] ]; _missionGroups = [ - ,[array,3,6,"Red",30,45], - ,[array,3,6,"Red",30,45] + ,[[-27.1387,-8.02148,-0.0584373],3,6,"Red",30,45], + ,[[-2.74414,46.5508,-0.0565186],3,6,"Red",30,45] ]; _scubaGroupParameters = [ @@ -52,30 +56,12 @@ _scubaGroupParameters = [ ]; _missionLootBoxes = [ - ["Box_IND_Wps_F",array,_crateLoot,_lootCounts,0], - ["Box_AAF_Equip_F",array,_crateLoot,_lootCounts,0], - ["Box_IND_AmmoOrd_F",array,_crateLoot,_lootCounts,0], - ["Box_IND_WpsLaunch_F",array,_crateLoot,_lootCounts,0] + ["Box_IND_Wps_F",[-22.0605,2.1543,-0.0577888],_crateLoot,_lootCounts,0], + ["Box_AAF_Equip_F",[-19.5859,7.62695,-0.0575409],_crateLoot,_lootCounts,0], + ["Box_IND_AmmoOrd_F",[-17.8203,13.4805,-0.0576591],_crateLoot,_lootCounts,0], + ["Box_IND_WpsLaunch_F",[-22.6543,-1.80859,-0.0577736],_crateLoot,_lootCounts,0] ]; -_missionLandscapeMode = "precise"; -_useMines = blck_useMines; -_minNoAI = blck_MinAI_Blue]; -_maxNoAI = blck_MaxAI_Blue; -_noAIGroups = blck_AIGrps_Blue; -_noVehiclePatrols = blck_SpawnVeh_Blue; -_noEmplacedWeapons = blck_SpawnEmplaced_Blue; -_minNoAI = blck_MinAI_Blue; -_maxNoAI = blck_MaxAI_Blue; -_noAIGroups = blck_AIGrps_Blue; -_noVehiclePatrols = blck_SpawnVeh_Blue; -_noEmplacedWeapons = blck_SpawnEmplaced_Blue; -_uniforms = blck_SkinList; -_headgear = blck_headgear; -_vests = blck_vests; -_backpacks = blck_backpacks; -_weaponList = ['Blue'] call blck_fnc_selectAILoadout; -_sideArms = blck_Pistols; _chanceHeliPatrol = blck_chanceHeliPatrolBlue; _noChoppers = blck_noPatrolHelisBlue; _missionHelis = blck_patrolHelisBlue; @@ -87,4 +73,23 @@ _paraSkill = 'Blue'; _chanceLoot = 0.0; _paraLoot = blck_BoxLoot_Blue; _paraLootCounts = blck_lootCountsBlue; +_missionLandscapeMode = "precise"; +_uniforms = blck_SkinList; +_headgear = blck_headgear; +_vests = blck_vests; +_backpacks = blck_backpacks; +_sideArms = blck_Pistols; +_spawnCratesTiming = blck_spawnCratesTiming; +_loadCratesTiming = blck_loadCratesTiming; +_endCondition = blck_missionEndCondition; +_minNoAI = blck_MinAI_Blue; +_maxNoAI = blck_MaxAI_Blue; +_noAIGroups = blck_AIGrps_Blue; +_noVehiclePatrols = blck_SpawnVeh_Blue; +_noEmplacedWeapons = blck_SpawnEmplaced_Blue; +_minNoAI = blck_MinAI_Blue; +_maxNoAI = blck_MaxAI_Blue +_noAIGroups = blck_AIGrps_Blue; +_noVehiclePatrols = blck_SpawnVeh_Blue; +_noEmplacedWeapons = blck_SpawnEmplaced_Blue; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf index 09ac390..c59f759 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf @@ -18,8 +18,8 @@ #define objectAtMissionCenter "RoadCone_L_F" #define lootVehicleMarker "Sign_Arrow_F" #define landVehicles "LandVehicle" +CENTER = [0,0,0]; -private _entities = all3DENEntities; diag_log format["Dynamic Export called at %1",diag_tickTime]; if (isNil "blck_dynamicStartMessage") then { @@ -44,18 +44,27 @@ if (isNil "blck_dynamicMissionDifficulty") then { blck_dynamicMissionDifficulty = "Blue"; }; +private _centerMarkers = allMissionObjects objectAtMissionCenter; +if !(_centerMarkers isEqualTo []) then +{ + CENTER = getPosATL _centerMarkers select 0; + diag_log format["CENTER defined by object %1 typeOf %2",_centerMarker,typeOf _centerMarker]; +}; +private _entities = all3DENEntities; private _markers = _entities select 5; diag_log format["_markers = %1",_markers]; private ["_m1","_type","_shape","_size","_color","_brush"]; -if !(_markers isEqualTo []) then { - _m1 = _markers select 0; +_m1 = _markers select 0; +if !(_markers isEqualTo []) then +{ _type = markerType _m1; _shape = markerShape _m1; _size = markerSize _m1; _color = markerColor _m1; _brush = markerBrush _m1; CENTER = markerPos _m1; + if (CENTER isEqualTo [0,0,0]) then {CENTER = markerPos _m1}; } else { _type = "mil_square"; _shape = "null"; @@ -68,15 +77,23 @@ diag_log format["_m1 = %1 | _type = %2 | _shape = %3 | _size = %4 | _color = %5 private _garrisonedBuildings = []; private _missionLootVehicles = []; -private _staticObjects = allMissionObjects "Static" select {!(isSimpleObject _x) && (_x in _garrisonedBuildings) && !((typeOf _x) isEqualTo unitMarkerObject) && !((typeOf _x) isEqualTo garrisonMarkerObject)}; -if (CENTER isEqualTo [0,0,0]) then {CENTER = getPosATL (_staticObjects select 0)}; -private _missionLandscape = []; -diag_log format["_missionLandscape: %1",_staticObjects]; +private _staticObjects = (_entities select 0) select {(_x isKindOf "Static") && !(isSimpleObject _x)}; +diag_log format["_staticObjects: %1",_staticObjects]; +if (CENTER isEqualTo [0,0,0]) then { - _missionLandscape pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true']; + CENTER = getPosATL (_staticObjects select 0); +}; +diag_log format["CENTER = %1",CENTER]; +private _missionLandscape = []; + +{ + if !(_x in _garrisonedBuildings && !((typeOf _x) isEqualTo unitMarkerObject) && !((typeOf _x) isEqualTo garrisonMarkerObject)) then + { + _missionLandscape pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true']; + }; }forEach _staticObjects; -private _simpleObjects = allMissionObjects "Static" select {isSimpleObject _x}; +private _simpleObjects = (_entities select 0) select {isSimpleObject _x}; diag_log format["_simpleObjects = %1",_simpleObjects]; private _missionSimpleObjects = []; { @@ -146,10 +163,12 @@ _lines pushBack ""; _lines pushBack '#include "\q\addons\custom_server\Configs\blck_defines.hpp";'; _lines pushBack '#include "\q\addons\custom_server\Missions\privateVars.sqf";'; _lines pushBack ""; + + _lines pushBack format["_markerType = %1",format["[%1,%2,%3];",_type,_size,_brush]]; _lines pushBack format["_markerColor = %1;",_color]; -_lines pushBack format['_startMsg = %1;',blck_dynamicStartMessage]; -_lines pushBack format['_endMsg = %1;',blck_dynamicEndMessage]; +_lines pushBack format['_startMsg = "%1";',blck_dynamicStartMessage]; +_lines pushBack format['_endMsg = "%1;',blck_dynamicEndMessage]; _lines pushBack format['_markerMissionName = %1;',blck_dynamicmarkerMissionName]; _lines pushBack format['_crateLoot = blck_BoxLoot_%1;',blck_dynamicMissionDifficulty]; _lines pushBack format['_lootCounts = blck_lootCounts%1;',blck_dynamicMissionDifficulty]; @@ -190,65 +209,42 @@ _lines pushBack "_missionLootBoxes = ["; _lines pushback (_lootContainers joinString (format [",%1", _lineBreak])); _lines pushBack "];"; _lines pushBack ""; -_lines pushBack '_missionLandscapeMode = "precise";'; // acceptable values are "none","random","precise"'; -_lines pushBack "_useMines = blck_useMines;"; +_lines pushBack "/*"; +_lines pushBack " Use the parameters below to customize your mission - see the template or blck_configs.sqf for details about each them"; +_lines pushBack "*/"; +_lines pushBack format["_chanceHeliPatrol = blck_chanceHeliPatrol%1;",blck_dynamicMissionDifficulty]; +_lines pushBack format["_noChoppers = blck_noPatrolHelis%1;",blck_dynamicMissionDifficulty]; +_lines pushBack format["_missionHelis = blck_patrolHelis%1;",blck_dynamicMissionDifficulty]; +_lines pushBack format["_chancePara = blck_chancePara%1;",blck_dynamicMissionDifficulty]; +_lines pushBack format["_noPara = blck_noPara%1;",blck_dynamicMissionDifficulty]; +_lines pushBack format["_paraTriggerDistance = 400;"]; +_lines pushBack format["_paraSkill = '%1';",blck_dynamicMissionDifficulty]; +_lines pushBack format["_chanceLoot = 0.0;"]; +_lines pushBack format["_paraLoot = blck_BoxLoot_%1;",blck_dynamicMissionDifficulty]; +_lines pushBack format["_paraLootCounts = blck_lootCounts%1;",blck_dynamicMissionDifficulty]; +_lines pushBack format['_missionLandscapeMode = "precise";']; +_linse pushBack "_useMines = blck_useMines;"; +_lines pushBack "_uniforms = blck_SkinList;"; +_lines pushBack "_headgear = blck_headgear;"; +_lines pushBack "_vests = blck_vests;"; +_lines pushBack "_backpacks = blck_backpacks;"; +_lines pushBack "_sideArms = blck_Pistols;"; +_lines pushBack '_spawnCratesTiming = blck_spawnCratesTiming;'; +_lines pushBack '_loadCratesTiming = blck_loadCratesTiming;'; +_lines pushBack '_endCondition = blck_missionEndCondition;'; _lines pushBack format["_minNoAI = blck_MinAI_%1;",blck_dynamicMissionDifficulty]; _lines pushBack format["_maxNoAI = blck_MaxAI_%1;",blck_dynamicMissionDifficulty]; _lines pushBack format["_noAIGroups = blck_AIGrps_%1;",blck_dynamicMissionDifficulty]; _lines pushBack format["_noVehiclePatrols = blck_SpawnVeh_%1;",blck_dynamicMissionDifficulty]; _lines pushBack format["_noEmplacedWeapons = blck_SpawnEmplaced_%1;",blck_dynamicMissionDifficulty]; -_lines pushBack format ["_minNoAI = blck_MinAI_%1;",blck_dynamicMissionDifficulty]; // Setting this in the mission file overrides the defaults such as blck_MinAI_Blue -_lines pushBack format["_maxNoAI = blck_MaxAI_Blue;",blck_dynamicMissionDifficulty]; // Setting this in the mission file overrides the defaults -_lines pushBack format["_noAIGroups = blck_AIGrps_%1;",blck_dynamicMissionDifficulty]; // Setting this in the mission file overrides the defaults -_lines pushBack format["_noVehiclePatrols = blck_SpawnVeh_%1;",blck_dynamicMissionDifficulty]; // Setting this in the mission file overrides the defaults -_lines pushBack format["_noEmplacedWeapons = blck_SpawnEmplaced_%1;",blck_dynamicMissionDifficulty]; // Setting this in the mission file overrides the defaults -// Change _useMines to true/false below to enable mission-specific settings. -_linse pushBack "_useMines = blck_useMines;"; // Setting this in the mission file overrides the defaults -_lines pushBack "_uniforms = blck_SkinList;"; // Setting this in the mission file overrides the defaults -_lines pushBack "_headgear = blck_headgear;"; // Setting this in the mission file overrides the defaults -_lines pushBack "_vests = blck_vests;"; -_lines pushBack "_backpacks = blck_backpacks;"; -_lines pushBack format["_weaponList = ['%1'] call blck_fnc_selectAILoadout;",blck_dynamicMissionDifficulty]; -_lines pushBack "_sideArms = blck_Pistols;"; -_lines pushBack format["_chanceHeliPatrol = blck_chanceHeliPatrol%1;",blck_dynamicMissionDifficulty]; // Setting this in the mission file overrides the defaults -_lines pushBack format["_noChoppers = blck_noPatrolHelis%1;",blck_dynamicMissionDifficulty]; -_lines pushBack format["_missionHelis = blck_patrolHelis%1;",blck_dynamicMissionDifficulty]; -_lines pushBack ""; -_lines pushBack format["_chancePara = blck_chancePara%1;",blck_dynamicMissionDifficulty]; // Setting this in the mission file overrides the defaults -_lines pushBack format["_noPara = blck_noPara%1;",blck_dynamicMissionDifficulty]; // Setting this in the mission file overrides the defaults -_lines pushBack format["_paraTriggerDistance = 400;"]; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. -_lines pushBack format["_paraSkill = '%1';",blck_dynamicMissionDifficulty]; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. -_lines pushBack format["_chanceLoot = 0.0;"]; // The chance that a loot crate will be dropped with paratroops. -_lines pushBack format["_paraLoot = blck_BoxLoot_%1;",blck_dynamicMissionDifficulty]; -_lines pushBack format["_paraLootCounts = blck_lootCounts%1;",blck_dynamicMissionDifficulty]; // Throw in something more exotic than found at a normal blue mission. +_lines pushBack format["_minNoAI = blck_MinAI_%1;",blck_dynamicMissionDifficulty]; +_lines pushBack format["_maxNoAI = blck_MaxAI_%1",blck_dynamicMissionDifficulty]; +_lines pushBack format["_noAIGroups = blck_AIGrps_%1;",blck_dynamicMissionDifficulty]; +_lines pushBack format["_noVehiclePatrols = blck_SpawnVeh_%1;",blck_dynamicMissionDifficulty]; +_lines pushBack format["_noEmplacedWeapons = blck_SpawnEmplaced_%1;",blck_dynamicMissionDifficulty]; +diag_log format["blck_dynamicMissionDifficulty = %1",blck_dynamicMissionDifficulty]; _lines pushBack '#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf";'; -// As found in fn_3DENExportTerrainBuilder.sqf uiNameSpace setVariable ["Display3DENCopy_data", ["dynamicMission.sqf", _lines joinString _lineBreak]]; (findDisplay 313) createdisplay "Display3DENCopy"; -/* -_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" - -_chancePara = blck_chanceParaBlue; // Setting this in the mission file overrides the defaults -_noPara = blck_noParaBlue; // Setting this in the mission file overrides the defaults -_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. -_paraSkill = "red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. -_chanceLoot = 0.0; // The chance that a loot crate will be dropped with paratroops. -_paraLoot = blck_BoxLoot_Blue; -_paraLootCounts = blck_lootCountsRed; // Throw in something more exotic than found at a normal blue mission. - -_spawnCratesTiming = blck_spawnCratesTiming; // Choices: "atMissionSpawnGround","atMissionEndGround","atMissionEndAir". - // Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute. - // This sets the default value but can be overridden by defining _spawnCrateTiming in the file defining a particular mission. -_loadCratesTiming = blck_loadCratesTiming; // valid choices are "atMissionCompletion" and "atMissionSpawn"; - // Pertains only to crates spawned at mission spawn. - // This sets the default but can be overridden for specific missions by defining _loadCratesTiming - - // Examples: - // To spawn crates at mission start loaded with gear set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionSpawn" - // To spawn crates at mission start but load gear only after the mission is completed set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionCompletion" - // To spawn crates on the ground at mission completion set blck_spawnCratesTiming = "atMissionEndGround" // Note that a loaded crate will be spawned. - // To spawn crates in the air and drop them by chutes set blck_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned. -_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" - // Setting this in the mission file overrides the defaults \ No newline at end of file From e42c6ff5762989b6e8d45708f57c9cb11d85d76b Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Tue, 11 Aug 2020 06:46:15 -0400 Subject: [PATCH 10/25] The script now pulls marker info and sets mission marker text to that used in the editor. --- .../3EDEN_plugin/Export/fn_exportDynamic.sqf | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf index c59f759..b5db7fa 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf @@ -55,15 +55,25 @@ private _entities = all3DENEntities; private _markers = _entities select 5; diag_log format["_markers = %1",_markers]; private ["_m1","_type","_shape","_size","_color","_brush"]; -_m1 = _markers select 0; + +/* +{ + diag_log format["_m1 get3EDENAttribute %1 = %2",_x, _m1 get3DENAttribute _x]; +} forEch ["markerType","markerColor","markerBrush","position","size2","text"]; +*/ +private["_m1","_markerType","_markerShape","_markerColor","_markerText","_markerBrush","_markerPos","_markerSize","_markerAlpha"]; if !(_markers isEqualTo []) then { - _type = markerType _m1; - _shape = markerShape _m1; - _size = markerSize _m1; - _color = markerColor _m1; - _brush = markerBrush _m1; - CENTER = markerPos _m1; + _m1 = _markers select 0; + _markerType = (_m1 get3DENAttribute "itemClass") select 0; + _markerShape = (_m1 get3DENAttribute "markerType") select 0; + _markerColor = (_m1 get3DENAttribute "baseColor") select 0; + _markerText = (_m1 get3DENAttribute "text") select 0; + if !(_markerText isEqualTo "") then {blck_dynamicmarkerMissionName = _markerText}; + _markerBrush = (_m1 get3DENAttribute "markerBrush") select 0; + _markerPos = (_m1 get3DENAttribute "position") select 0; + _markerSize = (_m1 get3DENAttribute "size2") select 0; + _markerText = (_m1 get3DENAttribute "text") select 0; if (CENTER isEqualTo [0,0,0]) then {CENTER = markerPos _m1}; } else { _type = "mil_square"; @@ -73,7 +83,7 @@ if !(_markers isEqualTo []) then _brush = "null"; CENTER = [0,0,0]; }; -diag_log format["_m1 = %1 | _type = %2 | _shape = %3 | _size = %4 | _color = %5 | _brush = %6",_m1,markerType _m1,markerShape _m1,MarkerSize _m1, markercolor _m1,markerbrush _m1]; +diag_log format["_m1 = %1 | _type = %2 | _shape = %3 | _size = %4 | _color = %5 | _brush = %6 | _text = %7",_m1,_markerType,_markerShape,_markerSize,_markerColor,_markerBrush,_markerText]; private _garrisonedBuildings = []; private _missionLootVehicles = []; @@ -165,8 +175,8 @@ _lines pushBack '#include "\q\addons\custom_server\Missions\privateVars.sqf";'; _lines pushBack ""; -_lines pushBack format["_markerType = %1",format["[%1,%2,%3];",_type,_size,_brush]]; -_lines pushBack format["_markerColor = %1;",_color]; +_lines pushBack format["_markerType = %1",format["[%1,%2,%3];",_markerType,_markerSize,_markerBrush]]; +_lines pushBack format["_markerColor = %1;",_markerColor]; _lines pushBack format['_startMsg = "%1";',blck_dynamicStartMessage]; _lines pushBack format['_endMsg = "%1;',blck_dynamicEndMessage]; _lines pushBack format['_markerMissionName = %1;',blck_dynamicmarkerMissionName]; From af3278bcbc29d700525e2b1e537a2dcd87c996f2 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Tue, 11 Aug 2020 07:45:05 -0400 Subject: [PATCH 11/25] Fixed errors The script to pull dynamic missions now properly sets mission center at a roadcone. You can delete or comment out the roadcone if the final mission if you like. --- @blckeagls_EDEN/addons/3EDEN_plugin.pbo | Bin 58107 -> 0 bytes @blckeagls_EDEN/addons/3EDEN_plugin.pbo.bak | Bin 58054 -> 0 bytes .../3EDEN_plugin/Export/fn_exportDynamic.sqf | 5 +- .../addons/3EDEN_plugin/config.cpp | 63 +++++++++++++++--- 4 files changed, 58 insertions(+), 10 deletions(-) delete mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin.pbo delete mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin.pbo.bak diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin.pbo b/@blckeagls_EDEN/addons/3EDEN_plugin.pbo deleted file mode 100644 index aa888d3e93e4e8144ead73462866dcfef9b7dc0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58107 zcmeHw&2MDMveyNK9v*2V1Pk5<=}cYq>yKOQk9L2|blY9pWJ*wg|l?62D(WW}ZA>WxMU} zx$|y$rtPZyjEszojEszk{6&^V-~Xcg(@lm)@$r0jG?JWnP7D0Se_QDA^NUH`i~8{} z%I3$XW6AscuWFIj54St~yq2WV{?V`#9ww9VeD>p!WIxtIzxccVd7;D4w$$My?)T#1 z@mew*hiEr-HU86I(<=Y^KP+_k+1BXA*{C0$xpGhbik9o`-0twREq4<2N3PH#)BRsZ z_xx-N#ltv<@&Eo!E%pEY`$C7GU7>7acoYuDY2N9#rqh1`;P}}ungKbokj6A5Hpw z)AClFWpOfe9sE7h!GHZncRKv+)z}KtH&KeQCa&}!{|yD_pZ(+geSS8jvuL~)4aZTs zGJb`*@Mi7rX!&3K?|-tt&(Eg9I2vHm#yMX8&EL|3|8jk?!_TJNcf)Z!?nk}*OOC$& z+<@>;zhCU|vtnSML%amQru5|jHWexWAN_3w_=|t_^}hXV#+v_GxcB*IpMQ35fxo-` zFw26qqvKcMxO)<1pMQ4#`Db&Qdf4y2iNfQ4)>-aFLnJe6E{%Si#A(#~K1w-d!Pmj! z{L(W&XQkImhS}Z$vd&wq+Ilbf6Oge<)`WLaIC3R5X%HTVzvIf)>Y5l128s8biTwBZ zXA3v`Q$WZ!lVNv^0V+xgNLgNgzW&nULvf{)K`fl}*W6Luk1+n06zz=qljC@}uZ3EI z41?pyUthtwj<=AfQ|+=A7R=<7SrSX2W9i)%iXBg=)MplXfMyhGW#QXs19PQ|W;5xA z{YrI~`5_9&CsA6Pr$nDs@^rjwCsFr}&C{uzGlM3N3NFAS%M`FkE^3=I?FeHprIC*Y zIzMxxBpY*(m?Wj%ImNw!M!tM>GV6}h{#r6POg=6(vzx7GIN2Ge@kqK-8Zw*IvQRVe zqRHIl(xeZ#CS|TguC>BlU6$S}S$VB?A$unpg=siW(sDY8T9=#Ik6LXZ zMRq0a?w~+%$11hp_4zGmvSqprl(y!C#xzZlRR^r;(vHXuUz!edJb`7tOY@7tQIZC$ z81y<>b#QnVyf^`Er&!zR{THua+&3#_ZY~slMpR-&_XGB=?CEIORYAxWHH!el&cSp@ zE5Y|R>`%z*7R{v8)-5AeaZny2(Hj&ez%)7?c4aDB(GFp56nDoH@DdDnKV04?k?%hb z$Kn2S70ojHL2`DJq`w-b`{Zk#Za6;*L)%i*fQp1LWkjZ6V2SDqV=`4OC?9W7B%l)U z){jWY`cfk(lw4T2`T5XACBOMg=jmo8f})J{eRL9c`$ZvXwX>7pY!IcL!!V0F-w-tm zQtkb-@53|>4^bf)CqXYdf?V_YX9JO619G521mP6CQa8(B7mSV~h@q1p8;9vQ7(`hX z9;2d7j)uKzVn2Et^;vm02`F?1B5XbV{IgLSzlBH}bR+?*0Zaco3St1%FP|L#HtLQu z)aZ0YXx5^p)9u6Px5y1zuamHc{UPdXcD^B1cI?q8E0velz_g8+B4x)XI72lQ+-2V1 z*Cv6;Z3PF7dOd`r5eMJVc4Pn@APGl}Qs)L(

Z{AZ1F+Z_NbO7hen0R`4q#s66W3 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

Vn%p7_Tak6=x9+R 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 L{EvV8r@j9V#c_>T diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf index b5db7fa..53f861f 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf @@ -45,10 +45,11 @@ if (isNil "blck_dynamicMissionDifficulty") then blck_dynamicMissionDifficulty = "Blue"; }; private _centerMarkers = allMissionObjects objectAtMissionCenter; +diag_log format["_centerMarkers = %1",_centerMarkers]; if !(_centerMarkers isEqualTo []) then { - CENTER = getPosATL _centerMarkers select 0; - diag_log format["CENTER defined by object %1 typeOf %2",_centerMarker,typeOf _centerMarker]; + CENTER = getPosATL (_centerMarkers select 0); + diag_log format["CENTER defined by object %1 typeOf %2",_centerMarker,typeOf (_centerMarkers select 0)]; }; private _entities = all3DENEntities; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/config.cpp b/@blckeagls_EDEN/addons/3EDEN_plugin/config.cpp index 36c278d..3d5716d 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/config.cpp +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/config.cpp @@ -1,5 +1,11 @@ /* + blckeagls 3EDEN Editor Plugin + by Ghostrider-GRG- + Parts of config.cpp were derived from the Exile_3EDEN editor plugin + * and is licensed as follows: + * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. */ class CfgPatches @@ -31,10 +37,6 @@ class CfgFunctions //class isInfantry {}; //class isInside {}; - //class saveInitPlayerLocal {}; - //class saveWeather {}; - //class saveMarkers {}; - //class exportCheck {}; }; class Core @@ -42,9 +44,6 @@ class CfgFunctions file = "3EDEN_plugin\Core"; class help {}; class about {}; - class init { - postInit = 1; - }; }; }; @@ -55,7 +54,55 @@ class CfgFunctions class ctrlCombo; -/////////////////////////////////////////////////////////////////////////////// +class cfg3EDEN +{ + class EventHandlers + { + class blck + { + + }; + }; + + class Attributes + { + class Default; + + class Title: Default + { + class Controls + { + class Title; + }; + }; + + class Combo: Title + { + class Controls: Controls + { + class Title: Title {}; + class Value: ctrlCombo {}; + }; + }; + + class missionDifficulty: Combo + { + class Controls: Controls + { + class Title: Title {}; + class Value: Value + { + onLoad = "\ + {\ + _index = _control lbAdd _x;\ + _control lbsetdata [_index,_x];\ + }\ + forEach['','Blue (Easy)','Red (Medium)','Green (Hard)','Orange (Very Hard)'];"; + }; + }; + }; + }; +}; class ctrlMenuStrip; From 1e813cda566d4dba7e106f3e0846e2d85c0805b0 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Tue, 11 Aug 2020 07:50:31 -0400 Subject: [PATCH 12/25] corectly named world name for livonia (enoch) --- @GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/@GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf b/@GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf index 27438e8..5e40a48 100644 --- a/@GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf +++ b/@GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf @@ -19,7 +19,7 @@ switch (toLower worldName) do case "stratis":{blck_mapCenter = [3900,4500,0]; blck_mapRange = 4500;}; case "tanoa":{blck_mapCenter = [9000,9000,0]; blck_mapRange = 10000;}; case "malden":{ blck_mapCenter = [6000,7000,0]; blck_mapRange = 6000;}; - case "livonia":{blck_mapCenter = [6500,6000,0]; blck_mapRange = 5800;}; + case "enoch":{blck_mapCenter = [6500,6000,0]; blck_mapRange = 5800;}; case "gm_weferlingen_summer":{blck_mapCenter = [10000,10000,0]; blck_mapRange = 10000;}; case "chernarus":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 5300;}; case "namalsk":{blck_mapCenter = [5700, 8700, 0]; blck_mapRange = 10000;}; From 475fad641f843351c718a07314e60e1f7d5442a2 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Tue, 11 Aug 2020 07:54:59 -0400 Subject: [PATCH 13/25] Added weferlingen_winter --- @GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf | 1 + 1 file changed, 1 insertion(+) diff --git a/@GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf b/@GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf index 5e40a48..ea86e51 100644 --- a/@GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf +++ b/@GMS/addons/custom_server/init/GMS_fnc_findWorld.sqf @@ -21,6 +21,7 @@ switch (toLower worldName) do case "malden":{ blck_mapCenter = [6000,7000,0]; blck_mapRange = 6000;}; case "enoch":{blck_mapCenter = [6500,6000,0]; blck_mapRange = 5800;}; case "gm_weferlingen_summer":{blck_mapCenter = [10000,10000,0]; blck_mapRange = 10000;}; + case "gm_weferlingen_winter":{blck_mapCenter = [10000,10000,0]; blck_mapRange = 10000;}; case "chernarus":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 5300;}; case "namalsk":{blck_mapCenter = [5700, 8700, 0]; blck_mapRange = 10000;}; case "chernarus_summer":{blck_mapCenter = [7100, 7750, 0]; blck_mapRange = 6000;}; From d4758ebcac3f6cb27759d47ce8714357c42d60ed Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Sat, 15 Aug 2020 07:04:14 -0400 Subject: [PATCH 14/25] Build 2 Added basic export tool for static missions. Configuration of most options now working properly (a time saver !) --- .../Core/fn_configureGarrisionBuildingPos.sqf | 34 ++ .../fn_configureGarrisonForBuildingATL.sqf | 65 ++++ .../Core/fn_generateObjectInfo.sqf | 2 + .../Core/fn_initializeAttributes.sqf | 12 + .../3EDEN_plugin/Core/fn_loadCratesTiming.sqf | 4 + .../Core/fn_setCompletionMode.sqf | 5 + .../3EDEN_plugin/Core/fn_setDifficulty.sqf | 16 + .../Core/fn_spawnCratesTiming.sqf | 5 + .../3EDEN_plugin/Core/fn_versionInfo.sqf | 13 + .../addons/3EDEN_plugin/Export/Untitled-1.txt | 142 +++----- .../addons/3EDEN_plugin/Export/Untitled-2.sqf | 6 + .../addons/3EDEN_plugin/Export/Untitled-2.txt | 3 + .../3EDEN_plugin/Export/fn_exportDynamic.sqf | 316 +++++++++++------ .../3EDEN_plugin/Export/fn_exportStatic.sqf | 291 +++++++++++++++- .../Export/pullDynamicMission.sqf | 16 +- .../addons/3EDEN_plugin/Export/template.sqf | 78 +---- .../addons/3EDEN_plugin/config.cpp | 206 +++-------- @blckeagls_EDEN/addons/3EDEN_plugin/defines.h | 328 ++++++++++++++++++ 18 files changed, 1095 insertions(+), 447 deletions(-) create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisionBuildingPos.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisonForBuildingATL.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_generateObjectInfo.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_initializeAttributes.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_loadCratesTiming.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setCompletionMode.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setDifficulty.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_spawnCratesTiming.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_versionInfo.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-2.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-2.txt create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/defines.h diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisionBuildingPos.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisionBuildingPos.sqf new file mode 100644 index 0000000..0d392f7 --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisionBuildingPos.sqf @@ -0,0 +1,34 @@ + + +#define oddsOfGarrison 0.67 +#define maxGarrisonStatics 3 +#define maxGarrisonUnits 4 +#define typesGarrisonStatics [] // When empty a static will be randomly chosen from the defaults for blckeagls +#define garrisonMarkerObject "Sign_Sphere100cm_F" // This can be anything you like. I find this large sphere easy to see and convenient. +#define unitMarkerObject "Sign_Arrow_Direction_Green_F" // This can be anything. I chose this arrow type because it allows you to easily indicate direction. + +_helpers = allMissionObjects garrisonMarkerObject; +//diag_log format["_helpers = %1",_helpers]; +{ + if ( (typeOf _x) isEqualTo garrisonMarkerObject) then + { + private _isInside = [_x] call _fn_isInside; + if (_isInside) then + { + _building = [_x] call _fn_buildingContainer; + blck_garrisonedBuildings pushbackunique _building; + blck_garrisonedBuildings pushbackunique _x; + // data structure ["building Classname",[/*building pos*/],/*building dir*/,/*odds of garrison*/, /*Max Statics*/,/*types statics*/,/*max units*/], + // 1 2 3 4 5 6 7 8 9 + _line = format[' ["%1",%2,%3,%4,%5,%6,%7,%8,%9]',typeOf _building,(getPosATL _building) vectorDiff CENTER,getDir _building, 'true','true',oddsOfGarrison,maxGarrisonStatics,typesGarrisonStatics,maxGarrisonUnits]; + systemChat _line; + //diag_log _line; + if (_forEachIndex == 0) then + { + _cb = _cb + format["%1%2",endl,_line]; + } else { + _cb = _cb + format[",%1%2",endl,_line]; + }; + }; + }; +} forEach _helpers; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisonForBuildingATL.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisonForBuildingATL.sqf new file mode 100644 index 0000000..6fdaf17 --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisonForBuildingATL.sqf @@ -0,0 +1,65 @@ + + + +#define oddsOfGarrison 0.67 +#define maxGarrisonStatics 3 +#define maxGarrisonUnits 4 +#define typesGarrisonStatics [] // When empty a static will be randomly chosen from the defaults for blckeagls +#define garrisonMarkerObject "Sign_Sphere100cm_F" // This can be anything you like. I find this large sphere easy to see and convenient. +#define unitMarkerObject "Sign_Arrow_Direction_Green_F" // This can be anything. I chose this arrow type because it allows you to easily indicate direction. + +private["_b","_staticsInBuilding","_unitsInBuilding","_staticsText","_unitsText","_buildingGarrisonATL","_staticsInBuilding","_unitsInBuilding","_count"]; +_b = _this select 0; +private _count = 0; +if (_b in blck_garrisonedBuildings) exitWith {""}; +private _staticsText = ""; +private _unitsText = ""; +private _buildingGarrisonATL = ""; +_staticsInBuilding = nearestObjects[getPosATL _building,["StaticWeapon"],sizeOf (typeOf _building)]; +{ + if !(_x in _configuredStatics) then + { + _isInside = [_x] call _fn_isInside; + if (_isInside) then {_building = [_x] call _fn_buildingContainer}; + 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]; + } else { + _staticsText = _staticsText + format[',["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff (getPosATL _b),getDir _x]; + }; + }; + }; +} forEach _staticsInBuilding; +// Since this is run from the editor we do not have to worry about units running off from their original locations +_unitsInBuilding = nearestObjects[getPosATL _building,["Man"],sizeOf (typeOf _building)] select {(vehicle _x) isEqualTo _x}; + +{ + if !(_x in _configuredUnits) then + { + _isInside = [_x] call _fn_isInside; + if (_isInside) then {_building = [_x] call _fn_buildingContainer}; + if (_b isEqualTo _building) then + { + _configuredUnits pushBackUnique _x; + + if (_unitsText isEqualTo "") then + { + _unitsText = format["[%1,%2]",(getPosATL _x) vectorDiff (getPosATL _b),getDir _x]; + } else { + _unitsText = _unitsText + format[",[%1,%2]",(getPosATL _x) vectorDiff (getPosATL _b),getDir _x]; + }; + _count = _count + 1; + }; + }; +} forEach _unitsInBuilding; + +if ( !(_staticsText isEqualTo "") || !(_unitsText isEqualTo "")) then +{ + _buildingGarrisonATL = format[' ["%1",%2,%3,%4,%5,[%6],[%7]]',typeOf _b,(getPosATL _b) vectorDiff CENTER,getDir _b,'true','true',_staticsText,_unitsText]; + blck_garrisonedBuildings pushBackUnique _b; +}; +_buildingGarrisonATL diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_generateObjectInfo.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_generateObjectInfo.sqf new file mode 100644 index 0000000..0fb967b --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_generateObjectInfo.sqf @@ -0,0 +1,2 @@ + +params["_3DENobject","_center"]; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_initializeAttributes.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_initializeAttributes.sqf new file mode 100644 index 0000000..9c6cd8e --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_initializeAttributes.sqf @@ -0,0 +1,12 @@ + + + +missionNamespace setVariable["blck_difficulty",getText(configFile >> "CfgBlck3DEN" >> "configs" >> "defaultMissionDifficulty")]; +diag_log format["Initilization: blck_difficulty set to %1",blck_difficulty]; +missionNamespace setVariable["blck_lootTiming",getText(configFile >> "CfgBlck3DEN" >> "configs" >> "defaultLootcrateSpawnTiming")]; +missionNamespace setVariable["blck_loadTiming",getText(configFile >> "CfgBlck3DEN" >> "configs" >> "defaultLootcrateLoadTiming")]; +missionNamespace setVariable["blck_endState",getText(configFile >> "CfgBlck3DEN" >> "configs" >> "defaultMissionEndState")]; +missionNamespace setVariable["blck_startMessage","TODO: Add a start message"]; +missionNamespace setVariable["blck_endMessage","TODO: Add an end message"]; + +diag_log format["Mission Attributes Initialized for blckeagls at time %1",diag_tickTime]; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_loadCratesTiming.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_loadCratesTiming.sqf new file mode 100644 index 0000000..60c2069 --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_loadCratesTiming.sqf @@ -0,0 +1,4 @@ + +params["_timing"]; +missionNamespace setVariable["blck_loadTiming",_timing]; +systemChat format["Mission Load Crates Timing set to %1",_timing]; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setCompletionMode.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setCompletionMode.sqf new file mode 100644 index 0000000..62a0cfe --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setCompletionMode.sqf @@ -0,0 +1,5 @@ + + +params["_mode"]; +missionNamespace setVariable["blck_endState",_mode]; +systemChat format["Mission End State updated to %1",_mode]; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setDifficulty.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setDifficulty.sqf new file mode 100644 index 0000000..3b44053 --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setDifficulty.sqf @@ -0,0 +1,16 @@ + +params["_difficulty"]; +missionNamespace setVariable["blck_difficulty",_difficulty]; +private _m = format["Mission Difficulty updated to %1",_difficulty]; +systemChat _m; +diag_log _m; + + +/* + +missionNamespace setVariable["blck_difficulty","Red"]; +missionNamespace setVariable["blck_lootTiming","atMissionStartGround"]; +missionNamespace setVariable["blck_loadTiming","atMissionStart"]; +missionNamespace setVariable["blck_endState","allUnitsKilled"]; +missionNamespace setVariable["blck_startMessage","TODO: Add a start message"]; +missionNamespace setVariable["blck_endMessage","TODO: Add an end message"]; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_spawnCratesTiming.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_spawnCratesTiming.sqf new file mode 100644 index 0000000..4c2475d --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_spawnCratesTiming.sqf @@ -0,0 +1,5 @@ + + +params["_timing"]; +missionNamespace setVariable["blck_lootTiming",_timing]; +systemChat format["Loot Chest Spawn Timing updated to %1",_timing]; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_versionInfo.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_versionInfo.sqf new file mode 100644 index 0000000..c6357ae --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_versionInfo.sqf @@ -0,0 +1,13 @@ + + +params["_mode"]; + +private _header = format["%4Mission.sqf generated:: blckeagls 3DEN Plugin Version %1 : Build %2 : Build Date %3", + getNumber(configFile >> " CfgBlck3DEN" >> "CfgVersion" >> "version"), + getNumber(configFile >> "CfgBlck3DEN" >> "CfgVersion" >> "build"), + getText(configFile >> "CfgBlck3DEN" >> "CfgVersion" >> "date"), + _mode +]; +diag_log _header; +_header + diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-1.txt b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-1.txt index bfcab63..d1d19da 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-1.txt +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-1.txt @@ -1,95 +1,51 @@ +class CfgVehicles +{ + class Object + { + class AttributeCategories + { + class LandVehicle; + class blckLandVehicle: LandVehicle; + { + class Attributes + { + class blckLootVehicle + { + // https://community.bistudio.com/wiki/Eden_Editor:_Configuring_Attributes#Scenario + displayName = "Loot Vehicle"; + toolTip = "Enable/Disable Use as Loot Vehicle"; + property = "blckLootVehicle"; + control = "Edit"; + expression = "_this setVariable['%s',_value];"; + defaultValue = 'false'; + unique = 0; + validate = "BOOL"; + typeName = "BOOL"; + }; + }; + }; -/* - Output from GRG Plugin for blckeagls - For Credits and Acknowledgements see the Readme and comments -*/ - -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -#include "\q\addons\custom_server\Missions\privateVars.sqf"; - -_markerType = [,[0,0],]; -_markerColor = ; -_startMsg = "TODO: Change approiately"; -_endMsg = "TODO: Change Appropriately; -_markerMissionName = TODO: Update appropriately; -_crateLoot = blck_BoxLoot_Blue; -_lootCounts = blck_lootCountsBlue; - -_missionLandscape = [ - ["Land_Unfinished_Building_01_F",[0,0,0],0,true,true], - ["Land_u_Shed_Ind_F",[-61.9277,-7.80664,-0.0579567],0,true,true], - ["Land_Shed_08_brown_F",[-47.9512,26.3086,-0.0630035],0,true,true], - ["Land_Shed_02_F",[-6.22852,78.9766,-0.0466728],0,true,true], - ["Land_Wreck_AFV_Wheeled_01_F",[-38.0176,-20.6309,-0.0216446],0,true,true] -]; - -_simpleObjects = [ - -]; - -_missionPatrolVehicles = [ - ["B_Truck_01_mover_F",[-8.7207,13.8828,-0.0554924],0], - ["B_MRAP_01_hmg_F",[-29.7793,16.5488,-0.054863],0] -]; - -_submarinePatrolParameters = [ - -]; - -_airPatrols = [ - ["B_Heli_Light_01_dynamicLoadout_F",[-39.4199,9.21094,-0.0559273],0] -]; - -_missionEmplacedWeapons = [ - ["B_GMG_01_F",[-37.9668,-4.69336,-0.0563164],0], - ["B_HMG_01_F",[11.2852,43.7969,-0.0578575],0] -]; - -_missionGroups = [ - ,[[-27.1387,-8.02148,-0.0584373],3,6,"Red",30,45], - ,[[-2.74414,46.5508,-0.0565186],3,6,"Red",30,45] -]; - -_scubaGroupParameters = [ - -]; - -_missionLootBoxes = [ - ["Box_IND_Wps_F",[-22.0605,2.1543,-0.0577888],_crateLoot,_lootCounts,0], - ["Box_AAF_Equip_F",[-19.5859,7.62695,-0.0575409],_crateLoot,_lootCounts,0], - ["Box_IND_AmmoOrd_F",[-17.8203,13.4805,-0.0576591],_crateLoot,_lootCounts,0], - ["Box_IND_WpsLaunch_F",[-22.6543,-1.80859,-0.0577736],_crateLoot,_lootCounts,0] -]; - -_chanceHeliPatrol = blck_chanceHeliPatrolBlue; -_noChoppers = blck_noPatrolHelisBlue; -_missionHelis = blck_patrolHelisBlue; - -_chancePara = blck_chanceParaBlue; -_noPara = blck_noParaBlue; -_paraTriggerDistance = 400; -_paraSkill = 'Blue'; -_chanceLoot = 0.0; -_paraLoot = blck_BoxLoot_Blue; -_paraLootCounts = blck_lootCountsBlue; -_missionLandscapeMode = "precise"; -_uniforms = blck_SkinList; -_headgear = blck_headgear; -_vests = blck_vests; -_backpacks = blck_backpacks; -_sideArms = blck_Pistols; -_spawnCratesTiming = blck_spawnCratesTiming; -_loadCratesTiming = blck_loadCratesTiming; -_endCondition = blck_missionEndCondition; -_minNoAI = blck_MinAI_Blue; -_maxNoAI = blck_MaxAI_Blue; -_noAIGroups = blck_AIGrps_Blue; -_noVehiclePatrols = blck_SpawnVeh_Blue; -_noEmplacedWeapons = blck_SpawnEmplaced_Blue; -_minNoAI = blck_MinAI_Blue; -_maxNoAI = blck_MaxAI_Blue -_noAIGroups = blck_AIGrps_Blue; -_noVehiclePatrols = blck_SpawnVeh_Blue; -_noEmplacedWeapons = blck_SpawnEmplaced_Blue; -#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; \ No newline at end of file + class Static; + class blckHouse: Static + { + class Attributes + { + class blckGarison + { + // https://community.bistudio.com/wiki/Eden_Editor:_Configuring_Attributes#Scenario + displayName = "Garison Building"; + toolTip = "Enable/Disable ?Garisoned Building"; + property = "blckGarison"; + control = "Edit"; + expression = "_this setVariable['%s',_value];"; + defaultValue = 'false'; + unique = 0; + validate = "BOOL"; + typeName = "BOOL"; + }; + }; + }; + }; + }; +}; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-2.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-2.sqf new file mode 100644 index 0000000..414642e --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-2.sqf @@ -0,0 +1,6 @@ + + +_parameter = 0; +_ok = "Multiplayer" set3DENMissionAttribute ["respawn",15]; +_parameter = "Multiplayer" get3DENMissionAtrribute "respawn"; +systemChat format["_parameter = %1",_parameter]; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-2.txt b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-2.txt new file mode 100644 index 0000000..d970277 --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-2.txt @@ -0,0 +1,3 @@ + +private _success = "blck_missions" set3DENAttribute ["mission_Dificulty","Blue"]; +[format["Difficulty Set to: %1",_difficulty],"Mission Difficulty","OK","Cancel"] call BIS_fnc_3DENShowMessage; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf index 53f861f..5ba53db 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf @@ -1,26 +1,49 @@ -#define aiDifficulty "Red" -#define minAI 3 -#define maxAI 6 -#define minPatrolRadius 30 -#define maxPatrolRadius 45 -#define AI_respawnTime 600 -#define aiVehiclePatrolRadius 75 -#define vehiclePatrolRespawnTime 600 -#define staticWeaponRespawnTime 600 -#define aiAircraftPatrolRespawnTime 600 -#define aiAircraftPatrolRadius 1700 -#define oddsOfGarrison 0.67 -#define maxGarrisonStatics 3 -#define maxGarrisonUnits 4 -#define typesGarrisonStatics [] // When empty a static will be randomly chosen from the defaults for blckeagls -#define garrisonMarkerObject "Sign_Sphere100cm_F" // This can be anything you like. I find this large sphere easy to see and convenient. -#define unitMarkerObject "Sign_Arrow_Direction_Green_F" // This can be anything. I chose this arrow type because it allows you to easily indicate direction. -#define objectAtMissionCenter "RoadCone_L_F" -#define lootVehicleMarker "Sign_Arrow_F" -#define landVehicles "LandVehicle" + + +objectAtMissionCenter = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "objectAtMissionCenter"); +blck_minAI = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "minAI"); +blck_maxAI = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "maxAI"); +minPatrolRadius = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "minPatroRadius"); +maxPatrolRadius = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "maxPatrolRadius"); +maxVehiclePatrolRadius = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "maxVehiclePatrolRadius"); +aircraftPatrolRadius = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "aircraftPatrolRadius"); +oddsOfGarison = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "oddsOfGarison"); +maxGarrisonStatics = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "maxGarrisonStatics"); +typesGarrisonStatics = getArray(configFile >> "CfgBlck3DEN" >> "configs" >> "typesGarrisonStatics"); +//blck_MissionDifficulty = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "defaultMissionDifficulty"); +blck_MissionDifficulty = missionNamespace getVariable["blck_difficulty",getText(configFile >> "CfgBlck3DEN" >> "configs" >> "defaultMissionDifficulty")]; + +lootVehicleVariableName = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "lootVehicleVariableName"); +buildingPosGarrisonVariableName = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "buildingPosGarrisonVariableName"); +buildingATLGarrisionVariableName = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "buildingATLGarrisionVariableName"); + +{ + diag_log format["param %1 = %2",_forEachIndex,_x]; +} forEach [ + objectAtMissionCenter, + blck_minAI, + blck_maxAI, + minPatrolRadius, + maxPatrolRadius, + maxVehiclePatrolRadius, + aircraftPatrolRadius, + oddsOfGarison, + maxGarrisonStatics, + typesGarrisonStatics, + blck_MissionDifficulty, + lootVehicleVariableName, + buildingPosGarrisonVariableName, + buildingATLGarrisionVariableName +]; + CENTER = [0,0,0]; diag_log format["Dynamic Export called at %1",diag_tickTime]; +diag_log format["With blck_MissionDifficulty = %1",blck_MissionDifficulty]; + +/* + Set Default Values Where not Defined using Menu Commands +*/ if (isNil "blck_dynamicStartMessage") then { blck_dynamicStartMessage = "TODO: Change approiately"; @@ -31,38 +54,59 @@ if (isNil "blck_dynamicEndMessage") then }; if (isNil "blck_dynamicCrateLoot") then { - blck_dynamicCrateLoot = "_crateLoot = blck_BoxLoot_Green;"; + blck_dynamicCrateLoot = format["_crateLoot = blck_BoxLoot_%1;",blck_MissionDifficulty]; }; if (isNil "blck_dynamicCrateLootCounts") then { - blck_dynamicCrateLootCounts = "_lootCounts = blck_lootCountsGreen;"; + blck_dynamicCrateLootCounts = format["_lootCounts = blck_lootCounts%1;",blck_MissionDifficulty]; }; if (isNil "blck_dynamicmarkerMissionName") then { blck_dynamicmarkerMissionName = "TODO: Update appropriately"; }; -if (isNil "blck_dynamicMissionDifficulty") then +if (isNil "blck_spawnCratesTiming") then { - blck_dynamicMissionDifficulty = "Blue"; + blck_spawnCratesTiming = missionNamespace getVariable["blck_lootTiming","atMissionStartGround"]; + diag_log format["blck_loadCratesTiming set to default value of %1",blck_spawnCratesTiming]; +}; +if (isNil "blck_loadCratesTiming") then +{ + blck_loadCratesTiming = missionNamespace getVariable["blck_loadTiming","atMissionStart"]; + diag_log format["blck_loadCratesTiming set to default value of %1",blck_loadCratesTiming]; }; +if (isNil "blck_missionEndCondition") then +{ + blck_missionEndCondition = missionNamespace getVariable["blck_endState","allUnitsKilled"]; + diag_log format["blck_missionEndCondition set to default value of %1",blck_missionEndCondition]; +}; + +/* + Look for an object defined in CfgBlck3DEN \ configs \ that marks the center of the mission + and set the coords of the center if such an object is found +*/ + private _centerMarkers = allMissionObjects objectAtMissionCenter; diag_log format["_centerMarkers = %1",_centerMarkers]; if !(_centerMarkers isEqualTo []) then { CENTER = getPosATL (_centerMarkers select 0); diag_log format["CENTER defined by object %1 typeOf %2",_centerMarker,typeOf (_centerMarkers select 0)]; +} else { + diag_log format[" No object marking the center of the mission was found: using a flashing road cone or flag is recommended",getText(configFile >> "CfgVehicles" >> objectAtMissionCenter >> "displayName")]; + diag_log format["Place such an object or a marker to ensure the mission is accurately stored and spawned"]; }; -private _entities = all3DENEntities; -private _markers = _entities select 5; -diag_log format["_markers = %1",_markers]; -private ["_m1","_type","_shape","_size","_color","_brush"]; - -/* +all3DENEntities params ["_objects","_groups","_triggers","_systems","_waypoints","_markers","_layers","_comments"]; +private _units = []; { - diag_log format["_m1 get3EDENAttribute %1 = %2",_x, _m1 get3DENAttribute _x]; -} forEch ["markerType","markerColor","markerBrush","position","size2","text"]; + { + if (vehicle _x isEqualTo _x) then {_units pushBack _x}; + } forEach (units _x); +} forEach _groups; + +private["_m1","_markerPos","_markerType","_markerShape","_markerColor","_markerText","_markerBrush","_markerSize","_markerAlpha"]; +/* + pull info on the first marker found */ -private["_m1","_markerType","_markerShape","_markerColor","_markerText","_markerBrush","_markerPos","_markerSize","_markerAlpha"]; if !(_markers isEqualTo []) then { _m1 = _markers select 0; @@ -75,114 +119,166 @@ if !(_markers isEqualTo []) then _markerPos = (_m1 get3DENAttribute "position") select 0; _markerSize = (_m1 get3DENAttribute "size2") select 0; _markerText = (_m1 get3DENAttribute "text") select 0; - if (CENTER isEqualTo [0,0,0]) then {CENTER = markerPos _m1}; + + /* + use the coordinates of that marker as mission center of no object demarkating the center is found + */ + if ((isNil "CENTER") || (CENTER isEqualTo [0,0,0])) then { + CENTER = _markerPos; + diag_log format["Position of marker %1 used for position of CENTER = %2",_m1,CENTER]; + }; + if (count _markers > 1) then + { + diag_log format[" More than one marker was found; only the first marker was processed"]; + }; } else { - _type = "mil_square"; - _shape = "null"; - _size = "[0,0]"; - _color = "COLORRED"; - _brush = "null"; - CENTER = [0,0,0]; + _markerType = "mil_square"; + _markerShape = "null"; + _markerSize = "[0,0]"; + _markerColor = "COLORRED"; + _markerBrush = "null"; + if !(_objects isEqualTo []) then + { + CENTER = getPosATL (_objects select 0); + } else { + CENTER = getPos (_objects select 0); + }; + diag_log format[" No marker was found, using default values and position for mission center position"]; }; diag_log format["_m1 = %1 | _type = %2 | _shape = %3 | _size = %4 | _color = %5 | _brush = %6 | _text = %7",_m1,_markerType,_markerShape,_markerSize,_markerColor,_markerBrush,_markerText]; -private _garrisonedBuildings = []; -private _missionLootVehicles = []; -private _staticObjects = (_entities select 0) select {(_x isKindOf "Static") && !(isSimpleObject _x)}; -diag_log format["_staticObjects: %1",_staticObjects]; if (CENTER isEqualTo [0,0,0]) then { CENTER = getPosATL (_staticObjects select 0); }; diag_log format["CENTER = %1",CENTER]; + +private _garisonedBuildings = []; +private _garisonedStatics = []; +private _garisonedUnits = []; + +private _landscape = _objects select{ + !(isSimpleObject _x) && + ((typeOf _x) isKindOf "Static") +}; + +diag_log format["CENTER = %1 | _landscape = %2",CENTER,_landscape]; private _missionLandscape = []; - { - if !(_x in _garrisonedBuildings && !((typeOf _x) isEqualTo unitMarkerObject) && !((typeOf _x) isEqualTo garrisonMarkerObject)) then - { - _missionLandscape pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true']; - }; -}forEach _staticObjects; + _missionLandscape pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true']; +}forEach _landscape; -private _simpleObjects = (_entities select 0) select {isSimpleObject _x}; +private _simpleObjects = _objects select {isSimpleObject _x}; diag_log format["_simpleObjects = %1",_simpleObjects]; private _missionSimpleObjects = []; { - if !(_x in _garrisonedBuildings && !((typeOf _x) isEqualTo unitMarkerObject) && !((typeOf _x) isEqualTo garrisonMarkerObject)) then - { - _missionSimpleObjects pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true']; - }; + _missionSimpleObjects pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true']; } forEach _simpleObjects; -private _missionPatrolVehicles = []; -private _patrolVehicles = ((allMissionObjects "Car") + (allMissionObjects "Tank") + allMissionObjects "Ship") select {!((typeOf _x) isKindOf "SDV_01_base_F") && !(_x in _missionLootVehicles)}; -diag_log format["_patrolVehicles = _count = %2 | %1",_patrolVehicles,count _patrolVehicles]; +private _missionLootVehicles = []; +private _lootVehicles = _objects select { + ((typeOf _x) isKindOf "AllVehicles") && + !((typeOf _x) isKindOf "Man") && + (_x get3DENAttribute "name" isEqualTo lootVehicleVariableName) +}; +diag_log format["_lootVehicles = %1",_lootVehicles]; { - _missionPatrolVehicles pushBack format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x]; + _missionLootVehicles pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER, '_crateLoot','_lootCounts',getDir _x]; +} forEach _lootVehicles; + +_missionPatrolVehicles = []; +private _patrolVehicles = _objects select { + ((typeOf _x) isKindOf "AllVehicles") && + !((typeOf _x) isKindOf "Man") && + !((typeOf _x) isKindOf "SDV_01_base_F") && + !((typeOf _x) isEqualTo "Air") && + !(_x in _lootVehicles) +}; +diag_log format["_patrolVehicles = %1",_patrolVehicles]; +{ + _missionPatrolVehicles pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x,maxVehiclePatrolRadius,maxVehiclePatrolRadius]; }forEach _patrolVehicles; -private _subs = allMissionObjects "SDV_01_base_F" select {((typeOf _x) isKindOf "SDV_01_base_F") && !(_x in _missionLootVehicles)}; private _subPatrols = []; +private _subs = _objects select { + ((typeOf _x) isKindOf "SDV_01_base_F") && + !(_x in _lootVehicles) +}; diag_log format["_subs = %1",_subs]; { - _lines pushBack format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x]; + _subPatrols pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x,maxVehiclePatrolRadius,maxVehiclePatrolRadius]; } forEach _subs; -private _airvehicles = allMissionObjects "Air"; private _airPatrols = []; -diag_log format["_airPatrolvehicles = %1",_airvehicles]; +private _airVehicles = _objects select { + (typeOf _x) isKindOf "Air" +}; +diag_log format["_airVehicles = %1",_airvehicles]; { - _airPatrols pushBack format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true']; -} forEach _airvehicles; + _airPatrols pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x,aircraftPatrolRadius,aircraftPatrolRadius]; +} forEach _airVehicles; + -private _allstaticWeapons = allMissionObjects "StaticWeapon"; private _staticWeapons = []; -diag_log format["_staticWeapons = %1",_staticWeapons]; +private _statics = _objects select { + ((typeOf _x) isKindOf "StaticWeapon") && + !(_x in _garisonedStatics) +}; +diag_log format["_statics = %1",_statics]; { - _staticWeapons pushBack format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true']; -} forEach _allstaticWeapons; -private _isInside = false; -private _infantry = allMissionObjects "Man" select {!(surfaceIsWater (getPos _x)) && !(_isInside) && !(isPlayer _x) && ((vehicle _x isEqualTo _x))}; + _staticWeapons pushBack format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x]; +} forEach _statics; + +private _infantry = _units select { + !(surfaceIsWater (getPos _x)) && + !(_x in _garisonedUnits) +}; diag_log format["_infantry = %1",_infantry]; _infantryGroups = []; { - _infantryGroups pushBack format[' ,[%1,%2,%3,"%4",%5,%6]',(getPosATL _x) vectorDiff CENTER,minAI,maxAI,aiDifficulty,minPatrolRadius,maxPatrolRadius]; -} forEach _infantry; + _infantryGroups pushBack format[' ,[%1,%2,%3,"%4",%5,%6]',(getPosATL _x) vectorDiff CENTER,blck_minAI,blck_maxAI,blck_MissionDifficulty,minPatrolRadius,maxPatrolRadius]; +} forEach _units; -private _scuba = allMissionObjects "Man" select {(surfaceIsWater (getPos _x)) && !(_isInside) && !(isPlayer _x) && ((vehicle _x isEqualTo _x))}; +private _scuba = _units select { + (surfaceIsWater (getPos _x)) && + !(_x in _garisonedUnits) + // checck _x get3EDENAtribute "name" != "garrison"; +}; diag_log format["_scuba = %1",_scuba]; private _scubaGroups = []; { - _scubaGroups pushBack format[' [%1,%2,%3,"%4",%5,%6]',(getPosATL _x) vectorDiff CENTER,minAI,maxAI,aiDifficulty,minPatrolRadius,maxPatrolRadius]; + _scubaGroups pushBack format[' [%1,%2,%3,"%4",%5,%6]',(getPosATL _x) vectorDiff CENTER,blck_minAI,blck_maxAI,blck_MissionDifficulty,minPatrolRadius,maxPatrolRadius]; } forEach _scuba; -private _lootBoxes = ((allMissionObjects "ReammoBox") + (allMissionObjects "ReammoBox_F")); -diag_log format["_lootBoxes = %1",_lootBoxes]; private _lootContainers = []; +private _ammoBoxes = _objects select { + (((typeOf _x) isKindOf "ReammoBox") || ((typeOf _x) isKindOf "ReammoBox_F")) +}; +diag_log format["_ammoBoxes = %1",_ammoboxes]; { _lootContainers pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER, '_crateLoot','_lootCounts',getDir _x]; -}forEach _lootBoxes; +}forEach _ammoBoxes; private _lines = []; private _lineBreak = toString [10]; _lines pushBack "/*"; -_lines pushBack " Output from GRG Plugin for blckeagls"; -_lines pushBack " For Credits and Acknowledgements see the Readme and comments"; +_lines pushBack " Dynamic Mission Generated"; +_lines pushBack " Using 3DEN Plugin for blckeagls"; +_lines pushBack format[" %1",['dynamic'] call blck3DEN_fnc_versionInfo]; +_lines pushBack " By Ghostrider-GRG-"; _lines pushBack "*/"; _lines pushBack ""; _lines pushBack '#include "\q\addons\custom_server\Configs\blck_defines.hpp";'; _lines pushBack '#include "\q\addons\custom_server\Missions\privateVars.sqf";'; _lines pushBack ""; - - _lines pushBack format["_markerType = %1",format["[%1,%2,%3];",_markerType,_markerSize,_markerBrush]]; _lines pushBack format["_markerColor = %1;",_markerColor]; _lines pushBack format['_startMsg = "%1";',blck_dynamicStartMessage]; _lines pushBack format['_endMsg = "%1;',blck_dynamicEndMessage]; -_lines pushBack format['_markerMissionName = %1;',blck_dynamicmarkerMissionName]; -_lines pushBack format['_crateLoot = blck_BoxLoot_%1;',blck_dynamicMissionDifficulty]; -_lines pushBack format['_lootCounts = blck_lootCounts%1;',blck_dynamicMissionDifficulty]; +_lines pushBack format['_markerMissionName = "%1";',blck_dynamicmarkerMissionName]; +_lines pushBack format['_crateLoot = blck_BoxLoot_%1;',blck_MissionDifficulty]; +_lines pushBack format['_lootCounts = blck_lootCounts%1;',blck_MissionDifficulty]; _lines pushBack ""; _lines pushBack "_missionLandscape = ["; _lines pushback (_missionLandscape joinString (format [",%1", _lineBreak])); @@ -192,6 +288,10 @@ _lines pushBack "_simpleObjects = ["; _lines pushback (_simpleObjects joinString (format [",%1", _lineBreak])); _lines pushBack "];"; _lines pushBack ""; +_lines pushBack "_missionLootVehicles = ["; +_lines pushBack (_missionLootVehicles joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; _lines pushBack "_missionPatrolVehicles = ["; _lines pushback (_missionPatrolVehicles joinString (format [",%1", _lineBreak])); _lines pushBack "];"; @@ -223,16 +323,16 @@ _lines pushBack ""; _lines pushBack "/*"; _lines pushBack " Use the parameters below to customize your mission - see the template or blck_configs.sqf for details about each them"; _lines pushBack "*/"; -_lines pushBack format["_chanceHeliPatrol = blck_chanceHeliPatrol%1;",blck_dynamicMissionDifficulty]; -_lines pushBack format["_noChoppers = blck_noPatrolHelis%1;",blck_dynamicMissionDifficulty]; -_lines pushBack format["_missionHelis = blck_patrolHelis%1;",blck_dynamicMissionDifficulty]; -_lines pushBack format["_chancePara = blck_chancePara%1;",blck_dynamicMissionDifficulty]; -_lines pushBack format["_noPara = blck_noPara%1;",blck_dynamicMissionDifficulty]; +_lines pushBack format["_chanceHeliPatrol = blck_chanceHeliPatrol%1;",blck_MissionDifficulty]; +_lines pushBack format["_noChoppers = blck_noPatrolHelis%1;",blck_MissionDifficulty]; +_lines pushBack format["_missionHelis = blck_patrolHelis%1;",blck_MissionDifficulty]; +_lines pushBack format["_chancePara = blck_chancePara%1;",blck_MissionDifficulty]; +_lines pushBack format["_noPara = blck_noPara%1;",blck_MissionDifficulty]; _lines pushBack format["_paraTriggerDistance = 400;"]; -_lines pushBack format["_paraSkill = '%1';",blck_dynamicMissionDifficulty]; +_lines pushBack format["_paraSkill = '%1';",blck_MissionDifficulty]; _lines pushBack format["_chanceLoot = 0.0;"]; -_lines pushBack format["_paraLoot = blck_BoxLoot_%1;",blck_dynamicMissionDifficulty]; -_lines pushBack format["_paraLootCounts = blck_lootCounts%1;",blck_dynamicMissionDifficulty]; +_lines pushBack format["_paraLoot = blck_BoxLoot_%1;",blck_MissionDifficulty]; +_lines pushBack format["_paraLootCounts = blck_lootCounts%1;",blck_MissionDifficulty]; _lines pushBack format['_missionLandscapeMode = "precise";']; _linse pushBack "_useMines = blck_useMines;"; _lines pushBack "_uniforms = blck_SkinList;"; @@ -240,22 +340,22 @@ _lines pushBack "_headgear = blck_headgear;"; _lines pushBack "_vests = blck_vests;"; _lines pushBack "_backpacks = blck_backpacks;"; _lines pushBack "_sideArms = blck_Pistols;"; -_lines pushBack '_spawnCratesTiming = blck_spawnCratesTiming;'; -_lines pushBack '_loadCratesTiming = blck_loadCratesTiming;'; -_lines pushBack '_endCondition = blck_missionEndCondition;'; -_lines pushBack format["_minNoAI = blck_MinAI_%1;",blck_dynamicMissionDifficulty]; -_lines pushBack format["_maxNoAI = blck_MaxAI_%1;",blck_dynamicMissionDifficulty]; -_lines pushBack format["_noAIGroups = blck_AIGrps_%1;",blck_dynamicMissionDifficulty]; -_lines pushBack format["_noVehiclePatrols = blck_SpawnVeh_%1;",blck_dynamicMissionDifficulty]; -_lines pushBack format["_noEmplacedWeapons = blck_SpawnEmplaced_%1;",blck_dynamicMissionDifficulty]; -_lines pushBack format["_minNoAI = blck_MinAI_%1;",blck_dynamicMissionDifficulty]; -_lines pushBack format["_maxNoAI = blck_MaxAI_%1",blck_dynamicMissionDifficulty]; -_lines pushBack format["_noAIGroups = blck_AIGrps_%1;",blck_dynamicMissionDifficulty]; -_lines pushBack format["_noVehiclePatrols = blck_SpawnVeh_%1;",blck_dynamicMissionDifficulty]; -_lines pushBack format["_noEmplacedWeapons = blck_SpawnEmplaced_%1;",blck_dynamicMissionDifficulty]; -diag_log format["blck_dynamicMissionDifficulty = %1",blck_dynamicMissionDifficulty]; - +_lines pushBack format['_spawnCratesTiming = %1',blck_spawnCratesTiming]; +_lines pushBack format['_loadCratesTiming = %1',blck_loadCratesTiming]; +_lines pushBack format['_endCondition = %1;',blck_missionEndCondition]; +_lines pushBack format["_minNoAI = blck_MinAI_%1;",blck_MissionDifficulty]; +_lines pushBack format["_maxNoAI = blck_MaxAI_%1;",blck_MissionDifficulty]; +_lines pushBack format["_noAIGroups = blck_AIGrps_%1;",blck_MissionDifficulty]; +_lines pushBack format["_noVehiclePatrols = blck_SpawnVeh_%1;",blck_MissionDifficulty]; +_lines pushBack format["_noEmplacedWeapons = blck_SpawnEmplaced_%1;",blck_MissionDifficulty]; +_lines pushBack format["_minNoAI = blck_MinAI_%1;",blck_MissionDifficulty]; +_lines pushBack format["_maxNoAI = blck_MaxAI_%1",blck_MissionDifficulty]; +_lines pushBack format["_noAIGroups = blck_AIGrps_%1;",blck_MissionDifficulty]; +_lines pushBack format["_noVehiclePatrols = blck_SpawnVeh_%1;",blck_MissionDifficulty]; +_lines pushBack format["_noEmplacedWeapons = blck_SpawnEmplaced_%1;",blck_MissionDifficulty]; +_lines pushBack ""; _lines pushBack '#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf";'; +diag_log ["dynamic"] call blck3EDEN_fnc_versionInfo; uiNameSpace setVariable ["Display3DENCopy_data", ["dynamicMission.sqf", _lines joinString _lineBreak]]; (findDisplay 313) createdisplay "Display3DENCopy"; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportStatic.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportStatic.sqf index d9fce70..702cb1d 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportStatic.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportStatic.sqf @@ -1,20 +1,295 @@ -diag_log format["Dynamic Export called at %1",diag_tickTime]; + + +objectAtMissionCenter = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "objectAtMissionCenter"); +blck_minAI = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "minAI"); +blck_maxAI = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "maxAI"); +minPatrolRadius = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "minPatroRadius"); +maxPatrolRadius = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "maxPatrolRadius"); +maxVehiclePatrolRadius = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "maxVehiclePatrolRadius"); +aircraftPatrolRadius = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "aircraftPatrolRadius"); +oddsOfGarison = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "oddsOfGarison"); +maxGarrisonStatics = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "maxGarrisonStatics"); +typesGarrisonStatics = getArray(configFile >> "CfgBlck3DEN" >> "configs" >> "typesGarrisonStatics"); +blck_MissionDifficulty = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "defaultMissionDifficulty"); +lootVehicleVariableName = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "lootVehicleVariableName"); +buildingPosGarrisonVariableName = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "buildingPosGarrisonVariableName"); +buildingATLGarrisionVariableName = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "buildingATLGarrisionVariableName"); + +{ + diag_log format["param %1 = %2",_forEachIndex,_x]; +} forEach [ + objectAtMissionCenter, + blck_minAI, + blck_maxAI, + minPatrolRadius, + maxPatrolRadius, + maxVehiclePatrolRadius, + aircraftPatrolRadius, + oddsOfGarison, + maxGarrisonStatics, + typesGarrisonStatics, + blck_MissionDifficulty, + lootVehicleVariableName, + buildingPosGarrisonVariableName, + buildingATLGarrisionVariableName +]; + +CENTER = [0,0,0]; + +diag_log format["Static Mission Export called at %1",diag_tickTime]; +diag_log format["With blck_MissionDifficulty = %1",blck_MissionDifficulty]; + +/* + Set Default Values Where not Defined using Menu Commands +*/ + +if (isNil "blck_dynamicCrateLoot") then +{ + blck_dynamicCrateLoot = format["_crateLoot = blck_BoxLoot_%1;",blck_MissionDifficulty]; +}; +if (isNil "blck_dynamicCrateLootCounts") then { + blck_dynamicCrateLootCounts = format["_lootCounts = blck_lootCounts%1;",blck_MissionDifficulty]; +}; +if (isNil "blck_dynamicmarkerMissionName") then +{ + blck_dynamicmarkerMissionName = "TODO: Update appropriately"; +}; + +/* + Look for an object defined in CfgBlck3DEN \ configs \ that marks the center of the mission + and set the coords of the center if such an object is found +*/ + +private _centerMarkers = allMissionObjects objectAtMissionCenter; +diag_log format["_centerMarkers = %1",_centerMarkers]; +if !(_centerMarkers isEqualTo []) then +{ + CENTER = getPosATL (_centerMarkers select 0); + diag_log format["CENTER defined by object %1 typeOf %2",_centerMarker,typeOf (_centerMarkers select 0)]; +} else { + diag_log format[" No object marking the center of the mission was found: using a flashing road cone or flag is recommended",getText(configFile >> "CfgVehicles" >> objectAtMissionCenter >> "displayName")]; + diag_log format["Place such an object or a marker to ensure the mission is accurately stored and spawned"]; +}; + +all3DENEntities params ["_objects","_groups","_triggers","_systems","_waypoints","_markers","_layers","_comments"]; +private _units = []; +{ + { + if (vehicle _x isEqualTo _x) then {_units pushBack _x}; + } forEach (units _x); +} forEach _groups; + +private["_m1","_markerPos","_markerType","_markerShape","_markerColor","_markerText","_markerBrush","_markerSize","_markerAlpha"]; +/* + pull info on the first marker found +*/ +if !(_markers isEqualTo []) then +{ + _m1 = _markers select 0; + _markerType = (_m1 get3DENAttribute "itemClass") select 0; + _markerShape = (_m1 get3DENAttribute "markerType") select 0; + _markerColor = (_m1 get3DENAttribute "baseColor") select 0; + _markerText = (_m1 get3DENAttribute "text") select 0; + if !(_markerText isEqualTo "") then {blck_dynamicmarkerMissionName = _markerText}; + _markerBrush = (_m1 get3DENAttribute "markerBrush") select 0; + _markerPos = (_m1 get3DENAttribute "position") select 0; + _markerSize = (_m1 get3DENAttribute "size2") select 0; + _markerText = (_m1 get3DENAttribute "text") select 0; + + /* + use the coordinates of that marker as mission center of no object demarkating the center is found + */ +} else { + _markerType = "mil_square"; + _markerShape = "null"; + _markerSize = "[0,0]"; + _markerColor = "COLORRED"; + _markerBrush = "null"; + diag_log format[" No marker was found, using default values and position for mission center position"]; +}; +diag_log format["_m1 = %1 | _type = %2 | _shape = %3 | _size = %4 | _color = %5 | _brush = %6 | _text = %7",_m1,_markerType,_markerShape,_markerSize,_markerColor,_markerBrush,_markerText]; + +private _garisonedBuildings = []; +private _garisonedStatics = []; +private _garisonedUnits = []; + +private _landscape = _objects select{ + !(isSimpleObject _x) && + ((typeOf _x) isKindOf "Static") +}; + +diag_log format["CENTER = %1 | _landscape = %2","ignored",_landscape]; +private _missionLandscape = []; +{ + _missionLandscape pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x),[vectorDir _x,vectorUp _x], 'true','true']; +}forEach _landscape; + +private _simpleObjects = _objects select {isSimpleObject _x}; +diag_log format["_simpleObjects = %1",_simpleObjects]; +private _missionSimpleObjects = []; +{ + _missionSimpleObjects pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x),[vectorDir _x,vectorUp _x], 'true','true']; +} forEach _simpleObjects; + +private _missionLootVehicles = []; +private _lootVehicles = _objects select { + ((typeOf _x) isKindOf "AllVehicles") && + !((typeOf _x) isKindOf "Man") && + (_x get3DENAttribute "name" isEqualTo lootVehicleVariableName) +}; +diag_log format["_lootVehicles = %1",_lootVehicles]; +{ + _missionLootVehicles pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x), '_crateLoot','_lootCounts',[vectorDir _x,vectorUp _x]]; +} forEach _lootVehicles; + +_missionPatrolVehicles = []; +private _patrolVehicles = _objects select { + ((typeOf _x) isKindOf "AllVehicles") && + !((typeOf _x) isKindOf "Man") && + !((typeOf _x) isKindOf "SDV_01_base_F") && + !((typeOf _x) isEqualTo "Air") && + !(_x in _lootVehicles) +}; +diag_log format["_patrolVehicles = %1",_patrolVehicles]; +{ + _missionPatrolVehicles pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x,maxVehiclePatrolRadius,600,-1]; +}forEach _patrolVehicles; + +private _subPatrols = []; +private _subs = _objects select { + ((typeOf _x) isKindOf "SDV_01_base_F") && + !(_x in _lootVehicles) +}; +diag_log format["_subs = %1",_subs]; +{ + _subPatrols pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x),getDir _x,maxVehiclePatrolRadius,600,-1]; +} forEach _subs; + +private _airPatrols = []; +private _airVehicles = _objects select { + (typeOf _x) isKindOf "Air" +}; +diag_log format["_airVehicles = %1",_airvehicles]; +{ + _airPatrols pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x),getDir _x,aircraftPatrolRadius,900,-1]; +} forEach _airVehicles; + + +private _staticWeapons = []; +private _statics = _objects select { + ((typeOf _x) isKindOf "StaticWeapon") && + !(_x in _garisonedStatics) +}; +diag_log format["_statics = %1",_statics]; +{ + _staticWeapons pushBack format[' ["%1",%2,%3]',typeOf _x,(getPosATL _x),getDir _x,0,-1]; +} forEach _statics; + +private _infantry = _units select { + !(surfaceIsWater (getPos _x)) && + !(_x in _garisonedUnits) +}; +diag_log format["_infantry = %1",_infantry]; +_infantryGroups = []; +{ + _infantryGroups pushBack format[' ,[%1,%2,%3,"%4",%5,%6]',(getPosATL _x),blck_minAI,blck_maxAI,blck_MissionDifficulty,maxPatrolRadius,600,-1]; +} forEach _units; + +private _scuba = _units select { + (surfaceIsWater (getPos _x)) && + !(_x in _garisonedUnits) + // checck _x get3EDENAtribute "name" != "garrison"; +}; +diag_log format["_scuba = %1",_scuba]; +private _scubaGroups = []; +{ + _scubaGroups pushBack format[' [%1,%2,%3,"%4",%5,%6]',(getPosATL _x),blck_minAI,blck_maxAI,blck_MissionDifficulty,maxPatrolRadius,600,-1]; +} forEach _scuba; + +private _lootContainers = []; +private _ammoBoxes = _objects select { + (((typeOf _x) isKindOf "ReammoBox") || ((typeOf _x) isKindOf "ReammoBox_F")) +}; +diag_log format["_ammoBoxes = %1",_ammoboxes]; +{ + _lootContainers pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x), '_crateLoot','_lootCounts',[vectorDir _x,vectorUp _x]]; +}forEach _ammoBoxes; + private _lines = []; private _lineBreak = toString [10]; _lines pushBack "/*"; -_lines pushBack " Ourput from GRG Plugin for blckeagls"; -_lines pushBack " For Credits and Acknowledgements see the Readme and comments"; +_lines pushBack " Static Mission Generated"; +_lines pushBack " Using 3DEN Plugin for blckeagls"; +_lines pushBack format[" %1",['dynamic'] call blck3DEN_fnc_versionInfo]; +_lines pushBack " By Ghostrider-GRG-"; _lines pushBack "*/"; _lines pushBack ""; _lines pushBack '#include "\q\addons\custom_server\Configs\blck_defines.hpp";'; -_lines pushBack '#include "\q\addons\custom_server\Missions\privateVars.sqf";'; +_lines pushBack '#include "privateVars.sqf";'; +_lines pushBack ""; +_lines pushBack format["_markerType = %1",format["[%1,%2,%3];",_markerType,_markerSize,_markerBrush]]; +_lines pushBack format["_markerColor = %1;",_markerColor]; +_lines pushBack format['_markerMissionName = "%1";',blck_dynamicmarkerMissionName]; +_lines pushBack format['_crateLoot = blck_BoxLoot_%1;',blck_MissionDifficulty]; +_lines pushBack format['_lootCounts = blck_lootCounts%1;',blck_MissionDifficulty]; +_lines pushBack ""; +_lines pushBack "_missionLandscape = ["; +_lines pushback (_missionLandscape joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_simpleObjects = ["; +_lines pushback (_simpleObjects joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_missionLootVehicles = ["; +_lines pushBack (_missionLootVehicles joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_vehiclePatrolParameters = ["; +_lines pushback (_missionPatrolVehicles joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_submarinePatrolParameters = ["; +_lines pushback (_subPatrols joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_airPatrols = ["; +_lines pushback (_airPatrols joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_missionEmplacedWeapons = ["; +_lines pushback (_staticWeapons joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_aiGroupParameters = ["; +_lines pushback (_infantryGroups joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_aiScubaGroupParameters = ["; +_lines pushback (_scubaGroups joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "_missionLootBoxes = ["; +_lines pushback (_lootContainers joinString (format [",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; +_lines pushBack "/*"; +_lines pushBack " Use the parameters below to customize your mission - see the template or blck_configs.sqf for details about each them"; +_lines pushBack "*/"; -// As found in fn_3DENExportTerrainBuilder.sqf -uiNameSpace setVariable ["Display3DENCopy_data", ["dynamicMission.sqf", _lines joinString _lineBreak]]; +_linse pushBack "_useMines = blck_useMines;"; +_lines pushBack "_uniforms = blck_SkinList;"; +_lines pushBack "_headgear = blck_headgear;"; +_lines pushBack "_vests = blck_vests;"; +_lines pushBack "_backpacks = blck_backpacks;"; +_lines pushBack "_sideArms = blck_Pistols;"; +_lines pushBack ""; +_lines pushBack '#include "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_initializeMission.sqf"; '; + +diag_log ["static"] call blck3EDEN_fnc_versionInfo; +uiNameSpace setVariable ["Display3DENCopy_data", ["staticMission.sqf", _lines joinString _lineBreak]]; (findDisplay 313) createdisplay "Display3DENCopy"; - - diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/pullDynamicMission.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/pullDynamicMission.sqf index f603283..5ea7458 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/pullDynamicMission.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/pullDynamicMission.sqf @@ -75,7 +75,7 @@ diag_log format["<< ---- pullDynamicMision: START %1 ---- >>",diag_tickTime // Begin pulling data here /////////////////////// -_cb = _cb + format["_garrisonedBuildings_BuildingPosnSystem = [",endl]; +_cb = _cb + format["blck_garrisonedBuildings_BuildingPosnSystem = [",endl]; _helpers = allMissionObjects garrisonMarkerObject; //diag_log format["_helpers = %1",_helpers]; @@ -86,8 +86,8 @@ _helpers = allMissionObjects garrisonMarkerObject; if (_isInside) then { _building = [_x] call _fn_buildingContainer; - _garrisonedBuildings pushbackunique _building; - _garrisonedBuildings pushbackunique _x; + blck_garrisonedBuildings pushbackunique _building; + blck_garrisonedBuildings pushbackunique _x; // data structure ["building Classname",[/*building pos*/],/*building dir*/,/*odds of garrison*/, /*Max Statics*/,/*types statics*/,/*max units*/], // 1 2 3 4 5 6 7 8 9 _line = format[' ["%1",%2,%3,%4,%5,%6,%7,%8,%9]',typeOf _building,(getPosATL _building) vectorDiff CENTER,getDir _building, 'true','true',oddsOfGarrison,maxGarrisonStatics,typesGarrisonStatics,maxGarrisonUnits]; @@ -104,7 +104,7 @@ _helpers = allMissionObjects garrisonMarkerObject; } forEach _helpers; _cb = _cb + format["%1];%1%1",endl]; -_logging = format["_garrisonedBuildings = %1",_garrisonedBuildings]; +_logging = format["blck_garrisonedBuildings = %1",blck_garrisonedBuildings]; diag_log _logging; systemChat _logging; //diag_log format["_cb = %1%2",endl,_cb]; @@ -119,7 +119,7 @@ _fn_configureGarrisonForBuildingATL = { private["_b","_staticsInBuilding","_unitsInBuilding","_staticsText","_unitsText","_buildingGarrisonATL","_staticsInBuilding","_unitsInBuilding","_count"]; _b = _this select 0; _count = 0; - if (_b in _garrisonedBuildings) exitWith {""}; + if (_b in blck_garrisonedBuildings) exitWith {""}; _staticsText = ""; _unitsText = ""; _buildingGarrisonATL = ""; @@ -166,7 +166,7 @@ _fn_configureGarrisonForBuildingATL = { if ( !(_staticsText isEqualTo "") || !(_unitsText isEqualTo "")) then { _buildingGarrisonATL = format[' ["%1",%2,%3,%4,%5,[%6],[%7]]',typeOf _b,(getPosATL _b) vectorDiff CENTER,getDir _b,'true','true',_staticsText,_unitsText]; - _garrisonedBuildings pushBackUnique _b; + blck_garrisonedBuildings pushBackUnique _b; }; _buildingGarrisonATL }; @@ -178,7 +178,7 @@ _cb = _cb + "_garrisonedBuilding_ATLsystem = ["; if (_isInside) then { private _building = [_x] call _fn_buildingContainer; - private _include = if ( !(_building in _garrisonedBuildings) && !((typeOf _building) isEqualTo unitMarkerObject) && !((typeOf _building) isEqualTo garrisonMarkerObject)) then {true} else {false}; + private _include = if ( !(_building in blck_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]; @@ -209,7 +209,7 @@ _cb = _cb + format["_missionLandscape = [",endl]; { diag_log format["evaluating mission landscape: _x = %1 | typeOf _x = %1",_x, typeOf _x]; //diag_log format["evaluating mission landscape: _x %1 | typeOf _x %1",_x, _x isKindOf "Helper_Base_F"]; - if !(_x in _garrisonedBuildings && !((typeOf _x) isEqualTo unitMarkerObject) && !((typeOf _x) isEqualTo garrisonMarkerObject)) then + if !(_x in blck_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; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/template.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/template.sqf index 4ac8b8f..8a0afe9 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/template.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/template.sqf @@ -1,71 +1,11 @@ -/* - Mission Template by Ghostrider [GRG] - Mission Compositions by Bill prepared for ghostridergaming - Copyright 2016 - Last modified 3/20/17 - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -#include "\q\addons\custom_server\Missions\privateVars.sqf"; - -//diag_log "[blckeagls] Spawning Green Mission with template = default"; -_crateLoot = blck_BoxLoot_G;reen -_lootCounts = blck_lootCountsGreen; -_startMsg = "An enemy research center was sighted in a nearby sector! Check the Green marker on your map for the location!"; -_endMsg = "The Sector at the Green Marker is under survivor control!"; - -_markerMissionName = "Research Center"; -_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" -_useMines = blck_useMines; -_minNoAI = blck_MinAI_Green; -_maxNoAI = blck_MaxAI_Green; -_noAIGroups = blck_AIGrps_Green; -_noVehiclePatrols = blck_SpawnVeh_Green; -_noEmplacedWeapons = blck_SpawnEmplaced_Green; -_minNoAI = blck_MinAI_Blue; // Setting this in the mission file overrides the defaults such as blck_MinAI_Blue -_maxNoAI = blck_MaxAI_Blue; // Setting this in the mission file overrides the defaults -_noAIGroups = blck_AIGrps_Blue; // Setting this in the mission file overrides the defaults -_noVehiclePatrols = blck_SpawnVeh_Blue; // Setting this in the mission file overrides the defaults -_noEmplacedWeapons = blck_SpawnEmplaced_Blue; // Setting this in the mission file overrides the defaults -// Change _useMines to true/false below to enable mission-specific settings. -_useMines = blck_useMines; // Setting this in the mission file overrides the defaults -_uniforms = blck_SkinList; // Setting this in the mission file overrides the defaults -_headgear = blck_headgear; // Setting this in the mission file overrides the defaults -_vests = blck_vests; -_backpacks = blck_backpacks; -_weaponList = ["blue"] call blck_fnc_selectAILoadout; -_sideArms = blck_Pistols; -_chanceHeliPatrol = blck_chanceHeliPatrolBlue; // Setting this in the mission file overrides the defaults -_noChoppers = blck_noPatrolHelisBlue; -_missionHelis = blck_patrolHelisBlue; -_chancePara = blck_chanceParaBlue; // Setting this in the mission file overrides the defaults -_noPara = blck_noParaBlue; // Setting this in the mission file overrides the defaults -_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. -_paraSkill = "red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. -_chanceLoot = 0.0; // The chance that a loot crate will be dropped with paratroops. -_paraLoot = blck_BoxLoot_Blue; -_paraLootCounts = blck_lootCountsRed; // Throw in something more exotic than found at a normal blue mission. - -_spawnCratesTiming = blck_spawnCratesTiming; // Choices: "atMissionSpawnGround","atMissionEndGround","atMissionEndAir". - // Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute. - // This sets the default value but can be overridden by defining _spawnCrateTiming in the file defining a particular mission. -_loadCratesTiming = blck_loadCratesTiming; // valid choices are "atMissionCompletion" and "atMissionSpawn"; - // Pertains only to crates spawned at mission spawn. - // This sets the default but can be overridden for specific missions by defining _loadCratesTiming - - // Examples: - // To spawn crates at mission start loaded with gear set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionSpawn" - // To spawn crates at mission start but load gear only after the mission is completed set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionCompletion" - // To spawn crates on the ground at mission completion set blck_spawnCratesTiming = "atMissionEndGround" // Note that a loaded crate will be spawned. - // To spawn crates in the air and drop them by chutes set blck_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned. -_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" - // Setting this in the mission file overrides the defaults - -#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; +all3DENEntities params ["_objects","_groups","_triggers","_systems","_waypoints","_markers","_layers","_comments"]; +_units = []; +{ + { + if (vehicle _x isEqualTo _x) then {_units pushBack _x}; + } forEach (units _x); +} forEach _groups; +diag_log format["_groups = %1",_groups]; +diag_log format["_units = %1",_units]; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/config.cpp b/@blckeagls_EDEN/addons/3EDEN_plugin/config.cpp index 3d5716d..ceac19f 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/config.cpp +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/config.cpp @@ -7,169 +7,53 @@ * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. */ - -class CfgPatches +#include "defines.h" +class CfgBlck3DEN { - class blckeagls_3den + class configs { - requiredVersion = 0.1; - requiredAddons[] = {"3den"}; - units[] = {}; - weapons[] = {}; - magazines[] = {}; - ammo[] = {}; + objectAtMissionCenter = "RoadCone_L_F"; + minAI = 3; + maxAI = 6; + minPatroRadius = 30; + maxPatrolRadius = 45; + maxVehiclePatrolRadius = 75; + aircraftPatrolRadius = 1000; + oddsOfGarison = 0.67; + maxGarrisonStatics = 3; + typesGarrisonStatics = []; + defaultMissionDifficulty = "Blue"; + defaultLootcrateSpawnTiming = "atMissionSpawnGround"; + defaultLootcrateLoadTiming = "atMissionSpawn"; + defaultMissionEndState = "allKilledOrPlayerNear"; + + // Enter the string shown here under Atributes\Variable Name + // to demarcate this vehicle as a loot vehicle + lootVehicleVariableName = "lootVehicle"; + + // Enter the string shown here under Atributes\Variable Name + // To indicate that a garrison should be placed at standard Arma + // building positions + buildingPosGarrisonVariableName = "pos"; + + // Enter the string shown here under Atributes\Variable Name + // To indicate that a garrison should be placed using setPosATL + // relative to the spawn position of the building + buildingATLGarrisionVariableName = "atl"; + + aiRespawnTime = 600; // respawn time for infantry + vehicleRespawnTime = 900; // respawn time for vehicle patrols + aircraftRespawnTime = 1200; // respawn time for aircraft patrols + }; + + /**************************************** + DO NOT TOUCH ANYTHING BELOW THIS LINE + *****************************************/ + class CfgVersion + { + version = 1.0; + build = 2; + date = "08/15/20"; }; }; -/////////////////////////////////////////////////////////////////////////////// - -class CfgFunctions -{ - - class blck3EDEN - { - class Export - { - file = "3EDEN_plugin\Export"; - class exportDynamic {}; - class exportStatic {}; - //class buildingContainer {}; - //class isInfantry {}; - //class isInside {}; - - }; - - class Core - { - file = "3EDEN_plugin\Core"; - class help {}; - class about {}; - }; - - }; - -}; - -/////////////////////////////////////////////////////////////////////////////// - -class ctrlCombo; - -class cfg3EDEN -{ - class EventHandlers - { - class blck - { - - }; - }; - - class Attributes - { - class Default; - - class Title: Default - { - class Controls - { - class Title; - }; - }; - - class Combo: Title - { - class Controls: Controls - { - class Title: Title {}; - class Value: ctrlCombo {}; - }; - }; - - class missionDifficulty: Combo - { - class Controls: Controls - { - class Title: Title {}; - class Value: Value - { - onLoad = "\ - {\ - _index = _control lbAdd _x;\ - _control lbsetdata [_index,_x];\ - }\ - forEach['','Blue (Easy)','Red (Medium)','Green (Hard)','Orange (Very Hard)'];"; - }; - }; - }; - }; -}; - -class ctrlMenuStrip; - -class display3DEN -{ - class Controls - { - class MenuStrip: ctrlMenuStrip - { - class Items - { - items[] += {"Blackeagls"}; - - class Blackeagls - { - text = "Blackeagls"; - items[] = { - "blckAbout3EDENPlugin", - "blckSeparator", - "blckSaveStaticMission", - "blckSaveDynamicMission", - "blck3EDENPluginHelp" - }; - }; - - class blckAbout3EDENPlugin - { - text = "3EDEN Plugin Version 1.0 for BlckEagls by Ghostrider-GRG-"; - action = "call blck3EDEN_fnc_about"; - }; - - class blckSeparator - { - value = 0; - }; - - class blckSaveStaticMission - { - text = "Save StaticMission"; - action = "call blck3EDEN_fnc_exportStatic"; - picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\save_ca.paa"; - }; - - class blckSaveDynamicMission - { - text = "Save Dynamic Mission"; - action = "call blck3EDEN_fnc_exportDynamic"; - picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\save_ca.paa"; - }; - - class Blck3EDENPluginHelp - { - text = "Help"; - action = "call blck3EDEN_fnc_Help"; - //picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\save_ca.paa"; - }; - - }; - }; - }; -}; - -/////////////////////////////////////////////////////////////////////////////// - -class CfgVehicles -{ - class B_Soldier_base_F; - // - -}; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/defines.h b/@blckeagls_EDEN/addons/3EDEN_plugin/defines.h new file mode 100644 index 0000000..dbc84e1 --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/defines.h @@ -0,0 +1,328 @@ +// defines.h + + +/* + ************************************** + DO NOT CHANGE ANYTHING BELOW THIS LINE + ************************************** +*/ +class CfgPatches +{ + class blckeagls_3den + { + requiredVersion = 0.1; + requiredAddons[] = {"3den"}; + units[] = {}; + weapons[] = {}; + magazines[] = {}; + ammo[] = {}; + }; +}; + +/////////////////////////////////////////////////////////////////////////////// + +class CfgFunctions +{ + + class blck3DEN + { + class Export + { + file = "3EDEN_plugin\Export"; + class exportDynamic {}; + class exportStatic {}; + }; + + class Core + { + file = "3EDEN_plugin\Core"; + class help {}; + class about {}; + class initializeAttributes {}; + class isInfantry {}; + class isInside {}; + class buildingContainer {}; + class display {}; + class setDifficulty {}; + class setCompletionMode {} + class spawnCratesTiming {}; + class loadCratesTiming {}; + class versionInfo {}; + }; + + }; + +}; + +/////////////////////////////////////////////////////////////////////////////// + +class ctrlCombo; +class ctrlCheckbox; +class ctrlCheckboxes; +class ctrlEdit; + +class cfg3DEN +{ + class EventHandlers + { + class blckeagls + { + OnMissionLoad = "call blck3DEN_fnc_initializeAttributes"; + OnMissionNew = "call blck3DEN_fnc_initializeAttributes"; + }; + }; + + class Attributes + { + + }; + + class Mission + { + + }; +}; + + +class CfgVehicles +{ + +}; + +class ctrlMenuStrip; + +class display3DEN +{ + class Controls + { + class MenuStrip: ctrlMenuStrip + { + class Items + { + items[] += {"Blackeagls"}; + + class Blackeagls + { + text = "Blackeagls"; + items[] = { + "blckAbout3EDENPlugin", + "blckSeparator", + "blckMissionDifficulty", + "blckMissionCompletionMode", + "lootSpawnTiming", + "loadCratesTiming", + "blckSeparator", + //"blckMissionMessages", + //"blckSeparator", + "blckSaveStaticMission", + "blckSaveDynamicMission", + "blckSeparator", + "blck3EDENPluginHelp" + }; + }; + + class blckAbout3EDENPlugin + { + text = "3EDEN Plugin Version 1.0 for BlckEagls by Ghostrider-GRG-"; + action = "call blck3EDEN_fnc_about"; + }; + + class blckSeparator + { + value = 0; + }; + + class Attributes + { + items[] += { + "blck_setDifficulty" + }; + }; + + class blck_setDifficulty + { + text = "Set Mission Difficulty"; + items[] = { + "difficulty_blue" + }; + }; + + class difficulty_blue + { + text = "Easy (Blue)"; + action = "['Blue'] call blck3DEN_fnc_setDifficulty"; + }; + + class blck_setLootSpawnTime + { + text = "Set Lootcrate Spawn Timing"; + action = "edit3DENMissionAttributes 'lootSpawnTime'"; + }; + + class blckMissionDifficulty + { + text = "Set Mission Difficulty"; + items[] = { + "blckDifficultyBlue", + "blckDifficultyRed", + "blckDifficutlyGreen", + "blckDifficultyOrange" + }; + }; + class blckDifficultyBlue + { + text = "Set Mission Difficutly to EASY (Blue)"; + action = "['Blue'] call blck3DEN_fnc_setDifficulty;"; + value = "Blue"; + }; + class blckDifficultyRed + { + text = "Set Mission Difficulty to MEDIUM (Red)"; + action = "['Red'] call blck3DEN_fnc_setDifficulty;"; + value = "Red"; + }; + class blckDifficutlyGreen + { + text = "Set Mission Difficult To HARD (Green)"; + action = "['Green'] call blck3DEN_fnc_setDifficulty;"; + value = "Green"; + }; + class blckDifficultyOrange + { + text = "Set Mission Difficulty to Very HARD (Orange)"; + action = "['Orange'] call blck3DEN_fnc_setDifficulty;"; + value = "Orange"; + }; + + + class blckMissionCompletionMode + { + text = "Set the Criterial for Mission Completion"; + items[] = { + "playerNear", + "allUnitsKilled", + "allKilledOrPlayerNear" + }; + }; + class allUnitsKilled + { + text = "All AI Dead"; + toolTip = "Mission is complete only when All AI are Dead"; + action = "['allUnitsKilled'] call blck3DEN_fnc_setCompletionMode;"; + value = "allUnitsKilled"; + }; + class playerNear + { + text = "Player near mission center"; + toolTip = "MIssion is Complete when a player reaches the mission center"; + action = "['playerNear'] call blck3DEN_fnc_setCompletionMode;"; + value = "playerNear"; + }; + class allKilledOrPlayerNear + { + text = "Units Dead / Player @ Center"; + toolTip = "Mission is Complete when all units are dead or a player reaches mission center"; + action = "['allKilledOrPlayerNear'] call blck3DEN_fnc_setCompletionMode;"; + value = "allUnitsKilled"; + }; + + class lootSpawnTiming + { + text = "Set timing for spawning loot chests"; + items[] = { + "atMissionSpawnGround", + "atMissionSpawnAir", + "atMissionEndGround", + "atMissionEndAir" + }; + }; + class atMissionSpawnGround + { + text = "Crates are spawned on the ground at mission startup"; + action = "['atMissionSpawnGround'] call blck3DEN_fnc_spawnCratesTiming;"; + }; + class atMissionSpawnAir + { + text = "Crates are spawned in the air at mission startup"; + action = "['atMissionSpawnAir'] call blck3DEN_fnc_spawnCratesTiming;"; + }; + class atMissionEndGround + { + text = "Crates are spawned on the ground at mission completion"; + action = "['atMissionEndGround'] call blck3DEN_fnc_spawnCratesTiming;"; + }; + class atMissionEndAir + { + text = "Crates are spawned in the air at mission completion"; + action = "['atMissionEndAir'] call blck3DEN_fnc_spawnCratesTiming;"; + }; + + class loadCratesTiming + { + text = "Set timing for loading crates"; + items[] = { + "atMissionSpawn", + "atMissionCompletion" + }; + }; + class atMissionSpawn + { + text = "Load crates when the mission spawns"; + action = "['atMissionSpawn'] call blck3DEN_fnc_loadCratesTiming"; + }; + class atMissionCompletion + { + text = "Load crates when the mission is complete"; + action = "['atMissionCompletion'] call blck3DEN_fnc_loadCratesTiming"; + }; + + ///////////////////////////// + class blckMissionMessages + { + text = "Set timing for loading crates"; + items[] = { + "blckStartMessage", + "blckEndMessage" + }; + }; + class blckStartMessage + { + text = "Misstion Start Message"; + //action = "edit3DENMissionAttributes 'MissionStartMsg';"; + }; + class blckEndMessage + { + text = "Mission End Message"; + //action = "edit3DENMissionAttributes 'MissionEndMsg';"; + }; + + ///////////////////////////// + class blckSaveStaticMission + { + text = "Save StaticMission"; + action = "call blck3DEN_fnc_exportStatic"; + picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\save_ca.paa"; + }; + + class blckSaveDynamicMission + { + text = "Save Dynamic Mission"; + action = "call blck3DEN_fnc_exportDynamic"; + picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\save_ca.paa"; + }; + + class Blck3EDENPluginHelp + { + text = "Help"; + action = "call blck3DEN_fnc_Help"; + //picture = "\a3\3DEN\Data\Displays\Display3DEN\ToolBar\save_ca.paa"; + }; + + }; + }; + }; +}; + +/////////////////////////////////////////////////////////////////////////////// + + From 67dc2bd7bd9246999f8f79b31be4ee25a7043071 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Sat, 15 Aug 2020 16:27:20 -0400 Subject: [PATCH 15/25] Build 2 - fully functioning TODO: add a tool to set mission start and end messages. Test that the output is functional without editing. --- .../Core/fn_configureGarrisonATL.sqf | 65 ++++++++ .../3EDEN_plugin/Core/fn_endMessage.sqf | 5 + .../Core/fn_generateObjectInfo.sqf | 7 +- .../addons/3EDEN_plugin/Core/fn_help.sqf | 7 +- .../Core/fn_initializeAttributes.sqf | 9 +- .../3EDEN_plugin/Core/fn_isInfantry.sqf | 7 +- .../addons/3EDEN_plugin/Core/fn_isInside.sqf | 17 +- .../3EDEN_plugin/Core/fn_loadCratesTiming.sqf | 7 +- .../Core/fn_setCompletionMode.sqf | 7 +- .../3EDEN_plugin/Core/fn_setDifficulty.sqf | 15 +- .../Core/fn_setSpawnLocations.sqf | 14 ++ .../Core/fn_spawnCratesTiming.sqf | 7 +- .../3EDEN_plugin/Core/fn_startMessage.sqf | 10 ++ .../3EDEN_plugin/Core/fn_versionInfo.sqf | 7 +- .../addons/3EDEN_plugin/Export/Untitled-2.txt | 119 +++++++++++++- .../3EDEN_plugin/Export/fn_exportDynamic.sqf | 45 ++++- .../3EDEN_plugin/Export/fn_exportStatic.sqf | 10 +- @blckeagls_EDEN/addons/3EDEN_plugin/defines.h | 154 ++++++++++++++++-- 18 files changed, 448 insertions(+), 64 deletions(-) create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisonATL.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_endMessage.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setSpawnLocations.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_startMessage.sqf diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisonATL.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisonATL.sqf new file mode 100644 index 0000000..c561bd9 --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisonATL.sqf @@ -0,0 +1,65 @@ + + + + +private _building = _this select 0; +private _CENTER = _this select 1; +private _pos = getPosATL _building; +private _garrisonedBuildings = missionNamespace getVariable["blck_garrisonedBuildings",[]]; +private _count = 0; +private _staticsText = []; +private _unitsText = []; +private _buildingGarrisonATL = ""; +private _configuredStatics = []; +private _configuredUnits = []; +private _statics = nearestObjects[getPosATL _building,["StaticWeapon"],sizeOf (typeOf _building)]; +private _lineBreak = toString [10]; + +{ + if !(_x in _configuredStatics) then + { + private _isInside = [_x] call blck3DEN_fnc_isInside; + private _container = [_x] call blck3DEN_fnc_buildingContainer; + //diag_log format["evaluating building %1 static %2 isInside = %3 container = %4",_building,_x,_isInside,_container]; + if (_isInside && (_container isEqualTo _building)) then + { + _configuredStatics pushBackUnique _x; + _staticsText pushBack format['["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff (_pos),getDir _x]; + }; + }; +} forEach _statics; +_staticsText joinString _lineBreak; + +// Since this is run from the editor we do not have to worry about units running off from their original locations +private _units = nearestObjects[getPosATL _building,["Man"],sizeOf (typeOf _building)] select {(vehicle _x) isEqualTo _x}; +{ + if !(_x in _configuredUnits) then + { + private _isInside = [_x] call blck3DEN_fnc_isInside; + private _container = [_x] call blck3DEN_fnc_buildingContainer; + if (_isInside && (_container isEqualTo _building)) then + { + _configuredUnits pushBackUnique _x; + _unitsText pushBack format["[%1,%2]",(getPosATL _x) vectorDiff (_pos),getDir _x]; + }; + }; +} forEach _units; +_unitsText joinString _lineBreak; + +//diag_log format["_staticsText for building %1 = %2",_building,_staticsText]; +//diag_log format["_unitsText for building %1 = %2",_building,_unitsText]; +if !((_staticsText isEqualTo []) && (_unitsText isEqualTo [])) then +{ + _buildingGarrisonATL = format[' ["%1",%2,%3,%4,%5,[%6],[%7]]', + typeOf _building, + (getPosATL _building) vectorDiff _pos, + getDir _building, + 'true', + 'true', + _staticsText, + _unitsText + ]; +}; + +//diag_log format["_buildingGarrisonATL = %1",_buildingGarrisonATL]; +_buildingGarrisonATL diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_endMessage.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_endMessage.sqf new file mode 100644 index 0000000..97d8c6e --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_endMessage.sqf @@ -0,0 +1,5 @@ + + +params["_end"]; +missionNamespace setVariable["blck_endMessage",_end]; +systemChat format["End Message set to %1",_end]; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_generateObjectInfo.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_generateObjectInfo.sqf index 0fb967b..9d96659 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_generateObjectInfo.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_generateObjectInfo.sqf @@ -1,2 +1,7 @@ - +/* + blckeagls 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ params["_3DENobject","_center"]; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_help.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_help.sqf index 12ca93a..0483f54 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_help.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_help.sqf @@ -1,2 +1,7 @@ - +/* + blckeagls 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ diag_log format["Help called at %1",diag_tickTime]; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_initializeAttributes.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_initializeAttributes.sqf index 9c6cd8e..9bee0fb 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_initializeAttributes.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_initializeAttributes.sqf @@ -1,5 +1,9 @@ - - +/* + blckeagls 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ missionNamespace setVariable["blck_difficulty",getText(configFile >> "CfgBlck3DEN" >> "configs" >> "defaultMissionDifficulty")]; diag_log format["Initilization: blck_difficulty set to %1",blck_difficulty]; @@ -8,5 +12,6 @@ missionNamespace setVariable["blck_loadTiming",getText(configFile >> "CfgBlck3DE missionNamespace setVariable["blck_endState",getText(configFile >> "CfgBlck3DEN" >> "configs" >> "defaultMissionEndState")]; missionNamespace setVariable["blck_startMessage","TODO: Add a start message"]; missionNamespace setVariable["blck_endMessage","TODO: Add an end message"]; +missionNamespace setVariable["blck_missionLocations","random"]; diag_log format["Mission Attributes Initialized for blckeagls at time %1",diag_tickTime]; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_isInfantry.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_isInfantry.sqf index 0faf3e0..72bf045 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_isInfantry.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_isInfantry.sqf @@ -1,8 +1,9 @@ /* - Returns true if a unit is on foot otherwise returns false. - By Ghostrider-GRG- - Copyright 2020 + blckeagls 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + */ private _u = _this select 0; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_isInside.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_isInside.sqf index 62c50b3..40594cc 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_isInside.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_isInside.sqf @@ -1,15 +1,10 @@ /* - Determine if an object is inside or ontop of another object base on line of sight. - Returns true if this is the case, false otherwise. - By Ghostrider-GRG- - Copyright 2020 + blckeagls 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + */ -// returns true if an object is inside, underneath or on top of a building otherwise returns false. -////////////////////// -// Determin if a unit is inside a building using two separate checkVisibility -////////////////////// - params["_u",["_category","House"]]; private _pos = getPosASL _u; @@ -23,7 +18,7 @@ if (_above) then // test if any surfaces above are from buildingPos private _surfacesAbove = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) + 100],_u,_u,true,100]; _above = false; { - //diag_log format["_fn_isInside: _x-2 = %2 | typeOf _x = %3",_x,_x select 2,typeOf (_x select 2)]; + //diag_log format["_fn_isInside: _x = %2 | typeOf _x = %3",_x,_x select 2,typeOf (_x select 2)]; if ((_x select 2) isKindOf _category) then {_above = true}; }forEach _surfacesAbove; }; @@ -33,7 +28,7 @@ if (_below) then private _surfacesBelow = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) - 10],_u,_u,true,100]; _above = false; { - //diag_log format["_fn_isInside: _x-2 = %2 | typeOf _x = %3",_x,_x select 2,typeOf (_x select 2)]; + //diag_log format["_fn_isInside: _x = %2 | typeOf _x = %3",_x,_x select 2,typeOf (_x select 2)]; if ((_x select 2) isKindOf _category) then {_above = true}; }forEach _surfacesBelow; }; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_loadCratesTiming.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_loadCratesTiming.sqf index 60c2069..7ebc4f3 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_loadCratesTiming.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_loadCratesTiming.sqf @@ -1,4 +1,9 @@ - +/* + blckeagls 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ params["_timing"]; missionNamespace setVariable["blck_loadTiming",_timing]; systemChat format["Mission Load Crates Timing set to %1",_timing]; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setCompletionMode.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setCompletionMode.sqf index 62a0cfe..e9517db 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setCompletionMode.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setCompletionMode.sqf @@ -1,4 +1,9 @@ - +/* + blckeagls 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ params["_mode"]; missionNamespace setVariable["blck_endState",_mode]; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setDifficulty.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setDifficulty.sqf index 3b44053..f2313cc 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setDifficulty.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setDifficulty.sqf @@ -1,3 +1,9 @@ +/* + blckeagls 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ params["_difficulty"]; missionNamespace setVariable["blck_difficulty",_difficulty]; @@ -5,12 +11,3 @@ private _m = format["Mission Difficulty updated to %1",_difficulty]; systemChat _m; diag_log _m; - -/* - -missionNamespace setVariable["blck_difficulty","Red"]; -missionNamespace setVariable["blck_lootTiming","atMissionStartGround"]; -missionNamespace setVariable["blck_loadTiming","atMissionStart"]; -missionNamespace setVariable["blck_endState","allUnitsKilled"]; -missionNamespace setVariable["blck_startMessage","TODO: Add a start message"]; -missionNamespace setVariable["blck_endMessage","TODO: Add an end message"]; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setSpawnLocations.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setSpawnLocations.sqf new file mode 100644 index 0000000..42e4a35 --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setSpawnLocations.sqf @@ -0,0 +1,14 @@ +/* + blckeagls 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ + +params["_mode"]; +switch (_mode) do +{ + case "random": {missionNamespace setVariable["blck_missionLocations","random"]}; + case "fixed": {missionNamespace setVariable["blck_missionLocations","fixed"]}; +}; +systemChat format["Mission Locations updated to %1",_mode]; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_spawnCratesTiming.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_spawnCratesTiming.sqf index 4c2475d..605f472 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_spawnCratesTiming.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_spawnCratesTiming.sqf @@ -1,4 +1,9 @@ - +/* + blckeagls 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ params["_timing"]; missionNamespace setVariable["blck_lootTiming",_timing]; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_startMessage.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_startMessage.sqf new file mode 100644 index 0000000..207b6d7 --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_startMessage.sqf @@ -0,0 +1,10 @@ +/* + blckeagls 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ + +params["_start"]; +missionNamespace setVariable["blck_startMessage",_start]; +systemChat format["Start Message set to %1",_start]; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_versionInfo.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_versionInfo.sqf index c6357ae..c6e32c1 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_versionInfo.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_versionInfo.sqf @@ -1,4 +1,9 @@ - +/* + blckeagls 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ params["_mode"]; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-2.txt b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-2.txt index d970277..30e92bb 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-2.txt +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-2.txt @@ -1,3 +1,118 @@ -private _success = "blck_missions" set3DENAttribute ["mission_Dificulty","Blue"]; -[format["Difficulty Set to: %1",_difficulty],"Mission Difficulty","OK","Cancel"] call BIS_fnc_3DENShowMessage; \ No newline at end of file + +/* + Dynamic Mission Generated + Using 3DEN Plugin for blckeagls + dynamicMission.sqf generated:: blckeagls 3DEN Plugin Version 0 : Build 2 : Build Date 08/15/20 + By Ghostrider-GRG- +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +_defaultMissionLocations = []; +_markerType = [mil_box,[1,1],]; +_markerColor = ColorRed; +_startMsg = "TODO: Change approiately"; +_endMsg = "TODO: Change Appropriately; +_markerMissionName = "Stay Away"; +_crateLoot = blck_BoxLoot_Blue; +_lootCounts = blck_lootCountsBlue; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Unfinished_Building_01_F",[0,0,0],0,true,true,[["[""B_HMG_01_high_F"",[-2.19922,0.837891,3.61188],0]","[""B_static_AA_F"",[-2.34766,3.85352,6.80866],0]"]],[[]]] +]; + +_missionLandscape = [ + ["Land_u_Shed_Ind_F",[-29.123,-8.11914,-33.866],0,true,true], + ["Land_Shed_08_brown_F",[-15.1465,25.9961,-33.871],0,true,true], + ["Land_Shed_02_F",[26.5762,78.6641,-33.8547],0,true,true], + ["Land_Wreck_AFV_Wheeled_01_F",[-5.21289,-20.9434,-33.8297],0,true,true], + ["Land_Unfinished_Building_01_F",[50.0273,44.1172,-33.623],0,true,true] +]; + +_simpleObjects = [ + +]; + +_missionLootVehicles = [ + +]; + +_missionPatrolVehicles = [ + ["B_Truck_01_mover_F",[24.084,13.5703,-33.8635],0,75,75], + ["B_MRAP_01_hmg_F",[3.02539,16.2363,-33.8629],0,75,75], + ["B_HMG_01_F",[38.1777,44.25,-33.866],0,75,75], + ["B_GMG_01_F",[-5.16211,-5.00586,-33.8644],0,75,75], + ["B_Heli_Light_01_dynamicLoadout_F",[-6.61523,8.89844,-33.864],0,75,75], + ["B_T_Boat_Transport_01_F",[18.582,44.1055,-33.8654],0,75,75], + ["B_HMG_01_high_F",[30.6055,0.525391,-30.1961],0,75,75], + ["B_static_AA_F",[30.457,3.54102,-26.9993],0,75,75] +]; + +_submarinePatrolParameters = [ + +]; + +_airPatrols = [ + ["B_Heli_Light_01_dynamicLoadout_F",[-6.61523,8.89844,-33.864],0,1000,1000] +]; + +_missionEmplacedWeapons = [ + ["B_HMG_01_F",[38.1777,44.25,-33.866],0], + ["B_GMG_01_F",[-5.16211,-5.00586,-33.8644],0], + ["B_HMG_01_high_F",[30.6055,0.525391,-30.1961],0], + ["B_static_AA_F",[30.457,3.54102,-26.9993],0] +]; + +_missionGroups = [ + ,[[30.0605,46.2383,-33.8646],3,6,"Blue",30,45], + ,[[5.66602,-8.33398,-33.8665],3,6,"Blue",30,45], + ,[[19.9512,-4.41797,-29.7975],3,6,"Blue",30,45] +]; + +_scubaGroupParameters = [ + +]; + +_missionLootBoxes = [ + ["Box_IND_Wps_F",[10.7441,1.8418,-33.8658],_crateLoot,_lootCounts,0], + ["Box_AAF_Equip_F",[13.2188,7.31445,-33.8656],_crateLoot,_lootCounts,0], + ["Box_IND_AmmoOrd_F",[14.9844,13.168,-33.8657],_crateLoot,_lootCounts,0], + ["Box_IND_WpsLaunch_F",[10.1504,-2.12109,-33.8658],_crateLoot,_lootCounts,0] +]; + + + + +_chanceHeliPatrol = blck_chanceHeliPatrolBlue; +_noChoppers = blck_noPatrolHelisBlue; +_missionHelis = blck_patrolHelisBlue; +_chancePara = blck_chanceParaBlue; +_noPara = blck_noParaBlue; +_paraTriggerDistance = 400; +_paraSkill = 'Blue'; +_chanceLoot = 0.0; +_paraLoot = blck_BoxLoot_Blue; +_paraLootCounts = blck_lootCountsBlue; +_missionLandscapeMode = "precise"; +_uniforms = blck_SkinList; +_headgear = blck_headgear; +_vests = blck_vests; +_backpacks = blck_backpacks; +_sideArms = blck_Pistols; +_spawnCratesTiming = atMissionSpawnGround +_loadCratesTiming = atMissionSpawn +_endCondition = allKilledOrPlayerNear; +_minNoAI = blck_MinAI_Blue; +_maxNoAI = blck_MaxAI_Blue; +_noAIGroups = blck_AIGrps_Blue; +_noVehiclePatrols = blck_SpawnVeh_Blue; +_noEmplacedWeapons = blck_SpawnEmplaced_Blue; +_minNoAI = blck_MinAI_Blue; +_maxNoAI = blck_MaxAI_Blue +_noAIGroups = blck_AIGrps_Blue; +_noVehiclePatrols = blck_SpawnVeh_Blue; +_noEmplacedWeapons = blck_SpawnEmplaced_Blue; + +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf index 5ba53db..bd8709a 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf @@ -1,4 +1,9 @@ - +/* + blckeagls 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ objectAtMissionCenter = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "objectAtMissionCenter"); blck_minAI = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "minAI"); @@ -10,9 +15,7 @@ aircraftPatrolRadius = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "a oddsOfGarison = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "oddsOfGarison"); maxGarrisonStatics = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "maxGarrisonStatics"); typesGarrisonStatics = getArray(configFile >> "CfgBlck3DEN" >> "configs" >> "typesGarrisonStatics"); -//blck_MissionDifficulty = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "defaultMissionDifficulty"); blck_MissionDifficulty = missionNamespace getVariable["blck_difficulty",getText(configFile >> "CfgBlck3DEN" >> "configs" >> "defaultMissionDifficulty")]; - lootVehicleVariableName = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "lootVehicleVariableName"); buildingPosGarrisonVariableName = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "buildingPosGarrisonVariableName"); buildingATLGarrisionVariableName = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "buildingATLGarrisionVariableName"); @@ -66,17 +69,14 @@ if (isNil "blck_dynamicmarkerMissionName") then if (isNil "blck_spawnCratesTiming") then { blck_spawnCratesTiming = missionNamespace getVariable["blck_lootTiming","atMissionStartGround"]; - diag_log format["blck_loadCratesTiming set to default value of %1",blck_spawnCratesTiming]; }; if (isNil "blck_loadCratesTiming") then { blck_loadCratesTiming = missionNamespace getVariable["blck_loadTiming","atMissionStart"]; - diag_log format["blck_loadCratesTiming set to default value of %1",blck_loadCratesTiming]; }; if (isNil "blck_missionEndCondition") then { blck_missionEndCondition = missionNamespace getVariable["blck_endState","allUnitsKilled"]; - diag_log format["blck_missionEndCondition set to default value of %1",blck_missionEndCondition]; }; /* @@ -162,10 +162,28 @@ private _landscape = _objects select{ ((typeOf _x) isKindOf "Static") }; -diag_log format["CENTER = %1 | _landscape = %2",CENTER,_landscape]; + +//diag_log format["CENTER = %1 | _landscape = %2",CENTER,_landscape]; +private _garrisonATL = []; +{ + _atl = [_x,CENTER] call blck3DEN_fnc_configureGarrisonATL; + // format["_fnc_exportDynamic: _building = %1 | _atl = %2",_x,_atl]; + //diag_log format["_fnc_exportDynamic: typeName _atl = %1",typeName _atl]; + if (typeName _atl isEqualTo "STRING") then {diag_log format["_fnc_exportDynamic: length _atl = %1 | _atl = '' is %2",count _atl, _atl isEqualTo ""]}; + if !(_atl isEqualTo "") then { + _garrisonATL pushBack _atl; + _garisonedBuildings pushBack _x; + //diag_log format["_fnc_exportDynamic: garrisoned building added: %1",_atl]; + }; +} forEach _landscape; +diag_log format["_garrisonATL = %1",_garrisonATL]; + private _missionLandscape = []; { - _missionLandscape pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true']; + if !(_x in _garisonedBuildings) then + { + _missionLandscape pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER,getDir _x, 'true','true']; + }; }forEach _landscape; private _simpleObjects = _objects select {isSimpleObject _x}; @@ -258,7 +276,11 @@ diag_log format["_ammoBoxes = %1",_ammoboxes]; { _lootContainers pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x) vectorDiff CENTER, '_crateLoot','_lootCounts',getDir _x]; }forEach _ammoBoxes; - +private _missionCoords = []; +if (toLower(missionNamespace getVariable["blck_missionLocations","random"]) isEqualTo "fixed") then +{ + _missionCoords pushBack CENTER; +}; private _lines = []; private _lineBreak = toString [10]; @@ -272,6 +294,7 @@ _lines pushBack ""; _lines pushBack '#include "\q\addons\custom_server\Configs\blck_defines.hpp";'; _lines pushBack '#include "\q\addons\custom_server\Missions\privateVars.sqf";'; _lines pushBack ""; +_lines pushBack format["_defaultMissionLocations = %1;",_missionCoords]; _lines pushBack format["_markerType = %1",format["[%1,%2,%3];",_markerType,_markerSize,_markerBrush]]; _lines pushBack format["_markerColor = %1;",_markerColor]; _lines pushBack format['_startMsg = "%1";',blck_dynamicStartMessage]; @@ -280,6 +303,10 @@ _lines pushBack format['_markerMissionName = "%1";',blck_dynamicmarkerMissionNam _lines pushBack format['_crateLoot = blck_BoxLoot_%1;',blck_MissionDifficulty]; _lines pushBack format['_lootCounts = blck_lootCounts%1;',blck_MissionDifficulty]; _lines pushBack ""; +_lines pushBack "_garrisonedBuilding_ATLsystem = ["; +_lines pushBack (_garrisonATL joinString (format[",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; _lines pushBack "_missionLandscape = ["; _lines pushback (_missionLandscape joinString (format [",%1", _lineBreak])); _lines pushBack "];"; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportStatic.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportStatic.sqf index 702cb1d..86afff4 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportStatic.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportStatic.sqf @@ -1,7 +1,9 @@ - - - - +/* + blckeagls 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + +*/ objectAtMissionCenter = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "objectAtMissionCenter"); blck_minAI = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "minAI"); diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/defines.h b/@blckeagls_EDEN/addons/3EDEN_plugin/defines.h index dbc84e1..425b445 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/defines.h +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/defines.h @@ -1,5 +1,13 @@ // defines.h - +/* + blckeagls 3EDEN Editor Plugin + by Ghostrider-GRG- + Copyright 2020 + Parts of defines.h were derived from the Exile_3EDEN editor plugin + * and is licensed as follows: + * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. + * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. +*/ /* ************************************** @@ -45,13 +53,15 @@ class CfgFunctions class display {}; class setDifficulty {}; class setCompletionMode {} + class setSpawnLocations {}; class spawnCratesTiming {}; class loadCratesTiming {}; + class endMessage {}; + class startMessage {}; + class configureGarrisonATL {}; class versionInfo {}; }; - }; - }; /////////////////////////////////////////////////////////////////////////////// @@ -74,19 +84,77 @@ class cfg3DEN class Attributes { + class Default; + + class Title: Default + { + class Controls + { + class Title; + }; + }; + class Combo: Title + { + class Controls: Controls + { + class Title: Title {}; + class Value: ctrlCombo {}; + }; + }; + + class blck_garison: Combo + { + class Value + { + text = "Set Garison State"; + items[] = {"No_Garison","Has_garison"}; + }; + class no_garison + { + text = "No Garison"; + //action = "_this setVariable['garison',0];"; + }; + class has_garison + { + text = "Has Garison"; + //action = "_this setVariable['garison',1];"; + }; + }; }; + class Mission { }; + + class Object + { + class AttributeCategories + { + + }; + }; }; class CfgVehicles { - + class Static; + + class blck_static: Static + { + class Attributes + { + class garison + { + displayName = "Garrison"; + toolTip = "Define Garisoned Buildings"; + control = "blck_garison"; + }; + }; + }; }; class ctrlMenuStrip; @@ -113,7 +181,8 @@ class display3DEN "loadCratesTiming", "blckSeparator", //"blckMissionMessages", - //"blckSeparator", + "blckMissionLocation", + "blckSeparator", "blckSaveStaticMission", "blckSaveDynamicMission", "blckSeparator", @@ -132,13 +201,6 @@ class display3DEN value = 0; }; - class Attributes - { - items[] += { - "blck_setDifficulty" - }; - }; - class blck_setDifficulty { text = "Set Mission Difficulty"; @@ -223,7 +285,7 @@ class display3DEN text = "Units Dead / Player @ Center"; toolTip = "Mission is Complete when all units are dead or a player reaches mission center"; action = "['allKilledOrPlayerNear'] call blck3DEN_fnc_setCompletionMode;"; - value = "allUnitsKilled"; + value = "allKilledOrPlayerNear"; }; class lootSpawnTiming @@ -276,6 +338,7 @@ class display3DEN action = "['atMissionCompletion'] call blck3DEN_fnc_loadCratesTiming"; }; + /* ///////////////////////////// class blckMissionMessages { @@ -285,17 +348,45 @@ class display3DEN "blckEndMessage" }; }; - class blckStartMessage + // ["Title","Default","ctrlControlsGroupNoScrollbars","ctrlControlsGroup","ctrlDefault"] + class Edit; + class blckEdit: Edit + { + control = "Edit"; + value = ""; + }; + class blckStartMessage: blckEdit { text = "Misstion Start Message"; - //action = "edit3DENMissionAttributes 'MissionStartMsg';"; + action = "[_value] call blck3DEN_startMessage"; }; - class blckEndMessage + class blckEndMessage: blckEdit { text = "Mission End Message"; - //action = "edit3DENMissionAttributes 'MissionEndMsg';"; + action = "[_value] call blck3DEN_endMessage"; + }; + */ + + class blckMissionLocation + { + text = "Toggle Random or Fixed Location" + toolTip = "Set whether mission spawns at random or fixed locations"; + items[] = { + "blck_randomLocation", + "blck_fixedLocation" + }; + }; + class blck_randomLocation + { + text = "Spawn at Random Locations (Default)"; + action = "['randm'] call blck3DEN_fnc_setSpawnLocations"; + }; + class blck_fixedLocation + { + text = "Always spawn at the same location"; + toolTip = "Use to have mission respawn at same location"; + action = "['fixed'] call blck3DEN_fnc_setSpawnLocations"; }; - ///////////////////////////// class blckSaveStaticMission { @@ -319,6 +410,33 @@ class display3DEN }; }; + + class Attributes + { + //items[] += {"blck_messages"}; + text = "blckeagls: Mission Messages" + }; + class blck_messages + { + text = "Mission Messages"; + items[] = {"blck_startMessage","blck_endMessage"}; + }; + class Edit; + class blck_editMessages + { + control = Edit; + value = ""; + }; + class blck_startMessage: blck_editMessages + { + text = "Set start Message"; + action = "['_value'] call blck3DEN_fnc_startMessage"; + }; + class blck_endMessage: blck_editMessages + { + text = "Set end message"; + action = "['_value'] call blck3DEN_fnc_endMessage"; + }; }; }; }; From c57ad07d579b88573fdfc0948429d908a3db8e5c Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Sat, 15 Aug 2020 16:28:26 -0400 Subject: [PATCH 16/25] added the pbo for the editor plugin. --- @blckeagls_EDEN/addons/3EDEN_plugin.pbo | Bin 0 -> 90498 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin.pbo diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin.pbo b/@blckeagls_EDEN/addons/3EDEN_plugin.pbo new file mode 100644 index 0000000000000000000000000000000000000000..fc2767f47f8819b4ef2de82afd0c34da8c093d88 GIT binary patch literal 90498 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 literal 0 HcmV?d00001 From 3349d63bed2d445f4d312eaab67c1aa9e1f1f803 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Sat, 15 Aug 2020 16:37:12 -0400 Subject: [PATCH 17/25] Updated How To for static missions --- StaticMissions-HowTo.txt | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/StaticMissions-HowTo.txt b/StaticMissions-HowTo.txt index 2a15c85..981d447 100644 --- a/StaticMissions-HowTo.txt +++ b/StaticMissions-HowTo.txt @@ -1,8 +1,8 @@ This update includes an optional ability to spawn static missions. -This can be done by laying out everything for your static mission in the editor, -then using a simple copy - paste - edit strategy. +This can be done by laying out everything for your static mission in the 3DEN editor, +then using a an editor plugin. I have provided one example editor mission (staticMissionExamples.Altis) which I have used to configure a static mission ( ). @@ -15,32 +15,30 @@ My approach to doing this as follows: 2) Start the Eden Editor. 3) Lay out your static mission. You should: place a marker indicating where it will spawn (save your work) + Set the icon/shape, color and any text for your marker + Place all buldings, sandbags, etc (save your work) - Place any vehicle or air patrols - note that they will patrol using the postion at which you place them as the centerpoint of their patrol. + Place any vehicle or air patrols - + Note that they will patrol using the postion at which you place them as the centerpoint of their patrol. (save your work). Place any static weapons. (save your work). Place a unit at each location you wish to have a group patrol. + Note: The mission spawner will attempt to spawn an entire group at these locations using the weapons, uniforms, + etc defined in blck_config.sqf or its derivatives. + Place some sort of ammo box, cardboard box, or other loot container. Save your work. Note the postion of your marker. - Export all of the objects, units, and vehicles using the function supplied by M3EDEN Editor. - You want to use the export absolute position functions for this. + + Set Difficulty level as desired using the dropdown menu at the right of the toolbar. - Now, create a copy of one of the example missions. - Set the mission center to the position of your marker. - Carefully copy the data for your structures into the appropriate array. - Do the same for all other objects, vehicles, loot vehicles and so forth. - Note that you will need to edit the fields for AI, vehicle patrols etc to ensure that all require information is present. - - Once you have done this, add the file to the custom_server\Missions\Static\missions directory then - add an entry for your static mission to GMS_StaticMissionLists.sqf + Select Export Static Mission from the blckeagls dropdown menu. + Select Copy, then paste the text into a text editor. + Change any settings including numbers of AI, AI respawn times, or patrol radii. + + Save the file to the custom_server\Missions\Static\missions directory then + add filename for your new static mission to custom_server\Missions\Static\GMS_StaticMissionLists.sqf in order to specify additional options. Use the information provided in the example static missions to guide you. - -OPTIONAL - -Directly call functions to add units, vehicle patrols, air patrols etc. - -More to come on this. \ No newline at end of file From c5cfb0feeebaefa032799a666c924c1ff90dfdfd Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Sat, 15 Aug 2020 16:48:46 -0400 Subject: [PATCH 18/25] Updates to How Tos for using the 3DEN plugin. --- Adding New Dynamic Missions-HowTo.txt | 51 ++ ...txt => Adding New StaticMissions-HowTo.txt | 11 +- .../Dynamic Missions-How To.txt | 47 -- .../pullDynamicMission.VR/blck_defines.hpp | 38 -- .../pullDynamicMission.VR/directions.txt | 61 --- .../pullDynamicMission.VR/init.sqf | 4 - .../pullDynamicMission.VR/mission.sqm | Bin 13679 -> 0 bytes .../pullDynamicMission.sqf | 479 ------------------ .../pullDynamicMission.VR/pullMarkerInfo.sqf | 62 --- .../setCenterAtPlayer.sqf | 1 - .../pullDynamicMission.VR/template.sqf | 81 --- .../Static Missions/StaticMissions-HowTo.txt | 38 -- .../blck_defines.hpp | 38 -- .../directions.txt | 60 --- .../pullStaticMissionInfo.Altis/init.sqf | 3 - .../pullStaticMissionInfo.Altis/mission.sqm | Bin 16486 -> 0 bytes .../pullMarkerInfo.sqf | 60 --- .../pullStaticMission.sqf | 414 --------------- .../pullStaticMissionInfo.Altis/template.sqf | 97 ---- 19 files changed, 57 insertions(+), 1488 deletions(-) create mode 100644 Adding New Dynamic Missions-HowTo.txt rename StaticMissions-HowTo.txt => Adding New StaticMissions-HowTo.txt (84%) delete mode 100644 Tools/Dynamic Missions/Dynamic Missions-How To.txt delete mode 100644 Tools/Dynamic Missions/pullDynamicMission.VR/blck_defines.hpp delete mode 100644 Tools/Dynamic Missions/pullDynamicMission.VR/directions.txt delete mode 100644 Tools/Dynamic Missions/pullDynamicMission.VR/init.sqf delete mode 100644 Tools/Dynamic Missions/pullDynamicMission.VR/mission.sqm delete mode 100644 Tools/Dynamic Missions/pullDynamicMission.VR/pullDynamicMission.sqf delete mode 100644 Tools/Dynamic Missions/pullDynamicMission.VR/pullMarkerInfo.sqf delete mode 100644 Tools/Dynamic Missions/pullDynamicMission.VR/setCenterAtPlayer.sqf delete mode 100644 Tools/Dynamic Missions/pullDynamicMission.VR/template.sqf delete mode 100644 Tools/Static Missions/StaticMissions-HowTo.txt delete mode 100644 Tools/Static Missions/pullStaticMissionInfo.Altis/blck_defines.hpp delete mode 100644 Tools/Static Missions/pullStaticMissionInfo.Altis/directions.txt delete mode 100644 Tools/Static Missions/pullStaticMissionInfo.Altis/init.sqf delete mode 100644 Tools/Static Missions/pullStaticMissionInfo.Altis/mission.sqm delete mode 100644 Tools/Static Missions/pullStaticMissionInfo.Altis/pullMarkerInfo.sqf delete mode 100644 Tools/Static Missions/pullStaticMissionInfo.Altis/pullStaticMission.sqf delete mode 100644 Tools/Static Missions/pullStaticMissionInfo.Altis/template.sqf diff --git a/Adding New Dynamic Missions-HowTo.txt b/Adding New Dynamic Missions-HowTo.txt new file mode 100644 index 0000000..ea9f37f --- /dev/null +++ b/Adding New Dynamic Missions-HowTo.txt @@ -0,0 +1,51 @@ + + +This update includes a plugin for the 3DEN Editor that simplifies creation the .sqf files that code a mission. + +My approach to doing this as follows: + +1) Start Arma with the following mods: + @epoch;@exile;@blckeagls_3DEN. + (adjust to meet your specific needs; obviously any additional mods such as those from CUP can be included). + +2) Start the Eden Editor. +3) Lay out your static mission. You should: + place a marker that will be displayed when the mission is initialized (save your work) + Set the icon/shape, color and any text for your marker + + Recommended: place a road cone with a flasher at the center of your mission + Note, you can comment this out later. + It is used to calculate positions of everything else. + + Place all buldings, sandbags, etc (save your work) + Place any vehicle or air patrols - + Note that they will patrol using the postion at which you place them as the centerpoint of their patrol. + (save your work). + + Place any static weapons. + Note, you can place these inside or on top of buildings. + (save your work). + + Place a unit at each location you wish to have a group patrol. + Note: The mission spawner will attempt to spawn an entire group at these locations using the weapons, uniforms, + etc defined in blck_config.sqf or its derivatives. + Note: you can spawn this inside or on top of buildings. + + Place some sort of ammo box, cardboard box, or other loot container. + Save your work. + + Set Difficulty level as desired using the dropdown menu at the right of the toolbar. + Set any other mission parameters including: + loot crate spawn timing, + loot crate fill timing, + mission end criteria + + Select Export Dynamic Mission from the blckeagls dropdown menu. + Select Copy, then paste the text into a text editor. + Change any settings including numbers of AI, AI respawn times, or patrol radii. + + Save the file based on difficulty level. + For a Blue difficulty mission, save the file to the custom_server\Missions\Blue directory. + Add filename for your new mission to custom_server\Missions\GMS_missionLists.sqf + +Pbo custom_server and test your new mission. diff --git a/StaticMissions-HowTo.txt b/Adding New StaticMissions-HowTo.txt similarity index 84% rename from StaticMissions-HowTo.txt rename to Adding New StaticMissions-HowTo.txt index 981d447..c613042 100644 --- a/StaticMissions-HowTo.txt +++ b/Adding New StaticMissions-HowTo.txt @@ -1,15 +1,13 @@ -This update includes an optional ability to spawn static missions. +This update includes an 3DEN plugin to make it easy to export static missions. This can be done by laying out everything for your static mission in the 3DEN editor, -then using a an editor plugin. +then using the @blckeagls_3DEN editor plugin. -I have provided one example editor mission (staticMissionExamples.Altis) -which I have used to configure a static mission ( ). My approach to doing this as follows: 1) Start Arma with the following mods: - @epoch;@exile;@m3eden editor. + @epoch;@exile;@blckeagls_3DEN. (adjust to meet your specific needs; obviously any additional mods such as those from CUP can be included). 2) Start the Eden Editor. @@ -22,10 +20,13 @@ My approach to doing this as follows: Note that they will patrol using the postion at which you place them as the centerpoint of their patrol. (save your work). Place any static weapons. + Note: these can be inside or on top of buildings. + (save your work). Place a unit at each location you wish to have a group patrol. Note: The mission spawner will attempt to spawn an entire group at these locations using the weapons, uniforms, etc defined in blck_config.sqf or its derivatives. + Note: groups can be spawned inside or on top of buildings; just place on unit whereever you want a groupl Place some sort of ammo box, cardboard box, or other loot container. Save your work. diff --git a/Tools/Dynamic Missions/Dynamic Missions-How To.txt b/Tools/Dynamic Missions/Dynamic Missions-How To.txt deleted file mode 100644 index 68b6807..0000000 --- a/Tools/Dynamic Missions/Dynamic Missions-How To.txt +++ /dev/null @@ -1,47 +0,0 @@ -This tool formats most of the data required for dynamic missions based on what is present in your mission. -This include the layout of buildings, loot crates, markers, static weapons, and garrisons in buildings. -I recommend that you lay out dynamically spawned missions in the virtual reality map which minimizes confounding influences. - -A minimal mission would include: - A marker. - A way to define the mission center, which is a reference point relative to which everything is spawned. - The mission system will spawn AI, loot chests, emplaced weapons, vehicles and aircraft according to the defaults for the mission difficulty. - -The basic blckeagls missions have a bit more defined, usually some buildings to provide cover and make things more interesting. - -Now, you can add more detail including defining where infantry and statics spawn, where the one or more loot crates spawn, where vehicle patrols spawn and so forth. - To do this just place the representative objects where you want the mission to spawn them and the script should do the rest. - For infantry patrols, put one unit where you want the group to spawn. - Note: uniforms, weapons and other AI gear are not captured. You can however define _uniforms, _weapons and other AI gear for that mission. see the template and default2 missions for examples. - -You can also have infantry and/or static weapons garrison buildings using either of two approaches. - 1. place an object fo type garrisonMarkerObject inside the building you want to garrison. - I use a 100 cm sphere which is the default because it is easy to see and not used for much else. - The script will ensure that this building is identified for a garrison which will be spawned at the Arma pre-defined buildingPositions. - - 2. Manualy place statics and units inside buildings where you want them to spawn. - Infantry will change position (crouch, prone, stand) and turn but will not move which prevents their normal behavior to leave the buliding and look for players. - The position of statics (e.g., HMG, GMG) will be recorded accurately. - By default, the script looks for arrows. this is so that if you pull mission data as a player the locations are recorded acccurately (more on that below). - You can of course just place the units where you want them. - Regardless, be sure that unitMarkerObject is set to the classname of the object you use to demarcate the position of infantry units. - If you do use AI units to designate positions for your infantry, be sure to pull the data while in the editor rather than when playing the mission (see below). - - 3. You are now almost ready to pull the mission data. - I recommend that you use a road cone with a flashing light to define the mission center. - This is the approach I have taken for all blckeagles missions to date. - You could also use a loot crate. - The actual mission center will be offset 3 meters from this position for technical reasons. - -Once all that is done you are ready to pull the mission information. -To do that, from the EDEN Editor, - 1. go to tools\debug console. - 2. type execVM "pullDynamicMission.sqf"; in the box. - 3. hit Local exec - 4. hit Esc - 5. The script should run as indicated by text appearing in the lower left corner of your screen. - 6. When the text stops being updated, alt-tab out to your editor and paste the clipboard into it. - 7. You can now copy/past from that output into the relevant sections of the dynamic mission template, - after making a copy of course. - - diff --git a/Tools/Dynamic Missions/pullDynamicMission.VR/blck_defines.hpp b/Tools/Dynamic Missions/pullDynamicMission.VR/blck_defines.hpp deleted file mode 100644 index 00f0b7b..0000000 --- a/Tools/Dynamic Missions/pullDynamicMission.VR/blck_defines.hpp +++ /dev/null @@ -1,38 +0,0 @@ -/* - for ghostridergaming - By Ghostrider [GRG] - Copyright 2016 - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ - -#define GRGserver -#define useAPEX -//#define useDynamicSimulation -#define blck_debugMode -#define blck_triggerLoopCompleteTime 40*60 -//#define blck_milServer -//#define GRG_TestServer -//#define blck_useCUP -//#define blck_useRHS - -//////////////////////////// -// Do not touch anything below this line -/////////////////////////// -#define onFoot 1 -#define inVehicle 2 - -// defines for static group spawners -#define staticPatrolTriggerRange 2000 -#define groupParameters 0 -#define patrolGroup 1 -#define groupSpawned 2 -#define timesSpawned 3 -#define respawnAt 4 - - diff --git a/Tools/Dynamic Missions/pullDynamicMission.VR/directions.txt b/Tools/Dynamic Missions/pullDynamicMission.VR/directions.txt deleted file mode 100644 index bc896c2..0000000 --- a/Tools/Dynamic Missions/pullDynamicMission.VR/directions.txt +++ /dev/null @@ -1,61 +0,0 @@ -This tool formats most of the data required for dynamic missions based on what is present in your mission. -This include the layout of buildings, loot crates, markers, static weapons, and garrisons in buildings. -I recommend that you lay out dynamically spawned missions in the virtual reality map which minimizes confounding influences. - -A minimal mission would include: - A marker. You may use any marker you like. The new pullMarker script will format scripting needed to spawn that marker at the center of your mission. - A way to define the mission center, which is a reference point relative to which everything is spawned. - The mission system will spawn AI, loot chests, emplaced weapons, vehicles and aircraft according to the defaults for the mission difficulty. - -The basic blckeagls missions have a bit more defined, usually some buildings to provide cover and make things more interesting. - -Now, you can add more detail including defining where infantry and statics spawn, where the one or more loot crates spawn, where vehicle patrols spawn and so forth. -Loot crates, AI, static weapons or autonomous turrets can be spawned inside or on top of buildings. Even vehicles could be spawned on buildings in principle. - To do this just place the representative objects where you want the mission to spawn them and the script should do the rest. - For infantry patrols, put one unit where you want the group to spawn. - Note: uniforms, weapons and other AI gear are not captured. You can however define _uniforms, _weapons and other AI gear for that mission. see the template and default2 missions for examples. - -You can also have infantry and/or static weapons garrison buildings using either of two approaches. - 1. place an object fo type garrisonMarkerObject inside the building you want to garrison. - I use a 100 cm sphere which is the default because it is easy to see and not used for much else. - The script will ensure that this building is identified for a garrison which will be spawned at the Arma pre-defined buildingPositions. - - 2. Manualy place statics and units inside buildings where you want them to spawn. - Infantry will change position (crouch, prone, stand) and turn but will not move which prevents their normal behavior to leave the buliding and look for players. - The position of statics (e.g., HMG, GMG) will be recorded accurately. - By default, the script looks for arrows. this is so that if you pull mission data as a player the locations are recorded acccurately (more on that below). - You can of course just place the units where you want them. - Regardless, be sure that unitMarkerObject is set to the classname of the object you use to demarcate the position of infantry units. - If you do use AI units to designate positions for your infantry, be sure to pull the data while in the editor rather than when playing the mission (see below). - - 3. You are now almost ready to pull the mission data. - I recommend that you use a road cone with a flashing light to define the mission center. - This is the approach I have taken for all blckeagles missions to date. - You could also use a loot crate. - The actual mission center will be offset 3 meters from this position for technical reasons. - -Once all that is done you are ready to pull the mission information. -To do that, from the EDEN Editor, - - Preparation: copy all files from the tools\dynamicMissions\pullDynamicMissions folder into the folder containing the mission.sqm for your new mission. - Rename template.sqf to reflect the nature of your mission. - - Pulling Marker data. Start Arma, and select Editor. Load your new mission in the editor and hit Play. - Using the mouse wheel, select pull marker data. - Alt-tab out and paste into the appropriate spot in your new mission.sqf. - - Pulling all other mission data. - 1. go to tools\debug console. - 2. type execVM "pullDynamicMission.sqf"; in the box. - 3. hit Local exec - 4. hit Esc - 5. The script should run as indicated by text appearing in the lower left corner of your screen. - 6. When the text stops being updated, alt-tab out to your editor. - 7. You can now copy/past from that output into the relevant sections of the dynamic mission template. - - Final touchups. - The tools will pull all objects including any spheres, arrows or other aids. - Be sure to remove these or comment them out or they will show up in your final mission on your server. - Adjust the remaining settings in the template such as difficulty level to suit your needs. - Add the name of the mission to the list of missions to be spawned for that difficulty level. - Test everything to be sure diff --git a/Tools/Dynamic Missions/pullDynamicMission.VR/init.sqf b/Tools/Dynamic Missions/pullDynamicMission.VR/init.sqf deleted file mode 100644 index ae3be0e..0000000 --- a/Tools/Dynamic Missions/pullDynamicMission.VR/init.sqf +++ /dev/null @@ -1,4 +0,0 @@ - -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/mission.sqm b/Tools/Dynamic Missions/pullDynamicMission.VR/mission.sqm deleted file mode 100644 index 9b0c7c0ff81bc16dde68d0a70c339edd9c2639a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13679 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 diff --git a/Tools/Dynamic Missions/pullDynamicMission.VR/pullDynamicMission.sqf b/Tools/Dynamic Missions/pullDynamicMission.VR/pullDynamicMission.sqf deleted file mode 100644 index 6fd2134..0000000 --- a/Tools/Dynamic Missions/pullDynamicMission.VR/pullDynamicMission.sqf +++ /dev/null @@ -1,479 +0,0 @@ -_fn_isInside = { // returns true if an object is inside, underneath or on top of a building otherwise returns false. - ////////////////////// - // Determin if a unit is inside a building using two separate checkVisibility - ////////////////////// - // lineIntersects [ eyePos player, aimPos chopper, player, chopper] - params["_u",["_category","House"]]; - private ["_u","_pos","_above","_below"]; - _pos = getPosASL _u; - _above = lineIntersects [_pos, [_pos select 0, _pos select 1, (_pos select 2) + 100],_u]; - _below = lineintersects [_pos, [_pos select 0, _pos select 1, (_pos select 2) - 2],_u]; - diag_log format["_fn_isInside: _u %1 | _category = %5 | typeOf _u %4 | _above %2 | _below %3 ",_u,_above,_below,typeOf _u, _category]; - // If there is something above or below the object do a quick double-check to make sure there is a building there and not something else. - if (_above) then // test if any surfaces above are from buildingPos - { - _surfacesAbove = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) + 100],_u,_u,true,100]; - _above = false; - { - //diag_log format["_fn_isInside: _x-2 = %2 | typeOf _x = %3",_x,_x select 2,typeOf (_x select 2)]; - if ((_x select 2) isKindOf _category) then {_above = true}; - }forEach _surfacesAbove; - }; - if (_below) then - { - _surfacesBelow = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) - 10],_u,_u,true,100]; - _above = false; - { - //diag_log format["_fn_isInside: _x-2 = %2 | typeOf _x = %3",_x,_x select 2,typeOf (_x select 2)]; - if ((_x select 2) isKindOf _category) then {_above = true}; - }forEach _surfacesBelow; - }; - - _isInside = if (_above || _below) then {true} else {false}; - //diag_log format["_fn_isInside: _isInside = %1",_isInside]; - _isInside -}; - -_fn_buildingContainer = { // returns the builing containing an object or objNull - private["_u","_pos","_building","_surfacesAbove","_surfacesBelow"]; - params["_u",["_category","House"]]; - _pos = getPosASL _u; - private _building = objNull; - // lineIntersectsSurfaces [begPosASL, endPosASL, ignoreObj1, ignoreObj2, sortMode, maxResults, LOD1, LOD2, returnUnique] - _surfacesAbove = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) + 100],_u,_u,true,10]; - diag_log format["_surfacesAbove = %1",_surfacesAbove]; - { - if ((_x select 2) isKindOf _category && !(_x isEqualTo _u)) exitWith {_building = (_x select 2)}; - } forEach _surfacesAbove; - if (_building isEqualTo objNull) then - { - _surfacesBelow = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) - 10],_u,_u,true,100]; - diag_log format["_surfacesBelow = %1",_surfacesBelow]; - { - if ((_x select 2) isKindOf _category && !(_x isEqualTo _u)) exitWith {_building = (_x select 2)}; - } forEach _surfacesBelow; - }; - diag_log format["_fn_buildingContainer: _u = %1 | _building = %2",_u,_building]; - _building -}; - -_fn_isInfantry = { // returns true if a unit is on foot otherwise returns false. - ////////////////////// - // Determine if a unit isinfantry rather than a unit manning a turret or vehicle - ////////////////////// - _u = _this select 0; - private _isInfantry = if ((_u isKindOf "Man") && (vehicle _u) isEqualTo _u) then {true} else {false}; - //diag_log format["_fn_isInfantry: _isInfantry = %1",_isInfantry]; - _isInfantry -}; - -diag_log "========== =========================="; - -/////////////////// -// Define some values for our AI -// Change values of these variables to suit your needs -/////////////////// -#define aiDifficulty "Red" -#define minAI 3 -#define maxAI 6 -#define minPatrolRadius 30 -#define maxPatrolRadius 45 -#define AI_respawnTime 600 -#define aiVehiclePatrolRadius 75 -#define vehiclePatrolRespawnTime 600 -#define staticWeaponRespawnTime 600 -#define aiAircraftPatrolRespawnTime 600 -#define aiAircraftPatrolRadius 1700 -#define oddsOfGarrison 0.67 -#define maxGarrisonStatics 3 -#define maxGarrisonUnits 4 -#define typesGarrisonStatics [] // When empty a static will be randomly chosen from the defaults for blckeagls -#define garrisonMarkerObject "Sign_Sphere100cm_F" // This can be anything you like. I find this large sphere easy to see and convenient. -#define unitMarkerObject "Sign_Arrow_Direction_Green_F" // This can be anything. I chose this arrow type because it allows you to easily indicate direction. -#define objectAtMissionCenter "RoadCone_L_F" -#define lootVehicleMarker "Sign_Arrow_F" -#define landVehicles "LandVehicle" - -/////////////////// -// Define the coordinates of the center of the mission. -/////////////////// -if (isNil "CENTER") then -{ - CENTER = [0,0,0]; -}; -if (CENTER isEqualTo [0,0,0]) then -{ - hint "Please define a center point for your mission"; - _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]; - if (count _obj > 0) then - { - CENTER = [3,3,0] vectorAdd (getPosATL _obj1); - }; - hint format["Position of Road Cone at %1 used to define mission center",CENTER]; - diag_log format["Position of Road Cone at %1 used to define mission center",CENTER]; - diag_log format["Player located at position %1",position player]; -}; -diag_log format["CENTER Set to %1",CENTER]; - -/////////////////// -// Identify any buildings in which a garrison should be spawned using the Arma building positions. -// Tell the script which buildings to garrison by placing an object inside that designates them as such. -// I use a large yellow sphere for this purpose. -// The function below assembles a list of such buildings for use in defining the data for mission buildings. -/////////////////// - -_cb = ""; - -////////////////// -// *** OPTIONAL **** -// Place a marker over your mission and configure it as you would like to to appear in the tame. -// The marker configuration will be included in the output of this script. -// Note ** Only the first marker placed will be processed ** -// Configure Marker -///////////////// - -diag_log format["<< ---- pullDynamicMision: START %1 ---- >>",diag_tickTime]; - -//////////////////////// -// Begin pulling data here -/////////////////////// - -_cb = _cb + format["_garrisonedBuildings_BuildingPosnSystem = [",endl]; -private _garrisonedBuildings = []; -private _allStatics = []; -_helpers = allMissionObjects garrisonMarkerObject; -//diag_log format["_helpers = %1",_helpers]; -{ - if ( (typeOf _x) isEqualTo garrisonMarkerObject) then - { - private _isInside = [_x] call _fn_isInside; - if (_isInside) then - { - _building = [_x] call _fn_buildingContainer; - _garrisonedBuildings pushbackunique _building; - _garrisonedBuildings pushbackunique _x; - // data structure ["building Classname",[/*building pos*/],/*building dir*/,/*odds of garrison*/, /*Max Statics*/,/*types statics*/,/*max units*/], - // 1 2 3 4 5 6 7 8 9 - _line = format[' ["%1",%2,%3,%4,%5,%6,%7,%8,%9]',typeOf _building,(getPosATL _building) vectorDiff CENTER,getDir _building, 'true','true',oddsOfGarrison,maxGarrisonStatics,typesGarrisonStatics,maxGarrisonUnits]; - systemChat _line; - //diag_log _line; - if (_forEachIndex == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; - }; -} forEach _helpers; -_cb = _cb + format["%1];%1%1",endl]; - -_logging = format["_garrisonedBuildings = %1",_garrisonedBuildings]; -diag_log _logging; -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. - Coding must ensure that nothing is repeated but everything is captured. -*/ - -_fn_configureGarrisonForBuildingATL = { - private["_b","_staticsInBuilding","_unitsInBuilding","_staticsText","_unitsText","_buildingGarrisonATL","_staticsInBuilding","_unitsInBuilding","_count"]; - _b = _this select 0; - _count = 0; - if (_b in _garrisonedBuildings) exitWith {""}; - _staticsText = ""; - _unitsText = ""; - _buildingGarrisonATL = ""; - _staticsInBuilding = nearestObjects[getPosATL _building,["StaticWeapon"],sizeOf (typeOf _building)]; - { - if !(_x in _configuredStatics) then - { - _isInside = [_x] call _fn_isInside; - if (_isInside) then {_building = [_x] call _fn_buildingContainer}; - 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]; - } else { - _staticsText = _staticsText + format[',["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff (getPosATL _b),getDir _x]; - }; - }; - }; - } forEach _staticsInBuilding; - _unitsInBuilding = nearestObjects[getPosATL _building,[unitMarkerObject],sizeOf (typeOf _building)]; - - { - if !(_x in _configuredUnits) then - { - _isInside = [_x] call _fn_isInside; - if (_isInside) then {_building = [_x] call _fn_buildingContainer}; - if (_b isEqualTo _building) then - { - _configuredUnits pushBackUnique _x; - - if (_unitsText isEqualTo "") then - { - _unitsText = format["[%1,%2]",(getPosATL _x) vectorDiff (getPosATL _b),getDir _x]; - } else { - _unitsText = _unitsText + format[",[%1,%2]",(getPosATL _x) vectorDiff (getPosATL _b),getDir _x]; - }; - _count = _count + 1; - }; - }; - } forEach _unitsInBuilding; - if ( !(_staticsText isEqualTo "") || !(_unitsText isEqualTo "")) then - { - _buildingGarrisonATL = format[' ["%1",%2,%3,%4,%5,[%6],[%7]]',typeOf _b,(getPosATL _b) vectorDiff CENTER,getDir _b,'true','true',_staticsText,_unitsText]; - _garrisonedBuildings pushBackUnique _b; - }; - _buildingGarrisonATL -}; - -private _count = 0; -_cb = _cb + "_garrisonedBuilding_ATLsystem = ["; -{ - private _isInside = [_x] call _fn_isInside; - if (_isInside) then - { - private _building = [_x] call _fn_buildingContainer; - 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]; - private _buildingGarrisonInformation = [_building] call _fn_configureGarrisonForBuildingATL; - diag_log format["_buildingGarrisonInformation = %1",_buildingGarrisonInformation]; - if !(_buildingGarrisonInformation isEqualTo "") then - { - if (_count == 0) then - { - _cb = _cb + format["%1%2",endl,_buildingGarrisonInformation]; - } else { - _cb = _cb + format[",%1%2",endl,_buildingGarrisonInformation]; - }; - _count = _count + 1; - }; - }; - }; - -} forEach ((allMissionObjects "StaticWeapon") + (allMissionObjects "Man") + (allMissionObjects unitMarkerObject)); -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Configure info remaining mission landscape -/////////////////// -_land = allMissionObjects "Static"; -_count = 0; -_cb = _cb + format["_missionLandscape = [",endl]; -{ - diag_log format["evaluating mission landscape: _x = %1 | typeOf _x = %1",_x, typeOf _x]; - //diag_log format["evaluating mission landscape: _x %1 | typeOf _x %1",_x, _x isKindOf "Helper_Base_F"]; - 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 (_count == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - _count = _count + 1; - }; -}forEach allMissionObjects "Static"; -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Configure loot boxes -/////////////////// -_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 - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; -}forEach ((allMissionObjects "ReammoBox") + (allMissionObjects "ReammoBox_F")); -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Setup Info for loot vehicles -/////////////////// -_missionLootVehicles = []; -_missionVehicles = ((allMissionObjects "Car") + (allMissionObjects "Tank") + allMissionObjects "Ship"); -_lootVehicleMarkers = allMissionObjects lootVehicleMarker; -diag_log format["_lootVehicleMarkers = %1",_lootVehicleMarkers]; -_cb = _cb + format["_missionLootVehicles = ["]; -{ - _kindOf = "nothing"; - _isInside = [_x,"Car"] call _fn_isInside; - if (_isInside) then {_kindOf = "Car"}; - if !(_isInside) then {_isInside = [_x,"Ship"] call _fn_isInside}; - if (_isInside) then {_kindOf = "Ship"}; - if (_isInside) then - { - - _object = [_x,_kindOf] call _fn_buildingContainer; - diag_log format["object %1 is inside object %2",_x,_object]; - _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 - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; -} forEach allMissionObjects lootVehicleMarker; -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Setup Info for vehicle patrols -/////////////////// -_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 - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; -}forEach ((allMissionObjects "Car") + (allMissionObjects "Tank") + allMissionObjects "Ship"); -_cb = _cb + format["%1];%1%1",endl]; - -_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 - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; -}forEach allMissionObjects "Ship"; -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Configs for Air Patrols -/////////////////// -_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 - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; -}forEach allMissionObjects "Air"; -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Setup info for remaining static/emplaced weapons -/////////////////// -_count = 0; -_cb = _cb + format["_missionEmplacedWeapons = ["]; -{ - - //if !(_x in _configuredStatics) then - private _isInside = [_x] call _fn_isInside; - if !(_isInside) 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 - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - _count = _count + 1; - }; - -}forEach allMissionObjects "StaticWeapon"; -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Setup information for infantry groups spawning outside buildings -/////////////////// -_cb = _cb + format["_missionGroups = ["]; -{ - //[[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]; - if (_isInfantry) then - { - if (!(surfaceIsWater (getPos _x)) && !(_isInside) && !(isPlayer _x)) then - { - _line = format[' [%1,%2,%3,"%4",%5,%6]',(getPosATL _x) vectorDiff CENTER,minAI,maxAI,aiDifficulty,minPatrolRadius,maxPatrolRadius]; - systemChat _line; - if (_forEachIndex == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; - }; -}forEach allMissionObjects "Man"; -_cb = _cb + format["%1];%1%1",endl]; - -_cb = _cb + "_scubaGroupParameters = ["; -{ - //[[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]; - if (_isInfantry) then - { - if ((surfaceIsWater (getPos _x)) && !(_isInside) && !(isPlayer _x)) then - { - _line = format[' [%1,%2,%3,"%4",%5,%6]',(getPosATL _x) vectorDiff CENTER,minAI,maxAI,aiDifficulty,minPatrolRadius,maxPatrolRadius]; - systemChat _line; - if (_forEachIndex == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; - }; -}forEach allMissionObjects "Man"; -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// All done, notify the user and copy the output to the clipboard -/////////////////// -_msg = "All Objects organzied, formated and copied to the Clipboard"; -hint _msg; -systemChat _msg; -systemChat format["_cb has %1 characters",count _cb]; -copyToClipboard _cb; -diag_log "DONE"; - diff --git a/Tools/Dynamic Missions/pullDynamicMission.VR/pullMarkerInfo.sqf b/Tools/Dynamic Missions/pullDynamicMission.VR/pullMarkerInfo.sqf deleted file mode 100644 index 442a5b1..0000000 --- a/Tools/Dynamic Missions/pullDynamicMission.VR/pullMarkerInfo.sqf +++ /dev/null @@ -1,62 +0,0 @@ - -_cb = ""; - -////////////////// -// *** OPTIONAL **** -// Place a marker over your mission and configure it as you would like to to appear in the tame. -// The marker configuration will be included in the output of this script. -// Note ** Only the first marker placed will be processed ** -// Configure Marker -///////////////// -/* - _markerType = ["ELIPSE",[175,175],"GRID"]; - _markerType = ["mil_triangle",[0,0]]; -*/ - -diag_log format["<< ---- START %1 ---- >>",diag_tickTime]; - -_allmkr = allMapMarkers; -diag_log format["_allmkr = %1",_allmkr]; -if (count _allmkr == 0) then -//if !(typeName _mk isEqualTo "STRING") then -{ - hint "No Marker Found, no Marker Definitions Will Be generated"; - uiSleep 5; -} else { - - _mk = _allmkr select 0; - 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 (toUpper(markerShape _mk)) do - { - case "ELLIPSE": { - _cb = _cb + format['_markerType = ["%1",%2,"%3"];%4',toUpper(MarkerShape _mk),getMarkerSize _mk,toUpper(markerBrush _mk),endl]; - }; - case "RECTANGLE": { - _cb = _cb + format['_markerType = ["%1",%2,"%3"];%4',toUpper(MarkerShape _mk),getMarkerSize _mk,toUpper(markerBrush _mk),endl]; - }; - case "ICON": { - _cb = _cb + format['_markerType = ["%1"];%2',getMarkerType _mk,endl]; - }; - }; - - _cb = _cb + format['_markerColor = "%1";%2',markerColor _mk,endl]; - _cb = _cb + format['_markerLabel = "%1";%2',MarkerText _mk,endl]; - _cb = _cb + format["%1%1",endl]; -}; - -/////////////////// -// All done, notify the user and copy the output to the clipboard -/////////////////// -_msg = "Marker Data organzied, formated and copied to the Clipboard"; -hint _msg; -systemChat _msg; -systemChat format["_cb has %1 characters",count _cb]; -copyToClipboard _cb; -diag_log "DONE"; - diff --git a/Tools/Dynamic Missions/pullDynamicMission.VR/setCenterAtPlayer.sqf b/Tools/Dynamic Missions/pullDynamicMission.VR/setCenterAtPlayer.sqf deleted file mode 100644 index 6db9def..0000000 --- a/Tools/Dynamic Missions/pullDynamicMission.VR/setCenterAtPlayer.sqf +++ /dev/null @@ -1 +0,0 @@ -CENTER = getPos player; \ No newline at end of file diff --git a/Tools/Dynamic Missions/pullDynamicMission.VR/template.sqf b/Tools/Dynamic Missions/pullDynamicMission.VR/template.sqf deleted file mode 100644 index c1d11ca..0000000 --- a/Tools/Dynamic Missions/pullDynamicMission.VR/template.sqf +++ /dev/null @@ -1,81 +0,0 @@ -/* - Mission Template by Ghostrider [GRG] - Mission Compositions by Bill prepared for ghostridergaming - Copyright 2016 - Last modified 3/20/17 - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -#include "\q\addons\custom_server\Missions\privateVars.sqf"; - -//diag_log "[blckeagls] Spawning Green Mission with template = default"; -_crateLoot = blck_BoxLoot_Green; -_lootCounts = blck_lootCountsGreen; -_startMsg = "An enemy research center was sighted in a nearby sector! Check the Green marker on your map for the location!"; -_endMsg = "The Sector at the Green Marker is under survivor control!"; - -_markerMissionName = "Research Center"; -_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" - -////////// -// Past the output of the script here - - -////////// -// The lines below define additional variables you may wish to configure. - - -// Change _useMines to true/false below to enable mission-specific settings. -_useMines = blck_useMines; -_minNoAI = blck_MinAI_Green; -_maxNoAI = blck_MaxAI_Green; -_noAIGroups = blck_AIGrps_Green; -_noVehiclePatrols = blck_SpawnVeh_Green; -_noEmplacedWeapons = blck_SpawnEmplaced_Green; -_minNoAI = blck_MinAI_Blue; // Setting this in the mission file overrides the defaults such as blck_MinAI_Blue -_maxNoAI = blck_MaxAI_Blue; // Setting this in the mission file overrides the defaults -_noAIGroups = blck_AIGrps_Blue; // Setting this in the mission file overrides the defaults -_noVehiclePatrols = blck_SpawnVeh_Blue; // Setting this in the mission file overrides the defaults -_noEmplacedWeapons = blck_SpawnEmplaced_Blue; // Setting this in the mission file overrides the defaults -// Change _useMines to true/false below to enable mission-specific settings. -_useMines = blck_useMines; // Setting this in the mission file overrides the defaults -_uniforms = blck_SkinList; // Setting this in the mission file overrides the defaults -_headgear = blck_headgear; // Setting this in the mission file overrides the defaults -_vests = blck_vests; -_backpacks = blck_backpacks; -_weaponList = ["blue"] call blck_fnc_selectAILoadout; -_sideArms = blck_Pistols; -_chanceHeliPatrol = blck_chanceHeliPatrolBlue; // Setting this in the mission file overrides the defaults -_noChoppers = blck_noPatrolHelisBlue; -_missionHelis = blck_patrolHelisBlue; - -_chancePara = blck_chanceParaBlue; // Setting this in the mission file overrides the defaults -_noPara = blck_noParaBlue; // Setting this in the mission file overrides the defaults -_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. -_paraSkill = "red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. -_chanceLoot = 0.0; -_paraLoot = blck_BoxLoot_Blue; -_paraLootCounts = blck_lootCountsRed; // Throw in something more exotic than found at a normal blue mission. - -_spawnCratesTiming = blck_spawnCratesTiming; // Choices: "atMissionSpawnGround","atMissionEndGround","atMissionEndAir". - // Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute. - // This sets the default value but can be overridden by defining _spawnCrateTiming in the file defining a particular mission. -_loadCratesTiming = blck_loadCratesTiming; // valid choices are "atMissionCompletion" and "atMissionSpawn"; - // Pertains only to crates spawned at mission spawn. - // This sets the default but can be overridden for specific missions by defining _loadCratesTiming - - // Examples: - // To spawn crates at mission start loaded with gear set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionSpawn" - // To spawn crates at mission start but load gear only after the mission is completed set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionCompletion" - // To spawn crates on the ground at mission completion set blck_spawnCratesTiming = "atMissionEndGround" // Note that a loaded crate will be spawned. - // To spawn crates in the air and drop them by chutes set blck_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned. -_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" - // Setting this in the mission file overrides the defaults -//_timeOut = -1; -#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/Tools/Static Missions/StaticMissions-HowTo.txt b/Tools/Static Missions/StaticMissions-HowTo.txt deleted file mode 100644 index 5a9b5a9..0000000 --- a/Tools/Static Missions/StaticMissions-HowTo.txt +++ /dev/null @@ -1,38 +0,0 @@ - - -You can spawn static missions over land or on water. -This can be done by laying out everything for your static mission in the editor, -then exporting the data from your mission using a simple script and a copy - paste - edit strategy. - -My approach to doing this as follows: - -1) Start the Eden Editor. -2) Lay out your static mission. You should: - [Optional] place a marker indicating where it will spawn (save your work) - Place all buldings, sandbags, etc (save your work) - Place any vehicle, navel, sub or air patrols - note that they will patrol using the postion at which you place them as the centerpoint of their patrol. - (save your work). - Place any static weapons. These can be outside, on top of or inside buildings. - (save your work). - Place a unit at each location you wish to have a group patrol OUTSIDE buildings. These will spawn as infantry on land and scuba units over water. - Place a unit inside buildings as appropriate. - Place some sort of ammo box, cardboard box, or other loot container if you wish to have one. You can have as many as you like. - Save your work. - - ** NOTES ** - Uniforms, weapons and any other customization to units will not be preserved. - The defaults for blckeagls, or any specific definitions for _uniforms, _weapons, etc provided when the mission is spawned, will be used for these AI properties. - -3) Export the mission data using the tools provided. - In the EDEN editor, go to tools\debug console - in the box type execVM "pullStaticMission.sqf"; - Click 'local exec' - Hit Esc and wait for the script to run. You will see a notification in the lower left corner when it is done. - Alt-Tab out and past the output into your text editor. - Make a copy of the stati mission template. - Copy relevant information from the text you just grabbed with the clipboard to the template. - Make any edits or other adjustments needed. - - Once you have done this, add the file to the custom_server\Missions\Static\missions directory then - add an entry for your static mission to GMS_StaticMissionLists.sqf - diff --git a/Tools/Static Missions/pullStaticMissionInfo.Altis/blck_defines.hpp b/Tools/Static Missions/pullStaticMissionInfo.Altis/blck_defines.hpp deleted file mode 100644 index 00f0b7b..0000000 --- a/Tools/Static Missions/pullStaticMissionInfo.Altis/blck_defines.hpp +++ /dev/null @@ -1,38 +0,0 @@ -/* - for ghostridergaming - By Ghostrider [GRG] - Copyright 2016 - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ - -#define GRGserver -#define useAPEX -//#define useDynamicSimulation -#define blck_debugMode -#define blck_triggerLoopCompleteTime 40*60 -//#define blck_milServer -//#define GRG_TestServer -//#define blck_useCUP -//#define blck_useRHS - -//////////////////////////// -// Do not touch anything below this line -/////////////////////////// -#define onFoot 1 -#define inVehicle 2 - -// defines for static group spawners -#define staticPatrolTriggerRange 2000 -#define groupParameters 0 -#define patrolGroup 1 -#define groupSpawned 2 -#define timesSpawned 3 -#define respawnAt 4 - - diff --git a/Tools/Static Missions/pullStaticMissionInfo.Altis/directions.txt b/Tools/Static Missions/pullStaticMissionInfo.Altis/directions.txt deleted file mode 100644 index 2667f79..0000000 --- a/Tools/Static Missions/pullStaticMissionInfo.Altis/directions.txt +++ /dev/null @@ -1,60 +0,0 @@ -This tool formats most of the data required for STATIC missions based on what is present in your mission. -This include the layout of buildings, loot crates, markers, static weapons, and garrisons in buildings. - -A minimal mission would include: - A marker. You may use any marker you like. The new pullMarker script will format scripting needed to spawn that marker at the center of your mission. - The mission system will spawn AI, loot chests, emplaced weapons, vehicles and aircraft according to the defaults for the mission difficulty. - -The basic blckeagls static missions provided as examples have a bit more defined, usually some buildings to provide cover and make things more interesting. -I have added a new example mission, 'garrison.sqf', to illustrate technques you can use to tell the script which buildings to spawn AI in and where to spawn them. - -Note that you can add more detail including defining where infantry and statics spawn, where the one or more loot crates spawn, where vehicle patrols spawn and so forth. -Loot crates, AI, static weapons or autonomous turrets can be spawned inside or on top of buildings. Even vehicles could be spawned on buildings in principle. - To do this just place the representative objects where you want the mission to spawn them and the script should do the rest. - For infantry patrols, put one unit where you want the group to spawn. - Note: uniforms, weapons and other AI gear are not captured. You can however define _uniforms, _weapons and other AI gear for that mission. - See the template and default2 missions for examples. - -You can also have infantry and/or static weapons garrison buildings using either of two approaches. - 1. place an object of type garrisonMarkerObject inside the building you want to garrison. - I use a 100 cm sphere which is the default because it is easy to see and not used for much else. - The script will ensure that this building is identified for a garrison which will be spawned at the Arma pre-defined buildingPositions. - You can define the number of infantry and statics to spawn in these buildings. Their positions should be different each time the garrison is spawned. - Just like the other static AI, garrisons respawn. - - 2. Manualy place statics and units inside buildings where you want them to spawn. - Infantry will change position (crouch, prone, stand) and turn but will not move which prevents their normal behavior to leave the buliding and look for players. - The position of statics (e.g., HMG, GMG) will be recorded accurately. - To tell the script where you want units, turrets (HMG or anything else in the turret category) just place the units where you want them. - This can include some of the new, autonomous turrets. - -Once all that is done you are ready to pull the mission information. -To do that, from the EDEN Editor, - - 1. Preparation: copy all files from the tools\dynamicMissions\pullDynamicMissions folder into the folder containing the mission.sqm for your new mission. - Rename template.sqf to reflect the nature of your mission. - Open 'pullStaticMission.sqf' and check the preset definitions, all of which are set by #define. - Adjust these values as appropriate. - - 2. Pulling Marker data. Start Arma, and select Editor. Load your new mission in the editor and hit Play. - Using the mouse wheel, select pull marker data. - Alt-tab out and paste into the appropriate spot in your new mission.sqf. - - - 3. Pulling all other mission data. - Return to the editor. - Select 'tools' with then 'debug console'. - A window will pop up with a zone toward the center in which you can enter text. - 2. type execVM "pullDynamicMission.sqf"; in the box. - 3. hit Local exec - 4. hit Esc - 5. The script should run as indicated by text appearing in the lower left corner of your screen. - 6. When the text stops being updated, alt-tab out to your editor. - 7. You can now copy/past from that output into the relevant sections of the dynamic mission template. - - 4. Final touchups. - The tools will pull all objects including any spheres, arrows or other aids. - Be sure to remove these or comment them out or they will show up in your final mission on your server. - Adjust the remaining settings in the template such as difficulty level to suit your needs. - Add the name of the mission to the list of missions to be spawned for that difficulty level. - Test everything to be sure diff --git a/Tools/Static Missions/pullStaticMissionInfo.Altis/init.sqf b/Tools/Static Missions/pullStaticMissionInfo.Altis/init.sqf deleted file mode 100644 index 3240b7a..0000000 --- a/Tools/Static Missions/pullStaticMissionInfo.Altis/init.sqf +++ /dev/null @@ -1,3 +0,0 @@ - -player addAction["Pull MARKER Info","pullMarkerInfo.sqf"]; - diff --git a/Tools/Static Missions/pullStaticMissionInfo.Altis/mission.sqm b/Tools/Static Missions/pullStaticMissionInfo.Altis/mission.sqm deleted file mode 100644 index f490b1fcf6efc77ffbedb051a9a3d19b47e5cd07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16486 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 H@bCWtn9*XN diff --git a/Tools/Static Missions/pullStaticMissionInfo.Altis/pullMarkerInfo.sqf b/Tools/Static Missions/pullStaticMissionInfo.Altis/pullMarkerInfo.sqf deleted file mode 100644 index da92aca..0000000 --- a/Tools/Static Missions/pullStaticMissionInfo.Altis/pullMarkerInfo.sqf +++ /dev/null @@ -1,60 +0,0 @@ - -_cb = ""; - -////////////////// -// *** OPTIONAL **** -// Place a marker over your mission and configure it as you would like to to appear in the tame. -// The marker configuration will be included in the output of this script. -// Note ** Only the first marker placed will be processed ** -// Configure Marker -///////////////// -/* - _markerType = ["ELIPSE",[175,175],"GRID"]; - _markerType = ["mil_triangle",[0,0]]; -*/ - -diag_log format["<< ---- START %1 ---- >>",diag_tickTime]; - -_allmkr = allMapMarkers; -diag_log format["_allmkr = %1",_allmkr]; -if (count _allmkr == 0) then -//if !(typeName _mk isEqualTo "STRING") then -{ - hint "No Marker Found, no Marker Definitions Will Be generated"; - uiSleep 5; -} else { - - _mk = _allmkr select 0; - diag_log format["_mk = %1",_mk]; - systemChat format["marker shape = %1",markerShape _mk]; - systemChat format["marker type = %1",markerType _mk]; - _cb = _cb + format['_missionCenter = %1;%2',MarkerPos _mk,endl]; - //systemChat - switch (markerShape _mk) do - { - case "ELLIPSE": { - _cb = _cb + format['_markerType = ["%1",%2,"%3"];%4',toUpper(MarkerShape _mk),getMarkerSize _mk,toUpper(markerBrush _mk),endl]; - }; - case "RECTANGLE": { - _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['_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["%1%1",endl]; -}; - -/////////////////// -// All done, notify the user and copy the output to the clipboard -/////////////////// -_msg = "Marker Data organzied, formated and copied to the Clipboard"; -hint _msg; -systemChat _msg; -systemChat format["_cb has %1 characters",count _cb]; -copyToClipboard _cb; -diag_log "DONE"; - diff --git a/Tools/Static Missions/pullStaticMissionInfo.Altis/pullStaticMission.sqf b/Tools/Static Missions/pullStaticMissionInfo.Altis/pullStaticMission.sqf deleted file mode 100644 index 38487ab..0000000 --- a/Tools/Static Missions/pullStaticMissionInfo.Altis/pullStaticMission.sqf +++ /dev/null @@ -1,414 +0,0 @@ - -_fn_isInside = { // returns true if an object is inside, underneath or on top of a building otherwise returns false. - ////////////////////// - // Determine if a unit is inside a building using two separate checkVisibility - ////////////////////// - // lineIntersects [ eyePos player, aimPos chopper, player, chopper] - _u = _this select 0; - private ["_u","_pos","_above","_below"]; - _pos = getPosASL _u; - _above = lineIntersects [_pos, [_pos select 0, _pos select 1, (_pos select 2) + 100],_u]; - _below = lineintersects [_pos, [_pos select 0, _pos select 1, (_pos select 2) - 2],_u]; - //diag_log format["_fn_isInside: _u %1 (%8)| typeOf _u %4 | _above %2 | _below %3 ",_u,_above,_below,typeOf _u]; - // If there is something above or below the object do a quick double-check to make sure there is a building there and not something else. - if (_above) then // test if any surfaces above are from buildingPos - { - _surfacesAbove = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) + 100],_u,_u,true,100]; - _above = false; - { - //diag_log format["_fn_isInside: _x-2 = %2 | typeOf _x = %3",_x,_x select 2,typeOf (_x select 2)]; - if ((_x select 2) isKindOf "House") then {_above = true}; - }forEach _surfacesAbove; - }; - if (_below) then - { - _surfacesBelow = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) - 10],_u,_u,true,100]; - _above = false; - { - //diag_log format["_fn_isInside: _x-2 = %2 | typeOf _x = %3",_x,_x select 2,typeOf (_x select 2)]; - if ((_x select 2) isKindOf "House") then {_above = true}; - }forEach _surfacesBelow; - }; - - _isInside = if (_above || _below) then {true} else {false}; - //diag_log format["_fn_isInside: _isInside = %1",_isInside]; - _isInside -}; - -_fn_buildingContainer = { // returns the builing containing an object or objNull - private["_u","_pos","_building","_surfacesAbove","_surfacesBelow"]; - _u = _this select 0; - _pos = getPosASL _u; - private _building = objNull; - // lineIntersectsSurfaces [begPosASL, endPosASL, ignoreObj1, ignoreObj2, sortMode, maxResults, LOD1, LOD2, returnUnique] - _surfacesAbove = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) + 100],_u,_u,true,10]; - { - if ((_x select 2) isKindOf "House" && !(_x isEqualTo _u)) exitWith {_building = (_x select 2)}; - } forEach _surfacesAbove; - if (_building isEqualTo objNull) then - { - _surfacesBelow = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) - 10],_u,_u,true,100]; - { - if ((_x select 2) isKindOf "House" && !(_x isEqualTo _u)) exitWith {_building = (_x select 2)}; - } forEach _surfacesBelow; - }; - //diag_log format["_fn_buildingContainer: _u = %1 | _building = %2",_u,_building]; - _building -}; - -_fn_isInfantry = { // returns true if a unit is on foot otherwise returns false. - ////////////////////// - // Determine if a unit isinfantry rather than a unit manning a turret or vehicle - ////////////////////// - _u = _this select 0; - private _isInfantry = if ((_u isKindOf "Man") && (vehicle _u) isEqualTo _u) then {true} else {false}; - //diag_log format["_fn_isInfantry: _isInfantry = %1",_isInfantry]; - _isInfantry -}; - -diag_log "========== =========================="; -_msg = "starting script, please wait"; -systemChat _msg; -hint _msg; -/////////////////// -// Identify any buildings in which a garrison should be spawned using the Arma building positions. -// Tell the script which buildings to garrison by placing an object inside that designates them as such. -// I use a large yellow sphere for this purpose. -// The function below assembles a list of such buildings for use in defining the data for mission buildings. -/////////////////// - -private _cb = ""; - - -/////////////////// -// Change values of these constants to suit your needs -/////////////////// -#define aiDifficulty "Red" -#define minAI 3 -#define maxAI 6 -#define patrolRadius 45 -#define AI_respawnTime 600 -#define AI_timesToRespawn -1 -#define aiVehiclePatrolRadius 75 -#define vehiclePatrolRespawnTime 600 -#define vehiclePatrolTimesToRespawn -1 -#define staticWeaponRespawnTime 600 -#define staticWeaponTimesToRespawn -1 -#define aiAircraftPatrolRespawnTime 600 -#define aiAircraftPatrolRadius 1700 -#define aircraftPatrolTimesToRespawn -1 -#define oddsOfGarrison 0.67 -#define maxGarrisonStatics 3 -#define maxGarrisonUnits 4 -#define typesGarrisonStatics [] // When empty a static will be randomly chosen from the defaults for blckeagls -#define garrisionsTimesToRespawn -1 -#define garrisonMarkerObject "Sign_Sphere100cm_F" // This can be anything you like. I find this large sphere easy to see and convenient. -#define unitMarkerObject "Man" //"Sign_Arrow_Direction_Green_F" // This can be anything. I chose this arrow type because it allows you to easily indicate direction. - -//////////////////////// -// Begin pulling data here -/////////////////////// - -_cb = _cb + format["_garrisonedBuildings_BuildingPosnSystem = [",endl]; -private _garrisonedBuildings = []; -_helpers = allMissionObjects garrisonMarkerObject; -//diag_log format["_helpers = %1",_helpers]; -{ - if ( (typeOf _x) isEqualTo garrisonMarkerObject) then - { - private _isInside = [_x] call _fn_isInside; - if (_isInside) then - { - _building = [_x] call _fn_buildingContainer; - _garrisonedBuildings pushbackunique _building; - _garrisonedBuildings pushbackunique _x; - // data structure ["building Classname",[/*building pos*/],/*building dir*/,/*odds of garrison*/, /*Max Statics*/,/*types statics*/,/*max units*/], - // 1 2 3 4 5 6 7 8 9 10 11 12 13 - _line = format[' ["%1",%2,[%3,%4],[%5,%6],"%7",%8,%9,10,%11,%12,%13]',typeOf _building,getPosASL _building,vectorDir _building, vectorUp _building, 'true','true',aiDifficulty,oddsOfGarrison,maxGarrisonStatics,typesGarrisonStatics,maxGarrisonUnits,AI_respawnTime,garrisionsTimesToRespawn]; - systemChat _line; - //diag_log _line; - if (_forEachIndex == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; - }; -} forEach _helpers; -_cb = _cb + format["%1];%1%1",endl]; -//diag_log format["line (165): _cb = %1",_cb]; -_configuredStatics = []; -_configuredUnits = []; - -_fn_configureGarrisonForBuildingASL = { - private["_b","_staticsInBuilding","_unitsInBuilding","_staticsText","_unitsText","_buildingGarrisonASL","_staticsInBuilding","_unitsInBuilding","_count"]; - _b = _this select 0; - _count = 0; - if (_b in _garrisonedBuildings) exitWith {""}; - _staticsText = ""; - _unitsText = ""; - _buildingGarrisonASL = ""; - _staticsInBuilding = nearestObjects[getPosASL _building,["StaticWeapon"],sizeOf (typeOf _building)]; - { - if !(_x in _configuredStatics) then - { - _isInside = [_x] call _fn_isInside; - if (_isInside) then {_building = [_x] call _fn_buildingContainer}; - if (_b isEqualTo _building) then - { - _configuredStatics pushBackUnique _x; - - if (_staticsText isEqualTo "") then - { - _staticsText = format['["%1",%2,%3]',typeOf _x,(getPosASL _x) vectorDiff (getPosASL _b),getDir _x]; - } else { - _staticsText = _staticsText + format[',["%1",%2,%3]',typeOf _x,(getPosASL _x) vectorDiff (getPosASL _b),getDir _x]; - }; - }; - }; - } forEach _staticsInBuilding; - _unitsInBuilding = nearestObjects[getPosASL _building,[unitMarkerObject],sizeOf (typeOf _building)]; - - { - if !(_x in _configuredUnits) then - { - _isInside = [_x] call _fn_isInside; - if (_isInside) then {_building = [_x] call _fn_buildingContainer}; - if (_b isEqualTo _building) then - { - _configuredUnits pushBackUnique _x; - - if (_unitsText isEqualTo "") then - { - _unitsText = format["[%1,%2]",(getPosASL _x) vectorDiff (getPosASL _b),getDir _x]; - } else { - _unitsText = _unitsText + format[",[%1,%2]",(getPosASL _x) vectorDiff (getPosASL _b),getDir _x]; - }; - _count = _count + 1; - }; - }; - } forEach _unitsInBuilding; - if ( !(_staticsText isEqualTo "") || !(_unitsText isEqualTo "")) then - { // 1 2 3 4 5 6 7 8 9 10 11 - _buildingGarrisonASL = format[' ["%1",%2,[%3,%4],[%5,%6],"%7",[%8],[%9],%10,%11]',typeOf _b,getPosASL _b,vectorDir _b,vectorUp _b,'true','true',aiDifficulty,_staticsText,_unitsText,AI_respawnTime,garrisionsTimesToRespawn]; - _garrisonedBuildings pushBackUnique _b; - }; - _buildingGarrisonASL -}; - -private _count = 0; -private _buildingCount = 0; -_cb = _cb + "_garrisonedBuilding_ASLsystem = ["; -{ - private _isInside = [_x] call _fn_isInside; - if (_isInside) then - { - private _building = [_x] call _fn_buildingContainer; - private _include = if ( !(_building in _garrisonedBuildings) && !((typeOf _building) isEqualTo unitMarkerObject) && !((typeOf _building) isEqualTo garrisonMarkerObject)) then {true} else {false}; - if (_include) then - { - //diag_log format["building info for garrisonedBuilding_ATL: _x = %1 | _building = %1",_x,_building]; - private _buildingGarrisonInformation = [_building] call _fn_configureGarrisonForBuildingASL; - //diag_log format["_buildingGarrisonInformation(ATL) = %1",_buildingGarrisonInformation]; - //diag_log format["_buildingGarrisonInformation(ATL) = %1",_buildingGarrisonInformation]; - //diag_log format["typeName _buildingGarrisonInformation(ATL) = %1",typeName _buildingGarrisonInformation]; - //if (typeName _buildingGarrisonInformation isEqualTo "STRING") then - //{ - //diag_log format["length _buildingGarrisonInformation(ATL) = %1",count (toArray(_buildingGarrisonInformation))]; - //}; - private _strLength = count(toArray(_buildingGarrisonInformation)); - if (_strLength > 0) then - { - if (_count == 0) then - { - _cb = _cb + format["%1%2",endl,_buildingGarrisonInformation]; - } else { - _cb = _cb + format[",%1%2",endl,_buildingGarrisonInformation]; - }; - - _count = _count + 1; - }; - }; - }; - -} forEach ((allMissionObjects "StaticWeapon") + (allMissionObjects unitMarkerObject)); -_cb = _cb + format["%1];%1%1",endl]; -diag_log format["line (227): _cb = %1",_cb]; -uiSleep 1; -/////////////////// -// Configure info remaining mission landscape -/////////////////// -_land = allMissionObjects "Static"; - -_count = 0; -_cb = _cb + format["_missionLandscape = [",endl]; -{ - diag_log format["evaluating mission landscape: _x = %1 | typeOf _x = %1",_x, typeOf _x]; - //diag_log format["evaluating mission landscape: _x %1 | typeOf _x %1",_x, _x isKindOf "Helper_Base_F"]; - if !(_x in _garrisonedBuildings && !((typeOf _x) isEqualTo unitMarkerObject) && !((typeOf _x) isEqualTo garrisonMarkerObject)) then - { - _line = format[' ["%1",%2,[%3,%4],[%5,%6]]',typeOf _x,getPosASL _x,vectorDir _x, vectorUp _x, 'true','true']; - - systemChat _line; - if (_count == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - _count = _count + 1; - }; -}forEach allMissionObjects "Static"; -_cb = _cb + format["%1];%1%1",endl]; -diag_log format["line (276): _cb = %1",_cb]; - -/////////////////// -// Setup information for any remaining infantry groups -/////////////////// -_count = 0; -_cb = _cb + format["_aiGroupParameters = ["]; -{ - //[[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]; - if (_isInfantry) then - { - if (!(surfaceIsWater (getPos _x)) && !(_isInside) && !(isPlayer _x) && !(_x in _configuredUnits)) then - { // 1 2 3 4 5 6 7 - _line = format[' [%1,"%2",[%3,%4],%5,%6,%7]',getPosASL _x,aiDifficulty,minAI,maxAI,patrolRadius,AI_respawnTime,AI_timesToRespawn]; - systemChat _line; - if (_count == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - _count = _count + 1; - }; - }; -}forEach allMissionObjects "Man"; -_cb = _cb + format["%1];%1%1",endl]; -diag_log format["line (303): _cb = %1",_cb]; - -_count = 0; -_cb = _cb+ format["_aiScubaGroupParameters = ["]; -{ - //[[22920.4,16887.3,3.19144],"red",[1,2], 75,120], - if (surfaceIsWater (getPos _x)) then - { // 1 2 3 4 5 6 7 - _line = format[' [%1,"%2",[%3,%4],%5,%6,%7]',getPosASL _x,aiDifficulty,minAI,maxAI,patrolRadius,AI_respawnTime,AI_timesToRespawn]; - systemChat _line; - if (_count == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - _count = _count + 1; - }; -}forEach allMissionObjects "Man"; -_cb = _cb + format["%1];%1%1",endl]; -diag_log format["line (321)): _cb = %1",_cb]; - -/////////////////// -// Setup Info for vehicle patrols -/////////////////// -_cb = _cb + format["_vehiclePatrolParameters = ["]; -{ - if !((typeOf _x) isKindOf "SDV_01_base_F") then - { - _line = format[' ["%1",%2,"%3",%4,%5,%6]',typeOf _x, getPosASL _x, aiDifficulty,aiVehiclePatrolRadius,vehiclePatrolRespawnTime,vehiclePatrolTimesToRespawn]; //["B_G_Offroad_01_armed_F",[22809.5,16699.2,0],"blue",600,10] - systemChat _line; - if (_forEachIndex == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; -}forEach ((allMissionObjects "Car") + (allMissionObjects "Tank") + allMissionObjects "Ship"); -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Configs for Air Patrols -/////////////////// -_cb = _cb + "_airPatrols = ["; - //[selectRandom _aircraftTypes,[22830.2,16618.1,11.4549],"blue",1000,60] -{ - _line = format[' ["%1",%2,"%3",%4,%5,%6]',typeOf _x, getPosASL _x, aiDifficulty,aiAircraftPatrolRadius,aiAircraftPatrolRespawnTime,aircraftPatrolTimesToRespawn]; - systemChat _line; - if (_forEachIndex == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; -}forEach allMissionObjects "Air"; -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Setup info for static/emplaced weapons -/////////////////// -_count = 0; -_cb = _cb + format["_missionEmplacedWeapons = ["]; -{ - if !(_x in _configuredStatics) then - { - // ["B_HMG_01_high_F",[22883.5,16757.6,6.31652],"blue",0,10] - // 1 2 3 4 5 6 - _line = format[' ["%1",%2,"%3",%4,%5,%6]',typeOf _x,getPosASL _x,aiDifficulty,0,staticWeaponRespawnTime,staticWeaponTimesToRespawn]; - systemChat _line; - if (_count == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - _count = _count + 1; - }; -}forEach allMissionObjects "StaticWeapon"; -_cb = _cb + format["%1];%1%1",endl]; - -_cb = _cb + "_submarinePatrolParameters = ["; -{ - if ((typeOf _x) isKindOf "SDV_01_base_F") then - { // 1 2 3 4 5 6 - _line = format[' ["%1",%2,"%3",%4,%5,%6]',typeOf _x, getPosASL _x, aiDifficulty,aiSubmarinePatrolRadius,vehicleSubmarineRespawnTime,vehiclePatrolTimesToRespawn]; //["B_G_Offroad_01_armed_F",[22809.5,16699.2,0],"blue",600,10] - systemChat _line; - if (_forEachIndex == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; -}forEach allMissionObjects "Ship"; -_cb = _cb + format["%1];%1%1",endl]; - -_cb = _cb + "_missionLootBoxes = ["; -{ - // [selectRandom blck_crateTypes,[22904.8,16742.5,6.30195],[[0,1,0],[0,0,1]],[true,false], _crateLoot, _lootCounts] - _line = format[' ["%1",%2,%3,[true,false],_crateLoot,_lootCounts]',typeOf _x,getPosASL _x,[VectorDir _x, VectorUp _x]]; - systemChat _line; - if (_forEachIndex == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; -}forEach (allMissionObjects "ReammoBox") + (allMissionObjects "ReammoBox_F"); -_cb = _cb + format["%1];%1%1",endl]; - - -/////////////////// -// All done, notify the user and copy the output to the clipboard -/////////////////// -_msg = "All Objects organzied, formated and copied to the Clipboard"; -hint _msg; -systemChat _msg; -systemChat format["_cb has %1 characters",count _cb]; -copyToClipboard _cb; -//if (true) exitWith{diag_log _cb}; \ No newline at end of file diff --git a/Tools/Static Missions/pullStaticMissionInfo.Altis/template.sqf b/Tools/Static Missions/pullStaticMissionInfo.Altis/template.sqf deleted file mode 100644 index d719e41..0000000 --- a/Tools/Static Missions/pullStaticMissionInfo.Altis/template.sqf +++ /dev/null @@ -1,97 +0,0 @@ - - -/* - This is a simple mission using precisely placed loot crates and infantry, static weapons and vehicle patrols. - See the accompanying example mission in the exampleMission folder to get an idea how I laid this out. - Note that I exported the mission using the exportAll function of M3EDEN editor. -*/ - -#include "privateVars.sqf"; - -_mission = "static mission template"; // Included for additional documentation. Not intended to be spawned as a mission per se. - -_difficulty = "red"; // Skill level of AI (blue, red, green etc) -diag_log format["[blckeagls static missions] STARTED initializing middions %1 position at %2 difficulty %3",_mission,_missionCenter,_difficulty]; -_crateLoot = blck_BoxLoot_Orange; // You can use a customized _crateLoot configuration by defining an array here. It must follow the following format shown for a hypothetical loot array called _customLootArray - /* - _customLootArray = - // Loot is grouped as [weapons],[magazines],[items] in order to be able to use the correct function to load the item into the crate later on. - // Each item consist of the following information ["ItemName",minNum, maxNum] where min is the smallest number added and min+max is the largest number added. - - [ - [// Weapons - - ["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"] - ], - [//Magazines - ["10Rnd_93x64_DMR_05_Mag" ,1,5] - ], - [ // Optics - ["optic_KHS_tan",1,3] - ], - [// Materials and supplies - ["Exile_Item_MetalScrews",3,10] - // - ], - [//Items - ["Exile_Item_MountainDupe",1,3] - ], - [ // Backpacks - ["B_OutdoorPack_tan",1,2] - ] - ]; - */ - -_lootCounts = blck_lootCountsRed; // You can use a customized set of loot counts or one that is predefined but it must follow the following format: - // values are: number of things from the weapons, magazines, optics, materials(cinder etc), items (food etc) and backpacks arrays to add, respectively. - // blck_lootCountsOrange = [[6,8],[24,32],[5,10],[25,35],16,1]; // Orange - -/**************************************************** - - PLACE MARKER DEFINITIONS PULLED FROM YOUR MISSION BELOW - -*****************************************************/ - - - -/**************************************************** - - PLACE THE DATA DEFININING THE BUILDINGS, VEHICLES ETC. PULLED FROM YOUR MISSION BELOW - -*****************************************************/ - - - -/**************************************************** - - ENABLE ANY SETTINGS YOU LIKE FROM THE LIST BELOW. - iF THESE ARE NOT ENABLED THEN THE DEFAULTS DEFINED IN BLCK_CONFIG.SQF - AND THE MOD-SPECIFIC CONFIGURATIONS WILL BE USED. - -*****************************************************/ - -/* -_missionLandscapeMode = "precise"; // acceptable values are "random","precise" - // In precise mode objects will be spawned at the relative positions specified. - // In the random mode, objects will be randomly spawned within the mission area. - -_aircraftTypes = blck_patrolHelisRed; // You can use one of the pre-defined lists in blck_configs or your own custom array. -_noAirPatrols = blck_noPatrolHelisRed; // You can use one of the pre-defined values or a custom one. acceptable values are integers (1,2,3) or a range such as [2,4]; - // Note: this value is ignored if you specify air patrols in the array below. -// Change _useMines to true/false below to enable mission-specific settings. -_useMines = blck_useMines; // Set to false if you have vehicles patrolling nearby. -_uniforms = blck_SkinList; // You can replace this list with a custom list of uniforms if you like. -_headgear = blck_headgear; // You can replace this list with a custom list of headgear. -_vests = blck_vests; // You can replace this list with a custom list of vests. -_backpacks = blck_backpacks; // You can replace this list with a custom list of backpacks. -_weapons = blck_WeaponList_Orange; // You can replace this list with a customized list of weapons, or another predifined list from blck_configs_epoch or blck_configs_exile as appropriate. -_sideArms = blck_pistols; // You can replace this list with a custom list of sidearms. -*/ - - -//******************************************************** -// Do not modify anything below this line. -//******************************************************** -#include "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_initializeMission.sqf"; - -diag_log format["[blckeagls static missions] COMPLETED initializing middions %1 position at %2 difficulty %3",_mission,_missionCenter,_difficulty]; \ No newline at end of file From 5a29cb2d94538aff99d8c0c8318c605c055ecd11 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Sun, 16 Aug 2020 23:36:50 -0400 Subject: [PATCH 19/25] Bug fixes; more to come yet --- .../Core/fn_configureGarrisonATL.sqf | 14 +++--- .../addons/3EDEN_plugin/Export/Untitled-2.txt | 47 ++++++++++++------- .../3EDEN_plugin/Export/fn_exportDynamic.sqf | 24 +++++----- 3 files changed, 48 insertions(+), 37 deletions(-) diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisonATL.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisonATL.sqf index c561bd9..a114584 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisonATL.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisonATL.sqf @@ -24,7 +24,8 @@ private _lineBreak = toString [10]; if (_isInside && (_container isEqualTo _building)) then { _configuredStatics pushBackUnique _x; - _staticsText pushBack format['["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff (_pos),getDir _x]; + diag_log format["Building %1 | buildingPos %2 | _pos %3",typeOf _x, getPosATL _x,_pos]; + _staticsText pushBack [format['%1',typeOf _x],(getPosATL _x) vectorDiff (_pos),getDir _x]; }; }; } forEach _statics; @@ -40,7 +41,7 @@ private _units = nearestObjects[getPosATL _building,["Man"],sizeOf (typeOf _buil if (_isInside && (_container isEqualTo _building)) then { _configuredUnits pushBackUnique _x; - _unitsText pushBack format["[%1,%2]",(getPosATL _x) vectorDiff (_pos),getDir _x]; + _unitsText pushBack [(getPosATL _x) vectorDiff (_pos),getDir _x]; }; }; } forEach _units; @@ -50,12 +51,13 @@ _unitsText joinString _lineBreak; //diag_log format["_unitsText for building %1 = %2",_building,_unitsText]; if !((_staticsText isEqualTo []) && (_unitsText isEqualTo [])) then { - _buildingGarrisonATL = format[' ["%1",%2,%3,%4,%5,[%6],[%7]]', - typeOf _building, + _buildingGarrisonATL = [ + format["%1", + typeOf _building], (getPosATL _building) vectorDiff _pos, getDir _building, - 'true', - 'true', + true, + true, _staticsText, _unitsText ]; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-2.txt b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-2.txt index 30e92bb..796924f 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-2.txt +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/Untitled-2.txt @@ -1,5 +1,6 @@ + /* Dynamic Mission Generated Using 3DEN Plugin for blckeagls @@ -11,24 +12,30 @@ #include "\q\addons\custom_server\Missions\privateVars.sqf"; _defaultMissionLocations = []; -_markerType = [mil_box,[1,1],]; -_markerColor = ColorRed; +_markerType = ["mil_box",[1,1],""]; +_markerColor = "ColorRed"; _startMsg = "TODO: Change approiately"; -_endMsg = "TODO: Change Appropriately; +_endMsg = "TODO: Change Appropriately"; _markerMissionName = "Stay Away"; _crateLoot = blck_BoxLoot_Blue; _lootCounts = blck_lootCountsBlue; _garrisonedBuilding_ATLsystem = [ - ["Land_Unfinished_Building_01_F",[0,0,0],0,true,true,[["[""B_HMG_01_high_F"",[-2.19922,0.837891,3.61188],0]","[""B_static_AA_F"",[-2.34766,3.85352,6.80866],0]"]],[[]]] +["Land_Unfinished_Building_01_F",[0,0,0],0,true,true, + [["B_HMG_01_high_F",[-2.19922,0.837891,3.61188],0], + ["B_static_AA_F",[-2.34766,3.85352,6.80866],0]], + [ + [[0.96875,-1.99023,0.27216],0], + [[-3.74219,0.279297,0.136929],0]] + ], +["Land_Unfinished_Building_01_F",[0,0,0],0,true,true,[["B_HMG_01_F",[-1.87305,5.36523,3.86831],0]],[[[-2.46289,-1.18555,3.68233],0],[[-1.72656,3.4668,6.88683],0]]] ]; _missionLandscape = [ ["Land_u_Shed_Ind_F",[-29.123,-8.11914,-33.866],0,true,true], ["Land_Shed_08_brown_F",[-15.1465,25.9961,-33.871],0,true,true], ["Land_Shed_02_F",[26.5762,78.6641,-33.8547],0,true,true], - ["Land_Wreck_AFV_Wheeled_01_F",[-5.21289,-20.9434,-33.8297],0,true,true], - ["Land_Unfinished_Building_01_F",[50.0273,44.1172,-33.623],0,true,true] + ["Land_Wreck_AFV_Wheeled_01_F",[-5.21289,-20.9434,-33.8297],0,true,true] ]; _simpleObjects = [ @@ -42,7 +49,7 @@ _missionLootVehicles = [ _missionPatrolVehicles = [ ["B_Truck_01_mover_F",[24.084,13.5703,-33.8635],0,75,75], ["B_MRAP_01_hmg_F",[3.02539,16.2363,-33.8629],0,75,75], - ["B_HMG_01_F",[38.1777,44.25,-33.866],0,75,75], + ["B_HMG_01_F",[46.9961,45.3984,-29.9977],0,75,75], ["B_GMG_01_F",[-5.16211,-5.00586,-33.8644],0,75,75], ["B_Heli_Light_01_dynamicLoadout_F",[-6.61523,8.89844,-33.864],0,75,75], ["B_T_Boat_Transport_01_F",[18.582,44.1055,-33.8654],0,75,75], @@ -59,16 +66,20 @@ _airPatrols = [ ]; _missionEmplacedWeapons = [ - ["B_HMG_01_F",[38.1777,44.25,-33.866],0], + ["B_HMG_01_F",[46.9961,45.3984,-29.9977],0], ["B_GMG_01_F",[-5.16211,-5.00586,-33.8644],0], ["B_HMG_01_high_F",[30.6055,0.525391,-30.1961],0], ["B_static_AA_F",[30.457,3.54102,-26.9993],0] ]; _missionGroups = [ - ,[[30.0605,46.2383,-33.8646],3,6,"Blue",30,45], - ,[[5.66602,-8.33398,-33.8665],3,6,"Blue",30,45], - ,[[19.9512,-4.41797,-29.7975],3,6,"Blue",30,45] + [[30.0605,46.2383,-33.8646],3,6,"Blue",30,45], + [[5.66602,-8.33398,-33.8665],3,6,"Blue",30,45], + [[47.1426,43.5,-26.9792],3,6,"Blue",30,45], + [[46.4063,38.8477,-30.1837],3,6,"Blue",30,45], + [[19.9512,-4.41797,-29.7975],3,6,"Blue",30,45], + [[29.0625,-0.0332031,-33.6711],3,6,"Blue",30,45], + [[33.7734,-2.30273,-33.5358],3,6,"Blue",30,45] ]; _scubaGroupParameters = [ @@ -82,9 +93,9 @@ _missionLootBoxes = [ ["Box_IND_WpsLaunch_F",[10.1504,-2.12109,-33.8658],_crateLoot,_lootCounts,0] ]; - - - +/* + Use the parameters below to customize your mission - see the template or blck_configs.sqf for details about each them +*/ _chanceHeliPatrol = blck_chanceHeliPatrolBlue; _noChoppers = blck_noPatrolHelisBlue; _missionHelis = blck_patrolHelisBlue; @@ -101,16 +112,16 @@ _headgear = blck_headgear; _vests = blck_vests; _backpacks = blck_backpacks; _sideArms = blck_Pistols; -_spawnCratesTiming = atMissionSpawnGround -_loadCratesTiming = atMissionSpawn -_endCondition = allKilledOrPlayerNear; +_spawnCratesTiming = "atMissionSpawnGround"; +_loadCratesTiming = "atMissionSpawn"; +_endCondition = "allKilledOrPlayerNear"; _minNoAI = blck_MinAI_Blue; _maxNoAI = blck_MaxAI_Blue; _noAIGroups = blck_AIGrps_Blue; _noVehiclePatrols = blck_SpawnVeh_Blue; _noEmplacedWeapons = blck_SpawnEmplaced_Blue; _minNoAI = blck_MinAI_Blue; -_maxNoAI = blck_MaxAI_Blue +_maxNoAI = blck_MaxAI_Blue; _noAIGroups = blck_AIGrps_Blue; _noVehiclePatrols = blck_SpawnVeh_Blue; _noEmplacedWeapons = blck_SpawnEmplaced_Blue; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf index bd8709a..7725437 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf @@ -206,10 +206,8 @@ diag_log format["_lootVehicles = %1",_lootVehicles]; _missionPatrolVehicles = []; private _patrolVehicles = _objects select { - ((typeOf _x) isKindOf "AllVehicles") && - !((typeOf _x) isKindOf "Man") && + (((typeOf _x) isKindOf "Car") || ((typeOf _x) isKindOf "Tank") || ((typeOf _x) isKindOf "Ship")) && !((typeOf _x) isKindOf "SDV_01_base_F") && - !((typeOf _x) isEqualTo "Air") && !(_x in _lootVehicles) }; diag_log format["_patrolVehicles = %1",_patrolVehicles]; @@ -229,7 +227,7 @@ diag_log format["_subs = %1",_subs]; private _airPatrols = []; private _airVehicles = _objects select { - (typeOf _x) isKindOf "Air" + ((typeOf _x) isKindOf "Air") }; diag_log format["_airVehicles = %1",_airvehicles]; { @@ -254,12 +252,12 @@ private _infantry = _units select { diag_log format["_infantry = %1",_infantry]; _infantryGroups = []; { - _infantryGroups pushBack format[' ,[%1,%2,%3,"%4",%5,%6]',(getPosATL _x) vectorDiff CENTER,blck_minAI,blck_maxAI,blck_MissionDifficulty,minPatrolRadius,maxPatrolRadius]; + _infantryGroups pushBack format[' [%1,%2,%3,"%4",%5,%6]',(getPosATL _x) vectorDiff CENTER,blck_minAI,blck_maxAI,blck_MissionDifficulty,minPatrolRadius,maxPatrolRadius]; } forEach _units; private _scuba = _units select { (surfaceIsWater (getPos _x)) && - !(_x in _garisonedUnits) + !([_x] call blck3DEN_fnc_isInside) // checck _x get3EDENAtribute "name" != "garrison"; }; diag_log format["_scuba = %1",_scuba]; @@ -295,10 +293,10 @@ _lines pushBack '#include "\q\addons\custom_server\Configs\blck_defines.hpp";'; _lines pushBack '#include "\q\addons\custom_server\Missions\privateVars.sqf";'; _lines pushBack ""; _lines pushBack format["_defaultMissionLocations = %1;",_missionCoords]; -_lines pushBack format["_markerType = %1",format["[%1,%2,%3];",_markerType,_markerSize,_markerBrush]]; -_lines pushBack format["_markerColor = %1;",_markerColor]; +_lines pushBack format["_markerType = %1",format['["%1",%2,"%3"];',_markerType,_markerSize,_markerBrush]]; +_lines pushBack format['_markerColor = "%1";',_markerColor]; _lines pushBack format['_startMsg = "%1";',blck_dynamicStartMessage]; -_lines pushBack format['_endMsg = "%1;',blck_dynamicEndMessage]; +_lines pushBack format['_endMsg = "%1";',blck_dynamicEndMessage]; _lines pushBack format['_markerMissionName = "%1";',blck_dynamicmarkerMissionName]; _lines pushBack format['_crateLoot = blck_BoxLoot_%1;',blck_MissionDifficulty]; _lines pushBack format['_lootCounts = blck_lootCounts%1;',blck_MissionDifficulty]; @@ -367,16 +365,16 @@ _lines pushBack "_headgear = blck_headgear;"; _lines pushBack "_vests = blck_vests;"; _lines pushBack "_backpacks = blck_backpacks;"; _lines pushBack "_sideArms = blck_Pistols;"; -_lines pushBack format['_spawnCratesTiming = %1',blck_spawnCratesTiming]; -_lines pushBack format['_loadCratesTiming = %1',blck_loadCratesTiming]; -_lines pushBack format['_endCondition = %1;',blck_missionEndCondition]; +_lines pushBack format['_spawnCratesTiming = "%1";',blck_spawnCratesTiming]; +_lines pushBack format['_loadCratesTiming = "%1";',blck_loadCratesTiming]; +_lines pushBack format['_endCondition = "%1";',blck_missionEndCondition]; _lines pushBack format["_minNoAI = blck_MinAI_%1;",blck_MissionDifficulty]; _lines pushBack format["_maxNoAI = blck_MaxAI_%1;",blck_MissionDifficulty]; _lines pushBack format["_noAIGroups = blck_AIGrps_%1;",blck_MissionDifficulty]; _lines pushBack format["_noVehiclePatrols = blck_SpawnVeh_%1;",blck_MissionDifficulty]; _lines pushBack format["_noEmplacedWeapons = blck_SpawnEmplaced_%1;",blck_MissionDifficulty]; _lines pushBack format["_minNoAI = blck_MinAI_%1;",blck_MissionDifficulty]; -_lines pushBack format["_maxNoAI = blck_MaxAI_%1",blck_MissionDifficulty]; +_lines pushBack format["_maxNoAI = blck_MaxAI_%1;",blck_MissionDifficulty]; _lines pushBack format["_noAIGroups = blck_AIGrps_%1;",blck_MissionDifficulty]; _lines pushBack format["_noVehiclePatrols = blck_SpawnVeh_%1;",blck_MissionDifficulty]; _lines pushBack format["_noEmplacedWeapons = blck_SpawnEmplaced_%1;",blck_MissionDifficulty]; From 633e8101d0e201d14a94cabae9fe711fe1da7328 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Mon, 17 Aug 2020 23:04:40 -0400 Subject: [PATCH 20/25] bug fix, remove some logging --- .../3EDEN_plugin/Core/fn_buildingContainer.sqf | 4 ++-- .../Core/fn_configureGarrisonATL.sqf | 7 +++---- .../3EDEN_plugin/Export/fn_exportDynamic.sqf | 18 +++++++++++++----- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_buildingContainer.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_buildingContainer.sqf index 15839de..a61f190 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_buildingContainer.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_buildingContainer.sqf @@ -15,10 +15,10 @@ private _surfacesAbove = lineInterSectsSurfaces [_pos, [_pos select 0, _pos sele if (_building isEqualTo objNull) then { private _surfacesBelow = lineInterSectsSurfaces [_pos, [_pos select 0, _pos select 1, (_pos select 2) - 10],_u,_u,true,100]; - diag_log format["_surfacesBelow = %1",_surfacesBelow]; + //diag_log format["_surfacesBelow = %1",_surfacesBelow]; { if ((_x select 2) isKindOf _category && !(_x isEqualTo _u)) exitWith {_building = (_x select 2)}; } forEach _surfacesBelow; }; -diag_log format["_fn_buildingContainer: _u = %1 | _building = %2",_u,_building]; +//diag_log format["_fn_buildingContainer: _u = %1 | _building = %2",_u,_building]; _building \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisonATL.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisonATL.sqf index a114584..5410554 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisonATL.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisonATL.sqf @@ -9,7 +9,7 @@ private _garrisonedBuildings = missionNamespace getVariable["blck_garrisonedBuil private _count = 0; private _staticsText = []; private _unitsText = []; -private _buildingGarrisonATL = ""; +private _buildingGarrisonATL = []; private _configuredStatics = []; private _configuredUnits = []; private _statics = nearestObjects[getPosATL _building,["StaticWeapon"],sizeOf (typeOf _building)]; @@ -24,7 +24,7 @@ private _lineBreak = toString [10]; if (_isInside && (_container isEqualTo _building)) then { _configuredStatics pushBackUnique _x; - diag_log format["Building %1 | buildingPos %2 | _pos %3",typeOf _x, getPosATL _x,_pos]; + //diag_log format["Building %1 | buildingPos %2 | _pos %3",typeOf _x, getPosATL _x,_pos]; _staticsText pushBack [format['%1',typeOf _x],(getPosATL _x) vectorDiff (_pos),getDir _x]; }; }; @@ -62,6 +62,5 @@ if !((_staticsText isEqualTo []) && (_unitsText isEqualTo [])) then _unitsText ]; }; - //diag_log format["_buildingGarrisonATL = %1",_buildingGarrisonATL]; -_buildingGarrisonATL +[_buildingGarrisonATL,_configuredStatics,_configuredUnits] diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf index 7725437..37499e6 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf @@ -20,6 +20,7 @@ lootVehicleVariableName = getText(configFile >> "CfgBlck3DEN" >> "configs" >> " buildingPosGarrisonVariableName = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "buildingPosGarrisonVariableName"); buildingATLGarrisionVariableName = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "buildingATLGarrisionVariableName"); +/* { diag_log format["param %1 = %2",_forEachIndex,_x]; } forEach [ @@ -37,7 +38,7 @@ buildingATLGarrisionVariableName = getText(configFile >> "CfgBlck3DEN" >> "conf lootVehicleVariableName, buildingPosGarrisonVariableName, buildingATLGarrisionVariableName -]; +];*/ CENTER = [0,0,0]; @@ -167,13 +168,19 @@ private _landscape = _objects select{ private _garrisonATL = []; { _atl = [_x,CENTER] call blck3DEN_fnc_configureGarrisonATL; + // format["_fnc_exportDynamic: _building = %1 | _atl = %2",_x,_atl]; //diag_log format["_fnc_exportDynamic: typeName _atl = %1",typeName _atl]; if (typeName _atl isEqualTo "STRING") then {diag_log format["_fnc_exportDynamic: length _atl = %1 | _atl = '' is %2",count _atl, _atl isEqualTo ""]}; - if !(_atl isEqualTo "") then { - _garrisonATL pushBack _atl; - _garisonedBuildings pushBack _x; - //diag_log format["_fnc_exportDynamic: garrisoned building added: %1",_atl]; + if !(_atl isEqualTo []) then { + if !((_atl select 0) isEqualTo []) then + { + _garrisonATL pushBack (_atl select 0); + _garisonedBuildings pushBack _x; + _garisonedStatics append (_atl select 1); + _garisonedUnits append (_atl select 2) + //diag_log format["_fnc_exportDynamic: garrisoned building added: %1",_atl]; + }; }; } forEach _landscape; diag_log format["_garrisonATL = %1",_garrisonATL]; @@ -249,6 +256,7 @@ private _infantry = _units select { !(surfaceIsWater (getPos _x)) && !(_x in _garisonedUnits) }; +diag_log format["_garisonedUnits = %1",_garisonedUnits]; diag_log format["_infantry = %1",_infantry]; _infantryGroups = []; { From 416294e43100ab45a20271c9c3f825e7e7a12085 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Tue, 18 Aug 2020 01:44:56 -0400 Subject: [PATCH 21/25] Add support for garisoned by building pos --- @blckeagls_EDEN/addons/3EDEN_plugin.pbo | Bin 90498 -> 150282 bytes .../3EDEN_plugin/Export/fn_exportDynamic.sqf | 22 ++++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin.pbo b/@blckeagls_EDEN/addons/3EDEN_plugin.pbo index fc2767f47f8819b4ef2de82afd0c34da8c093d88..d382b00d305b42f54c65e07ac80a0f59f1ce3a12 100644 GIT binary patch delta 59895 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

i%~i=BtXy9Y8fG}#(1(~hq~ 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 EU+h60wg3PC diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf index 37499e6..806d835 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportDynamic.sqf @@ -4,6 +4,8 @@ Copyright 2020 */ +#define oddsOfGarrison 0.67 +#define maxGarrisonUnits 4 objectAtMissionCenter = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "objectAtMissionCenter"); blck_minAI = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "minAI"); @@ -12,6 +14,7 @@ minPatrolRadius = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "minPat maxPatrolRadius = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "maxPatrolRadius"); maxVehiclePatrolRadius = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "maxVehiclePatrolRadius"); aircraftPatrolRadius = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "aircraftPatrolRadius"); +garisonMarkerObject = "Sign_Sphere100cm_F"; oddsOfGarison = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "oddsOfGarison"); maxGarrisonStatics = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "maxGarrisonStatics"); typesGarrisonStatics = getArray(configFile >> "CfgBlck3DEN" >> "configs" >> "typesGarrisonStatics"); @@ -162,8 +165,19 @@ private _landscape = _objects select{ !(isSimpleObject _x) && ((typeOf _x) isKindOf "Static") }; - - +private _garisonedPos = []; +private _helpers = _objects select {((typeOf _x) isEqualTo garisonMarkerObject)}; +diag_log format["garisonMarkerObject = %1 | _helpers = %2",garisonMarkerObject,_helpers]; +{ + if ([_x] call blck3DEN_fnc_isInside) then + { + _building = [_x] call blck3DEN_fnc_buildingContainer; + _garisonedBuildings pushbackunique _building; + // data structure ["building Classname",[/*building pos*/],/*building dir*/,/*odds of garrison*/, /*Max Statics*/,/*types statics*/,/*max units*/], + // 1 2 3 4 5 6 7 8 9 + _garisonedPos pushBack format[' ["%1",%2,%3,%4,%5,%6,%7,%8,%9]',typeOf _building,(getPosATL _building) vectorDiff CENTER,getDir _building, 'true','true',oddsOfGarrison,maxGarrisonStatics,typesGarrisonStatics,maxGarrisonUnits]; + }; +} forEach _helpers; //diag_log format["CENTER = %1 | _landscape = %2",CENTER,_landscape]; private _garrisonATL = []; { @@ -309,6 +323,10 @@ _lines pushBack format['_markerMissionName = "%1";',blck_dynamicmarkerMissionNam _lines pushBack format['_crateLoot = blck_BoxLoot_%1;',blck_MissionDifficulty]; _lines pushBack format['_lootCounts = blck_lootCounts%1;',blck_MissionDifficulty]; _lines pushBack ""; +_lines pushBack "_garrisonedBuildings_BuildingPosnSystem = ["; +_lines pushBack (_garisonedPos joinString (format[",%1", _lineBreak])); +_lines pushBack "];"; +_lines pushBack ""; _lines pushBack "_garrisonedBuilding_ATLsystem = ["; _lines pushBack (_garrisonATL joinString (format[",%1", _lineBreak])); _lines pushBack "];"; From 338afb8fed60d490c4de226ac2664cd6a7160fa1 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Sat, 22 Aug 2020 07:59:47 -0400 Subject: [PATCH 22/25] Debuged script to export static missions. --- .../Missions/Static/missions/template.sqf | 174 ------------------ @blckeagls_EDEN/addons/3EDEN_plugin.pbo | Bin 150282 -> 126016 bytes .../3EDEN_plugin/Export/fn_exportStatic.sqf | 41 +++-- 3 files changed, 22 insertions(+), 193 deletions(-) delete mode 100644 @GMS/addons/custom_server/Missions/Static/missions/template.sqf diff --git a/@GMS/addons/custom_server/Missions/Static/missions/template.sqf b/@GMS/addons/custom_server/Missions/Static/missions/template.sqf deleted file mode 100644 index c9f0027..0000000 --- a/@GMS/addons/custom_server/Missions/Static/missions/template.sqf +++ /dev/null @@ -1,174 +0,0 @@ - - -/* - This is a simple mission using precisely placed loot crates and infantry, static weapons and vehicle patrols. - See the accompanying example mission in the exampleMission folder to get an idea how I laid this out. - Note that I exported the mission using the exportAll function of M3EDEN editor. -*/ - -#include "privateVars.sqf"; - -_mission = "static mission template"; // Included for additional documentation. Not intended to be spawned as a mission per se. - -_difficulty = "red"; // Skill level of AI (blue, red, green etc) - -_crateLoot = blck_BoxLoot_Orange; // You can use a customized _crateLoot configuration by defining an array here. It must follow the following format shown for a hypothetical loot array called _customLootArray - /* - _customLootArray = - // Loot is grouped as [weapons],[magazines],[items] in order to be able to use the correct function to load the item into the crate later on. - // Each item consist of the following information ["ItemName",minNum, maxNum] where min is the smallest number added and min+max is the largest number added. - - [ - [// Weapons - - ["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"] - ], - [//Magazines - ["10Rnd_93x64_DMR_05_Mag" ,1,5] - ], - [ // Optics - ["optic_KHS_tan",1,3] - ], - [// Materials and supplies - ["Exile_Item_MetalScrews",3,10] - // - ], - [//Items - ["Exile_Item_MountainDupe",1,3] - ], - [ // Backpacks - ["B_OutdoorPack_tan",1,2] - ] - ]; - */ - -_lootCounts = blck_lootCountsRed; // You can use a customized set of loot counts or one that is predefined but it must follow the following format: - // values are: number of things from the weapons, magazines, optics, materials(cinder etc), items (food etc) and backpacks arrays to add, respectively. - // blck_lootCountsOrange = [[6,8],[24,32],[5,10],[25,35],16,1]; // Orange - -/**************************************************** - - PLACE MARKER DEFINITIONS PULLED FROM YOUR MISSION BELOW - -*****************************************************/ - -_missionCenter = [2634.41,22127.7,0]; -_markerType = ["mil_box",[0,0]]; -_markerColor = "Default"; -_markerMissionName = "Bad News Bears"; -_markerLabel = ""; - -/**************************************************** - - PLACE THE DATA DEFININING THE BUILDINGS, VEHICLES ETC. PULLED FROM YOUR MISSION BELOW - -*****************************************************/ - -_garrisonedBuildings_BuildingPosnSystem = [ - ["Land_Cargo_Tower_V1_No5_F",[2631.25,22161.8,2.63358],[[0,1,0],[0,0,1]],[true,true],"Red",0.67,3,10,4,600,-1] -]; - -_garrisonedBuilding_ASLsystem = [ - ["Land_Cargo_Tower_V1_No7_F",[2596.24,22093.9,11.1251],[[-0.994659,0.103214,0],[0,0,1]],[true,true],"Red",[["B_HMG_01_high_F",[3.66943,-4.49414,13.1028],98.8724],["B_HMG_01_high_F",[3.71802,-3.34766,18.3248],103.27],["B_HMG_01_high_F",[-1.64502,-0.0644531,20.9188],301.323]],[[[-1.80713,-3.39844,8.5904],0],[[-1.89453,1.23047,4.64288],0],[[-0.999268,-0.117188,17.9661],0],[[0.122314,-2.62891,17.8909],0]],600,-1] -]; - -_missionLandscape = [ - ["Land_Razorwire_F",[2598.06,22077.2,6.61092],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], - ["Land_Razorwire_F",[2593.09,22069.8,5.63825],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], - ["Land_HBarrier_01_wall_6_green_F",[2603.93,22074.2,3.31451],[[-0.808148,0.353358,0.471206],[0.188556,-0.602713,0.77536]],[true,true]], - ["Land_Razorwire_F",[2608.05,22092.6,8.92718],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], - ["Land_Razorwire_F",[2603.25,22085.6,9.1608],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], - ["Land_HBarrier_01_wall_6_green_F",[2608.26,22080.8,5.0178],[[-0.697721,0.426652,0.575459],[0.530202,-0.232641,0.815331]],[true,true]], - ["Land_HBarrier_01_big_tower_green_F",[2592.15,22140.3,12.675],[[-0.929912,0.317024,0.186437],[0.194858,-0.0052352,0.980817]],[true,true]], - ["Land_HBarrier_01_wall_6_green_F",[2623.27,22105.6,6.0089],[[-0.787623,0.527981,0.317625],[0.289688,-0.137655,0.94717]],[true,true]], - ["Land_HBarrier_01_wall_6_green_F",[2612.98,22088,6.26459],[[-0.756164,0.472755,0.452459],[0.39451,-0.222304,0.891595]],[true,true]], - ["Land_HBarrier_01_wall_6_green_F",[2616.91,22095.1,6.58389],[[-0.768901,0.525395,0.364351],[0.356306,-0.121062,0.926493]],[true,true]], - ["Land_Razorwire_F",[2638.69,22136.7,3.22351],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], - ["Land_Razorwire_F",[2633.59,22130.4,4.14247],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], - ["Land_Razorwire_F",[2622.16,22119,7.20263],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], - ["Land_Razorwire_F",[2628.34,22125.8,5.64734],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], - ["Land_HBarrier_01_wall_corridor_green_F",[2638,22122.4,3.50001],[[-0.562069,0.827048,0.00837636],[0.0598924,0.0305983,0.997736]],[true,true]], - ["Land_HBarrier_01_big_tower_green_F",[2631.69,22115.2,4.81262],[[-0.816498,0.552055,0.169019],[0.211131,0.0130311,0.977371]],[true,true]], - ["Land_HBarrier_01_wall_6_green_F",[2627.84,22112.4,5.65952],[[-0.815257,0.559665,0.148765],[0.136056,-0.0645887,0.988593]],[true,true]], - ["Land_HBarrier_01_wall_6_green_F",[2633.06,22120.1,4.36103],[[-0.81511,0.577092,0.0506065],[0.137352,0.107655,0.984655]],[true,true]], - ["Sign_Sphere100cm_F",[2633.58,22161.5,20.3391],[[0,1,0],[0,0,1]],[true,true]], - ["Land_HBarrier_01_wall_6_green_F",[2642.79,22128,2.86908],[[-0.818151,0.573521,0.0412504],[0.107375,0.0819095,0.990839]],[true,true]], - ["Land_HBarrier_01_wall_6_green_F",[2647.64,22134.9,2.09253],[[-0.822645,0.568343,0.0155369],[0.0253224,0.00932551,0.999636]],[true,true]], - ["Land_Razorwire_F",[2652.06,22150.5,1.93652],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], - ["Land_Razorwire_F",[2642.87,22141.5,2.79323],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], - ["Land_Razorwire_F",[2647.34,22145.8,2.48597],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], - ["Land_Razorwire_F",[2656.23,22155.4,1.36567],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], - ["Land_HBarrier_01_wall_6_green_F",[2651.93,22142,1.89926],[[-0.822376,0.56825,0.0280985],[0.0359766,0.00265033,0.999349]],[true,true]], - ["Land_HBarrier_01_wall_6_green_F",[2656.98,22149,1.16155],[[-0.818034,0.570454,0.0735002],[0.108685,0.0278236,0.993687]],[true,true]] -]; - -_aiGroupParameters = [ - [[2558.96,22127.2,20.5699],"Red",[3,6],45,600,-1], - [[2590.38,22150.9,12.6152],"Red",[3,6],45,600,-1], - [[2581.74,22146.4,30.8829],"Red",[3,6],45,600,-1], - [[2644.55,22157.2,1.88187],"Red",[3,6],45,600,-1] -]; - -_aiScubaGroupParameters = [ -]; - -_vehiclePatrolParameters = [ - ["B_CTRG_LSV_01_light_F",[2609.08,22134.8,9.4568],"Red",75,600,-1], - ["B_G_Offroad_01_armed_F",[2665.47,22098.3,3.79465],"Red",75,600,-1], - ["B_Boat_Armed_01_minigun_F",[2638.39,22009,0],"Red",75,600,-1], - ["B_Boat_Armed_01_minigun_F",[2720.73,22177.5,0],"Red",75,600,-1] -]; - -_airPatrols = [ -]; - -_missionEmplacedWeapons = [ - ["B_HMG_01_high_F",[2593.12,22140.1,14.7976],"Red",0,600,-1], - ["B_HMG_01_high_F",[2632.61,22114.4,6.81314],"Red",0,600,-1], - ["B_HMG_01_high_F",[2656.01,22126.7,2.09379],"Red",0,600,-1] -]; - -_submarinePatrolParameters = [ -]; - -_missionLootBoxes = [ - ["O_CargoNet_01_ammo_F",[2589.45,22117.3,11.7155],[[0,0.999353,-0.0359766],[0.245575,0.0348749,0.96875]],[true,false],_crateLoot,_lootCounts], - ["O_CargoNet_01_ammo_F",[2596.74,22152.1,11.5449],[[0,0.998974,-0.0452868],[0.203641,0.0443379,0.978041]],[true,false],_crateLoot,_lootCounts] -]; - - - -/**************************************************** - - ENABLE ANY SETTINGS YOU LIKE FROM THE LIST BELOW. - iF THESE ARE NOT ENABLED THEN THE DEFAULTS DEFINED IN BLCK_CONFIG.SQF - AND THE MOD-SPECIFIC CONFIGURATIONS WILL BE USED. - -*****************************************************/ - -/* -_missionLandscapeMode = "precise"; // acceptable values are "random","precise" - // In precise mode objects will be spawned at the relative positions specified. - // In the random mode, objects will be randomly spawned within the mission area. - -_aircraftTypes = blck_patrolHelisRed; // You can use one of the pre-defined lists in blck_configs or your own custom array. -_noAirPatrols = blck_noPatrolHelisRed; // You can use one of the pre-defined values or a custom one. acceptable values are integers (1,2,3) or a range such as [2,4]; - // Note: this value is ignored if you specify air patrols in the array below. -// Change _useMines to true/false below to enable mission-specific settings. -_useMines = blck_useMines; // Set to false if you have vehicles patrolling nearby. -_uniforms = blck_SkinList; // You can replace this list with a custom list of uniforms if you like. -_headgear = blck_headgear; // You can replace this list with a custom list of headgear. -_vests = blck_vests; // You can replace this list with a custom list of vests. -_backpacks = blck_backpacks; // You can replace this list with a custom list of backpacks. -_weapons = blck_WeaponList_Orange; // You can replace this list with a customized list of weapons, or another predifined list from blck_configs_epoch or blck_configs_exile as appropriate. -_sideArms = blck_pistols; // You can replace this list with a custom list of sidearms. -*/ - - -//******************************************************** -// Do not modify anything below this line. -//******************************************************** - -#include "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_initializeMission.sqf"; - -diag_log format["[blckeagls static missions] COMPLETED initializing middions %1 position at %2 difficulty %3",_mission,_missionCenter,_difficulty]; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin.pbo b/@blckeagls_EDEN/addons/3EDEN_plugin.pbo index d382b00d305b42f54c65e07ac80a0f59f1ce3a12..af5f33346a345477de1aede83333aa410eca6d6e 100644 GIT binary patch delta 502 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 diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportStatic.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportStatic.sqf index 86afff4..ca3dab0 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportStatic.sqf +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/fn_exportStatic.sqf @@ -15,7 +15,7 @@ aircraftPatrolRadius = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "a oddsOfGarison = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "oddsOfGarison"); maxGarrisonStatics = getNumber(configFile >> "CfgBlck3DEN" >> "configs" >> "maxGarrisonStatics"); typesGarrisonStatics = getArray(configFile >> "CfgBlck3DEN" >> "configs" >> "typesGarrisonStatics"); -blck_MissionDifficulty = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "defaultMissionDifficulty"); +blck_MissionDifficulty = missionNamespace getVariable["blck_difficulty",getText(configFile >> "CfgBlck3DEN" >> "configs" >> "defaultMissionDifficulty")]; lootVehicleVariableName = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "lootVehicleVariableName"); buildingPosGarrisonVariableName = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "buildingPosGarrisonVariableName"); buildingATLGarrisionVariableName = getText(configFile >> "CfgBlck3DEN" >> "configs" >> "buildingATLGarrisionVariableName"); @@ -55,10 +55,7 @@ if (isNil "blck_dynamicCrateLoot") then if (isNil "blck_dynamicCrateLootCounts") then { blck_dynamicCrateLootCounts = format["_lootCounts = blck_lootCounts%1;",blck_MissionDifficulty]; }; -if (isNil "blck_dynamicmarkerMissionName") then -{ - blck_dynamicmarkerMissionName = "TODO: Update appropriately"; -}; + /* Look for an object defined in CfgBlck3DEN \ configs \ that marks the center of the mission @@ -84,7 +81,7 @@ private _units = []; } forEach (units _x); } forEach _groups; -private["_m1","_markerPos","_markerType","_markerShape","_markerColor","_markerText","_markerBrush","_markerSize","_markerAlpha"]; +private["_m1","_markerPos","_markerType","_markerShape","_markerColor","_markerText","_markerBrush","_markerSize","_markerAlpha","_missionCenter"]; /* pull info on the first marker found */ @@ -106,10 +103,10 @@ if !(_markers isEqualTo []) then */ } else { _markerType = "mil_square"; - _markerShape = "null"; - _markerSize = "[0,0]"; + _markerShape = ""; + _markerSize = [0,0]; _markerColor = "COLORRED"; - _markerBrush = "null"; + _markerBrush = ""; diag_log format[" No marker was found, using default values and position for mission center position"]; }; diag_log format["_m1 = %1 | _type = %2 | _shape = %3 | _size = %4 | _color = %5 | _brush = %6 | _text = %7",_m1,_markerType,_markerShape,_markerSize,_markerColor,_markerBrush,_markerText]; @@ -120,13 +117,14 @@ private _garisonedUnits = []; private _landscape = _objects select{ !(isSimpleObject _x) && - ((typeOf _x) isKindOf "Static") + ((typeOf _x) isKindOf "Static") && + !((typeOf _x) isKindOf "Helper") }; diag_log format["CENTER = %1 | _landscape = %2","ignored",_landscape]; private _missionLandscape = []; { - _missionLandscape pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x),[vectorDir _x,vectorUp _x], 'true','true']; + _missionLandscape pushBack format[' ["%1",%2,%3,%4]',typeOf _x,(getPosATL _x),[vectorDir _x,vectorUp _x], [true,true]]; }forEach _landscape; private _simpleObjects = _objects select {isSimpleObject _x}; @@ -144,15 +142,13 @@ private _lootVehicles = _objects select { }; diag_log format["_lootVehicles = %1",_lootVehicles]; { - _missionLootVehicles pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x), '_crateLoot','_lootCounts',[vectorDir _x,vectorUp _x]]; + _missionLootVehicles pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x), [vectorDir _x,vectorUp _x],'_crateLoot','_lootCounts']; } forEach _lootVehicles; _missionPatrolVehicles = []; private _patrolVehicles = _objects select { - ((typeOf _x) isKindOf "AllVehicles") && - !((typeOf _x) isKindOf "Man") && + (((typeOf _x) isKindOf "Car") || ((typeOf _x) isKindOf "Tank") || ((typeOf _x) isKindOf "Ship")) && !((typeOf _x) isKindOf "SDV_01_base_F") && - !((typeOf _x) isEqualTo "Air") && !(_x in _lootVehicles) }; diag_log format["_patrolVehicles = %1",_patrolVehicles]; @@ -197,7 +193,7 @@ private _infantry = _units select { diag_log format["_infantry = %1",_infantry]; _infantryGroups = []; { - _infantryGroups pushBack format[' ,[%1,%2,%3,"%4",%5,%6]',(getPosATL _x),blck_minAI,blck_maxAI,blck_MissionDifficulty,maxPatrolRadius,600,-1]; + _infantryGroups pushBack format[' [%1,%2,%3,"%4",%5,%6]',(getPosATL _x),blck_minAI,blck_maxAI,blck_MissionDifficulty,maxPatrolRadius,600,-1]; } forEach _units; private _scuba = _units select { @@ -217,7 +213,7 @@ private _ammoBoxes = _objects select { }; diag_log format["_ammoBoxes = %1",_ammoboxes]; { - _lootContainers pushBack format[' ["%1",%2,%3,%4,%5]',typeOf _x,(getPosATL _x), '_crateLoot','_lootCounts',[vectorDir _x,vectorUp _x]]; + _lootContainers pushBack format[' ["%1",%2,%3,%4,%5,%6]',typeOf _x,(getPosATL _x), [vectorDir _x,vectorUp _x],[true,true],'_crateLoot','_lootCounts']; }forEach _ammoBoxes; private _lines = []; @@ -233,8 +229,15 @@ _lines pushBack ""; _lines pushBack '#include "\q\addons\custom_server\Configs\blck_defines.hpp";'; _lines pushBack '#include "privateVars.sqf";'; _lines pushBack ""; -_lines pushBack format["_markerType = %1",format["[%1,%2,%3];",_markerType,_markerSize,_markerBrush]]; -_lines pushBack format["_markerColor = %1;",_markerColor]; +_lines pushBack format["_missionCenter = %1;",_markerPos]; + +if !(_markerBrush isEqualTo "") then +{ + _lines pushBack format["_markerType = %1",format['["%1",%2,%3];',_markerType,_markerSize,_markerBrush]]; +} else { + _lines pushBack format["_markerType = %1",format['"%1",%2',_markerType,_markerSize]]; +}; +_lines pushBack format['_markerColor = "%1";',_markerColor]; _lines pushBack format['_markerMissionName = "%1";',blck_dynamicmarkerMissionName]; _lines pushBack format['_crateLoot = blck_BoxLoot_%1;',blck_MissionDifficulty]; _lines pushBack format['_lootCounts = blck_lootCounts%1;',blck_MissionDifficulty]; From 730eeb47dcfde35a12d1a577417653b8e20fe9c2 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Sat, 29 Aug 2020 14:34:02 -0400 Subject: [PATCH 23/25] Build 218 Cod and new missions Missions provided by Thomas-TKO --- .../Functions/GMS_fnc_addMoneyToObject.sqf | 26 +- .../GMS_fnc_createMissionMarkers.sqf | 31 +-- .../Functions/GMS_fnc_findSafePosn.sqf | 4 +- .../Compiles/Functions/GMS_fnc_mainThread.sqf | 18 +- .../Missions/GMS_fnc_addMIssionToQue.sqf | 6 + .../Compiles/Missions/GMS_fnc_endMission.sqf | 19 +- .../GMS_fnc_garrisonBuilding_relPosSystem.sqf | 14 +- .../Missions/GMS_fnc_initializeMission.sqf | 17 +- .../Missions/GMS_fnc_loadMissionCrate.sqf | 1 - .../Missions/GMS_fnc_missionSpawner.sqf | 21 +- .../GMS_fnc_monitorInitializedMissions.sqf | 28 ++- .../Missions/GMS_fnc_sm_initializeMission.sqf | 27 +- .../GMS_fnc_sm_initializeUMSStaticMission.sqf | 2 +- .../GMS_fnc_sm_spawnLootContainers.sqf | 14 +- .../Missions/GMS_fnc_spawnBaseObjects.sqf | 2 +- .../Compiles/Missions/GMS_fnc_spawnCrate.sqf | 2 +- .../GMS_fnc_spawnEmplacedWeaponArray.sqf | 2 +- ...fnc_spawnGarrisonInsideBuilding_relPos.sqf | 3 +- .../Missions/GMS_fnc_spawnMissionCrates.sqf | 4 +- .../GMS_fnc_spawnMissionLootVehicles.sqf | 10 +- .../Missions/GMS_fnc_spawnPendingMissions.sqf | 18 +- .../Compiles/Units/GMS_fnc_spawnUnit.sqf | 2 +- .../custom_server/Compiles/blck_functions.sqf | 3 +- .../custom_server/Compiles/blck_variables.sqf | 4 + .../custom_server/Configs/blck_configs.sqf | 18 +- .../Configs/blck_configs_default.sqf | 53 ++-- .../Configs/blck_configs_default_mil.sqf | 2 +- .../Configs/blck_configs_epoch.sqf | 4 +- .../Configs/blck_configs_epoch_mil.sqf | 2 +- .../Configs/blck_configs_exile.sqf | 6 +- .../Configs/blck_configs_exile_mil.sqf | 2 +- .../Configs/blck_configs_mil.sqf | 32 +-- .../custom_server/Missions/Blue/IDAP.sqf | 143 +++++++++++ .../Missions/Blue/Service_point.sqf | 162 ++++++++++++ .../custom_server/Missions/Blue/Toxin.sqf | 166 +++++++++++++ .../custom_server/Missions/Blue/derbunker.sqf | 116 +++++++++ .../Missions/Blue/forgotten_HQ.sqf | 208 ++++++++++++++++ .../custom_server/Missions/Blue/garrison.sqf | 2 +- .../Missions/Blue/inhaftierung.sqf | 180 ++++++++++++++ .../Missions/Green/Camp_Moreell.sqf | 156 ++++++++++++ .../Missions/Green/Operations_Command.sqf | 184 ++++++++++++++ .../Missions/Green/charlston.sqf | 24 +- .../custom_server/Missions/Green/dashq.sqf | 230 +++++++++++++++++ .../Missions/Green/derbunker.sqf | 120 +++++++++ .../custom_server/Missions/Green/factory.sqf | 99 ++++---- .../Missions/Green/fortification.sqf | 21 +- .../custom_server/Missions/Green/lager.sqf | 185 ++++++++++++++ .../Missions/Green/munitionsResearch.sqf | 51 ++-- .../custom_server/Missions/Green/tko_camp.sqf | 174 +++++++++++++ .../Missions/Orange/Ammunition_depot.sqf | 173 +++++++++++++ .../Missions/Orange/Camp_Moreell.sqf | 156 ++++++++++++ .../Missions/Orange/Operations_Command.sqf | 184 ++++++++++++++ .../custom_server/Missions/Orange/Outpost.sqf | 154 ++++++++++++ .../custom_server/Missions/Orange/bunker.sqf | 82 +++---- .../custom_server/Missions/Orange/dashq.sqf | 39 +-- .../Missions/Orange/derbunker.sqf | 120 +++++++++ .../custom_server/Missions/Orange/lager.sqf | 185 ++++++++++++++ .../Missions/Orange/tko_camp.sqf | 37 +-- .../Missions/Red/Ammunition_depot.sqf | 173 +++++++++++++ .../Missions/Red/Camp_Moreell.sqf | 156 ++++++++++++ .../Missions/Red/Operations_Command.sqf | 184 ++++++++++++++ .../custom_server/Missions/Red/Outpost.sqf | 154 ++++++++++++ .../custom_server/Missions/Red/carThieves.sqf | 4 +- .../custom_server/Missions/Red/dashq.sqf | 231 ++++++++++++++++++ .../custom_server/Missions/Red/derbunker.sqf | 120 +++++++++ .../custom_server/Missions/Red/factory.sqf | 148 +++++++++++ .../Missions/Red/junkyardWilly.sqf | 59 +++++ .../custom_server/Missions/Red/lager.sqf | 185 ++++++++++++++ .../custom_server/Missions/Red/tko_camp.sqf | 174 +++++++++++++ .../Code/GMS_fnc_sm_initializeMission.sqf | 8 +- .../Static/GMS_StaticMissions_init.sqf | 6 +- .../Missions/Static/missions/privateVars.sqf | 10 +- .../Missions/Static/missions/template.sqf | 174 +++++++++++++ .../custom_server/init/blck_init_server.sqf | 6 +- @GMS/addons/custom_server/init/build.sqf | 4 +- 75 files changed, 5140 insertions(+), 404 deletions(-) create mode 100644 @GMS/addons/custom_server/Missions/Blue/IDAP.sqf create mode 100644 @GMS/addons/custom_server/Missions/Blue/Service_point.sqf create mode 100644 @GMS/addons/custom_server/Missions/Blue/Toxin.sqf create mode 100644 @GMS/addons/custom_server/Missions/Blue/derbunker.sqf create mode 100644 @GMS/addons/custom_server/Missions/Blue/forgotten_HQ.sqf create mode 100644 @GMS/addons/custom_server/Missions/Blue/inhaftierung.sqf create mode 100644 @GMS/addons/custom_server/Missions/Green/Camp_Moreell.sqf create mode 100644 @GMS/addons/custom_server/Missions/Green/Operations_Command.sqf create mode 100644 @GMS/addons/custom_server/Missions/Green/dashq.sqf create mode 100644 @GMS/addons/custom_server/Missions/Green/derbunker.sqf create mode 100644 @GMS/addons/custom_server/Missions/Green/lager.sqf create mode 100644 @GMS/addons/custom_server/Missions/Green/tko_camp.sqf create mode 100644 @GMS/addons/custom_server/Missions/Orange/Ammunition_depot.sqf create mode 100644 @GMS/addons/custom_server/Missions/Orange/Camp_Moreell.sqf create mode 100644 @GMS/addons/custom_server/Missions/Orange/Operations_Command.sqf create mode 100644 @GMS/addons/custom_server/Missions/Orange/Outpost.sqf create mode 100644 @GMS/addons/custom_server/Missions/Orange/derbunker.sqf create mode 100644 @GMS/addons/custom_server/Missions/Orange/lager.sqf create mode 100644 @GMS/addons/custom_server/Missions/Red/Ammunition_depot.sqf create mode 100644 @GMS/addons/custom_server/Missions/Red/Camp_Moreell.sqf create mode 100644 @GMS/addons/custom_server/Missions/Red/Operations_Command.sqf create mode 100644 @GMS/addons/custom_server/Missions/Red/Outpost.sqf create mode 100644 @GMS/addons/custom_server/Missions/Red/dashq.sqf create mode 100644 @GMS/addons/custom_server/Missions/Red/derbunker.sqf create mode 100644 @GMS/addons/custom_server/Missions/Red/factory.sqf create mode 100644 @GMS/addons/custom_server/Missions/Red/junkyardWilly.sqf create mode 100644 @GMS/addons/custom_server/Missions/Red/lager.sqf create mode 100644 @GMS/addons/custom_server/Missions/Red/tko_camp.sqf create mode 100644 @GMS/addons/custom_server/Missions/Static/missions/template.sqf diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_addMoneyToObject.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_addMoneyToObject.sqf index 7f4c32d..2c17267 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_addMoneyToObject.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_addMoneyToObject.sqf @@ -13,26 +13,14 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; if (toLower(blck_modType) isEqualTo "default") exitWith {}; -params["_obj","_difficulty"]; - -if (blck_modType isEqualTo "Exile") then +params["_obj",["_money",-1]]; +_money = ([_money] call blck_fnc_getNumberFromRange); +if (blck_debugLevel >= 3) then {[format["_fnc_addmoneyToObject: _money = %1 _obj = %2",_money,_obj]] call blck_fnc_log}; +if !(_money <= 0) then { - switch (_difficulty) do + switch(toLower(blck_modType)) do { - case "blue":{_obj setVariable["ExileMoney", floor(random([blck_crateMoneyBlue] call blck_fnc_getNumberFromRange)),true];}; - case "red":{_obj setVariable["ExileMoney", floor(random([blck_crateMoneyRed] call blck_fnc_getNumberFromRange)),true];}; - case "green":{_obj setVariable["ExileMoney", floor(random([blck_crateMoneyGreen] call blck_fnc_getNumberFromRange)),true];}; - case "orange":{_obj setVariable["ExileMoney", floor(random([blck_crateMoneyGreen] call blck_fnc_getNumberFromRange)),true];}; + case "exile": {_obj setVariable["ExileMoney",_money,true]}; + case "epoch": {_obj setVariable["Crypto", _money,true]}; }; }; - -if (blck_modType isEqualTo "Epoch") then -{ - switch (_difficulty) do - { - case "blue":{_obj setVariable["Crypto", floor(random([blck_crateMoneyBlue] call blck_fnc_getNumberFromRange)),true];}; - case "red":{_obj setVariable["Crypto", floor(random([blck_crateMoneyRed] call blck_fnc_getNumberFromRange)),true];}; - case "green":{_obj setVariable["Crypto", floor(random([blck_crateMoneyGreen] call blck_fnc_getNumberFromRange)),true];}; - case "orange":{_obj setVariable["Crypto", floor(random([blck_crateMoneyGreen] call blck_fnc_getNumberFromRange)),true];}; - }; -}; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_createMissionMarkers.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_createMissionMarkers.sqf index 1970283..05f5629 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_createMissionMarkers.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_createMissionMarkers.sqf @@ -21,21 +21,22 @@ private "_markers"; ["_markerBrush","GRID"] ]; -/* -private _pList =[ - "_markerName", // the name used when creating the marker. Must be unique. - "_markerPos", - "_markerLabel", - "_markerColor", - "_markerType", // Use either the name of the icon or "ELLIPSE" or "RECTANGLE" where non-icon markers are used - "_markerSize", - "_markerBrush" - ]; -for "_i" from 0 to ((count _this) - 1) do +if (blck_debugLevel >= 3) then { - diag_log format["_fnc_createMarker: parameter %1 = %2",_pList select _i,_this select _i]; -}; -*/ + private _pList =[ + "_markerName", // the name used when creating the marker. Must be unique. + "_markerPos", + "_markerLabel", + "_markerColor", + "_markerType", // Use either the name of the icon or "ELLIPSE" or "RECTANGLE" where non-icon markers are used + "_markerSize", + "_markerBrush" + ]; + for "_i" from 0 to ((count _this) - 1) do + { + diag_log format["_fnc_createMarker: parameter %1 = %2",_pList select _i,_this select _i]; + }; +}; if (toUpper(_markerType) in ["ELLIPSE","RECTANGLE"]) then // not an Icon .... { @@ -60,4 +61,4 @@ if (toUpper(_markerType) in ["ELLIPSE","RECTANGLE"]) then // not an Icon .... //diag_log format["_fnc_createMarkers: case of ICON: _markers = %1",_markers]; }; -_markers \ No newline at end of file +_markers diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf index 3500071..6162ee1 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf @@ -180,10 +180,10 @@ while { !_validspot} do if (_coords isEqualTo []) then { - diag_log format["[blckeagls] Could not find a safe position for a mission, consider reducing values for minimum distances between missions and players, bases, other missions or towns"]; + ["Could not find a safe position for a mission, consider reducing values for minimum distances between missions and players, bases, other missions or towns","error"] call blck_fnc_log; } else { _coords set[2, 0]; - diag_log format["_fnc_findSafePosn: _exit with _coords = %1 | time spent = %2",_coords,diag_tickTime - _timeIn]; + //diag_log format["_fnc_findSafePosn: _exit with _coords = %1 | time spent = %2",_coords,diag_tickTime - _timeIn]; }; _coords diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf index b5c73d1..a06d129 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf @@ -58,17 +58,25 @@ while {true} do { _timer1min = diag_tickTime + 60; - [] call blck_fnc_groupWaypointMonitor; + [] call blck_fnc_groupWaypointMonitor; + [] call blck_fnc_cleanupAliveAI; + [] call blck_fnc_cleanupObjects; + [] call blck_fnc_cleanupDeadAI; if (blck_useHC) then {[] call blck_fnc_HC_passToHCs}; if (blck_useTimeAcceleration) then {[] call blck_fnc_timeAcceleration}; if (blck_ai_offload_to_client) then {[] call blck_fnc_ai_offloadToClients}; }; if (diag_tickTime > _timer5min) then { - [format["Timstamp %8 |Dynamic Missions Running %1 | UMS Running %2 | Vehicles %3 | Groups %4 | Server FPS %5 | Server Uptime %6 Min | Missions Run %7",blck_missionsRunning,blck_dynamicUMS_MissionsRuning,count blck_monitoredVehicles,count blck_monitoredMissionAIGroups,diag_FPS,floor(diag_tickTime/60),blck_missionsRun, diag_tickTime]] call blck_fnc_log; - [] call blck_fnc_cleanupAliveAI; - [] call blck_fnc_cleanupObjects; - [] call blck_fnc_cleanupDeadAI; + [format["Timstamp %8 |Dynamic Missions Running %1 | UMS Running %2 | Vehicles %3 | Groups %4 | Server FPS %5 | Server Uptime %6 Min | Missions Run %7", + blck_missionsRunning, + blck_dynamicUMS_MissionsRuning, + count blck_monitoredVehicles, + count blck_monitoredMissionAIGroups, + diag_FPS,floor(diag_tickTime/60), + blck_missionsRun, + diag_tickTime] + ] call blck_fnc_log; [] call blck_fnc_cleanEmptyGroups; _timer5min = diag_tickTime + 300; }; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_addMIssionToQue.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_addMIssionToQue.sqf index 68fac18..b245575 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_addMIssionToQue.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_addMIssionToQue.sqf @@ -13,6 +13,12 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; params["_missionList","_path","_marker","_difficulty","_tMin","_tMax",["_noMissions",1]]; +if (blck_debugLevel >= 3) then +{ + { + diag_log format["_addMissionToQue: _this %1 = %2",_forEachIndex, _this select _forEachIndex]; + } forEach _this; +}; private _waitTime = diag_tickTime + (_tMin) + random((_tMax) - (_tMin)); private _missionsData = []; // Parameters definine each of the missions for this difficulty are stored as arrays here. { diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_endMission.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_endMission.sqf index 91c1b59..bcddd0f 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_endMission.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_endMission.sqf @@ -60,7 +60,18 @@ params[ switch (_endCondition) do { - case 1: { + case -1: { + #define cleanupCompositionTimer 0 + #define cleanupAliveAITimer 0 + + { + if (local _x) then {deleteVehicle _x}; + }forEach _crates; + + [_coords,_mines,_objects,_blck_AllMissionAI,_markerName,cleanupAliveAITimer,cleanupCompositionTimer,_isScubaMission] call _fn_missionCleanup; + [format["Mission | _coords %1 : _markerClass %2 : _markerMissionName %3",_coords,_markerName,_markerLabel]] call blck_fnc_log; + }; + case 1: { // Normal End if (blck_useSignalEnd) then { [_crates select 0] spawn blck_fnc_signalEnd; @@ -92,6 +103,7 @@ switch (_endCondition) do } forEach _vehicles; [_coords,_mines,_objects,_blck_AllMissionAI,_markerName,blck_AliveAICleanUpTimer,blck_cleanupCompositionTimer,_isScubaMission] call _fn_missionCleanup; + [format["Mission Completed | _coords %1 : _markerClass %2 : _markerMissionName %3",_coords,_markerName,_markerLabel]] call blck_fnc_log; }; case 2: { // Aborted for moving a crate @@ -101,6 +113,7 @@ switch (_endCondition) do #define illegalCrateMoveMsg "Crate moved before mission completed" [["warming",illegalCrateMoveMsg,_markerLabel]] call blck_fnc_messageplayers; [_coords,_mines,_objects,_blck_AllMissionAI,_markerName,cleanupAliveAITimer,cleanupCompositionTimer,_isScubaMission] call _fn_missionCleanup; + [format["Mission Aborted | _coords %1 : _markerClass %2 : _markerMissionName %3",_coords,_markerName,_markerLabel]] call blck_fnc_log; }; case 3: { // Mision aborted for killing an asset #define cleanupCompositionTimer 0 @@ -111,6 +124,7 @@ switch (_endCondition) do }forEach _crates; [["warning",_endMsg,_markerLabel]] call blck_fnc_messageplayers; [_coords,_mines,_objects,_blck_AllMissionAI,_markerName,cleanupAliveAITimer,cleanupCompositionTimer,_isScubaMission] call _fn_missionCleanup; + [format["Mission Aborted | _coords %1 : _markerClass %2 : _markerMissionName %3",_coords,_markerName,_markerLabel]] call blck_fnc_log; }; case 4: { @@ -125,5 +139,4 @@ switch (_endCondition) do }; }; -[format["Mission Completed | _cords %1 : _markerClass %2 : _markerMissionName %3",_coords,_markerName,_markerLabel]] call blck_fnc_log; -blck_missionsRun = blck_missionsRun + 1; \ No newline at end of file +blck_missionsRun = blck_missionsRun + 1; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_garrisonBuilding_relPosSystem.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_garrisonBuilding_relPosSystem.sqf index 64aca66..a35c1e6 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_garrisonBuilding_relPosSystem.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_garrisonBuilding_relPosSystem.sqf @@ -11,7 +11,8 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -params["_center","_garrisonedBuilding_relPosSystem", +params["_center", + "_garrisonedBuilding_relPosSystem", ["_aiDifficultyLevel","Red"], ["_uniforms",[]], ["_headGear",[]], @@ -20,11 +21,7 @@ params["_center","_garrisonedBuilding_relPosSystem", ["_weaponList",[]], ["_sideArms",[]] ]; -/* -{ - diag_log format["_fnc_garrisonBuilding_relPosSystem: _this %1 = %2",_forEachIndex,_this select _forEachIndex]; -}forEach _this; -*/ + if (_weaponList isEqualTo []) then {_weaponList = [_aiDifficultyLevel] call blck_fnc_selectAILoadout}; if (_sideArms isEqualTo []) then {_sideArms = [_aiDifficultyLevel] call blck_fnc_selectAISidearms}; if (_uniforms isEqualTo []) then {_uniforms = [_aiDifficultyLevel] call blck_fnc_selectAIUniforms}; @@ -38,14 +35,13 @@ _group = [blck_AI_Side,true] call blck_fnc_createGroup; if !(isNull _group) then { { - _g = _x; // ["Land_Unfinished_Building_02_F",[-21.8763,-45.978,-0.00213432],0,true,true,0.67,3,[],4], - _g params["_bldClassName","_bldRelPos","_bldDir","_s","_d","_p","_noStatics","_typesStatics","_noUnits"]; + _x params["_bldClassName","_bldRelPos","_bldDir","_s","_d","_p","_noStatics","_typesStatics","_noUnits"]; if (_typesStatics isEqualTo []) then {_typesStatics = ["B_HMG_01_high_F"]}; _building = createVehicle[_bldClassName,[0,0,0],[],0,"CAN_COLLIDE"]; _buildingsSpawned pushBack _building; _building setPosATL (_bldRelPos vectorAdd _center); - _building setDir _bldDir; + [_building, _bldDir] call blck_fnc_setDirUp; _staticsSpawned = [_building,_group,_noStatics,_typesStatics,_noUnits,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,"none",_weaponList,_sideArms] call blck_fnc_spawnGarrisonInsideBuilding_relPos; }forEach _garrisonedBuilding_relPosSystem; }; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_initializeMission.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_initializeMission.sqf index 50ef6f8..425500e 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_initializeMission.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_initializeMission.sqf @@ -18,7 +18,20 @@ params["_missionCategoryDescriptors","_missionParameters"]; "_missionsData" // ]; - +if (blck_debugLevel >= 3) then +{ + { + diag_log format["_initializeMission: _missionCategoryDescriptors %1 = %2",_forEachIndex, _missionCategoryDescriptors]; + } forEach [ + "_difficulty", + "_noMissions", // Max no missions of this category + "_noActive", // Number active + "_tMin", // Used to calculate waittime in the future + "_tMax", // as above + "_waitTime", // time at which a mission should be spawned + "_missionsData" // + ]; +}; if (_noActive > _noMissions) exitWith {if (blck_debugOn) then {}}; _missionParameters params[ @@ -150,3 +163,5 @@ private _missionData = [_coords,_mines,_objects,_crates, _blck_AllMissionAI,_ass blck_activeMissionsList pushBack [_missionCategoryDescriptors,_missionTimeoutAt,_triggered,_spawnPara,_missionData,_missionParameters]; [format["Initialized Mission %1 | description %2 | difficulty %3 at %4",_markerName, _markerMissionName, _difficulty, diag_tickTime]] call blck_fnc_log; + +true \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_loadMissionCrate.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_loadMissionCrate.sqf index 103389d..2f44471 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_loadMissionCrate.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_loadMissionCrate.sqf @@ -11,7 +11,6 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; private _crate = _this select 0; [_crate,(_crate getVariable "lootArray"),(_crate getVariable "lootCounts")] call blck_fnc_fillBoxes; -[_crate, _crate getVariable "difficulty"] call blck_fnc_addMoneyToObject; _crate setVariable["lootLoaded",true]; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf index 16b9a45..130baa9 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf @@ -19,14 +19,14 @@ private ["_abort","_crates","_aiGroup","_objects","_groupPatrolRadius","_mission "_wait","_missionStartTime","_playerInRange","_missionTimedOut","_temp","_patrolVehicles","_vehToSpawn","_noChoppers","_chancePara","_paraSkill","_marker","_vehicleCrewCount", "_defaultMissionLocations","_garrisonedbuildings_buildingposnsystem","_garrisonedBuilding_ATLsystem", "_isScubaMission","_markerlabel","_missionLootBoxes","_airpatrols"]; -params["_markerName","_aiDifficultyLevel"]; +params["_markerName",["_aiDifficultyLevel","Red"]]; if (isNil "_markerLabel") then {_markerLabel = _markerMissionName}; if (isNil "_assetKilledMsg") then {_assetKilledMsg = ""}; if (isNil "_markerColor") then {_markerColor = "ColorBlack"}; if (isNil "_markerType") then {_markerType = ["mil_box",[]]}; if (isNil "_markerSize") then {_markerSize = []}; if (isNil "_endCondition") then {_endCondition = blck_missionEndCondition}; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear"}; -if (isNil "_spawnCratesTiming") then {_spawnCratesTiming = blck_spawnCratesTiming}; // Choices: "atMissionSpawnGround","atMissionStartAir","atMissionEndGround","atMissionEndAir". +if (isNil "_spawnCratesTiming") then {_spawnCratesTiming = blck_spawnCratesTiming}; // Choices: "atMissionSpawnGround","atMissionSpawnAir","atMissionEndGround","atMissionEndAir". if (isNil "_loadCratesTiming") then {_loadCratesTiming = blck_loadCratesTiming}; // valid choices are "atMissionCompletion" and "atMissionSpawn"; if (isNil "_missionPatrolVehicles") then {_missionPatrolVehicles = []}; if (isNil "_missionGroups") then {_missionGroups = []}; @@ -73,6 +73,23 @@ if !(_defaultMissionLocations isEqualTo []) then _markerType params["_markerType",["_markersize",[250,250]],["_markerBrush","GRID"]]; private _paraSkill = _aiDifficultyLevel; + +if !(_spawnCratesTiming in blck_validLootSpawnTimings) then +{ + [format['Invalid crate spawn timing %1 found in mission %2 :: default value "atMissionSpawnGround" used',_spawnCratesTiming,_markerMissionName],""] call blck_fnc_log; + _spawnCratesTiming = "atMissionSpawnGround"; +}; +if !(_loadCratesTiming in blck_validLootLoadTimings) then +{ + [format['Invalid crate loading timing %1 found in mission %2 :: default "atMissionSpawn" value used',_loadCratesTiming,_markerMissionName],""] call blck_fnc_log; + _loadCratesTiming = "atMissionSpawn"; +}; +if !(_endCondition in blck_validEndStates) then +{ + [format['Invalid mission end condition %1 found in mission %2 :: default value "allKilledOrPlayerNear"; used',_endCondition,_markerMissionName],""] call blck_fnc_log; + _endCondition = "allKilledOrPlayerNear"; +}; + private _table = [ _markerName, _markerMissionName, // Name used for setMarkerText and also for the root name for all markers diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_monitorInitializedMissions.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_monitorInitializedMissions.sqf index db67a66..589675c 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_monitorInitializedMissions.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_monitorInitializedMissions.sqf @@ -121,9 +121,9 @@ _missionParameters params[ // Handle Timeout case -1: { - [format["_fnc_monitorInitializedMissions: mission timed out: %1",_el]] call blck_fnc_log; + //[format["_fnc_monitorInitializedMissions: mission timed out: %1",_el]] call blck_fnc_log; _missionCategoryDescriptors set[noActive, _noActive - 1]; - [_coords,_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_markers,markerPos (_markers select 1),_markerName,_markerMissionName, 1] call blck_fnc_endMission; + [_coords,_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_markers,markerPos (_markers select 1),_markerName,_markerMissionName, -1] call blck_fnc_endMission; }; // Handle mission waiting to be triggerd and player is within the range to trigger @@ -270,7 +270,7 @@ _missionParameters params[ uiSleep delayTime; if (blck_debugLevel >= 3) then {diag_log format["monitorInitializedMissions: _spawnCrateTiming = %1 _loadCratesTiming = %2 | _markerMissionName = %3",_spawnCratesTiming,_loadCratesTiming, _markerMissionName]}; if (blck_debugLevel >= 3) then {diag_log format["monitorInitializedMissions: _missionLootBoxes = %1",_missionLootBoxes]}; - if (_spawnCratesTiming in ["atMissionSpawnGround","atMissionStartAir"]) then + if (_spawnCratesTiming in ["atMissionSpawnGround","atMissionSpawnAir"]) then { if (_missionLootBoxes isEqualTo []) then { @@ -285,6 +285,13 @@ _missionParameters params[ { _objects append _crates; }; + if (_loadCratesTiming isEqualTo "atMissionSpawn") then + { + private _crateMoney = missionNamespace getVariable (format["blck_crateMoney%1",_difficulty]); + { + [_x,_crateMoney] call blck_fnc_addMoneyToObject; + } forEach _crates; + }; }; _missionData set[2,_objects]; _missionData set[3,_crates]; @@ -328,6 +335,9 @@ _missionParameters params[ /* "_endCondition", */ + _secureAsset = false; + _endIfPlayerNear = true; + _endIfAIKilled = true; switch (_endCondition) do { @@ -367,7 +377,7 @@ _missionParameters params[ }; if (random(1) < _chanceLoot) then { - private _extraCrates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_paraLoot,_paraLootCounts]], "atMissionSpawn","atMissionStartAir", "start", _difficulty] call blck_fnc_spawnMissionCrates; + private _extraCrates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_paraLoot,_paraLootCounts]], "atMissionSpawn","atMissionSpawnAir", "start", _difficulty] call blck_fnc_spawnMissionCrates; if (blck_cleanUpLootChests) then { _objects append _extraCrates; @@ -439,15 +449,21 @@ _missionParameters params[ { _objects append _crates; }; + private _crateMoney = missionNamespace getVariable (format["blck_crateMoney%1",_difficulty]); + { + [_x,_crateMoney] call blck_fnc_addMoneyToObject; + } forEach _crates; }; }; - if (_spawnCratesTiming isEqualTo "atMissionSpawnGround" && _loadCratesTiming isEqualTo "atMissionCompletion") then + if (_spawnCratesTiming in ["atMissionSpawnGround","atMissionSpawnAir"] && _loadCratesTiming isEqualTo "atMissionCompletion") then { if (!(_secureAsset) || (_secureAsset && (alive _assetSpawned))) then { + private _crateMoney = missionNamespace getVariable (format["blck_crateMoney%1",_difficulty]); { - [_x] call blck_fnc_loadMissionCrate; + [_x] call blck_fnc_loadMissionCrate; + [_x,_crateMoney] call blck_fnc_addMoneyToObject; } forEach _crates; }; }; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_initializeMission.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_initializeMission.sqf index c0fe1b9..58345e7 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_initializeMission.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_initializeMission.sqf @@ -28,7 +28,7 @@ if (isNil "_aiGroupParameters") then {_aiGroupParameters = []}; if (isNil "_missionEmplacedWeapons") then {_missionEmplacedWeapons = []}; if (isNil "_vehiclePatrolParameters") then {_vehiclePatrolParameters = []}; if (isNil "_missionLootVehicles") then {_missionLootVehicles = []}; - +if (isNil "_crateMoney") then {_crateMoney = 0}; _markerClass = format["static%1",floor(random(1000000))]; _blck_localMissionMarker = [_markerClass,_missionCenter,"","",_markerColor,_markerType]; if (blck_labelMapMarkers select 0) then @@ -43,25 +43,6 @@ _blck_localMissionMarker set [3,blck_labelMapMarkers select 1]; // Use an arrow [_blck_localMissionMarker] call blck_fnc_spawnMarker; [_missionLandscape] call blck_fnc_sm_spawnObjects; - -{ - //diag_log format["processing _garrisonedBuilding_ASL %1 which = %2",_forEachIndex,_x]; - // ["Land_i_House_Big_02_V2_F",[23650.3,18331.9,3.19],[[0,1,0],[0,0,1]],[true,true],"Red", - _x params["_buildingClassName","_buildingPosnASL","_buildingVectorDirUp","_buildingDamSim","_aiDifficulty","_staticsASL","_unitsASL","_respawnTimer","_noRespawns"]; - private _building = [_buildingClassName,_buildingPosnASL,_buildingVectorDirUp,_buildingDamSim] call blck_fnc_sm_spawnObjectASLVectorDirUp; - [blck_sm_garrisonBuildings_ASL,[_building,_aiDifficulty,_staticsASL,_unitsASL,_respawnTimer,_noRespawns]] call blck_fnc_sm_AddGroupToArray; - //diag_log format["_fnc_sm_initializeMission: blck_sm_garrisonBuildings_ASL updated to: %1",blck_sm_garrisonBuildings_ASL]; -}forEach _garrisonedBuilding_ASLsystem; - -// blcl_sm_garrisonBuilding_relPos -{ - //diag_log format["processing _garrisonedBuilding_relPos %1 which = %2",_forEachIndex,_x]; - _x params["_buildingClassName","_buildingPosnASL","_buildingVectorDirUp","_buildingDamSim","_aiDifficulty","_p","_noStatics","_typesStatics","_noUnits","_respawnTimer","_noRespawns"]; - private _building = [_buildingClassName,_buildingPosnASL,_buildingVectorDirUp,_buildingDamSim] call blck_fnc_sm_spawnObjectASLVectorDirUp; - [blcl_sm_garrisonBuilding_relPos,[_building,_aiDifficulty,_noStatics,_typesStatics,_noUnits,_respawnTimer,_noRespawns]] call blck_fnc_sm_AddGroupToArray; - //diag_log format["_fnc_sm_initializeMission: blcl_sm_garrisonBuilding_relPos updated to: %1",blcl_sm_garrisonBuilding_relPos]; -}forEach _garrisonedBuildings_BuildingPosnSystem; - { [blck_sm_Aircraft,_x] call blck_fnc_sm_AddGroupToArray; @@ -82,7 +63,7 @@ _blck_localMissionMarker set [3,blck_labelMapMarkers select 1]; // Use an arrow uiSleep 30; // spawn loot chests -[_missionLootBoxes,_missionCenter] call blck_fnc_sm_spawnLootContainers; -[_missionLootVehicles,_missionCenter] call blck_fnc_sm_spawnLootContainers; -diag_log format["[blckeagls] Static Mission Spawner: Mission %1 spawned",_mission]; +[_missionLootBoxes,_missionCenter,_crateMoney] call blck_fnc_sm_spawnLootContainers; +[_missionLootVehicles,_missionCenter,_crateMoney] call blck_fnc_sm_spawnLootContainers; +[format["Static Mission Spawner: Mission %1 spawned",_mission]] call blck_fnc_log; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_initializeUMSStaticMission.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_initializeUMSStaticMission.sqf index e1ed9a3..e57d06b 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_initializeUMSStaticMission.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_initializeUMSStaticMission.sqf @@ -70,4 +70,4 @@ _blck_localMissionMarker set [3,blck_labelMapMarkers select 1]; // Use an arrow // spawn loot chests [_missionLootBoxes,_missionCenter] call blck_fnc_sm_spawnLootContainers; -diag_log format["[blckeagls] UMS Mission Spawner: Static UMS Mission %1 spawned",_mission]; +[format["UMS Mission Spawner: Static UMS Mission %1 spawned",_mission]] call blck_fnc_log; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnLootContainers.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnLootContainers.sqf index 3c7d549..91e4d09 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnLootContainers.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_spawnLootContainers.sqf @@ -10,7 +10,7 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -params["_objectDescriptors","_coords"]; +params["_objectDescriptors","_coords",["_money",-1]]; if !(_objectDescriptors isEqualTo []) then { // Spawn loot crates where specified in _objects using the information for loot parameters provided for each location. @@ -18,6 +18,14 @@ if !(_objectDescriptors isEqualTo []) then // data within the descriptor for each loot crate is organized as follows (not that the _allowDamageSim is included just for backward compatibilty but is not used _x params["_crateClassName","_cratePosASL","_vectorDirUp","_allowDamageSim","_crateLoot","_lootCounts"]; private _crate = [_cratePosASL, _crateClassName] call blck_fnc_spawnCrate; + if (blck_debugLevel >= 3) then + { + [format["_fnc_sm_initializeMission: _money = %1",_money]] call blck_fnc_log; + }; + if (_money > 0) then + { + [_crate,_money] call blck_fnc_addMoneyToObject; + }; [_crate, _crateLoot,_lootCounts] call blck_fnc_fillBoxes; } forEach _objectDescriptors; } @@ -26,6 +34,10 @@ else { _crateType = selectRandom blck_crateTypes; _crate = [_coords,_crateType] call blck_fnc_spawnCrate; + if !(_money == -1) then + { + [_crate,_money] call blck_fnc_addMoneyToObject; + }; [_crate,blck_BoxLoot_Red,blck_lootCountsGreen] call blck_fnc_fillBoxes; }; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnBaseObjects.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnBaseObjects.sqf index 4c9afd8..46d0548 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnBaseObjects.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnBaseObjects.sqf @@ -36,7 +36,7 @@ _newObjs pushBack _obj; _obj = createVehicle[(_x select 0),_center vectorAdd (_x select 1),[],0,"CAN_COLLIDE"]; _newObjs pushback _obj; - _obj setDir (_x select 2); + [_obj, (_x select 2)] call blck_fnc_setDirUp; _obj enableDynamicSimulation _sim; _obj allowDamage _dam; if ((typeOf _obj) isKindOf "LandVehicle" || (typeOf _obj) isKindOf "Air" || (typeOf _obj) isKindOf "Sea") then diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnCrate.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnCrate.sqf index 884ae82..eaa569d 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnCrate.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnCrate.sqf @@ -19,7 +19,7 @@ _crate allowDamage false; _crate enableRopeAttach false; [_crate] call blck_fnc_emptyObject; _crate setPosATL [_coords select 0, _coords select 1, (_coords select 2) + 0.25]; -_crate setDir _crateDir; +[_crate, _crateDir] call blck_fnc_setDirUp; _crate setVectorUp surfaceNormal position _crate; if ((_coords select 2) < 0 || surfaceIsWater (_coords)) then diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnEmplacedWeaponArray.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnEmplacedWeaponArray.sqf index 195b9f5..265c65c 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnEmplacedWeaponArray.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnEmplacedWeaponArray.sqf @@ -75,7 +75,7 @@ if (_missionEmplacedWeapons isEqualTo []) then } else { _abort = true; _return = grpNull; - diag_log format["[blckeagls] createGroup returned grpNull"]; + ["createGroup returned grpNull","warning"] call blck_fnc_log; }; } forEach _missionEmplacedWeapons; if !(_abort) then diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnGarrisonInsideBuilding_relPos.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnGarrisonInsideBuilding_relPos.sqf index 4193761..7d17a2e 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnGarrisonInsideBuilding_relPos.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnGarrisonInsideBuilding_relPos.sqf @@ -29,11 +29,10 @@ private _staticsSpawned = []; uiSleep 1; for "_i" from 1 to _statics do { - diag_log format["_fnc_spawnGarrisonInsideBuilding_relPos: _x = %1",_x]; _pos = selectRandom _allBldPsn; _allBldPsn = _allBldPsn - [_pos]; _staticClassName = selectRandom _typesStatics; - _obj = [_staticClassName, [0,0,0], true] call blck_fnc_spawnVehicle; + _obj = [_staticClassName, [0,0,0]] call blck_fnc_spawnVehicle; _obj setVariable["GRG_vehType","emplaced"]; _staticsSpawned pushBack _obj; _obj setPosATL _pos; // (_pos vectorAdd (getPosATL _building)); diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionCrates.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionCrates.sqf index df6853e..98ee94d 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionCrates.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionCrates.sqf @@ -58,7 +58,7 @@ private _cratesSpawned = []; private _pos = _coords vectorAdd _crateOffset; private _crate = [_pos,_crateType] call blck_fnc_spawnCrate; - _crate setDir _crateDir; + [_crate, _crateDir] call blck_fnc_setDirUp; _crate setVariable["lootArray",_lootArray]; _crate setVariable["lootCounts",_lootCounts]; _crate setVariable["difficulty",_difficulty]; @@ -70,7 +70,7 @@ private _cratesSpawned = []; }forEach _cratesToSpawn; -if (_spawnCrateTiming in ["atMissionEndAir","atMissionStartAir"]) then +if (_spawnCrateTiming in ["atMissionEndAir","atMissionSpawnAir"]) then { [_cratesSpawned] spawn _fnc_dropMissionCrates; }; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionLootVehicles.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionLootVehicles.sqf index e0be5c4..acbe0b4 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionLootVehicles.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionLootVehicles.sqf @@ -18,14 +18,8 @@ private _vehs = []; _x params["_vehType","_vehOffset",["_dir",0],"_lootArray","_lootCounts"]; private _pos =_coords vectorAdd _vehOffset; _veh = [_vehType, _pos] call blck_fnc_spawnVehicle; - if (typeName _dir isEqualTo "SCALAR") then - { - _veh setDir _dir; - }; - if (typeName _dir isEqualTo "ARRAY") then - { - _veh setVectorDirAndUp _dir; - }; + [_veh, _dir] call blck_fnc_setDirUp; + _veh lock _lock; if (_loadCrateTiming isEqualTo "atMissionSpawn") then { diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnPendingMissions.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnPendingMissions.sqf index cbad33f..77be5fd 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnPendingMissions.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnPendingMissions.sqf @@ -20,10 +20,20 @@ if (blck_missionsRunning >= blck_maxSpawnedMissions) exitWith {}; // time to reset timers and spawn something. private _wt = diag_tickTime + _tmin + (random(_tMax - _tMin)); - #define waitTime 5 - #define noActive 2 - _x set[waitTime, _wt]; // _x here is the _missionCategoryDescriptors being evaluated - _x set[noActive, _noActiveMissions + 1]; private _missionInitialized = [_x,selectRandom _missionsData] call blck_fnc_initializeMission; + if (blck_debugLevel >= 3) then + { + if !(_missionInitialized) then + { + [format["fnc_spawnPendingMissions: _missionInitialized = %1",_missionInitialized],"warning"] call blck_fnc_log; + }; + }; + if (_missionInitialized) then + { + #define waitTime 5 + #define noActive 2 + _x set[waitTime, _wt]; // _x here is the _missionCategoryDescriptors being evaluated + _x set[noActive, _noActiveMissions + 1]; + }; }; } forEach blck_missionData; diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnUnit.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnUnit.sqf index a355c2d..356f671 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnUnit.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_spawnUnit.sqf @@ -22,7 +22,7 @@ if (_headGear isEqualTo []) then {_headGear = [_skillLevel] call blck_fnc_sele if (_vests isEqualTo []) then {_vests = [_skillLevel] call blck_fnc_selectAIVests}; if (_backpacks isEqualTo []) then {_backpacks = [_skillLevel] call blck_fnc_selectAIBackpacks}; -if (isNull _aiGroup) exitWith {diag_log "[blckeagls] ERROR CONDITION:-->> NULL-GROUP Provided to _fnc_spawnUnit"}; +if (isNull _aiGroup) exitWith {["NULL-GROUP Provided to _fnc_spawnUnit"] call blck_fnc_log}; _unit = ObjNull; diff --git a/@GMS/addons/custom_server/Compiles/blck_functions.sqf b/@GMS/addons/custom_server/Compiles/blck_functions.sqf index 20e562f..20094d7 100644 --- a/@GMS/addons/custom_server/Compiles/blck_functions.sqf +++ b/@GMS/addons/custom_server/Compiles/blck_functions.sqf @@ -51,6 +51,7 @@ private _functions = [ ["blck_fnc_getAllDMSMarkers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_getAllDMSMarkers.sqf"], ["blck_fnc_createMissionMarkers","\q\addons\custom_server\Compiles\Functions\GMS_fnc_createMissionMarkers.sqf"], ["blck_fnc_log","\q\addons\custom_server\Compiles\Functions\GMS_fnc_log.sqf"], + ["blck_fnc_setDirUp","\q\addons\custom_server\Compiles\Functions\GMS_fnc_setDirUp.sqf"], // Player-related functions ["blck_fnc_handlePlayerUpdates","\q\addons\custom_server\Compiles\Units\GMS_fnc_handlePlayerUpdates.sqf"], @@ -199,7 +200,7 @@ private _functions = [ #ifdef GRGserver if (isServer) then {blck_fnc_broadcastServerFPS = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_broadcastServerFPS.sqf";}; -diag_log "blck_functions loaded using GRGserver settings ---- >>>> "; +["blck_functions loaded using GRGserver settings ---- >>>> "] call blck_fnc_log; #endif diff --git a/@GMS/addons/custom_server/Compiles/blck_variables.sqf b/@GMS/addons/custom_server/Compiles/blck_variables.sqf index a2d60a8..8777869 100644 --- a/@GMS/addons/custom_server/Compiles/blck_variables.sqf +++ b/@GMS/addons/custom_server/Compiles/blck_variables.sqf @@ -52,5 +52,9 @@ blck_activeMissionsList = []; blck_initializedMissionsList = []; blck_blackListedLocations = []; // [ [marker, time]] +blck_validEndStates = ["allUnitsKilled", "playerNear", "allKilledOrPlayerNear","assetSecured"]; +blck_validLootSpawnTimings = ["atMissionSpawnGround","atMissionSpawnAir","atMissionEndGround","atMissionEndAir"]; +blck_validLootLoadTimings = ["atMissionCompletion", "atMissionSpawn"]; + if (blck_debugOn) then {diag_log "[blckeagls] Variables Loaded"}; diff --git a/@GMS/addons/custom_server/Configs/blck_configs.sqf b/@GMS/addons/custom_server/Configs/blck_configs.sqf index e431e94..8eb80bb 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs.sqf @@ -22,11 +22,11 @@ #ifdef blck_milServer if (true) exitWith { - diag_log format["[blckeagls] Running configs for militarized servers build %1",blck_buildNumber]; + [format["Running configs for militarized servers build %1",blck_buildNumber]] call blck_fnc_log; execVM "\q\addons\custom_server\Configs\blck_configs_mil.sqf"; }; #endif - diag_log format["[blckeagls] Loading configurations for Non-militarized servers build %1",blck_buildNumber]; + [format["Loading configurations for Non-militarized servers build %1",blck_buildNumber]] call blck_fnc_log; /* ************************************** Configurations begin here @@ -122,7 +122,7 @@ /////////////////////////////// blck_killPercentage = 0.999999; // The mission will complete if this fraction of the total AI spawned has been killed. // This facilitates mission completion when one or two AI are spawned into objects. - blck_spawnCratesTiming = "atMissionSpawnGround"; // Choices: "atMissionSpawnGround","atMissionStartAir","atMissionEndGround","atMissionEndAir". + blck_spawnCratesTiming = "atMissionSpawnGround"; // Choices: "atMissionSpawnGround","atMissionSpawnAir","atMissionEndGround","atMissionEndAir". // Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute. // This sets the default value but can be overridden by defining _spawnCrateTiming in the file defining a particular mission. blck_loadCratesTiming = "atMissionSpawn"; // valid choices are "atMissionCompletion" and "atMissionSpawn"; @@ -253,10 +253,10 @@ //Maximum Spawn time between missions in seconds - blck_TMax_Orange = 520; + blck_TMax_Orange = 560; blck_TMax_Green = 500; - blck_TMax_Blue = 340; - blck_TMax_Red = 400; + blck_TMax_Blue = 360; + blck_TMax_Red = 420; blck_TMax_UMS = 400; @@ -494,12 +494,10 @@ if (toLower(blck_modType) isEqualTo "epoch") then { - execVM "\q\addons\custom_server\Configs\blck_configs_epoch.sqf"; }; if (toLower(blck_modType) isEqualTo "exile") then { - execVM "\q\addons\custom_server\Configs\blck_configs_exile.sqf"; }; if (toLower(blck_modType) isEqualTo "default") then @@ -509,11 +507,11 @@ uiSleep 10; if (blck_useConfigsGeneratedLoadouts) then { - diag_log format["[blckeagls] Dynamic Configs Enabled"]; + ["Dynamic Configs Enabled"] call blck_fnc_log; execVM "\q\addons\custom_server\Configs\blck_dynamicConfigs.sqf"; } else { }; blck_configsLoaded = true; - diag_log format["<--- blck_configs loaded at %1 --->",diag_tickTime]; + //diag_log format["<--- blck_configs loaded at %1 --->",diag_tickTime]; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_default.sqf b/@GMS/addons/custom_server/Configs/blck_configs_default.sqf index c2d43e0..52a08a5 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_default.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_default.sqf @@ -12,7 +12,7 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; #include "\q\addons\custom_server\init\build.sqf"; -diag_log format["[blckeagls] loading default configurations for blckeagls build %1",blck_buildNumber]; +//diag_log format["[blckeagls] loading default configurations for blckeagls build %1",blck_buildNumber]; //////////// // default settings //////////// @@ -52,7 +52,7 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_maximumItemPriceInAI_Loadouts = 100; - blck_lightlyArmed_ARMA3 = [ + blck_lightlyArmed_ARMA3 = [ "B_G_Offroad_01_armed_F", "O_G_Offroad_01_armed_F", "B_MRAP_01_gmg_F", @@ -80,22 +80,20 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_tracked_APC_ARMA3 = [ "B_APC_Tracked_01_rcws_F", "B_APC_Tracked_01_CRV_F", - "B_APC_Tracked_01_AA_F", "O_APC_Tracked_02_cannon_F", - "O_APC_Tracked_02_AA_F", "O_APC_Wheeled_02_rcws_F", "I_APC_tracked_03_cannon_F" ]; blck_Tanks_ARMA3 = [ //"B_MBT_01_arty_F", - "B_MBT_01_mlrs_F", + //"B_MBT_01_mlrs_F", "B_MBT_01_TUSK_F", "O_MBT_02_cannon_F", //"O_MBT_02_arty_F", "I_MBT_03_cannon_F" ]; - + #ifdef useCUP blck_APC_CUP = [ "CUP_B_Mastiff_GMG_GB_D", "CUP_B_Mastiff_HMG_GB_D", @@ -124,35 +122,36 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR blck_Tanks_CUP = [ "CUP_B_M2A3Bradley_USA_D", - "CUP_B_M113_desert_USA", - "CUP_B_M163_USA", + //"CUP_B_M113_desert_USA", + //"CUP_B_M163_USA", "CUP_B_M6LineBacker_USA_D", "CUP_B_M1A1_DES_US_Army", "CUP_B_M1A2_TUSK_MG_DES_US_Army", - "CUP_B_AAV_USMC", - "CUP_B_M270_DPICM_USA", + //"CUP_B_AAV_USMC", + //"CUP_B_M270_DPICM_USA", "CUP_B_ZSU23_CDF", - "CUP_B_BMP2_CDF", + //"CUP_B_BMP2_CDF", "CUP_B_T72_CDF", - "CUP_I_T34_NAPA", + //"CUP_I_T34_NAPA", "CUP_B_Challenger2_NATO", - "CUP_B_FV432_Bulldog_GB_D_RWS", - "CUP_B_FV432_Bulldog_GB_D", + //"CUP_B_FV432_Bulldog_GB_D_RWS", + //"CUP_B_FV432_Bulldog_GB_D", "CUP_B_FV510_GB_D_SLAT", - "CUP_B_MCV80_GB_D_SLAT", - "CUP_O_2S6_RU", + //"CUP_B_MCV80_GB_D_SLAT", + //"CUP_O_2S6_RU", "CUP_O_BMP3_RU", "CUP_O_T90_RU", - "CUP_O_T55_SLA", - "CUP_O_BMP1P_TKA", - "CUP_B_M270_DPICM_USA", - "CUP_B_M2Bradley_USA_W", - "CUP_B_FV510_GB_D", - "CUP_B_MCV80_GB_D", - "CUP_B_M7Bradley_USA_D", - "CUP_O_2S6_RU", - "CUP_O_BMP1_TKA" - ]; + "CUP_O_T55_SLA" //, + //"CUP_O_BMP1P_TKA", + //"CUP_B_M270_DPICM_USA", + //"CUP_B_M2Bradley_USA_W", + //"CUP_B_FV510_GB_D", + //"CUP_B_MCV80_GB_D", + //"CUP_B_M7Bradley_USA_D", + //"CUP_O_2S6_RU", + //"CUP_O_BMP1_TKA"" + ]; + #endif blck_AIPatrolVehicles = ["B_LSV_01_armed_F","I_C_Offroad_02_LMG_F","B_T_LSV_01_armed_black_F","B_T_LSV_01_armed_olive_F","B_T_LSV_01_armed_sand_F"]; // Type of vehicle spawned to defend AI bases blck_AIPatrolVehiclesBlue = blck_AIPatrolVehicles; @@ -964,5 +963,5 @@ blck_contructionLoot = blck_BoxLoot_Orange; blck_highPoweredLoot = blck_BoxLoot_Orange; blck_supportLoot = blck_BoxLoot_Orange; -diag_log "[blckeagls] Default Configurations Loaded"; +["[blckeagls] Default Configurations Loaded"] call blck_fnc_log; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_default_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_default_mil.sqf index 54c5125..7d72d4d 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_default_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_default_mil.sqf @@ -952,5 +952,5 @@ blck_contructionLoot = blck_BoxLoot_Orange; blck_highPoweredLoot = blck_BoxLoot_Orange; blck_supportLoot = blck_BoxLoot_Orange; -diag_log "[blckeagls] Default Configurations Loaded"; +["Default Configurations Loaded"] call blck_fnc_log; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf b/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf index a4d56a6..a2e9dcf 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_epoch.sqf @@ -12,7 +12,7 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; #include "\q\addons\custom_server\init\build.sqf"; -diag_log format["[blckeagls] loading configurations for Epoch for blckeagls build %1",blck_buildNumber]; +[format["Loading configurations for Epoch for blckeagls build %1",blck_buildNumber]] call blck_fnc_log; //////////// // Epoch-specific settings //////////// @@ -1177,5 +1177,5 @@ blck_contructionLoot = blck_BoxLoot_Orange; blck_highPoweredLoot = blck_BoxLoot_Orange; blck_supportLoot = blck_BoxLoot_Orange; -diag_log "[blckeagls] Configurations for Epoch Loaded"; +["Configurations for Epoch Loaded"] call blck_fnc_log; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf index 64d7ed9..ab7da7a 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf @@ -1094,5 +1094,5 @@ for examples of how you can do this see \Major\Compositions.sqf blck_highPoweredLoot = blck_BoxLoot_Orange; blck_supportLoot = blck_BoxLoot_Orange; - diag_log "[blckeagls] Configurations for Epoch Loaded"; + ["Configurations for Epoch Loaded"] call blck_fnc_log; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf b/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf index df6fb37..1e5e885 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_exile.sqf @@ -17,11 +17,11 @@ #ifdef blck_milServer if (true) exitWith { - diag_log "[blckeagls] running blck_configs_exile_mil for militarized servers"; + ["Running blck_configs_exile_mil for militarized servers"] call blck_fnc_log; execVM "\q\addons\custom_server\Configs\blck_configs_exile_mil.sqf"; }; #endif -diag_log "[blckeagls] Loading Exile-specific configs for Non-militarized servers: blck_configs_exile.sqf"; +["Loading Exile-specific configs for Non-militarized servers: blck_configs_exile.sqf"] call blck_fnc_log; //////////// // Exile-specific settings //////////// @@ -1272,4 +1272,4 @@ blck_highPoweredLoot = [ ] ]; -diag_log format["[blckeagls] Configurations for Exile Loaded"]; +["Configurations for Exile Loaded"] call blck_fnc_log; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf index cf33878..aa8fc5a 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_exile_mil.sqf @@ -1321,5 +1321,5 @@ blck_highPoweredLoot = [ ] ]; - diag_log format["[blckeagls] Configurations for Exile Loaded"]; + ["Configurations for Exile Loaded"] call blck_fnc_log; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf index 476ff73..779c5d8 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf @@ -12,7 +12,7 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; #include "\q\addons\custom_server\init\build.sqf" - diag_log format["[blckeagls] Loading blck_configs_mil.sqf for Militarized Servers for blckeagls build %1",blck_buildNumber]; + [format["Loading blck_configs_mil.sqf for Militarized Servers for blckeagls build %1",blck_buildNumber]] call blck_fnc_log; /*************************************************************** BLCKEAGLS SUPPLEMENTAL MODULES @@ -98,7 +98,7 @@ blck_missionEndCondition = "playerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" blck_killPercentage = 0.99999999999; // The mission will complete if this fraction of the total AI spawned has been killed. // This facilitates mission completion when one or two AI are spawned into objects. - blck_spawnCratesTiming = "atMissionSpawnGround"; // Choices: "atMissionSpawnGround","atMissionStartAir","atMissionEndGround","atMissionEndAir". + blck_spawnCratesTiming = "atMissionSpawnGround"; // Choices: "atMissionSpawnGround","atMissionSpawnAir","atMissionEndGround","atMissionEndAir". // Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute. // This sets the default value but can be overridden by defining _spawnCrateTiming in the file defining a particular mission. blck_loadCratesTiming = "atMissionSpawn"; // valid choices are "atMissionCompletion" and "atMissionSpawn"; @@ -231,18 +231,18 @@ //////////////////// // Reduce to 1 sec for immediate spawns, or longer if you wish to space the missions out - blck_TMin_Orange = 250; - blck_TMin_Green = 200; - blck_TMin_Blue = 120; - blck_TMin_Red = 150; - blck_TMin_UMS = 180; + blck_TMin_Orange = 480; + blck_TMin_Green = 420; + blck_TMin_Blue = 300; + blck_TMin_Red = 360; + blck_TMin_UMS = 300; //Maximum Spawn time between missions in seconds - blck_TMax_Orange = 360; - blck_TMax_Green = 300; - blck_TMax_Blue = 200; - blck_TMax_Red = 250; - blck_TMax_UMS = 200; + blck_TMax_Orange = 560; + blck_TMax_Green = 500; + blck_TMax_Blue = 360; + blck_TMax_Red = 420; + blck_TMax_UMS = 400; /////////////////////////////// // AI VEHICLE PATROL PARAMETERS @@ -422,17 +422,17 @@ if (toLower(blck_modType) isEqualTo "epoch") then { - diag_log format["[blckeagls] Loading Mission System using Parameters for %1 for militarized servers",blck_modType]; + [format[" Loading Mission System using Parameters for %1 for militarized servers",blck_modType]] call blck_fnc_log; execVM "\q\addons\custom_server\Configs\blck_configs_epoch_mil.sqf"; }; if (toLower(blck_modType) isEqualTo "exile") then { - diag_log format["[blckeagls] Loading Mission System using Parameters for %1 for militarized servers",blck_modType]; + [format[" Loading Mission System using Parameters for %1 for militarized servers",blck_modType]] call blck_fnc_log; execVM "\q\addons\custom_server\Configs\blck_configs_exile_mil.sqf"; }; if (toLower(blck_modType) isEqualTo "default") then { - diag_log format["[blckeagls] Loading Mission System using Parameters for %1 for militarized servers",blck_modType]; + diag_log format[" Loading Mission System using Parameters for %1 for militarized servers",blck_modType]] call blck_fnc_log; execVM "\q\addons\custom_server\Configs\blck_configs_default_mil.sqf"; }; //waitUntil{!isNil "blck_useConfigsGeneratedLoadouts"}; @@ -440,7 +440,7 @@ uiSleep 10; if (blck_useConfigsGeneratedLoadouts) then { - diag_log format["[blckeagls] Dynamic Configs Enabled"]; + [" Dynamic Configs Enabled"] call blck_fnc_log; execVM "\q\addons\custom_server\Configs\blck_dynamicConfigs.sqf"; }; diff --git a/@GMS/addons/custom_server/Missions/Blue/IDAP.sqf b/@GMS/addons/custom_server/Missions/Blue/IDAP.sqf new file mode 100644 index 0000000..94c6e69 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Blue/IDAP.sqf @@ -0,0 +1,143 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Blue Mission with template = default"; +_crateLoot = blck_BoxLoot_Blue; +_lootCounts = blck_lootCountsBlue; +_startMsg = "A IDAP HQ was sighted in a nearby sector! Check the Blue marker on your map for the location!"; +_endMsg = "The IDAP HQ at the Blue Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[200,200],"Solid"]; +_markerColor = "ColorBlue"; +_markerMissionName = "IDAP"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_Patrol_V3_F",[-24.0081,2.26978,-0.00143814],126.833,true,true,[["B_G_HMG_02_high_F",[-0.0534668,1.83252,4.38749],311.417]],[]], + ["Land_Cargo_Patrol_V3_F",[-5.29565,-28.9109,-0.00143814],1.92,true,true,[["B_G_HMG_02_high_F",[1.3645,-1.13159,4.38749],184.956]],[]], + ["Land_Cargo_HQ_V3_F",[-0.00732422,-3.21069,-0.00143814],270.541,true,true,[["B_G_HMG_02_high_F",[1.68311,6.03589,3.16996],360]],[]] +]; + + +_missionLandscape = [ + ["Land_Sign_WarningMilitaryArea_F",[-7.08057,-34.5996,-0.00143862],2.31973,true,true], + ["Land_CncShelter_F",[-11.4443,-31.9636,-0.00143862],0,true,true], + ["Land_CncShelter_F",[-11.4595,-33.4424,-0.00143862],0,true,true], + ["Land_HBarrier_Big_F",[-13.7441,-29.9917,-0.00143862],270.667,true,true], + ["Land_HBarrier_Big_F",[-28.533,-12.366,-0.00143862],92.486,true,true], + ["Land_HBarrier_Big_F",[-25.606,-19.6677,-0.00143862],223.764,true,true], + ["Land_HBarrier_Big_F",[-18.7449,-24.3645,-0.00143862],29.6621,true,true], + ["Land_HBarrier_Big_F",[-9.21753,-20.6865,-0.00143862],92.486,true,true], + ["Land_HBarrier_Big_F",[-9.28906,-28.9602,-0.00143862],92.486,true,true], + ["CamoNet_OPFOR_big_F",[-21.7307,-10.7373,1.64043],272.913,true,true], + ["Land_Cargo_House_V3_F",[-13.5071,0.647949,-0.00143862],0.832826,true,true], + ["Land_HBarrier_Big_F",[-8.40747,-6.52612,-0.00143862],269.796,true,true], + ["Land_HBarrier_Big_F",[-20.4199,6.59521,-0.00143862],180.674,true,true], + ["Land_HBarrier_Big_F",[-11.9136,6.71753,-0.00143862],180.674,true,true], + ["Land_HBarrier_Big_F",[-28.7576,-3.9104,-0.00143862],269.796,true,true], + ["Land_HBarrier_Big_F",[-8.60986,1.66675,-0.00143862],269.796,true,true], + ["Land_HBarrier_Big_F",[-26.3406,3.49731,-0.00143862],305.711,true,true], + ["CamoNet_OPFOR_F",[5.36572,-16.136,0.610557],90.0482,true,true], + ["Land_HBarrier_Big_F",[0.511719,-24.9692,-0.00143862],2.055,true,true], + ["Land_HBarrier_Big_F",[6.54102,-21.916,-0.00143862],307.294,true,true], + ["Land_HBarrier_Big_F",[-1.5127,-29.9829,-0.00143862],270.667,true,true], + ["Land_HBarrier_Big_F",[8.75342,-14.7712,-0.00143862],269.796,true,true], + ["Land_HBarrier_Big_F",[-6.03955,-33.3083,-0.00143862],2.055,true,true], + ["Land_HBarrier_5_F",[-5.41772,-20.895,-0.00143862],2.05508,true,true], + ["Land_HBarrier_Big_F",[8.23633,2.08301,-0.00143862],269.796,true,true], + ["Land_HBarrier_Big_F",[-3.49609,6.90259,-0.00143862],180.674,true,true], + ["Land_HBarrier_Big_F",[8.43506,-6.2915,-0.00143862],269.796,true,true], + ["Land_HBarrier_Big_F",[4.94263,6.96313,-0.00143862],180.674,true,true], + ["CargoNet_01_barrels_F",[-22.2239,-18.2131,-0.00143814],0.000125958,true,true], + ["CargoNet_01_barrels_F",[6.12988,-10.5715,-0.00143862],0.000316873,true,true], + ["CargoNet_01_barrels_F",[4.43457,-19.3284,-0.00143862],3.40987e-006,true,true] +]; + +_missionLootBoxes = [ +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["B_G_Offroad_01_armed_F",[3.04663,-40.3821,0.00804186],262.322] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = [ + +]; + +_missionGroups = [ + //[[-19.4963,-14.0864,4.76837e-007],3,6,"Red",30,45], + //[[-14.4426,-4.01489,4.76837e-007],3,6,"Red",30,45], + //[[-1.97192,-13.9941,4.76837e-007],3,6,"Red",30,45] +]; + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Blue; +_maxNoAI = blck_MaxAI_Blue; +_noAIGroups = blck_AIGrps_Blue; +_noVehiclePatrols = blck_SpawnVeh_Blue; +_noEmplacedWeapons = blck_SpawnEmplaced_Blue; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Blue"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_spawnCratesTiming = blck_spawnCratesTiming; // Choices: "atMissionSpawnGround","atMissionEndGround","atMissionEndAir". + // Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute. + // This sets the default value but can be overridden by defining _spawnCrateTiming in the file defining a particular mission. +_loadCratesTiming = blck_loadCratesTiming; // valid choices are "atMissionCompletion" and "atMissionSpawn"; + // Pertains only to crates spawned at mission spawn. + // This sets the default but can be overridden for specific missions by defining _loadCratesTiming + + // Examples: + // To spawn crates at mission start loaded with gear set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionSpawn" + // To spawn crates at mission start but load gear only after the mission is completed set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionCompletion" + // To spawn crates on the ground at mission completion set blck_spawnCratesTiming = "atMissionEndGround" // Note that a loaded crate will be spawned. + // To spawn crates in the air and drop them by chutes set blck_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned. +_endCondition = allKilledOrPlayerNear; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" + // Setting this in the mission file overrides the defaults + +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Blue/Service_point.sqf b/@GMS/addons/custom_server/Missions/Blue/Service_point.sqf new file mode 100644 index 0000000..7a2550f --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Blue/Service_point.sqf @@ -0,0 +1,162 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Blue Mission with template = default"; +_crateLoot = blck_BoxLoot_Blue; +_lootCounts = blck_lootCountsBlue; +_startMsg = "A Service Point was sighted in a nearby sector! Check the Blue marker on your map for the location!"; +_endMsg = "The Service Point at the Blue Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[200,200],"Solid"]; +_markerColor = "ColorBlue"; +_markerMissionName = "Service Point"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_Patrol_V1_F",[-19.2107,-30.5151,-0.00143814],0,true,true,[["B_G_HMG_02_high_F",[1.16187,-1.16968,4.38749],177.998],["B_G_HMG_02_high_F",[-2.16211,13.6677,0.0444469],95.0891]],[]], + ["Land_Cargo_Patrol_V1_F",[-0.0581055,-30.4399,-0.00143814],0,true,true,[["B_G_HMG_02_high_F",[-1.44629,-1.22632,4.38749],184.401]],[]] +]; + +_missionLandscape = [ + ["Land_RoadBarrier_01_F",[-9.31006,-35.3601,-0.00143862],0,true,true], + ["Land_Sign_WarningMilitaryArea_F",[-2.61255,-36.5635,-0.00143862],359.892,true,true], + ["Land_HBarrierBig_F",[-24.6367,-14.2813,-0.00143862],271.204,true,true], + ["Land_HBarrierBig_F",[-18.7668,-25.9514,-0.00143862],0.792412,true,true], + ["Land_HBarrierBig_F",[-24.3547,-22.8525,-0.00143862],269.27,true,true], + ["Land_HBarrierBig_F",[-24.0122,-31.4038,-0.00143862],269.27,true,true], + ["Land_HBarrierBig_F",[-18.7783,-34.6914,-0.00143862],0.792412,true,true], + ["Land_PaperBox_closed_F",[-21.1392,-13.5237,-0.00143862],0,true,true], + ["CamoNet_INDP_open_F",[-20.3684,-17.9075,-0.00143862],93.326,true,true], + ["Land_Device_assembled_F",[-4.73267,4.11304,-0.00143862],0,true,true], + ["Land_Cargo_House_V1_F",[-12.1433,1.5144,-0.00143862],359.944,true,true], + ["Land_Cargo_House_V1_F",[-18.6406,-5.72363,-0.00143862],270.169,true,true], + ["Land_HBarrierBig_F",[-13.1831,7.9502,-0.00143862],181.375,true,true], + ["Land_HBarrierBig_F",[-24.7129,-5.87695,-0.00143862],271.204,true,true], + ["Land_HBarrierBig_F",[-4.71753,8.1543,-0.00143862],181.375,true,true], + ["Land_HBarrierBig_F",[-24.738,2.64307,-0.00143862],271.568,true,true], + ["Land_HBarrierBig_F",[-21.6355,7.85986,-0.00143862],181.375,true,true], + ["CargoPlaftorm_01_green_F",[-19.5588,2.55005,-0.00143862],0,true,true], + ["Land_HBarrierBig_F",[-0.253174,-26.094,-0.00143862],0.792412,true,true], + ["Land_HBarrierBig_F",[13.2122,-14.0542,-0.00143862],270.301,true,true], + ["Land_HBarrierBig_F",[8.23169,-25.9136,-0.00143862],359.697,true,true], + ["Land_HBarrierBig_F",[-0.206543,-34.8694,-0.00143862],359.697,true,true], + ["Land_HBarrierBig_F",[13.2056,-22.5811,-0.00143862],271.956,true,true], + ["Land_HBarrierBig_F",[4.76733,-31.5369,-0.00143862],271.956,true,true], + ["Land_BagFence_Long_F",[15.9219,-12.9792,-0.00143862],359.93,true,true], + ["Land_PaperBox_closed_F",[2.95581,-21.4031,-0.00143862],327.535,true,true], + ["Land_PaperBox_closed_F",[9.46167,-21.7529,-0.00143862],88.9779,true,true], + ["Land_BagFence_Corner_F",[17.7617,-12.5837,-0.00143862],89.1122,true,true], + ["Land_MedicalTent_01_wdl_generic_outer_F",[6.18726,-18.9663,-0.00143862],90.6678,true,true], + ["Land_BagFence_Short_F",[18.0669,-11.1177,-0.00143862],270.301,true,true], + ["Land_Cargo_House_V1_F",[18.2529,0.919678,-0.00143862],359.944,true,true], + ["Land_RoadBarrier_01_F",[13.8696,-5.63843,-0.00143862],89.9252,true,true], + ["Land_HBarrierBig_F",[13.0317,2.95288,-0.00143862],271.956,true,true], + ["Land_HBarrierBig_F",[3.65161,8.21143,-0.00143862],181.375,true,true], + ["Land_HBarrierBig_F",[9.88525,8.16089,-0.00143862],181.89,true,true], + // + ["B_Slingload_01_Repair_F",[-34.0637,-5.31909,-0.00143814],286.86,true,true], + ["B_Slingload_01_Ammo_F",[-33.7891,1.13989,-0.00143719],1.26154,true,true], + ["CargoNet_01_barrels_F",[-20.8491,-21.4822,-0.00143909],326.531,true,true], + ["Land_Pod_Heli_Transport_04_fuel_F",[-19.8706,2.42847,7.17512],360,true,true], + ["CargoNet_01_barrels_F",[-7.34326,5.33838,-0.00143862],36,true,true], + ["B_Slingload_01_Cargo_F",[-28.2134,-3.27197,-0.00143862],347.458,true,true], + ["B_Slingload_01_Ammo_F",[-1.96753,20.9294,-0.00143814],13.8038,true,true], + ["B_Slingload_01_Fuel_F",[-4.57788,15.0125,-0.00143862],307.628,true,true], + ["CargoNet_01_barrels_F",[5.34155,-21.6731,0.269362],13.203,true,true], + ["B_Slingload_01_Repair_F",[2.70557,16.3206,-0.00143814],299.402,true,true], + ["CargoNet_01_barrels_F",[2.15674,5.51074,-0.00143957],326.531,true,true], + ["B_Slingload_01_Cargo_F",[8.86084,17.0483,-0.00143862],360,true,true], + ["Land_RepairDepot_01_green_F",[5.00415,1.97778,-0.000936985],180.302,true,true] +]; + +_missionLootBoxes = [ +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["B_G_Offroad_01_armed_F",[-8.93213,-44.4866,0.00822115],273.053], + ["B_G_Offroad_01_armed_F",[16.876,-5.17969,0.00825357],294.284] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = [ + //["B_G_HMG_02_high_F",[-21.3728,-16.8474,0.0430088],95.0891], + //["B_G_HMG_02_high_F",[16.0146,-12.0088,0.043014],89.3354] +]; + +_missionGroups = [ + //[[-18.5681,-19.4417,4.76837e-007],3,6,"Red",30,45], + //[[-9.15723,-30.8086,4.76837e-007],3,6,"Red",30,45], + //[[7.19946,-18.9819,4.76837e-007],3,6,"Red",30,45], + //[[3.74561,-8.16309,4.76837e-007],3,6,"Red",30,45] +]; + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Blue; +_maxNoAI = blck_MaxAI_Blue; +_noAIGroups = blck_AIGrps_Blue; +_noVehiclePatrols = blck_SpawnVeh_Blue; +_noEmplacedWeapons = blck_SpawnEmplaced_Blue; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Blue"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_spawnCratesTiming = blck_spawnCratesTiming; // Choices: "atMissionSpawnGround","atMissionEndGround","atMissionEndAir". + // Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute. + // This sets the default value but can be overridden by defining _spawnCrateTiming in the file defining a particular mission. +_loadCratesTiming = blck_loadCratesTiming; // valid choices are "atMissionCompletion" and "atMissionSpawn"; + // Pertains only to crates spawned at mission spawn. + // This sets the default but can be overridden for specific missions by defining _loadCratesTiming + + // Examples: + // To spawn crates at mission start loaded with gear set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionSpawn" + // To spawn crates at mission start but load gear only after the mission is completed set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionCompletion" + // To spawn crates on the ground at mission completion set blck_spawnCratesTiming = "atMissionEndGround" // Note that a loaded crate will be spawned. + // To spawn crates in the air and drop them by chutes set blck_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned. +_endCondition = allKilledOrPlayerNear; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" + // Setting this in the mission file overrides the defaults + +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Blue/Toxin.sqf b/@GMS/addons/custom_server/Missions/Blue/Toxin.sqf new file mode 100644 index 0000000..8c35c92 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Blue/Toxin.sqf @@ -0,0 +1,166 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Blue Mission with template = default"; +_crateLoot = blck_BoxLoot_Blue; +_lootCounts = blck_lootCountsBlue; +_startMsg = "A Toxin Center was sighted in a nearby sector! Check the Blue marker on your map for the location!"; +_endMsg = "The Toxin Center at the Blue Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[200,200],"Solid"]; +_markerColor = "ColorBlue"; +_markerMissionName = "Toxin Center"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Research_HQ_F",[-6.71143,10.6191,-0.00143909],179.046,true,true,[["B_GMG_01_high_F",[2.39746,3.8103,3.11371],360]],[]], + ["Land_Research_HQ_F",[11.5024,-2.94189,-0.00143909],89.179,true,true,[["B_Mortar_01_F",[0.713867,-5.21362,3.1624],360],["B_HMG_01_high_F",[-7.5625,-20.228,-0.0121174],180.433]],[]] +]; + +_missionLandscape = [ + ["Land_Mil_WiredFence_F",[-9.75415,-20.865,-0.00143909],359.2,true,true], + ["Land_Mil_WiredFence_F",[-21.4592,-9.60181,-0.00143909],89.3037,true,true], + ["Land_Mil_WiredFence_F",[-17.6565,-20.9314,-0.00143909],359.2,true,true], + ["Land_Mil_WiredFence_F",[-21.3225,-17.4338,-0.00143909],89.3037,true,true], + ["Land_Mil_WiredFence_F",[-21.4573,-1.78149,-0.00143909],89.3037,true,true], + ["Land_Device_assembled_F",[-12.4314,0.409668,-0.00143909],0,true,true], + ["Land_Sign_WarningMilitaryArea_F",[-7.7229,-21.8035,-0.00143909],359.892,true,true], + ["Land_Sign_WarningMilitaryArea_F",[4.04224,-21.6248,-0.00143909],359.892,true,true], + ["Land_HBarrierBig_F",[-17.3535,-2.16992,-0.00143909],271.204,true,true], + ["Land_HBarrierBig_F",[-17.0715,-10.7412,-0.00143909],269.27,true,true], + ["Land_HBarrierBig_F",[-11.4836,-13.8401,-0.00143909],0.792412,true,true], + ["Land_BagFence_Long_F",[-7.15112,-24.29,-0.00143909],0.556939,true,true], + ["Land_BagFence_Long_F",[3.73877,-24.3738,-0.00143909],180.252,true,true], + ["Land_PaperBox_closed_F",[-14.3025,-3.37964,-0.00143909],327.535,true,true], + ["Land_BagFence_Corner_F",[-9.23682,-24.0522,-0.00143909],177.869,true,true], + ["Land_BagFence_Corner_F",[5.64087,-23.9683,-0.00143909],90.5438,true,true], + ["Land_BagFence_Short_F",[-9.64136,-22.7109,-0.00143909],268.498,true,true], + ["Land_Mil_WiredFenceD_F",[-21.8179,13.9368,-0.00143909],89.5986,true,true], + ["Land_Mil_WiredFence_F",[5.21021,25.5369,-0.00143909],179.508,true,true], + ["Land_Mil_WiredFence_F",[-21.8245,21.7146,-0.00143909],89.3037,true,true], + ["Land_Mil_WiredFence_F",[-18.2957,25.3298,-0.00143909],179.508,true,true], + ["Land_Mil_WiredFence_F",[-2.63354,25.4646,-0.00143909],179.508,true,true], + ["Land_Mil_WiredFence_F",[-10.4656,25.3845,-0.00143909],179.508,true,true], + ["Land_Mil_WiredFence_F",[-21.5764,6.02905,-0.00143909],89.3037,true,true], + ["Land_HBarrierBig_F",[-14.3523,19.9712,-0.00143909],181.375,true,true], + ["Land_HBarrierBig_F",[-1.87573,20.2095,-0.00143909],181.375,true,true], + ["Land_HBarrierBig_F",[-17.4297,6.23438,-0.00143909],271.204,true,true], + ["Land_HBarrierBig_F",[2.31177,20.2192,-0.00143909],181.375,true,true], + ["Land_HBarrierBig_F",[-17.4548,14.7544,-0.00143909],271.568,true,true], + ["Land_Mil_WiredFence_F",[5.88647,-20.7947,-0.00143909],359.2,true,true], + ["Land_Mil_WiredFence_F",[25.0657,-17.1169,-0.00143909],269.14,true,true], + ["Land_Mil_WiredFence_F",[21.5857,-20.6306,-0.00143909],0.102386,true,true], + ["Land_Mil_WiredFence_F",[24.927,-9.29077,-0.00143909],269.14,true,true], + ["Land_Mil_WiredFence_F",[13.738,-20.6443,-0.00143909],0.102386,true,true], + ["Land_Mil_WiredFence_F",[24.8528,-1.49976,-0.00143909],269.14,true,true], + ["Land_HBarrierBig_F",[20.4888,-10.4697,-0.00143909],271.956,true,true], + ["Land_HBarrierBig_F",[20.4954,-1.94287,-0.00143909],270.301,true,true], + ["Land_HBarrierBig_F",[7.03003,-13.9827,-0.00143909],0.792412,true,true], + ["Land_HBarrierBig_F",[15.5149,-13.8022,-0.00143909],359.697,true,true], + ["Land_BagFence_Short_F",[5.89844,-22.4365,-0.00143909],268.498,true,true], + ["Land_Mil_WiredFence_F",[13.0396,25.6086,-0.00143909],179.508,true,true], + ["Land_Mil_WiredFence_F",[20.884,25.658,-0.00143909],179.508,true,true], + ["Land_Mil_WiredFence_F",[24.5051,22.0549,-0.00143909],269.14,true,true], + ["Land_Mil_WiredFence_F",[24.6458,14.1819,-0.00143909],269.14,true,true], + ["Land_Mil_WiredFence_F",[24.7532,6.3479,-0.00143909],269.14,true,true], + ["Land_HBarrierBig_F",[20.4177,4.55054,-0.00143909],271.054,true,true], + ["Land_HBarrierBig_F",[10.9348,20.3228,-0.00143909],181.375,true,true], + ["Land_HBarrierBig_F",[17.1685,20.2722,-0.00143909],181.89,true,true], + ["Land_HBarrierBig_F",[20.3484,15.8003,-0.00143909],271.956,true,true], + ["Land_Research_house_V1_F",[14.592,14.5435,-0.00143909],0,true,true], + // + ["CargoNet_01_barrels_F",[-13.5122,-10.8784,-0.00144005],0.00034241,true,true], + ["CargoNet_01_barrels_F",[-13.6389,-8.33862,-0.00143957],326.531,true,true], + ["CargoNet_01_barrels_F",[9.43994,17.6221,-0.00143957],326.531,true,true], + ["B_Slingload_01_Fuel_F",[29.73,4.14917,-0.00143909],156.234,true,true] +]; + +_missionLootBoxes = [ +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["B_T_LSV_01_armed_F",[-2.67554,-31.7471,-0.0237646],87.6435], + ["B_T_LSV_01_armed_F",[-5.24243,34.4316,-0.023603],270.757] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = [ + //["B_HMG_01_high_F",[3.93994,-23.1699,-0.0135565],180.433], + //["B_HMG_01_high_F",[-7.9519,-23.1421,-0.0135584],180.433] +]; + +_missionGroups = [ + //[[-1.2981,-19.1914,0],3,6,"Red",30,45], + //[[6.48682,10.343,0],3,6,"Red",30,45] +]; + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Blue; +_maxNoAI = blck_MaxAI_Blue; +_noAIGroups = blck_AIGrps_Blue; +_noVehiclePatrols = blck_SpawnVeh_Blue; +_noEmplacedWeapons = blck_SpawnEmplaced_Blue; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Blue"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_spawnCratesTiming = blck_spawnCratesTiming; // Choices: "atMissionSpawnGround","atMissionEndGround","atMissionEndAir". + // Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute. + // This sets the default value but can be overridden by defining _spawnCrateTiming in the file defining a particular mission. +_loadCratesTiming = blck_loadCratesTiming; // valid choices are "atMissionCompletion" and "atMissionSpawn"; + // Pertains only to crates spawned at mission spawn. + // This sets the default but can be overridden for specific missions by defining _loadCratesTiming + + // Examples: + // To spawn crates at mission start loaded with gear set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionSpawn" + // To spawn crates at mission start but load gear only after the mission is completed set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionCompletion" + // To spawn crates on the ground at mission completion set blck_spawnCratesTiming = "atMissionEndGround" // Note that a loaded crate will be spawned. + // To spawn crates in the air and drop them by chutes set blck_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned. +_endCondition = allKilledOrPlayerNear; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" + // Setting this in the mission file overrides the defaults + +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Blue/derbunker.sqf b/@GMS/addons/custom_server/Missions/Blue/derbunker.sqf new file mode 100644 index 0000000..2f78e1b --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Blue/derbunker.sqf @@ -0,0 +1,116 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Blue Mission with template = default"; +_crateLoot = blck_BoxLoot_Blue; +_lootCounts = blck_lootCountsBlue; +_startMsg = "An enemy Bunker was sighted in a nearby sector! Check the Blue marker on your map for the location!"; +_endMsg = "The Bunker at the Blue Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[300,300],"GRID"]; +_markerColor = "ColorBlue"; +_markerMissionName = "DerBunker"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Bunker_01_big_F",[-15.925,9.02295,0.760561],90.071,true,true,[["O_HMG_01_high_F",[-5.45947,-3.38574,0.109706],359.994]],[]], + ["Land_Bunker_01_tall_F",[-15.377,-8.8042,-0.00143909],90.071,true,true,[["O_HMG_01_high_F",[5.50562,-2.54395,-0.0121193],0.00145215],["O_HMG_01_high_F",[-1.72095,-0.109375,4.96893],0.00948966]],[]], + ["Land_Bunker_01_tall_F",[-15.76,28.606,-0.00143909],90.071,true,true,[["O_HMG_01_high_F",[5.47437,2.47559,-0.0121179],0.000581241],["O_HMG_01_high_F",[-1.38867,-0.0722656,4.967],359.999],["O_HMG_01_high_F",[11.8271,5.87988,-0.0121188],0.00143633]],[]], + ["Land_Bunker_01_big_F",[20.199,10.729,0.760561],270.416,true,true,[["O_HMG_01_high_F",[5.86328,3.25586,0.109697],0.0117801]],[]], + ["Land_Bunker_01_tall_F",[19.8899,-8.86914,-0.00143909],270.416,true,true,[["O_HMG_01_high_F",[-5.13818,-2.33496,-0.0121174],0.0002874],["O_HMG_01_high_F",[1.45801,0.0512695,4.96698],360]],[]], + ["Land_Bunker_01_tall_F",[19.731,28.542,-0.00143909],270.416,true,true,[["O_HMG_01_high_F",[-5.00977,2.1792,-0.0121188],0.00143735],["O_HMG_01_high_F",[1.80957,0.26709,4.96756],360],["O_HMG_01_high_F",[-12.0127,6.1333,-0.0121193],0.00145178]],[]] +]; + +_missionLandscape = [ + ["Land_Bunker_01_blocks_3_F",[-13.762,17.5518,-0.00143909],270.35,true,true], + ["Land_Bunker_01_blocks_3_F",[-0.0979004,-12.9033,-0.00143909],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[-5.18799,-12.9092,-0.00143909],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[-10.175,-12.9253,-0.502439],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[-13.814,-4.44141,-0.00143909],270.35,true,true], + ["Land_Bunker_01_blocks_3_F",[-13.7959,0.544922,-0.00143909],270.35,true,true], + ["CamoNet_INDP_big_F",[2.23804,-2.70508,-0.00143909],182.545,true,true], + ["Land_Bunker_01_blocks_3_F",[-13.7451,22.5391,-0.00143909],270.35,true,true], + ["Land_Bunker_01_blocks_3_F",[-2.51611,30.105,-0.00143909],90.192,true,true], + ["Land_Bunker_01_blocks_3_F",[-10.6179,32.6689,-0.432439],0.106,true,true], + ["Land_Bunker_01_blocks_3_F",[-5.63013,32.6719,-0.00143909],0.106,true,true], + ["Land_Bunker_01_blocks_3_F",[17.958,2.1958,-0.00143909],90.695,true,true], + ["Land_Bunker_01_blocks_3_F",[14.9771,-12.854,-0.529439],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[4.88892,-12.8853,-0.00143909],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[17.9109,-2.78906,-0.00143909],90.695,true,true], + ["Land_Bunker_01_blocks_3_F",[9.98999,-12.8711,-0.00143909],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[6.58691,30.1689,-0.00143909],269.774,true,true], + ["Land_Bunker_01_blocks_3_F",[18.095,19.2026,-0.00143909],90.695,true,true], + ["Land_Bunker_01_blocks_3_F",[18.1409,24.189,-0.00143909],90.695,true,true], + ["Land_Bunker_01_blocks_3_F",[9.54907,32.6689,-0.00143909],0.106,true,true], + ["Land_Bunker_01_blocks_3_F",[14.5359,32.6729,-0.363439],0.106,true,true] +]; + +_missionLootBoxes = [ + //["Exile_Container_SupplyBox",[0.0446777,-1.31494,-0.001441],_crateLoot,_lootCounts,0.00167282] +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["O_LSV_02_armed_F",[-37.46,8.55273,-0.0378561],359.999], + ["O_LSV_02_unarmed_F",[38.3699,8.21484,-0.0378113],359.999] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = []; // + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Blue; +_maxNoAI = blck_MaxAI_Blue; +_noAIGroups = blck_AIGrps_Blue; +_noVehiclePatrols = blck_SpawnVeh_Blue; +_noEmplacedWeapons = blck_SpawnEmplaced_Blue; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Blue"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Blue/forgotten_HQ.sqf b/@GMS/addons/custom_server/Missions/Blue/forgotten_HQ.sqf new file mode 100644 index 0000000..73c2431 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Blue/forgotten_HQ.sqf @@ -0,0 +1,208 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Blue Mission with template = default"; +_crateLoot = blck_BoxLoot_Blue; +_lootCounts = blck_lootCountsBlue; +_startMsg = "A Forgotten HQ was sighted in a nearby sector! Check the Blue marker on your map for the location!"; +_endMsg = "The Forgotten HQ at the Blue Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[200,200],"Solid"]; +_markerColor = "ColorBlue"; +_markerMissionName = "Forgotten"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_Patrol_V2_F",[-16.0361,-36.5635,-0.00143862],0,true,true,[["O_G_HMG_02_high_F",[1.07422,-1.17676,4.38749],183.214]],[]], + ["Land_Cargo_Patrol_V2_F",[1.44385,-36.4934,-0.00143862],0,true,true,[["O_G_HMG_02_high_F",[-1.49438,-1.08521,4.38749],183.771]],[]], + ["Land_Cargo_HQ_V2_F",[-20.6721,-8.55249,-0.00143862],180,true,true,[["O_G_HMG_02_high_F",[-4.84253,-3.34399,3.16997],0.00630354]],[]], + ["Land_Cargo_Tower_V2_F",[-16.9631,-26.0334,-0.00143909],180,true,true,[["O_G_HMG_02_high_F",[-4.54858,0.758057,17.9329],0.00661736],["O_G_HMG_02_high_F",[3.65967,3.33838,17.9329],0.000690221]],[]], + ["Land_Cargo_HQ_V2_F",[7.14893,2.62769,-0.00143862],270.279,true,true,[["O_G_HMG_02_high_F",[-0.843506,5.84277,3.16996],0.00567617]],[]] +]; + + +_missionLandscape = [ + ["Land_CncWall4_F",[-32.4219,-12.8027,-0.00143909],90,true,true], + ["Land_CncWall4_F",[-32.4495,-2.36279,-0.00143909],90,true,true], + ["Land_CncWall4_F",[-32.4219,-7.55273,-0.00143909],90,true,true], + ["Land_CncWall1_F",[-32.4219,-16.0527,-0.00143909],90,true,true], + ["Land_CncWall1_F",[-32.1719,-17.3027,-0.00143909],60,true,true], + ["Land_CncWall4_F",[-17.2,-37.5388,-0.00143909],0,true,true], + ["Land_CncWall4_F",[-19.45,-35.2888,-0.00143909],90,true,true], + ["Land_CncWall1_F",[-13.95,-37.2888,-0.00143909],345,true,true], + ["Land_CncWall1_F",[-0.469971,-37.123,-0.00143909],15,true,true], + ["Land_CncWall1_F",[-1.70728,-36.5938,-0.00143909],30,true,true], + ["Land_CncWall1_F",[-12.7,-36.7888,-0.00143909],330,true,true], + ["Land_Mil_WiredFence_Gate_F",[-7.18335,-36.4424,-0.00143909],0,true,true], + ["Land_LampShabby_F",[-2.78442,-36.3179,-0.00143909],267.423,true,true], + ["Land_LampShabby_F",[-11.5483,-36.9063,-0.00143909],96.8408,true,true], + ["Land_Razorwire_F",[-15.4663,-50.6616,-0.00143909],0,true,true], + ["Land_Garbage_square5_F",[-5.48242,-33.7585,-0.00143909],0,true,true], + ["Land_New_WiredFence_10m_Dam_F",[-23.4219,-33.3027,0.0484428],90,true,true], + ["Oil_Spill_F",[-0.250732,-46.9929,-0.00143909],0,true,true], + ["Land_New_WiredFence_10m_F",[-18.6699,-48.1602,-0.00143909],0,true,true], + ["Land_New_WiredFence_10m_F",[-8.92188,-48.0527,-0.00143909],0,true,true], + ["Land_New_WiredFence_10m_F",[-23.377,-43.2129,-0.00143909],90,true,true], + ["Land_CncWall4_F",[-10.9219,-12.4277,-0.00143909],270,true,true], + ["Land_CncWall4_F",[-10.9219,-7.17773,-0.00143909],270,true,true], + ["Land_CncWall4_F",[-23.9219,-17.8027,-0.00143909],0,true,true], + ["Land_CncWall4_F",[-19.0479,-28.729,-0.00143909],90,true,true], + ["Land_CncWall4_F",[-18.5469,-17.8027,-0.00143909],0,true,true], + ["Land_CncWall4_F",[-29.2969,-17.8027,-0.00143909],0,true,true], + ["Land_CncWall4_F",[-19.0479,-23.479,-0.00143909],90,true,true], + ["Land_CncWall1_F",[-12.0469,-16.5527,-0.00143909],315,true,true], + ["Land_CncWall1_F",[-13.0469,-17.1777,-0.00143909],345,true,true], + ["Land_CncWall1_F",[-11.2969,-15.5527,-0.00143909],300,true,true], + ["Land_CncWall1_F",[-18.7979,-20.229,-0.00143909],105,true,true], + ["Land_CncWall1_F",[-19.2,-32.0388,-0.00143909],105,true,true], + ["Land_CncWall1_F",[-1.87036,-6.15894,-0.00143909],76.1339,true,true], + ["Land_CncWall1_F",[-18.2979,-18.979,-0.00143909],120,true,true], + ["Land_CncWall1_F",[-0.776123,-8.00391,-0.00143909],44.3183,true,true], + ["Land_CncWall1_F",[-1.98975,-5.05225,-0.00143909],89.3183,true,true], + ["Land_CncWall1_F",[-10.9346,-1.3584,-0.00143909],254.791,true,true], + ["Land_CncWall1_F",[-1.50586,-7.08521,-0.00143909],59.3183,true,true], + ["Land_LampShabby_F",[-12.0967,-15.9277,-0.00143909],304.187,true,true], + ["Land_CncShelter_F",[-5.76489,-3.25,-0.00143909],90.2789,true,true], + ["Land_CncShelter_F",[-2.69824,-3.26221,-0.00143909],90.2789,true,true], + ["Land_CncShelter_F",[-10.3674,-3.21143,-0.00143909],90.2789,true,true], + ["Land_CncShelter_F",[-7.29834,-3.24414,-0.00143909],90.2789,true,true], + ["Land_CncShelter_F",[-8.83398,-3.21729,-0.00143909],90.2789,true,true], + ["Land_CncShelter_F",[-4.23169,-3.25635,-0.00143909],90.2789,true,true], + ["Land_CncShelter_F",[-14.8062,-17.8242,-0.00143909],0,true,true], + ["Land_New_WiredFence_10m_F",[-23.4219,-23.3027,-0.00143909],90,true,true], + ["Land_Garbage_line_F",[-6.69629,-14.0273,-0.00143909],0,true,true], + ["Land_CncWall4_F",[-2.08496,5.92285,-0.00143909],90.2789,true,true], + ["Land_CncWall4_F",[-24.9495,-0.112793,-0.00143909],180,true,true], + ["Land_CncWall4_F",[-2.11108,0.548096,-0.00143909],90.2789,true,true], + ["Land_CncWall4_F",[-19.6995,-0.112793,-0.00143909],180,true,true], + ["Land_CncWall4_F",[-2.05884,11.2979,-0.00143909],90.2789,true,true], + ["Land_CncWall4_F",[-30.1995,-0.112793,-0.00143909],180,true,true], + ["Land_CncWall4_F",[-14.4768,-0.108398,-0.00143909],180,true,true], + ["Land_CncWall1_F",[-0.293457,14.4143,-0.00143909],180.279,true,true], + ["Land_CncWall1_F",[-11.5137,-0.462158,-0.00143909],218.676,true,true], + ["Land_CncWall1_F",[-1.54468,14.1704,-0.00143909],150.279,true,true], + ["Land_CncWall4_F",[2.78003,-37.373,-0.00143909],0,true,true], + ["Land_CncWall4_F",[5.15894,-34.9495,-0.00143909],270,true,true], + ["Land_New_WiredFence_5m_F",[18.6162,-49.2598,-0.00143909],180,true,true], + ["Land_Mil_WiredFence_Gate_F",[1.02295,-48.2319,-0.00143909],0,true,true], + ["Land_Razorwire_F",[14.8767,-50.5405,-0.0014348],0,true,true], + ["Land_Garbage_square5_F",[3.02661,-41.5759,-0.00143909],0,true,true], + ["Land_New_WiredFence_10m_F",[22.4329,-43.2773,-0.00143766],90,true,true], + ["Land_New_WiredFence_10m_F",[20.8657,-33.5273,-0.00143909],270,true,true], + ["Land_New_WiredFence_10m_F",[11.0781,-47.8027,-0.00143909],0,true,true], + ["Land_CncWall4_F",[15.5647,-3.63062,-0.00143909],270.279,true,true], + ["Land_CncWall4_F",[12.5393,-8.48145,-0.00143909],0.278918,true,true], + ["Land_CncWall4_F",[2.11768,-8.40479,-0.00143909],0.278918,true,true], + ["Land_CncWall4_F",[7.28931,-8.45581,-0.00143909],0.278918,true,true], + ["Land_CncWall4_F",[5.1084,-19.2168,-0.00143909],270,true,true], + ["Land_CncWall4_F",[5.07373,-13.9578,-0.00143909],270,true,true], + ["Land_CncWall4_F",[5.14282,-29.6782,-0.00143909],270,true,true], + ["Land_CncWall4_F",[5.11499,-24.4495,-0.00143909],270,true,true], + ["Land_CncWall1_F",[15.2651,-8.03906,-0.00143909],300.801,true,true], + ["Land_CncWall1_F",[15.5632,-6.90161,-0.00143909],270.801,true,true], + ["Land_HelipadSquare_F",[14.0413,-24.9829,-0.00143909],0,true,true], + ["Land_New_WiredFence_5m_F",[18.8281,-8.80273,-0.00143909],180,true,true], + ["Land_LampShabby_F",[14.521,-6.92456,-0.00143909],315,true,true], + ["Land_CncShelter_F",[4.83472,-10.1133,-0.00143909],90.2789,true,true], + ["Land_GarbageBags_F",[2.49902,-16.0364,-0.00143909],0,true,true], + ["Land_New_WiredFence_10m_F",[20.8281,-23.5527,-0.00143909],270,true,true], + ["Land_New_WiredFence_10m_F",[20.8281,-13.5527,-0.00143909],270,true,true], + ["Land_Wreck_Heli_Attack_02_F",[13.4341,-23.897,-0.00143909],0,true,true], + ["Land_CncWall4_F",[15.6953,12.0864,-0.00143909],270.279,true,true], + ["Land_CncWall4_F",[13.4563,14.3474,-0.00143909],180.279,true,true], + ["Land_CncWall4_F",[15.6443,1.58667,-0.00143909],270.279,true,true], + ["Land_CncWall4_F",[8.2063,14.3728,-0.00143909],180.279,true,true], + ["Land_CncWall4_F",[15.6697,6.83643,-0.00143909],270.279,true,true], + ["Land_CncWall4_F",[2.9563,14.3984,-0.00143909],180.279,true,true] +]; + +_missionLootBoxes = [ +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["O_G_Offroad_01_armed_F",[-10.8826,-67.0554,0.00841188],85.3805], + ["O_G_Offroad_01_armed_F",[-7.25098,-35.3657,0.00811148],357.094] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = [ + +]; + +_missionGroups = [ + //[[-10.0691,-41.8555,0],3,6,"Red",30,45], + //[[-1.13232,-24.1541,0],3,6,"Red",30,45], + //[[-9.49146,-26.8044,0],3,6,"Red",30,45], + //[[12.8374,-37.3408,0],3,6,"Red",30,45] +]; + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Blue; +_maxNoAI = blck_MaxAI_Blue; +_noAIGroups = blck_AIGrps_Blue; +_noVehiclePatrols = blck_SpawnVeh_Blue; +_noEmplacedWeapons = blck_SpawnEmplaced_Blue; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Blue"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_spawnCratesTiming = blck_spawnCratesTiming; // Choices: "atMissionSpawnGround","atMissionEndGround","atMissionEndAir". + // Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute. + // This sets the default value but can be overridden by defining _spawnCrateTiming in the file defining a particular mission. +_loadCratesTiming = blck_loadCratesTiming; // valid choices are "atMissionCompletion" and "atMissionSpawn"; + // Pertains only to crates spawned at mission spawn. + // This sets the default but can be overridden for specific missions by defining _loadCratesTiming + + // Examples: + // To spawn crates at mission start loaded with gear set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionSpawn" + // To spawn crates at mission start but load gear only after the mission is completed set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionCompletion" + // To spawn crates on the ground at mission completion set blck_spawnCratesTiming = "atMissionEndGround" // Note that a loaded crate will be spawned. + // To spawn crates in the air and drop them by chutes set blck_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned. +_endCondition = allKilledOrPlayerNear; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" + // Setting this in the mission file overrides the defaults + +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Blue/garrison.sqf b/@GMS/addons/custom_server/Missions/Blue/garrison.sqf index 191984a..be4b26b 100644 --- a/@GMS/addons/custom_server/Missions/Blue/garrison.sqf +++ b/@GMS/addons/custom_server/Missions/Blue/garrison.sqf @@ -17,7 +17,7 @@ //diag_log "[blckeagls] Spawning Green Mission with template = default"; _crateLoot = blck_BoxLoot_Green; _lootCounts = blck_lootCountsGreen; -_startMsg = "An enemy garrison!"; +_startMsg = "An enemy garrison was sighted in a nearby sector!"; _endMsg = "The garrison is under survivor control!"; _markerLabel = ""; _markerType = ["ellipse",[225,225],"GRID"]; diff --git a/@GMS/addons/custom_server/Missions/Blue/inhaftierung.sqf b/@GMS/addons/custom_server/Missions/Blue/inhaftierung.sqf new file mode 100644 index 0000000..30609f8 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Blue/inhaftierung.sqf @@ -0,0 +1,180 @@ +/* + Mission Template by Ghostrider [GRG] + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Blue Mission with template = default2"; + +_crateLoot = blck_BoxLoot_Blue; +_lootCounts = blck_lootCountsBlue; +_startMsg = "A local Mafia Don has been spotted! Capture him and earn a reward!"; +_endMsg = "The Maria Don was captured and the area is under survivor control!"; +_assetKilledMsg = "Enemy Leader Killed and Bandits Fled with All Loot: Mission Aborted"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[300,300],"Solid"]; +_markerColor = "ColorBlue"; +_markerMissionName = "inhaftierung"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" +_missionLandscape = [ + //["babe_helper",[-3327.46,-2809.42,-0.00143909],0,true,true], + //["Sign_Arrow_Green_F",[-3324.96,-2809.92,-0.00143909],0,true,true], + //["Sign_Arrow_F",[-3324.96,-2809.92,-0.00143909],0,true,true], + //["Sign_Arrow_Yellow_F",[-3324.96,-2809.92,-0.00143909],0,true,true], + ["Land_HBarrier_Big_F",[-2.76221,-30.3596,-0.00143909],0,true,true], + ["Land_HBarrier_1_F",[-9.74463,-27.0081,-0.00143909],180,true,true], + ["Land_BagFence_Long_F",[-9.74268,-29.0042,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[-8.36182,-30.3743,-0.00143909],180,true,true], + ["CamoNet_OPFOR_open_F",[-0.361816,-1.01782,-0.00143909],180,true,true], + ["Land_HBarrier_3_F",[-15.3853,-13.9866,-0.00143909],315,true,true], + ["Land_HBarrier_Big_F",[-3.61768,-5.26782,-0.00143909],180,true,true], + ["Land_HBarrier_Big_F",[-5.46533,3.40405,-0.00143909],0,true,true], + ["Land_HBarrier_Big_F",[-18.5767,-14.5354,-0.00143909],45,true,true], + ["Land_HBarrier_Big_F",[-12.4985,-20.3987,-0.00143909],45,true,true], + ["Land_HBarrier_1_F",[-22.9692,-2.77563,-0.00143909],270,true,true], + ["Land_HBarrier_1_F",[-23.3423,0.478271,-0.00143909],15,true,true], + ["Land_BagFence_Long_F",[-24.5767,-9.90649,-0.00143909],315,true,true], + ["Land_BagFence_Long_F",[-22.8071,-8.13794,-0.00143909],315,true,true], + ["Land_BagFence_Long_F",[-18.7427,-12.3811,-0.00143909],315,true,true], + ["Land_BagFence_Long_F",[-23.2368,2.26245,-0.00143909],90,true,true], + ["Land_BagFence_Long_F",[-21.8657,6.25952,-0.00143909],0,true,true], + ["Land_BagFence_Long_F",[-22.3657,-13.8772,-0.00143909],135,true,true], + ["Land_BagFence_Long_F",[-9.74268,-25.1174,-0.00143909],90,true,true], + ["Land_BagFence_Long_F",[-18.5649,-8.3147,-0.00143909],45,true,true], + ["Land_BagFence_Long_F",[-23.2368,4.88843,-0.00143909],90,true,true], + ["Land_BagFence_Long_F",[-25.2192,0.111084,-0.00143909],0,true,true], + ["Land_BagFence_Long_F",[-25.2192,-2.76587,-0.00143909],0,true,true], + ["Land_BagFence_Long_F",[-26.5884,-1.39282,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[-24.3989,-13.9709,-0.00143909],225,true,true], + ["Land_BagFence_Round_F",[-17.5747,-10.4006,-0.00143909],270,true,true], + ["Land_BagFence_Round_F",[-25.5493,-11.9026,-0.00143909],90,true,true], + ["Land_BagFence_Round_F",[-20.7212,-7.07642,-0.00143909],180,true,true], + ["Land_BagFence_End_F",[-9.7583,-23.3167,-0.00143909],270,true,true], + ["Land_Cargo_Patrol_V3_F",[-10.9263,-16.053,-0.00143862],45,true,true], + ["Land_Cargo_House_V3_F",[-3.09424,-20.7424,-0.00143909],180,true,true], + ["CamoNet_OPFOR_open_F",[-0.225098,8.17163,-0.00143909],0,true,true], + ["Land_HBarrier_3_F",[-1.85596,17.1208,-0.00143909],180,true,true], + ["Land_HBarrier_3_F",[-2.70752,19.4275,-0.00143909],90,true,true], + ["Land_HBarrier_Big_F",[-19.6177,9.36694,-0.00143909],270,true,true], + ["Land_HBarrier_Big_F",[-19.6646,17.5466,-0.00143909],90,true,true], + ["Land_HBarrier_1_F",[-4.93994,9.58374,-0.00143909],270,true,true], + ["Land_HBarrier_1_F",[-16.4673,27.1775,-0.00143909],285,true,true], + ["Land_HBarrier_1_F",[-2.68408,25.3513,-0.00143909],120,true,true], + ["Land_BagFence_Long_F",[-2.30908,23.7244,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[-19.7173,23.0505,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[-19.7153,25.9265,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[-18.3462,27.4314,-0.00143909],0,true,true], + ["Land_Cargo_Patrol_V3_F",[-15.4087,10.7146,-0.00143862],90,true,true], + ["Land_HBarrier_5_F",[-15.7407,14.7517,-0.00143909],0,true,true], + ["Land_HBarrier_5_F",[-6.33838,7.41382,-0.00143909],270,true,true], + ["Land_HBarrier_Big_F",[4.87646,-28.4124,-0.00143909],330,true,true], + ["Land_HBarrier_3_F",[10.5171,0.540771,-0.00143909],0,true,true], + ["Land_HBarrier_3_F",[11.3687,-7.17212,-0.00143909],270,true,true], + ["Land_HBarrier_Big_F",[23.0171,-13.6155,-0.00143909],285,true,true], + ["Land_HBarrier_Big_F",[3.04834,3.62964,-0.00143909],1.36604e-005,true,true], + ["Land_HBarrier_Big_F",[11.8745,-23.9084,-0.00143909],330,true,true], + ["Land_HBarrier_Big_F",[7.90967,0.343506,-0.00143909],90,true,true], + ["Land_HBarrier_Big_F",[24.978,-5.36938,-0.00143909],285,true,true], + ["Land_HBarrier_Big_F",[11.2808,-4.62427,-0.00143909],180,true,true], + ["Land_HBarrier_Big_F",[25.9077,2.68921,-0.00143909],270,true,true], + ["Land_HBarrier_1_F",[4.35498,-2.41431,-0.00143909],90,true,true], + ["Land_HBarrier_1_F",[21.0073,-21.7493,-0.00143909],30,true,true], + ["Land_BagFence_Long_F",[19.1304,-21.6174,-0.00143909],0,true,true], + ["Land_BagFence_Long_F",[16.5073,-21.6174,-0.00143909],0,true,true], + ["Land_BagFence_Long_F",[7.89795,6.07788,-0.00143909],270,true,true], + ["Land_Loudspeakers_F",[21.2026,-15.3088,-0.00143909],196,true,true], + ["Land_HBarrier_5_F",[17.7847,6.20483,-0.00143909],270,true,true], + ["Land_HBarrier_5_F",[11.3823,-11.5022,-0.00143909],270,true,true], + ["Land_HBarrier_5_F",[5.75146,-0.244385,-0.00143909],90,true,true], + ["Land_Cargo_House_V3_F",[5.49561,-9.99927,-0.00143909],90,true,true], + ["Land_Cargo_House_V3_F",[5.03076,-17.6174,-0.00143909],150,true,true], + ["CamoNet_OPFOR_open_F",[22.6538,9.88257,-0.00143909],270,true,true], + ["Land_HBarrier_3_F",[18.7593,9.75757,-0.00143909],0,true,true], + ["Land_HBarrier_Big_F",[9.20264,21.2849,-0.00143909],180,true,true], + ["Land_HBarrier_Big_F",[15.9546,18.7849,-0.00143909],225,true,true], + ["Land_HBarrier_Big_F",[22.4077,16.1892,-0.00143909],0,true,true], + ["Land_HBarrier_Big_F",[0.70459,21.283,-0.00143909],180,true,true], + ["Land_HBarrier_Big_F",[25.7827,11.0642,-0.00143909],90,true,true], + ["Land_BagFence_Long_F",[4.57764,19.0466,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[4.57764,16.1716,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[11.3843,19.2634,-0.00143909],90,true,true], + ["Land_BagFence_End_F",[4.57764,14.4216,-0.00143909],90,true,true], + ["Land_BagFence_End_F",[7.68896,7.77515,-0.00143909],240,true,true], + ["Land_BagFence_End_F",[11.3843,17.5134,-0.00143909],90,true,true] + ]; // list of objects to spawn as landscape; // list of objects to spawn as landscape + +_buildings = [ + //"Land_Cargo_HQ_V4_F", + //"Land_Cargo_HQ_V1_F", + //"Land_Cargo_HQ_V2_F", + //"Land_Cargo_HQ_V3_F", + //"Land_Cargo_Tower_V1_F", + //"Land_Cargo_Tower_V2_F", + //"Land_Cargo_Tower_V3_F", + "Land_Cargo_Patrol_V3_F", + "Land_Cargo_House_V3_F" +]; +_enemyLeaderConfig = + ["I_G_resistanceLeader_F", // select 0 + [-7.83789,13.1465,-0.00143886], // select 1 + 126.345, // select 2 + [true,false], // select 3 + ["Acts_B_briefings"], // Use the animation viewer to see other choices: http://killzonekid.com/arma-3-animation-viewer-jumping-animation/ + ["H_Beret_Colonel"], // array of headgear choices + ["U_OrestesBody"], // array of uniform choices + [selectRandom _buildings,[-3.79102,2.56055,0],0,[true,false]] + ]; +_enemyLeaderConfig set[ + 1, selectRandom [[-7.83789,13.1465,-0.00143886]] + ]; + // This allows us to place the antagonist to be arrested in one of several random locations. +_missionLootBoxes = [ + //["Box_NATO_Wps_F",[3,-3,0],_crateLoot,[4,10,2,5,5,1]], // Standard loot crate with standard loadout + //["Land_PaperBox_C_EPOCH",[-4,-3,0],_crateLoot,[0,0,0,10,10,3]], // No Weapons, Magazines, or optics; 10 each construction supplies and food/drink items, 3 backpacks + //["Land_CargoBox_V1_F",[3,4,0],_crateLoot,[0,10,2,5,5,1]] + ]; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. + + // blck_lootCountsBlue= [4,12,3,6,6,1]; +_missionPatrolVehicles = [ + //["B_LSV_01_armed_F",[-41.377,-5.40894,-0.0238895],0.00171121], + ["B_LSV_01_armed_F",[39.5627,-5.26709,-0.0237107],0.00169144] + ]; // Parameters are "vehiclel type", offset relative to mission center, loot array, items to load from each category of the loot array. + // ["B_HMG_01_high_F"/*,"B_GMG_01_high_F","O_static_AT_F"*/]; + + /* + ["B_G_Soldier_AR_F",[-19.5156,25.2598,-0.00143886],0,[true,false]], + ["B_G_Soldier_AR_F",[-27.7676,-24.5508,-0.00143886],0,[true,false]], + ["B_G_Soldier_AR_F",[32.4883,-23.4609,-0.00143886],0,[true,false]], + ["B_G_Soldier_AR_F",[36.6914,12.1836,-0.00143886],0,[true,false]] + */ + + +_missionEmplacedWeapons = []; // +_missionPatrolVehicles = [ + //["B_MRAP_01_hmg_F",[27.8945,100.275,0],0,[true,false]], + //["B_MRAP_01_hmg_F",[-84.7793,72.2617,9.53674e-007],0,[true,false]], + //["B_MRAP_01_gmg_F",[-87.8457,-109.947,7.15256e-007],0,[true,false]] +]; +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Blue; +_maxNoAI = blck_MaxAI_Blue; +_noAIGroups = blck_AIGrps_Blue; +_noVehiclePatrols = blck_SpawnVeh_Blue; +_noEmplacedWeapons = blck_SpawnEmplaced_Blue; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; +_chanceReinforcements = blck_chanceParaBlue; +_noPara = blck_noParaBlue; +_chanceHeliPatrol = 0; +_spawnCratesTiming = "atMissionEndAir"; +_endCondition = "assetSecured"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear", "assetSecured" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/Camp_Moreell.sqf b/@GMS/addons/custom_server/Missions/Green/Camp_Moreell.sqf new file mode 100644 index 0000000..24acfb8 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Green/Camp_Moreell.sqf @@ -0,0 +1,156 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Green Mission with template = default"; +_crateLoot = blck_BoxLoot_Green; +_lootCounts = blck_lootCountsGreen; +_startMsg = "Enemy Camp Moreell was built in a nearby sector! Check the Green marker on your map for the location!"; +_endMsg = "The Camp Moreell at the Green Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[200,200],"Solid"]; +_markerColor = "ColorGreen"; +_markerMissionName = "Camp Moreell"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_Patrol_V3_F",[-3.45557,32.6038,-0.00143814],163.034,true,true,[["O_HMG_01_high_F",[-1.75244,0.382568,4.33092],0.00157772]],[]], + ["Land_Cargo_HQ_V3_F",[1.5835,1.53711,-0.00143814],90.021,true,true,[["O_HMG_01_high_F",[-4.53003,1.89331,3.1134],270.551],["O_Mortar_01_F",[0.884277,-5.92041,3.1624],178.341],["O_GMG_01_high_F",[-11.2842,-8.48218,-0.0118098],221.694],["O_HMG_01_high_F",[-12.6897,-6.82007,-0.0121179],236.126],["O_GMG_01_high_F",[10.885,-11.4487,-0.0118084],147.658],["O_GMG_01_high_F",[19.3098,-6.53003,-0.0118093],147.655]],[]], + ["Land_Cargo_Patrol_V3_F",[10.9478,34.4741,-0.00143814],195.395,true,true,[["O_HMG_01_high_F",[1.41943,0.690674,4.33092],359.999]],[]] +]; + + + +_missionLandscape = [ + ["Land_HBarrier_Big_F",[-14.1831,0.348877,-0.00143862],54.7855,true,true], + ["Land_HBarrier_1_F",[-7.70728,-8.24048,-0.00143862],295.873,true,true], + ["Land_BagFence_Long_F",[-11.6091,-6.83057,-0.00143862],45.3947,true,true], + ["Land_BagFence_Round_F",[-12.8318,-4.68042,-0.00143862],90.3947,true,true], + ["Land_BagFence_Round_F",[-9.44946,-8.13599,-0.00143862],0.394724,true,true], + ["Land_Cargo_House_V3_F",[-11.8579,27.8225,-0.00143862],341.505,true,true], + ["CamoNet_OPFOR_open_F",[-14.8772,18.198,-0.00143862],90.3947,true,true], + ["Land_HBarrier_Big_F",[-24.5461,25.9207,-0.00143862],195.395,true,true], + ["Land_HBarrier_Big_F",[-7.8335,30.6655,-0.00143862],255.395,true,true], + ["Land_HBarrier_Big_F",[-24.0242,10.8638,-0.00143862],165.395,true,true], + ["Land_HBarrier_Big_F",[-18.0986,7.95679,-0.00143862],255.395,true,true], + ["Land_HBarrier_Big_F",[-19.7212,22.9065,-0.00143862],90.3947,true,true], + ["Land_HBarrier_Big_F",[-31.6633,25.0271,-0.00143862],150.395,true,true], + ["Land_HBarrier_Big_F",[-12.3518,34.6216,-0.00143862],345.395,true,true], + ["Land_HBarrier_Big_F",[-17.9399,30.3276,-0.00143862],300.395,true,true], + ["Land_HBarrier_Big_F",[-19.3733,16.4546,-0.00143862],90.3947,true,true], + ["Land_HBarrier_1_F",[-32.8965,12.5454,-0.00143862],42.5069,true,true], + ["Land_HBarrier_1_F",[-30.3511,10.0146,-0.00143862],42.5069,true,true], + ["CamoNet_OPFOR_big_F",[-27.2468,18.4834,-0.00143862],75.3947,true,true], + ["Land_BagFence_Round_F",[-33.3694,10.7087,-0.00143862],87.5069,true,true], + ["Land_BagFence_Round_F",[-31.8938,9.28491,-0.00143862],357.507,true,true], + ["Land_HBarrier_5_F",[9.15552,-4.91626,-0.00143862],269.593,true,true], + ["Land_HBarrier_5_F",[9.13477,0.585938,-0.00143862],269.593,true,true], + ["Land_Cargo_House_V3_F",[25.2329,2.59155,-0.00143862],105.395,true,true], + ["Land_HBarrier_Big_F",[-2.57373,-8.99463,-0.00143862],180.395,true,true], + ["Land_HBarrier_Big_F",[26.4961,-2.62256,-0.00143862],195.395,true,true], + ["Land_HBarrier_Big_F",[5.79712,-8.80371,-0.00143862],180.395,true,true], + ["Land_HBarrier_1_F",[14.0208,-8.50757,-0.00143862],334.157,true,true], + ["Land_HBarrier_1_F",[22.1511,-3.42603,-0.00143862],324.626,true,true], + ["Land_HBarrier_1_F",[19.1423,-5.3833,-0.00143862],324.626,true,true], + ["Land_HBarrier_1_F",[10.7295,-9.9397,-0.00143862],334.157,true,true], + ["Land_BagFence_Round_F",[22.5408,-5.08765,-0.00143862],279.626,true,true], + ["Land_BagFence_Round_F",[20.8389,-6.23145,-0.00143862],9.62595,true,true], + ["Land_BagFence_Round_F",[14.1299,-10.2107,-0.00143862],289.157,true,true], + ["Land_BagFence_Round_F",[12.262,-11.0569,-0.00143862],19.157,true,true], + ["Land_HBarrier_5_F",[7.05835,9.52783,-0.00143862],181.048,true,true], + ["Land_HBarrier_5_F",[26.3564,29.2161,-0.00143862],195.395,true,true], + ["Land_HBarrier_5_F",[9.08203,5.92139,-0.00143862],269.593,true,true], + ["Land_HBarrier_Big_F",[18.55,34.8018,-0.00143862],195.395,true,true], + ["Land_HBarrier_Big_F",[1.32568,35.1333,-0.00143862],255.395,true,true], + ["Land_HBarrier_Big_F",[7.22388,36.5254,-0.00143862],285.395,true,true], + ["Land_HBarrier_Big_F",[-4.35571,36.8228,-0.00143862],345.395,true,true], + ["Land_HBarrier_Big_F",[7.04761,30.9424,-0.00143862],195.395,true,true], + ["Land_BagFence_Long_F",[24.1768,15.7207,-0.00143862],105.395,true,true], + ["Land_BagFence_Long_F",[22.7461,10.5283,-0.00143862],285.395,true,true], + ["Land_HBarrier_3_F",[25.4558,17.1135,-0.00143862],195.395,true,true], + ["Land_HBarrier_3_F",[22.7898,29.1609,-0.00143862],285.395,true,true], + ["Land_HBarrier_3_F",[23.3201,8.88696,-0.00143862],195.395,true,true], + ["Land_HBarrier_Big_F",[12.9075,38.3318,-0.00143862],195.395,true,true], + ["Land_HBarrier_Big_F",[30.9158,1.41919,-0.00143862],105.395,true,true], + ["Land_HBarrier_5_F",[29.5054,24.8923,-0.00143862],269.593,true,true], + ["Land_HBarrier_5_F",[29.5303,19.5947,-0.00143862],269.593,true,true], + ["CamoNet_OPFOR_open_F",[28.1597,12.0786,-0.00143862],195.395,true,true], + ["Land_HBarrier_Big_F",[31.4031,16.592,-0.00143862],0.394724,true,true], + ["Land_HBarrier_Big_F",[28.876,7.35913,-0.00143862],195.395,true,true], + ["Land_HBarrier_1_F",[33.3733,10.5449,-0.00143862],15.3947,true,true], + ["Land_HBarrier_1_F",[27.9988,12.1958,-0.00143862],195.395,true,true], + ["Land_BagFence_Long_F",[32.6428,9.11694,-0.00143862],285.395,true,true], + ["Land_BagFence_Long_F",[28.4683,13.8879,-0.00143862],105.395,true,true], + ["Land_HBarrier_3_F",[29.9619,29.1274,-0.00143862],105.395,true,true], + ["Land_HBarrier_3_F",[34.8462,14.4836,-0.00143862],90.3947,true,true], + ["Land_BagBunker_Large_F",[27.696,35.6018,-0.00143862],195.395,true,true] +]; + +_missionLootBoxes = [ +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["O_LSV_02_armed_F",[34.9805,-28.0225,-0.0376697],359.999] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = [ + +]; + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Green; +_maxNoAI = blck_MaxAI_Green; +_noAIGroups = blck_AIGrps_Green; +_noVehiclePatrols = blck_SpawnVeh_Green; +_noEmplacedWeapons = blck_SpawnEmplaced_Green; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Green"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/Operations_Command.sqf b/@GMS/addons/custom_server/Missions/Green/Operations_Command.sqf new file mode 100644 index 0000000..3dac5e0 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Green/Operations_Command.sqf @@ -0,0 +1,184 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Green Mission with template = default"; +_crateLoot = blck_BoxLoot_Green; +_lootCounts = blck_lootCountsGreen; +_startMsg = "An Operations Command was sighted in a nearby sector! Check the Green marker on your map for the location!"; +_endMsg = "The Operations Command at the Green Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[300,300],"Solid"]; +_markerColor = "ColorGreen"; +_markerMissionName = "Operations Command"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_Patrol_V3_F",[-26.1375,13.395,-0.00143862],104.247,true,true,[["O_HMG_01_high_F",[-1.16919,-1.02051,4.33092],359.999]],[]], + ["Land_Cargo_Tower_V3_F",[0.0512695,-43.2329,-0.00143909],1.37485,true,true,[["O_HMG_01_high_F",[-11.6333,3.14819,-0.0121188],360],["O_Mortar_01_F",[-3.08325,4.21802,17.9254],0.000187431],["O_GMG_01_high_F",[-3.21069,-3.16113,17.8767],360],["O_GMG_01_high_F",[4.70557,-0.741943,17.8767],360]],[]], + ["Land_Cargo_Patrol_V3_F",[-22.3018,-36.6943,-0.00143862],16.3749,true,true,[["O_HMG_01_high_F",[-1.44019,-0.544922,4.33092],0.000570454],["O_HMG_01_high_F",[-6.95337,5.57886,-0.0121193],359.998]],[]], + ["Land_Cargo_HQ_V3_F",[0.157227,3.02832,-0.00143862],91.3748,true,true,[["O_Mortar_01_F",[1.9917,1.24707,3.16241],359.999],["O_HMG_01_high_F",[-4.22266,1.80176,3.1134],359.999],["O_HMG_01_high_F",[3.10205,-5.8584,3.1134],359.999],["O_HMG_01_high_F",[-6.48584,7.63452,-0.0121193],359.998],["O_HMG_01_high_F",[9.13306,15.3284,-0.0121193],359.998]],[]], + ["Land_Cargo_Tower_V3_F",[-16.1003,25.6072,-0.00143909],181.375,true,true,[["O_HMG_01_high_F",[3.25903,3.35229,17.8764],359.997],["O_GMG_01_high_F",[-4.9707,0.915771,17.8767],359.995]],[]], + ["Land_Cargo_Patrol_V3_F",[21.9438,-2.25854,-0.00143862],269.918,true,true,[["O_GMG_01_high_F",[1.11499,0.921387,4.33123],360]],[]], + ["Land_Cargo_House_V3_F",[7.7749,-26.0698,-0.00143909],1.37485,true,true,[["O_HMG_01_high_F",[2.2688,8.65552,-0.0121188],360]],[]] +]; + + + +_missionLandscape = [ + ["CamoNet_OPFOR_open_F",[-31.8352,-29.0081,-0.00143909],235.13,true,true], + ["CamoNet_OPFOR_open_F",[-43.8352,-16.6941,-0.00143909],181.375,true,true], + ["Land_HBarrier_Big_F",[-37.4087,-8.59814,-0.00143909],286.375,true,true], + ["Land_HBarrier_Big_F",[-29.3643,-37.0271,-0.00143909],37.1575,true,true], + ["Land_HBarrier_Big_F",[-35.4788,-31.5889,-0.00143909],50.6964,true,true], + ["Land_HBarrier_Big_F",[-38.9624,-25.2727,-0.00143909],255.154,true,true], + ["Land_BagBunker_Large_F",[-43.364,-16.4709,-0.00143909],91.3748,true,true], + ["Land_HBarrier_Big_F",[-34.405,-1.28906,-0.00143909],301.375,true,true], + ["Land_HBarrier_Big_F",[-29.0862,14.3416,-0.00143909],286.375,true,true], + ["Land_HBarrier_Big_F",[-31.1816,6.38184,-0.00143909],286.375,true,true], + ["Land_LampHalogen_F",[-29.8584,2.74854,-0.00143862],256.375,true,true], + ["Land_HBarrierWall_corridor_F",[-16.1533,-40.845,-0.00143909],106.375,true,true], + ["Land_HBarrier_Big_F",[-10.9395,-43.5535,-0.00143909],13.6286,true,true], + ["Land_HBarrier_Big_F",[-3.8855,-44.2878,-0.00143909],0.866833,true,true], + ["Land_HBarrier_Big_F",[-22.3318,-40.6543,-0.00143909],200.888,true,true], + ["Land_HBarrier_Big_F",[4.41016,-44.2852,-0.00143909],0.866833,true,true], + ["Land_HBarrier_5_F",[2.9043,-17.4326,-0.00143909],271.375,true,true], + ["Land_HBarrier_5_F",[-5.53174,-9.47681,-0.00143909],181.375,true,true], + ["Land_Cargo_House_V3_F",[-1.97241,-25.8367,-0.00143909],1.37485,true,true], + ["Land_HBarrier_Big_F",[-9.21558,-15.051,-0.00143909],271.375,true,true], + ["Land_HBarrier_Big_F",[-5.97168,-20.2385,-0.00143909],181.375,true,true], + ["Land_HBarrier_Big_F",[2.51318,-20.2158,-0.00143909],181.375,true,true], + ["Land_HBarrier_3_F",[2.83398,-22.9663,-0.00143909],91.3748,true,true], + ["Land_HBarrier_3_F",[2.75586,-26.2246,-0.00143909],91.3748,true,true], + ["Land_HBarrier_3_F",[2.94287,-10.5574,-0.00143909],271.375,true,true], + ["Land_HBarrier_3_F",[0.964355,-9.63477,-0.00143909],1.37485,true,true], + ["Land_HBarrier_3_F",[-6.09448,-25.2507,-0.00143909],271.375,true,true], + ["Land_HBarrier_3_F",[1.72021,-27.6951,-0.00143909],1.37485,true,true], + ["Land_HBarrier_3_F",[-6.02515,-22.2542,-0.00143909],271.375,true,true], + ["Land_HBarrier_3_F",[4.84912,-27.7708,-0.00143909],1.37485,true,true], + ["Land_HBarrier_3_F",[-5.15039,-27.5239,-0.00143909],1.37485,true,true], + ["Land_HelipadCircle_F",[-22.2104,-10.7046,-0.00143909],90.8075,true,true], + ["Land_TTowerBig_2_F",[-3.03882,-15.5251,-0.00143909],1.37485,true,true], + ["Land_HBarrier_5_F",[-24.4253,17.3018,-0.00143909],194.949,true,true], + ["Land_HBarrier_5_F",[-12.988,7.96045,-0.00143909],181.375,true,true], + ["Land_HBarrier_5_F",[-26.457,9.23633,-0.00143909],16.5662,true,true], + ["Land_Cargo_House_V3_F",[-15.2529,3.47607,-0.00143909],91.3748,true,true], + ["Land_HBarrier_Big_F",[-5.96069,14.4766,-0.00143909],1.375,true,true], + ["Land_HBarrier_Big_F",[2.22437,14.509,-0.00143909],1.375,true,true], + ["Land_HBarrier_Big_F",[-9.21826,9.43896,-0.00143909],271.375,true,true], + ["Land_HBarrier_Big_F",[-9.23389,1.12988,-0.00143909],271.375,true,true], + ["Land_HBarrier_Big_F",[-9.2439,-6.94019,-0.00143909],271.375,true,true], + ["Land_HBarrier_Big_F",[-26.9719,22.2693,-0.00143909],286.375,true,true], + ["Land_HBarrier_3_F",[-10.071,23.9849,-0.00143909],91.3748,true,true], + ["Land_HBarrier_Big_F",[-14.6584,26.7698,-0.00143909],1.375,true,true], + ["Land_HBarrier_Big_F",[-22.5229,26.7314,-0.00143909],1.375,true,true], + ["Land_HBarrier_Big_F",[-6.28784,26.8616,-0.00143909],1.375,true,true], + ["Land_HBarrier_Big_F",[1.70752,25.8137,-0.00143909],16.375,true,true], + ["CamoNet_OPFOR_open_F",[13.4675,-46.5574,-0.00143909],256.375,true,true], + ["Land_BagBunker_Large_F",[13.6731,-46.6125,-0.00143909],346.375,true,true], + ["Land_HBarrier_Big_F",[25.0122,-8.42798,-0.00143909],89.245,true,true], + ["Land_HBarrier_Big_F",[20.2207,-26.6072,-0.00143909],346.375,true,true], + ["Land_HBarrier_Big_F",[10.3425,-20.1804,-0.00143909],181.375,true,true], + ["Land_HBarrier_Big_F",[13.3196,-15.1829,-0.00143909],91.375,true,true], + ["Land_HBarrier_Big_F",[25.2847,-22.1433,-0.00143909],89.8961,true,true], + ["Land_HBarrier_Big_F",[15.2939,-23.981,-0.00143909],61.375,true,true], + ["Land_HBarrier_Big_F",[17.6921,-30.4187,-0.00143909],261.124,true,true], + ["Land_HBarrier_Big_F",[18.2314,-37.9956,-0.00143909],275.055,true,true], + ["Land_HBarrier_1_F",[26.3027,-13.0132,-0.00143909],224.245,true,true], + ["Land_HBarrier_1_F",[26.3459,-17.553,-0.00143909],134.896,true,true], + ["Land_HBarrier_3_F",[24.4424,-13.2629,-0.00143909],179.245,true,true], + ["Land_HBarrier_3_F",[23.5449,-11.0381,-0.00143909],89.245,true,true], + ["Land_HBarrier_3_F",[23.5166,-19.6731,-0.00143909],269.896,true,true], + ["Land_HBarrier_3_F",[24.4841,-17.4751,-0.00143909],359.896,true,true], + ["Land_HBarrier_3_F",[26.4421,-11.2278,-0.00143909],89.245,true,true], + ["Land_HBarrier_3_F",[26.521,-19.3137,-0.00143909],269.896,true,true], + ["Land_Tank_rust_F",[17.9231,-22.1641,-0.00143909],238.726,true,true], + ["Land_LampHalogen_F",[25.1262,-18.7678,-0.00143862],151.326,true,true], + ["Land_LampHalogen_F",[25.188,-11.5505,-0.00143862],241.375,true,true], + ["Land_HBarrierWall_corridor_F",[8.88965,13.3088,-0.00143909],76.3748,true,true], + ["Land_HBarrierWall_corridor_F",[11.9426,4.98389,-0.00143909],1.37485,true,true], + ["Land_HBarrierWall_corridor_F",[14.0635,10.1843,-0.00143909],331.375,true,true], + ["CamoNet_OPFOR_open_F",[16.8806,13.8459,-0.00143909],46.3748,true,true], + ["Land_HBarrierWall4_F",[12.9727,17.2073,-0.00143909],301.375,true,true], + ["Land_HBarrierWall4_F",[13.927,14.678,-0.00143909],241.375,true,true], + ["Land_HBarrier_Big_F",[24.7051,-0.242188,-0.00143909],89.245,true,true], + ["Land_HBarrier_Big_F",[8.90503,22.6189,-0.00143909],33.6192,true,true], + ["Land_HBarrier_Big_F",[13.2727,-6.86401,-0.00143909],91.375,true,true], + ["Land_HBarrier_Big_F",[24.3503,8.13452,-0.00143909],89.245,true,true], + ["Land_HBarrier_Big_F",[13.3027,-0.90332,-0.00143909],91.375,true,true], + ["Land_BagBunker_Small_F",[20.2654,17.5417,-0.00143909],226.375,true,true], + ["Land_LampHalogen_F",[10.6421,2.27686,-0.00143862],241.375,true,true], + ["Land_LampHalogen_F",[11.4541,10.5645,-0.00143862],136.375,true,true], + ["Land_HBarrierWall_corner_F",[21.3845,12.748,-0.00143909],46.3748,true,true], + ["Land_HBarrierWall_corner_F",[15.5208,19.1467,-0.00143909],346.375,true,true], + ["Land_HBarrierWall_corner_F",[18.5425,9.32104,-0.00143909],136.375,true,true] +]; + +_missionLootBoxes = [ +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["O_LSV_02_unarmed_F",[-53.4402,-44.895,-0.037971],359.999], + ["O_LSV_02_armed_F",[7.56689,40.9209,-0.0379591],359.999], + ["O_LSV_02_armed_F",[38.9788,-44.417,-0.0373936],359.999] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = []; // + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Green; +_maxNoAI = blck_MaxAI_Green; +_noAIGroups = blck_AIGrps_Green; +_noVehiclePatrols = blck_SpawnVeh_Green; +_noEmplacedWeapons = blck_SpawnEmplaced_Green; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/charlston.sqf b/@GMS/addons/custom_server/Missions/Green/charlston.sqf index 844ca31..ca25c6d 100644 --- a/@GMS/addons/custom_server/Missions/Green/charlston.sqf +++ b/@GMS/addons/custom_server/Missions/Green/charlston.sqf @@ -14,13 +14,13 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; #include "\q\addons\custom_server\Missions\privateVars.sqf"; -_crateLoot = blck_BoxLoot_Red; -_lootCounts = blck_lootCountsRed; +_crateLoot = blck_BoxLoot_Green; +_lootCounts = blck_lootCountsGreen; _startMsg = "Camp Charlston is being built by the enemy in a nearby sector."; _endMsg = "Camp Charleston is under survivor control!"; _markerLabel = ""; -_markerType = ["ellipse",[200,200],"GRID"]; -_markerColor = "ColorRed"; +_markerType = ["ellipse",[200,200],"Solid"]; +_markerColor = "ColorGreen"; _markerMissionName = "Camp Charleston"; _missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" @@ -156,8 +156,8 @@ _missionLootBoxes = []; _missionLootVehicles = []; _missionPatrolVehicles = [ - // ["B_G_Offroad_01_armed_F",[21.4174,19.0781,0.00804281],90.3115], - // ["B_G_Offroad_01_armed_F",[27.5131,-53.1431,0.00819397],268.528] + ["B_G_Offroad_01_armed_F",[21.4174,19.0781,0.00804281],90.3115], + ["B_G_Offroad_01_armed_F",[27.5131,-53.1431,0.00819397],268.528] ]; _missionLootBoxes = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. @@ -167,11 +167,11 @@ _missionGroups = []; // Change _useMines to true/false below to enable mission-specific settings. _useMines = blck_useMines; -_minNoAI = blck_MinAI_Red; -_maxNoAI = blck_MaxAI_Red; -_noAIGroups = blck_AIGrps_Red; -_noVehiclePatrols = blck_SpawnVeh_Red; -_noEmplacedWeapons = blck_SpawnEmplaced_Red; +_minNoAI = blck_MinAI_Green; +_maxNoAI = blck_MaxAI_Green; +_noAIGroups = blck_AIGrps_Green; +_noVehiclePatrols = blck_SpawnVeh_Green; +_noEmplacedWeapons = blck_SpawnEmplaced_Green; _uniforms = blck_SkinList; _headgear = blck_headgear; _chanceLoot = 0.6; @@ -180,6 +180,6 @@ private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highP private _paralootCountsChoices = [[0,0,0,8,8,0],[0,0,0,8,8,0],[8,8,0,0,0,0],[0,0,0,0,12,0]]; _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -//_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/dashq.sqf b/@GMS/addons/custom_server/Missions/Green/dashq.sqf new file mode 100644 index 0000000..31c72ee --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Green/dashq.sqf @@ -0,0 +1,230 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Green Mission with template = default"; +_crateLoot = blck_BoxLoot_Green; +_lootCounts = blck_lootCountsGreen; +_startMsg = "An enemy HQ center was sighted in a nearby sector! Check the Green marker on your map for the location!"; +_endMsg = "The HQ at the Green Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[300,300],"Solid"]; +_markerColor = "ColorGreen"; +_markerMissionName = "Operationsbasis"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_HQ_V1_F",[-0.358154,-18.6514,-0.00143862],179.905,true,true,[["B_HMG_01_high_F",[-6.5437,1.09253,3.11855],145.121],["B_HMG_01_high_F",[-13.9094,-10.7791,-0.0121183],206.716]],[]] +]; + +_missionLandscape = [ + ["Land_PortableLight_double_F",[-42.614,-26.0178,-0.00143909],225.577,true,true], + ["Land_CncWall4_F",[-45.3523,-21.509,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-33.5913,-28.1145,-0.00143909],359.905,true,true], + ["Land_CncWall4_F",[-38.842,-28.124,-0.00143909],359.905,true,true], + ["Land_CncWall1_F",[-44.093,-26.7578,-0.00143909],44.9051,true,true], + ["Land_CncWall1_F",[-43.0923,-27.5063,-0.00143909],29.9051,true,true], + ["Land_CncWall1_F",[-45.2207,-24.6689,-0.00143909],74.9051,true,true], + ["Land_CncWall1_F",[-44.845,-25.7581,-0.00143909],59.9051,true,true], + ["Land_CncWall1_F",[-41.9668,-28.0046,-0.00143909],14.9051,true,true], + ["Land_BagBunker_01_large_green_F",[-49.7271,-16.9226,-0.00143909],90.2555,true,true], + ["Land_Cargo_Tower_V1_F",[-36.3582,-19.3394,-0.00143909],89.905,true,true], + ["Land_CncWall4_F",[-33.4968,-9.73975,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[-45.3792,-5.75879,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-45.3867,-0.508789,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-45.3694,-11.0095,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-45.3955,4.74121,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-45.4041,9.99072,-0.00143909],89.9051,true,true], + ["Land_CncWall1_F",[-32.0076,1.70923,-0.00143909],74.9051,true,true], + ["Land_CncWall1_F",[-31.6313,0.61792,-0.00143909],59.9051,true,true], + ["Land_BagBunker_01_large_green_F",[-49.7959,14.4089,-0.00143909],90.2555,true,true], + ["Land_Cargo_HQ_V1_F",[-34.4014,20.1455,-0.00143862],269.491,true,true], + ["Land_CncWall4_F",[-45.4214,20.4915,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-45.4302,25.7415,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-38.8159,32.2512,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[-33.5662,32.2607,-0.00143909],179.905,true,true], + ["Land_CncWall1_F",[-43.0654,31.7451,-0.00143909],149.905,true,true], + ["Land_CncWall1_F",[-41.9753,32.1199,-0.00143909],164.905,true,true], + ["Land_CncWall1_F",[-44.0635,30.9924,-0.00143909],134.905,true,true], + ["Land_CncWall1_F",[-44.8127,29.991,-0.00143909],119.905,true,true], + ["Land_CncWall1_F",[-45.3108,28.8672,-0.00143909],104.905,true,true], + ["Land_BagFence_Round_F",[-15.3367,-30.4338,-0.00143909],44.9051,true,true], + ["Land_BagFence_Round_F",[-25.8376,-30.2017,-0.00143909],314.905,true,true], + ["Land_PortableLight_double_F",[-2.30811,-29.9211,-0.00143909],44.7366,true,true], + ["Land_CncWall4_F",[-2.09229,-28.0632,-0.00143909],359.905,true,true], + ["Land_CncWall4_F",[-26.9856,-16.3538,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[-13.8528,-21.4565,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-26.9783,-21.6038,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[-7.34155,-28.0718,-0.00143909],359.905,true,true], + ["Land_CncWall4_F",[-13.8606,-16.2065,-0.00143909],89.9051,true,true], + ["Land_CncWall1_F",[-13.3455,-25.7068,-0.00143909],59.9051,true,true], + ["Land_CncWall1_F",[-12.593,-26.7058,-0.00143909],44.9051,true,true], + ["Land_CncWall1_F",[-27.5952,-25.8552,-0.00143909],299.905,true,true], + ["Land_CncWall1_F",[-27.0967,-24.7288,-0.00143909],284.905,true,true], + ["Land_CncWall1_F",[-13.7209,-24.6165,-0.00143909],74.9051,true,true], + ["Land_CncWall1_F",[-10.4666,-27.9514,-0.00143909],14.9051,true,true], + ["Land_CncWall1_F",[-29.3428,-27.6084,-0.00143909],329.905,true,true], + ["Land_CncWall1_F",[-30.4331,-27.9832,-0.00143909],344.905,true,true], + ["Land_CncWall1_F",[-11.592,-27.4541,-0.00143909],29.9051,true,true], + ["Land_CncWall1_F",[-28.3438,-26.855,-0.00143909],314.905,true,true], + ["Land_BagFence_Long_F",[-25.2168,-27.7002,-0.00143909],269.905,true,true], + ["Land_BagFence_Long_F",[-15.9658,-27.9348,-0.00143909],269.905,true,true], + ["Land_BagFence_Long_F",[-12.8359,-31.0559,-0.00143909],359.905,true,true], + ["Land_BagFence_Long_F",[-28.3364,-30.8318,-0.00143909],179.905,true,true], + ["Land_BagFence_Round_F",[-7.19092,10.5073,-0.00143909],44.9051,true,true], + ["Land_PortableLight_double_F",[-11.7207,0.158936,-0.00143909],135.598,true,true], + ["Land_PortableLight_double_F",[-29.4041,0.418701,-0.00143909],218.658,true,true], + ["Land_CncWall4_F",[-7.24731,-9.69678,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[-20.376,-1.73682,-0.00143909],359.905,true,true], + ["Land_CncWall4_F",[-25.6274,-1.74609,-0.00143909],359.905,true,true], + ["Land_CncWall4_F",[-15.1272,-1.72925,-0.00143909],359.905,true,true], + ["Land_CncWall1_F",[-10.4058,-9.82935,-0.00143909],164.905,true,true], + ["Land_CncWall1_F",[-10.8779,-1.22144,-0.00143909],329.905,true,true], + ["Land_CncWall1_F",[-9.13086,0.531982,-0.00143909],299.905,true,true], + ["Land_CncWall1_F",[-11.4956,-10.2031,-0.00143909],149.905,true,true], + ["Land_CncWall1_F",[-8.63257,1.65747,-0.00143909],284.905,true,true], + ["Land_CncWall1_F",[-11.9688,-1.59668,-0.00143909],344.905,true,true], + ["Land_CncWall1_F",[-27.4932,-12.1047,-0.00143909],239.905,true,true], + ["Land_CncWall1_F",[-12.4951,-10.9553,-0.00143909],134.905,true,true], + ["Land_CncWall1_F",[-13.2424,-11.9563,-0.00143909],119.905,true,true], + ["Land_CncWall1_F",[-29.8777,-1.12744,-0.00143909],29.9051,true,true], + ["Land_CncWall1_F",[-9.87939,-0.470703,-0.00143909],314.905,true,true], + ["Land_CncWall1_F",[-30.3708,-9.86011,-0.00143909],194.905,true,true], + ["Land_CncWall1_F",[-30.8787,-0.378906,-0.00143909],44.9051,true,true], + ["Land_CncWall1_F",[-29.2468,-10.3582,-0.00143909],209.905,true,true], + ["Land_CncWall1_F",[-13.7417,-13.0818,-0.00143909],104.905,true,true], + ["Land_CncWall1_F",[-28.2449,-11.1069,-0.00143909],224.905,true,true], + ["Land_CncWall1_F",[-27.1179,-13.1948,-0.00143909],254.905,true,true], + ["Land_CncWall1_F",[-28.7524,-1.62573,-0.00143909],14.9051,true,true], + ["Land_BagFence_Long_F",[-7.8208,13.0066,-0.00143909],269.905,true,true], + ["Land_BagFence_Long_F",[-4.69067,9.88257,-0.00143909],359.905,true,true], + ["Land_Cargo_Patrol_V1_F",[-19.8857,1.92358,-0.00143862],359.905,true,true], + ["Land_Cargo_HQ_V1_F",[-17.6404,20.1672,-0.00143862],269.491,true,true], + ["Land_HelipadSquare_F",[0.169189,17.6489,-0.00143909],359.936,true,true], + ["Land_BagFence_Round_F",[-7.21484,25.1335,-0.00143909],134.905,true,true], + ["Land_BagFence_Round_F",[-8.354,36.8232,-0.00143909],134.905,true,true], + ["Land_CncWall4_F",[-23.0659,32.2773,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[-12.615,32.3005,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[-17.8164,32.2856,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[-7.396,32.3115,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[-2.25146,35.2305,-0.00143909],179.977,true,true], + ["Land_CncWall4_F",[-28.3167,32.269,-0.00143909],179.905,true,true], + ["Land_CncWall1_F",[-4.03638,32.6663,-0.00143909],149.461,true,true], + ["Land_BagFence_Long_F",[-4.71533,25.7625,-0.00143909],359.905,true,true], + ["Land_BagFence_Long_F",[-5.85449,37.4521,-0.00143909],359.905,true,true], + ["Land_BagFence_Long_F",[-7.83618,22.6321,-0.00143909],89.9051,true,true], + ["Land_BagFence_Long_F",[-8.97534,34.3218,-0.00143909],89.9051,true,true], + ["Land_PortableLight_double_F",[12.1106,-26.1833,-0.00143909],149.905,true,true], + ["Land_CncWall4_F",[15.0215,-21.5349,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[8.38428,-28.1101,-0.00143909],359.905,true,true], + ["Land_CncWall4_F",[15.0137,-16.2847,-0.00143909],269.905,true,true], + ["Land_CncWall1_F",[14.9031,-24.6597,-0.00143909],284.905,true,true], + ["Land_CncWall1_F",[12.6567,-27.5383,-0.00143909],329.905,true,true], + ["Land_CncWall1_F",[11.5676,-27.9133,-0.00143909],344.905,true,true], + ["Land_CncWall1_F",[14.4038,-25.7854,-0.00143909],299.905,true,true], + ["Land_CncWall1_F",[13.656,-26.7861,-0.00143909],314.905,true,true], + ["Land_BagFence_Long_F",[12.5037,-23.1807,-0.00143909],89.3707,true,true], + ["Land_BagFence_Long_F",[11.072,-24.5706,-0.00143909],359.905,true,true], + ["Land_BagFence_Long_F",[10.9707,-21.8315,-0.00143909],179.371,true,true], + ["Land_BagFence_Long_F",[9.56812,-23.1921,-0.00143909],269.905,true,true], + ["Land_BagBunker_01_large_green_F",[3.83936,-32.5405,-0.00143909],0,true,true], + ["Land_TTowerSmall_2_F",[11.5024,-23.7861,-0.00143909],179.905,true,true], + ["Land_Cargo_House_V1_F",[9.00171,-10.2603,-0.00143909],89.905,true,true], + ["Land_Cargo_House_V1_F",[8.98071,2.86475,-0.00143909],89.905,true,true], + ["Land_Medevac_house_V1_F",[8.99219,-3.76099,-0.00143909],90.3921,true,true], + ["Land_BagFence_Round_F",[8.05933,10.2788,-0.00143909],314.905,true,true], + ["Land_PortableLight_double_F",[12.8176,7.44629,-0.00143909],134.905,true,true], + ["Land_CncWall4_F",[14.9788,4.71558,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[15.0054,-11.0347,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[14.9961,-5.78418,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[14.9878,-0.533936,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[14.9705,9.96558,-0.00143909],269.905,true,true], + ["Land_BagFence_Long_F",[8.68018,12.7852,-0.00143909],269.905,true,true], + ["Land_BagFence_Long_F",[5.55933,9.6499,-0.00143909],179.905,true,true], + ["Land_BagBunker_01_large_green_F",[19.272,16.1316,-0.00143909],269.832,true,true], + ["Land_BagFence_Round_F",[7.91089,24.9097,-0.00143909],224.905,true,true], + ["Land_BagFence_Round_F",[9.05054,36.9314,-0.00143909],224.905,true,true], + ["Land_PortableLight_double_F",[11.8816,29.2671,-0.00143909],44.7366,true,true], + ["Land_CncWall4_F",[14.9529,20.4653,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[8.43433,32.3303,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[2.95288,35.22,-0.00143909],179.977,true,true], + ["Land_CncWall4_F",[14.9443,25.7156,-0.00143909],269.905,true,true], + ["Land_CncWall1_F",[14.4373,29.9646,-0.00143909],239.905,true,true], + ["Land_CncWall1_F",[14.813,28.8745,-0.00143909],254.905,true,true], + ["Land_CncWall1_F",[13.6853,30.9644,-0.00143909],224.905,true,true], + ["Land_CncWall1_F",[12.6843,31.7119,-0.00143909],209.905,true,true], + ["Land_CncWall1_F",[11.5593,32.2114,-0.00143909],194.905,true,true], + ["Land_CncWall1_F",[5.11841,32.7061,-0.00143909],209.905,true,true], + ["Land_BagFence_Long_F",[8.54004,22.4104,-0.00143909],89.9051,true,true], + ["Land_BagFence_Long_F",[9.67969,34.4321,-0.00143909],89.9051,true,true], + ["Land_BagFence_Long_F",[5.40894,25.5288,-0.00143909],179.905,true,true], + ["Land_BagFence_Long_F",[6.54858,37.5505,-0.00143909],179.905,true,true] +]; + +_missionLootBoxes = [ + //["Exile_Container_SupplyBox",[0.0717773,16.9431,-0.00143814],_crateLoot,_lootCounts,0.000320471] +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + //["O_T_LSV_02_armed_F",[-62.7971,0.422119,-0.0236669],0.00164848], + ["O_T_LSV_02_armed_F",[31.9084,-7.18774,-0.0238085],0.00168349] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = []; // + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Green; +_maxNoAI = blck_MaxAI_Green; +_noAIGroups = blck_AIGrps_Green; +_noVehiclePatrols = blck_SpawnVeh_Green; +_noEmplacedWeapons = blck_SpawnEmplaced_Green; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Green"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/derbunker.sqf b/@GMS/addons/custom_server/Missions/Green/derbunker.sqf new file mode 100644 index 0000000..87ac02e --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Green/derbunker.sqf @@ -0,0 +1,120 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Green Mission with template = default"; +_crateLoot = blck_BoxLoot_Green; +_lootCounts = blck_lootCountsGreen; +_startMsg = "An enemy Bunker was sighted in a nearby sector! Check the Green marker on your map for the location!"; +_endMsg = "The Bunker at the Green Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[300,300],"Solid"]; +_markerColor = "ColorGreen"; +_markerMissionName = "DerBunker"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Bunker_01_big_F",[-15.925,9.02295,0.760561],90.071,true,true,[["O_HMG_01_high_F",[-5.45947,-3.38574,0.109706],359.994]],[]], + ["Land_Bunker_01_tall_F",[-15.377,-8.8042,-0.00143909],90.071,true,true,[["O_HMG_01_high_F",[5.50562,-2.54395,-0.0121193],0.00145215],["O_HMG_01_high_F",[-1.72095,-0.109375,4.96893],0.00948966]],[]], + ["Land_Bunker_01_tall_F",[-15.76,28.606,-0.00143909],90.071,true,true,[["O_HMG_01_high_F",[5.47437,2.47559,-0.0121179],0.000581241],["O_HMG_01_high_F",[-1.38867,-0.0722656,4.967],359.999],["O_HMG_01_high_F",[11.8271,5.87988,-0.0121188],0.00143633]],[]], + ["Land_Bunker_01_big_F",[20.199,10.729,0.760561],270.416,true,true,[["O_HMG_01_high_F",[5.86328,3.25586,0.109697],0.0117801]],[]], + ["Land_Bunker_01_tall_F",[19.8899,-8.86914,-0.00143909],270.416,true,true,[["O_HMG_01_high_F",[-5.13818,-2.33496,-0.0121174],0.0002874],["O_HMG_01_high_F",[1.45801,0.0512695,4.96698],360]],[]], + ["Land_Bunker_01_tall_F",[19.731,28.542,-0.00143909],270.416,true,true,[["O_HMG_01_high_F",[-5.00977,2.1792,-0.0121188],0.00143735],["O_HMG_01_high_F",[1.80957,0.26709,4.96756],360],["O_HMG_01_high_F",[-12.0127,6.1333,-0.0121193],0.00145178]],[]] +]; + +_missionLandscape = [ + //["Sign_Arrow_F",[-3163.22,-5166.85,-0.00143909],0,true,true], + //["Sign_Arrow_Green_F",[-3163.22,-5166.85,-0.00143909],0,true,true], + //["Sign_Arrow_Yellow_F",[-3163.22,-5166.85,-0.00143909],0,true,true], + //["babe_helper",[-3165.72,-5166.35,-0.00143909],90.8645,true,true], + ["Land_Bunker_01_blocks_3_F",[-13.762,17.5518,-0.00143909],270.35,true,true], + ["Land_Bunker_01_blocks_3_F",[-0.0979004,-12.9033,-0.00143909],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[-5.18799,-12.9092,-0.00143909],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[-10.175,-12.9253,-0.502439],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[-13.814,-4.44141,-0.00143909],270.35,true,true], + ["Land_Bunker_01_blocks_3_F",[-13.7959,0.544922,-0.00143909],270.35,true,true], + ["CamoNet_INDP_big_F",[2.23804,-2.70508,-0.00143909],182.545,true,true], + ["Land_Bunker_01_blocks_3_F",[-13.7451,22.5391,-0.00143909],270.35,true,true], + ["Land_Bunker_01_blocks_3_F",[-2.51611,30.105,-0.00143909],90.192,true,true], + ["Land_Bunker_01_blocks_3_F",[-10.6179,32.6689,-0.432439],0.106,true,true], + ["Land_Bunker_01_blocks_3_F",[-5.63013,32.6719,-0.00143909],0.106,true,true], + ["Land_Bunker_01_blocks_3_F",[17.958,2.1958,-0.00143909],90.695,true,true], + ["Land_Bunker_01_blocks_3_F",[14.9771,-12.854,-0.529439],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[4.88892,-12.8853,-0.00143909],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[17.9109,-2.78906,-0.00143909],90.695,true,true], + ["Land_Bunker_01_blocks_3_F",[9.98999,-12.8711,-0.00143909],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[6.58691,30.1689,-0.00143909],269.774,true,true], + ["Land_Bunker_01_blocks_3_F",[18.095,19.2026,-0.00143909],90.695,true,true], + ["Land_Bunker_01_blocks_3_F",[18.1409,24.189,-0.00143909],90.695,true,true], + ["Land_Bunker_01_blocks_3_F",[9.54907,32.6689,-0.00143909],0.106,true,true], + ["Land_Bunker_01_blocks_3_F",[14.5359,32.6729,-0.363439],0.106,true,true] +]; + +_missionLootBoxes = [ + //["Exile_Container_SupplyBox",[0.0446777,-1.31494,-0.001441],_crateLoot,_lootCounts,0.00167282] +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["O_LSV_02_armed_F",[-37.46,8.55273,-0.0378561],359.999], + ["O_LSV_02_unarmed_F",[38.3699,8.21484,-0.0378113],359.999] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = []; // + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Green; +_maxNoAI = blck_MaxAI_Green; +_noAIGroups = blck_AIGrps_Green; +_noVehiclePatrols = blck_SpawnVeh_Green; +_noEmplacedWeapons = blck_SpawnEmplaced_Green; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Green"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/factory.sqf b/@GMS/addons/custom_server/Missions/Green/factory.sqf index 9d5f2c7..671e439 100644 --- a/@GMS/addons/custom_server/Missions/Green/factory.sqf +++ b/@GMS/addons/custom_server/Missions/Green/factory.sqf @@ -43,49 +43,56 @@ _missionLandscape = [ //["Sign_Arrow_F",[-4333.49,-3526.14,-0.00143862],0,true,true], //["Sign_Arrow_Yellow_F",[-4333.49,-3526.14,-0.00143862],0,true,true], ["Land_BagFence_Long_F",[-29.7012,-38.5171,-0.00143862],91.6296,true,true], - ["Land_BagFence_Long_F",[-27.5103,-40.5801,-0.00143862],181.63,true,true], - ["Land_HBarrier_Big_F",[-22.1475,-58.7117,-0.00143862],181.63,true,true], - ["Land_HBarrier_Big_F",[-25.2705,-45.3574,-0.00143862],91.6296,true,true], - ["Land_HBarrier_Big_F",[-25.3784,-53.6096,-0.00143862],91.6296,true,true], - ["Land_BagFence_Corner_F",[-29.377,-40.2764,-0.00143862],181.63,true,true], - ["Land_BagFence_Corner_F",[-25.5186,-40.8857,-0.00143862],1.62962,true,true], - ["Land_BagFence_Long_F",[-27.6362,-36.2009,-0.00143862],1.62962,true,true], - ["Land_HBarrier_Big_F",[-31.3271,-12.1621,-0.00143862],91.6296,true,true], - ["Land_HBarrier_Big_F",[-26.2822,-19.4336,-0.00143862],181.63,true,true], - ["Land_HBarrier_Big_F",[-31.4404,-20.5371,-0.00143862],91.6296,true,true], - ["Land_BagFence_Corner_F",[-29.3945,-36.5234,-0.00143862],271.63,true,true], - ["CamoNet_OPFOR_F",[-25.6099,-22.126,-0.00143862],1.62962,true,true], - ["CamoNet_OPFOR_big_F",[-23.2964,2.06958,-0.00143862],1.62962,true,true], - ["Land_HBarrier_Big_F",[-31.3423,-3.90796,-0.00143862],91.6296,true,true], - ["Land_HBarrier_Big_F",[-27.8384,9.37231,-0.00143862],181.63,true,true], - ["Land_HBarrier_Big_F",[-31.2295,4.46704,-0.00143862],91.6296,true,true], - ["Land_HBarrier_Big_F",[-19.4634,9.25928,-0.00143862],181.63,true,true], - ["Land_BagFence_Round_F",[-3.56348,-51.6428,-0.00143862],316.63,true,true], - ["Land_BagFence_Long_F",[-6.08105,-52.1965,-0.00143862],181.63,true,true], - ["Land_HBarrier_Big_F",[11.7363,-54.9075,-0.00143862],181.63,true,true], - ["Land_HBarrier_Big_F",[3.36133,-54.7944,-0.00143862],181.63,true,true], - ["Land_HBarrier_Big_F",[-8.54834,-55.4766,-0.00143862],91.6296,true,true], - ["Land_HBarrier_Big_F",[-13.6416,-58.7065,-0.00143862],181.63,true,true], - ["Land_dp_mainFactory_F",[7.44922,-29.397,-0.00143862],1.62962,true,true], - ["Land_HBarrier_Big_F",[-6.04248,6.25171,-0.00143862],271.63,true,true], - ["Land_HBarrier_Big_F",[11.5215,8.25244,-0.00143862],181.63,true,true], - ["Land_HBarrier_Big_F",[-11.2095,9.27417,-0.00143862],181.63,true,true], - ["Land_HBarrier_Big_F",[8.12988,3.34741,-0.00143862],91.6296,true,true], - ["Land_HBarrier_Big_F",[19.9902,-54.8926,-0.00143862],181.63,true,true], - ["Land_HBarrier_Big_F",[32.8569,-43.4072,-0.00143862],271.63,true,true], - ["Land_HBarrier_Big_F",[28.146,-54.7991,-0.00143862],181.63,true,true], - ["Land_HBarrier_Big_F",[32.873,-51.5361,-0.00143862],271.63,true,true], - ["Land_BagFence_Round_F",[37.7549,-30.4514,-0.00143862],316.63,true,true], - ["Land_BagFence_Round_F",[37.8594,-28.2903,-0.00143862],226.63,true,true], - ["Land_BagFence_Long_F",[35.2378,-31.0051,-0.00143862],181.63,true,true], - ["Land_HBarrier_Big_F",[33.3535,-19.7563,-0.00143862],271.63,true,true], - ["Land_HBarrier_Big_F",[30.1147,-14.9102,-0.00143862],181.63,true,true], - ["Land_HBarrier_Big_F",[32.8462,-34.9041,-0.00143862],271.63,true,true], - ["Land_HBarrier_Big_F",[24.9575,-11.6372,-0.00143862],271.63,true,true], - ["CamoNet_OPFOR_F",[21.7773,-9.21729,-0.00143862],91.6296,true,true], - ["Land_HBarrier_Big_F",[19.8965,8.1394,-0.00143862],181.63,true,true], - ["Land_HBarrier_Big_F",[24.9307,4.99487,-0.00143862],271.63,true,true], - ["Land_HBarrier_Big_F",[24.9414,-3.5083,-0.00143862],271.63,true,true] + ["Land_HBarrier_Big_F",[0,0,0],181.63,true,true], + ["Land_HBarrier_Big_F",[13.4092,-3.25757,0],271.63,true,true], + ["Land_HBarrier_Big_F",[8.375,-0.113037,0],181.63,true,true], + ["Land_Cargo_Patrol_V3_F",[1.41602,-4.66895,4.76837e-007],181.63,true,true], + ["Land_HBarrier_Big_F",[13.4199,-11.7607,0],271.63,true,true], + ["Land_HBarrier_Big_F",[18.5933,-23.1626,0],181.63,true,true], + ["Land_HBarrier_Big_F",[13.436,-19.8896,0],271.63,true,true], + ["Land_HBarrier_Big_F",[21.832,-28.0088,0],271.63,true,true], + ["Land_BagFence_Round_F",[26.2334,-38.7039,0],316.63,true,true], + ["Land_BagFence_Round_F",[26.3379,-36.5427,0],226.63,true,true], + ["Land_BagFence_Long_F",[23.7163,-39.2576,0],181.63,true,true], + ["CamoNet_OPFOR_F",[10.2559,-17.4697,0],91.6296,true,true], + ["Land_HBarrier_Big_F",[-3.3916,-4.90503,0],91.6296,true,true], + ["Land_HBarrier_Big_F",[-30.9849,1.00684,0],181.63,true,true], + ["Land_HBarrier_Big_F",[-17.564,-2.00073,0],271.63,true,true], + ["Land_HBarrier_Big_F",[-22.731,1.02173,0],181.63,true,true], + ["Land_Cargo_Patrol_V3_F",[-22.2847,-3.47803,4.76837e-007],181.63,true,true], + ["CamoNet_OPFOR_big_F",[-34.8179,-6.18286,0],1.62962,true,true], + ["Land_HBarrier_Big_F",[-20.0698,-63.729,0],91.6296,true,true], + ["Land_HBarrier_Big_F",[-33.6689,-66.9641,0],181.63,true,true], + ["Land_HBarrier_Big_F",[-25.1631,-66.959,0],181.63,true,true], + ["Land_BagFence_Long_F",[-17.6025,-60.449,0],181.63,true,true], + ["Land_Cargo_Tower_V3_F",[-30.2202,-60.043,3.8147e-006],91.6296,true,true], + ["Land_BagFence_Round_F",[-15.085,-59.8953,0],316.63,true,true], + ["Land_HBarrier_Big_F",[-39.3599,1.11987,0],181.63,true,true], + ["Land_HBarrier_Big_F",[-42.751,-3.7854,0],91.6296,true,true], + ["Land_HBarrier_Big_F",[-42.8638,-12.1604,0],91.6296,true,true], + ["Land_HBarrier_Big_F",[-37.8037,-27.686,0],181.63,true,true], + ["Land_HBarrier_Big_F",[-42.8486,-20.4146,0],91.6296,true,true], + ["Land_HBarrier_Big_F",[-42.9619,-28.7896,0],91.6296,true,true], + ["Land_Cargo_Patrol_V3_F",[-38.689,-23.6594,4.76837e-007],91.6296,true,true], + ["CamoNet_OPFOR_F",[-37.1313,-30.3784,0],1.62962,true,true], + ["Land_HBarrier_Big_F",[-36.8999,-61.8621,0],91.6296,true,true], + ["Land_HBarrier_Big_F",[-36.792,-53.6099,0],91.6296,true,true], + ["Land_BagFence_Corner_F",[-37.04,-49.1382,0],1.62962,true,true], + ["Land_BagFence_Corner_F",[-40.8984,-48.5288,0],181.63,true,true], + ["Land_BagFence_Long_F",[-39.0317,-48.8325,0],181.63,true,true], + ["Land_BagFence_Long_F",[-39.1577,-44.4534,0],1.62962,true,true], + ["Land_BagFence_Long_F",[-41.2227,-46.7695,0],91.6296,true,true], + ["Land_BagFence_Corner_F",[-40.916,-44.7759,0],271.63,true,true], + ["Land_HBarrier_Big_F",[0.214844,-63.1599,0],181.63,true,true], + ["Land_HBarrier_Big_F",[8.46875,-63.145,0],181.63,true,true], + ["Land_HBarrier_Big_F",[-8.16016,-63.0469,0],181.63,true,true], + ["Land_HBarrier_Big_F",[21.3247,-43.1565,0],271.63,true,true], + ["Land_HBarrier_Big_F",[21.3354,-51.6597,0],271.63,true,true], + ["Land_HBarrier_Big_F",[21.3516,-59.7886,0],271.63,true,true], + ["Land_HBarrier_Big_F",[16.6245,-63.0515,0],181.63,true,true], + ["Land_Dome_Small_F",[0.337891,-44.8254,-4.76837e-007],0.223401,true,true], + ["Land_dp_smallTank_F",[18.314,-70.0537,0],0,true,true], + ["Land_dp_smallTank_F",[9.81934,-69.9482,0],0,true,true] ]; _missionLootBoxes = []; @@ -93,8 +100,8 @@ _missionLootBoxes = []; _missionLootVehicles = []; _missionPatrolVehicles = [ - // ["B_G_Offroad_01_armed_F",[-53.8027,-29.7834,0.00867844],0.00103655], - // ["B_G_Offroad_01_armed_F",[51.0596,-25.7876,0.00815535],0.00104356] + ["B_G_Offroad_01_armed_F",[-53.8027,-29.7834,0.00867844],0.00103655], + ["B_G_Offroad_01_armed_F",[51.0596,-25.7876,0.00815535],0.00104356] ]; _submarinePatrolParameters = []; @@ -131,6 +138,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -//_endCondition = "playerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/fortification.sqf b/@GMS/addons/custom_server/Missions/Green/fortification.sqf index 877b677..9e60f35 100644 --- a/@GMS/addons/custom_server/Missions/Green/fortification.sqf +++ b/@GMS/addons/custom_server/Missions/Green/fortification.sqf @@ -20,7 +20,7 @@ _lootCounts = blck_lootCountsGreen; _startMsg = "An enemy fortification was sighted in a nearby sector! Check the Green marker on your map for the location!"; _endMsg = "The Sector at the Green Marker is under survivor control!"; _markerLabel = ""; -_markerType = ["ellipse",[225,225],"GRID"]; +_markerType = ["ELLIPSE",[300,300],"Solid"]; _markerColor = "ColorGreen"; _markerMissionName = "Fortification"; _missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" @@ -150,8 +150,8 @@ _missionLootBoxes = []; // Parameters are "Box Item Code", array defining the _missionLootVehicles = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. _missionPatrolVehicles = [ - // ["B_G_Offroad_01_armed_F",[21.4174,19.0781,0.00804281],90.3115], - //["B_G_Offroad_01_armed_F",[27.5131,-53.1431,0.00819397],268.528] + ["B_G_Offroad_01_armed_F",[21.4174,19.0781,0.00804281],90.3115], + ["B_G_Offroad_01_armed_F",[27.5131,-53.1431,0.00819397],268.528] ]; _submarinePatrolParameters = []; @@ -159,20 +159,11 @@ _submarinePatrolParameters = []; _airPatrols = []; _missionEmplacedWeapons = [ - ["B_HMG_01_high_F",[16.2078,-44.0503,-0.0135579],181.165], - ["B_HMG_01_high_F",[-3.70496,-32.2124,-0.0135565],270.389], - ["B_HMG_01_high_F",[19.3164,-15.3716,-0.0135574],225.183], - ["B_HMG_01_high_F",[33.6516,-44.6699,-0.0135579],181.165] + ]; _missionGroups = [ - [[14.1273,-35.917,0],3,6,"Green",30,45], - [[22.5463,-29.3013,0],3,6,"Green",30,45], - [[16.6399,3.69727,0],3,6,"Green",30,45], - [[10.8357,-1.10449,0],3,6,"Green",30,45], - [[8.39612,-12.7705,0],3,6,"Green",30,45], - [[21.4102,-9.12207,0],3,6,"Green",30,45], - [[39.7784,-27.1958,0],3,6,"Green",30,45] + ]; _scubaGroupParameters = []; @@ -192,6 +183,6 @@ private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highP private _paralootCountsChoices = [[0,0,0,8,8,0],[0,0,0,8,8,0],[8,8,0,0,0,0],[0,0,0,0,12,0]]; _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -//_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/lager.sqf b/@GMS/addons/custom_server/Missions/Green/lager.sqf new file mode 100644 index 0000000..58c5102 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Green/lager.sqf @@ -0,0 +1,185 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Green Mission with template = default"; +_crateLoot = blck_BoxLoot_Green; +_lootCounts = blck_lootCountsGreen; +_startMsg = "An enemy Camp was sighted in a nearby sector! Check the Green marker on your map for the location!"; +_endMsg = "The Camp at the Green Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[300,300],"Solid"]; +_markerColor = "ColorGreen"; +_markerMissionName = "Nachschublager"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_Tower_V1_F",[-8.1167,-39.0396,-0.00143862],180.738,true,true,[["O_HMG_01_high_F",[-4.98901,13.312,-0.0121193],359.999],["O_HMG_01_high_F",[-4.88916,0.893799,17.8798],359.999],["O_GMG_01_high_F",[2.86377,5.15186,17.7791],0.00110346],["O_GMG_01_high_F",[3.12354,-4.59814,17.8788],0.00619121],["O_HMG_01_high_F",[8.82837,21.6572,-0.0121193],359.999],["O_GMG_01_high_F",[-3.55591,26.4539,-0.0118098],360]],[]], + ["Land_Cargo_Tower_V1_F",[-8.7854,37.2058,-0.00143862],180.738,true,true,[["O_HMG_01_high_F",[-4.1167,-15.228,-0.0121188],359.999],["O_GMG_01_high_F",[-5.05029,0.812012,17.8801],359.999],["O_HMG_01_high_F",[2.97925,4.90308,17.7791],359.995],["O_HMG_01_high_F",[3.02808,-5.19946,17.8776],359.987],["O_HMG_01_high_F",[9.59595,-22.2854,-0.0121188],359.999],["O_GMG_01_high_F",[-1.95337,-25.9678,-0.0118098],360]],[]], + ["Land_Cargo_HQ_V1_F",[41.5171,-35.4209,-0.00143814],88.7297,true,true,[["O_HMG_01_high_F",[-4.19043,0.419922,3.1134],360],["O_GMG_01_high_F",[1.2395,-6.33594,3.11891],359.998]],[]], + ["Land_Cargo_HQ_V1_F",[41.6394,35.6191,-0.00143814],271.277,true,true,[["O_HMG_01_high_F",[1.75781,6.54565,3.11813],359.998]],[]], + ["Land_Cargo_Patrol_V1_F",[58.7402,-14.1282,-0.00143814],179.058,true,true,[["O_HMG_01_high_F",[0.936523,-0.546631,4.55561],186.318],["O_HMG_01_high_F",[-8.49658,3.90869,-0.0121207],0.00101132]],[]], + ["Land_Cargo_Patrol_V1_F",[58.6057,14.2329,-0.00143814],359.375,true,true,[["O_GMG_01_high_F",[1.16113,-1.15356,4.33123],360],["O_HMG_01_high_F",[-8.44897,-1.0686,-0.0121198],359.999]],[]] +]; + +_missionLandscape = [ + //["babe_helper",[-3950.48,-2427.52,-0.00143862],0,true,true], + //["Sign_Arrow_Green_F",[-3947.98,-2428.02,-0.00143862],0,true,true], + //["Sign_Arrow_F",[-3947.98,-2428.02,-0.00143862],0,true,true], + //["Sign_Arrow_Yellow_F",[-3947.98,-2428.02,-0.00143862],0,true,true], + ["Land_LampHalogen_F",[-16.9238,-29.4194,-0.00143814],175.993,true,true], + ["Land_HBarrierBig_F",[-16.6211,-36.4802,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-16.6907,-44.7676,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-16.8193,-28.7813,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-17.0107,-4.99146,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-16.8831,-20.9722,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-16.813,-12.6887,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-16.9338,3.10571,-0.00143862],271.533,true,true], + ["Land_LampHalogen_F",[-17.1384,26.0154,-0.00143814],175.993,true,true], + ["Land_HBarrierBig_F",[-17.126,26.9011,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-17.0623,19.092,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-16.8643,11.3931,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-17.0559,35.1846,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-17.2517,42.8821,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[10.6238,-49.76,-0.00143862],1.58276,true,true], + ["Land_HBarrierBig_F",[4.90186,-29.2209,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[2.92627,-49.9541,-0.00143862],1.58276,true,true], + ["Land_HBarrierBig_F",[-3.42188,-29.1743,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[-5.36133,-49.8767,-0.00143862],1.58276,true,true], + ["Land_HBarrierBig_F",[-13.5088,-49.9219,-0.00143862],1.58276,true,true], + ["Land_HBarrierBig_F",[13.3582,-29.1738,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[-11.5808,-29.1753,-0.00143862],181.755,true,true], + ["Land_LampHalogen_F",[6.08081,-17.4399,-0.00143814],183.353,true,true], + ["Land_Cargo_House_V1_F",[5.85425,-11.7749,-0.00143862],178.957,true,true], + ["Land_Cargo_House_V1_F",[12.7263,-11.8384,-0.00143862],180.484,true,true], + ["Land_Cargo_House_V1_F",[6.03076,-23.2114,-0.00143862],0.530105,true,true], + ["Land_Cargo_House_V1_F",[-9.97656,-7.45703,-0.00143862],270.031,true,true], + ["Land_Cargo_House_V1_F",[-9.95679,-0.756836,-0.00143862],270.244,true,true], + ["Land_Cargo_House_V1_F",[12.6707,-23.292,-0.00143862],0.742551,true,true], + ["Land_LampHalogen_F",[4.89917,14.9739,-0.00143814],183.353,true,true], + ["Land_HBarrierBig_F",[3.46533,26.0403,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[-4.86035,26.0867,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[11.9197,26.0874,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[-13.1709,26.1252,-0.00143862],181.755,true,true], + ["Land_Cargo_House_V1_F",[-9.93091,6.11108,-0.00143862],268.716,true,true], + ["Land_Cargo_House_V1_F",[11.5469,20.5737,-0.00143862],180.484,true,true], + ["Land_Cargo_House_V1_F",[11.4912,9.12012,-0.00143862],0.742551,true,true], + ["Land_Cargo_House_V1_F",[4.6748,20.6372,-0.00143862],178.957,true,true], + ["Land_Cargo_House_V1_F",[4.79419,9.20044,-0.00143862],0.530105,true,true], + ["Land_HBarrierBig_F",[-13.959,47.9253,-0.00143862],1.51588,true,true], + ["Land_HBarrierBig_F",[10.1702,48.1106,-0.00143862],1.51588,true,true], + ["Land_HBarrierBig_F",[1.88428,48.1787,-0.00143862],1.51588,true,true], + ["Land_HBarrierBig_F",[-6.26294,48.124,-0.00143862],1.51588,true,true], + ["Land_LampHalogen_F",[37.4138,-49.6885,-0.00143814],86.6613,true,true], + ["Land_HBarrierBig_F",[18.4333,-49.7061,-0.00143862],1.58276,true,true], + ["Land_HBarrierBig_F",[21.7261,-29.1707,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[34.4153,-49.5938,-0.00143862],1.58276,true,true], + ["Land_HBarrierBig_F",[42.5332,-49.4375,-0.00143862],1.58276,true,true], + ["Land_HBarrierBig_F",[26.7168,-49.782,-0.00143862],1.58276,true,true], + ["Land_LampHalogen_F",[24.2969,-4.63354,-0.00143814],175.763,true,true], + ["Land_LampHalogen_F",[24.0779,2.92041,-0.00143814],175.763,true,true], + ["Land_HBarrierBig_F",[24.7175,-16.5247,-0.00143862],270.156,true,true], + ["Land_HBarrierBig_F",[24.5884,-8.51978,-0.00143862],270.156,true,true], + ["Land_HBarrierBig_F",[20.874,3.03345,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[24.8879,-24.3479,-0.00143862],270.156,true,true], + ["Land_HBarrierBig_F",[21.095,-4.52222,-0.00143862],181.755,true,true], + ["Land_Cargo_House_V1_F",[19.4255,-11.8789,-0.00143862],180.272,true,true], + ["Land_Cargo_House_V1_F",[19.5381,-23.3779,-0.00143862],359.215,true,true], + ["Land_HBarrierBig_F",[24.0823,6.26489,-0.00143862],270.156,true,true], + ["Land_HBarrierBig_F",[23.7832,22.0911,-0.00143862],270.156,true,true], + ["Land_HBarrierBig_F",[23.9121,14.0862,-0.00143862],270.156,true,true], + ["Land_HBarrierBig_F",[20.2896,26.0906,-0.00143862],181.755,true,true], + ["Land_Cargo_House_V1_F",[18.3564,9.03589,-0.00143862],359.215,true,true], + ["Land_Cargo_House_V1_F",[18.2441,20.533,-0.00143862],180.272,true,true], + ["Land_LampHalogen_F",[37.1499,49.4319,-0.00143814],270.972,true,true], + ["Land_HBarrierBig_F",[17.8696,48.312,-0.00143862],1.51588,true,true], + ["Land_HBarrierBig_F",[33.9624,48.3108,-0.00143862],1.51588,true,true], + ["Land_HBarrierBig_F",[25.6785,48.3774,-0.00143862],1.51588,true,true], + ["Land_HBarrierBig_F",[41.6587,48.5078,-0.00143862],1.51588,true,true], + ["Land_HBarrierBig_F",[53.832,-28.3086,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[53.8938,-44.4204,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[53.9326,-36.322,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[50.8213,-49.5146,-0.00143862],1.58276,true,true], + ["Land_LampHalogen_F",[61.6257,-8.93774,-0.00143814],183.353,true,true], + ["Land_HBarrierBig_F",[53.5598,-12.5808,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[58.1006,-9.04248,-0.00143862],180.639,true,true], + ["Land_HBarrierBig_F",[53.6702,-20.0735,-0.00143862],271.533,true,true], + ["Land_LampHalogen_F",[61.2739,9.27808,-0.00143814],183.353,true,true], + ["Land_HBarrierBig_F",[57.9741,9.22607,-0.00143862],180.457,true,true], + ["Land_HBarrierBig_F",[53.0159,20.7566,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[53.2136,13.0596,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[53.0928,28.8538,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[53.1624,37.1411,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[52.9644,44.8403,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[49.8362,48.4373,-0.00143862],1.51588,true,true] +]; + +_missionLootBoxes = [ + //["Exile_Container_SupplyBox",[-2.28174,0.128662,-0.00143862],_crateLoot,_lootCounts,0.000181514] +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["Exile_Car_Hunter",[24.8054,-67.8333,0.00875282],89.6558], + ["Exile_Car_HEMMT",[24.8997,69.1799,-0.00138235],91.5468], + ["O_LSV_02_armed_F",[74.0911,1.21655,-0.0377212],359.999] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = []; // + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Green; +_maxNoAI = blck_MaxAI_Green; +_noAIGroups = blck_AIGrps_Green; +_noVehiclePatrols = blck_SpawnVeh_Green; +_noEmplacedWeapons = blck_SpawnEmplaced_Green; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Green"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/munitionsResearch.sqf b/@GMS/addons/custom_server/Missions/Green/munitionsResearch.sqf index 9e7eec3..652c8c7 100644 --- a/@GMS/addons/custom_server/Missions/Green/munitionsResearch.sqf +++ b/@GMS/addons/custom_server/Missions/Green/munitionsResearch.sqf @@ -20,10 +20,19 @@ _lootCounts = blck_lootCountsOrange; _startMsg = "An munitions research center was sighted in a nearby sector! Check the Green marker on your map for the location!"; _endMsg = "The Sector at the Green Marker is under survivor control!"; _markerLabel = ""; -_markerType = ["ellipse",[225,225],"GRID"]; +_markerType = ["ELLIPSE",[300,300],"Solid"]; _markerColor = "ColorGreen"; _markerMissionName = "Munitions"; _missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = []; + +_garrisonedBuilding_ATLsystem = [ + +]; + _missionLandscape = [ ["Flag_AltisColonial_F",[3,3,0],0,[false,false]], ["Land_Research_HQ_F",[-40.4258,-57.4492,-7.15256e-007],0,[true,false]], @@ -57,36 +66,22 @@ _missionLandscape = [ ["Land_SharpStone_02",[69.4277,-3.20313,0],0,[false,false]], ["Land_SharpStone_02",[53.7227,-40.1777,-2.38419e-007],0,[false,false]], ["Land_Limestone_01_02_F",[-6.26563,-46.0996,-4.76837e-007],0,[false,false]] -]; // list of objects to spawn as landscape -_missionLootBoxes = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. -_missionLootVehicles = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. -_missionEmplacedWeapons = - [ - /*["B_HMG_01_high_F",[31.7266,-34.6699,-4.76837e-007],0,[true,false]], - ["B_HMG_01_high_F",[-24.5781,-33.8281,-3.1268],0,[true,false]], - ["B_G_Mortar_01_F",[73.1836,62.9492,-3.1265],0,[true,false]] - */ - ["B_HMG_01_high_F",[47.1777,73.5469,-3.12644],0,[true,false]], - ["B_GMG_01_high_F",[-32.8926,-35.8047,-3.1268],0,[true,false]], - ["B_G_Mortar_01_F",[33.1582,-34.8867,-4.76837e-007],0,[true,false]] - ]; // can be used to define the precise placement of static weapons [[1,2,3] /*loc 1*/, [2,3,4] /*loc 2*/]; if blank random locations will be used +]; -_missionGroups = - [ - //_x params["_position","_minAI","_maxAI","_skillLevel","_minPatrolRadius","_maxPatrolRadius"]; - [[-52.6523,15.8281,-0.00143838],5,6,"Green",8,15], - [[-48.6113,-38.877,-0.00143886],5,6,"Green",8,15], - [[18.4492,-39.5684,-0.00143838],5,6,"Green",8,15], - [[42.6504,31.6621,-0.00143886],5,6,"Green",8,15], - [[7.51563,46.4531,-0.001438864],5,6,"Green",8,15], - [[-8.99219,-11.623,-0.00143838],5,6,"Green",8,15] -]; // Can be used to define spawn positions of AI patrols +_missionLootBoxes = []; + +_missionLootVehicles = []; _missionPatrolVehicles = [ [selectRandom blck_AIPatrolVehiclesGreen,[27.8945,100.275,0],0,[true,false]], [selectRandom blck_AIPatrolVehiclesGreen,[-84.7793,72.2617,9.53674e-007],0,[true,false]], [selectRandom blck_AIPatrolVehiclesGreen,[-87.8457,-109.947,7.15256e-007],0,[true,false]] -]; // can be used to define the spawn positions of vehicle patrols +]; + +_missionLootBoxes = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. +_missionLootVehicles = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. +_missionEmplacedWeapons = []; +_missionGroups = []; // Change _useMines to true/false below to enable mission-specific settings. _useMines = blck_useMines; @@ -97,14 +92,12 @@ _noVehiclePatrols = blck_SpawnVeh_Green; _noEmplacedWeapons = blck_SpawnEmplaced_Green; _uniforms = blck_SkinList; _headgear = blck_headgear; - -_chancePara = 2; -_chanceLoot = 2; //0.6; +_chanceLoot = 0.6; private _lootIndex = selectRandom[1,2,3,4]; private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; private _paralootCountsChoices = [[0,0,0,8,8,0],[0,0,0,8,8,0],[8,8,0,0,0,0],[0,0,0,0,12,0]]; _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -//_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/tko_camp.sqf b/@GMS/addons/custom_server/Missions/Green/tko_camp.sqf new file mode 100644 index 0000000..5c4e688 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Green/tko_camp.sqf @@ -0,0 +1,174 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Green Mission with template = default"; +_crateLoot = blck_BoxLoot_Green; +_lootCounts = blck_lootCountsGreen; +_startMsg = "An enemy Military Camp was sighted in a nearby sector! Check the Green marker on your map for the location!"; +_endMsg = "The Military Camp at the Green Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[300,300],"Solid"]; +_markerColor = "ColorGreen"; +_markerMissionName = "Military Camp"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_House_V3_F",[8.00928,15.6453,-0.00143909],0,true,true,[["B_HMG_01_high_F",[-8.28516,3.27148,-0.0121188],0.000433404]],[]] +]; + +_missionLandscape = [ + //["babe_helper",[-3327.46,-2809.42,-0.00143909],0,true,true], + //["Sign_Arrow_Green_F",[-3324.96,-2809.92,-0.00143909],0,true,true], + //["Sign_Arrow_F",[-3324.96,-2809.92,-0.00143909],0,true,true], + //["Sign_Arrow_Yellow_F",[-3324.96,-2809.92,-0.00143909],0,true,true], + ["Land_HBarrier_Big_F",[-2.76221,-30.3596,-0.00143909],0,true,true], + ["Land_HBarrier_1_F",[-9.74463,-27.0081,-0.00143909],180,true,true], + ["Land_BagFence_Long_F",[-9.74268,-29.0042,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[-8.36182,-30.3743,-0.00143909],180,true,true], + ["CamoNet_OPFOR_open_F",[-0.361816,-1.01782,-0.00143909],180,true,true], + ["Land_HBarrier_3_F",[-15.3853,-13.9866,-0.00143909],315,true,true], + ["Land_HBarrier_Big_F",[-3.61768,-5.26782,-0.00143909],180,true,true], + ["Land_HBarrier_Big_F",[-5.46533,3.40405,-0.00143909],0,true,true], + ["Land_HBarrier_Big_F",[-18.5767,-14.5354,-0.00143909],45,true,true], + ["Land_HBarrier_Big_F",[-12.4985,-20.3987,-0.00143909],45,true,true], + ["Land_HBarrier_1_F",[-22.9692,-2.77563,-0.00143909],270,true,true], + ["Land_HBarrier_1_F",[-23.3423,0.478271,-0.00143909],15,true,true], + ["Land_BagFence_Long_F",[-24.5767,-9.90649,-0.00143909],315,true,true], + ["Land_BagFence_Long_F",[-22.8071,-8.13794,-0.00143909],315,true,true], + ["Land_BagFence_Long_F",[-18.7427,-12.3811,-0.00143909],315,true,true], + ["Land_BagFence_Long_F",[-23.2368,2.26245,-0.00143909],90,true,true], + ["Land_BagFence_Long_F",[-21.8657,6.25952,-0.00143909],0,true,true], + ["Land_BagFence_Long_F",[-22.3657,-13.8772,-0.00143909],135,true,true], + ["Land_BagFence_Long_F",[-9.74268,-25.1174,-0.00143909],90,true,true], + ["Land_BagFence_Long_F",[-18.5649,-8.3147,-0.00143909],45,true,true], + ["Land_BagFence_Long_F",[-23.2368,4.88843,-0.00143909],90,true,true], + ["Land_BagFence_Long_F",[-25.2192,0.111084,-0.00143909],0,true,true], + ["Land_BagFence_Long_F",[-25.2192,-2.76587,-0.00143909],0,true,true], + ["Land_BagFence_Long_F",[-26.5884,-1.39282,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[-24.3989,-13.9709,-0.00143909],225,true,true], + ["Land_BagFence_Round_F",[-17.5747,-10.4006,-0.00143909],270,true,true], + ["Land_BagFence_Round_F",[-25.5493,-11.9026,-0.00143909],90,true,true], + ["Land_BagFence_Round_F",[-20.7212,-7.07642,-0.00143909],180,true,true], + ["Land_BagFence_End_F",[-9.7583,-23.3167,-0.00143909],270,true,true], + ["Land_Cargo_Patrol_V3_F",[-10.9263,-16.053,-0.00143862],45,true,true], + ["Land_Cargo_House_V3_F",[-3.09424,-20.7424,-0.00143909],180,true,true], + ["CamoNet_OPFOR_open_F",[-0.225098,8.17163,-0.00143909],0,true,true], + ["Land_HBarrier_3_F",[-1.85596,17.1208,-0.00143909],180,true,true], + ["Land_HBarrier_3_F",[-2.70752,19.4275,-0.00143909],90,true,true], + ["Land_HBarrier_Big_F",[-19.6177,9.36694,-0.00143909],270,true,true], + ["Land_HBarrier_Big_F",[-19.6646,17.5466,-0.00143909],90,true,true], + ["Land_HBarrier_1_F",[-4.93994,9.58374,-0.00143909],270,true,true], + ["Land_HBarrier_1_F",[-16.4673,27.1775,-0.00143909],285,true,true], + ["Land_HBarrier_1_F",[-2.68408,25.3513,-0.00143909],120,true,true], + ["Land_BagFence_Long_F",[-2.30908,23.7244,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[-19.7173,23.0505,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[-19.7153,25.9265,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[-18.3462,27.4314,-0.00143909],0,true,true], + ["Land_Cargo_Patrol_V3_F",[-15.4087,10.7146,-0.00143862],90,true,true], + ["Land_HBarrier_5_F",[-15.7407,14.7517,-0.00143909],0,true,true], + ["Land_HBarrier_5_F",[-6.33838,7.41382,-0.00143909],270,true,true], + ["Land_HBarrier_Big_F",[4.87646,-28.4124,-0.00143909],330,true,true], + ["Land_HBarrier_3_F",[10.5171,0.540771,-0.00143909],0,true,true], + ["Land_HBarrier_3_F",[11.3687,-7.17212,-0.00143909],270,true,true], + ["Land_HBarrier_Big_F",[23.0171,-13.6155,-0.00143909],285,true,true], + ["Land_HBarrier_Big_F",[3.04834,3.62964,-0.00143909],1.36604e-005,true,true], + ["Land_HBarrier_Big_F",[11.8745,-23.9084,-0.00143909],330,true,true], + ["Land_HBarrier_Big_F",[7.90967,0.343506,-0.00143909],90,true,true], + ["Land_HBarrier_Big_F",[24.978,-5.36938,-0.00143909],285,true,true], + ["Land_HBarrier_Big_F",[11.2808,-4.62427,-0.00143909],180,true,true], + ["Land_HBarrier_Big_F",[25.9077,2.68921,-0.00143909],270,true,true], + ["Land_HBarrier_1_F",[4.35498,-2.41431,-0.00143909],90,true,true], + ["Land_HBarrier_1_F",[21.0073,-21.7493,-0.00143909],30,true,true], + ["Land_BagFence_Long_F",[19.1304,-21.6174,-0.00143909],0,true,true], + ["Land_BagFence_Long_F",[16.5073,-21.6174,-0.00143909],0,true,true], + ["Land_BagFence_Long_F",[7.89795,6.07788,-0.00143909],270,true,true], + ["Land_Loudspeakers_F",[21.2026,-15.3088,-0.00143909],196,true,true], + ["Land_HBarrier_5_F",[17.7847,6.20483,-0.00143909],270,true,true], + ["Land_HBarrier_5_F",[11.3823,-11.5022,-0.00143909],270,true,true], + ["Land_HBarrier_5_F",[5.75146,-0.244385,-0.00143909],90,true,true], + ["Land_Cargo_House_V3_F",[5.49561,-9.99927,-0.00143909],90,true,true], + ["Land_Cargo_House_V3_F",[5.03076,-17.6174,-0.00143909],150,true,true], + ["CamoNet_OPFOR_open_F",[22.6538,9.88257,-0.00143909],270,true,true], + ["Land_HBarrier_3_F",[18.7593,9.75757,-0.00143909],0,true,true], + ["Land_HBarrier_Big_F",[9.20264,21.2849,-0.00143909],180,true,true], + ["Land_HBarrier_Big_F",[15.9546,18.7849,-0.00143909],225,true,true], + ["Land_HBarrier_Big_F",[22.4077,16.1892,-0.00143909],0,true,true], + ["Land_HBarrier_Big_F",[0.70459,21.283,-0.00143909],180,true,true], + ["Land_HBarrier_Big_F",[25.7827,11.0642,-0.00143909],90,true,true], + ["Land_BagFence_Long_F",[4.57764,19.0466,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[4.57764,16.1716,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[11.3843,19.2634,-0.00143909],90,true,true], + ["Land_BagFence_End_F",[4.57764,14.4216,-0.00143909],90,true,true], + ["Land_BagFence_End_F",[7.68896,7.77515,-0.00143909],240,true,true], + ["Land_BagFence_End_F",[11.3843,17.5134,-0.00143909],90,true,true] +]; + +_missionLootBoxes = [ + //["Exile_Container_SupplyBox",[1.55273,0.0065918,-0.00143957],_crateLoot,_lootCounts,0.000522983] +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + //["B_LSV_01_armed_F",[-41.377,-5.40894,-0.0238895],0.00171121], + ["B_LSV_01_armed_F",[39.5627,-5.26709,-0.0237107],0.00169144] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = []; // + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Green; +_maxNoAI = blck_MaxAI_Green; +_noAIGroups = blck_AIGrps_Green; +_noVehiclePatrols = blck_SpawnVeh_Green; +_noEmplacedWeapons = blck_SpawnEmplaced_Green; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Green"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Orange/Ammunition_depot.sqf b/@GMS/addons/custom_server/Missions/Orange/Ammunition_depot.sqf new file mode 100644 index 0000000..09fd845 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Orange/Ammunition_depot.sqf @@ -0,0 +1,173 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Orange Mission with template = default"; +_crateLoot = blck_BoxLoot_Orange; +_lootCounts = blck_lootCountsOrange; +_startMsg = "An Anemy Ammunition Depot was sighted in a nearby sector! Check the Orange marker on your map for the location!"; +_endMsg = "The Ammunition depot at the Orange Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[200,200],"Solid"]; +_markerColor = "ColorOrange"; +_markerMissionName = "Ammunition Depot"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_MilOffices_V1_F",[0.936035,53.2339,-0.00146103],0.0551743,true,true,[["B_HMG_01_high_F",[-14.6453,4.44092,0.48988],0.00164355],["B_HMG_01_high_F",[16.2224,2.84473,0.48988],0.00164314],["B_HMG_01_high_F",[16.2043,-18.5793,-0.0121188],360],["B_HMG_01_high_F",[19.0071,-25.5498,-0.0121188],360]],[]] +]; + + + +_missionLandscape = [ + //["babe_helper",[-3584.79,-2745.02,-0.00146103],0,true,true], + //["Sign_Arrow_Green_F",[-3582.29,-2745.52,-0.00146103],0,true,true], + //["Sign_Arrow_F",[-3582.29,-2745.52,-0.00146103],0,true,true], + //["Sign_Arrow_Yellow_F",[-3582.29,-2745.52,-0.00146103],0,true,true], + ["Land_dp_smallTank_F",[-23.4897,0.757568,-0.00146103],315.055,true,true], + ["Land_HBarrier_Big_F",[-30.251,0.998047,-0.00146103],90.6364,true,true], + ["Land_HBarrier_Big_F",[-30.0261,-4.99609,-0.00146103],88.8324,true,true], + ["Land_HBarrier_Big_F",[-24.3879,-7.97534,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[-15.9822,-8.03101,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[-7.62939,-8.03394,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[-30.4287,8.68091,-0.00146103],90.6364,true,true], + ["Land_HBarrier_Big_F",[-30.5715,17.0325,-0.00146103],90.6364,true,true], + ["Land_HBarrier_Big_F",[-30.8035,33.8059,-0.00146103],90.6364,true,true], + ["Land_HBarrier_Big_F",[-30.7122,25.4006,-0.00146103],90.6364,true,true], + ["Land_i_Barracks_V1_F",[-21.0911,25.2551,-0.00146103],270.055,true,true], + ["Land_LampHalogen_F",[-30.0498,68.0146,-0.00146055],240.055,true,true], + ["Land_Medevac_house_V1_F",[-25.7917,63.0088,-0.00146103],359.798,true,true], + ["Land_Medevac_house_V1_F",[-25.821,54.4678,-0.00146103],179.534,true,true], + ["Land_Tank_rust_F",[-26.2607,48.0527,-0.00146103],180.055,true,true], + ["Land_HBarrier_Big_F",[-26.0667,70.3225,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[-0.915771,70.2883,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[-9.30811,70.2639,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[-17.6609,70.2668,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[-30.9465,42.1575,-0.00146103],90.6364,true,true], + ["Land_HBarrier_Big_F",[-31.3367,67.2683,-0.00146103],90.6364,true,true], + ["Land_HBarrier_Big_F",[-31.1025,50.5112,-0.00146103],90.6364,true,true], + ["Land_HBarrier_Big_F",[-31.1938,58.9167,-0.00146103],90.6364,true,true], + ["Land_LampHalogen_F",[12.158,-7.74023,-0.00146055],90.0552,true,true], + ["Land_HBarrier_Big_F",[17.4336,-8.0415,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[25.7888,-8.03149,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[0.675049,-7.98291,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[9.08105,-8.03857,-0.00146103],181.637,true,true], + ["Land_HelipadSquare_F",[31.1362,2.08008,-0.00146103],180.086,true,true], + ["Land_BagFence_Long_F",[23.658,6.82251,-0.00146103],90.0552,true,true], + ["Land_BagFence_Long_F",[14.4004,5.9585,-0.00146103],90.0552,true,true], + ["Land_i_Shed_Ind_F",[0.762939,3.73413,-0.00146103],179.98,true,true], + ["Land_PortableLight_double_F",[19.6589,24.5911,-0.00146103],240.055,true,true], + ["Land_BagFence_Round_F",[13.7778,8.4668,-0.00146103],225.055,true,true], + ["Land_BagFence_Round_F",[24.2874,9.32739,-0.00146103],135.055,true,true], + ["Land_CncWall4_F",[19.353,37.1301,-0.00146103],269.856,true,true], + ["Land_CncWall4_F",[19.3921,31.9155,-0.00146103],269.856,true,true], + ["Land_BagFence_Long_F",[11.2759,9.09644,-0.00146103],180.055,true,true], + ["Land_BagFence_Long_F",[26.7832,9.94385,-0.00146103],0.0551743,true,true], + ["Land_LampHalogen_F",[19.0601,40.1711,-0.00146055],315.055,true,true], + ["Land_HBarrier_Big_F",[15.8428,70.2297,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[7.49023,70.2327,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[24.198,70.2397,-0.00146103],181.637,true,true], + ["Land_CncWall4_F",[22.377,40.0833,-0.00146103],0,true,true], + ["Land_CncWall4_F",[27.5962,40.116,-0.00146103],0,true,true], + ["Land_LampHalogen_F",[45.8774,-7.93433,-0.00146055],60.0552,true,true], + ["Land_LampHalogen_F",[45.5952,6.93604,-0.00146055],180.055,true,true], + ["Land_Tank_rust_F",[43.6697,0.581299,-0.00146103],90.0552,true,true], + ["Land_HBarrier_Big_F",[42.5474,-8.09009,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[47.6099,-4.77002,-0.00146103],90.055,true,true], + ["Land_HBarrier_Big_F",[34.1946,-8.08716,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[47.4333,3.63403,-0.00146103],90.055,true,true], + ["Land_BagFence_Round_F",[53.0293,5.18921,-0.00146103],315.055,true,true], + ["Land_BagFence_Long_F",[50.5286,4.56616,-0.00146103],180.055,true,true], + ["Land_BagFence_Long_F",[39.7786,6.70166,-0.00146103],90.0552,true,true], + ["Land_Wall_IndCnc_Pole_F",[46.9377,21.1001,-0.00146103],90.0552,true,true], + ["Land_Shed_Big_F",[31.9468,31.2043,-0.00146151],89.7488,true,true], + ["Land_HBarrier_Big_F",[46.9426,33.5571,-0.00146103],90.055,true,true], + ["Land_HBarrier_Big_F",[47.1191,25.1531,-0.00146103],90.055,true,true], + ["Land_BagFence_Round_F",[39.1563,9.17456,-0.00146103],225.055,true,true], + ["Land_BagFence_Round_F",[53.0469,24.4275,-0.00146103],225.055,true,true], + ["Land_BagFence_Long_F",[36.6648,9.80176,-0.00146103],180.055,true,true], + ["Land_BagFence_Long_F",[53.6729,21.9277,-0.00146103],90.0552,true,true], + ["Land_BagFence_Long_F",[50.5496,25.0559,-0.00146103],180.055,true,true], + ["Land_BagFence_Long_F",[53.6707,7.68921,-0.00146103],270.055,true,true], + ["Land_BarGate_F",[47.6548,14.5193,-0.00146103],90.0552,true,true], + ["Land_LampHalogen_F",[44.5273,41.2136,-0.00146055],60.0552,true,true], + ["Land_HBarrier_Big_F",[46.7148,41.9067,-0.00146103],90.055,true,true], + ["Land_HBarrier_Big_F",[46.2976,58.6626,-0.00146103],90.055,true,true], + ["Land_HBarrier_Big_F",[32.6038,70.1841,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[40.9565,70.1812,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[46.0698,67.0122,-0.00146103],90.055,true,true], + ["Land_HBarrier_Big_F",[46.4741,50.2585,-0.00146103],90.055,true,true], + ["Land_CncWall4_F",[37.9797,40.1345,-0.00146103],0,true,true], + ["Land_CncWall4_F",[32.7908,40.125,-0.00146103],0,true,true], + ["Land_CncWall4_F",[43.1743,40.1436,-0.00146103],0,true,true], + ["Land_TTowerBig_1_F",[33.9404,56.3271,-0.00146103],0.0551743,true,true] +]; + +_missionLootBoxes = [ +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["B_G_Offroad_01_armed_F",[-51.5793,28.9631,0.00801468],179.03], + ["B_G_Offroad_01_armed_F",[9.30664,88.3091,0.00802708],89.9029], + ["B_G_Offroad_01_armed_F",[72.2974,6.63599,0.00802183],0.00106337] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = []; // + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Orange; +_maxNoAI = blck_MaxAI_Orange; +_noAIGroups = blck_AIGrps_Orange; +_noVehiclePatrols = blck_SpawnVeh_Orange; +_noEmplacedWeapons = blck_SpawnEmplaced_Orange; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Orange"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Orange/Camp_Moreell.sqf b/@GMS/addons/custom_server/Missions/Orange/Camp_Moreell.sqf new file mode 100644 index 0000000..800c7b8 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Orange/Camp_Moreell.sqf @@ -0,0 +1,156 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Orange Mission with template = default"; +_crateLoot = blck_BoxLoot_Orange; +_lootCounts = blck_lootCountsOrange; +_startMsg = "Enemy Camp Moreell was sighted in a nearby sector! Check the Orange marker on your map for the location!"; +_endMsg = "The Camp Moreell at the Orange Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[200,200],"Solid"]; +_markerColor = "ColorOrange"; +_markerMissionName = "Camp Moreell"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_Patrol_V3_F",[-3.45557,32.6038,-0.00143814],163.034,true,true,[["O_HMG_01_high_F",[-1.75244,0.382568,4.33092],0.00157772]],[]], + ["Land_Cargo_HQ_V3_F",[1.5835,1.53711,-0.00143814],90.021,true,true,[["O_HMG_01_high_F",[-4.53003,1.89331,3.1134],270.551],["O_Mortar_01_F",[0.884277,-5.92041,3.1624],178.341],["O_GMG_01_high_F",[-11.2842,-8.48218,-0.0118098],221.694],["O_HMG_01_high_F",[-12.6897,-6.82007,-0.0121179],236.126],["O_GMG_01_high_F",[10.885,-11.4487,-0.0118084],147.658],["O_GMG_01_high_F",[19.3098,-6.53003,-0.0118093],147.655]],[]], + ["Land_Cargo_Patrol_V3_F",[10.9478,34.4741,-0.00143814],195.395,true,true,[["O_HMG_01_high_F",[1.41943,0.690674,4.33092],359.999]],[]] +]; + + + +_missionLandscape = [ + ["Land_HBarrier_Big_F",[-14.1831,0.348877,-0.00143862],54.7855,true,true], + ["Land_HBarrier_1_F",[-7.70728,-8.24048,-0.00143862],295.873,true,true], + ["Land_BagFence_Long_F",[-11.6091,-6.83057,-0.00143862],45.3947,true,true], + ["Land_BagFence_Round_F",[-12.8318,-4.68042,-0.00143862],90.3947,true,true], + ["Land_BagFence_Round_F",[-9.44946,-8.13599,-0.00143862],0.394724,true,true], + ["Land_Cargo_House_V3_F",[-11.8579,27.8225,-0.00143862],341.505,true,true], + ["CamoNet_OPFOR_open_F",[-14.8772,18.198,-0.00143862],90.3947,true,true], + ["Land_HBarrier_Big_F",[-24.5461,25.9207,-0.00143862],195.395,true,true], + ["Land_HBarrier_Big_F",[-7.8335,30.6655,-0.00143862],255.395,true,true], + ["Land_HBarrier_Big_F",[-24.0242,10.8638,-0.00143862],165.395,true,true], + ["Land_HBarrier_Big_F",[-18.0986,7.95679,-0.00143862],255.395,true,true], + ["Land_HBarrier_Big_F",[-19.7212,22.9065,-0.00143862],90.3947,true,true], + ["Land_HBarrier_Big_F",[-31.6633,25.0271,-0.00143862],150.395,true,true], + ["Land_HBarrier_Big_F",[-12.3518,34.6216,-0.00143862],345.395,true,true], + ["Land_HBarrier_Big_F",[-17.9399,30.3276,-0.00143862],300.395,true,true], + ["Land_HBarrier_Big_F",[-19.3733,16.4546,-0.00143862],90.3947,true,true], + ["Land_HBarrier_1_F",[-32.8965,12.5454,-0.00143862],42.5069,true,true], + ["Land_HBarrier_1_F",[-30.3511,10.0146,-0.00143862],42.5069,true,true], + ["CamoNet_OPFOR_big_F",[-27.2468,18.4834,-0.00143862],75.3947,true,true], + ["Land_BagFence_Round_F",[-33.3694,10.7087,-0.00143862],87.5069,true,true], + ["Land_BagFence_Round_F",[-31.8938,9.28491,-0.00143862],357.507,true,true], + ["Land_HBarrier_5_F",[9.15552,-4.91626,-0.00143862],269.593,true,true], + ["Land_HBarrier_5_F",[9.13477,0.585938,-0.00143862],269.593,true,true], + ["Land_Cargo_House_V3_F",[25.2329,2.59155,-0.00143862],105.395,true,true], + ["Land_HBarrier_Big_F",[-2.57373,-8.99463,-0.00143862],180.395,true,true], + ["Land_HBarrier_Big_F",[26.4961,-2.62256,-0.00143862],195.395,true,true], + ["Land_HBarrier_Big_F",[5.79712,-8.80371,-0.00143862],180.395,true,true], + ["Land_HBarrier_1_F",[14.0208,-8.50757,-0.00143862],334.157,true,true], + ["Land_HBarrier_1_F",[22.1511,-3.42603,-0.00143862],324.626,true,true], + ["Land_HBarrier_1_F",[19.1423,-5.3833,-0.00143862],324.626,true,true], + ["Land_HBarrier_1_F",[10.7295,-9.9397,-0.00143862],334.157,true,true], + ["Land_BagFence_Round_F",[22.5408,-5.08765,-0.00143862],279.626,true,true], + ["Land_BagFence_Round_F",[20.8389,-6.23145,-0.00143862],9.62595,true,true], + ["Land_BagFence_Round_F",[14.1299,-10.2107,-0.00143862],289.157,true,true], + ["Land_BagFence_Round_F",[12.262,-11.0569,-0.00143862],19.157,true,true], + ["Land_HBarrier_5_F",[7.05835,9.52783,-0.00143862],181.048,true,true], + ["Land_HBarrier_5_F",[26.3564,29.2161,-0.00143862],195.395,true,true], + ["Land_HBarrier_5_F",[9.08203,5.92139,-0.00143862],269.593,true,true], + ["Land_HBarrier_Big_F",[18.55,34.8018,-0.00143862],195.395,true,true], + ["Land_HBarrier_Big_F",[1.32568,35.1333,-0.00143862],255.395,true,true], + ["Land_HBarrier_Big_F",[7.22388,36.5254,-0.00143862],285.395,true,true], + ["Land_HBarrier_Big_F",[-4.35571,36.8228,-0.00143862],345.395,true,true], + ["Land_HBarrier_Big_F",[7.04761,30.9424,-0.00143862],195.395,true,true], + ["Land_BagFence_Long_F",[24.1768,15.7207,-0.00143862],105.395,true,true], + ["Land_BagFence_Long_F",[22.7461,10.5283,-0.00143862],285.395,true,true], + ["Land_HBarrier_3_F",[25.4558,17.1135,-0.00143862],195.395,true,true], + ["Land_HBarrier_3_F",[22.7898,29.1609,-0.00143862],285.395,true,true], + ["Land_HBarrier_3_F",[23.3201,8.88696,-0.00143862],195.395,true,true], + ["Land_HBarrier_Big_F",[12.9075,38.3318,-0.00143862],195.395,true,true], + ["Land_HBarrier_Big_F",[30.9158,1.41919,-0.00143862],105.395,true,true], + ["Land_HBarrier_5_F",[29.5054,24.8923,-0.00143862],269.593,true,true], + ["Land_HBarrier_5_F",[29.5303,19.5947,-0.00143862],269.593,true,true], + ["CamoNet_OPFOR_open_F",[28.1597,12.0786,-0.00143862],195.395,true,true], + ["Land_HBarrier_Big_F",[31.4031,16.592,-0.00143862],0.394724,true,true], + ["Land_HBarrier_Big_F",[28.876,7.35913,-0.00143862],195.395,true,true], + ["Land_HBarrier_1_F",[33.3733,10.5449,-0.00143862],15.3947,true,true], + ["Land_HBarrier_1_F",[27.9988,12.1958,-0.00143862],195.395,true,true], + ["Land_BagFence_Long_F",[32.6428,9.11694,-0.00143862],285.395,true,true], + ["Land_BagFence_Long_F",[28.4683,13.8879,-0.00143862],105.395,true,true], + ["Land_HBarrier_3_F",[29.9619,29.1274,-0.00143862],105.395,true,true], + ["Land_HBarrier_3_F",[34.8462,14.4836,-0.00143862],90.3947,true,true], + ["Land_BagBunker_Large_F",[27.696,35.6018,-0.00143862],195.395,true,true] +]; + +_missionLootBoxes = [ +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["O_LSV_02_armed_F",[34.9805,-28.0225,-0.0376697],359.999] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = [ + +]; + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Orange; +_maxNoAI = blck_MaxAI_Orange; +_noAIGroups = blck_AIGrps_Orange; +_noVehiclePatrols = blck_SpawnVeh_Orange; +_noEmplacedWeapons = blck_SpawnEmplaced_Orange; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Orange"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Orange/Operations_Command.sqf b/@GMS/addons/custom_server/Missions/Orange/Operations_Command.sqf new file mode 100644 index 0000000..4eaf7f1 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Orange/Operations_Command.sqf @@ -0,0 +1,184 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Orange Mission with template = default"; +_crateLoot = blck_BoxLoot_Orange; +_lootCounts = blck_lootCountsOrange; +_startMsg = "An Operations Command was sighted in a nearby sector! Check the Orange marker on your map for the location!"; +_endMsg = "The Operations Command at the Orange Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[300,300],"Solid"]; +_markerColor = "ColorOrange"; +_markerMissionName = "Operations Command"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_Patrol_V3_F",[-26.1375,13.395,-0.00143862],104.247,true,true,[["O_HMG_01_high_F",[-1.16919,-1.02051,4.33092],359.999]],[]], + ["Land_Cargo_Tower_V3_F",[0.0512695,-43.2329,-0.00143909],1.37485,true,true,[["O_HMG_01_high_F",[-11.6333,3.14819,-0.0121188],360],["O_Mortar_01_F",[-3.08325,4.21802,17.9254],0.000187431],["O_GMG_01_high_F",[-3.21069,-3.16113,17.8767],360],["O_GMG_01_high_F",[4.70557,-0.741943,17.8767],360]],[]], + ["Land_Cargo_Patrol_V3_F",[-22.3018,-36.6943,-0.00143862],16.3749,true,true,[["O_HMG_01_high_F",[-1.44019,-0.544922,4.33092],0.000570454],["O_HMG_01_high_F",[-6.95337,5.57886,-0.0121193],359.998]],[]], + ["Land_Cargo_HQ_V3_F",[0.157227,3.02832,-0.00143862],91.3748,true,true,[["O_Mortar_01_F",[1.9917,1.24707,3.16241],359.999],["O_HMG_01_high_F",[-4.22266,1.80176,3.1134],359.999],["O_HMG_01_high_F",[3.10205,-5.8584,3.1134],359.999],["O_HMG_01_high_F",[-6.48584,7.63452,-0.0121193],359.998],["O_HMG_01_high_F",[9.13306,15.3284,-0.0121193],359.998]],[]], + ["Land_Cargo_Tower_V3_F",[-16.1003,25.6072,-0.00143909],181.375,true,true,[["O_HMG_01_high_F",[3.25903,3.35229,17.8764],359.997],["O_GMG_01_high_F",[-4.9707,0.915771,17.8767],359.995]],[]], + ["Land_Cargo_Patrol_V3_F",[21.9438,-2.25854,-0.00143862],269.918,true,true,[["O_GMG_01_high_F",[1.11499,0.921387,4.33123],360]],[]], + ["Land_Cargo_House_V3_F",[7.7749,-26.0698,-0.00143909],1.37485,true,true,[["O_HMG_01_high_F",[2.2688,8.65552,-0.0121188],360]],[]] +]; + + + +_missionLandscape = [ + ["CamoNet_OPFOR_open_F",[-31.8352,-29.0081,-0.00143909],235.13,true,true], + ["CamoNet_OPFOR_open_F",[-43.8352,-16.6941,-0.00143909],181.375,true,true], + ["Land_HBarrier_Big_F",[-37.4087,-8.59814,-0.00143909],286.375,true,true], + ["Land_HBarrier_Big_F",[-29.3643,-37.0271,-0.00143909],37.1575,true,true], + ["Land_HBarrier_Big_F",[-35.4788,-31.5889,-0.00143909],50.6964,true,true], + ["Land_HBarrier_Big_F",[-38.9624,-25.2727,-0.00143909],255.154,true,true], + ["Land_BagBunker_Large_F",[-43.364,-16.4709,-0.00143909],91.3748,true,true], + ["Land_HBarrier_Big_F",[-34.405,-1.28906,-0.00143909],301.375,true,true], + ["Land_HBarrier_Big_F",[-29.0862,14.3416,-0.00143909],286.375,true,true], + ["Land_HBarrier_Big_F",[-31.1816,6.38184,-0.00143909],286.375,true,true], + ["Land_LampHalogen_F",[-29.8584,2.74854,-0.00143862],256.375,true,true], + ["Land_HBarrierWall_corridor_F",[-16.1533,-40.845,-0.00143909],106.375,true,true], + ["Land_HBarrier_Big_F",[-10.9395,-43.5535,-0.00143909],13.6286,true,true], + ["Land_HBarrier_Big_F",[-3.8855,-44.2878,-0.00143909],0.866833,true,true], + ["Land_HBarrier_Big_F",[-22.3318,-40.6543,-0.00143909],200.888,true,true], + ["Land_HBarrier_Big_F",[4.41016,-44.2852,-0.00143909],0.866833,true,true], + ["Land_HBarrier_5_F",[2.9043,-17.4326,-0.00143909],271.375,true,true], + ["Land_HBarrier_5_F",[-5.53174,-9.47681,-0.00143909],181.375,true,true], + ["Land_Cargo_House_V3_F",[-1.97241,-25.8367,-0.00143909],1.37485,true,true], + ["Land_HBarrier_Big_F",[-9.21558,-15.051,-0.00143909],271.375,true,true], + ["Land_HBarrier_Big_F",[-5.97168,-20.2385,-0.00143909],181.375,true,true], + ["Land_HBarrier_Big_F",[2.51318,-20.2158,-0.00143909],181.375,true,true], + ["Land_HBarrier_3_F",[2.83398,-22.9663,-0.00143909],91.3748,true,true], + ["Land_HBarrier_3_F",[2.75586,-26.2246,-0.00143909],91.3748,true,true], + ["Land_HBarrier_3_F",[2.94287,-10.5574,-0.00143909],271.375,true,true], + ["Land_HBarrier_3_F",[0.964355,-9.63477,-0.00143909],1.37485,true,true], + ["Land_HBarrier_3_F",[-6.09448,-25.2507,-0.00143909],271.375,true,true], + ["Land_HBarrier_3_F",[1.72021,-27.6951,-0.00143909],1.37485,true,true], + ["Land_HBarrier_3_F",[-6.02515,-22.2542,-0.00143909],271.375,true,true], + ["Land_HBarrier_3_F",[4.84912,-27.7708,-0.00143909],1.37485,true,true], + ["Land_HBarrier_3_F",[-5.15039,-27.5239,-0.00143909],1.37485,true,true], + ["Land_HelipadCircle_F",[-22.2104,-10.7046,-0.00143909],90.8075,true,true], + ["Land_TTowerBig_2_F",[-3.03882,-15.5251,-0.00143909],1.37485,true,true], + ["Land_HBarrier_5_F",[-24.4253,17.3018,-0.00143909],194.949,true,true], + ["Land_HBarrier_5_F",[-12.988,7.96045,-0.00143909],181.375,true,true], + ["Land_HBarrier_5_F",[-26.457,9.23633,-0.00143909],16.5662,true,true], + ["Land_Cargo_House_V3_F",[-15.2529,3.47607,-0.00143909],91.3748,true,true], + ["Land_HBarrier_Big_F",[-5.96069,14.4766,-0.00143909],1.375,true,true], + ["Land_HBarrier_Big_F",[2.22437,14.509,-0.00143909],1.375,true,true], + ["Land_HBarrier_Big_F",[-9.21826,9.43896,-0.00143909],271.375,true,true], + ["Land_HBarrier_Big_F",[-9.23389,1.12988,-0.00143909],271.375,true,true], + ["Land_HBarrier_Big_F",[-9.2439,-6.94019,-0.00143909],271.375,true,true], + ["Land_HBarrier_Big_F",[-26.9719,22.2693,-0.00143909],286.375,true,true], + ["Land_HBarrier_3_F",[-10.071,23.9849,-0.00143909],91.3748,true,true], + ["Land_HBarrier_Big_F",[-14.6584,26.7698,-0.00143909],1.375,true,true], + ["Land_HBarrier_Big_F",[-22.5229,26.7314,-0.00143909],1.375,true,true], + ["Land_HBarrier_Big_F",[-6.28784,26.8616,-0.00143909],1.375,true,true], + ["Land_HBarrier_Big_F",[1.70752,25.8137,-0.00143909],16.375,true,true], + ["CamoNet_OPFOR_open_F",[13.4675,-46.5574,-0.00143909],256.375,true,true], + ["Land_BagBunker_Large_F",[13.6731,-46.6125,-0.00143909],346.375,true,true], + ["Land_HBarrier_Big_F",[25.0122,-8.42798,-0.00143909],89.245,true,true], + ["Land_HBarrier_Big_F",[20.2207,-26.6072,-0.00143909],346.375,true,true], + ["Land_HBarrier_Big_F",[10.3425,-20.1804,-0.00143909],181.375,true,true], + ["Land_HBarrier_Big_F",[13.3196,-15.1829,-0.00143909],91.375,true,true], + ["Land_HBarrier_Big_F",[25.2847,-22.1433,-0.00143909],89.8961,true,true], + ["Land_HBarrier_Big_F",[15.2939,-23.981,-0.00143909],61.375,true,true], + ["Land_HBarrier_Big_F",[17.6921,-30.4187,-0.00143909],261.124,true,true], + ["Land_HBarrier_Big_F",[18.2314,-37.9956,-0.00143909],275.055,true,true], + ["Land_HBarrier_1_F",[26.3027,-13.0132,-0.00143909],224.245,true,true], + ["Land_HBarrier_1_F",[26.3459,-17.553,-0.00143909],134.896,true,true], + ["Land_HBarrier_3_F",[24.4424,-13.2629,-0.00143909],179.245,true,true], + ["Land_HBarrier_3_F",[23.5449,-11.0381,-0.00143909],89.245,true,true], + ["Land_HBarrier_3_F",[23.5166,-19.6731,-0.00143909],269.896,true,true], + ["Land_HBarrier_3_F",[24.4841,-17.4751,-0.00143909],359.896,true,true], + ["Land_HBarrier_3_F",[26.4421,-11.2278,-0.00143909],89.245,true,true], + ["Land_HBarrier_3_F",[26.521,-19.3137,-0.00143909],269.896,true,true], + ["Land_Tank_rust_F",[17.9231,-22.1641,-0.00143909],238.726,true,true], + ["Land_LampHalogen_F",[25.1262,-18.7678,-0.00143862],151.326,true,true], + ["Land_LampHalogen_F",[25.188,-11.5505,-0.00143862],241.375,true,true], + ["Land_HBarrierWall_corridor_F",[8.88965,13.3088,-0.00143909],76.3748,true,true], + ["Land_HBarrierWall_corridor_F",[11.9426,4.98389,-0.00143909],1.37485,true,true], + ["Land_HBarrierWall_corridor_F",[14.0635,10.1843,-0.00143909],331.375,true,true], + ["CamoNet_OPFOR_open_F",[16.8806,13.8459,-0.00143909],46.3748,true,true], + ["Land_HBarrierWall4_F",[12.9727,17.2073,-0.00143909],301.375,true,true], + ["Land_HBarrierWall4_F",[13.927,14.678,-0.00143909],241.375,true,true], + ["Land_HBarrier_Big_F",[24.7051,-0.242188,-0.00143909],89.245,true,true], + ["Land_HBarrier_Big_F",[8.90503,22.6189,-0.00143909],33.6192,true,true], + ["Land_HBarrier_Big_F",[13.2727,-6.86401,-0.00143909],91.375,true,true], + ["Land_HBarrier_Big_F",[24.3503,8.13452,-0.00143909],89.245,true,true], + ["Land_HBarrier_Big_F",[13.3027,-0.90332,-0.00143909],91.375,true,true], + ["Land_BagBunker_Small_F",[20.2654,17.5417,-0.00143909],226.375,true,true], + ["Land_LampHalogen_F",[10.6421,2.27686,-0.00143862],241.375,true,true], + ["Land_LampHalogen_F",[11.4541,10.5645,-0.00143862],136.375,true,true], + ["Land_HBarrierWall_corner_F",[21.3845,12.748,-0.00143909],46.3748,true,true], + ["Land_HBarrierWall_corner_F",[15.5208,19.1467,-0.00143909],346.375,true,true], + ["Land_HBarrierWall_corner_F",[18.5425,9.32104,-0.00143909],136.375,true,true] +]; + +_missionLootBoxes = [ +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["O_LSV_02_unarmed_F",[-53.4402,-44.895,-0.037971],359.999], + ["O_LSV_02_armed_F",[7.56689,40.9209,-0.0379591],359.999], + ["O_LSV_02_armed_F",[38.9788,-44.417,-0.0373936],359.999] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = []; // + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Orange; +_maxNoAI = blck_MaxAI_Orange; +_noAIGroups = blck_AIGrps_Orange; +_noVehiclePatrols = blck_SpawnVeh_Orange; +_noEmplacedWeapons = blck_SpawnEmplaced_Orange; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Orange/Outpost.sqf b/@GMS/addons/custom_server/Missions/Orange/Outpost.sqf new file mode 100644 index 0000000..a426830 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Orange/Outpost.sqf @@ -0,0 +1,154 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Orange Mission with template = default"; +_crateLoot = blck_BoxLoot_Orange; +_lootCounts = blck_lootCountsOrange; +_startMsg = "An Anemy Outpost was sighted in a nearby sector! Check the Orange marker on your map for the location!"; +_endMsg = "The Outpost at the Orange Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[200,200],"Solid"]; +_markerColor = "ColorOrange"; +_markerMissionName = "Outpost"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_Patrol_V3_F",[-25.0786,-7.48535,-0.00143814],91.041,true,true,[["B_HMG_01_high_F",[-1.1084,-1.16431,4.33092],0.000110027]],[]], + ["Land_Cargo_Patrol_V3_F",[-12.2451,10.7849,-0.00143814],181.041,true,true,[["B_HMG_01_high_F",[-1.25928,1.22339,4.33092],0.00719478],["B_HMG_01_high_F",[3.44727,7.05835,-0.0121179],0.0015095],["B_HMG_01_high_F",[12.4185,7.21094,-0.0121183],0.00126386]],[]], + ["Land_Cargo_Patrol_V3_F",[24.0273,-12.3459,-0.00143814],269.838,true,true,[["B_HMG_01_high_F",[1.03076,-1.20874,4.33092],359.999],["B_HMG_01_high_F",[-11.6992,1.96533,-0.0121193],0.00189448]],[]], + ["Land_Cargo_HQ_V3_F",[6.30029,-0.909424,-0.00143814],270.038,true,true,[["B_HMG_01_high_F",[4.31299,-1.39307,3.70484],47.4694],["B_HMG_01_high_F",[-9.66064,-15.759,-0.0121193],0.00274103]],[]] +]; + + + +_missionLandscape = [ + //["Sign_Arrow_F",[-5049.41,-2726.72,-0.00143862],0,true,true], + //["Sign_Arrow_Green_F",[-5049.41,-2726.72,-0.00143862],0,true,true], + //["Sign_Arrow_Yellow_F",[-5049.41,-2726.72,-0.00143862],0,true,true], + //["babe_helper",[-5051.91,-2726.22,-0.00143862],78.6345,true,true], + ["Land_HBarrier_Big_F",[-28.8394,-8.42627,-0.00143862],91.041,true,true], + ["Land_CncShelter_F",[-10.0513,-26.2283,-0.00143862],0.0913576,true,true], + ["Land_HBarrierWall6_F",[0.581543,-12.7048,-0.00143862],91.041,true,true], + ["Land_HBarrierWall6_F",[-19.6943,-14.0881,-0.00143862],271.041,true,true], + ["Land_HBarrierWall6_F",[-5.04932,-19.8594,-0.00143862],181.041,true,true], + ["Land_HBarrier_Big_F",[-25.6514,-11.7356,-0.00143862],181.041,true,true], + ["Land_BagFence_Round_F",[-3.4668,-15.3809,-0.00143862],166.041,true,true], + ["Land_BagFence_Round_F",[-14.3892,-29.0183,-0.00143862],31.041,true,true], + ["Land_BagFence_Round_F",[-7.70801,-28.5588,-0.00143862],46.041,true,true], + ["Land_BagFence_Round_F",[-14.9326,-26.8369,-0.00143862],121.041,true,true], + ["Land_BagFence_Round_F",[-12.2075,-28.4763,-0.00143862],301.041,true,true], + ["Land_BagFence_Round_F",[-4.56348,-17.2019,-0.00143862],76.041,true,true], + ["Land_BagFence_Round_F",[-5.41797,-26.3496,-0.00143862],226.041,true,true], + ["Land_BagFence_Round_F",[-5.45801,-28.5986,-0.00143862],316.041,true,true], + ["Land_HBarrierWall_corridor_F",[-10.1372,-24.7649,-0.00143862],271.041,true,true], + ["Land_HBarrierWall4_F",[-13.7993,-19.9495,-0.00143862],181.041,true,true], + ["Land_HBarrierWall_corner_F",[-19.2007,-20,-0.00143862],181.041,true,true], + ["Land_HBarrierWall_corner_F",[0.711426,-19.4619,-0.00143862],91.041,true,true], + ["Land_LampShabby_F",[-19.8394,5.67236,-0.00143862],136.041,true,true], + ["Land_CncShelter_F",[-5.49072,10.4077,-0.00143862],181.041,true,true], + ["Land_HBarrierWall6_F",[-19.7158,-1.58594,-0.00143862],271.041,true,true], + ["Land_HBarrier_Big_F",[-25.4941,-3.23608,-0.00143862],1.04101,true,true], + ["Land_HBarrier_Big_F",[-12.9121,14.7922,-0.00143862],181.041,true,true], + ["Land_HBarrier_Big_F",[-16.2207,11.6028,-0.00143862],271.041,true,true], + ["Land_HBarrier_Big_F",[-7.72217,11.448,-0.00143862],91.041,true,true], + ["Land_HelipadSquare_F",[-9.93359,-5.85596,-0.00143862],0.362537,true,true], + ["Land_BagFence_Round_F",[-9.72363,18.6138,-0.00143862],136.041,true,true], + ["Land_BagFence_Round_F",[0.90918,18.9221,-0.00143862],226.041,true,true], + ["Land_BagFence_Round_F",[-7.59863,18.5762,-0.00143862],226.041,true,true], + ["Land_BagFence_Round_F",[-1.21631,18.9595,-0.00143862],136.041,true,true], + ["Land_BagFence_Long_F",[-7.02197,15.9382,-0.00143862],91.041,true,true], + ["Land_BagFence_Long_F",[1.48633,16.2864,-0.00143862],91.041,true,true], + ["Land_BagFence_Long_F",[-1.88379,16.5967,-0.00143862],91.041,true,true], + ["Land_BagFence_Long_F",[-10.3921,16.2498,-0.00143862],91.041,true,true], + ["Land_HBarrierWall_corridor_F",[-1.52295,8.83716,-0.00143862],181.041,true,true], + ["Land_HBarrierWall4_F",[3.81348,13.4924,-0.00143862],1.04101,true,true], + ["Land_HBarrierWall4_F",[-6.83154,5.68286,-0.00143862],1.04101,true,true], + ["Land_HBarrierWall4_F",[-16.5835,5.60962,-0.00143862],1.04101,true,true], + ["Land_HBarrierWall_corner_F",[-19.8418,5.16846,-0.00143862],271.041,true,true], + ["Land_HBarrierWall_corner_F",[-0.694824,13.0745,-0.00143862],271.041,true,true], + ["Land_LampShabby_F",[9.37598,-10.3596,-0.00143862],1.04101,true,true], + ["Land_HBarrierWall6_F",[7.20605,-19.8293,-0.00143862],181.041,true,true], + ["Land_HBarrierWall6_F",[6.87402,-10.5664,-0.00143862],181.041,true,true], + ["Land_HBarrier_Big_F",[24.5322,-16.5854,-0.00143862],179.838,true,true], + ["Land_HBarrier_Big_F",[24.5107,-8.08472,-0.00143862],359.838,true,true], + ["Land_HBarrier_Big_F",[27.7676,-11.3262,-0.00143862],269.838,true,true], + ["Land_BagFence_Round_F",[13.2651,-9.68359,-0.00143862],226.041,true,true], + ["Land_BagFence_Round_F",[11.1396,-9.64404,-0.00143862],136.041,true,true], + ["Land_HBarrierWall4_F",[13.9541,-19.9521,-0.00143862],181.041,true,true], + ["Land_Cargo_House_V3_F",[7.46289,-15.906,-0.00143862],271.041,true,true], + ["Land_HBarrierWall_corner_F",[18.2109,-19.53,-0.00143862],91.041,true,true], + ["Land_LampShabby_F",[18.0684,13.9841,-0.00143862],226.041,true,true], + ["Land_HBarrierWall6_F",[17.8833,3.73438,-0.00143862],91.041,true,true], + ["Land_HBarrierWall6_F",[17.9854,-4.51611,-0.00143862],91.041,true,true], + ["Land_HBarrierWall6_F",[10.5679,13.6208,-0.00143862],1.04101,true,true], + ["Land_HBarrierWall4_F",[17.7358,9.23999,-0.00143862],91.041,true,true], + ["Land_HBarrierWall_corner_F",[17.3179,13.7493,-0.00143862],1.04101,true,true] +]; + +_missionLootBoxes = [ +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["B_G_Offroad_01_armed_F",[35.8379,4.96387,0.00813246],0.00104452] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = []; // + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Orange; +_maxNoAI = blck_MaxAI_Orange; +_noAIGroups = blck_AIGrps_Orange; +_noVehiclePatrols = blck_SpawnVeh_Orange; +_noEmplacedWeapons = blck_SpawnEmplaced_Orange; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Orange/bunker.sqf b/@GMS/addons/custom_server/Missions/Orange/bunker.sqf index a7acc2f..52fac20 100644 --- a/@GMS/addons/custom_server/Missions/Orange/bunker.sqf +++ b/@GMS/addons/custom_server/Missions/Orange/bunker.sqf @@ -1,6 +1,6 @@ /* Mission Template by Ghostrider [GRG] - Mission Compositions by Thomas TKO + Mission Compositions by Bill prepared for ghostridergaming Copyright 2016 Last modified 3/20/17 @@ -11,22 +11,24 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ - #include "\q\addons\custom_server\Configs\blck_defines.hpp"; #include "\q\addons\custom_server\Missions\privateVars.sqf"; -diag_log "[blckeagls] Spawning Orange Mission with template = bunkerMission"; +//diag_log "[blckeagls] Spawning Orange Mission with template = default"; _crateLoot = blck_BoxLoot_Orange; -_lootCounts = [15,50,20,60,44,5]; // blck_lootCountsOrange = [8,32,8,30,16,1]; -_startMsg = "A Mafia General is building a heavily defended bunker. Stop him and claim a reward!"; -_endMsg = "The Mafia General has been defeated!"; +_lootCounts = blck_lootCountsOrange; +_startMsg = "An Operations Command was sighted in a nearby sector! Check the Orange marker on your map for the location!"; +_endMsg = "The Operations Command at the Orange Marker is under survivor control!"; _markerLabel = ""; -_markerType = ["ellipse",[300,300],"GRID"]; +_markerType = ["ellipse",[300,300],"Solid"]; _markerColor = "ColorBlack"; _markerMissionName = " Bunker"; _missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" -_garrisonedBuildings_BuildingPosnSystem = []; +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; _garrisonedBuilding_ATLsystem = [ ["Land_Bunker_01_big_F",[-19.0896,9.22754,0.760561],90.071,true,true,[["O_HMG_01_high_F",[-1.09302,-0.0102539,3.2837],0.00152979],["O_HMG_01_high_F",[-5.45947,-3.38574,0.109706],359.994],["O_HMG_01_high_F",[-0.41333,-10.5659,-0.774119],360],["O_HMG_01_high_F",[-0.826416,11.6274,-0.774119],0.00143682],["O_HMG_01_high_F",[11.355,-8.68066,-0.774117],0.000274398]],[]], @@ -37,10 +39,12 @@ _garrisonedBuilding_ATLsystem = [ ["Land_Bunker_01_tall_F",[16.5664,28.7466,-0.00143909],270.416,true,true,[["O_HMG_01_high_F",[-5.00977,2.1792,-0.0121174],0.000287538],["O_HMG_01_high_F",[1.80957,0.26709,4.96756],0.000969946],["O_HMG_01_high_F",[-10.7739,2.07715,-0.0121174],0.000287469],["O_HMG_01_high_F",[-12.0127,6.1333,-0.0121188],360]],[]] ]; + + _missionLandscape = [ - ["Sign_Arrow_F",[-3166.38,-5166.64,-0.00143909],0,true,true], - ["Sign_Arrow_Green_F",[-3166.38,-5166.64,-0.00143909],0,true,true], - ["Sign_Arrow_Yellow_F",[-3166.38,-5166.64,-0.00143909],0,true,true], + //["Sign_Arrow_F",[-3166.38,-5166.64,-0.00143909],0,true,true], + //["Sign_Arrow_Green_F",[-3166.38,-5166.64,-0.00143909],0,true,true], + //["Sign_Arrow_Yellow_F",[-3166.38,-5166.64,-0.00143909],0,true,true], ["babe_helper",[-3168.88,-5166.14,-0.00143909],87.9418,true,true], ["Land_Bunker_01_blocks_3_F",[-16.9785,-4.23682,-0.00143909],270.35,true,true], ["Land_Bunker_01_blocks_3_F",[-8.35254,-12.7046,-0.00143909],179.955,true,true], @@ -66,15 +70,14 @@ _missionLandscape = [ ]; _missionLootBoxes = [ - ["B_supplyCrate_F",[0.0446777,-1.31494,-0.001441],_crateLoot,_lootCounts,0.00167282] ]; _missionLootVehicles = [ ]; _missionPatrolVehicles = [ - // ["O_LSV_02_armed_F",[-40.6245,8.75732,-0.0378561],359.999], - // ["O_LSV_02_unarmed_F",[35.2053,8.41943,-0.0378113],359.999] + ["O_LSV_02_armed_F",[-40.6245,8.75732,-0.0378561],359.999], + ["O_LSV_02_unarmed_F",[35.2053,8.41943,-0.0378113],359.999] ]; _submarinePatrolParameters = [ @@ -83,39 +86,12 @@ _submarinePatrolParameters = [ _airPatrols = [ ]; -_missionEmplacedWeapons = [ - ["O_HMG_01_high_F",[-6.7771,-15.3213,-0.013557],0.000580947], - ["O_HMG_01_high_F",[-7.73462,0.546875,-0.0135565],0.000274398], - ["O_HMG_01_high_F",[-19.5029,-1.33838,-0.0135579],360], - ["O_HMG_01_high_F",[-4.04785,-6.94092,-0.0135589],0.00145283], - ["O_HMG_01_high_F",[-13.0359,-11.1436,-0.0135579],359.999], - ["O_HMG_01_high_F",[-8.35522,30.8169,-0.0135593],0.00145235], - ["O_HMG_01_high_F",[-7.09741,34.6904,-0.0135565],0.000287344], - ["O_HMG_01_high_F",[-13.4502,31.2861,-0.0135565],0.000287307], - ["O_HMG_01_high_F",[-19.916,20.855,-0.0135579],0.00143682], - ["O_HMG_01_high_F",[6.23291,-15.2817,-0.013557],0.000581377], - ["O_HMG_01_high_F",[5.16699,1.34131,-0.0135579],359.999], - ["O_HMG_01_high_F",[11.5872,-10.9995,-0.0135593],0.00145227], - ["O_HMG_01_high_F",[17.4712,-0.704102,-0.0135565],0.000287533], - ["O_HMG_01_high_F",[2.62817,-6.73193,-0.0135579],359.999], - ["O_HMG_01_high_F",[4.55371,34.8799,-0.0135579],360], - ["O_HMG_01_high_F",[11.5566,30.9258,-0.0135565],0.000287538], - ["O_HMG_01_high_F",[16.6682,21.2373,-0.0135565],0.000287276], - ["O_HMG_01_high_F",[5.79248,30.8237,-0.0135565],0.000287469] -]; +_missionEmplacedWeapons = []; // -_missionGroups = [ - [[-7.90332,-2.77295,0],3,6,"Orange",30,45], - [[-0.937012,12.8022,0],3,6,"Orange",30,45], - [[-9.20801,24.0776,0],3,6,"Orange",30,45], - [[8.76147,-1.29004,0],3,6,"Orange",30,45], - [[-0.792725,7.7959,0],3,6,"Orange",30,45], - [[-0.269531,30.3203,0],3,6,"Orange",30,45], - [[8.71509,21.3311,0],3,6,"Orange",30,45] -]; -_scubaGroupParameters = [ -]; + +////////// +// The lines below define additional variables you may wish to configure. // Change _useMines to true/false below to enable mission-specific settings. @@ -125,23 +101,21 @@ _maxNoAI = blck_MaxAI_Orange; _noAIGroups = blck_AIGrps_Orange; _noVehiclePatrols = blck_SpawnVeh_Orange; _noEmplacedWeapons = blck_SpawnEmplaced_Orange; -_uniforms = blck_SkinList; -_headgear = blck_headgear; - -_chanceHeliPatrol = blck_chanceHeliPatrolBlue; // Setting this in the mission file overrides the defaults -_noChoppers = blck_noPatrolHelisOrange; -_missionHelis = blck_patrolHelisOrange; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; _chancePara = 0.75; // Setting this in the mission file overrides the defaults _noPara = 5; // Setting this in the mission file overrides the defaults _paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. -_paraSkill = "orange"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. +_paraSkill = "Red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. _chanceLoot = 0.7; private _lootIndex = selectRandom[1,2,3,4]; private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; -private _paralootCountsChoices = [[0,0,0,25,25,0],[0,0,0,25,25,0],[20,30,0,0,0,0],[0,0,0,0,30,0]]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -diag_log format["[blckeagls] Bunker Mission Parameters Loaded at %1",diag_tickTime]; \ No newline at end of file +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Orange/dashq.sqf b/@GMS/addons/custom_server/Missions/Orange/dashq.sqf index cca74cf..ce2d371 100644 --- a/@GMS/addons/custom_server/Missions/Orange/dashq.sqf +++ b/@GMS/addons/custom_server/Missions/Orange/dashq.sqf @@ -1,6 +1,6 @@ /* Mission Template by Ghostrider [GRG] - Mission Compositions by Thomas TKO + Mission Compositions by Bill prepared for ghostridergaming Copyright 2016 Last modified 3/20/17 @@ -17,12 +17,12 @@ //diag_log "[blckeagls] Spawning Orange Mission with template = default"; _crateLoot = blck_BoxLoot_Orange; _lootCounts = blck_lootCountsOrange; -_startMsg = "An enemy Operations Base was sighted in a nearby sector! Check the Orange marker on your map for the location!"; -_endMsg = "The Operations Base at the Orange Marker is under survivor control!"; +_startMsg = "An enemy HQ center was sighted in a nearby sector! Check the Orange marker on your map for the location!"; +_endMsg = "The HQ at the Orange Marker is under survivor control!"; _markerLabel = ""; _markerType = ["ELLIPSE",[300,300],"Solid"]; _markerColor = "ColorOrange"; -_markerMissionName = "Operations Base"; +_markerMissionName = "Operationsbasis"; _missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" ////////// @@ -179,15 +179,15 @@ _missionLandscape = [ ]; _missionLootBoxes = [ - ["B_supplyCrate_F",[0.0717773,16.9431,-0.00143814],_crateLoot,_lootCounts,0.000320471] + //["Exile_Container_SupplyBox",[0.0717773,16.9431,-0.00143814],_crateLoot,_lootCounts,0.000320471] ]; _missionLootVehicles = [ ]; _missionPatrolVehicles = [ - // ["O_T_LSV_02_armed_F",[-62.7971,0.422119,-0.0236669],0.00164848], - // ["O_T_LSV_02_armed_F",[31.9084,-7.18774,-0.0238085],0.00168349] + ["O_T_LSV_02_armed_F",[-62.7971,0.422119,-0.0236669],0.00164848], + ["O_T_LSV_02_armed_F",[31.9084,-7.18774,-0.0238085],0.00168349] ]; _submarinePatrolParameters = [ @@ -196,26 +196,9 @@ _submarinePatrolParameters = [ _airPatrols = [ ]; -_missionEmplacedWeapons = [ - ["B_HMG_01_high_F",[-27.1521,-29.2402,-0.0135579],154.874], - ["B_HMG_01_high_F",[-14.2676,-29.4304,-0.013557],206.716], - ["B_HMG_01_high_F",[-12.8362,1.83374,-0.0135579],25.3994], - ["B_HMG_01_high_F",[-26.5833,1.45483,-0.0135574],336.99], - ["B_HMG_01_high_F",[-26.2922,25.8635,-0.0135584],25.3994], - ["B_HMG_01_high_F",[-5.00732,29.4277,-0.0135579],359.999], - ["B_HMG_01_high_F",[-7.33691,36.0117,-0.0135584],357.806], - ["B_HMG_01_high_F",[8.54346,36.1248,-0.0135579],359.962] -]; +_missionEmplacedWeapons = []; // + -_missionGroups = [ - [[-41.0581,-3.45898,0],3,6,"Red",30,45], - [[-37.6394,8.57202,0],3,6,"Red",30,45], - [[-21.9045,-23.5044,0],3,6,"Red",30,45], - [[-4.78564,-4.45728,0],3,6,"Red",30,45], - [[-12.2888,11.2847,0],3,6,"Red",30,45], - [[-19.8623,-10.6353,0],3,6,"Red",30,45], - [[4.07446,-4.8584,0],3,6,"Red",30,45] -]; ////////// // The lines below define additional variables you may wish to configure. @@ -243,6 +226,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -//_endCondition = "playerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; -#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Orange/derbunker.sqf b/@GMS/addons/custom_server/Missions/Orange/derbunker.sqf new file mode 100644 index 0000000..eb51178 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Orange/derbunker.sqf @@ -0,0 +1,120 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Orange Mission with template = default"; +_crateLoot = blck_BoxLoot_Orange; +_lootCounts = blck_lootCountsOrange; +_startMsg = "An enemy Bunker was sighted in a nearby sector! Check the Orange marker on your map for the location!"; +_endMsg = "The Bunker at the Orange Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[300,300],"Solid"]; +_markerColor = "ColorOrange"; +_markerMissionName = "DerBunker"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Bunker_01_big_F",[-15.925,9.02295,0.760561],90.071,true,true,[["O_HMG_01_high_F",[-5.45947,-3.38574,0.109706],359.994]],[]], + ["Land_Bunker_01_tall_F",[-15.377,-8.8042,-0.00143909],90.071,true,true,[["O_HMG_01_high_F",[5.50562,-2.54395,-0.0121193],0.00145215],["O_HMG_01_high_F",[-1.72095,-0.109375,4.96893],0.00948966]],[]], + ["Land_Bunker_01_tall_F",[-15.76,28.606,-0.00143909],90.071,true,true,[["O_HMG_01_high_F",[5.47437,2.47559,-0.0121179],0.000581241],["O_HMG_01_high_F",[-1.38867,-0.0722656,4.967],359.999],["O_HMG_01_high_F",[11.8271,5.87988,-0.0121188],0.00143633]],[]], + ["Land_Bunker_01_big_F",[20.199,10.729,0.760561],270.416,true,true,[["O_HMG_01_high_F",[5.86328,3.25586,0.109697],0.0117801]],[]], + ["Land_Bunker_01_tall_F",[19.8899,-8.86914,-0.00143909],270.416,true,true,[["O_HMG_01_high_F",[-5.13818,-2.33496,-0.0121174],0.0002874],["O_HMG_01_high_F",[1.45801,0.0512695,4.96698],360]],[]], + ["Land_Bunker_01_tall_F",[19.731,28.542,-0.00143909],270.416,true,true,[["O_HMG_01_high_F",[-5.00977,2.1792,-0.0121188],0.00143735],["O_HMG_01_high_F",[1.80957,0.26709,4.96756],360],["O_HMG_01_high_F",[-12.0127,6.1333,-0.0121193],0.00145178]],[]] +]; + +_missionLandscape = [ + //["Sign_Arrow_F",[-3163.22,-5166.85,-0.00143909],0,true,true], + //["Sign_Arrow_Green_F",[-3163.22,-5166.85,-0.00143909],0,true,true], + //["Sign_Arrow_Yellow_F",[-3163.22,-5166.85,-0.00143909],0,true,true], + //["babe_helper",[-3165.72,-5166.35,-0.00143909],90.8645,true,true], + ["Land_Bunker_01_blocks_3_F",[-13.762,17.5518,-0.00143909],270.35,true,true], + ["Land_Bunker_01_blocks_3_F",[-0.0979004,-12.9033,-0.00143909],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[-5.18799,-12.9092,-0.00143909],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[-10.175,-12.9253,-0.502439],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[-13.814,-4.44141,-0.00143909],270.35,true,true], + ["Land_Bunker_01_blocks_3_F",[-13.7959,0.544922,-0.00143909],270.35,true,true], + ["CamoNet_INDP_big_F",[2.23804,-2.70508,-0.00143909],182.545,true,true], + ["Land_Bunker_01_blocks_3_F",[-13.7451,22.5391,-0.00143909],270.35,true,true], + ["Land_Bunker_01_blocks_3_F",[-2.51611,30.105,-0.00143909],90.192,true,true], + ["Land_Bunker_01_blocks_3_F",[-10.6179,32.6689,-0.432439],0.106,true,true], + ["Land_Bunker_01_blocks_3_F",[-5.63013,32.6719,-0.00143909],0.106,true,true], + ["Land_Bunker_01_blocks_3_F",[17.958,2.1958,-0.00143909],90.695,true,true], + ["Land_Bunker_01_blocks_3_F",[14.9771,-12.854,-0.529439],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[4.88892,-12.8853,-0.00143909],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[17.9109,-2.78906,-0.00143909],90.695,true,true], + ["Land_Bunker_01_blocks_3_F",[9.98999,-12.8711,-0.00143909],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[6.58691,30.1689,-0.00143909],269.774,true,true], + ["Land_Bunker_01_blocks_3_F",[18.095,19.2026,-0.00143909],90.695,true,true], + ["Land_Bunker_01_blocks_3_F",[18.1409,24.189,-0.00143909],90.695,true,true], + ["Land_Bunker_01_blocks_3_F",[9.54907,32.6689,-0.00143909],0.106,true,true], + ["Land_Bunker_01_blocks_3_F",[14.5359,32.6729,-0.363439],0.106,true,true] +]; + +_missionLootBoxes = [ + //["Exile_Container_SupplyBox",[0.0446777,-1.31494,-0.001441],_crateLoot,_lootCounts,0.00167282] +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["O_LSV_02_armed_F",[-37.46,8.55273,-0.0378561],359.999], + ["O_LSV_02_unarmed_F",[38.3699,8.21484,-0.0378113],359.999] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = []; // + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Orange; +_maxNoAI = blck_MaxAI_Orange; +_noAIGroups = blck_AIGrps_Orange; +_noVehiclePatrols = blck_SpawnVeh_Orange; +_noEmplacedWeapons = blck_SpawnEmplaced_Orange; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "orange"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Orange/lager.sqf b/@GMS/addons/custom_server/Missions/Orange/lager.sqf new file mode 100644 index 0000000..5799cb2 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Orange/lager.sqf @@ -0,0 +1,185 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Orange Mission with template = default"; +_crateLoot = blck_BoxLoot_Orange; +_lootCounts = blck_lootCountsOrange; +_startMsg = "An enemy Camp was sighted in a nearby sector! Check the Orange marker on your map for the location!"; +_endMsg = "The Camp at the Orange Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[300,300],"Solid"]; +_markerColor = "ColorOrange"; +_markerMissionName = "Nachschublager"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_Tower_V1_F",[-8.1167,-39.0396,-0.00143862],180.738,true,true,[["O_HMG_01_high_F",[-4.98901,13.312,-0.0121193],359.999],["O_HMG_01_high_F",[-4.88916,0.893799,17.8798],359.999],["O_GMG_01_high_F",[2.86377,5.15186,17.7791],0.00110346],["O_GMG_01_high_F",[3.12354,-4.59814,17.8788],0.00619121],["O_HMG_01_high_F",[8.82837,21.6572,-0.0121193],359.999],["O_GMG_01_high_F",[-3.55591,26.4539,-0.0118098],360]],[]], + ["Land_Cargo_Tower_V1_F",[-8.7854,37.2058,-0.00143862],180.738,true,true,[["O_HMG_01_high_F",[-4.1167,-15.228,-0.0121188],359.999],["O_GMG_01_high_F",[-5.05029,0.812012,17.8801],359.999],["O_HMG_01_high_F",[2.97925,4.90308,17.7791],359.995],["O_HMG_01_high_F",[3.02808,-5.19946,17.8776],359.987],["O_HMG_01_high_F",[9.59595,-22.2854,-0.0121188],359.999],["O_GMG_01_high_F",[-1.95337,-25.9678,-0.0118098],360]],[]], + ["Land_Cargo_HQ_V1_F",[41.5171,-35.4209,-0.00143814],88.7297,true,true,[["O_HMG_01_high_F",[-4.19043,0.419922,3.1134],360],["O_GMG_01_high_F",[1.2395,-6.33594,3.11891],359.998]],[]], + ["Land_Cargo_HQ_V1_F",[41.6394,35.6191,-0.00143814],271.277,true,true,[["O_HMG_01_high_F",[1.75781,6.54565,3.11813],359.998]],[]], + ["Land_Cargo_Patrol_V1_F",[58.7402,-14.1282,-0.00143814],179.058,true,true,[["O_HMG_01_high_F",[0.936523,-0.546631,4.55561],186.318],["O_HMG_01_high_F",[-8.49658,3.90869,-0.0121207],0.00101132]],[]], + ["Land_Cargo_Patrol_V1_F",[58.6057,14.2329,-0.00143814],359.375,true,true,[["O_GMG_01_high_F",[1.16113,-1.15356,4.33123],360],["O_HMG_01_high_F",[-8.44897,-1.0686,-0.0121198],359.999]],[]] +]; + +_missionLandscape = [ + //["babe_helper",[-3950.48,-2427.52,-0.00143862],0,true,true], + //["Sign_Arrow_Green_F",[-3947.98,-2428.02,-0.00143862],0,true,true], + //["Sign_Arrow_F",[-3947.98,-2428.02,-0.00143862],0,true,true], + //["Sign_Arrow_Yellow_F",[-3947.98,-2428.02,-0.00143862],0,true,true], + ["Land_LampHalogen_F",[-16.9238,-29.4194,-0.00143814],175.993,true,true], + ["Land_HBarrierBig_F",[-16.6211,-36.4802,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-16.6907,-44.7676,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-16.8193,-28.7813,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-17.0107,-4.99146,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-16.8831,-20.9722,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-16.813,-12.6887,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-16.9338,3.10571,-0.00143862],271.533,true,true], + ["Land_LampHalogen_F",[-17.1384,26.0154,-0.00143814],175.993,true,true], + ["Land_HBarrierBig_F",[-17.126,26.9011,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-17.0623,19.092,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-16.8643,11.3931,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-17.0559,35.1846,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-17.2517,42.8821,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[10.6238,-49.76,-0.00143862],1.58276,true,true], + ["Land_HBarrierBig_F",[4.90186,-29.2209,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[2.92627,-49.9541,-0.00143862],1.58276,true,true], + ["Land_HBarrierBig_F",[-3.42188,-29.1743,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[-5.36133,-49.8767,-0.00143862],1.58276,true,true], + ["Land_HBarrierBig_F",[-13.5088,-49.9219,-0.00143862],1.58276,true,true], + ["Land_HBarrierBig_F",[13.3582,-29.1738,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[-11.5808,-29.1753,-0.00143862],181.755,true,true], + ["Land_LampHalogen_F",[6.08081,-17.4399,-0.00143814],183.353,true,true], + ["Land_Cargo_House_V1_F",[5.85425,-11.7749,-0.00143862],178.957,true,true], + ["Land_Cargo_House_V1_F",[12.7263,-11.8384,-0.00143862],180.484,true,true], + ["Land_Cargo_House_V1_F",[6.03076,-23.2114,-0.00143862],0.530105,true,true], + ["Land_Cargo_House_V1_F",[-9.97656,-7.45703,-0.00143862],270.031,true,true], + ["Land_Cargo_House_V1_F",[-9.95679,-0.756836,-0.00143862],270.244,true,true], + ["Land_Cargo_House_V1_F",[12.6707,-23.292,-0.00143862],0.742551,true,true], + ["Land_LampHalogen_F",[4.89917,14.9739,-0.00143814],183.353,true,true], + ["Land_HBarrierBig_F",[3.46533,26.0403,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[-4.86035,26.0867,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[11.9197,26.0874,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[-13.1709,26.1252,-0.00143862],181.755,true,true], + ["Land_Cargo_House_V1_F",[-9.93091,6.11108,-0.00143862],268.716,true,true], + ["Land_Cargo_House_V1_F",[11.5469,20.5737,-0.00143862],180.484,true,true], + ["Land_Cargo_House_V1_F",[11.4912,9.12012,-0.00143862],0.742551,true,true], + ["Land_Cargo_House_V1_F",[4.6748,20.6372,-0.00143862],178.957,true,true], + ["Land_Cargo_House_V1_F",[4.79419,9.20044,-0.00143862],0.530105,true,true], + ["Land_HBarrierBig_F",[-13.959,47.9253,-0.00143862],1.51588,true,true], + ["Land_HBarrierBig_F",[10.1702,48.1106,-0.00143862],1.51588,true,true], + ["Land_HBarrierBig_F",[1.88428,48.1787,-0.00143862],1.51588,true,true], + ["Land_HBarrierBig_F",[-6.26294,48.124,-0.00143862],1.51588,true,true], + ["Land_LampHalogen_F",[37.4138,-49.6885,-0.00143814],86.6613,true,true], + ["Land_HBarrierBig_F",[18.4333,-49.7061,-0.00143862],1.58276,true,true], + ["Land_HBarrierBig_F",[21.7261,-29.1707,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[34.4153,-49.5938,-0.00143862],1.58276,true,true], + ["Land_HBarrierBig_F",[42.5332,-49.4375,-0.00143862],1.58276,true,true], + ["Land_HBarrierBig_F",[26.7168,-49.782,-0.00143862],1.58276,true,true], + ["Land_LampHalogen_F",[24.2969,-4.63354,-0.00143814],175.763,true,true], + ["Land_LampHalogen_F",[24.0779,2.92041,-0.00143814],175.763,true,true], + ["Land_HBarrierBig_F",[24.7175,-16.5247,-0.00143862],270.156,true,true], + ["Land_HBarrierBig_F",[24.5884,-8.51978,-0.00143862],270.156,true,true], + ["Land_HBarrierBig_F",[20.874,3.03345,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[24.8879,-24.3479,-0.00143862],270.156,true,true], + ["Land_HBarrierBig_F",[21.095,-4.52222,-0.00143862],181.755,true,true], + ["Land_Cargo_House_V1_F",[19.4255,-11.8789,-0.00143862],180.272,true,true], + ["Land_Cargo_House_V1_F",[19.5381,-23.3779,-0.00143862],359.215,true,true], + ["Land_HBarrierBig_F",[24.0823,6.26489,-0.00143862],270.156,true,true], + ["Land_HBarrierBig_F",[23.7832,22.0911,-0.00143862],270.156,true,true], + ["Land_HBarrierBig_F",[23.9121,14.0862,-0.00143862],270.156,true,true], + ["Land_HBarrierBig_F",[20.2896,26.0906,-0.00143862],181.755,true,true], + ["Land_Cargo_House_V1_F",[18.3564,9.03589,-0.00143862],359.215,true,true], + ["Land_Cargo_House_V1_F",[18.2441,20.533,-0.00143862],180.272,true,true], + ["Land_LampHalogen_F",[37.1499,49.4319,-0.00143814],270.972,true,true], + ["Land_HBarrierBig_F",[17.8696,48.312,-0.00143862],1.51588,true,true], + ["Land_HBarrierBig_F",[33.9624,48.3108,-0.00143862],1.51588,true,true], + ["Land_HBarrierBig_F",[25.6785,48.3774,-0.00143862],1.51588,true,true], + ["Land_HBarrierBig_F",[41.6587,48.5078,-0.00143862],1.51588,true,true], + ["Land_HBarrierBig_F",[53.832,-28.3086,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[53.8938,-44.4204,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[53.9326,-36.322,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[50.8213,-49.5146,-0.00143862],1.58276,true,true], + ["Land_LampHalogen_F",[61.6257,-8.93774,-0.00143814],183.353,true,true], + ["Land_HBarrierBig_F",[53.5598,-12.5808,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[58.1006,-9.04248,-0.00143862],180.639,true,true], + ["Land_HBarrierBig_F",[53.6702,-20.0735,-0.00143862],271.533,true,true], + ["Land_LampHalogen_F",[61.2739,9.27808,-0.00143814],183.353,true,true], + ["Land_HBarrierBig_F",[57.9741,9.22607,-0.00143862],180.457,true,true], + ["Land_HBarrierBig_F",[53.0159,20.7566,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[53.2136,13.0596,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[53.0928,28.8538,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[53.1624,37.1411,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[52.9644,44.8403,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[49.8362,48.4373,-0.00143862],1.51588,true,true] +]; + +_missionLootBoxes = [ + //["Exile_Container_SupplyBox",[-2.28174,0.128662,-0.00143862],_crateLoot,_lootCounts,0.000181514] +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["Exile_Car_Hunter",[24.8054,-67.8333,0.00875282],89.6558], + ["Exile_Car_HEMMT",[24.8997,69.1799,-0.00138235],91.5468], + ["O_LSV_02_armed_F",[74.0911,1.21655,-0.0377212],359.999] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = []; // + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Orange; +_maxNoAI = blck_MaxAI_Orange; +_noAIGroups = blck_AIGrps_Orange; +_noVehiclePatrols = blck_SpawnVeh_Orange; +_noEmplacedWeapons = blck_SpawnEmplaced_Orange; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "orange"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Orange/tko_camp.sqf b/@GMS/addons/custom_server/Missions/Orange/tko_camp.sqf index a76162d..ed2488d 100644 --- a/@GMS/addons/custom_server/Missions/Orange/tko_camp.sqf +++ b/@GMS/addons/custom_server/Missions/Orange/tko_camp.sqf @@ -122,7 +122,7 @@ _missionLandscape = [ ]; _missionLootBoxes = [ - ["B_supplyCrate_F",[1.55273,0.0065918,-0.00143957],_crateLoot,_lootCounts,0.000522983] + //["Exile_Container_SupplyBox",[1.55273,0.0065918,-0.00143957],_crateLoot,_lootCounts,0.000522983] ]; _missionLootVehicles = [ @@ -139,36 +139,9 @@ _submarinePatrolParameters = [ _airPatrols = [ ]; -_missionEmplacedWeapons = [ - ["B_HMG_01_high_F",[-8.31958,-28.7351,-0.0135579],359.998], - ["B_HMG_01_high_F",[-25.1523,-1.33643,-0.0135579],359.999], - ["B_HMG_01_high_F",[-23.7974,-12.0527,-0.0135579],359.998], - ["B_HMG_01_high_F",[-18.7363,-10.283,-0.0135579],359.998], - ["B_HMG_01_high_F",[-21.9993,4.10132,-0.0135579],359.999], - ["B_HMG_01_high_F",[-18.2954,25.033,-0.0135579],359.999], - ["B_HMG_01_high_F",[-0.275879,18.9167,-0.0135579],0.000433404], - ["B_HMG_01_high_F",[18.0608,-20.4434,-0.0135579],359.999], - ["B_HMG_01_high_F",[5.96338,-3.91113,-0.0135593],286.946] -]; +_missionEmplacedWeapons = []; // + -_missionGroups = [ - //[[-2.42578,-9.81299,0],3,6,"Red",30,45], - //[[-16.3196,-3.59033,0],3,6,"Red",30,45], - //[[-4.65015,-0.520264,0],3,6,"Red",30,45], - //[[-7.48169,-14.3093,0],3,6,"Red",30,45], - //[[-5.94653,-0.124756,0],3,6,"Red",30,45], - //[[20.2122,-6.24878,0],3,6,"Red",30,45], - //[[20.0557,6.34253,0],3,6,"Red",30,45], - [[15.1677,-10.6943,0],3,6,"Red",30,45], - [[2.0083,-14.293,-4.76837e-007],3,6,"Red",30,45], - [[1.84692,-7.56616,-4.76837e-007],3,6,"Red",30,45], - [[2.71069,-14.7263,-4.76837e-007],3,6,"Red",30,45], - [[2.50513,-13.1191,0],3,6,"Red",30,45], - [[13.8992,11.4729,0],3,6,"Red",30,45], - [[3.75098,11.2024,0],3,6,"Red",30,45], - [[18.3645,19.8477,0],3,6,"Red",30,45], - [[3.17798,26.7761,0],3,6,"Red",30,45] -]; ////////// // The lines below define additional variables you may wish to configure. @@ -196,6 +169,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -//_endCondition = "playerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; -#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/Ammunition_depot.sqf b/@GMS/addons/custom_server/Missions/Red/Ammunition_depot.sqf new file mode 100644 index 0000000..4098cc0 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Red/Ammunition_depot.sqf @@ -0,0 +1,173 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Red Mission with template = default"; +_crateLoot = blck_BoxLoot_Red; +_lootCounts = blck_lootCountsRed; +_startMsg = "An Anemy Ammunition Depot was sighted in a nearby sector! Check the Red marker on your map for the location!"; +_endMsg = "The Ammunition depot at the Red Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[200,200],"Solid"]; +_markerColor = "ColorRed"; +_markerMissionName = "Ammunition Depot"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_MilOffices_V1_F",[0.936035,53.2339,-0.00146103],0.0551743,true,true,[["B_HMG_01_high_F",[-14.6453,4.44092,0.48988],0.00164355],["B_HMG_01_high_F",[16.2224,2.84473,0.48988],0.00164314],["B_HMG_01_high_F",[16.2043,-18.5793,-0.0121188],360],["B_HMG_01_high_F",[19.0071,-25.5498,-0.0121188],360]],[]] +]; + + + +_missionLandscape = [ + //["babe_helper",[-3584.79,-2745.02,-0.00146103],0,true,true], + //["Sign_Arrow_Green_F",[-3582.29,-2745.52,-0.00146103],0,true,true], + //["Sign_Arrow_F",[-3582.29,-2745.52,-0.00146103],0,true,true], + //["Sign_Arrow_Yellow_F",[-3582.29,-2745.52,-0.00146103],0,true,true], + ["Land_dp_smallTank_F",[-23.4897,0.757568,-0.00146103],315.055,true,true], + ["Land_HBarrier_Big_F",[-30.251,0.998047,-0.00146103],90.6364,true,true], + ["Land_HBarrier_Big_F",[-30.0261,-4.99609,-0.00146103],88.8324,true,true], + ["Land_HBarrier_Big_F",[-24.3879,-7.97534,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[-15.9822,-8.03101,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[-7.62939,-8.03394,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[-30.4287,8.68091,-0.00146103],90.6364,true,true], + ["Land_HBarrier_Big_F",[-30.5715,17.0325,-0.00146103],90.6364,true,true], + ["Land_HBarrier_Big_F",[-30.8035,33.8059,-0.00146103],90.6364,true,true], + ["Land_HBarrier_Big_F",[-30.7122,25.4006,-0.00146103],90.6364,true,true], + ["Land_i_Barracks_V1_F",[-21.0911,25.2551,-0.00146103],270.055,true,true], + ["Land_LampHalogen_F",[-30.0498,68.0146,-0.00146055],240.055,true,true], + ["Land_Medevac_house_V1_F",[-25.7917,63.0088,-0.00146103],359.798,true,true], + ["Land_Medevac_house_V1_F",[-25.821,54.4678,-0.00146103],179.534,true,true], + ["Land_Tank_rust_F",[-26.2607,48.0527,-0.00146103],180.055,true,true], + ["Land_HBarrier_Big_F",[-26.0667,70.3225,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[-0.915771,70.2883,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[-9.30811,70.2639,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[-17.6609,70.2668,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[-30.9465,42.1575,-0.00146103],90.6364,true,true], + ["Land_HBarrier_Big_F",[-31.3367,67.2683,-0.00146103],90.6364,true,true], + ["Land_HBarrier_Big_F",[-31.1025,50.5112,-0.00146103],90.6364,true,true], + ["Land_HBarrier_Big_F",[-31.1938,58.9167,-0.00146103],90.6364,true,true], + ["Land_LampHalogen_F",[12.158,-7.74023,-0.00146055],90.0552,true,true], + ["Land_HBarrier_Big_F",[17.4336,-8.0415,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[25.7888,-8.03149,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[0.675049,-7.98291,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[9.08105,-8.03857,-0.00146103],181.637,true,true], + ["Land_HelipadSquare_F",[31.1362,2.08008,-0.00146103],180.086,true,true], + ["Land_BagFence_Long_F",[23.658,6.82251,-0.00146103],90.0552,true,true], + ["Land_BagFence_Long_F",[14.4004,5.9585,-0.00146103],90.0552,true,true], + ["Land_i_Shed_Ind_F",[0.762939,3.73413,-0.00146103],179.98,true,true], + ["Land_PortableLight_double_F",[19.6589,24.5911,-0.00146103],240.055,true,true], + ["Land_BagFence_Round_F",[13.7778,8.4668,-0.00146103],225.055,true,true], + ["Land_BagFence_Round_F",[24.2874,9.32739,-0.00146103],135.055,true,true], + ["Land_CncWall4_F",[19.353,37.1301,-0.00146103],269.856,true,true], + ["Land_CncWall4_F",[19.3921,31.9155,-0.00146103],269.856,true,true], + ["Land_BagFence_Long_F",[11.2759,9.09644,-0.00146103],180.055,true,true], + ["Land_BagFence_Long_F",[26.7832,9.94385,-0.00146103],0.0551743,true,true], + ["Land_LampHalogen_F",[19.0601,40.1711,-0.00146055],315.055,true,true], + ["Land_HBarrier_Big_F",[15.8428,70.2297,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[7.49023,70.2327,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[24.198,70.2397,-0.00146103],181.637,true,true], + ["Land_CncWall4_F",[22.377,40.0833,-0.00146103],0,true,true], + ["Land_CncWall4_F",[27.5962,40.116,-0.00146103],0,true,true], + ["Land_LampHalogen_F",[45.8774,-7.93433,-0.00146055],60.0552,true,true], + ["Land_LampHalogen_F",[45.5952,6.93604,-0.00146055],180.055,true,true], + ["Land_Tank_rust_F",[43.6697,0.581299,-0.00146103],90.0552,true,true], + ["Land_HBarrier_Big_F",[42.5474,-8.09009,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[47.6099,-4.77002,-0.00146103],90.055,true,true], + ["Land_HBarrier_Big_F",[34.1946,-8.08716,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[47.4333,3.63403,-0.00146103],90.055,true,true], + ["Land_BagFence_Round_F",[53.0293,5.18921,-0.00146103],315.055,true,true], + ["Land_BagFence_Long_F",[50.5286,4.56616,-0.00146103],180.055,true,true], + ["Land_BagFence_Long_F",[39.7786,6.70166,-0.00146103],90.0552,true,true], + ["Land_Wall_IndCnc_Pole_F",[46.9377,21.1001,-0.00146103],90.0552,true,true], + ["Land_Shed_Big_F",[31.9468,31.2043,-0.00146151],89.7488,true,true], + ["Land_HBarrier_Big_F",[46.9426,33.5571,-0.00146103],90.055,true,true], + ["Land_HBarrier_Big_F",[47.1191,25.1531,-0.00146103],90.055,true,true], + ["Land_BagFence_Round_F",[39.1563,9.17456,-0.00146103],225.055,true,true], + ["Land_BagFence_Round_F",[53.0469,24.4275,-0.00146103],225.055,true,true], + ["Land_BagFence_Long_F",[36.6648,9.80176,-0.00146103],180.055,true,true], + ["Land_BagFence_Long_F",[53.6729,21.9277,-0.00146103],90.0552,true,true], + ["Land_BagFence_Long_F",[50.5496,25.0559,-0.00146103],180.055,true,true], + ["Land_BagFence_Long_F",[53.6707,7.68921,-0.00146103],270.055,true,true], + ["Land_BarGate_F",[47.6548,14.5193,-0.00146103],90.0552,true,true], + ["Land_LampHalogen_F",[44.5273,41.2136,-0.00146055],60.0552,true,true], + ["Land_HBarrier_Big_F",[46.7148,41.9067,-0.00146103],90.055,true,true], + ["Land_HBarrier_Big_F",[46.2976,58.6626,-0.00146103],90.055,true,true], + ["Land_HBarrier_Big_F",[32.6038,70.1841,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[40.9565,70.1812,-0.00146103],181.637,true,true], + ["Land_HBarrier_Big_F",[46.0698,67.0122,-0.00146103],90.055,true,true], + ["Land_HBarrier_Big_F",[46.4741,50.2585,-0.00146103],90.055,true,true], + ["Land_CncWall4_F",[37.9797,40.1345,-0.00146103],0,true,true], + ["Land_CncWall4_F",[32.7908,40.125,-0.00146103],0,true,true], + ["Land_CncWall4_F",[43.1743,40.1436,-0.00146103],0,true,true], + ["Land_TTowerBig_1_F",[33.9404,56.3271,-0.00146103],0.0551743,true,true] +]; + +_missionLootBoxes = [ +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["B_G_Offroad_01_armed_F",[-51.5793,28.9631,0.00801468],179.03], + ["B_G_Offroad_01_armed_F",[9.30664,88.3091,0.00802708],89.9029], + ["B_G_Offroad_01_armed_F",[72.2974,6.63599,0.00802183],0.00106337] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = []; // + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Red; +_maxNoAI = blck_MaxAI_Red; +_noAIGroups = blck_AIGrps_Red; +_noVehiclePatrols = blck_SpawnVeh_Red; +_noEmplacedWeapons = blck_SpawnEmplaced_Red; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/Camp_Moreell.sqf b/@GMS/addons/custom_server/Missions/Red/Camp_Moreell.sqf new file mode 100644 index 0000000..1056112 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Red/Camp_Moreell.sqf @@ -0,0 +1,156 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Red Mission with template = default"; +_crateLoot = blck_BoxLoot_Red; +_lootCounts = blck_lootCountsRed; +_startMsg = "Enemy Camp Moreell was sighted in a nearby sector! Check the Red marker on your map for the location!"; +_endMsg = "The Camp Moreell at the Red Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[200,200],"Solid"]; +_markerColor = "ColorRed"; +_markerMissionName = "Camp Moreell"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_Patrol_V3_F",[-3.45557,32.6038,-0.00143814],163.034,true,true,[["O_HMG_01_high_F",[-1.75244,0.382568,4.33092],0.00157772]],[]], + ["Land_Cargo_HQ_V3_F",[1.5835,1.53711,-0.00143814],90.021,true,true,[["O_HMG_01_high_F",[-4.53003,1.89331,3.1134],270.551],["O_Mortar_01_F",[0.884277,-5.92041,3.1624],178.341],["O_GMG_01_high_F",[-11.2842,-8.48218,-0.0118098],221.694],["O_HMG_01_high_F",[-12.6897,-6.82007,-0.0121179],236.126],["O_GMG_01_high_F",[10.885,-11.4487,-0.0118084],147.658],["O_GMG_01_high_F",[19.3098,-6.53003,-0.0118093],147.655]],[]], + ["Land_Cargo_Patrol_V3_F",[10.9478,34.4741,-0.00143814],195.395,true,true,[["O_HMG_01_high_F",[1.41943,0.690674,4.33092],359.999]],[]] +]; + + + +_missionLandscape = [ + ["Land_HBarrier_Big_F",[-14.1831,0.348877,-0.00143862],54.7855,true,true], + ["Land_HBarrier_1_F",[-7.70728,-8.24048,-0.00143862],295.873,true,true], + ["Land_BagFence_Long_F",[-11.6091,-6.83057,-0.00143862],45.3947,true,true], + ["Land_BagFence_Round_F",[-12.8318,-4.68042,-0.00143862],90.3947,true,true], + ["Land_BagFence_Round_F",[-9.44946,-8.13599,-0.00143862],0.394724,true,true], + ["Land_Cargo_House_V3_F",[-11.8579,27.8225,-0.00143862],341.505,true,true], + ["CamoNet_OPFOR_open_F",[-14.8772,18.198,-0.00143862],90.3947,true,true], + ["Land_HBarrier_Big_F",[-24.5461,25.9207,-0.00143862],195.395,true,true], + ["Land_HBarrier_Big_F",[-7.8335,30.6655,-0.00143862],255.395,true,true], + ["Land_HBarrier_Big_F",[-24.0242,10.8638,-0.00143862],165.395,true,true], + ["Land_HBarrier_Big_F",[-18.0986,7.95679,-0.00143862],255.395,true,true], + ["Land_HBarrier_Big_F",[-19.7212,22.9065,-0.00143862],90.3947,true,true], + ["Land_HBarrier_Big_F",[-31.6633,25.0271,-0.00143862],150.395,true,true], + ["Land_HBarrier_Big_F",[-12.3518,34.6216,-0.00143862],345.395,true,true], + ["Land_HBarrier_Big_F",[-17.9399,30.3276,-0.00143862],300.395,true,true], + ["Land_HBarrier_Big_F",[-19.3733,16.4546,-0.00143862],90.3947,true,true], + ["Land_HBarrier_1_F",[-32.8965,12.5454,-0.00143862],42.5069,true,true], + ["Land_HBarrier_1_F",[-30.3511,10.0146,-0.00143862],42.5069,true,true], + ["CamoNet_OPFOR_big_F",[-27.2468,18.4834,-0.00143862],75.3947,true,true], + ["Land_BagFence_Round_F",[-33.3694,10.7087,-0.00143862],87.5069,true,true], + ["Land_BagFence_Round_F",[-31.8938,9.28491,-0.00143862],357.507,true,true], + ["Land_HBarrier_5_F",[9.15552,-4.91626,-0.00143862],269.593,true,true], + ["Land_HBarrier_5_F",[9.13477,0.585938,-0.00143862],269.593,true,true], + ["Land_Cargo_House_V3_F",[25.2329,2.59155,-0.00143862],105.395,true,true], + ["Land_HBarrier_Big_F",[-2.57373,-8.99463,-0.00143862],180.395,true,true], + ["Land_HBarrier_Big_F",[26.4961,-2.62256,-0.00143862],195.395,true,true], + ["Land_HBarrier_Big_F",[5.79712,-8.80371,-0.00143862],180.395,true,true], + ["Land_HBarrier_1_F",[14.0208,-8.50757,-0.00143862],334.157,true,true], + ["Land_HBarrier_1_F",[22.1511,-3.42603,-0.00143862],324.626,true,true], + ["Land_HBarrier_1_F",[19.1423,-5.3833,-0.00143862],324.626,true,true], + ["Land_HBarrier_1_F",[10.7295,-9.9397,-0.00143862],334.157,true,true], + ["Land_BagFence_Round_F",[22.5408,-5.08765,-0.00143862],279.626,true,true], + ["Land_BagFence_Round_F",[20.8389,-6.23145,-0.00143862],9.62595,true,true], + ["Land_BagFence_Round_F",[14.1299,-10.2107,-0.00143862],289.157,true,true], + ["Land_BagFence_Round_F",[12.262,-11.0569,-0.00143862],19.157,true,true], + ["Land_HBarrier_5_F",[7.05835,9.52783,-0.00143862],181.048,true,true], + ["Land_HBarrier_5_F",[26.3564,29.2161,-0.00143862],195.395,true,true], + ["Land_HBarrier_5_F",[9.08203,5.92139,-0.00143862],269.593,true,true], + ["Land_HBarrier_Big_F",[18.55,34.8018,-0.00143862],195.395,true,true], + ["Land_HBarrier_Big_F",[1.32568,35.1333,-0.00143862],255.395,true,true], + ["Land_HBarrier_Big_F",[7.22388,36.5254,-0.00143862],285.395,true,true], + ["Land_HBarrier_Big_F",[-4.35571,36.8228,-0.00143862],345.395,true,true], + ["Land_HBarrier_Big_F",[7.04761,30.9424,-0.00143862],195.395,true,true], + ["Land_BagFence_Long_F",[24.1768,15.7207,-0.00143862],105.395,true,true], + ["Land_BagFence_Long_F",[22.7461,10.5283,-0.00143862],285.395,true,true], + ["Land_HBarrier_3_F",[25.4558,17.1135,-0.00143862],195.395,true,true], + ["Land_HBarrier_3_F",[22.7898,29.1609,-0.00143862],285.395,true,true], + ["Land_HBarrier_3_F",[23.3201,8.88696,-0.00143862],195.395,true,true], + ["Land_HBarrier_Big_F",[12.9075,38.3318,-0.00143862],195.395,true,true], + ["Land_HBarrier_Big_F",[30.9158,1.41919,-0.00143862],105.395,true,true], + ["Land_HBarrier_5_F",[29.5054,24.8923,-0.00143862],269.593,true,true], + ["Land_HBarrier_5_F",[29.5303,19.5947,-0.00143862],269.593,true,true], + ["CamoNet_OPFOR_open_F",[28.1597,12.0786,-0.00143862],195.395,true,true], + ["Land_HBarrier_Big_F",[31.4031,16.592,-0.00143862],0.394724,true,true], + ["Land_HBarrier_Big_F",[28.876,7.35913,-0.00143862],195.395,true,true], + ["Land_HBarrier_1_F",[33.3733,10.5449,-0.00143862],15.3947,true,true], + ["Land_HBarrier_1_F",[27.9988,12.1958,-0.00143862],195.395,true,true], + ["Land_BagFence_Long_F",[32.6428,9.11694,-0.00143862],285.395,true,true], + ["Land_BagFence_Long_F",[28.4683,13.8879,-0.00143862],105.395,true,true], + ["Land_HBarrier_3_F",[29.9619,29.1274,-0.00143862],105.395,true,true], + ["Land_HBarrier_3_F",[34.8462,14.4836,-0.00143862],90.3947,true,true], + ["Land_BagBunker_Large_F",[27.696,35.6018,-0.00143862],195.395,true,true] +]; + +_missionLootBoxes = [ +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["O_LSV_02_armed_F",[34.9805,-28.0225,-0.0376697],359.999] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = [ + +]; + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Red; +_maxNoAI = blck_MaxAI_Red; +_noAIGroups = blck_AIGrps_Red; +_noVehiclePatrols = blck_SpawnVeh_Red; +_noEmplacedWeapons = blck_SpawnEmplaced_Red; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/Operations_Command.sqf b/@GMS/addons/custom_server/Missions/Red/Operations_Command.sqf new file mode 100644 index 0000000..a6d00ea --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Red/Operations_Command.sqf @@ -0,0 +1,184 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Red Mission with template = default"; +_crateLoot = blck_BoxLoot_Red; +_lootCounts = blck_lootCountsRed; +_startMsg = "An Operations Command was sighted in a nearby sector! Check the Red marker on your map for the location!"; +_endMsg = "The Operations Command at the Red Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[300,300],"Solid"]; +_markerColor = "ColorRed"; +_markerMissionName = "Operations Command"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_Patrol_V3_F",[-26.1375,13.395,-0.00143862],104.247,true,true,[["O_HMG_01_high_F",[-1.16919,-1.02051,4.33092],359.999]],[]], + ["Land_Cargo_Tower_V3_F",[0.0512695,-43.2329,-0.00143909],1.37485,true,true,[["O_HMG_01_high_F",[-11.6333,3.14819,-0.0121188],360],["O_Mortar_01_F",[-3.08325,4.21802,17.9254],0.000187431],["O_GMG_01_high_F",[-3.21069,-3.16113,17.8767],360],["O_GMG_01_high_F",[4.70557,-0.741943,17.8767],360]],[]], + ["Land_Cargo_Patrol_V3_F",[-22.3018,-36.6943,-0.00143862],16.3749,true,true,[["O_HMG_01_high_F",[-1.44019,-0.544922,4.33092],0.000570454],["O_HMG_01_high_F",[-6.95337,5.57886,-0.0121193],359.998]],[]], + ["Land_Cargo_HQ_V3_F",[0.157227,3.02832,-0.00143862],91.3748,true,true,[["O_Mortar_01_F",[1.9917,1.24707,3.16241],359.999],["O_HMG_01_high_F",[-4.22266,1.80176,3.1134],359.999],["O_HMG_01_high_F",[3.10205,-5.8584,3.1134],359.999],["O_HMG_01_high_F",[-6.48584,7.63452,-0.0121193],359.998],["O_HMG_01_high_F",[9.13306,15.3284,-0.0121193],359.998]],[]], + ["Land_Cargo_Tower_V3_F",[-16.1003,25.6072,-0.00143909],181.375,true,true,[["O_HMG_01_high_F",[3.25903,3.35229,17.8764],359.997],["O_GMG_01_high_F",[-4.9707,0.915771,17.8767],359.995]],[]], + ["Land_Cargo_Patrol_V3_F",[21.9438,-2.25854,-0.00143862],269.918,true,true,[["O_GMG_01_high_F",[1.11499,0.921387,4.33123],360]],[]], + ["Land_Cargo_House_V3_F",[7.7749,-26.0698,-0.00143909],1.37485,true,true,[["O_HMG_01_high_F",[2.2688,8.65552,-0.0121188],360]],[]] +]; + + + +_missionLandscape = [ + ["CamoNet_OPFOR_open_F",[-31.8352,-29.0081,-0.00143909],235.13,true,true], + ["CamoNet_OPFOR_open_F",[-43.8352,-16.6941,-0.00143909],181.375,true,true], + ["Land_HBarrier_Big_F",[-37.4087,-8.59814,-0.00143909],286.375,true,true], + ["Land_HBarrier_Big_F",[-29.3643,-37.0271,-0.00143909],37.1575,true,true], + ["Land_HBarrier_Big_F",[-35.4788,-31.5889,-0.00143909],50.6964,true,true], + ["Land_HBarrier_Big_F",[-38.9624,-25.2727,-0.00143909],255.154,true,true], + ["Land_BagBunker_Large_F",[-43.364,-16.4709,-0.00143909],91.3748,true,true], + ["Land_HBarrier_Big_F",[-34.405,-1.28906,-0.00143909],301.375,true,true], + ["Land_HBarrier_Big_F",[-29.0862,14.3416,-0.00143909],286.375,true,true], + ["Land_HBarrier_Big_F",[-31.1816,6.38184,-0.00143909],286.375,true,true], + ["Land_LampHalogen_F",[-29.8584,2.74854,-0.00143862],256.375,true,true], + ["Land_HBarrierWall_corridor_F",[-16.1533,-40.845,-0.00143909],106.375,true,true], + ["Land_HBarrier_Big_F",[-10.9395,-43.5535,-0.00143909],13.6286,true,true], + ["Land_HBarrier_Big_F",[-3.8855,-44.2878,-0.00143909],0.866833,true,true], + ["Land_HBarrier_Big_F",[-22.3318,-40.6543,-0.00143909],200.888,true,true], + ["Land_HBarrier_Big_F",[4.41016,-44.2852,-0.00143909],0.866833,true,true], + ["Land_HBarrier_5_F",[2.9043,-17.4326,-0.00143909],271.375,true,true], + ["Land_HBarrier_5_F",[-5.53174,-9.47681,-0.00143909],181.375,true,true], + ["Land_Cargo_House_V3_F",[-1.97241,-25.8367,-0.00143909],1.37485,true,true], + ["Land_HBarrier_Big_F",[-9.21558,-15.051,-0.00143909],271.375,true,true], + ["Land_HBarrier_Big_F",[-5.97168,-20.2385,-0.00143909],181.375,true,true], + ["Land_HBarrier_Big_F",[2.51318,-20.2158,-0.00143909],181.375,true,true], + ["Land_HBarrier_3_F",[2.83398,-22.9663,-0.00143909],91.3748,true,true], + ["Land_HBarrier_3_F",[2.75586,-26.2246,-0.00143909],91.3748,true,true], + ["Land_HBarrier_3_F",[2.94287,-10.5574,-0.00143909],271.375,true,true], + ["Land_HBarrier_3_F",[0.964355,-9.63477,-0.00143909],1.37485,true,true], + ["Land_HBarrier_3_F",[-6.09448,-25.2507,-0.00143909],271.375,true,true], + ["Land_HBarrier_3_F",[1.72021,-27.6951,-0.00143909],1.37485,true,true], + ["Land_HBarrier_3_F",[-6.02515,-22.2542,-0.00143909],271.375,true,true], + ["Land_HBarrier_3_F",[4.84912,-27.7708,-0.00143909],1.37485,true,true], + ["Land_HBarrier_3_F",[-5.15039,-27.5239,-0.00143909],1.37485,true,true], + ["Land_HelipadCircle_F",[-22.2104,-10.7046,-0.00143909],90.8075,true,true], + ["Land_TTowerBig_2_F",[-3.03882,-15.5251,-0.00143909],1.37485,true,true], + ["Land_HBarrier_5_F",[-24.4253,17.3018,-0.00143909],194.949,true,true], + ["Land_HBarrier_5_F",[-12.988,7.96045,-0.00143909],181.375,true,true], + ["Land_HBarrier_5_F",[-26.457,9.23633,-0.00143909],16.5662,true,true], + ["Land_Cargo_House_V3_F",[-15.2529,3.47607,-0.00143909],91.3748,true,true], + ["Land_HBarrier_Big_F",[-5.96069,14.4766,-0.00143909],1.375,true,true], + ["Land_HBarrier_Big_F",[2.22437,14.509,-0.00143909],1.375,true,true], + ["Land_HBarrier_Big_F",[-9.21826,9.43896,-0.00143909],271.375,true,true], + ["Land_HBarrier_Big_F",[-9.23389,1.12988,-0.00143909],271.375,true,true], + ["Land_HBarrier_Big_F",[-9.2439,-6.94019,-0.00143909],271.375,true,true], + ["Land_HBarrier_Big_F",[-26.9719,22.2693,-0.00143909],286.375,true,true], + ["Land_HBarrier_3_F",[-10.071,23.9849,-0.00143909],91.3748,true,true], + ["Land_HBarrier_Big_F",[-14.6584,26.7698,-0.00143909],1.375,true,true], + ["Land_HBarrier_Big_F",[-22.5229,26.7314,-0.00143909],1.375,true,true], + ["Land_HBarrier_Big_F",[-6.28784,26.8616,-0.00143909],1.375,true,true], + ["Land_HBarrier_Big_F",[1.70752,25.8137,-0.00143909],16.375,true,true], + ["CamoNet_OPFOR_open_F",[13.4675,-46.5574,-0.00143909],256.375,true,true], + ["Land_BagBunker_Large_F",[13.6731,-46.6125,-0.00143909],346.375,true,true], + ["Land_HBarrier_Big_F",[25.0122,-8.42798,-0.00143909],89.245,true,true], + ["Land_HBarrier_Big_F",[20.2207,-26.6072,-0.00143909],346.375,true,true], + ["Land_HBarrier_Big_F",[10.3425,-20.1804,-0.00143909],181.375,true,true], + ["Land_HBarrier_Big_F",[13.3196,-15.1829,-0.00143909],91.375,true,true], + ["Land_HBarrier_Big_F",[25.2847,-22.1433,-0.00143909],89.8961,true,true], + ["Land_HBarrier_Big_F",[15.2939,-23.981,-0.00143909],61.375,true,true], + ["Land_HBarrier_Big_F",[17.6921,-30.4187,-0.00143909],261.124,true,true], + ["Land_HBarrier_Big_F",[18.2314,-37.9956,-0.00143909],275.055,true,true], + ["Land_HBarrier_1_F",[26.3027,-13.0132,-0.00143909],224.245,true,true], + ["Land_HBarrier_1_F",[26.3459,-17.553,-0.00143909],134.896,true,true], + ["Land_HBarrier_3_F",[24.4424,-13.2629,-0.00143909],179.245,true,true], + ["Land_HBarrier_3_F",[23.5449,-11.0381,-0.00143909],89.245,true,true], + ["Land_HBarrier_3_F",[23.5166,-19.6731,-0.00143909],269.896,true,true], + ["Land_HBarrier_3_F",[24.4841,-17.4751,-0.00143909],359.896,true,true], + ["Land_HBarrier_3_F",[26.4421,-11.2278,-0.00143909],89.245,true,true], + ["Land_HBarrier_3_F",[26.521,-19.3137,-0.00143909],269.896,true,true], + ["Land_Tank_rust_F",[17.9231,-22.1641,-0.00143909],238.726,true,true], + ["Land_LampHalogen_F",[25.1262,-18.7678,-0.00143862],151.326,true,true], + ["Land_LampHalogen_F",[25.188,-11.5505,-0.00143862],241.375,true,true], + ["Land_HBarrierWall_corridor_F",[8.88965,13.3088,-0.00143909],76.3748,true,true], + ["Land_HBarrierWall_corridor_F",[11.9426,4.98389,-0.00143909],1.37485,true,true], + ["Land_HBarrierWall_corridor_F",[14.0635,10.1843,-0.00143909],331.375,true,true], + ["CamoNet_OPFOR_open_F",[16.8806,13.8459,-0.00143909],46.3748,true,true], + ["Land_HBarrierWall4_F",[12.9727,17.2073,-0.00143909],301.375,true,true], + ["Land_HBarrierWall4_F",[13.927,14.678,-0.00143909],241.375,true,true], + ["Land_HBarrier_Big_F",[24.7051,-0.242188,-0.00143909],89.245,true,true], + ["Land_HBarrier_Big_F",[8.90503,22.6189,-0.00143909],33.6192,true,true], + ["Land_HBarrier_Big_F",[13.2727,-6.86401,-0.00143909],91.375,true,true], + ["Land_HBarrier_Big_F",[24.3503,8.13452,-0.00143909],89.245,true,true], + ["Land_HBarrier_Big_F",[13.3027,-0.90332,-0.00143909],91.375,true,true], + ["Land_BagBunker_Small_F",[20.2654,17.5417,-0.00143909],226.375,true,true], + ["Land_LampHalogen_F",[10.6421,2.27686,-0.00143862],241.375,true,true], + ["Land_LampHalogen_F",[11.4541,10.5645,-0.00143862],136.375,true,true], + ["Land_HBarrierWall_corner_F",[21.3845,12.748,-0.00143909],46.3748,true,true], + ["Land_HBarrierWall_corner_F",[15.5208,19.1467,-0.00143909],346.375,true,true], + ["Land_HBarrierWall_corner_F",[18.5425,9.32104,-0.00143909],136.375,true,true] +]; + +_missionLootBoxes = [ +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["O_LSV_02_unarmed_F",[-53.4402,-44.895,-0.037971],359.999], + ["O_LSV_02_armed_F",[7.56689,40.9209,-0.0379591],359.999], + ["O_LSV_02_armed_F",[38.9788,-44.417,-0.0373936],359.999] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = []; // + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Red; +_maxNoAI = blck_MaxAI_Red; +_noAIGroups = blck_AIGrps_Red; +_noVehiclePatrols = blck_SpawnVeh_Red; +_noEmplacedWeapons = blck_SpawnEmplaced_Red; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/Outpost.sqf b/@GMS/addons/custom_server/Missions/Red/Outpost.sqf new file mode 100644 index 0000000..b8a03e6 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Red/Outpost.sqf @@ -0,0 +1,154 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Red Mission with template = default"; +_crateLoot = blck_BoxLoot_Red; +_lootCounts = blck_lootCountsRed; +_startMsg = "An Anemy Outpost was sighted in a nearby sector! Check the Red marker on your map for the location!"; +_endMsg = "The Outpost at the Red Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[200,200],"Solid"]; +_markerColor = "ColorRed"; +_markerMissionName = "Outpost"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_Patrol_V3_F",[-25.0786,-7.48535,-0.00143814],91.041,true,true,[["B_HMG_01_high_F",[-1.1084,-1.16431,4.33092],0.000110027]],[]], + ["Land_Cargo_Patrol_V3_F",[-12.2451,10.7849,-0.00143814],181.041,true,true,[["B_HMG_01_high_F",[-1.25928,1.22339,4.33092],0.00719478],["B_HMG_01_high_F",[3.44727,7.05835,-0.0121179],0.0015095],["B_HMG_01_high_F",[12.4185,7.21094,-0.0121183],0.00126386]],[]], + ["Land_Cargo_Patrol_V3_F",[24.0273,-12.3459,-0.00143814],269.838,true,true,[["B_HMG_01_high_F",[1.03076,-1.20874,4.33092],359.999],["B_HMG_01_high_F",[-11.6992,1.96533,-0.0121193],0.00189448]],[]], + ["Land_Cargo_HQ_V3_F",[6.30029,-0.909424,-0.00143814],270.038,true,true,[["B_HMG_01_high_F",[4.31299,-1.39307,3.70484],47.4694],["B_HMG_01_high_F",[-9.66064,-15.759,-0.0121193],0.00274103]],[]] +]; + + + +_missionLandscape = [ + //["Sign_Arrow_F",[-5049.41,-2726.72,-0.00143862],0,true,true], + //["Sign_Arrow_Green_F",[-5049.41,-2726.72,-0.00143862],0,true,true], + //["Sign_Arrow_Yellow_F",[-5049.41,-2726.72,-0.00143862],0,true,true], + //["babe_helper",[-5051.91,-2726.22,-0.00143862],78.6345,true,true], + ["Land_HBarrier_Big_F",[-28.8394,-8.42627,-0.00143862],91.041,true,true], + ["Land_CncShelter_F",[-10.0513,-26.2283,-0.00143862],0.0913576,true,true], + ["Land_HBarrierWall6_F",[0.581543,-12.7048,-0.00143862],91.041,true,true], + ["Land_HBarrierWall6_F",[-19.6943,-14.0881,-0.00143862],271.041,true,true], + ["Land_HBarrierWall6_F",[-5.04932,-19.8594,-0.00143862],181.041,true,true], + ["Land_HBarrier_Big_F",[-25.6514,-11.7356,-0.00143862],181.041,true,true], + ["Land_BagFence_Round_F",[-3.4668,-15.3809,-0.00143862],166.041,true,true], + ["Land_BagFence_Round_F",[-14.3892,-29.0183,-0.00143862],31.041,true,true], + ["Land_BagFence_Round_F",[-7.70801,-28.5588,-0.00143862],46.041,true,true], + ["Land_BagFence_Round_F",[-14.9326,-26.8369,-0.00143862],121.041,true,true], + ["Land_BagFence_Round_F",[-12.2075,-28.4763,-0.00143862],301.041,true,true], + ["Land_BagFence_Round_F",[-4.56348,-17.2019,-0.00143862],76.041,true,true], + ["Land_BagFence_Round_F",[-5.41797,-26.3496,-0.00143862],226.041,true,true], + ["Land_BagFence_Round_F",[-5.45801,-28.5986,-0.00143862],316.041,true,true], + ["Land_HBarrierWall_corridor_F",[-10.1372,-24.7649,-0.00143862],271.041,true,true], + ["Land_HBarrierWall4_F",[-13.7993,-19.9495,-0.00143862],181.041,true,true], + ["Land_HBarrierWall_corner_F",[-19.2007,-20,-0.00143862],181.041,true,true], + ["Land_HBarrierWall_corner_F",[0.711426,-19.4619,-0.00143862],91.041,true,true], + ["Land_LampShabby_F",[-19.8394,5.67236,-0.00143862],136.041,true,true], + ["Land_CncShelter_F",[-5.49072,10.4077,-0.00143862],181.041,true,true], + ["Land_HBarrierWall6_F",[-19.7158,-1.58594,-0.00143862],271.041,true,true], + ["Land_HBarrier_Big_F",[-25.4941,-3.23608,-0.00143862],1.04101,true,true], + ["Land_HBarrier_Big_F",[-12.9121,14.7922,-0.00143862],181.041,true,true], + ["Land_HBarrier_Big_F",[-16.2207,11.6028,-0.00143862],271.041,true,true], + ["Land_HBarrier_Big_F",[-7.72217,11.448,-0.00143862],91.041,true,true], + ["Land_HelipadSquare_F",[-9.93359,-5.85596,-0.00143862],0.362537,true,true], + ["Land_BagFence_Round_F",[-9.72363,18.6138,-0.00143862],136.041,true,true], + ["Land_BagFence_Round_F",[0.90918,18.9221,-0.00143862],226.041,true,true], + ["Land_BagFence_Round_F",[-7.59863,18.5762,-0.00143862],226.041,true,true], + ["Land_BagFence_Round_F",[-1.21631,18.9595,-0.00143862],136.041,true,true], + ["Land_BagFence_Long_F",[-7.02197,15.9382,-0.00143862],91.041,true,true], + ["Land_BagFence_Long_F",[1.48633,16.2864,-0.00143862],91.041,true,true], + ["Land_BagFence_Long_F",[-1.88379,16.5967,-0.00143862],91.041,true,true], + ["Land_BagFence_Long_F",[-10.3921,16.2498,-0.00143862],91.041,true,true], + ["Land_HBarrierWall_corridor_F",[-1.52295,8.83716,-0.00143862],181.041,true,true], + ["Land_HBarrierWall4_F",[3.81348,13.4924,-0.00143862],1.04101,true,true], + ["Land_HBarrierWall4_F",[-6.83154,5.68286,-0.00143862],1.04101,true,true], + ["Land_HBarrierWall4_F",[-16.5835,5.60962,-0.00143862],1.04101,true,true], + ["Land_HBarrierWall_corner_F",[-19.8418,5.16846,-0.00143862],271.041,true,true], + ["Land_HBarrierWall_corner_F",[-0.694824,13.0745,-0.00143862],271.041,true,true], + ["Land_LampShabby_F",[9.37598,-10.3596,-0.00143862],1.04101,true,true], + ["Land_HBarrierWall6_F",[7.20605,-19.8293,-0.00143862],181.041,true,true], + ["Land_HBarrierWall6_F",[6.87402,-10.5664,-0.00143862],181.041,true,true], + ["Land_HBarrier_Big_F",[24.5322,-16.5854,-0.00143862],179.838,true,true], + ["Land_HBarrier_Big_F",[24.5107,-8.08472,-0.00143862],359.838,true,true], + ["Land_HBarrier_Big_F",[27.7676,-11.3262,-0.00143862],269.838,true,true], + ["Land_BagFence_Round_F",[13.2651,-9.68359,-0.00143862],226.041,true,true], + ["Land_BagFence_Round_F",[11.1396,-9.64404,-0.00143862],136.041,true,true], + ["Land_HBarrierWall4_F",[13.9541,-19.9521,-0.00143862],181.041,true,true], + ["Land_Cargo_House_V3_F",[7.46289,-15.906,-0.00143862],271.041,true,true], + ["Land_HBarrierWall_corner_F",[18.2109,-19.53,-0.00143862],91.041,true,true], + ["Land_LampShabby_F",[18.0684,13.9841,-0.00143862],226.041,true,true], + ["Land_HBarrierWall6_F",[17.8833,3.73438,-0.00143862],91.041,true,true], + ["Land_HBarrierWall6_F",[17.9854,-4.51611,-0.00143862],91.041,true,true], + ["Land_HBarrierWall6_F",[10.5679,13.6208,-0.00143862],1.04101,true,true], + ["Land_HBarrierWall4_F",[17.7358,9.23999,-0.00143862],91.041,true,true], + ["Land_HBarrierWall_corner_F",[17.3179,13.7493,-0.00143862],1.04101,true,true] +]; + +_missionLootBoxes = [ +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["B_G_Offroad_01_armed_F",[35.8379,4.96387,0.00813246],0.00104452] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = []; // + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Red; +_maxNoAI = blck_MaxAI_Red; +_noAIGroups = blck_AIGrps_Red; +_noVehiclePatrols = blck_SpawnVeh_Red; +_noEmplacedWeapons = blck_SpawnEmplaced_Red; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/carThieves.sqf b/@GMS/addons/custom_server/Missions/Red/carThieves.sqf index 66e5a6b..f8b69c7 100644 --- a/@GMS/addons/custom_server/Missions/Red/carThieves.sqf +++ b/@GMS/addons/custom_server/Missions/Red/carThieves.sqf @@ -10,7 +10,7 @@ _lootCounts = blck_lootCountsRed; _startMsg = "Car thieves were sighted in a nearby sector! Check the Red marker on your map for the location!"; _endMsg = "The Sector at the Red Marker is under survivor control!"; _markerLabel = ""; -_markerType = ["ellipse",[200,200],"GRID"]; +_markerType = ["ELLIPSE",[300,300],"Solid"]; _markerColor = "ColorRed"; _markerMissionName = "Thieves"; _missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" @@ -69,6 +69,6 @@ _backpacs = blck_CUPBackpacks; _headgear = blck_CUPHeadgear; #endif -//_endCondition = "playerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/dashq.sqf b/@GMS/addons/custom_server/Missions/Red/dashq.sqf new file mode 100644 index 0000000..fd02f47 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Red/dashq.sqf @@ -0,0 +1,231 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Red Mission with template = default"; +_crateLoot = blck_BoxLoot_Red; +_lootCounts = blck_lootCountsRed; +_startMsg = "An enemy HQ center was sighted in a nearby sector! Check the Red marker on your map for the location!"; +_endMsg = "The HQ at the Red Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[300,300],"Solid"]; +_markerColor = "ColorRed"; +_markerMissionName = "Operationsbasis"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_HQ_V1_F",[-0.358154,-18.6514,-0.00143862],179.905,true,true,[["B_HMG_01_high_F",[-6.5437,1.09253,3.11855],145.121],["B_HMG_01_high_F",[-13.9094,-10.7791,-0.0121183],206.716]],[]] +]; + +_missionLandscape = [ + ["Land_PortableLight_double_F",[-42.614,-26.0178,-0.00143909],225.577,true,true], + ["Land_CncWall4_F",[-45.3523,-21.509,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-33.5913,-28.1145,-0.00143909],359.905,true,true], + ["Land_CncWall4_F",[-38.842,-28.124,-0.00143909],359.905,true,true], + ["Land_CncWall1_F",[-44.093,-26.7578,-0.00143909],44.9051,true,true], + ["Land_CncWall1_F",[-43.0923,-27.5063,-0.00143909],29.9051,true,true], + ["Land_CncWall1_F",[-45.2207,-24.6689,-0.00143909],74.9051,true,true], + ["Land_CncWall1_F",[-44.845,-25.7581,-0.00143909],59.9051,true,true], + ["Land_CncWall1_F",[-41.9668,-28.0046,-0.00143909],14.9051,true,true], + ["Land_BagBunker_01_large_green_F",[-49.7271,-16.9226,-0.00143909],90.2555,true,true], + ["Land_Cargo_Tower_V1_F",[-36.3582,-19.3394,-0.00143909],89.905,true,true], + ["Land_CncWall4_F",[-33.4968,-9.73975,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[-45.3792,-5.75879,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-45.3867,-0.508789,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-45.3694,-11.0095,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-45.3955,4.74121,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-45.4041,9.99072,-0.00143909],89.9051,true,true], + ["Land_CncWall1_F",[-32.0076,1.70923,-0.00143909],74.9051,true,true], + ["Land_CncWall1_F",[-31.6313,0.61792,-0.00143909],59.9051,true,true], + ["Land_BagBunker_01_large_green_F",[-49.7959,14.4089,-0.00143909],90.2555,true,true], + ["Land_Cargo_HQ_V1_F",[-34.4014,20.1455,-0.00143862],269.491,true,true], + ["Land_CncWall4_F",[-45.4214,20.4915,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-45.4302,25.7415,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-38.8159,32.2512,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[-33.5662,32.2607,-0.00143909],179.905,true,true], + ["Land_CncWall1_F",[-43.0654,31.7451,-0.00143909],149.905,true,true], + ["Land_CncWall1_F",[-41.9753,32.1199,-0.00143909],164.905,true,true], + ["Land_CncWall1_F",[-44.0635,30.9924,-0.00143909],134.905,true,true], + ["Land_CncWall1_F",[-44.8127,29.991,-0.00143909],119.905,true,true], + ["Land_CncWall1_F",[-45.3108,28.8672,-0.00143909],104.905,true,true], + ["Land_BagFence_Round_F",[-15.3367,-30.4338,-0.00143909],44.9051,true,true], + ["Land_BagFence_Round_F",[-25.8376,-30.2017,-0.00143909],314.905,true,true], + ["Land_PortableLight_double_F",[-2.30811,-29.9211,-0.00143909],44.7366,true,true], + ["Land_CncWall4_F",[-2.09229,-28.0632,-0.00143909],359.905,true,true], + ["Land_CncWall4_F",[-26.9856,-16.3538,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[-13.8528,-21.4565,-0.00143909],89.9051,true,true], + ["Land_CncWall4_F",[-26.9783,-21.6038,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[-7.34155,-28.0718,-0.00143909],359.905,true,true], + ["Land_CncWall4_F",[-13.8606,-16.2065,-0.00143909],89.9051,true,true], + ["Land_CncWall1_F",[-13.3455,-25.7068,-0.00143909],59.9051,true,true], + ["Land_CncWall1_F",[-12.593,-26.7058,-0.00143909],44.9051,true,true], + ["Land_CncWall1_F",[-27.5952,-25.8552,-0.00143909],299.905,true,true], + ["Land_CncWall1_F",[-27.0967,-24.7288,-0.00143909],284.905,true,true], + ["Land_CncWall1_F",[-13.7209,-24.6165,-0.00143909],74.9051,true,true], + ["Land_CncWall1_F",[-10.4666,-27.9514,-0.00143909],14.9051,true,true], + ["Land_CncWall1_F",[-29.3428,-27.6084,-0.00143909],329.905,true,true], + ["Land_CncWall1_F",[-30.4331,-27.9832,-0.00143909],344.905,true,true], + ["Land_CncWall1_F",[-11.592,-27.4541,-0.00143909],29.9051,true,true], + ["Land_CncWall1_F",[-28.3438,-26.855,-0.00143909],314.905,true,true], + ["Land_BagFence_Long_F",[-25.2168,-27.7002,-0.00143909],269.905,true,true], + ["Land_BagFence_Long_F",[-15.9658,-27.9348,-0.00143909],269.905,true,true], + ["Land_BagFence_Long_F",[-12.8359,-31.0559,-0.00143909],359.905,true,true], + ["Land_BagFence_Long_F",[-28.3364,-30.8318,-0.00143909],179.905,true,true], + ["Land_BagFence_Round_F",[-7.19092,10.5073,-0.00143909],44.9051,true,true], + ["Land_PortableLight_double_F",[-11.7207,0.158936,-0.00143909],135.598,true,true], + ["Land_PortableLight_double_F",[-29.4041,0.418701,-0.00143909],218.658,true,true], + ["Land_CncWall4_F",[-7.24731,-9.69678,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[-20.376,-1.73682,-0.00143909],359.905,true,true], + ["Land_CncWall4_F",[-25.6274,-1.74609,-0.00143909],359.905,true,true], + ["Land_CncWall4_F",[-15.1272,-1.72925,-0.00143909],359.905,true,true], + ["Land_CncWall1_F",[-10.4058,-9.82935,-0.00143909],164.905,true,true], + ["Land_CncWall1_F",[-10.8779,-1.22144,-0.00143909],329.905,true,true], + ["Land_CncWall1_F",[-9.13086,0.531982,-0.00143909],299.905,true,true], + ["Land_CncWall1_F",[-11.4956,-10.2031,-0.00143909],149.905,true,true], + ["Land_CncWall1_F",[-8.63257,1.65747,-0.00143909],284.905,true,true], + ["Land_CncWall1_F",[-11.9688,-1.59668,-0.00143909],344.905,true,true], + ["Land_CncWall1_F",[-27.4932,-12.1047,-0.00143909],239.905,true,true], + ["Land_CncWall1_F",[-12.4951,-10.9553,-0.00143909],134.905,true,true], + ["Land_CncWall1_F",[-13.2424,-11.9563,-0.00143909],119.905,true,true], + ["Land_CncWall1_F",[-29.8777,-1.12744,-0.00143909],29.9051,true,true], + ["Land_CncWall1_F",[-9.87939,-0.470703,-0.00143909],314.905,true,true], + ["Land_CncWall1_F",[-30.3708,-9.86011,-0.00143909],194.905,true,true], + ["Land_CncWall1_F",[-30.8787,-0.378906,-0.00143909],44.9051,true,true], + ["Land_CncWall1_F",[-29.2468,-10.3582,-0.00143909],209.905,true,true], + ["Land_CncWall1_F",[-13.7417,-13.0818,-0.00143909],104.905,true,true], + ["Land_CncWall1_F",[-28.2449,-11.1069,-0.00143909],224.905,true,true], + ["Land_CncWall1_F",[-27.1179,-13.1948,-0.00143909],254.905,true,true], + ["Land_CncWall1_F",[-28.7524,-1.62573,-0.00143909],14.9051,true,true], + ["Land_BagFence_Long_F",[-7.8208,13.0066,-0.00143909],269.905,true,true], + ["Land_BagFence_Long_F",[-4.69067,9.88257,-0.00143909],359.905,true,true], + ["Land_Cargo_Patrol_V1_F",[-19.8857,1.92358,-0.00143862],359.905,true,true], + ["Land_Cargo_HQ_V1_F",[-17.6404,20.1672,-0.00143862],269.491,true,true], + ["Land_HelipadSquare_F",[0.169189,17.6489,-0.00143909],359.936,true,true], + ["Land_BagFence_Round_F",[-7.21484,25.1335,-0.00143909],134.905,true,true], + ["Land_BagFence_Round_F",[-8.354,36.8232,-0.00143909],134.905,true,true], + ["Land_CncWall4_F",[-23.0659,32.2773,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[-12.615,32.3005,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[-17.8164,32.2856,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[-7.396,32.3115,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[-2.25146,35.2305,-0.00143909],179.977,true,true], + ["Land_CncWall4_F",[-28.3167,32.269,-0.00143909],179.905,true,true], + ["Land_CncWall1_F",[-4.03638,32.6663,-0.00143909],149.461,true,true], + ["Land_BagFence_Long_F",[-4.71533,25.7625,-0.00143909],359.905,true,true], + ["Land_BagFence_Long_F",[-5.85449,37.4521,-0.00143909],359.905,true,true], + ["Land_BagFence_Long_F",[-7.83618,22.6321,-0.00143909],89.9051,true,true], + ["Land_BagFence_Long_F",[-8.97534,34.3218,-0.00143909],89.9051,true,true], + ["Land_PortableLight_double_F",[12.1106,-26.1833,-0.00143909],149.905,true,true], + ["Land_CncWall4_F",[15.0215,-21.5349,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[8.38428,-28.1101,-0.00143909],359.905,true,true], + ["Land_CncWall4_F",[15.0137,-16.2847,-0.00143909],269.905,true,true], + ["Land_CncWall1_F",[14.9031,-24.6597,-0.00143909],284.905,true,true], + ["Land_CncWall1_F",[12.6567,-27.5383,-0.00143909],329.905,true,true], + ["Land_CncWall1_F",[11.5676,-27.9133,-0.00143909],344.905,true,true], + ["Land_CncWall1_F",[14.4038,-25.7854,-0.00143909],299.905,true,true], + ["Land_CncWall1_F",[13.656,-26.7861,-0.00143909],314.905,true,true], + ["Land_BagFence_Long_F",[12.5037,-23.1807,-0.00143909],89.3707,true,true], + ["Land_BagFence_Long_F",[11.072,-24.5706,-0.00143909],359.905,true,true], + ["Land_BagFence_Long_F",[10.9707,-21.8315,-0.00143909],179.371,true,true], + ["Land_BagFence_Long_F",[9.56812,-23.1921,-0.00143909],269.905,true,true], + ["Land_BagBunker_01_large_green_F",[3.83936,-32.5405,-0.00143909],0,true,true], + ["Land_TTowerSmall_2_F",[11.5024,-23.7861,-0.00143909],179.905,true,true], + ["Land_Cargo_House_V1_F",[9.00171,-10.2603,-0.00143909],89.905,true,true], + ["Land_Cargo_House_V1_F",[8.98071,2.86475,-0.00143909],89.905,true,true], + ["Land_Medevac_house_V1_F",[8.99219,-3.76099,-0.00143909],90.3921,true,true], + ["Land_BagFence_Round_F",[8.05933,10.2788,-0.00143909],314.905,true,true], + ["Land_PortableLight_double_F",[12.8176,7.44629,-0.00143909],134.905,true,true], + ["Land_CncWall4_F",[14.9788,4.71558,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[15.0054,-11.0347,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[14.9961,-5.78418,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[14.9878,-0.533936,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[14.9705,9.96558,-0.00143909],269.905,true,true], + ["Land_BagFence_Long_F",[8.68018,12.7852,-0.00143909],269.905,true,true], + ["Land_BagFence_Long_F",[5.55933,9.6499,-0.00143909],179.905,true,true], + ["Land_BagBunker_01_large_green_F",[19.272,16.1316,-0.00143909],269.832,true,true], + ["Land_BagFence_Round_F",[7.91089,24.9097,-0.00143909],224.905,true,true], + ["Land_BagFence_Round_F",[9.05054,36.9314,-0.00143909],224.905,true,true], + ["Land_PortableLight_double_F",[11.8816,29.2671,-0.00143909],44.7366,true,true], + ["Land_CncWall4_F",[14.9529,20.4653,-0.00143909],269.905,true,true], + ["Land_CncWall4_F",[8.43433,32.3303,-0.00143909],179.905,true,true], + ["Land_CncWall4_F",[2.95288,35.22,-0.00143909],179.977,true,true], + ["Land_CncWall4_F",[14.9443,25.7156,-0.00143909],269.905,true,true], + ["Land_CncWall1_F",[14.4373,29.9646,-0.00143909],239.905,true,true], + ["Land_CncWall1_F",[14.813,28.8745,-0.00143909],254.905,true,true], + ["Land_CncWall1_F",[13.6853,30.9644,-0.00143909],224.905,true,true], + ["Land_CncWall1_F",[12.6843,31.7119,-0.00143909],209.905,true,true], + ["Land_CncWall1_F",[11.5593,32.2114,-0.00143909],194.905,true,true], + ["Land_CncWall1_F",[5.11841,32.7061,-0.00143909],209.905,true,true], + ["Land_BagFence_Long_F",[8.54004,22.4104,-0.00143909],89.9051,true,true], + ["Land_BagFence_Long_F",[9.67969,34.4321,-0.00143909],89.9051,true,true], + ["Land_BagFence_Long_F",[5.40894,25.5288,-0.00143909],179.905,true,true], + ["Land_BagFence_Long_F",[6.54858,37.5505,-0.00143909],179.905,true,true] +]; + +_missionLootBoxes = [ + //["Exile_Container_SupplyBox",[0.0717773,16.9431,-0.00143814],_crateLoot,_lootCounts,0.000320471] +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + //["O_T_LSV_02_armed_F",[-62.7971,0.422119,-0.0236669],0.00164848], + ["O_T_LSV_02_armed_F",[31.9084,-7.18774,-0.0238085],0.00168349] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = []; // + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Red; +_maxNoAI = blck_MaxAI_Red; +_noAIGroups = blck_AIGrps_Red; +_noVehiclePatrols = blck_SpawnVeh_Red; +_noEmplacedWeapons = blck_SpawnEmplaced_Red; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/derbunker.sqf b/@GMS/addons/custom_server/Missions/Red/derbunker.sqf new file mode 100644 index 0000000..7f24242 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Red/derbunker.sqf @@ -0,0 +1,120 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Red Mission with template = default"; +_crateLoot = blck_BoxLoot_Red; +_lootCounts = blck_lootCountsRed; +_startMsg = "An enemy Bunker was sighted in a nearby sector! Check the Red marker on your map for the location!"; +_endMsg = "The Bunker at the Red Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[300,300],"Solid"]; +_markerColor = "ColorRed"; +_markerMissionName = "DerBunker"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Bunker_01_big_F",[-15.925,9.02295,0.760561],90.071,true,true,[["O_HMG_01_high_F",[-5.45947,-3.38574,0.109706],359.994]],[]], + ["Land_Bunker_01_tall_F",[-15.377,-8.8042,-0.00143909],90.071,true,true,[["O_HMG_01_high_F",[5.50562,-2.54395,-0.0121193],0.00145215],["O_HMG_01_high_F",[-1.72095,-0.109375,4.96893],0.00948966]],[]], + ["Land_Bunker_01_tall_F",[-15.76,28.606,-0.00143909],90.071,true,true,[["O_HMG_01_high_F",[5.47437,2.47559,-0.0121179],0.000581241],["O_HMG_01_high_F",[-1.38867,-0.0722656,4.967],359.999],["O_HMG_01_high_F",[11.8271,5.87988,-0.0121188],0.00143633]],[]], + ["Land_Bunker_01_big_F",[20.199,10.729,0.760561],270.416,true,true,[["O_HMG_01_high_F",[5.86328,3.25586,0.109697],0.0117801]],[]], + ["Land_Bunker_01_tall_F",[19.8899,-8.86914,-0.00143909],270.416,true,true,[["O_HMG_01_high_F",[-5.13818,-2.33496,-0.0121174],0.0002874],["O_HMG_01_high_F",[1.45801,0.0512695,4.96698],360]],[]], + ["Land_Bunker_01_tall_F",[19.731,28.542,-0.00143909],270.416,true,true,[["O_HMG_01_high_F",[-5.00977,2.1792,-0.0121188],0.00143735],["O_HMG_01_high_F",[1.80957,0.26709,4.96756],360],["O_HMG_01_high_F",[-12.0127,6.1333,-0.0121193],0.00145178]],[]] +]; + +_missionLandscape = [ + //["Sign_Arrow_F",[-3163.22,-5166.85,-0.00143909],0,true,true], + //["Sign_Arrow_Green_F",[-3163.22,-5166.85,-0.00143909],0,true,true], + //["Sign_Arrow_Yellow_F",[-3163.22,-5166.85,-0.00143909],0,true,true], + //["babe_helper",[-3165.72,-5166.35,-0.00143909],90.8645,true,true], + ["Land_Bunker_01_blocks_3_F",[-13.762,17.5518,-0.00143909],270.35,true,true], + ["Land_Bunker_01_blocks_3_F",[-0.0979004,-12.9033,-0.00143909],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[-5.18799,-12.9092,-0.00143909],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[-10.175,-12.9253,-0.502439],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[-13.814,-4.44141,-0.00143909],270.35,true,true], + ["Land_Bunker_01_blocks_3_F",[-13.7959,0.544922,-0.00143909],270.35,true,true], + ["CamoNet_INDP_big_F",[2.23804,-2.70508,-0.00143909],182.545,true,true], + ["Land_Bunker_01_blocks_3_F",[-13.7451,22.5391,-0.00143909],270.35,true,true], + ["Land_Bunker_01_blocks_3_F",[-2.51611,30.105,-0.00143909],90.192,true,true], + ["Land_Bunker_01_blocks_3_F",[-10.6179,32.6689,-0.432439],0.106,true,true], + ["Land_Bunker_01_blocks_3_F",[-5.63013,32.6719,-0.00143909],0.106,true,true], + ["Land_Bunker_01_blocks_3_F",[17.958,2.1958,-0.00143909],90.695,true,true], + ["Land_Bunker_01_blocks_3_F",[14.9771,-12.854,-0.529439],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[4.88892,-12.8853,-0.00143909],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[17.9109,-2.78906,-0.00143909],90.695,true,true], + ["Land_Bunker_01_blocks_3_F",[9.98999,-12.8711,-0.00143909],179.955,true,true], + ["Land_Bunker_01_blocks_3_F",[6.58691,30.1689,-0.00143909],269.774,true,true], + ["Land_Bunker_01_blocks_3_F",[18.095,19.2026,-0.00143909],90.695,true,true], + ["Land_Bunker_01_blocks_3_F",[18.1409,24.189,-0.00143909],90.695,true,true], + ["Land_Bunker_01_blocks_3_F",[9.54907,32.6689,-0.00143909],0.106,true,true], + ["Land_Bunker_01_blocks_3_F",[14.5359,32.6729,-0.363439],0.106,true,true] +]; + +_missionLootBoxes = [ + //["Exile_Container_SupplyBox",[0.0446777,-1.31494,-0.001441],_crateLoot,_lootCounts,0.00167282] +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["O_LSV_02_armed_F",[-37.46,8.55273,-0.0378561],359.999], + ["O_LSV_02_unarmed_F",[38.3699,8.21484,-0.0378113],359.999] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = []; // + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Red; +_maxNoAI = blck_MaxAI_Red; +_noAIGroups = blck_AIGrps_Red; +_noVehiclePatrols = blck_SpawnVeh_Red; +_noEmplacedWeapons = blck_SpawnEmplaced_Red; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/factory.sqf b/@GMS/addons/custom_server/Missions/Red/factory.sqf new file mode 100644 index 0000000..9e74a87 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Red/factory.sqf @@ -0,0 +1,148 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Red Mission with template = default"; +_crateLoot = blck_BoxLoot_Red; +_lootCounts = blck_lootCountsRed; +_startMsg = "An Ammunition Factory was sighted in a nearby sector! Check the Red marker on your map for the location!"; +_endMsg = "The Factory at the Red Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[300,300],"Solid"]; +_markerColor = "ColorRed"; +_markerMissionName = "Factory"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_Tower_V3_F",[-18.6987,-51.7905,-0.0014348],91.6296,true,true,[["B_HMG_01_high_F",[3.31396,2.89209,8.57585],359.999],["B_HMG_01_high_F",[13.0347,0.8479,-0.0121226],360],["B_HMG_01_high_F",[-9.4834,13.5967,-0.0121226],0.00158913],["B_HMG_01_high_F",[-0.601074,3.90967,17.8764],359.999],["B_HMG_01_high_F",[-0.877441,-4.83179,17.8764],359.999],["B_HMG_01_high_F",[-9.77783,29.3799,-0.0121226],360]],[]], + ["Land_Cargo_Patrol_V3_F",[-27.1675,-15.407,-0.00143814],91.6296,true,true,[["B_HMG_01_high_F",[-1.15381,1.24658,4.33092],275.276]],[]], + ["Land_Cargo_Patrol_V3_F",[-10.7632,4.77441,-0.00143814],181.63,true,true,[["B_HMG_01_high_F",[-1.32959,1.03662,4.33092],359.999]],[]], + ["Land_Cargo_Patrol_V3_F",[12.9375,3.5835,-0.00143814],181.63,true,true,[["B_HMG_01_high_F",[1.57861,1.04736,4.33093],357.402],["B_HMG_01_high_F",[8.41357,-9.20557,-0.0121202],0.0033673]],[]] +]; + + + +_missionLandscape = [ + //["babe_helper",[-4335.99,-3525.64,-0.00143862],0,true,true], + //["Sign_Arrow_Green_F",[-4333.49,-3526.14,-0.00143862],0,true,true], + //["Sign_Arrow_F",[-4333.49,-3526.14,-0.00143862],0,true,true], + //["Sign_Arrow_Yellow_F",[-4333.49,-3526.14,-0.00143862],0,true,true], + ["Land_HBarrier_Big_F",[0,0,0],181.63,true,true], + ["Land_HBarrier_Big_F",[13.4092,-3.25757,0],271.63,true,true], + ["Land_HBarrier_Big_F",[8.375,-0.113037,0],181.63,true,true], + ["Land_Cargo_Patrol_V3_F",[1.41602,-4.66895,4.76837e-007],181.63,true,true], + ["Land_HBarrier_Big_F",[13.4199,-11.7607,0],271.63,true,true], + ["Land_HBarrier_Big_F",[18.5933,-23.1626,0],181.63,true,true], + ["Land_HBarrier_Big_F",[13.436,-19.8896,0],271.63,true,true], + ["Land_HBarrier_Big_F",[21.832,-28.0088,0],271.63,true,true], + ["Land_BagFence_Round_F",[26.2334,-38.7039,0],316.63,true,true], + ["Land_BagFence_Round_F",[26.3379,-36.5427,0],226.63,true,true], + ["Land_BagFence_Long_F",[23.7163,-39.2576,0],181.63,true,true], + ["CamoNet_OPFOR_F",[10.2559,-17.4697,0],91.6296,true,true], + ["Land_HBarrier_Big_F",[-3.3916,-4.90503,0],91.6296,true,true], + ["Land_HBarrier_Big_F",[-30.9849,1.00684,0],181.63,true,true], + ["Land_HBarrier_Big_F",[-17.564,-2.00073,0],271.63,true,true], + ["Land_HBarrier_Big_F",[-22.731,1.02173,0],181.63,true,true], + ["Land_Cargo_Patrol_V3_F",[-22.2847,-3.47803,4.76837e-007],181.63,true,true], + ["CamoNet_OPFOR_big_F",[-34.8179,-6.18286,0],1.62962,true,true], + ["Land_HBarrier_Big_F",[-20.0698,-63.729,0],91.6296,true,true], + ["Land_HBarrier_Big_F",[-33.6689,-66.9641,0],181.63,true,true], + ["Land_HBarrier_Big_F",[-25.1631,-66.959,0],181.63,true,true], + ["Land_BagFence_Long_F",[-17.6025,-60.449,0],181.63,true,true], + ["Land_Cargo_Tower_V3_F",[-30.2202,-60.043,3.8147e-006],91.6296,true,true], + ["Land_BagFence_Round_F",[-15.085,-59.8953,0],316.63,true,true], + ["Land_HBarrier_Big_F",[-39.3599,1.11987,0],181.63,true,true], + ["Land_HBarrier_Big_F",[-42.751,-3.7854,0],91.6296,true,true], + ["Land_HBarrier_Big_F",[-42.8638,-12.1604,0],91.6296,true,true], + ["Land_HBarrier_Big_F",[-37.8037,-27.686,0],181.63,true,true], + ["Land_HBarrier_Big_F",[-42.8486,-20.4146,0],91.6296,true,true], + ["Land_HBarrier_Big_F",[-42.9619,-28.7896,0],91.6296,true,true], + ["Land_Cargo_Patrol_V3_F",[-38.689,-23.6594,4.76837e-007],91.6296,true,true], + ["CamoNet_OPFOR_F",[-37.1313,-30.3784,0],1.62962,true,true], + ["Land_HBarrier_Big_F",[-36.8999,-61.8621,0],91.6296,true,true], + ["Land_HBarrier_Big_F",[-36.792,-53.6099,0],91.6296,true,true], + ["Land_BagFence_Corner_F",[-37.04,-49.1382,0],1.62962,true,true], + ["Land_BagFence_Corner_F",[-40.8984,-48.5288,0],181.63,true,true], + ["Land_BagFence_Long_F",[-39.0317,-48.8325,0],181.63,true,true], + ["Land_BagFence_Long_F",[-39.1577,-44.4534,0],1.62962,true,true], + ["Land_BagFence_Long_F",[-41.2227,-46.7695,0],91.6296,true,true], + ["Land_BagFence_Corner_F",[-40.916,-44.7759,0],271.63,true,true], + ["Land_HBarrier_Big_F",[0.214844,-63.1599,0],181.63,true,true], + ["Land_HBarrier_Big_F",[8.46875,-63.145,0],181.63,true,true], + ["Land_HBarrier_Big_F",[-8.16016,-63.0469,0],181.63,true,true], + ["Land_HBarrier_Big_F",[21.3247,-43.1565,0],271.63,true,true], + ["Land_HBarrier_Big_F",[21.3354,-51.6597,0],271.63,true,true], + ["Land_HBarrier_Big_F",[21.3516,-59.7886,0],271.63,true,true], + ["Land_HBarrier_Big_F",[16.6245,-63.0515,0],181.63,true,true], + ["Land_Dome_Small_F",[0.337891,-44.8254,-4.76837e-007],0.223401,true,true], + ["Land_dp_smallTank_F",[18.314,-70.0537,0],0,true,true], + ["Land_dp_smallTank_F",[9.81934,-69.9482,0],0,true,true] +]; + +_missionLootBoxes = [ +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["B_G_Offroad_01_armed_F",[-53.8027,-29.7834,0.00867844],0.00103655], + ["B_G_Offroad_01_armed_F",[51.0596,-25.7876,0.00815535],0.00104356] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = []; // + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Red; +_maxNoAI = blck_MaxAI_Red; +_noAIGroups = blck_AIGrps_Red; +_noVehiclePatrols = blck_SpawnVeh_Red; +_noEmplacedWeapons = blck_SpawnEmplaced_Red; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/junkyardWilly.sqf b/@GMS/addons/custom_server/Missions/Red/junkyardWilly.sqf new file mode 100644 index 0000000..93f662c --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Red/junkyardWilly.sqf @@ -0,0 +1,59 @@ +/* +Mission Compositions by Ghostrider [GRG] for ghostridergaming +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Red Mission with template = default"; +_crateLoot = blck_BoxLoot_Red; +_lootCounts = blck_lootCountsRed; +_startMsg = "An enemy junkyard was sighted in a nearby sector! Check the Red marker on your map for the location!"; +_endMsg = "The Sector at the Red Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[300,300],"Solid"]; +_markerColor = "ColorRed"; +_markerMissionName = "Junkyard"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" +_missionLandscape = [ + ["Land_Wreck_Van_F",[-9.02148,-1.02734,0],0,[false,false]], + ["Land_Wreck_Truck_dropside_F",[-3.02148,-7.02734,2.38419e-007],0,[false,false]], + ["Land_Wreck_T72_hull_F",[4.97852,8.97266,0],0,[false,false]], + ["Land_Wreck_Slammer_turret_F",[-5.02148,4.97266,0],0,[false,false]], + ["Land_Wreck_Ural_F",[9.97852,2.97266,-2.38419e-007],0,[false,false]], + ["Land_Wreck_UAZ_F",[9.97852,-5.02734,-2.38419e-007],0,[false,false]], + ["Land_Wreck_Offroad2_F",[6.97852,-11.0273,0],0,[false,false]], + ["Land_Wreck_Offroad_F",[-9.02148,-10.0273,2.38419e-007],0,[false,false]], + ["Land_Wreck_Heli_Attack_02_F",[17.9785,12.9727,0],0,[false,false]], + ["Land_Wreck_Hunter_F",[-10.0215,14.9727,2.38419e-007],0,[false,false]], + ["Land_Wreck_Car3_F",[-16.0215,5.97266,0],0,[false,false]], + ["Land_Wreck_Car_F",[-15.0215,-6.02734,0],0,[false,false]], + ["Land_Wreck_Car2_F",[17.9785,-6.02734,2.38419e-007],0,[false,false]], + ["Land_Wreck_Truck_F",[3.97852,23.9727,0],0,[false,false]], + ["Land_Wreck_CarDismantled_F",[-1.02148,-16.0273,0],0,[false,false]], + ["Land_Wreck_BRDM2_F",[-21.0215,0.972656,0],0,[false,false]], + ["Land_Wreck_BMP2_F",[14.9785,-18.0273,0],0,[false,false]], + ["Flag_AAF_F",[4,4,0],0,[false,false]] +]; // list of objects to spawn as landscape +_missionLootBoxes = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. +_missionLootVehicles = []; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. +_missionEmplacedWeapons = []; // can be used to define the precise placement of static weapons [[1,2,3] /*loc 1*/, [2,3,4] /*loc 2*/]; if blank random locations will be used +_minNoAI = blck_MinAI_Red; +_maxNoAI = blck_MaxAI_Red; +_noAIGroups = blck_AIGrps_Red; +_noVehiclePatrols = blck_SpawnVeh_Red; +_noEmplacedWeapons = blck_SpawnEmplaced_Red; +// Change _useMines to true/false below to enable mission-specific settings. +#ifdef blck_useCUP +_uniforms = blck_CUPUniforms; +_weaponList = blck_CUPWeapons; +_vests = blck_CUPVests; +_backpacks = blck_CUPBackpacks; +_headgear = blck_CUPHeadgear; +#endif +#ifdef blck_useNIA +_weaponList = _weaponList + + blck_NIA_WeaponsSniper; +#endif + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/lager.sqf b/@GMS/addons/custom_server/Missions/Red/lager.sqf new file mode 100644 index 0000000..b43bdc5 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Red/lager.sqf @@ -0,0 +1,185 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Red Mission with template = default"; +_crateLoot = blck_BoxLoot_Red; +_lootCounts = blck_lootCountsRed; +_startMsg = "An enemy Camp was sighted in a nearby sector! Check the Red marker on your map for the location!"; +_endMsg = "The Camp at the Red Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[300,300],"Solid"]; +_markerColor = "ColorRed"; +_markerMissionName = "Nachschublager"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_Tower_V1_F",[-8.1167,-39.0396,-0.00143862],180.738,true,true,[["O_HMG_01_high_F",[-4.98901,13.312,-0.0121193],359.999],["O_HMG_01_high_F",[-4.88916,0.893799,17.8798],359.999],["O_GMG_01_high_F",[2.86377,5.15186,17.7791],0.00110346],["O_GMG_01_high_F",[3.12354,-4.59814,17.8788],0.00619121],["O_HMG_01_high_F",[8.82837,21.6572,-0.0121193],359.999],["O_GMG_01_high_F",[-3.55591,26.4539,-0.0118098],360]],[]], + ["Land_Cargo_Tower_V1_F",[-8.7854,37.2058,-0.00143862],180.738,true,true,[["O_HMG_01_high_F",[-4.1167,-15.228,-0.0121188],359.999],["O_GMG_01_high_F",[-5.05029,0.812012,17.8801],359.999],["O_HMG_01_high_F",[2.97925,4.90308,17.7791],359.995],["O_HMG_01_high_F",[3.02808,-5.19946,17.8776],359.987],["O_HMG_01_high_F",[9.59595,-22.2854,-0.0121188],359.999],["O_GMG_01_high_F",[-1.95337,-25.9678,-0.0118098],360]],[]], + ["Land_Cargo_HQ_V1_F",[41.5171,-35.4209,-0.00143814],88.7297,true,true,[["O_HMG_01_high_F",[-4.19043,0.419922,3.1134],360],["O_GMG_01_high_F",[1.2395,-6.33594,3.11891],359.998]],[]], + ["Land_Cargo_HQ_V1_F",[41.6394,35.6191,-0.00143814],271.277,true,true,[["O_HMG_01_high_F",[1.75781,6.54565,3.11813],359.998]],[]], + ["Land_Cargo_Patrol_V1_F",[58.7402,-14.1282,-0.00143814],179.058,true,true,[["O_HMG_01_high_F",[0.936523,-0.546631,4.55561],186.318],["O_HMG_01_high_F",[-8.49658,3.90869,-0.0121207],0.00101132]],[]], + ["Land_Cargo_Patrol_V1_F",[58.6057,14.2329,-0.00143814],359.375,true,true,[["O_GMG_01_high_F",[1.16113,-1.15356,4.33123],360],["O_HMG_01_high_F",[-8.44897,-1.0686,-0.0121198],359.999]],[]] +]; + +_missionLandscape = [ + //["babe_helper",[-3950.48,-2427.52,-0.00143862],0,true,true], + //["Sign_Arrow_Green_F",[-3947.98,-2428.02,-0.00143862],0,true,true], + //["Sign_Arrow_F",[-3947.98,-2428.02,-0.00143862],0,true,true], + //["Sign_Arrow_Yellow_F",[-3947.98,-2428.02,-0.00143862],0,true,true], + ["Land_LampHalogen_F",[-16.9238,-29.4194,-0.00143814],175.993,true,true], + ["Land_HBarrierBig_F",[-16.6211,-36.4802,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-16.6907,-44.7676,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-16.8193,-28.7813,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-17.0107,-4.99146,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-16.8831,-20.9722,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-16.813,-12.6887,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-16.9338,3.10571,-0.00143862],271.533,true,true], + ["Land_LampHalogen_F",[-17.1384,26.0154,-0.00143814],175.993,true,true], + ["Land_HBarrierBig_F",[-17.126,26.9011,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-17.0623,19.092,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-16.8643,11.3931,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-17.0559,35.1846,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[-17.2517,42.8821,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[10.6238,-49.76,-0.00143862],1.58276,true,true], + ["Land_HBarrierBig_F",[4.90186,-29.2209,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[2.92627,-49.9541,-0.00143862],1.58276,true,true], + ["Land_HBarrierBig_F",[-3.42188,-29.1743,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[-5.36133,-49.8767,-0.00143862],1.58276,true,true], + ["Land_HBarrierBig_F",[-13.5088,-49.9219,-0.00143862],1.58276,true,true], + ["Land_HBarrierBig_F",[13.3582,-29.1738,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[-11.5808,-29.1753,-0.00143862],181.755,true,true], + ["Land_LampHalogen_F",[6.08081,-17.4399,-0.00143814],183.353,true,true], + ["Land_Cargo_House_V1_F",[5.85425,-11.7749,-0.00143862],178.957,true,true], + ["Land_Cargo_House_V1_F",[12.7263,-11.8384,-0.00143862],180.484,true,true], + ["Land_Cargo_House_V1_F",[6.03076,-23.2114,-0.00143862],0.530105,true,true], + ["Land_Cargo_House_V1_F",[-9.97656,-7.45703,-0.00143862],270.031,true,true], + ["Land_Cargo_House_V1_F",[-9.95679,-0.756836,-0.00143862],270.244,true,true], + ["Land_Cargo_House_V1_F",[12.6707,-23.292,-0.00143862],0.742551,true,true], + ["Land_LampHalogen_F",[4.89917,14.9739,-0.00143814],183.353,true,true], + ["Land_HBarrierBig_F",[3.46533,26.0403,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[-4.86035,26.0867,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[11.9197,26.0874,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[-13.1709,26.1252,-0.00143862],181.755,true,true], + ["Land_Cargo_House_V1_F",[-9.93091,6.11108,-0.00143862],268.716,true,true], + ["Land_Cargo_House_V1_F",[11.5469,20.5737,-0.00143862],180.484,true,true], + ["Land_Cargo_House_V1_F",[11.4912,9.12012,-0.00143862],0.742551,true,true], + ["Land_Cargo_House_V1_F",[4.6748,20.6372,-0.00143862],178.957,true,true], + ["Land_Cargo_House_V1_F",[4.79419,9.20044,-0.00143862],0.530105,true,true], + ["Land_HBarrierBig_F",[-13.959,47.9253,-0.00143862],1.51588,true,true], + ["Land_HBarrierBig_F",[10.1702,48.1106,-0.00143862],1.51588,true,true], + ["Land_HBarrierBig_F",[1.88428,48.1787,-0.00143862],1.51588,true,true], + ["Land_HBarrierBig_F",[-6.26294,48.124,-0.00143862],1.51588,true,true], + ["Land_LampHalogen_F",[37.4138,-49.6885,-0.00143814],86.6613,true,true], + ["Land_HBarrierBig_F",[18.4333,-49.7061,-0.00143862],1.58276,true,true], + ["Land_HBarrierBig_F",[21.7261,-29.1707,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[34.4153,-49.5938,-0.00143862],1.58276,true,true], + ["Land_HBarrierBig_F",[42.5332,-49.4375,-0.00143862],1.58276,true,true], + ["Land_HBarrierBig_F",[26.7168,-49.782,-0.00143862],1.58276,true,true], + ["Land_LampHalogen_F",[24.2969,-4.63354,-0.00143814],175.763,true,true], + ["Land_LampHalogen_F",[24.0779,2.92041,-0.00143814],175.763,true,true], + ["Land_HBarrierBig_F",[24.7175,-16.5247,-0.00143862],270.156,true,true], + ["Land_HBarrierBig_F",[24.5884,-8.51978,-0.00143862],270.156,true,true], + ["Land_HBarrierBig_F",[20.874,3.03345,-0.00143862],181.755,true,true], + ["Land_HBarrierBig_F",[24.8879,-24.3479,-0.00143862],270.156,true,true], + ["Land_HBarrierBig_F",[21.095,-4.52222,-0.00143862],181.755,true,true], + ["Land_Cargo_House_V1_F",[19.4255,-11.8789,-0.00143862],180.272,true,true], + ["Land_Cargo_House_V1_F",[19.5381,-23.3779,-0.00143862],359.215,true,true], + ["Land_HBarrierBig_F",[24.0823,6.26489,-0.00143862],270.156,true,true], + ["Land_HBarrierBig_F",[23.7832,22.0911,-0.00143862],270.156,true,true], + ["Land_HBarrierBig_F",[23.9121,14.0862,-0.00143862],270.156,true,true], + ["Land_HBarrierBig_F",[20.2896,26.0906,-0.00143862],181.755,true,true], + ["Land_Cargo_House_V1_F",[18.3564,9.03589,-0.00143862],359.215,true,true], + ["Land_Cargo_House_V1_F",[18.2441,20.533,-0.00143862],180.272,true,true], + ["Land_LampHalogen_F",[37.1499,49.4319,-0.00143814],270.972,true,true], + ["Land_HBarrierBig_F",[17.8696,48.312,-0.00143862],1.51588,true,true], + ["Land_HBarrierBig_F",[33.9624,48.3108,-0.00143862],1.51588,true,true], + ["Land_HBarrierBig_F",[25.6785,48.3774,-0.00143862],1.51588,true,true], + ["Land_HBarrierBig_F",[41.6587,48.5078,-0.00143862],1.51588,true,true], + ["Land_HBarrierBig_F",[53.832,-28.3086,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[53.8938,-44.4204,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[53.9326,-36.322,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[50.8213,-49.5146,-0.00143862],1.58276,true,true], + ["Land_LampHalogen_F",[61.6257,-8.93774,-0.00143814],183.353,true,true], + ["Land_HBarrierBig_F",[53.5598,-12.5808,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[58.1006,-9.04248,-0.00143862],180.639,true,true], + ["Land_HBarrierBig_F",[53.6702,-20.0735,-0.00143862],271.533,true,true], + ["Land_LampHalogen_F",[61.2739,9.27808,-0.00143814],183.353,true,true], + ["Land_HBarrierBig_F",[57.9741,9.22607,-0.00143862],180.457,true,true], + ["Land_HBarrierBig_F",[53.0159,20.7566,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[53.2136,13.0596,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[53.0928,28.8538,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[53.1624,37.1411,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[52.9644,44.8403,-0.00143862],271.533,true,true], + ["Land_HBarrierBig_F",[49.8362,48.4373,-0.00143862],1.51588,true,true] +]; + +_missionLootBoxes = [ + //["Exile_Container_SupplyBox",[-2.28174,0.128662,-0.00143862],_crateLoot,_lootCounts,0.000181514] +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + ["Exile_Car_Hunter",[24.8054,-67.8333,0.00875282],89.6558], + ["Exile_Car_HEMMT",[24.8997,69.1799,-0.00138235],91.5468], + ["O_LSV_02_armed_F",[74.0911,1.21655,-0.0377212],359.999] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = []; // + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Red; +_maxNoAI = blck_MaxAI_Red; +_noAIGroups = blck_AIGrps_Red; +_noVehiclePatrols = blck_SpawnVeh_Red; +_noEmplacedWeapons = blck_SpawnEmplaced_Red; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/tko_camp.sqf b/@GMS/addons/custom_server/Missions/Red/tko_camp.sqf new file mode 100644 index 0000000..c211921 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Red/tko_camp.sqf @@ -0,0 +1,174 @@ +/* + Mission Template by Ghostrider [GRG] + Mission Compositions by Bill prepared for ghostridergaming + Copyright 2016 + Last modified 3/20/17 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\Missions\privateVars.sqf"; + +//diag_log "[blckeagls] Spawning Red Mission with template = default"; +_crateLoot = blck_BoxLoot_Red; +_lootCounts = blck_lootCountsRed; +_startMsg = "An enemy Military Camp was sighted in a nearby sector! Check the Red marker on your map for the location!"; +_endMsg = "The Military Camp at the Red Marker is under survivor control!"; +_markerLabel = ""; +_markerType = ["ELLIPSE",[300,300],"Solid"]; +_markerColor = "ColorRed"; +_markerMissionName = "Military Camp"; +_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" + +////////// +// Past the output of the script here +_garrisonedBuildings_BuildingPosnSystem = [ +]; + +_garrisonedBuilding_ATLsystem = [ + ["Land_Cargo_House_V3_F",[8.00928,15.6453,-0.00143909],0,true,true,[["B_HMG_01_high_F",[-8.28516,3.27148,-0.0121188],0.000433404]],[]] +]; + +_missionLandscape = [ + //["babe_helper",[-3327.46,-2809.42,-0.00143909],0,true,true], + //["Sign_Arrow_Green_F",[-3324.96,-2809.92,-0.00143909],0,true,true], + //["Sign_Arrow_F",[-3324.96,-2809.92,-0.00143909],0,true,true], + //["Sign_Arrow_Yellow_F",[-3324.96,-2809.92,-0.00143909],0,true,true], + ["Land_HBarrier_Big_F",[-2.76221,-30.3596,-0.00143909],0,true,true], + ["Land_HBarrier_1_F",[-9.74463,-27.0081,-0.00143909],180,true,true], + ["Land_BagFence_Long_F",[-9.74268,-29.0042,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[-8.36182,-30.3743,-0.00143909],180,true,true], + ["CamoNet_OPFOR_open_F",[-0.361816,-1.01782,-0.00143909],180,true,true], + ["Land_HBarrier_3_F",[-15.3853,-13.9866,-0.00143909],315,true,true], + ["Land_HBarrier_Big_F",[-3.61768,-5.26782,-0.00143909],180,true,true], + ["Land_HBarrier_Big_F",[-5.46533,3.40405,-0.00143909],0,true,true], + ["Land_HBarrier_Big_F",[-18.5767,-14.5354,-0.00143909],45,true,true], + ["Land_HBarrier_Big_F",[-12.4985,-20.3987,-0.00143909],45,true,true], + ["Land_HBarrier_1_F",[-22.9692,-2.77563,-0.00143909],270,true,true], + ["Land_HBarrier_1_F",[-23.3423,0.478271,-0.00143909],15,true,true], + ["Land_BagFence_Long_F",[-24.5767,-9.90649,-0.00143909],315,true,true], + ["Land_BagFence_Long_F",[-22.8071,-8.13794,-0.00143909],315,true,true], + ["Land_BagFence_Long_F",[-18.7427,-12.3811,-0.00143909],315,true,true], + ["Land_BagFence_Long_F",[-23.2368,2.26245,-0.00143909],90,true,true], + ["Land_BagFence_Long_F",[-21.8657,6.25952,-0.00143909],0,true,true], + ["Land_BagFence_Long_F",[-22.3657,-13.8772,-0.00143909],135,true,true], + ["Land_BagFence_Long_F",[-9.74268,-25.1174,-0.00143909],90,true,true], + ["Land_BagFence_Long_F",[-18.5649,-8.3147,-0.00143909],45,true,true], + ["Land_BagFence_Long_F",[-23.2368,4.88843,-0.00143909],90,true,true], + ["Land_BagFence_Long_F",[-25.2192,0.111084,-0.00143909],0,true,true], + ["Land_BagFence_Long_F",[-25.2192,-2.76587,-0.00143909],0,true,true], + ["Land_BagFence_Long_F",[-26.5884,-1.39282,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[-24.3989,-13.9709,-0.00143909],225,true,true], + ["Land_BagFence_Round_F",[-17.5747,-10.4006,-0.00143909],270,true,true], + ["Land_BagFence_Round_F",[-25.5493,-11.9026,-0.00143909],90,true,true], + ["Land_BagFence_Round_F",[-20.7212,-7.07642,-0.00143909],180,true,true], + ["Land_BagFence_End_F",[-9.7583,-23.3167,-0.00143909],270,true,true], + ["Land_Cargo_Patrol_V3_F",[-10.9263,-16.053,-0.00143862],45,true,true], + ["Land_Cargo_House_V3_F",[-3.09424,-20.7424,-0.00143909],180,true,true], + ["CamoNet_OPFOR_open_F",[-0.225098,8.17163,-0.00143909],0,true,true], + ["Land_HBarrier_3_F",[-1.85596,17.1208,-0.00143909],180,true,true], + ["Land_HBarrier_3_F",[-2.70752,19.4275,-0.00143909],90,true,true], + ["Land_HBarrier_Big_F",[-19.6177,9.36694,-0.00143909],270,true,true], + ["Land_HBarrier_Big_F",[-19.6646,17.5466,-0.00143909],90,true,true], + ["Land_HBarrier_1_F",[-4.93994,9.58374,-0.00143909],270,true,true], + ["Land_HBarrier_1_F",[-16.4673,27.1775,-0.00143909],285,true,true], + ["Land_HBarrier_1_F",[-2.68408,25.3513,-0.00143909],120,true,true], + ["Land_BagFence_Long_F",[-2.30908,23.7244,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[-19.7173,23.0505,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[-19.7153,25.9265,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[-18.3462,27.4314,-0.00143909],0,true,true], + ["Land_Cargo_Patrol_V3_F",[-15.4087,10.7146,-0.00143862],90,true,true], + ["Land_HBarrier_5_F",[-15.7407,14.7517,-0.00143909],0,true,true], + ["Land_HBarrier_5_F",[-6.33838,7.41382,-0.00143909],270,true,true], + ["Land_HBarrier_Big_F",[4.87646,-28.4124,-0.00143909],330,true,true], + ["Land_HBarrier_3_F",[10.5171,0.540771,-0.00143909],0,true,true], + ["Land_HBarrier_3_F",[11.3687,-7.17212,-0.00143909],270,true,true], + ["Land_HBarrier_Big_F",[23.0171,-13.6155,-0.00143909],285,true,true], + ["Land_HBarrier_Big_F",[3.04834,3.62964,-0.00143909],1.36604e-005,true,true], + ["Land_HBarrier_Big_F",[11.8745,-23.9084,-0.00143909],330,true,true], + ["Land_HBarrier_Big_F",[7.90967,0.343506,-0.00143909],90,true,true], + ["Land_HBarrier_Big_F",[24.978,-5.36938,-0.00143909],285,true,true], + ["Land_HBarrier_Big_F",[11.2808,-4.62427,-0.00143909],180,true,true], + ["Land_HBarrier_Big_F",[25.9077,2.68921,-0.00143909],270,true,true], + ["Land_HBarrier_1_F",[4.35498,-2.41431,-0.00143909],90,true,true], + ["Land_HBarrier_1_F",[21.0073,-21.7493,-0.00143909],30,true,true], + ["Land_BagFence_Long_F",[19.1304,-21.6174,-0.00143909],0,true,true], + ["Land_BagFence_Long_F",[16.5073,-21.6174,-0.00143909],0,true,true], + ["Land_BagFence_Long_F",[7.89795,6.07788,-0.00143909],270,true,true], + ["Land_Loudspeakers_F",[21.2026,-15.3088,-0.00143909],196,true,true], + ["Land_HBarrier_5_F",[17.7847,6.20483,-0.00143909],270,true,true], + ["Land_HBarrier_5_F",[11.3823,-11.5022,-0.00143909],270,true,true], + ["Land_HBarrier_5_F",[5.75146,-0.244385,-0.00143909],90,true,true], + ["Land_Cargo_House_V3_F",[5.49561,-9.99927,-0.00143909],90,true,true], + ["Land_Cargo_House_V3_F",[5.03076,-17.6174,-0.00143909],150,true,true], + ["CamoNet_OPFOR_open_F",[22.6538,9.88257,-0.00143909],270,true,true], + ["Land_HBarrier_3_F",[18.7593,9.75757,-0.00143909],0,true,true], + ["Land_HBarrier_Big_F",[9.20264,21.2849,-0.00143909],180,true,true], + ["Land_HBarrier_Big_F",[15.9546,18.7849,-0.00143909],225,true,true], + ["Land_HBarrier_Big_F",[22.4077,16.1892,-0.00143909],0,true,true], + ["Land_HBarrier_Big_F",[0.70459,21.283,-0.00143909],180,true,true], + ["Land_HBarrier_Big_F",[25.7827,11.0642,-0.00143909],90,true,true], + ["Land_BagFence_Long_F",[4.57764,19.0466,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[4.57764,16.1716,-0.00143909],270,true,true], + ["Land_BagFence_Long_F",[11.3843,19.2634,-0.00143909],90,true,true], + ["Land_BagFence_End_F",[4.57764,14.4216,-0.00143909],90,true,true], + ["Land_BagFence_End_F",[7.68896,7.77515,-0.00143909],240,true,true], + ["Land_BagFence_End_F",[11.3843,17.5134,-0.00143909],90,true,true] +]; + +_missionLootBoxes = [ + //["Exile_Container_SupplyBox",[1.55273,0.0065918,-0.00143957],_crateLoot,_lootCounts,0.000522983] +]; + +_missionLootVehicles = [ +]; + +_missionPatrolVehicles = [ + //["B_LSV_01_armed_F",[-41.377,-5.40894,-0.0238895],0.00171121], + ["B_LSV_01_armed_F",[39.5627,-5.26709,-0.0237107],0.00169144] +]; + +_submarinePatrolParameters = [ +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = []; // + + + +////////// +// The lines below define additional variables you may wish to configure. + + +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; +_minNoAI = blck_MinAI_Red; +_maxNoAI = blck_MaxAI_Red; +_noAIGroups = blck_AIGrps_Red; +_noVehiclePatrols = blck_SpawnVeh_Red; +_noEmplacedWeapons = blck_SpawnEmplaced_Red; +//_uniforms = blck_SkinList; +//_headgear = blck_headgear; + +_chancePara = 0.75; // Setting this in the mission file overrides the defaults +_noPara = 5; // Setting this in the mission file overrides the defaults +_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +_paraSkill = "Red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. + +_chanceLoot = 0.7; +private _lootIndex = selectRandom[1,2,3,4]; +private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +_paraLoot = _paralootChoices select _lootIndex; +_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. + +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_timeOut = -1; +#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_initializeMission.sqf b/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_initializeMission.sqf index 8251319..a9875a1 100644 --- a/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_initializeMission.sqf +++ b/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_initializeMission.sqf @@ -10,8 +10,7 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; params["_mission"]; -// Spawn landscape -// params["_objects"]; + if (isNil "_markerColor") then {_markerColor = "ColorBlack"}; if (isNil "_markerType") then {_markerType = ["mil_box",[]]}; if (isNil "_missionLandscape") then {_missionLandscape = []}; @@ -28,7 +27,10 @@ if (isNil "_aiGroupParameters") then {_aiGroupParameters = []}; if (isNil "_missionEmplacedWeapons") then {_missionEmplacedWeapons = []}; if (isNil "_vehiclePatrolParameters") then {_vehiclePatrolParameters = []}; if (isNil "_missionLootVehicles") then {_missionLootVehicles = []}; - +if (isNil "_crateMoney") then +{ + missionNamespace setVariable["_crateMoney",missionNamespace getVariable "blck_crateMoneyOrange"]; +}; _markerClass = format["static%1",floor(random(1000000))]; _blck_localMissionMarker = [_markerClass,_missionCenter,"","",_markerColor,_markerType]; if (blck_labelMapMarkers select 0) then diff --git a/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf b/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf index 26b0356..068ce9b 100644 --- a/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf +++ b/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf @@ -10,9 +10,6 @@ http://creativecommons.org/licenses/by-nc-sa/4.0/ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//diag_log "[blckeagls] GMS_StaticMissions_init.sqf "; -//static mission descriptor for code: [position,level, numAI or [min,maxAI],patrolRadius, respawn, group[groupNull],spawnedAt[0],respawn[0]] -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; #include "\q\addons\custom_server\Missions\Static\GMS_StaticMissions_Lists.sqf"; blck_sm_Infantry = []; @@ -34,7 +31,8 @@ blck_sm_patrolRespawnInterval = 600; { if ((toLower blck_modType) isEqualTo (toLower(_x select 0))) then { - call compilefinal preprocessFileLineNumbers format["\q\addons\custom_server\Missions\Static\missions\%1",(_x select 2)]; + [] call compilefinal preprocessFileLineNumbers format["\q\addons\custom_server\Missions\Static\missions\%1",(_x select 2)]; + diag_log format["_initializing static mission %1 for mod type %2",_x select 1,blck_modType]; }; }; }forEach _staticMissions; diff --git a/@GMS/addons/custom_server/Missions/Static/missions/privateVars.sqf b/@GMS/addons/custom_server/Missions/Static/missions/privateVars.sqf index c479e4c..29adbeb 100644 --- a/@GMS/addons/custom_server/Missions/Static/missions/privateVars.sqf +++ b/@GMS/addons/custom_server/Missions/Static/missions/privateVars.sqf @@ -2,10 +2,14 @@ private ["_mission","_difficulty","_crateLoot","_lootCounts","_markerMissionName","_missionLandscapeMode","_markerLabel", "_endMsg","_startMsg","_markerType","_markerColor","_missionCenter", - "_missionLandscape","_missionLootBoxes","_missionLootVehicles","_missionEmplacedWeapons","_garrisonedBuilding_ASLsystem","_garrisonedBuildings_BuildingPosnSystem", + "_missionLandscape","_missionLootBoxes","_crateMoney","_missionLootVehicles", + "_missionEmplacedWeapons","_garrisonedBuilding_ASLsystem","_garrisonedBuildings_BuildingPosnSystem", "_minNoAI","_maxNoAI","_noAIGroups","_noVehiclePatrols","_noEmplacedWeapons","_noPara","_helipatrol","_aircraftTypes", "_uniforms","_headgear","_weaponList","_sideArms","_vests","_backpacks", - "_weapons","_sideArms","_chanceReinforcements","_endCondition", - "_useMines"]; + "_weapons","_sideArms", + "_chanceReinforcements", + "_endCondition", + "_useMines" +]; // _mission diff --git a/@GMS/addons/custom_server/Missions/Static/missions/template.sqf b/@GMS/addons/custom_server/Missions/Static/missions/template.sqf new file mode 100644 index 0000000..c9f0027 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Static/missions/template.sqf @@ -0,0 +1,174 @@ + + +/* + This is a simple mission using precisely placed loot crates and infantry, static weapons and vehicle patrols. + See the accompanying example mission in the exampleMission folder to get an idea how I laid this out. + Note that I exported the mission using the exportAll function of M3EDEN editor. +*/ + +#include "privateVars.sqf"; + +_mission = "static mission template"; // Included for additional documentation. Not intended to be spawned as a mission per se. + +_difficulty = "red"; // Skill level of AI (blue, red, green etc) + +_crateLoot = blck_BoxLoot_Orange; // You can use a customized _crateLoot configuration by defining an array here. It must follow the following format shown for a hypothetical loot array called _customLootArray + /* + _customLootArray = + // Loot is grouped as [weapons],[magazines],[items] in order to be able to use the correct function to load the item into the crate later on. + // Each item consist of the following information ["ItemName",minNum, maxNum] where min is the smallest number added and min+max is the largest number added. + + [ + [// Weapons + + ["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"] + ], + [//Magazines + ["10Rnd_93x64_DMR_05_Mag" ,1,5] + ], + [ // Optics + ["optic_KHS_tan",1,3] + ], + [// Materials and supplies + ["Exile_Item_MetalScrews",3,10] + // + ], + [//Items + ["Exile_Item_MountainDupe",1,3] + ], + [ // Backpacks + ["B_OutdoorPack_tan",1,2] + ] + ]; + */ + +_lootCounts = blck_lootCountsRed; // You can use a customized set of loot counts or one that is predefined but it must follow the following format: + // values are: number of things from the weapons, magazines, optics, materials(cinder etc), items (food etc) and backpacks arrays to add, respectively. + // blck_lootCountsOrange = [[6,8],[24,32],[5,10],[25,35],16,1]; // Orange + +/**************************************************** + + PLACE MARKER DEFINITIONS PULLED FROM YOUR MISSION BELOW + +*****************************************************/ + +_missionCenter = [2634.41,22127.7,0]; +_markerType = ["mil_box",[0,0]]; +_markerColor = "Default"; +_markerMissionName = "Bad News Bears"; +_markerLabel = ""; + +/**************************************************** + + PLACE THE DATA DEFININING THE BUILDINGS, VEHICLES ETC. PULLED FROM YOUR MISSION BELOW + +*****************************************************/ + +_garrisonedBuildings_BuildingPosnSystem = [ + ["Land_Cargo_Tower_V1_No5_F",[2631.25,22161.8,2.63358],[[0,1,0],[0,0,1]],[true,true],"Red",0.67,3,10,4,600,-1] +]; + +_garrisonedBuilding_ASLsystem = [ + ["Land_Cargo_Tower_V1_No7_F",[2596.24,22093.9,11.1251],[[-0.994659,0.103214,0],[0,0,1]],[true,true],"Red",[["B_HMG_01_high_F",[3.66943,-4.49414,13.1028],98.8724],["B_HMG_01_high_F",[3.71802,-3.34766,18.3248],103.27],["B_HMG_01_high_F",[-1.64502,-0.0644531,20.9188],301.323]],[[[-1.80713,-3.39844,8.5904],0],[[-1.89453,1.23047,4.64288],0],[[-0.999268,-0.117188,17.9661],0],[[0.122314,-2.62891,17.8909],0]],600,-1] +]; + +_missionLandscape = [ + ["Land_Razorwire_F",[2598.06,22077.2,6.61092],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], + ["Land_Razorwire_F",[2593.09,22069.8,5.63825],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], + ["Land_HBarrier_01_wall_6_green_F",[2603.93,22074.2,3.31451],[[-0.808148,0.353358,0.471206],[0.188556,-0.602713,0.77536]],[true,true]], + ["Land_Razorwire_F",[2608.05,22092.6,8.92718],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], + ["Land_Razorwire_F",[2603.25,22085.6,9.1608],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], + ["Land_HBarrier_01_wall_6_green_F",[2608.26,22080.8,5.0178],[[-0.697721,0.426652,0.575459],[0.530202,-0.232641,0.815331]],[true,true]], + ["Land_HBarrier_01_big_tower_green_F",[2592.15,22140.3,12.675],[[-0.929912,0.317024,0.186437],[0.194858,-0.0052352,0.980817]],[true,true]], + ["Land_HBarrier_01_wall_6_green_F",[2623.27,22105.6,6.0089],[[-0.787623,0.527981,0.317625],[0.289688,-0.137655,0.94717]],[true,true]], + ["Land_HBarrier_01_wall_6_green_F",[2612.98,22088,6.26459],[[-0.756164,0.472755,0.452459],[0.39451,-0.222304,0.891595]],[true,true]], + ["Land_HBarrier_01_wall_6_green_F",[2616.91,22095.1,6.58389],[[-0.768901,0.525395,0.364351],[0.356306,-0.121062,0.926493]],[true,true]], + ["Land_Razorwire_F",[2638.69,22136.7,3.22351],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], + ["Land_Razorwire_F",[2633.59,22130.4,4.14247],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], + ["Land_Razorwire_F",[2622.16,22119,7.20263],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], + ["Land_Razorwire_F",[2628.34,22125.8,5.64734],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], + ["Land_HBarrier_01_wall_corridor_green_F",[2638,22122.4,3.50001],[[-0.562069,0.827048,0.00837636],[0.0598924,0.0305983,0.997736]],[true,true]], + ["Land_HBarrier_01_big_tower_green_F",[2631.69,22115.2,4.81262],[[-0.816498,0.552055,0.169019],[0.211131,0.0130311,0.977371]],[true,true]], + ["Land_HBarrier_01_wall_6_green_F",[2627.84,22112.4,5.65952],[[-0.815257,0.559665,0.148765],[0.136056,-0.0645887,0.988593]],[true,true]], + ["Land_HBarrier_01_wall_6_green_F",[2633.06,22120.1,4.36103],[[-0.81511,0.577092,0.0506065],[0.137352,0.107655,0.984655]],[true,true]], + ["Sign_Sphere100cm_F",[2633.58,22161.5,20.3391],[[0,1,0],[0,0,1]],[true,true]], + ["Land_HBarrier_01_wall_6_green_F",[2642.79,22128,2.86908],[[-0.818151,0.573521,0.0412504],[0.107375,0.0819095,0.990839]],[true,true]], + ["Land_HBarrier_01_wall_6_green_F",[2647.64,22134.9,2.09253],[[-0.822645,0.568343,0.0155369],[0.0253224,0.00932551,0.999636]],[true,true]], + ["Land_Razorwire_F",[2652.06,22150.5,1.93652],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], + ["Land_Razorwire_F",[2642.87,22141.5,2.79323],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], + ["Land_Razorwire_F",[2647.34,22145.8,2.48597],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], + ["Land_Razorwire_F",[2656.23,22155.4,1.36567],[[-0.825716,0.564085,0],[0,0,1]],[true,true]], + ["Land_HBarrier_01_wall_6_green_F",[2651.93,22142,1.89926],[[-0.822376,0.56825,0.0280985],[0.0359766,0.00265033,0.999349]],[true,true]], + ["Land_HBarrier_01_wall_6_green_F",[2656.98,22149,1.16155],[[-0.818034,0.570454,0.0735002],[0.108685,0.0278236,0.993687]],[true,true]] +]; + +_aiGroupParameters = [ + [[2558.96,22127.2,20.5699],"Red",[3,6],45,600,-1], + [[2590.38,22150.9,12.6152],"Red",[3,6],45,600,-1], + [[2581.74,22146.4,30.8829],"Red",[3,6],45,600,-1], + [[2644.55,22157.2,1.88187],"Red",[3,6],45,600,-1] +]; + +_aiScubaGroupParameters = [ +]; + +_vehiclePatrolParameters = [ + ["B_CTRG_LSV_01_light_F",[2609.08,22134.8,9.4568],"Red",75,600,-1], + ["B_G_Offroad_01_armed_F",[2665.47,22098.3,3.79465],"Red",75,600,-1], + ["B_Boat_Armed_01_minigun_F",[2638.39,22009,0],"Red",75,600,-1], + ["B_Boat_Armed_01_minigun_F",[2720.73,22177.5,0],"Red",75,600,-1] +]; + +_airPatrols = [ +]; + +_missionEmplacedWeapons = [ + ["B_HMG_01_high_F",[2593.12,22140.1,14.7976],"Red",0,600,-1], + ["B_HMG_01_high_F",[2632.61,22114.4,6.81314],"Red",0,600,-1], + ["B_HMG_01_high_F",[2656.01,22126.7,2.09379],"Red",0,600,-1] +]; + +_submarinePatrolParameters = [ +]; + +_missionLootBoxes = [ + ["O_CargoNet_01_ammo_F",[2589.45,22117.3,11.7155],[[0,0.999353,-0.0359766],[0.245575,0.0348749,0.96875]],[true,false],_crateLoot,_lootCounts], + ["O_CargoNet_01_ammo_F",[2596.74,22152.1,11.5449],[[0,0.998974,-0.0452868],[0.203641,0.0443379,0.978041]],[true,false],_crateLoot,_lootCounts] +]; + + + +/**************************************************** + + ENABLE ANY SETTINGS YOU LIKE FROM THE LIST BELOW. + iF THESE ARE NOT ENABLED THEN THE DEFAULTS DEFINED IN BLCK_CONFIG.SQF + AND THE MOD-SPECIFIC CONFIGURATIONS WILL BE USED. + +*****************************************************/ + +/* +_missionLandscapeMode = "precise"; // acceptable values are "random","precise" + // In precise mode objects will be spawned at the relative positions specified. + // In the random mode, objects will be randomly spawned within the mission area. + +_aircraftTypes = blck_patrolHelisRed; // You can use one of the pre-defined lists in blck_configs or your own custom array. +_noAirPatrols = blck_noPatrolHelisRed; // You can use one of the pre-defined values or a custom one. acceptable values are integers (1,2,3) or a range such as [2,4]; + // Note: this value is ignored if you specify air patrols in the array below. +// Change _useMines to true/false below to enable mission-specific settings. +_useMines = blck_useMines; // Set to false if you have vehicles patrolling nearby. +_uniforms = blck_SkinList; // You can replace this list with a custom list of uniforms if you like. +_headgear = blck_headgear; // You can replace this list with a custom list of headgear. +_vests = blck_vests; // You can replace this list with a custom list of vests. +_backpacks = blck_backpacks; // You can replace this list with a custom list of backpacks. +_weapons = blck_WeaponList_Orange; // You can replace this list with a customized list of weapons, or another predifined list from blck_configs_epoch or blck_configs_exile as appropriate. +_sideArms = blck_pistols; // You can replace this list with a custom list of sidearms. +*/ + + +//******************************************************** +// Do not modify anything below this line. +//******************************************************** + +#include "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_initializeMission.sqf"; + +diag_log format["[blckeagls static missions] COMPLETED initializing middions %1 position at %2 difficulty %3",_mission,_missionCenter,_difficulty]; \ No newline at end of file diff --git a/@GMS/addons/custom_server/init/blck_init_server.sqf b/@GMS/addons/custom_server/init/blck_init_server.sqf index e9286be..50d8bd1 100644 --- a/@GMS/addons/custom_server/init/blck_init_server.sqf +++ b/@GMS/addons/custom_server/init/blck_init_server.sqf @@ -101,8 +101,8 @@ switch (blck_simulationManager) do case 0: {["[blckeagls] simulation management disabled"] call blck_fnc_log}; }; -[format["[blckeagls] version %1 Build %2 Loaded in %3 seconds",blck_versionNumber,blck_buildNumber,diag_tickTime - _blck_loadingStartTime]] call blck_fnc_log; -[format["[blckeagls] waiting for players to join ---- >>>>"]] call blck_fnc_log; +[format["Version %1 Build %2 Loaded in %3 seconds",blck_versionNumber,blck_buildNumber,diag_tickTime - _blck_loadingStartTime]] call blck_fnc_log; +[format["Waiting for players to join ---- >>>>"]] call blck_fnc_log; if ( !(blck_debugON) && (blck_debugLevel isEqualTo 0)) then { @@ -199,5 +199,5 @@ blck_graveyardGroup setVariable ["blck_group",1]; [] spawn blck_fnc_mainThread; blck_pvs_version = blck_versionNumber; publicVariable "blck_pvs_version"; -[format["[blckeagls] version %1 Build %2 Date %4 Loaded in %3 seconds",blck_versionNumber,blck_buildNumber,diag_tickTime - _blck_loadingStartTime,blck_buildDate]] call blck_fnc_log; +[format["Version %1 Build %2 Date %4 Loaded in %3 seconds",blck_versionNumber,blck_buildNumber,diag_tickTime - _blck_loadingStartTime,blck_buildDate]] call blck_fnc_log; diff --git a/@GMS/addons/custom_server/init/build.sqf b/@GMS/addons/custom_server/init/build.sqf index 811202a..753c9a0 100644 --- a/@GMS/addons/custom_server/init/build.sqf +++ b/@GMS/addons/custom_server/init/build.sqf @@ -1,4 +1,4 @@ -#define blck_buildNumber 215 +#define blck_buildNumber 218 #define blck_versionNumber 7.00 -#define blck_buildDate "8-10-20" +#define blck_buildDate "8-29-20" From c94a8e382dbf50290c467becd787156710dfd7c8 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Wed, 2 Sep 2020 11:36:02 -0400 Subject: [PATCH 24/25] Build 218 Final --- .../Compiles/Functions/GMS_fnc_setDirUp.sqf | 7 + .../Missions/GMS_fnc_sm_init_functions.sqf | 81 ---- .../Configs/armed_vics_notes.txt | 91 ---- .../custom_server/Configs/blck_configs.sqf | 2 +- .../Configs/blck_configs_mil.sqf | 2 +- .../Configs/blck_custom_config.sqf | 44 ++ .../custom_server/Configs/blck_defines.hpp | 2 +- .../custom_server/Missions/Blue/IDAP.sqf | 2 +- .../Missions/Blue/Service_point.sqf | 4 +- .../custom_server/Missions/Blue/Toxin.sqf | 2 +- .../custom_server/Missions/Blue/default2.sqf | 2 +- .../custom_server/Missions/Blue/derbunker.sqf | 22 +- .../Missions/Blue/forgotten_HQ.sqf | 4 +- .../Missions/Blue/inhaftierung.sqf | 22 +- .../Missions/Blue/resupplyCamp.sqf | 2 +- .../Missions/GMS_missionLists.sqf | 85 +++- .../Missions/Green/Camp_Moreell.sqf | 23 +- .../Missions/Green/Operations_Command.sqf | 3 +- .../Missions/Green/banditVillage.sqf | 2 +- .../Missions/Green/charlston.sqf | 2 +- .../custom_server/Missions/Green/dashq.sqf | 8 +- .../Missions/Green/derbunker.sqf | 4 +- .../custom_server/Missions/Green/factory.sqf | 6 +- .../Missions/Green/fortification.sqf | 2 +- .../custom_server/Missions/Green/lager.sqf | 4 +- .../Missions/Green/munitionsResearch.sqf | 2 +- .../custom_server/Missions/Green/tko_camp.sqf | 6 +- .../Missions/Orange/Ammunition_depot.sqf | 2 +- .../Missions/Orange/Camp_Moreell.sqf | 3 +- .../Missions/Orange/Operations_Command.sqf | 3 +- .../custom_server/Missions/Orange/Outpost.sqf | 3 +- .../custom_server/Missions/Orange/bunker.sqf | 121 ------ .../custom_server/Missions/Orange/dashq.sqf | 6 +- .../Missions/Orange/derbunker.sqf | 4 +- .../custom_server/Missions/Orange/lager.sqf | 4 +- .../Missions/Orange/tko_camp.sqf | 4 +- .../Missions/Red/Ammunition_depot.sqf | 22 +- .../Missions/Red/Camp_Moreell.sqf | 3 +- .../Missions/Red/Operations_Command.sqf | 3 +- .../custom_server/Missions/Red/Outpost.sqf | 3 +- .../custom_server/Missions/Red/carThieves.sqf | 2 +- .../custom_server/Missions/Red/dashq.sqf | 8 +- .../custom_server/Missions/Red/derbunker.sqf | 4 +- .../custom_server/Missions/Red/factory.sqf | 3 +- .../Missions/Red/junkyardWilly.sqf | 2 +- .../custom_server/Missions/Red/lager.sqf | 4 +- .../custom_server/Missions/Red/tko_camp.sqf | 6 +- .../Code/GMS_fnc_sm_initializeMission.sqf | 4 +- .../Code/GMS_fnc_sm_initializeVariables.sqf | 89 ++++ .../Static/GMS_StaticMissions_init.sqf | 2 +- @GMS/addons/custom_server/changeLog.sqf | 2 +- @blckeagls_EDEN/addons/3EDEN_plugin.pbo | Bin 126016 -> 133307 bytes @blckeagls_EDEN/addons/3EDEN_plugin.pbo.bak | Bin 0 -> 129973 bytes .../fn_configureGarrisonForBuildingATL.sqf | 65 --- .../3EDEN_plugin/Core/fn_getGarrisonInfo.sqf | 19 + .../Core/fn_getLootVehicleInfo.sqf | 22 + .../Core/fn_getMissionGarrisonInfo.sqf | 11 + .../Core/fn_getMissionLootVehicleInfo.sqf | 11 + .../addons/3EDEN_plugin/Core/fn_init.sqf | 57 --- .../3EDEN_plugin/Core/fn_setGarrison.sqf | 26 ++ .../3EDEN_plugin/Core/fn_setLootVehicle.sqf | 22 + .../3EDEN_plugin/Core/fn_updateObjects.sqf | 9 + .../Export/pullDynamicMission.sqf | 411 ------------------ .../3EDEN_plugin/Export/pullMarkerInfo.sqf | 62 --- .../3EDEN_plugin/Export/setCenterAtPlayer.sqf | 1 - .../addons/3EDEN_plugin/Export/template.sqf | 11 - .../addons/3EDEN_plugin/config.cpp | 4 +- @blckeagls_EDEN/addons/3EDEN_plugin/defines.h | 191 ++++++-- 68 files changed, 611 insertions(+), 1054 deletions(-) create mode 100644 @GMS/addons/custom_server/Compiles/Functions/GMS_fnc_setDirUp.sqf delete mode 100644 @GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_init_functions.sqf delete mode 100644 @GMS/addons/custom_server/Configs/armed_vics_notes.txt delete mode 100644 @GMS/addons/custom_server/Missions/Orange/bunker.sqf create mode 100644 @GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_initializeVariables.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin.pbo.bak delete mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisonForBuildingATL.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_getGarrisonInfo.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_getLootVehicleInfo.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_getMissionGarrisonInfo.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_getMissionLootVehicleInfo.sqf delete mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_init.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setGarrison.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setLootVehicle.sqf create mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_updateObjects.sqf delete mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Export/pullDynamicMission.sqf delete mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Export/pullMarkerInfo.sqf delete mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Export/setCenterAtPlayer.sqf delete mode 100644 @blckeagls_EDEN/addons/3EDEN_plugin/Export/template.sqf diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_setDirUp.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_setDirUp.sqf new file mode 100644 index 0000000..49c53c1 --- /dev/null +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_setDirUp.sqf @@ -0,0 +1,7 @@ + +params["_object","_dir"]; +switch (typeName _dir) do +{ + case "SCALAR": {_object setDir _dir}; + case "ARRAY": {_object setVectorDirAndUp _dir}; +}; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_init_functions.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_init_functions.sqf deleted file mode 100644 index 43476b7..0000000 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_sm_init_functions.sqf +++ /dev/null @@ -1,81 +0,0 @@ -/* - by Ghostrider [GRG] - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//diag_log "[blckeagls] GMS_fnc_sm_init_functions.sqf "; -//blck_sm_Groups = []; -blck_sm_Infantry = []; -blck_sm_Vehicles = []; -blck_sm_Aircraft = []; -blck_sm_Emplaced = []; -blck_sm_scubaGroups = []; -blck_sm_surfaceShips = []; -blck_sm_submarines = []; -blck_sm_lootContainers = []; -blck_sm_garrisonBuildings_ASL = []; -blcl_sm_garrisonBuilding_relPos = []; - -blck_fnc_sm_AddGroupToArray = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_AddGroupToArray.sqf"; - -/* -blck_fnc_sm_AddGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_AddGroup.sqf"; -blck_fnc_sm_AddVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_AddVehicle.sqf"; -blck_fnc_sm_AddAircraft = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_AddAircraft.sqf"; -blck_fnc_sm_AddEmplaced = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_AddEmplaced.sqf"; -*/ -// TODO: Delte soon -private _functions = [ - //["blck_fnc_sm_monitorStaticUnits","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorStaticPatrols.sqf"], - ["blck_fnc_sm_monitorInfantry","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorInfantry.sqf"], - ["blck_fnc_sm_monitorScuba","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorScuba.sqf"], - ["blck_fnc_sm_monitorVehicles","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorVehicles.sqf"], - ["blck_fnc_sm_monitorAircraft","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorAircraft.sqf"], - ["blck_fnc_sm_monitorShips","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorShips.sqf"], - ["blck_fnc_sm_monitorSubs","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorSubs.sqf"], - ["blck_fnc_sm_monitorEmplaced","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorEmplaced.sqf"], - ["blck_fnc_sm_monitorGarrisonsASL","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorGarrisonsASL.sqf"], - ["blck_fnc_sm_monitorGarrisons_relPos","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_monitorGarrisons_relPos.sqf"], - ["blck_fnc_sm_spawnVehiclePatrol","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnVehiclePatrol.sqf"], - ["blck_fnc_sm_spawnAirPatrol","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnAirPatrol.sqf"], - ["blck_fnc_sm_spawnEmplaced","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnEmplaced.sqf"], -// ["blck_fnc_sm_spawnInfantryPatrol","\q\addons\custom_server\Missions\Static\Code\GMS_sm_spawnInfantryPatrol.sqf"], - ["blck_fnc_sm_staticPatrolMonitor","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_staticPatrolMonitor.sqf"], -// ["blck_fnc_sm_checkForPlayerNearMission","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_checkForPlayerNearMission.sqf"], - ["blck_fnc_sm_spawnAirPatrols","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnAirPatrols.sqf"], - ["blck_fnc_sm_spawnEmplaceds","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnEmplaced.sqf"], - ["blck_fnc_sm_spawnInfantryPatrols","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnInfantryPatrols.sqf"], - ["blck_fnc_sm_spawnLootContainers","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnLootContainers.sqf"], - ["blck_fnc_sm_spawnObjects","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnObjects.sqf"], - ["blck_fnc_sm_spawnVehiclePatrols","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnVehiclePatrols.sqf"], - ["blck_fnc_sm_spawnBuildingGarrison_ASL","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnBuildingGarrisonASL.sqf"], - ["blck_fnc_sm_spawnBuildingGarrison_relPos","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnBuildingGarrison_relPos.sqf"], - ["blck_fnc_sm_spawnObjectASLVectorDirUp","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_spawnObjectASLVectorDirUp.sqf"], - ["blck_fnc_spawnScubaGroup","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_spawnScubaGroup.sqf"], - ["blck_fnc_spawnSDVPatrol","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_spawnSDVPatrol.sqf"], - ["blck_fnc_spawnSurfacePatrol","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_spawnSurfacePatrol.sqf"], - //["blck_fnc_sm_AddScubaGroup","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_AddScubaGroup.sqf"], - //["blck_fnc_sm_AddSurfaceVehicle","\q\addons\custom_server\Missions\Static\Code\GMS_fnc_sm_AddSurfaceVehicle.sqf"], - ["blck_fnc_sm_AddSDVVehicle","\q\addons\custom_server\Missions\Static\Code\GMS_sm_AddSDVVehicle.sqf"] -]; -{ - _x params ["_name","_path"]; - missionnamespace setvariable [_name,compileFinal preprocessFileLineNumbers _path]; -} foreach _functions; - -diag_log "[blckeagls] GMS_sm_init_functions.sqf "; - - -/* -blck_fnc_spawnScubaGroup = compileFinal preprocessFileLineNumbers "q\addons\custom_server\Missions\UMS\code\GMS_fnc_spawnScubaGroup.sqf"; -blck_fnc_spawnSDVPatrol = compileFinal preprocessFileLineNumbers "q\addons\custom_server\Missions\UMS\code\GMS_fnc_spawnSDVPatrol.sqf"; -blck_fnc_spawnSurfacePatrol = compileFinal preprocessFileLineNumbers "q\addons\custom_server\Missions\UMS\code\GMS_fnc_spawnSurfacePatrol.sqf"; -blck_fnc_sm_AddScubaGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\UMS\code\GMS_sm_AddScubaGroup.sqf"; -blck_fnc_sm_AddSurfaceVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\UMS\code\GMS_sm_AddSurfaceVehicle.sqf"; -blck_fnc_sm_AddSDVVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Missions\UMS\code\GMS_sm_AddSDVVehicle.sqf"; diff --git a/@GMS/addons/custom_server/Configs/armed_vics_notes.txt b/@GMS/addons/custom_server/Configs/armed_vics_notes.txt deleted file mode 100644 index 199a327..0000000 --- a/@GMS/addons/custom_server/Configs/armed_vics_notes.txt +++ /dev/null @@ -1,91 +0,0 @@ - -_blck_lightlyArmed_ARMA3 = [ - "B_G_Offroad_01_armed_F", - "O_G_Offroad_01_armed_F", - "B_MRAP_01_gmg_F", - "B_MRAP_01_hmg_F", - "O_MRAP_02_gmg_F", - "O_MRAP_02_hmg_F", - "I_MRAP_03_hmg_F", - "I_MRAP_03_gmg_F", - "B_APC_Wheeled_01_cannon_F", - "I_APC_Wheeled_03_cannon_F" -]; - - -_blck_tracked_APC_ARMA3 = [ - "B_APC_Tracked_01_rcws_F", - "B_APC_Tracked_01_CRV_F", - "B_APC_Tracked_01_AA_F", - "O_APC_Tracked_02_cannon_F", - "O_APC_Tracked_02_AA_F", - "O_APC_Wheeled_02_rcws_F", - "I_APC_tracked_03_cannon_F" -]; - -_blck_Tanks_ARMA3 = [ - //"B_MBT_01_arty_F", - "B_MBT_01_mlrs_F", - "B_MBT_01_TUSK_F", - "O_MBT_02_cannon_F", - //"O_MBT_02_arty_F", - "I_MBT_03_cannon_F" -]; -_blck_APC_CUP = [ - "CUP_B_Mastiff_GMG_GB_D", - "CUP_B_Mastiff_HMG_GB_D", - "CUP_B_Ridgback_HMG_GB_D", - "CUP_B_Ridgback_GMG_GB_D", - "CUP_B_M1128_MGS_Desert", - "CUP_B_M1135_ATGMV_Desert_Slat", - "CUP_B_M1133_MEV_Desert_Slat", - "CUP_B_LAV25M240_desert_USMC", - "CUP_B_M1129_MC_MK19_Desert_Slat", - "CUP_B_LAV25_HQ_desert_USMC", - "CUP_B_BRDM2_ATGM_CDF", - "CUP_B_BTR60_CDF", - "CUP_B_M1130_CV_M2_Desert_Slat", - "CUP_B_M1126_ICV_MK19_Desert_Slat", - "CUP_O_BTR90_RU", - "CUP_O_GAZ_Vodnik_BPPU_RU", - "CUP_B_M1126_ICV_M2_Desert", - "CUP_B_M1126_ICV_MK19_Desert", - "CUP_B_M1130_CV_M2_Desert", - "CUP_B_M1126_ICV_M2_Desert_Slat", - "CUP_B_M1133_MEV_Desert", - "CUP_O_GAZ_Vodnik_AGS_RU", - "CUP_O_GAZ_Vodnik_PK_RU" -]; - -_blck_Tanks_CUP = [ - "CUP_B_M2A3Bradley_USA_D", - "CUP_B_M113_desert_USA", - "CUP_B_M163_USA", - "CUP_B_M6LineBacker_USA_D", - "CUP_B_M1A1_DES_US_Army", - "CUP_B_M1A2_TUSK_MG_DES_US_Army", - "CUP_B_AAV_USMC", - "CUP_B_M270_DPICM_USA", - "CUP_B_ZSU23_CDF", - "CUP_B_BMP2_CDF", - "CUP_B_T72_CDF", - "CUP_I_T34_NAPA", - "CUP_B_Challenger2_NATO", - "CUP_B_FV432_Bulldog_GB_D_RWS", - "CUP_B_FV432_Bulldog_GB_D", - "CUP_B_FV510_GB_D_SLAT", - "CUP_B_MCV80_GB_D_SLAT", - "CUP_O_2S6_RU", - "CUP_O_BMP3_RU", - "CUP_O_T90_RU", - "CUP_O_T55_SLA", - "CUP_O_BMP1P_TKA", - "CUP_B_M270_DPICM_USA", - "CUP_B_M2Bradley_USA_W", - "CUP_B_FV510_GB_D", - "CUP_B_MCV80_GB_D", - "CUP_B_M7Bradley_USA_D", - "CUP_O_2S6_RU", - "CUP_O_BMP1_TKA" -]; - diff --git a/@GMS/addons/custom_server/Configs/blck_configs.sqf b/@GMS/addons/custom_server/Configs/blck_configs.sqf index 8eb80bb..3962068 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs.sqf @@ -115,7 +115,7 @@ // It's position can be either "center" or "random". smoking wreck will be spawned at a random location between 15 and 50 m from the mission. blck_SmokeAtMissions = [true,"random"]; // set to [false,"anything here"] to disable this function altogether. blck_useSignalEnd = true; // When true a smoke grenade/chemlight will appear at the loot crate for 2 min after mission completion. - blck_missionEndCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" + blck_missionEndCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" /////////////////////////////// // General Mission Completion and Loot Settings diff --git a/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf index 779c5d8..f8fe0b1 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_mil.sqf @@ -432,7 +432,7 @@ }; if (toLower(blck_modType) isEqualTo "default") then { - diag_log format[" Loading Mission System using Parameters for %1 for militarized servers",blck_modType]] call blck_fnc_log; + [format[" Loading Mission System using Parameters for %1 for militarized servers",blck_modType]] call blck_fnc_log; execVM "\q\addons\custom_server\Configs\blck_configs_default_mil.sqf"; }; //waitUntil{!isNil "blck_useConfigsGeneratedLoadouts"}; diff --git a/@GMS/addons/custom_server/Configs/blck_custom_config.sqf b/@GMS/addons/custom_server/Configs/blck_custom_config.sqf index 7569ce4..54f346c 100644 --- a/@GMS/addons/custom_server/Configs/blck_custom_config.sqf +++ b/@GMS/addons/custom_server/Configs/blck_custom_config.sqf @@ -1227,5 +1227,49 @@ diag_log format["[blckeagls] blck_CUPHeadgear = %1",if (isNil "blck_CUPHeadgear" diag_log "[blckeagls] end of Custom Configurations for RHS 5/2/20"; blck_customConfigsLoaded = 1; +if (blck_debugOn) then { +diag_log " HEY YOU ITS WORKING"; + blck_MinDistanceFromMission = 1000; + blck_minDistanceToBases = 1000; + blck_minDistanceToPlayer = 1000; + blck_minDistanceFromTowns = 500; + diag_log " HEY YOU porkid's settings were loaded"; + + blck_MissionTimeout = 3000; + + blck_maxSpawnedMissions = 15; + blck_mainThreadUpdateInterval = 10; + blck_enableOrangeMissions = 1; + blck_enableGreenMissions = 1; + blck_enableRedMissions = 1; + blck_enableBlueMissions = 1; + blck_numberUnderwaterDynamicMissions = 1; + blck_enableHunterMissions = 1; + blck_enableScoutsMissions = 1; + blck_maxCrashSites = 0; + diag_log " HEY YOU custom settings for enabling missions were loaded"; + + blck_TMin_Blue = 7; + blck_TMin_Red = 10; + blck_TMin_Green = 13; + blck_TMin_Orange = 16; + blck_TMin_Hunter = 20; + blck_TMin_Scouts = 20; + blck_TMin_Crashes = 5; + blck_TMin_UMS = 20; + //Maximum Spawn time between missions in seconds + blck_TMax_Blue = 12; + blck_TMax_Red = 15; + blck_TMax_Green = 17; + blck_TMax_Orange = 21; + blck_TMax_Hunter = 22; + blck_TMax_Scouts = 22; + blck_TMax_Crashes = 15; + blck_TMax_UMS = 25; + + diag_log "[blckeagls] Custom Configs Custom mission timers loaded" +}; + + diff --git a/@GMS/addons/custom_server/Configs/blck_defines.hpp b/@GMS/addons/custom_server/Configs/blck_defines.hpp index 7187be8..cc7624a 100644 --- a/@GMS/addons/custom_server/Configs/blck_defines.hpp +++ b/@GMS/addons/custom_server/Configs/blck_defines.hpp @@ -27,7 +27,7 @@ //#define blck_debugMode //#define blck_addCarParts #define blck_triggerLoopCompleteTime 40*60 - +#define max_distance_crate_moved_uncompleted_mission 120 #define onFoot 1 #define inVehicle 2 diff --git a/@GMS/addons/custom_server/Missions/Blue/IDAP.sqf b/@GMS/addons/custom_server/Missions/Blue/IDAP.sqf index 94c6e69..5c2c997 100644 --- a/@GMS/addons/custom_server/Missions/Blue/IDAP.sqf +++ b/@GMS/addons/custom_server/Missions/Blue/IDAP.sqf @@ -137,7 +137,7 @@ _loadCratesTiming = blck_loadCratesTiming; // valid choices are "atMissionComple // To spawn crates at mission start but load gear only after the mission is completed set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionCompletion" // To spawn crates on the ground at mission completion set blck_spawnCratesTiming = "atMissionEndGround" // Note that a loaded crate will be spawned. // To spawn crates in the air and drop them by chutes set blck_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned. -_endCondition = allKilledOrPlayerNear; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" // Setting this in the mission file overrides the defaults #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Blue/Service_point.sqf b/@GMS/addons/custom_server/Missions/Blue/Service_point.sqf index 7a2550f..1f2b377 100644 --- a/@GMS/addons/custom_server/Missions/Blue/Service_point.sqf +++ b/@GMS/addons/custom_server/Missions/Blue/Service_point.sqf @@ -75,7 +75,7 @@ _missionLandscape = [ ["B_Slingload_01_Repair_F",[-34.0637,-5.31909,-0.00143814],286.86,true,true], ["B_Slingload_01_Ammo_F",[-33.7891,1.13989,-0.00143719],1.26154,true,true], ["CargoNet_01_barrels_F",[-20.8491,-21.4822,-0.00143909],326.531,true,true], - ["Land_Pod_Heli_Transport_04_fuel_F",[-19.8706,2.42847,7.17512],360,true,true], + //["Land_Pod_Heli_Transport_04_fuel_F",[-19.5588,2.55005,7.17512],0,true,true], ["CargoNet_01_barrels_F",[-7.34326,5.33838,-0.00143862],36,true,true], ["B_Slingload_01_Cargo_F",[-28.2134,-3.27197,-0.00143862],347.458,true,true], ["B_Slingload_01_Ammo_F",[-1.96753,20.9294,-0.00143814],13.8038,true,true], @@ -156,7 +156,7 @@ _loadCratesTiming = blck_loadCratesTiming; // valid choices are "atMissionComple // To spawn crates at mission start but load gear only after the mission is completed set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionCompletion" // To spawn crates on the ground at mission completion set blck_spawnCratesTiming = "atMissionEndGround" // Note that a loaded crate will be spawned. // To spawn crates in the air and drop them by chutes set blck_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned. -_endCondition = allKilledOrPlayerNear; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" // Setting this in the mission file overrides the defaults #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Blue/Toxin.sqf b/@GMS/addons/custom_server/Missions/Blue/Toxin.sqf index 8c35c92..36e8d9c 100644 --- a/@GMS/addons/custom_server/Missions/Blue/Toxin.sqf +++ b/@GMS/addons/custom_server/Missions/Blue/Toxin.sqf @@ -160,7 +160,7 @@ _loadCratesTiming = blck_loadCratesTiming; // valid choices are "atMissionComple // To spawn crates at mission start but load gear only after the mission is completed set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionCompletion" // To spawn crates on the ground at mission completion set blck_spawnCratesTiming = "atMissionEndGround" // Note that a loaded crate will be spawned. // To spawn crates in the air and drop them by chutes set blck_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned. -_endCondition = allKilledOrPlayerNear; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" // Setting this in the mission file overrides the defaults #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Blue/default2.sqf b/@GMS/addons/custom_server/Missions/Blue/default2.sqf index 9c98f51..2d664a8 100644 --- a/@GMS/addons/custom_server/Missions/Blue/default2.sqf +++ b/@GMS/addons/custom_server/Missions/Blue/default2.sqf @@ -149,6 +149,6 @@ _noPara = blck_noParaBlue; // Setting this in the mission file overrides the de //_chanceHeliPatrol = blck_chanceHeliPatrolBlue; // Setting this in the mission file overrides the defaults _noChoppers = blck_noPatrolHelisBlue; _missionHelis = blck_patrolHelisBlue; -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Blue/derbunker.sqf b/@GMS/addons/custom_server/Missions/Blue/derbunker.sqf index 2f78e1b..5d9c184 100644 --- a/@GMS/addons/custom_server/Missions/Blue/derbunker.sqf +++ b/@GMS/addons/custom_server/Missions/Blue/derbunker.sqf @@ -64,7 +64,7 @@ _missionLandscape = [ ]; _missionLootBoxes = [ - //["Exile_Container_SupplyBox",[0.0446777,-1.31494,-0.001441],_crateLoot,_lootCounts,0.00167282] + [selectRandom blck_crateTypes,[0.0446777,-1.31494,-0.001441],_crateLoot,_lootCounts,0.00167282] ]; _missionLootVehicles = [ @@ -99,17 +99,17 @@ _noEmplacedWeapons = blck_SpawnEmplaced_Blue; //_uniforms = blck_SkinList; //_headgear = blck_headgear; -_chancePara = 0.75; // Setting this in the mission file overrides the defaults -_noPara = 5; // Setting this in the mission file overrides the defaults -_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. -_paraSkill = "Blue"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. +//_chancePara = 0.75; // Setting this in the mission file overrides the defaults +//_noPara = 5; // Setting this in the mission file overrides the defaults +//_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +//_paraSkill = "Blue"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. -_chanceLoot = 0.7; -private _lootIndex = selectRandom[1,2,3,4]; -private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; -private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; -_paraLoot = _paralootChoices select _lootIndex; -_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. +//_chanceLoot = 0.7; +//private _lootIndex = selectRandom[1,2,3,4]; +//private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +//private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +//_paraLoot = _paralootChoices select _lootIndex; +//_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. _endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; diff --git a/@GMS/addons/custom_server/Missions/Blue/forgotten_HQ.sqf b/@GMS/addons/custom_server/Missions/Blue/forgotten_HQ.sqf index 73c2431..b1119f0 100644 --- a/@GMS/addons/custom_server/Missions/Blue/forgotten_HQ.sqf +++ b/@GMS/addons/custom_server/Missions/Blue/forgotten_HQ.sqf @@ -22,7 +22,7 @@ _endMsg = "The Forgotten HQ at the Blue Marker is under survivor control!"; _markerLabel = ""; _markerType = ["ELLIPSE",[200,200],"Solid"]; _markerColor = "ColorBlue"; -_markerMissionName = "Forgotten"; +_markerMissionName = "Forgotten HQ"; _missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" ////////// @@ -202,7 +202,7 @@ _loadCratesTiming = blck_loadCratesTiming; // valid choices are "atMissionComple // To spawn crates at mission start but load gear only after the mission is completed set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionCompletion" // To spawn crates on the ground at mission completion set blck_spawnCratesTiming = "atMissionEndGround" // Note that a loaded crate will be spawned. // To spawn crates in the air and drop them by chutes set blck_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned. -_endCondition = allKilledOrPlayerNear; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" // Setting this in the mission file overrides the defaults #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Blue/inhaftierung.sqf b/@GMS/addons/custom_server/Missions/Blue/inhaftierung.sqf index 30609f8..7727a48 100644 --- a/@GMS/addons/custom_server/Missions/Blue/inhaftierung.sqf +++ b/@GMS/addons/custom_server/Missions/Blue/inhaftierung.sqf @@ -136,32 +136,18 @@ _enemyLeaderConfig set[ ]; // This allows us to place the antagonist to be arrested in one of several random locations. _missionLootBoxes = [ - //["Box_NATO_Wps_F",[3,-3,0],_crateLoot,[4,10,2,5,5,1]], // Standard loot crate with standard loadout - //["Land_PaperBox_C_EPOCH",[-4,-3,0],_crateLoot,[0,0,0,10,10,3]], // No Weapons, Magazines, or optics; 10 each construction supplies and food/drink items, 3 backpacks - //["Land_CargoBox_V1_F",[3,4,0],_crateLoot,[0,10,2,5,5,1]] + ]; // Parameters are "Box Item Code", array defining the loot to be spawned, and position. // blck_lootCountsBlue= [4,12,3,6,6,1]; _missionPatrolVehicles = [ - //["B_LSV_01_armed_F",[-41.377,-5.40894,-0.0238895],0.00171121], + ["B_LSV_01_armed_F",[-41.377,-5.40894,-0.0238895],0.00171121], ["B_LSV_01_armed_F",[39.5627,-5.26709,-0.0237107],0.00169144] ]; // Parameters are "vehiclel type", offset relative to mission center, loot array, items to load from each category of the loot array. - // ["B_HMG_01_high_F"/*,"B_GMG_01_high_F","O_static_AT_F"*/]; - - /* - ["B_G_Soldier_AR_F",[-19.5156,25.2598,-0.00143886],0,[true,false]], - ["B_G_Soldier_AR_F",[-27.7676,-24.5508,-0.00143886],0,[true,false]], - ["B_G_Soldier_AR_F",[32.4883,-23.4609,-0.00143886],0,[true,false]], - ["B_G_Soldier_AR_F",[36.6914,12.1836,-0.00143886],0,[true,false]] - */ -_missionEmplacedWeapons = []; // -_missionPatrolVehicles = [ - //["B_MRAP_01_hmg_F",[27.8945,100.275,0],0,[true,false]], - //["B_MRAP_01_hmg_F",[-84.7793,72.2617,9.53674e-007],0,[true,false]], - //["B_MRAP_01_gmg_F",[-87.8457,-109.947,7.15256e-007],0,[true,false]] -]; +_missionEmplacedWeapons = []; + // Change _useMines to true/false below to enable mission-specific settings. _useMines = blck_useMines; _minNoAI = blck_MinAI_Blue; diff --git a/@GMS/addons/custom_server/Missions/Blue/resupplyCamp.sqf b/@GMS/addons/custom_server/Missions/Blue/resupplyCamp.sqf index 1619e03..8364b6c 100644 --- a/@GMS/addons/custom_server/Missions/Blue/resupplyCamp.sqf +++ b/@GMS/addons/custom_server/Missions/Blue/resupplyCamp.sqf @@ -74,7 +74,7 @@ _noEmplacedWeapons = blck_SpawnEmplaced_Blue; // To spawn crates at mission start but load gear only after the mission is completed set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionCompletion" // To spawn crates on the ground at mission completion set blck_spawnCratesTiming = "atMissionEndGround" // Note that a loaded crate will be spawned. // To spawn crates in the air and drop them by chutes set blck_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned. -//_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" // Setting this in the mission file overrides the defaults //_timeOut = -1; diff --git a/@GMS/addons/custom_server/Missions/GMS_missionLists.sqf b/@GMS/addons/custom_server/Missions/GMS_missionLists.sqf index 5123d6f..c662f85 100644 --- a/@GMS/addons/custom_server/Missions/GMS_missionLists.sqf +++ b/@GMS/addons/custom_server/Missions/GMS_missionLists.sqf @@ -12,18 +12,93 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; - +private ["_missionListBlue","_missionListRed","_missionListGreen","_missionListOrange"]; private _pathBlue = "Blue"; -private _missionListBlue = ["default","hostage1","captive1","medicalCamp","redCamp","resupplyCamp","garrison"]; +if (blck_debugOn) then +{ + _missionListBlue = ["Toxin"]; +} else { + _missionListBlue = [ + "default", + "hostage1", + "captive1", + "medicalCamp", + "redCamp", + "resupplyCamp", + "derbunker", // OK + "forgotten_HQ", // OK + "IDAP", // OK + "Service_point", // OK + "Toxin" // OK + ]; +}; private _pathRed = "Red"; -private _missionListRed = ["default","redCamp","medicalCamp","resupplyCamp","carThieves"]; +if (blck_debugOn) then { +_missionListRed = ["tko_camp"]; +} else { + _missionListRed = [ + "default", + "redCamp", + "medicalCamp", + "resupplyCamp", + "carThieves", + "Ammunition_depot", // OK + "Camp_Moreell", // OK + "dashq", // OK + "derbunker", // OK + "factory", // OK + "lager", // OK + "Operations_Command", // OK + "Outpost", // OK + "tko_camp" // OK + ]; +}; + private _pathGreen = "Green"; -private _missionListGreen = ["default","medicalCamp","redCamp","resupplyCamp","banditVillage","charlston","factory","fortification","munitionsResearch"]; +if (blck_debugOn) then +{ + _missionListGreen = ["Operations_Command"]; +} else { + _missionListGreen = [ + "default", + "medicalCamp", + "redCamp", + "resupplyCamp", + "Camp_Moreell", // OK + "charlston", // OK + "dashq", // OK + "derbunker", // OK + "factory", // OK + "fortification", // OK + "lager", // OK + "munitionsResearch", // OK + "Operations_Command", // OK + "tko_camp" // OK + ]; +}; private _pathOrange = "Orange"; -private _missionListOrange = ["default","medicalCamp","redCamp","resupplyCamp","bunker","dashq","tko_camp"]; +if (blck_debugOn) then +{ + _missionListOrange = ["dashq"]; +} else { + _missionListOrange = [ + "default", + "medicalCamp", + "redCamp", + "resupplyCamp", + "Ammunition_depot", // OK + "Camp_Moreell", // OK + "dashq", // OK + "derbunker", // OK + "lager", // OK + "Operations_Command", + "Outpost", // OK + "tko_camp" // OK + ]; +}; private _pathUMS = "UMS\dynamicMissions"; private _missionListUMS = ["default"]; diff --git a/@GMS/addons/custom_server/Missions/Green/Camp_Moreell.sqf b/@GMS/addons/custom_server/Missions/Green/Camp_Moreell.sqf index 24acfb8..9d00850 100644 --- a/@GMS/addons/custom_server/Missions/Green/Camp_Moreell.sqf +++ b/@GMS/addons/custom_server/Missions/Green/Camp_Moreell.sqf @@ -104,6 +104,7 @@ _missionLandscape = [ ]; _missionLootBoxes = [ + [selectRandom blck_crateTypes,[9.8,9.8,0],_crateLoot,_lootCounts,0.000320471] ]; _missionLootVehicles = [ @@ -139,18 +140,18 @@ _noEmplacedWeapons = blck_SpawnEmplaced_Green; //_uniforms = blck_SkinList; //_headgear = blck_headgear; -_chancePara = 0.75; // Setting this in the mission file overrides the defaults -_noPara = 5; // Setting this in the mission file overrides the defaults -_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. -_paraSkill = "Green"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. +//_chancePara = 0.75; // Setting this in the mission file overrides the defaults +//_noPara = 5; // Setting this in the mission file overrides the defaults +//_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +//_paraSkill = "Green"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. -_chanceLoot = 0.7; -private _lootIndex = selectRandom[1,2,3,4]; -private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; -private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; -_paraLoot = _paralootChoices select _lootIndex; -_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. +//_chanceLoot = 0.7; +//private _lootIndex = selectRandom[1,2,3,4]; +//private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +//private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +//_paraLoot = _paralootChoices select _lootIndex; +//_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/Operations_Command.sqf b/@GMS/addons/custom_server/Missions/Green/Operations_Command.sqf index 3dac5e0..d65adb8 100644 --- a/@GMS/addons/custom_server/Missions/Green/Operations_Command.sqf +++ b/@GMS/addons/custom_server/Missions/Green/Operations_Command.sqf @@ -132,6 +132,7 @@ _missionLandscape = [ ]; _missionLootBoxes = [ + [selectRandom blck_crateTypes,[-22.2104,-10.704,0],_crateLoot,_lootCounts,0.000320471] ]; _missionLootVehicles = [ @@ -179,6 +180,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/banditVillage.sqf b/@GMS/addons/custom_server/Missions/Green/banditVillage.sqf index a4b8533..9d92a06 100644 --- a/@GMS/addons/custom_server/Missions/Green/banditVillage.sqf +++ b/@GMS/addons/custom_server/Missions/Green/banditVillage.sqf @@ -107,6 +107,6 @@ private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highP private _paralootCountsChoices = [[0,0,0,8,8,0],[0,0,0,8,8,0],[8,8,0,0,0,0],[0,0,0,0,12,0]]; _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -//_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +//_endCondition = // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/charlston.sqf b/@GMS/addons/custom_server/Missions/Green/charlston.sqf index ca25c6d..63d6c12 100644 --- a/@GMS/addons/custom_server/Missions/Green/charlston.sqf +++ b/@GMS/addons/custom_server/Missions/Green/charlston.sqf @@ -180,6 +180,6 @@ private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highP private _paralootCountsChoices = [[0,0,0,8,8,0],[0,0,0,8,8,0],[8,8,0,0,0,0],[0,0,0,0,12,0]]; _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/dashq.sqf b/@GMS/addons/custom_server/Missions/Green/dashq.sqf index 31c72ee..cfec33f 100644 --- a/@GMS/addons/custom_server/Missions/Green/dashq.sqf +++ b/@GMS/addons/custom_server/Missions/Green/dashq.sqf @@ -22,7 +22,7 @@ _endMsg = "The HQ at the Green Marker is under survivor control!"; _markerLabel = ""; _markerType = ["ELLIPSE",[300,300],"Solid"]; _markerColor = "ColorGreen"; -_markerMissionName = "Operationsbasis"; +_markerMissionName = "Operations Base"; _missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" ////////// @@ -179,14 +179,14 @@ _missionLandscape = [ ]; _missionLootBoxes = [ - //["Exile_Container_SupplyBox",[0.0717773,16.9431,-0.00143814],_crateLoot,_lootCounts,0.000320471] + [selectRandom blck_crateTypes,[0.0717773,16.9431,-0.00143814],_crateLoot,_lootCounts,0.000320471] ]; _missionLootVehicles = [ ]; _missionPatrolVehicles = [ - //["O_T_LSV_02_armed_F",[-62.7971,0.422119,-0.0236669],0.00164848], + ["O_T_LSV_02_armed_F",[-62.7971,0.422119,-0.0236669],0.00164848], ["O_T_LSV_02_armed_F",[31.9084,-7.18774,-0.0238085],0.00168349] ]; @@ -225,6 +225,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/derbunker.sqf b/@GMS/addons/custom_server/Missions/Green/derbunker.sqf index 87ac02e..3a8a403 100644 --- a/@GMS/addons/custom_server/Missions/Green/derbunker.sqf +++ b/@GMS/addons/custom_server/Missions/Green/derbunker.sqf @@ -68,7 +68,7 @@ _missionLandscape = [ ]; _missionLootBoxes = [ - //["Exile_Container_SupplyBox",[0.0446777,-1.31494,-0.001441],_crateLoot,_lootCounts,0.00167282] + [selectRandom blck_crateTypes,[0.0446777,-1.31494,-0.001441],_crateLoot,_lootCounts,0.00167282] ]; _missionLootVehicles = [ @@ -115,6 +115,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/factory.sqf b/@GMS/addons/custom_server/Missions/Green/factory.sqf index 671e439..2f431f3 100644 --- a/@GMS/addons/custom_server/Missions/Green/factory.sqf +++ b/@GMS/addons/custom_server/Missions/Green/factory.sqf @@ -95,7 +95,9 @@ _missionLandscape = [ ["Land_dp_smallTank_F",[9.81934,-69.9482,0],0,true,true] ]; -_missionLootBoxes = []; +_missionLootBoxes = [ + [selectRandom blck_crateTypes,[0.337891,-44.,0],_crateLoot,_lootCounts,0.000320471] +]; _missionLootVehicles = []; @@ -138,6 +140,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/fortification.sqf b/@GMS/addons/custom_server/Missions/Green/fortification.sqf index 9e60f35..60f162a 100644 --- a/@GMS/addons/custom_server/Missions/Green/fortification.sqf +++ b/@GMS/addons/custom_server/Missions/Green/fortification.sqf @@ -183,6 +183,6 @@ private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highP private _paralootCountsChoices = [[0,0,0,8,8,0],[0,0,0,8,8,0],[8,8,0,0,0,0],[0,0,0,0,12,0]]; _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/lager.sqf b/@GMS/addons/custom_server/Missions/Green/lager.sqf index 58c5102..dc68f3d 100644 --- a/@GMS/addons/custom_server/Missions/Green/lager.sqf +++ b/@GMS/addons/custom_server/Missions/Green/lager.sqf @@ -132,7 +132,7 @@ _missionLandscape = [ ]; _missionLootBoxes = [ - //["Exile_Container_SupplyBox",[-2.28174,0.128662,-0.00143862],_crateLoot,_lootCounts,0.000181514] + [selectRandom blck_crateTypes,[-2.28174,0.128662,-0.00143862],_crateLoot,_lootCounts,0.000181514] ]; _missionLootVehicles = [ @@ -180,6 +180,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/munitionsResearch.sqf b/@GMS/addons/custom_server/Missions/Green/munitionsResearch.sqf index 652c8c7..f0bcd3c 100644 --- a/@GMS/addons/custom_server/Missions/Green/munitionsResearch.sqf +++ b/@GMS/addons/custom_server/Missions/Green/munitionsResearch.sqf @@ -98,6 +98,6 @@ private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highP private _paralootCountsChoices = [[0,0,0,8,8,0],[0,0,0,8,8,0],[8,8,0,0,0,0],[0,0,0,0,12,0]]; _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Green/tko_camp.sqf b/@GMS/addons/custom_server/Missions/Green/tko_camp.sqf index 5c4e688..7a86deb 100644 --- a/@GMS/addons/custom_server/Missions/Green/tko_camp.sqf +++ b/@GMS/addons/custom_server/Missions/Green/tko_camp.sqf @@ -122,14 +122,14 @@ _missionLandscape = [ ]; _missionLootBoxes = [ - //["Exile_Container_SupplyBox",[1.55273,0.0065918,-0.00143957],_crateLoot,_lootCounts,0.000522983] + [selectRandom blck_crateTypes,[1.55273,0.0065918,-0.00143957],_crateLoot,_lootCounts,0.000522983] ]; _missionLootVehicles = [ ]; _missionPatrolVehicles = [ - //["B_LSV_01_armed_F",[-41.377,-5.40894,-0.0238895],0.00171121], + ["B_LSV_01_armed_F",[-41.377,-5.40894,-0.0238895],0.00171121], ["B_LSV_01_armed_F",[39.5627,-5.26709,-0.0237107],0.00169144] ]; @@ -169,6 +169,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Orange/Ammunition_depot.sqf b/@GMS/addons/custom_server/Missions/Orange/Ammunition_depot.sqf index 09fd845..50b83f8 100644 --- a/@GMS/addons/custom_server/Missions/Orange/Ammunition_depot.sqf +++ b/@GMS/addons/custom_server/Missions/Orange/Ammunition_depot.sqf @@ -168,6 +168,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Orange/Camp_Moreell.sqf b/@GMS/addons/custom_server/Missions/Orange/Camp_Moreell.sqf index 800c7b8..aba0098 100644 --- a/@GMS/addons/custom_server/Missions/Orange/Camp_Moreell.sqf +++ b/@GMS/addons/custom_server/Missions/Orange/Camp_Moreell.sqf @@ -104,6 +104,7 @@ _missionLandscape = [ ]; _missionLootBoxes = [ + [selectRandom blck_crateTypes,[9.8,9.8,0],_crateLoot,_lootCounts,0.000320471] ]; _missionLootVehicles = [ @@ -151,6 +152,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Orange/Operations_Command.sqf b/@GMS/addons/custom_server/Missions/Orange/Operations_Command.sqf index 4eaf7f1..181243a 100644 --- a/@GMS/addons/custom_server/Missions/Orange/Operations_Command.sqf +++ b/@GMS/addons/custom_server/Missions/Orange/Operations_Command.sqf @@ -132,6 +132,7 @@ _missionLandscape = [ ]; _missionLootBoxes = [ + [selectRandom blck_crateTypes,[-22.2104,-10.704,0],_crateLoot,_lootCounts,0.000320471] ]; _missionLootVehicles = [ @@ -179,6 +180,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Orange/Outpost.sqf b/@GMS/addons/custom_server/Missions/Orange/Outpost.sqf index a426830..f7eb8a0 100644 --- a/@GMS/addons/custom_server/Missions/Orange/Outpost.sqf +++ b/@GMS/addons/custom_server/Missions/Orange/Outpost.sqf @@ -104,6 +104,7 @@ _missionLandscape = [ ]; _missionLootBoxes = [ + [selectRandom blck_crateTypes,[-9.93359,-5.85596,0],_crateLoot,_lootCounts,0.000320471] ]; _missionLootVehicles = [ @@ -149,6 +150,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Orange/bunker.sqf b/@GMS/addons/custom_server/Missions/Orange/bunker.sqf deleted file mode 100644 index 52fac20..0000000 --- a/@GMS/addons/custom_server/Missions/Orange/bunker.sqf +++ /dev/null @@ -1,121 +0,0 @@ -/* - Mission Template by Ghostrider [GRG] - Mission Compositions by Bill prepared for ghostridergaming - Copyright 2016 - Last modified 3/20/17 - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; -#include "\q\addons\custom_server\Missions\privateVars.sqf"; - -//diag_log "[blckeagls] Spawning Orange Mission with template = default"; -_crateLoot = blck_BoxLoot_Orange; -_lootCounts = blck_lootCountsOrange; -_startMsg = "An Operations Command was sighted in a nearby sector! Check the Orange marker on your map for the location!"; -_endMsg = "The Operations Command at the Orange Marker is under survivor control!"; -_markerLabel = ""; -_markerType = ["ellipse",[300,300],"Solid"]; -_markerColor = "ColorBlack"; -_markerMissionName = " Bunker"; -_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" - -////////// -// Past the output of the script here -_garrisonedBuildings_BuildingPosnSystem = [ -]; - -_garrisonedBuilding_ATLsystem = [ - ["Land_Bunker_01_big_F",[-19.0896,9.22754,0.760561],90.071,true,true,[["O_HMG_01_high_F",[-1.09302,-0.0102539,3.2837],0.00152979],["O_HMG_01_high_F",[-5.45947,-3.38574,0.109706],359.994],["O_HMG_01_high_F",[-0.41333,-10.5659,-0.774119],360],["O_HMG_01_high_F",[-0.826416,11.6274,-0.774119],0.00143682],["O_HMG_01_high_F",[11.355,-8.68066,-0.774117],0.000274398]],[]], - ["Land_Bunker_01_tall_F",[-18.5415,-8.59961,-0.00143909],90.071,true,true,[["O_HMG_01_high_F",[5.50562,-2.54395,-0.0121188],359.999],["O_HMG_01_high_F",[-1.72095,-0.109375,4.96893],359.998],["O_HMG_01_high_F",[11.7644,-6.72168,-0.0121179],0.000580947]],[]], - ["Land_Bunker_01_tall_F",[-18.9246,28.8105,-0.00143909],90.071,true,true,[["O_HMG_01_high_F",[5.47437,2.47559,-0.0121174],0.000287307],["O_HMG_01_high_F",[-1.38867,-0.0722656,4.967],359.999],["O_HMG_01_high_F",[10.5693,2.00635,-0.0121202],0.00145235],["O_HMG_01_high_F",[11.8271,5.87988,-0.0121174],0.000287344]],[]], - ["Land_Bunker_01_big_F",[17.0344,10.9336,0.760561],270.416,true,true,[["O_HMG_01_high_F",[0.966064,0.202148,3.2837],0.000261147],["O_HMG_01_high_F",[5.86353,3.25586,0.109696],0.000366296],["O_HMG_01_high_F",[-0.366211,10.3037,-0.774117],0.000287276],["O_HMG_01_high_F",[0.436768,-11.6377,-0.774117],0.000287533],["O_HMG_01_high_F",[-11.8674,-9.59229,-0.774119],359.999]],[]], - ["Land_Bunker_01_tall_F",[16.7253,-8.66455,-0.00143909],270.416,true,true,[["O_HMG_01_high_F",[-5.13818,-2.33496,-0.0121202],0.00145227],["O_HMG_01_high_F",[1.45801,0.0512695,4.96698],360],["O_HMG_01_high_F",[-10.4924,-6.61719,-0.0121179],0.000581377]],[]], - ["Land_Bunker_01_tall_F",[16.5664,28.7466,-0.00143909],270.416,true,true,[["O_HMG_01_high_F",[-5.00977,2.1792,-0.0121174],0.000287538],["O_HMG_01_high_F",[1.80957,0.26709,4.96756],0.000969946],["O_HMG_01_high_F",[-10.7739,2.07715,-0.0121174],0.000287469],["O_HMG_01_high_F",[-12.0127,6.1333,-0.0121188],360]],[]] -]; - - - -_missionLandscape = [ - //["Sign_Arrow_F",[-3166.38,-5166.64,-0.00143909],0,true,true], - //["Sign_Arrow_Green_F",[-3166.38,-5166.64,-0.00143909],0,true,true], - //["Sign_Arrow_Yellow_F",[-3166.38,-5166.64,-0.00143909],0,true,true], - ["babe_helper",[-3168.88,-5166.14,-0.00143909],87.9418,true,true], - ["Land_Bunker_01_blocks_3_F",[-16.9785,-4.23682,-0.00143909],270.35,true,true], - ["Land_Bunker_01_blocks_3_F",[-8.35254,-12.7046,-0.00143909],179.955,true,true], - ["Land_Bunker_01_blocks_3_F",[-3.26245,-12.6987,-0.00143909],179.955,true,true], - ["Land_Bunker_01_blocks_3_F",[-13.3396,-12.7207,-0.502439],179.955,true,true], - ["Land_Bunker_01_blocks_3_F",[-16.9604,0.749512,-0.00143909],270.35,true,true], - ["Land_Bunker_01_blocks_3_F",[-16.9265,17.7563,-0.00143909],270.35,true,true], - ["CamoNet_INDP_big_F",[-0.926514,-2.50049,-0.00143909],182.545,true,true], - ["Land_Bunker_01_blocks_3_F",[-8.79468,32.8765,-0.00143909],0.106,true,true], - ["Land_Bunker_01_blocks_3_F",[-13.7825,32.8735,-0.432439],0.106,true,true], - ["Land_Bunker_01_blocks_3_F",[-5.68066,30.3096,-0.00143909],90.192,true,true], - ["Land_Bunker_01_blocks_3_F",[-16.9097,22.7437,-0.00143909],270.35,true,true], - ["Land_Bunker_01_blocks_3_F",[1.72437,-12.6807,-0.00143909],179.955,true,true], - ["Land_Bunker_01_blocks_3_F",[14.7463,-2.58447,-0.00143909],90.695,true,true], - ["Land_Bunker_01_blocks_3_F",[6.82544,-12.6665,-0.00143909],179.955,true,true], - ["Land_Bunker_01_blocks_3_F",[14.7935,2.40039,-0.00143909],90.695,true,true], - ["Land_Bunker_01_blocks_3_F",[11.8125,-12.6494,-0.529439],179.955,true,true], - ["Land_Bunker_01_blocks_3_F",[3.42236,30.3735,-0.00143909],269.774,true,true], - ["Land_Bunker_01_blocks_3_F",[14.9304,19.4072,-0.00143909],90.695,true,true], - ["Land_Bunker_01_blocks_3_F",[6.38452,32.8735,-0.00143909],0.106,true,true], - ["Land_Bunker_01_blocks_3_F",[14.9763,24.3936,-0.00143909],90.695,true,true], - ["Land_Bunker_01_blocks_3_F",[11.3713,32.8774,-0.363439],0.106,true,true] -]; - -_missionLootBoxes = [ -]; - -_missionLootVehicles = [ -]; - -_missionPatrolVehicles = [ - ["O_LSV_02_armed_F",[-40.6245,8.75732,-0.0378561],359.999], - ["O_LSV_02_unarmed_F",[35.2053,8.41943,-0.0378113],359.999] -]; - -_submarinePatrolParameters = [ -]; - -_airPatrols = [ -]; - -_missionEmplacedWeapons = []; // - - - -////////// -// The lines below define additional variables you may wish to configure. - - -// Change _useMines to true/false below to enable mission-specific settings. -_useMines = blck_useMines; -_minNoAI = blck_MinAI_Orange; -_maxNoAI = blck_MaxAI_Orange; -_noAIGroups = blck_AIGrps_Orange; -_noVehiclePatrols = blck_SpawnVeh_Orange; -_noEmplacedWeapons = blck_SpawnEmplaced_Orange; -//_uniforms = blck_SkinList; -//_headgear = blck_headgear; - -_chancePara = 0.75; // Setting this in the mission file overrides the defaults -_noPara = 5; // Setting this in the mission file overrides the defaults -_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. -_paraSkill = "Red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. - -_chanceLoot = 0.7; -private _lootIndex = selectRandom[1,2,3,4]; -private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; -private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; -_paraLoot = _paralootChoices select _lootIndex; -_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. - -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" -//_timeOut = -1; -#include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Orange/dashq.sqf b/@GMS/addons/custom_server/Missions/Orange/dashq.sqf index ce2d371..fcd8d5d 100644 --- a/@GMS/addons/custom_server/Missions/Orange/dashq.sqf +++ b/@GMS/addons/custom_server/Missions/Orange/dashq.sqf @@ -22,7 +22,7 @@ _endMsg = "The HQ at the Orange Marker is under survivor control!"; _markerLabel = ""; _markerType = ["ELLIPSE",[300,300],"Solid"]; _markerColor = "ColorOrange"; -_markerMissionName = "Operationsbasis"; +_markerMissionName = "Operations Base"; _missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" ////////// @@ -179,7 +179,7 @@ _missionLandscape = [ ]; _missionLootBoxes = [ - //["Exile_Container_SupplyBox",[0.0717773,16.9431,-0.00143814],_crateLoot,_lootCounts,0.000320471] + [selectRandom blck_crateTypes,[0.0717773,16.9431,-0.00143814],_crateLoot,_lootCounts,0.000320471] ]; _missionLootVehicles = [ @@ -226,6 +226,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; \ No newline at end of file diff --git a/@GMS/addons/custom_server/Missions/Orange/derbunker.sqf b/@GMS/addons/custom_server/Missions/Orange/derbunker.sqf index eb51178..4b9f76a 100644 --- a/@GMS/addons/custom_server/Missions/Orange/derbunker.sqf +++ b/@GMS/addons/custom_server/Missions/Orange/derbunker.sqf @@ -68,7 +68,7 @@ _missionLandscape = [ ]; _missionLootBoxes = [ - //["Exile_Container_SupplyBox",[0.0446777,-1.31494,-0.001441],_crateLoot,_lootCounts,0.00167282] + [selectRandom blck_crateTypes,[0.0446777,-1.31494,-0.001441],_crateLoot,_lootCounts,0.00167282] ]; _missionLootVehicles = [ @@ -115,6 +115,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Orange/lager.sqf b/@GMS/addons/custom_server/Missions/Orange/lager.sqf index 5799cb2..5728569 100644 --- a/@GMS/addons/custom_server/Missions/Orange/lager.sqf +++ b/@GMS/addons/custom_server/Missions/Orange/lager.sqf @@ -132,7 +132,7 @@ _missionLandscape = [ ]; _missionLootBoxes = [ - //["Exile_Container_SupplyBox",[-2.28174,0.128662,-0.00143862],_crateLoot,_lootCounts,0.000181514] + [selectRandom blck_crateTypes,[-2.28174,0.128662,-0.00143862],_crateLoot,_lootCounts,0.000181514] ]; _missionLootVehicles = [ @@ -180,6 +180,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Orange/tko_camp.sqf b/@GMS/addons/custom_server/Missions/Orange/tko_camp.sqf index ed2488d..a0561eb 100644 --- a/@GMS/addons/custom_server/Missions/Orange/tko_camp.sqf +++ b/@GMS/addons/custom_server/Missions/Orange/tko_camp.sqf @@ -122,7 +122,7 @@ _missionLandscape = [ ]; _missionLootBoxes = [ - //["Exile_Container_SupplyBox",[1.55273,0.0065918,-0.00143957],_crateLoot,_lootCounts,0.000522983] + [selectRandom blck_crateTypes,[1.55273,0.0065918,-0.00143957],_crateLoot,_lootCounts,0.000522983] ]; _missionLootVehicles = [ @@ -169,6 +169,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/Ammunition_depot.sqf b/@GMS/addons/custom_server/Missions/Red/Ammunition_depot.sqf index 4098cc0..6fe6711 100644 --- a/@GMS/addons/custom_server/Missions/Red/Ammunition_depot.sqf +++ b/@GMS/addons/custom_server/Missions/Red/Ammunition_depot.sqf @@ -156,18 +156,18 @@ _noEmplacedWeapons = blck_SpawnEmplaced_Red; //_uniforms = blck_SkinList; //_headgear = blck_headgear; -_chancePara = 0.75; // Setting this in the mission file overrides the defaults -_noPara = 5; // Setting this in the mission file overrides the defaults -_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. -_paraSkill = "Red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. +//_chancePara = 0.75; // Setting this in the mission file overrides the defaults +//_noPara = 5; // Setting this in the mission file overrides the defaults +//_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. +//_paraSkill = "Red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. -_chanceLoot = 0.7; -private _lootIndex = selectRandom[1,2,3,4]; -private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; -private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; -_paraLoot = _paralootChoices select _lootIndex; -_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. +//_chanceLoot = 0.7; +//private _lootIndex = selectRandom[1,2,3,4]; +//private _paralootChoices = [blck_contructionLoot,blck_contructionLoot,blck_highPoweredLoot,blck_supportLoot]; +//private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0],[0,0,0,0,15,0]]; +//_paraLoot = _paralootChoices select _lootIndex; +//_paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/Camp_Moreell.sqf b/@GMS/addons/custom_server/Missions/Red/Camp_Moreell.sqf index 1056112..3377100 100644 --- a/@GMS/addons/custom_server/Missions/Red/Camp_Moreell.sqf +++ b/@GMS/addons/custom_server/Missions/Red/Camp_Moreell.sqf @@ -104,6 +104,7 @@ _missionLandscape = [ ]; _missionLootBoxes = [ + [selectRandom blck_crateTypes,[9.8,9.8,0],_crateLoot,_lootCounts,0.000320471] ]; _missionLootVehicles = [ @@ -151,6 +152,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/Operations_Command.sqf b/@GMS/addons/custom_server/Missions/Red/Operations_Command.sqf index a6d00ea..642d49a 100644 --- a/@GMS/addons/custom_server/Missions/Red/Operations_Command.sqf +++ b/@GMS/addons/custom_server/Missions/Red/Operations_Command.sqf @@ -132,6 +132,7 @@ _missionLandscape = [ ]; _missionLootBoxes = [ + [selectRandom blck_crateTypes,[-22.2104,-10.704,0],_crateLoot,_lootCounts,0.000320471] ]; _missionLootVehicles = [ @@ -179,6 +180,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/Outpost.sqf b/@GMS/addons/custom_server/Missions/Red/Outpost.sqf index b8a03e6..790b25d 100644 --- a/@GMS/addons/custom_server/Missions/Red/Outpost.sqf +++ b/@GMS/addons/custom_server/Missions/Red/Outpost.sqf @@ -104,6 +104,7 @@ _missionLandscape = [ ]; _missionLootBoxes = [ + [selectRandom blck_crateTypes,[-9.93359,-5.85596,0],_crateLoot,_lootCounts,0.000320471] ]; _missionLootVehicles = [ @@ -149,6 +150,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/carThieves.sqf b/@GMS/addons/custom_server/Missions/Red/carThieves.sqf index f8b69c7..567f439 100644 --- a/@GMS/addons/custom_server/Missions/Red/carThieves.sqf +++ b/@GMS/addons/custom_server/Missions/Red/carThieves.sqf @@ -69,6 +69,6 @@ _backpacs = blck_CUPBackpacks; _headgear = blck_CUPHeadgear; #endif -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/dashq.sqf b/@GMS/addons/custom_server/Missions/Red/dashq.sqf index fd02f47..2b0ddfe 100644 --- a/@GMS/addons/custom_server/Missions/Red/dashq.sqf +++ b/@GMS/addons/custom_server/Missions/Red/dashq.sqf @@ -22,7 +22,7 @@ _endMsg = "The HQ at the Red Marker is under survivor control!"; _markerLabel = ""; _markerType = ["ELLIPSE",[300,300],"Solid"]; _markerColor = "ColorRed"; -_markerMissionName = "Operationsbasis"; +_markerMissionName = "Operations Base"; _missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" ////////// @@ -179,14 +179,14 @@ _missionLandscape = [ ]; _missionLootBoxes = [ - //["Exile_Container_SupplyBox",[0.0717773,16.9431,-0.00143814],_crateLoot,_lootCounts,0.000320471] + [selectRandom blck_crateTypes,[0.0717773,16.9431,-0.00143814],_crateLoot,_lootCounts,0.000320471] ]; _missionLootVehicles = [ ]; _missionPatrolVehicles = [ - //["O_T_LSV_02_armed_F",[-62.7971,0.422119,-0.0236669],0.00164848], + ["O_T_LSV_02_armed_F",[-62.7971,0.422119,-0.0236669],0.00164848], ["O_T_LSV_02_armed_F",[31.9084,-7.18774,-0.0238085],0.00168349] ]; @@ -226,6 +226,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/derbunker.sqf b/@GMS/addons/custom_server/Missions/Red/derbunker.sqf index 7f24242..2b47374 100644 --- a/@GMS/addons/custom_server/Missions/Red/derbunker.sqf +++ b/@GMS/addons/custom_server/Missions/Red/derbunker.sqf @@ -68,7 +68,7 @@ _missionLandscape = [ ]; _missionLootBoxes = [ - //["Exile_Container_SupplyBox",[0.0446777,-1.31494,-0.001441],_crateLoot,_lootCounts,0.00167282] + [selectRandom blck_crateTypes,[0.0446777,-1.31494,-0.001441],_crateLoot,_lootCounts,0.00167282] ]; _missionLootVehicles = [ @@ -115,6 +115,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/factory.sqf b/@GMS/addons/custom_server/Missions/Red/factory.sqf index 9e74a87..6449cd1 100644 --- a/@GMS/addons/custom_server/Missions/Red/factory.sqf +++ b/@GMS/addons/custom_server/Missions/Red/factory.sqf @@ -97,6 +97,7 @@ _missionLandscape = [ ]; _missionLootBoxes = [ + [selectRandom blck_crateTypes,[0.337891,-44.,0],_crateLoot,_lootCounts,0.000320471] ]; _missionLootVehicles = [ @@ -143,6 +144,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/junkyardWilly.sqf b/@GMS/addons/custom_server/Missions/Red/junkyardWilly.sqf index 93f662c..5b48eda 100644 --- a/@GMS/addons/custom_server/Missions/Red/junkyardWilly.sqf +++ b/@GMS/addons/custom_server/Missions/Red/junkyardWilly.sqf @@ -54,6 +54,6 @@ _headgear = blck_CUPHeadgear; _weaponList = _weaponList + + blck_NIA_WeaponsSniper; #endif -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/lager.sqf b/@GMS/addons/custom_server/Missions/Red/lager.sqf index b43bdc5..bf1ca51 100644 --- a/@GMS/addons/custom_server/Missions/Red/lager.sqf +++ b/@GMS/addons/custom_server/Missions/Red/lager.sqf @@ -132,7 +132,7 @@ _missionLandscape = [ ]; _missionLootBoxes = [ - //["Exile_Container_SupplyBox",[-2.28174,0.128662,-0.00143862],_crateLoot,_lootCounts,0.000181514] + [selectRandom blck_crateTypes,[-2.28174,0.128662,-0.00143862],_crateLoot,_lootCounts,0.000181514] ]; _missionLootVehicles = [ @@ -180,6 +180,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Red/tko_camp.sqf b/@GMS/addons/custom_server/Missions/Red/tko_camp.sqf index c211921..f71feaf 100644 --- a/@GMS/addons/custom_server/Missions/Red/tko_camp.sqf +++ b/@GMS/addons/custom_server/Missions/Red/tko_camp.sqf @@ -122,14 +122,14 @@ _missionLandscape = [ ]; _missionLootBoxes = [ - //["Exile_Container_SupplyBox",[1.55273,0.0065918,-0.00143957],_crateLoot,_lootCounts,0.000522983] + [selectRandom blck_crateTypes,[1.55273,0.0065918,-0.00143957],_crateLoot,_lootCounts,0.000522983] ]; _missionLootVehicles = [ ]; _missionPatrolVehicles = [ - //["B_LSV_01_armed_F",[-41.377,-5.40894,-0.0238895],0.00171121], + ["B_LSV_01_armed_F",[-41.377,-5.40894,-0.0238895],0.00171121], ["B_LSV_01_armed_F",[39.5627,-5.26709,-0.0237107],0.00169144] ]; @@ -169,6 +169,6 @@ private _paralootCountsChoices = [[0,0,0,10,10,0],[0,0,0,10,10,0],[10,10,0,0,0,0 _paraLoot = _paralootChoices select _lootIndex; _paraLootCounts = _paralootCountsChoices select _lootIndex; // Throw in something more exotic than found at a normal blue mission. -_endCondition = "allKilledOrPlayerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" +_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" //_timeOut = -1; #include "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionSpawner.sqf"; diff --git a/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_initializeMission.sqf b/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_initializeMission.sqf index a9875a1..f9bd0a7 100644 --- a/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_initializeMission.sqf +++ b/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_initializeMission.sqf @@ -84,8 +84,8 @@ _blck_localMissionMarker set [3,blck_labelMapMarkers select 1]; // Use an arrow uiSleep 30; // spawn loot chests -[_missionLootBoxes,_missionCenter] call blck_fnc_sm_spawnLootContainers; -[_missionLootVehicles,_missionCenter] call blck_fnc_sm_spawnLootVehicles; +[_missionLootBoxes,_missionCenter,_crateMoney] call blck_fnc_sm_spawnLootContainers; +[_missionLootVehicles,_missionCenter,_crateMoney] call blck_fnc_sm_spawnLootVehicles; diag_log format["[blckeagls] Static Mission Spawner: Mission %1 spawned",_mission]; diff --git a/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_initializeVariables.sqf b/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_initializeVariables.sqf new file mode 100644 index 0000000..a082f91 --- /dev/null +++ b/@GMS/addons/custom_server/Missions/Static/Code/GMS_fnc_sm_initializeVariables.sqf @@ -0,0 +1,89 @@ +/* + by Ghostrider [GRG] + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +params["_mission"]; +// Spawn landscape +// params["_objects"]; +if (isNil "_markerColor") then {_markerColor = "ColorBlack"}; +if (isNil "_markerType") then {_markerType = ["mil_box",[]]}; +if (isNil "_missionLandscape") then {_missionLandscape = []}; +if (isNil "_garrisonedBuilding_ASLsystem") then { + //diag_log "_fnc_sm_initializeMission: _garrisonedBuilding_ASLsystem set to []"; + _garrisonedBuilding_ASLsystem = []; + }; +if (isNil "_garrisonedBuildings_BuildingPosnSystem") then { + //diag_log "_fnc_sm_initializeMission: _garrisonedBuildings_BuildingPosnSystem set to []"; + _garrisonedBuildings_BuildingPosnSystem = []; + }; +if (isNil "_airPatrols") then {_airPatrols = []}; +if (isNil "_aiGroupParameters") then {_aiGroupParameters = []}; +if (isNil "_missionEmplacedWeapons") then {_missionEmplacedWeapons = []}; +if (isNil "_vehiclePatrolParameters") then {_vehiclePatrolParameters = []}; +if (isNil "_missionLootVehicles") then {_missionLootVehicles = []}; + +_markerClass = format["static%1",floor(random(1000000))]; +_blck_localMissionMarker = [_markerClass,_missionCenter,"","",_markerColor,_markerType]; +if (blck_labelMapMarkers select 0) then +{ + _blck_localMissionMarker set [2, _markerMissionName]; +}; +if !(blck_preciseMapMarkers) then +{ + _blck_localMissionMarker set [1,[_missionCenter,75] call blck_fnc_randomPosition]; +}; +_blck_localMissionMarker set [3,blck_labelMapMarkers select 1]; // Use an arrow labeled with the mission name? +[_blck_localMissionMarker] call blck_fnc_spawnMarker; + +[_missionLandscape] call blck_fnc_sm_spawnObjects; + +{ + //diag_log format["processing _garrisonedBuilding_ASL %1 which = %2",_forEachIndex,_x]; + // ["Land_i_House_Big_02_V2_F",[23650.3,18331.9,3.19],[[0,1,0],[0,0,1]],[true,true],"Red", + _x params["_buildingClassName","_buildingPosnASL","_buildingVectorDirUp","_buildingDamSim","_aiDifficulty","_staticsASL","_unitsASL","_respawnTimer","_noRespawns"]; + private _building = [_buildingClassName,_buildingPosnASL,_buildingVectorDirUp,_buildingDamSim] call blck_fnc_sm_spawnObjectASLVectorDirUp; + [blck_sm_garrisonBuildings_ASL,[_building,_aiDifficulty,_staticsASL,_unitsASL,_respawnTimer,_noRespawns]] call blck_fnc_sm_AddGroupToArray; + //diag_log format["_fnc_sm_initializeMission: blck_sm_garrisonBuildings_ASL updated to: %1",blck_sm_garrisonBuildings_ASL]; +}forEach _garrisonedBuilding_ASLsystem; + +// blcl_sm_garrisonBuilding_relPos +{ + //diag_log format["processing _garrisonedBuilding_relPos %1 which = %2",_forEachIndex,_x]; + _x params["_buildingClassName","_buildingPosnASL","_buildingVectorDirUp","_buildingDamSim","_aiDifficulty","_p","_noStatics","_typesStatics","_noUnits","_respawnTimer","_noRespawns"]; + private _building = [_buildingClassName,_buildingPosnASL,_buildingVectorDirUp,_buildingDamSim] call blck_fnc_sm_spawnObjectASLVectorDirUp; + [blcl_sm_garrisonBuilding_relPos,[_building,_aiDifficulty,_noStatics,_typesStatics,_noUnits,_respawnTimer,_noRespawns]] call blck_fnc_sm_AddGroupToArray; + //diag_log format["_fnc_sm_initializeMission: blcl_sm_garrisonBuilding_relPos updated to: %1",blcl_sm_garrisonBuilding_relPos]; +}forEach _garrisonedBuildings_BuildingPosnSystem; + +{ + [blck_sm_Aircraft,_x] call blck_fnc_sm_AddGroupToArray; + +}forEach _airPatrols; +//uiSleep 1; + +{ + [blck_sm_Infantry,_x] call blck_fnc_sm_AddGroupToArray; +}forEach _aiGroupParameters; + +{ + [blck_sm_Emplaced,_x] call blck_fnc_sm_AddGroupToArray; +}forEach _missionEmplacedWeapons; + +{ + [blck_sm_Vehicles,_x] call blck_fnc_sm_AddGroupToArray; +}forEach _vehiclePatrolParameters; + +uiSleep 30; +// spawn loot chests +[_missionLootBoxes,_missionCenter] call blck_fnc_sm_spawnLootContainers; +[_missionLootVehicles,_missionCenter] call blck_fnc_sm_spawnLootVehicles; + +[format["Static Mission Spawner: Mission %1 spawned",_mission]] call blck_fnc_log; + diff --git a/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf b/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf index 068ce9b..df01fd6 100644 --- a/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf +++ b/@GMS/addons/custom_server/Missions/Static/GMS_StaticMissions_init.sqf @@ -36,5 +36,5 @@ blck_sm_patrolRespawnInterval = 600; }; }; }forEach _staticMissions; -diag_log "[blckeagls] GMS_StaticMissions Initialized.sqf "; +["GMS_StaticMissions Initialized.sqf "] call blck_fnc_log; diff --git a/@GMS/addons/custom_server/changeLog.sqf b/@GMS/addons/custom_server/changeLog.sqf index fc29705..c8dd221 100644 --- a/@GMS/addons/custom_server/changeLog.sqf +++ b/@GMS/addons/custom_server/changeLog.sqf @@ -436,7 +436,7 @@ bugfixes. _useMines = blck_useMines; [Fixed] Logging by the time acceleration module was disabled. [Fixed] Emplaced weapons now spawn in the correct locations. -[Fixed] Missions end correctly when all AI are dead and _endCondition = "allKilledOrPlayerNear"; +[Fixed] Missions end correctly when all AI are dead and _endCondition = [changed] Reverted to the waypoint system from build 42. 3/18/17 Version 6.58 Build 44 diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin.pbo b/@blckeagls_EDEN/addons/3EDEN_plugin.pbo index af5f33346a345477de1aede83333aa410eca6d6e..0809a60c01ad5c8acb22d17f1037321a2be0f86e 100644 GIT binary patch delta 6470 zcmeHLU2Ggz70x)$&$uy-V>b?UYHlX6opqepj+2o1hsbNYX=q{-Y=Xd;(Rkg7xSskBe+%o-2-qB(IHP`iS(xR2K zX-woLA@T}n$LEO1b&D~}b<&nz1}ln?)85YN_?(v8&f$s+TLD~o- z`IS)rjZ#*}XQ`gWA_=$uRBYdEXLWq$+x_oe@Abcb=*jMXJu_W@y>oMa=h#Gho2r_I zN68e?MlKGY9jl)@dcUQ0Y<6zG{>$FFl7yCQZgCkkXB&)>G?3{HO<>!0QvxHh=@-c# zG7^o1SUh%Ite-jd${y_{x56lR39$uUuG+cVI)6J(_#gkb{Tct^i32Uv^grmI_NNBU zwY0a@o;+5L&ywYVg5VN02Zr>!hFzg66Iu|q3S2ZQws#ZX0%&=|=C)M$sW{dh{&K|s z`D~B>+Q8w1f&H9Uwy#sCGC};;2Sz_VJcy_VOEa$H(RB}3$BEpB%bWO1Y`W^v5+lBH z@<^7yRaK3LR5Hr9BZz53sZ~G@iy~XGY}0ZIpL3b!cT666R*#GNk4_({&QfL-9OMG( zB%(N&3|!?vBtlk)hmD*EMS=Wb8w?zsDHn(Wj|1zbWgOW7L&EgVao6^z99>3#Kum9%h)`NON8bceML5;Dn$RhPTKxCWn z{9_k8_wd~Me>>IP5izvr8D53?4boa^0fFjD)@W2I*- znu%?VE`|){Xo1l^%Q9pALc7c@_C{WVL6Z!A4-Wgk8OYS14E#X3p+nCC8D5lOxe9y} zL#)YilTPX%%RFDj=A){j__yl~$qnh&y}iWzQXHu@u(XZ8j@)bD5Zbom!Ach(IhKy8b1AY-m0l-ju4c)oR4;7j2`Ec9Id#C95#+0bc5?pd}?=Ao^FLsGPfLqRpg zn%{Z3U3$MY5t1!3UXzf5tL_y@r^GE{RhGY07=;o=ydrIeW+9x)BoBax(h|%OUztAf zY|@VhlZOw(yJn>WE>_W=RLs?qyjyN!J+u~qc?tZKveXQuk+d{G8;~|Fwq_d}xER-J zTR4uH)*-VO3!=NZ!+aY2e{@Uw>}YhiHCmVd=421fY%v%j3;)B+9&f0jk|S6kK{Jlm zM`SB@QLN^($Um3~cod0q@qazrQG4rmN|!(K zsZ0J}FYm3NntT8K^X+YGW$P}IRCiZ#qCwvUZFt}h+lCgbXrd0tX6^plN_UkXowW?< z?aX${8gi<786`k}3>{d6$Ih!`8yWde!*E4P-|_7PCOCJUJ<2g-CD0 zkr=&O)*7{|4e`delEL2NfDa%R2&TDX-u@twB!UC$soNONw?u{BWo+2b)IyUG?E@BNnD3S$_;{gNT5iiGViqq zUsAf}cb4^tLXq^C(zwoQB_Tm?pS}_MHV5_l?Q) z5Pf|J$N;zC>7{Gu!N2DVVK@J3d3(d|M(6MCj@Ur&WY2|!pLqghTwQv7K`RYZy z2*`SnQmK+^1{qdVD^}D_V89_DZ|Wq3LQ?BvK;k$ao`dH2;Yb|7f)Iu|1YfR|CzTuT z&|&51Ctl`g7-gfxmNlK9ku+5IkpU93XbW^i+B+i_o4Zpn>?M~hLo=uAmiI-=D?&rx zQk4h`>U4mPF=dZ7a8 zVB$AAQiDR;P=F0W1N%zgt{ge5;^u?bAxLYLGrVY+;Q^Fim+;&S=Vup)ALV>hYce4C z{MV>=v>TmPF&7qs;{qpD73vE<76EwXIB^|&gHSp3BWUIfCvgD^=i_=1W7L~<9(BVT z{(pdXssO7DHpjdR8v=egfz;-)1xVBwsjT5wP8c8oHqnEJ$0D#t9V$(%ZAaNN;qfUw zC$}r=a7=y-j1`@IhlJhaY*h$9#?|J(r|hlDa}F-07#W+9QS!tPPj(qWy|5+OIs8D{ zH`c|e V;l&dd{_g#L`kx;x9{PvA`#;d8C653A delta 804 zcmdlzk>kJ(_6fQwLG9-8jqD5zDXD3hd8x&E84MusNdrtVwDVZRf6~|(_)lQ7vXB$w zQGJiSeu=$KgHHWZ~H7^$@XG&s8s)DV8l7WT3q3Px**@;YSO2#Rvc}kn# z%Wr0!tfzE*vyO5Ot7>pbVo7E)Pzz8~a!z7#u|iT#a&~+%SlCJdB0YJRh9-M@Vo_#s ze%|Dd8jh2VHH{}<($t$Qq@_Pu%RqH=puuX!%`C=0geM1hi)n#P%!TmlL*U_eHz$Aj&foM5~^nzfqO393aN254pm*FaQ1v=M#@u@$PY&VlotQ6 diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin.pbo.bak b/@blckeagls_EDEN/addons/3EDEN_plugin.pbo.bak new file mode 100644 index 0000000000000000000000000000000000000000..0e447ecc171e97e35709fb061bcd4859f756d0be GIT binary patch literal 129973 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 Db^Rmt literal 0 HcmV?d00001 diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisonForBuildingATL.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisonForBuildingATL.sqf deleted file mode 100644 index 6fdaf17..0000000 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_configureGarrisonForBuildingATL.sqf +++ /dev/null @@ -1,65 +0,0 @@ - - - -#define oddsOfGarrison 0.67 -#define maxGarrisonStatics 3 -#define maxGarrisonUnits 4 -#define typesGarrisonStatics [] // When empty a static will be randomly chosen from the defaults for blckeagls -#define garrisonMarkerObject "Sign_Sphere100cm_F" // This can be anything you like. I find this large sphere easy to see and convenient. -#define unitMarkerObject "Sign_Arrow_Direction_Green_F" // This can be anything. I chose this arrow type because it allows you to easily indicate direction. - -private["_b","_staticsInBuilding","_unitsInBuilding","_staticsText","_unitsText","_buildingGarrisonATL","_staticsInBuilding","_unitsInBuilding","_count"]; -_b = _this select 0; -private _count = 0; -if (_b in blck_garrisonedBuildings) exitWith {""}; -private _staticsText = ""; -private _unitsText = ""; -private _buildingGarrisonATL = ""; -_staticsInBuilding = nearestObjects[getPosATL _building,["StaticWeapon"],sizeOf (typeOf _building)]; -{ - if !(_x in _configuredStatics) then - { - _isInside = [_x] call _fn_isInside; - if (_isInside) then {_building = [_x] call _fn_buildingContainer}; - 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]; - } else { - _staticsText = _staticsText + format[',["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff (getPosATL _b),getDir _x]; - }; - }; - }; -} forEach _staticsInBuilding; -// Since this is run from the editor we do not have to worry about units running off from their original locations -_unitsInBuilding = nearestObjects[getPosATL _building,["Man"],sizeOf (typeOf _building)] select {(vehicle _x) isEqualTo _x}; - -{ - if !(_x in _configuredUnits) then - { - _isInside = [_x] call _fn_isInside; - if (_isInside) then {_building = [_x] call _fn_buildingContainer}; - if (_b isEqualTo _building) then - { - _configuredUnits pushBackUnique _x; - - if (_unitsText isEqualTo "") then - { - _unitsText = format["[%1,%2]",(getPosATL _x) vectorDiff (getPosATL _b),getDir _x]; - } else { - _unitsText = _unitsText + format[",[%1,%2]",(getPosATL _x) vectorDiff (getPosATL _b),getDir _x]; - }; - _count = _count + 1; - }; - }; -} forEach _unitsInBuilding; - -if ( !(_staticsText isEqualTo "") || !(_unitsText isEqualTo "")) then -{ - _buildingGarrisonATL = format[' ["%1",%2,%3,%4,%5,[%6],[%7]]',typeOf _b,(getPosATL _b) vectorDiff CENTER,getDir _b,'true','true',_staticsText,_unitsText]; - blck_garrisonedBuildings pushBackUnique _b; -}; -_buildingGarrisonATL diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_getGarrisonInfo.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_getGarrisonInfo.sqf new file mode 100644 index 0000000..c5c01ba --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_getGarrisonInfo.sqf @@ -0,0 +1,19 @@ + +private _object = get3DENSelected "object" select {((typeOf _x) isKindOf "House") && [_x] call BIS_fnc_isBuildingEnterable}; +private "_message"; + switch (count _objecct) do + { + case 0: {_message = "No Enterable Buildings selected"}; + case 1: { + if (_object getVariable["garrisoned",false]) then + { + _message = format["Building %1 IS Garrisoned",typeOf _object]; + } else { + _message = format["Building %1 is NOT Garrisoned",typeOf _object]; + }; + }; + default {_message = "Select a single building then try again"}; + }; + [_message,"Status"] call BIS_fnc_3DENShowMessage; + systemChat _message; + diag_log _message; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_getLootVehicleInfo.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_getLootVehicleInfo.sqf new file mode 100644 index 0000000..d096d5f --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_getLootVehicleInfo.sqf @@ -0,0 +1,22 @@ + +private _objects = get3DENSelected "object" select {(typeOf _x) isKindOf "Car"}; +private "_message"; + +switch (count _objects) do +{ + case 0: {_message = "Select a vehicle and try again"}; + case 1: { + if ((_objects select 0) getVariable["lootvehicle",false]) then + { + _message = format["Vehicle %1 IS a loot vehicle",typeOf (_objects select 0)]; + } else { + _message = format["Vehicle %1 is NOT a loot vehicle",typeOf (_objects select 0)]; + }; + }; + default {_message = "Select a single vehicle and try again"}; +}; + +[_message,"Status"] call BIS_fnc_3DENShowMessage; + + systemChat _message; + diag_log _message; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_getMissionGarrisonInfo.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_getMissionGarrisonInfo.sqf new file mode 100644 index 0000000..19ebc9f --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_getMissionGarrisonInfo.sqf @@ -0,0 +1,11 @@ + +private _objects = get3DENSelected "object" select {((typeOf _x) isKindOf "House") && [_x] call BIS_fnc_isBuildingEnterable}; +private _lines = []; +private _lineBreak = toString [10]; +{ + _message pushBack format["Garrison Flag for Building type %1 at %2 = %3",typeOf _x,getPosATL _x,_x getVariable["garrisoned",false]]; +} forEach _objects; + +uiNameSpace setVariable ["Display3DENCopy_data", ["garrisonedBuildings.sqf", _lines joinString _lineBreak]]; +(findDisplay 313) createdisplay "Display3DENCopy"; + diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_getMissionLootVehicleInfo.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_getMissionLootVehicleInfo.sqf new file mode 100644 index 0000000..1b81631 --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_getMissionLootVehicleInfo.sqf @@ -0,0 +1,11 @@ + + +private _objects = get3DENSelected "object" select {(typeOf _x) isKindOf "Car"}; +private _lines = []; +private _lineBreak = toString [10]; +{ + _message pushBack format["Loot Vehicle Flag for Vehicle type %1 at %2 = %3",typeOf _x,getPosATL _x,_x getVariable["garrisoned",false]]; +} forEach _objects; + +uiNameSpace setVariable ["Display3DENCopy_data", ["lootVehicles.sqf", _lines joinString _lineBreak]]; +(findDisplay 313) createdisplay "Display3DENCopy"; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_init.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_init.sqf deleted file mode 100644 index d7712cb..0000000 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_init.sqf +++ /dev/null @@ -1,57 +0,0 @@ - -blck_dynamicStartMessage = "TODO: Change approiately"; -blck_dynamicEndMessage = "TODO: Change Appropriately"; -blck_dynamicCrateLoot = "_crateLoot = blck_BoxLoot_Green;"; -blck_dynamicCrateLootCounts = "_lootCounts = blck_lootCountsGreen;"; -blck_dynamicmarkerMissionName = '_markerMissionName = "TODO: Update appropriately";'; -blck_dynamicMissionDifficulty = "Blue"; -diag_log format["Initilization Complete for 3EDEN plugin for blckeagls"]; -/* -_markerMissionName = "Research Center"; -_missionLandscapeMode = "precise"; // acceptable values are "none","random","precise" - -_useMines = blck_useMines; -_minNoAI = blck_MinAI_Green; -_maxNoAI = blck_MaxAI_Green; -_noAIGroups = blck_AIGrps_Green; -_noVehiclePatrols = blck_SpawnVeh_Green; -_noEmplacedWeapons = blck_SpawnEmplaced_Green; -_minNoAI = blck_MinAI_Blue; // Setting this in the mission file overrides the defaults such as blck_MinAI_Blue -_maxNoAI = blck_MaxAI_Blue; // Setting this in the mission file overrides the defaults -_noAIGroups = blck_AIGrps_Blue; // Setting this in the mission file overrides the defaults -_noVehiclePatrols = blck_SpawnVeh_Blue; // Setting this in the mission file overrides the defaults -_noEmplacedWeapons = blck_SpawnEmplaced_Blue; // Setting this in the mission file overrides the defaults -// Change _useMines to true/false below to enable mission-specific settings. -_useMines = blck_useMines; // Setting this in the mission file overrides the defaults -_uniforms = blck_SkinList; // Setting this in the mission file overrides the defaults -_headgear = blck_headgear; // Setting this in the mission file overrides the defaults -_vests = blck_vests; -_backpacks = blck_backpacks; -_weaponList = ["blue"] call blck_fnc_selectAILoadout; -_sideArms = blck_Pistols; -_chanceHeliPatrol = blck_chanceHeliPatrolBlue; // Setting this in the mission file overrides the defaults -_noChoppers = blck_noPatrolHelisBlue; -_missionHelis = blck_patrolHelisBlue; -_chancePara = blck_chanceParaBlue; // Setting this in the mission file overrides the defaults -_noPara = blck_noParaBlue; // Setting this in the mission file overrides the defaults -_paraTriggerDistance = 400; // Distance from mission at which a player triggers these reinforcements and any supplemental loot. // To have paras spawn at the time the mission spawns with/without accompanying loot set this to 0. -_paraSkill = "red"; // Choose any skill you like; bump up skill or add AI to justify more valuable loot. -_chanceLoot = 0.0; // The chance that a loot crate will be dropped with paratroops. -_paraLoot = blck_BoxLoot_Blue; -_paraLootCounts = blck_lootCountsRed; // Throw in something more exotic than found at a normal blue mission. - -_spawnCratesTiming = blck_spawnCratesTiming; // Choices: "atMissionSpawnGround","atMissionEndGround","atMissionEndAir". - // Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute. - // This sets the default value but can be overridden by defining _spawnCrateTiming in the file defining a particular mission. -_loadCratesTiming = blck_loadCratesTiming; // valid choices are "atMissionCompletion" and "atMissionSpawn"; - // Pertains only to crates spawned at mission spawn. - // This sets the default but can be overridden for specific missions by defining _loadCratesTiming - - // Examples: - // To spawn crates at mission start loaded with gear set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionSpawn" - // To spawn crates at mission start but load gear only after the mission is completed set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionCompletion" - // To spawn crates on the ground at mission completion set blck_spawnCratesTiming = "atMissionEndGround" // Note that a loaded crate will be spawned. - // To spawn crates in the air and drop them by chutes set blck_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned. -_endCondition = blck_missionEndCondition; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" - // Setting this in the mission file overrides the defaults -diag_log format["Inilized 3EDEN Plugin for blckeagles"]; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setGarrison.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setGarrison.sqf new file mode 100644 index 0000000..268fb11 --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setGarrison.sqf @@ -0,0 +1,26 @@ + + +params["_state"]; +private _objects = get3DENSelected "object" select {(typeOf _x) isKindOf "House"}; +if (_objects isEqualTo []) exitWith +{ + _m = "Select one or more buildings to configure"; + systemChat _m; +}; + +{ + if ([_x] call BIS_fnc_isBuildingEnterable) then + { + _x setVariable["garrisoned",_state]; + _m = format["building of type %1 had garrison state set to %2",typeOf _x,_state]; + systemChat _m; + diag_log _m; + } else { + _m = format["Object type %1 ignored: only enterable buildings can be garrisoned",typeOf _x]; + systemChat _x; + diag_log _x; + }; + +} forEach _objects; +_m = format["Garrison State of %1 buildings updated to %2",count _objects,_state]; +systemChat _m; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setLootVehicle.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setLootVehicle.sqf new file mode 100644 index 0000000..27f574a --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_setLootVehicle.sqf @@ -0,0 +1,22 @@ +params["_state"]; +private _objects = get3DENSelected "object" select {(typeOf _x) isKindOf "Car"}; +if (_objects isEqualTo []) exitWith +{ + _m = "Select one or more vehicles to configure"; + systemChat _m; +}; +{ + if ((typeOf _x) isKindOf "Car") then + { + _x setVariable["lootvehicle",_state]; + _m = format["Vehicle type %1 set to Loot Vehilce = %1",typeOf _x,_state]; + systemChat _m; + diag_log _m; + } else { + _m = format["Object with type %1 ignored:: only objects of type Car can be used as loot vehicles",typeOf _x]; + diag_log _m; + systemChat _m; + }; +} forEach _objects; +_m = format["Loot Vehicle State of %1 vehicles updated to %2",count _objects,_state]; +systemChat _m; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_updateObjects.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_updateObjects.sqf new file mode 100644 index 0000000..dbdf17a --- /dev/null +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/Core/fn_updateObjects.sqf @@ -0,0 +1,9 @@ + +private _objects = get3DENSelected "object"; +private _markers select {(typeOf _x) = _markerType}; +{ + +}; +_m = "Update Objects Called"; +diag_log _m; +systemChat _m; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/pullDynamicMission.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/pullDynamicMission.sqf deleted file mode 100644 index 5ea7458..0000000 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/pullDynamicMission.sqf +++ /dev/null @@ -1,411 +0,0 @@ - - -diag_log "========== =========================="; - -private _markers = all3DENEntities select 5; - -/////////////////// -// Define some values for our AI -// Change values of these variables to suit your needs -/////////////////// -#define aiDifficulty "Red" -#define minAI 3 -#define maxAI 6 -#define minPatrolRadius 30 -#define maxPatrolRadius 45 -#define AI_respawnTime 600 -#define aiVehiclePatrolRadius 75 -#define vehiclePatrolRespawnTime 600 -#define staticWeaponRespawnTime 600 -#define aiAircraftPatrolRespawnTime 600 -#define aiAircraftPatrolRadius 1700 -#define oddsOfGarrison 0.67 -#define maxGarrisonStatics 3 -#define maxGarrisonUnits 4 -#define typesGarrisonStatics [] // When empty a static will be randomly chosen from the defaults for blckeagls -#define garrisonMarkerObject "Sign_Sphere100cm_F" // This can be anything you like. I find this large sphere easy to see and convenient. -#define unitMarkerObject "Sign_Arrow_Direction_Green_F" // This can be anything. I chose this arrow type because it allows you to easily indicate direction. -#define objectAtMissionCenter "RoadCone_L_F" -#define lootVehicleMarker "Sign_Arrow_F" -#define landVehicles "LandVehicle" - -/////////////////// -// Define the coordinates of the center of the mission. -/////////////////// -if (isNil "CENTER") then -{ - CENTER = [0,0,0]; -}; -if (CENTER isEqualTo [0,0,0]) then -{ - hint "Please define a center point for your mission"; - _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]; - if (count _obj > 0) then - { - CENTER = [3,3,0] vectorAdd (getPosATL _obj1); - }; - hint format["Position of Road Cone at %1 used to define mission center",CENTER]; - diag_log format["Position of Road Cone at %1 used to define mission center",CENTER]; - diag_log format["Player located at position %1",position player]; -}; -diag_log format["CENTER Set to %1",CENTER]; - -/////////////////// -// Identify any buildings in which a garrison should be spawned using the Arma building positions. -// Tell the script which buildings to garrison by placing an object inside that designates them as such. -// I use a large yellow sphere for this purpose. -// The function below assembles a list of such buildings for use in defining the data for mission buildings. -/////////////////// - -_cb = ""; - -////////////////// -// *** OPTIONAL **** -// Place a marker over your mission and configure it as you would like to to appear in the tame. -// The marker configuration will be included in the output of this script. -// Note ** Only the first marker placed will be processed ** -// Configure Marker -///////////////// - -diag_log format["<< ---- pullDynamicMision: START %1 ---- >>",diag_tickTime]; - -//////////////////////// -// Begin pulling data here -/////////////////////// - -_cb = _cb + format["blck_garrisonedBuildings_BuildingPosnSystem = [",endl]; - -_helpers = allMissionObjects garrisonMarkerObject; -//diag_log format["_helpers = %1",_helpers]; -{ - if ( (typeOf _x) isEqualTo garrisonMarkerObject) then - { - private _isInside = [_x] call _fn_isInside; - if (_isInside) then - { - _building = [_x] call _fn_buildingContainer; - blck_garrisonedBuildings pushbackunique _building; - blck_garrisonedBuildings pushbackunique _x; - // data structure ["building Classname",[/*building pos*/],/*building dir*/,/*odds of garrison*/, /*Max Statics*/,/*types statics*/,/*max units*/], - // 1 2 3 4 5 6 7 8 9 - _line = format[' ["%1",%2,%3,%4,%5,%6,%7,%8,%9]',typeOf _building,(getPosATL _building) vectorDiff CENTER,getDir _building, 'true','true',oddsOfGarrison,maxGarrisonStatics,typesGarrisonStatics,maxGarrisonUnits]; - systemChat _line; - //diag_log _line; - if (_forEachIndex == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; - }; -} forEach _helpers; -_cb = _cb + format["%1];%1%1",endl]; - -_logging = format["blck_garrisonedBuildings = %1",blck_garrisonedBuildings]; -diag_log _logging; -systemChat _logging; -//diag_log format["_cb = %1%2",endl,_cb]; - - -/* - This bit will set up the garrison for each building having units and / or statics inside it or on top. - Coding must ensure that nothing is repeated but everything is captured. -*/ - -_fn_configureGarrisonForBuildingATL = { - private["_b","_staticsInBuilding","_unitsInBuilding","_staticsText","_unitsText","_buildingGarrisonATL","_staticsInBuilding","_unitsInBuilding","_count"]; - _b = _this select 0; - _count = 0; - if (_b in blck_garrisonedBuildings) exitWith {""}; - _staticsText = ""; - _unitsText = ""; - _buildingGarrisonATL = ""; - _staticsInBuilding = nearestObjects[getPosATL _building,["StaticWeapon"],sizeOf (typeOf _building)]; - { - if !(_x in _configuredStatics) then - { - _isInside = [_x] call _fn_isInside; - if (_isInside) then {_building = [_x] call _fn_buildingContainer}; - 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]; - } else { - _staticsText = _staticsText + format[',["%1",%2,%3]',typeOf _x,(getPosATL _x) vectorDiff (getPosATL _b),getDir _x]; - }; - }; - }; - } forEach _staticsInBuilding; - _unitsInBuilding = nearestObjects[getPosATL _building,[unitMarkerObject],sizeOf (typeOf _building)]; - - { - if !(_x in _configuredUnits) then - { - _isInside = [_x] call _fn_isInside; - if (_isInside) then {_building = [_x] call _fn_buildingContainer}; - if (_b isEqualTo _building) then - { - _configuredUnits pushBackUnique _x; - - if (_unitsText isEqualTo "") then - { - _unitsText = format["[%1,%2]",(getPosATL _x) vectorDiff (getPosATL _b),getDir _x]; - } else { - _unitsText = _unitsText + format[",[%1,%2]",(getPosATL _x) vectorDiff (getPosATL _b),getDir _x]; - }; - _count = _count + 1; - }; - }; - } forEach _unitsInBuilding; - if ( !(_staticsText isEqualTo "") || !(_unitsText isEqualTo "")) then - { - _buildingGarrisonATL = format[' ["%1",%2,%3,%4,%5,[%6],[%7]]',typeOf _b,(getPosATL _b) vectorDiff CENTER,getDir _b,'true','true',_staticsText,_unitsText]; - blck_garrisonedBuildings pushBackUnique _b; - }; - _buildingGarrisonATL -}; - -private _count = 0; -_cb = _cb + "_garrisonedBuilding_ATLsystem = ["; -{ - private _isInside = [_x] call _fn_isInside; - if (_isInside) then - { - private _building = [_x] call _fn_buildingContainer; - private _include = if ( !(_building in blck_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]; - private _buildingGarrisonInformation = [_building] call _fn_configureGarrisonForBuildingATL; - diag_log format["_buildingGarrisonInformation = %1",_buildingGarrisonInformation]; - if !(_buildingGarrisonInformation isEqualTo "") then - { - if (_count == 0) then - { - _cb = _cb + format["%1%2",endl,_buildingGarrisonInformation]; - } else { - _cb = _cb + format[",%1%2",endl,_buildingGarrisonInformation]; - }; - _count = _count + 1; - }; - }; - }; - -} forEach ((allMissionObjects "StaticWeapon") + (allMissionObjects "Man") + (allMissionObjects unitMarkerObject)); -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Configure info remaining mission landscape -/////////////////// -_land = allMissionObjects "Static"; -_count = 0; -_cb = _cb + format["_missionLandscape = [",endl]; -{ - diag_log format["evaluating mission landscape: _x = %1 | typeOf _x = %1",_x, typeOf _x]; - //diag_log format["evaluating mission landscape: _x %1 | typeOf _x %1",_x, _x isKindOf "Helper_Base_F"]; - if !(_x in blck_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 (_count == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - _count = _count + 1; - }; -}forEach allMissionObjects "Static"; -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Configure loot boxes -/////////////////// -_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 - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; -}forEach ((allMissionObjects "ReammoBox") + (allMissionObjects "ReammoBox_F")); -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Setup Info for loot vehicles -/////////////////// -_missionLootVehicles = []; -_missionVehicles = ((allMissionObjects "Car") + (allMissionObjects "Tank") + allMissionObjects "Ship"); -_lootVehicleMarkers = allMissionObjects lootVehicleMarker; -diag_log format["_lootVehicleMarkers = %1",_lootVehicleMarkers]; -_cb = _cb + format["_missionLootVehicles = ["]; -{ - _kindOf = "nothing"; - _isInside = [_x,"Car"] call _fn_isInside; - if (_isInside) then {_kindOf = "Car"}; - if !(_isInside) then {_isInside = [_x,"Ship"] call _fn_isInside}; - if (_isInside) then {_kindOf = "Ship"}; - if (_isInside) then - { - - _object = [_x,_kindOf] call _fn_buildingContainer; - diag_log format["object %1 is inside object %2",_x,_object]; - _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 - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; -} forEach allMissionObjects lootVehicleMarker; -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Setup Info for vehicle patrols -/////////////////// -_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 - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; -}forEach ((allMissionObjects "Car") + (allMissionObjects "Tank") + allMissionObjects "Ship"); -_cb = _cb + format["%1];%1%1",endl]; - -_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 - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; -}forEach allMissionObjects "Ship"; -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Configs for Air Patrols -/////////////////// -_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 - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; -}forEach allMissionObjects "Air"; -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Setup info for remaining static/emplaced weapons -/////////////////// -_count = 0; -_cb = _cb + format["_missionEmplacedWeapons = ["]; -{ - - //if !(_x in _configuredStatics) then - private _isInside = [_x] call _fn_isInside; - if !(_isInside) 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 - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - _count = _count + 1; - }; - -}forEach allMissionObjects "StaticWeapon"; -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// Setup information for infantry groups spawning outside buildings -/////////////////// -_cb = _cb + format["_missionGroups = ["]; -{ - //[[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]; - if (_isInfantry) then - { - if (!(surfaceIsWater (getPos _x)) && !(_isInside) && !(isPlayer _x)) then - { - _line = format[' [%1,%2,%3,"%4",%5,%6]',(getPosATL _x) vectorDiff CENTER,minAI,maxAI,aiDifficulty,minPatrolRadius,maxPatrolRadius]; - systemChat _line; - if (_forEachIndex == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; - }; -}forEach allMissionObjects "Man"; -_cb = _cb + format["%1];%1%1",endl]; - -_cb = _cb + "_scubaGroupParameters = ["; -{ - //[[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]; - if (_isInfantry) then - { - if ((surfaceIsWater (getPos _x)) && !(_isInside) && !(isPlayer _x)) then - { - _line = format[' [%1,%2,%3,"%4",%5,%6]',(getPosATL _x) vectorDiff CENTER,minAI,maxAI,aiDifficulty,minPatrolRadius,maxPatrolRadius]; - systemChat _line; - if (_forEachIndex == 0) then - { - _cb = _cb + format["%1%2",endl,_line]; - } else { - _cb = _cb + format[",%1%2",endl,_line]; - }; - }; - }; -}forEach allMissionObjects "Man"; -_cb = _cb + format["%1];%1%1",endl]; - -/////////////////// -// All done, notify the user and copy the output to the clipboard -/////////////////// -_msg = "All Objects organzied, formated and copied to the Clipboard"; -hint _msg; -systemChat _msg; -systemChat format["_cb has %1 characters",count _cb]; -copyToClipboard _cb; -diag_log "DONE"; - diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/pullMarkerInfo.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/pullMarkerInfo.sqf deleted file mode 100644 index 442a5b1..0000000 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/pullMarkerInfo.sqf +++ /dev/null @@ -1,62 +0,0 @@ - -_cb = ""; - -////////////////// -// *** OPTIONAL **** -// Place a marker over your mission and configure it as you would like to to appear in the tame. -// The marker configuration will be included in the output of this script. -// Note ** Only the first marker placed will be processed ** -// Configure Marker -///////////////// -/* - _markerType = ["ELIPSE",[175,175],"GRID"]; - _markerType = ["mil_triangle",[0,0]]; -*/ - -diag_log format["<< ---- START %1 ---- >>",diag_tickTime]; - -_allmkr = allMapMarkers; -diag_log format["_allmkr = %1",_allmkr]; -if (count _allmkr == 0) then -//if !(typeName _mk isEqualTo "STRING") then -{ - hint "No Marker Found, no Marker Definitions Will Be generated"; - uiSleep 5; -} else { - - _mk = _allmkr select 0; - 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 (toUpper(markerShape _mk)) do - { - case "ELLIPSE": { - _cb = _cb + format['_markerType = ["%1",%2,"%3"];%4',toUpper(MarkerShape _mk),getMarkerSize _mk,toUpper(markerBrush _mk),endl]; - }; - case "RECTANGLE": { - _cb = _cb + format['_markerType = ["%1",%2,"%3"];%4',toUpper(MarkerShape _mk),getMarkerSize _mk,toUpper(markerBrush _mk),endl]; - }; - case "ICON": { - _cb = _cb + format['_markerType = ["%1"];%2',getMarkerType _mk,endl]; - }; - }; - - _cb = _cb + format['_markerColor = "%1";%2',markerColor _mk,endl]; - _cb = _cb + format['_markerLabel = "%1";%2',MarkerText _mk,endl]; - _cb = _cb + format["%1%1",endl]; -}; - -/////////////////// -// All done, notify the user and copy the output to the clipboard -/////////////////// -_msg = "Marker Data organzied, formated and copied to the Clipboard"; -hint _msg; -systemChat _msg; -systemChat format["_cb has %1 characters",count _cb]; -copyToClipboard _cb; -diag_log "DONE"; - diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/setCenterAtPlayer.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/setCenterAtPlayer.sqf deleted file mode 100644 index 6db9def..0000000 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/setCenterAtPlayer.sqf +++ /dev/null @@ -1 +0,0 @@ -CENTER = getPos player; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/template.sqf b/@blckeagls_EDEN/addons/3EDEN_plugin/Export/template.sqf deleted file mode 100644 index 8a0afe9..0000000 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/Export/template.sqf +++ /dev/null @@ -1,11 +0,0 @@ - - -all3DENEntities params ["_objects","_groups","_triggers","_systems","_waypoints","_markers","_layers","_comments"]; -_units = []; -{ - { - if (vehicle _x isEqualTo _x) then {_units pushBack _x}; - } forEach (units _x); -} forEach _groups; -diag_log format["_groups = %1",_groups]; -diag_log format["_units = %1",_units]; \ No newline at end of file diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/config.cpp b/@blckeagls_EDEN/addons/3EDEN_plugin/config.cpp index ceac19f..5c8ba4a 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/config.cpp +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/config.cpp @@ -52,8 +52,8 @@ class CfgBlck3DEN class CfgVersion { version = 1.0; - build = 2; - date = "08/15/20"; + build = 3; + date = "08/23/20"; }; }; diff --git a/@blckeagls_EDEN/addons/3EDEN_plugin/defines.h b/@blckeagls_EDEN/addons/3EDEN_plugin/defines.h index 425b445..034f2a8 100644 --- a/@blckeagls_EDEN/addons/3EDEN_plugin/defines.h +++ b/@blckeagls_EDEN/addons/3EDEN_plugin/defines.h @@ -19,7 +19,7 @@ class CfgPatches class blckeagls_3den { requiredVersion = 0.1; - requiredAddons[] = {"3den"}; + requiredAddons[] = {3DEN}; units[] = {}; weapons[] = {}; magazines[] = {}; @@ -46,6 +46,10 @@ class CfgFunctions file = "3EDEN_plugin\Core"; class help {}; class about {}; + class getGarrisonInfo {}; + class getLootVehicleInfo {}; + class getMissionGarrisonInfo {}; + class getMissionLootVehicleInfo {}; class initializeAttributes {}; class isInfantry {}; class isInside {}; @@ -53,6 +57,8 @@ class CfgFunctions class display {}; class setDifficulty {}; class setCompletionMode {} + class setGarrison {}; + class setLootVehicle {}; class setSpawnLocations {}; class spawnCratesTiming {}; class loadCratesTiming {}; @@ -79,6 +85,7 @@ class cfg3DEN { OnMissionLoad = "call blck3DEN_fnc_initializeAttributes"; OnMissionNew = "call blck3DEN_fnc_initializeAttributes"; + onHistoryChange = "call blck3DEN_fnc_updateObjects"; }; }; @@ -141,30 +148,97 @@ class cfg3DEN class CfgVehicles { - class Static; + class House; - class blck_static: Static + class blck_House: House { class Attributes { - class garison + class blck_garisoned { displayName = "Garrison"; - toolTip = "Define Garisoned Buildings"; + toolTip = "Define Garrisoned Buildings"; control = "blck_garison"; + + expression = "_this setVariable ['garrisoned',_value];"; + defaultValue = false; + unique = 0; }; }; }; }; class ctrlMenuStrip; +class ctrlMenu; class display3DEN { class Controls { + /* + class ContextMenu: ctrlMenu + { + class Items + { + items[] += { + "blck_markLootVehicle", + "blck_markGarisonBuildingPos" + }; + class blck_markLootVehicle + { + text = "Designate Loot Vehicles"; + value = false; + //action = "systemChat 'value toggled'"; + conditionShow = "selectedObject"; + items[] = { + "blck_clearLootVehicle", + "blck_designateLootVehicle" + }; + }; + class blck_clearLootVehicle + { + text = "Clear Loot Vehicle Settings"; + value = false; + action = "[false] call blck3DEN_fnc_setLootVehicleStatus"; + }; + class blck_deisgnateLootVehicle + { + text = "Desinate Loot Vehicle"; + value = true; + action = "[true] call blck3DEN_fnc_setLootVehicleStatus"; + }; + + class blck_markGarisonBuildingPos + { + text = "Designate Garisoned Buildings"; + value = false; + conditionShow = "selectedObject"; + items[] = { + "blck_clearGarisonSettings", + "blck_designateGarisonedBuilding" + }; + }; + class blck_clearGarisonSettings + { + text = "Clear Garison Settings"; + value = false; + conditionShow = "selectedObject"; + action = "[false] call blck3DEN_fnc_setGarison"; + }; + class blck_designateGarisonedBuilding + { + text = "Set as Garisoned Building"; + value = true; + conditionShow = "SelectedObject"; + action = "[true] call blck3DEN_fnc_setGarison"; + }; + + }; + }; + */ class MenuStrip: ctrlMenuStrip { + class Items { items[] += {"Blackeagls"}; @@ -183,6 +257,14 @@ class display3DEN //"blckMissionMessages", "blckMissionLocation", "blckSeparator", + "blck_setGarrison", + "blck_getGarrisonInfo", + "blck_getMissionGarrisonInfo", + "blckSeparator", + "blck_markLootVehicle", + "blck_getLootVehicleInfo", + "blck_getMissionLootVehicleInfo", + "blckSeparator", "blckSaveStaticMission", "blckSaveDynamicMission", "blckSeparator", @@ -369,7 +451,7 @@ class display3DEN class blckMissionLocation { - text = "Toggle Random or Fixed Location" + text = "Toggle Random or Fixed Location"; toolTip = "Set whether mission spawns at random or fixed locations"; items[] = { "blck_randomLocation", @@ -387,6 +469,75 @@ class display3DEN toolTip = "Use to have mission respawn at same location"; action = "['fixed'] call blck3DEN_fnc_setSpawnLocations"; }; + + class blck_setGarrison + { + text = "Set as Garrisoned Building"; + toolTip = "Set garrison status of selected buildings"; + items[] = { + "blck_isGarrisoned", + "blck_clearGarrisoned", + "blck_getGarrisonInfo" + }; + }; + class blck_isGarrisoned + { + text = "Garrison Building"; + toolTip = "Flag selected buildings to be garrisoned"; + value = true; + action = "[true] call blck3DEN_fnc_setGarrison"; + }; + class blck_clearGarrisoned + { + text = "Remove Garrison"; + toolTip = "Selected Buildings will Not be Garrisoned"; + value = false; + action = "[false] call blck3DEN_fnc_setGarrison"; + }; + class blck_getGarrisonInfo + { + text = "Get Building Garrisoned Setting"; + toolTip = "Get the selected buildings garrisoned flag"; + value = 0; + action = "call blck3DEN_fnc_getGarrisonInfo"; + }; + class getMissionGarrisonInfo + { + text = "Get garrison flag for selected buildings"; + toolTip = "The garrisoned flag state will be displayed for selected bulidings"; + value = 0; + action = "call blck3DEN_fnc_getMissionGarrisonInfo"; + }; + + class blck_markLootVehicle + { + text = "Designate Loot Vehicles"; + value = false; + //action = "systemChat 'value toggled'"; + conditionShow = "selectedObject"; + items[] = { + "blck_clearLootVehicle", + "blck_designateLootVehicle" + }; + }; + class blck_clearLootVehicle + { + text = "Clear Loot Vehicle Settings"; + value = false; + action = "[false] call blck3DEN_fnc_setLootVehicle"; + }; + class blck_designateLootVehicle + { + text = "Desinate Loot Vehicle"; + value = true; + action = "[true] call blck3DEN_fnc_setLootVehicle"; + }; + class blck_getLootVehicleInfo + { + text = "Get setting for selected vehicle"; + value = 0; + action = "call blck3DEN_fnc_getLootVehicleInfo"; + }; ///////////////////////////// class blckSaveStaticMission { @@ -410,37 +561,11 @@ class display3DEN }; }; - - class Attributes - { - //items[] += {"blck_messages"}; - text = "blckeagls: Mission Messages" - }; - class blck_messages - { - text = "Mission Messages"; - items[] = {"blck_startMessage","blck_endMessage"}; - }; - class Edit; - class blck_editMessages - { - control = Edit; - value = ""; - }; - class blck_startMessage: blck_editMessages - { - text = "Set start Message"; - action = "['_value'] call blck3DEN_fnc_startMessage"; - }; - class blck_endMessage: blck_editMessages - { - text = "Set end message"; - action = "['_value'] call blck3DEN_fnc_endMessage"; - }; }; }; }; + /////////////////////////////////////////////////////////////////////////////// From 02847bdbe24630bafee1ec8b6b1fc8d47e2f03c9 Mon Sep 17 00:00:00 2001 From: Chris Cardozo Date: Wed, 2 Sep 2020 11:48:09 -0400 Subject: [PATCH 25/25] Updated Documentation --- @GMS/addons/custom_server/FAQ.txt | 99 --- @GMS/addons/custom_server/KnownIssues.txt | 5 - @GMS/addons/custom_server/changeLog.sqf | 706 ---------------------- Adding New Dynamic Missions-HowTo.txt | 51 -- Adding New StaticMissions-HowTo.txt | 45 -- FAQ.txt | 16 +- INSTALLATION.txt | 14 +- KnownIssues.txt | 5 +- README.md | 7 +- changeLog.sqf | 24 +- 10 files changed, 48 insertions(+), 924 deletions(-) delete mode 100644 @GMS/addons/custom_server/FAQ.txt delete mode 100644 @GMS/addons/custom_server/KnownIssues.txt delete mode 100644 @GMS/addons/custom_server/changeLog.sqf delete mode 100644 Adding New Dynamic Missions-HowTo.txt delete mode 100644 Adding New StaticMissions-HowTo.txt diff --git a/@GMS/addons/custom_server/FAQ.txt b/@GMS/addons/custom_server/FAQ.txt deleted file mode 100644 index e8f54d5..0000000 --- a/@GMS/addons/custom_server/FAQ.txt +++ /dev/null @@ -1,99 +0,0 @@ -Core Mission System. - -The core mission system is configured to run 4 different classes of mission (Blue, Red, Green and Orange) simultaneously. -Reducing value for ...\custom_serer\configs\blck_configs.sqf\blck_maxSpawnedMissions will reduce the number of missions running on the server. - -General settings include the ability set whether and how messages to players regarding missions spawned or completed are displayed, - whether and how messages to players regarding killed AI are displayed - - Number of AI groups; - Number of AI per group; - AI skills; - Number and type of static weapons; - Number and type of armed vehicle patrols. - Presence of AI helicopter patrols. - Whether such patrols drop AI reinforcements. - - Loot can also be configured for each mission class. You can modify the number of weapons, magazines, items, construction materials, etc. - You can also adjust the choices for each of these types of items. - The equipment selected for each class of mission can also be specified. - Whether kills by guns mounted on vehicles are to be penalized (gunes that are prohobited are listed in blck_config.sys). - Whether to spawn a smoking wreck near the mission to be used as a visual landmark. - Whether to spawn mines (recommended only when no vehcle patrols are spawned). - -Where possible, I have tried group weapons based on desirability from low rank (5.56 ammo) to high rank (7.6 caliber or larger, large bore sniper, heavy LMG) then combine these groups to define parameters as needed. - -The missions themselves are spawned from templates which can be used to define: - the messages sent to players; - text used to label the mark - type of marker used to label the map - number of AI groups and number of AI - (optional) loot chest positions and loot to be loaded - type and location of any objects, buildings, or other entities that give the mission character - number and (optional) locations of static weapons - number of vehicle patrols - - To create and run new missions simply: - layout an AI base in the Arma 3 editor, - export the base as an .sqf - Define the above parameters (nu. AI groups, No AI, etc) - add this information to the mission template and modify any messages accordingly - Add the name of the file (e.g., "newAImission" to the list of missions to be spawned of that class in ...\custom)server\missions\GMS_missionLists.sqf - Repack your custom_server.pbo - -Performance considerations. -At present, missions do not actually spawn objects or players untill a player is within the trigger distance (1000 M). -Hence, performance penalties should be modest to none until players engage a mission. -There is some performance penalty to having a lot of dead AI on the server, or a lot of spawned objects used for scenery at AI missions. Hence, these are deleted after a certain time. - -Static Mission System (WIP). - -Additional Modules Available: - -1. Time Acceleration - -This provides an optional ability to accelerate time by user-specified factors. -The time acceleration can be specified for night, daytime and dusk. -Variables controlling the time acceleration module are located in ...\custom_server\configs\blck_configs.sqf and are: - - blck_useTimeAcceleration = false; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below. - blck_timeAccelerationDay = 1; // Daytime time accelearation - blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation - blck_timeAccelerationNight = 8; // Nighttim time acceleration - -Note that map/mod specific settings can be specified in blck_custom_config.sqf if that is helpful. - -2. Map Addons - -This module allows you to load map-addons (custom bases, enhancements to villages or towns, ATMs at traders etc) but to do so in a way that is map and mod-specific. -I use it to manage the map addons we run on multiple different Arma servers. -It is designed to permit you to place files in subdirectories of the MapAddons folder to simplyfy organization of the various files. -You can enable/disable the use of map-addons with the following variable found in ...\custom_server\configs\blck_configs: - -blck_spawnMapAddons = false; - -You can define which addons you wish to load in ...\custom_server\MapAddons\MapAddons_init.sqf. - -3. Static Loot System - -This module spawns loot crates at pre-specified locations on the ground, inside buildings or on roofs. -It is designed to function in conjunction with the Map Addons module if you wish it to. -It was derived from the loot crate spawner originally released by DarthRogue but has been extensively revised. -One enhancement is that I have written the code so that you do not need to sort items by there arma type (weapon, magazine, item). -In any event, it is a great tool for placing loot chests at AI strongholds or static missions. - -Some basic features are: -Crates can be spawned at precise locations with / without a nearby smoking wreck to mark their location (which crates an apololyptic feel). -Crates can be loaded with one of 3 different loadouts (add more if you like) which can be specified or randomly determined. -If the number of possible spawn locations is greater than the number of crates to spawned, spawn locations will be randomly chosen giving some variation to your mission. - -The static loot crate spawner is enabled/disable by changing the following variable in ...\custom_server\configs\blck_configs.sqf - - blck_spawnStaticLootCrates = false; - -I wrote the crate spawner in a way that helps me manage static loot crates across multiple maps and mods. -The configuration files for Epoch or Exile give examples of how to implement the system. - -Known issues - -1. diff --git a/@GMS/addons/custom_server/KnownIssues.txt b/@GMS/addons/custom_server/KnownIssues.txt deleted file mode 100644 index e2472f3..0000000 --- a/@GMS/addons/custom_server/KnownIssues.txt +++ /dev/null @@ -1,5 +0,0 @@ - - -Known issues - -1. diff --git a/@GMS/addons/custom_server/changeLog.sqf b/@GMS/addons/custom_server/changeLog.sqf deleted file mode 100644 index c8dd221..0000000 --- a/@GMS/addons/custom_server/changeLog.sqf +++ /dev/null @@ -1,706 +0,0 @@ -/* -blck Mission system by Ghostrider [GRG] -Loosely based on the AI mission system by blckeagls ver 2.0.2 -Contributions by Narines: bug fixes, testing, infinite ammo fix. -Ideas or code from that by He-Man, Vampire and KiloSwiss have been used for certain functions. -Many thanks for new Coding and ideas from Grahame. - -Significant Changes: - -===================== -7.00 Build 214 -New: Option to drop crates on a parachute at mission spawn which adds some randomness to where crates end up. - blck_spawnCratesTiming = "addMissionSpawnAir"; -Fixed: Don and Hostage missions could not be completed -Fixed: Missions tended to spawn all at once -Fixed: vehicles are spawned at a safe spot which should reduce unintended explosions -Fixed: Missions sometimes spawned on steep hillsides. -Fixed: Vehicles sometimes blew up on spawn. -Added: The system has been upgreaded to a state-based system, meaning one scrpt is running once all missions are initialized. -Changed: a lot of debugging was removed. - - -6.98 Build 206 -FIXED: few minor bug fixes. -FIXED: Static Mission Loot vehicles are no longer deleted by Epoch servers when players enter them. -FIXED: an error in coordinates for some randomly spawned missions tha added an extra 0 to the array with the coordinaates. -Added: a define for NIA all in one in blck_defines; -Added a few preconfiguration variables with lists of NIA Armas items. -Added: an optional parameter to define the location of a mission as one of one or more locations in an array - _defaultMissionLocations = []; - -Added: a function that returns an array of all mission markers used by blckeagls for mission makers and server owners - blck_fnc_getAllBlackeaglsMarkers - Returns: an array with all markers used by the mission system. - -Added: a function to pull a list of all map markers belonging to DMS and avoid spawning new blckeagls missions near these. - Configuraiont parameter: blck_minDistanceFromDMS // set to -1 to disable this check. - Function: blck_fnc_getAllDMSMarkers - -Removed: some debugging and map sepcific settings from blck_custom_config.sqf -Changed: some code for finding locations for a new mission. -Added: all blckeagls map markers have the same prefix: "blckeagls_marker" - - - - - - - -6.96 Build 199 -Added support for Arma servers not running Epoch or Exile - -6.96 Build 197 -Sorted some wisses with the dynamic UMS spawner. -Removing debugging info -TODO: come back to grpNull detection - -6092 Build 196 -sorted issues with markers -and added new findSafeLocation - -6.92 Build 194 -Added _noAIGroups to parameter list for _spawnMissionAI -Other minor changes to delete logging. - -6.92 Build 193 -Updates to scripts to see if player(s) are near locations. -Updates to scripts to delete alive and dead AI. -Updates to simulation managers. - -6.92 Guild 192 -All actions on dead AI are handled throug units blck_graveyardGroup -All use of blck_deadAI has been deleted. - -6.92 Build 184 -Fixed an issues that caused blckeagls to load before exile servers were ready to accept players. -Added checks that ensure that live AI and mission scenery do not despawn when players are nearby. -Decreased the frequency with which some checks (dead AI, live AI, scenery at completed missions) is checked. -Redid a few lops that should be using the more speedy deleteAt rather than forEach methods. -worked on killed and hit EH so that these can run on the client owning the unit and server with each having a specific role - - note that this requires that the code be streamed to clients and compiled on the HC. -Updates to client to reduce logging -Added a firedNear EH -Redid system for setting up combatmode and behavior to be context dependent -Redid setNextWaypont to include an antiStuck check and implement the above checks on behavior and combat mode. -Support for claim-vehicle scripts is now built-in - blck_allowClaimVehicle = true; // To allow players to claim vehicles (Exile only). -Added a setting to disable having AI toss smoke before healing. Set: - blck_useSmokeWhenHealing=false; // to disable this -Added an option to display kill notices using Toasts - blck_aiKillUseToast=true; // in blckClient.sqf in the debug folder of your mission.pbo to enable these. -Added offloading of AI to clients - //////// - // Client Offloading and Headless Client Configurations - blck_useHC = true; // Experimental (death messages and rewards not yet working). - // Credit to Defent and eraser for their excellent work on scripts to transfer AI to clients for which these settings are required. - blck_ai_offload_to_client = true; // forces AI to be transfered to player's PCs. Disable if you have players running slow PCs. - blck_ai_offload_notifyClient = false; // Set true if you want notifications when AI are offloaded to a client PC. Only for testing/debugging purposes. - // TODO: set to false before release - blck_limit_ai_offload_to_blckeagls = true; // when true, only groups spawned by blckeagls are evaluated. - - - -Fixed - Vehicle unlock when empty of crew through adding a getOut event handler. -Code for spawning vehicles redone to reduced redundancy. -Monitoring of groups refined to route mission groups that have left the mission area back to it. - -V 6.90 Build 175 -1. Added new settings to specify the number of crew per vehhicle to blck_config.sqf and blck_config_mil.sqf - - // global settings for this parameters - // Determine the number of crew plus driver per vehicle; excess crew are ignored. - // This can be a value or array of [_min, _max]; - blck_vehCrew_blue = 3; - blck_vehCrew_red = 3; - blck_vehCrew_green = 3; - blck_vehCrew_orange = 3; - - You can also define this value in missions by adding the following variable definition to the mission template: - - _vehicleCrewCount = [3,6]; // min/max number of AI to load including driver. see the missions\blue\template.sqf and blck_configs.sqf for more info. - -2. Lists of items to be excluded from dynamically generated loadouts has been moved to: - blck_config.sqf - blck_config_mil.sqf - -3. Added a new setting that specifies whether logging of blacklisted items is done (handy for debugging) - blck_logBlacklistedItems = true; // set to false to disable logging - -4. Hit and Killed event handlers extensively reworked. Methods for notification of nearby AI and Vehicles of the killers whereabouts were revised to be more inclusive of neighboring AI. - -5. Issues with AIHit events fixed; AI now deploy smoke and heal. - -6. Added constraints on aircraft patrols to keep them in the mission area. - -7. Removed some unnecessary logging. - -8. Other minor coding fixes and optimizations. - -6.88 -This update consists primarily of a set of bug fixes and code tweaks. -Many thanks to HeMan for his time in effort spent going through the scripts to troublehsoot and improve them. - -6.86 Build 156 -Added support for spawning infantry and statics inside buildings for forming a garrison using either of two methods. - 1. by placing a marker object such as a sphere in the building you define it as having units/statics inside - 2. by placing units or statics in it you determine the garrison to be placed at mission spawn. -Added tools to facilitate grabbing data from missions in the editor (see the new TOOLS folders for more information). -Added additional error checks for missing mission parameters. -Fixed: issues that prevented completion of capture/hostage missions on exile servers -Added: code that forces air, land and sea vehicles to detect nearby players which should help with frozen AI _noChoppers -Changed: code for blckeagls simulation manager to force simulation when groups are awoken. -Added: additional settings for simulation management (see blck_configs.sqf for details) -Changed: Simulation management is now set using the new variable blck_simulationManager which is defined in blck_configs.sqf -Fixed: Heli's just hovered over missions. -Fixed: GRG code that locked up the mission system was removed from the public RC. - -6.84 Build 145 -Added Option to load weapons, pistols, uniforms, headgear, vests and backpacks from CfgPricing (Epoch) or the Arsenal (Exile) and exclude items above a certain price - Add details on configs for enabling this and setting the maximum price - To use this new feature - Set blck_useConfigsGeneratedLoadouts = true; - - To specify the maximum price for items added to AI, change: - blck_maximumItemPriceInAI_Loadouts = 100; - - NOTE: this function overides any loadouts you specify in blck_config.sqf etc. - -Added functions to despawn static patrols of all types when no players are nearby. This tracks the number of infantry alive in a group and respawns only the number alive when the group was despawned. -Added: Static units will now be spawned with gear specific to difficulty level (blue, red, green, orange) as specified in blck_config.sqf etc. -Added: AI now have a chance of spawning with binocs or range finders. -Added: a lit road cone spawns at the center of the mission to help find it and aid in triggering mission completion. - -Changed: Hostage missions redesigned to reduce chances of AI being glitched into containers and of mission objects flying about when spawned in. -Changed: Units are spawned with greater dispersion. -Changed: method for spawning random landscapes has been changed. Note the added randomization in missions\blue\default.sqf - -Fixed: Collisions between objects at missions caused issues. -Fixed: Attempted a fix to reduce the chance that AI will spawn inside or under objects like rocks or containers. -Fixed: Captive missions now complete properly. -Fixed: Hostage missions now complete properly. -Fixed: Paratroops spawned at UMS missions now spawn with scuba gear. - -Version 1.82 Build 134 -Added: configs for blue, red, green and orange pistol, vest, backpack and uniforms (with thanks to Grahame for suggesting this change and doing most of the coding) -Changes: - Commented out all configs in missions for uniforms, headgear, backpacks and uniforms. - Commented out most configs for helis, paratroops and supplemental loot dropped by paratroops. - Removed some logging that is not required. - -Version 1.82 Build 132 -Added: blck_killPercentage = 0.9; // The mission will complete if this fraction of the total AI spawned has been killed. - // This facilitates mission completion when one or two AI are spawned into objects. - -Added: Male and Female uniforms are separated and can be used alone or together for specific missiosn (Epoch Only). - -Added: Loot tables updated to include food and supplies as of Epoch 1.1.0. - -Added: Setting that configures vehicles to be sold at Black Market Traders. - blck_allowSalesAtBlackMktTraders = true; // Allow vehicles to be sold at Halve's black market traders. - -Added: Support for hostage rescue missions. - The hostage can be spawned at any location relative to the mission center. - The mission aborts if the hostage is killed; all loot is deleted. - To complete the mission, a player must approach the hostage and execute the rescue action. - The hostage then runs away, and loot becomes available to the player. - See missions\blue\hostage.sqf for an example mission. - - ***** PLEASE READ - IMPORTANT **** - Please update the blck_client.sqf in your mission.pbo or you will not be able to interact with or see animations of the new AI characters. - -Added: Support for Arrest Leader missions. - These are similar to the rescue hostage mission except that the leader, when arrested, will sites - awaiting arrival of imaginary survivor forces. - See missions\blue\capture.sqf for an example mission - -Added: blck_missionEndCondition = "playerNear"; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear" - which provides a simple way to define the default conditions under which the mission ends for all missions. - You can of course define _endCondition in the specific mission file if you wish. - -Added: A new mission completion condition for hostage and captive missions. - _endCondition = "assetSecured"; - -Added: Mission crates can now be spawned on the ground or in the air at mission completion. - blck_spawnCratesTiming sets the default for all missions. - blck_spawnCratesTiming = "atMissionEndAir"; // Choices: "atMissionSpawnGround","atMissionStartAir","atMissionEndGround","atMissionEndAir". - Define _spawnCratesTiming to set this parameter for a particular mission. - _spawnCratesTiming = "atMissionEndAir"; - See the hostage1.sqf mission as an example. - -Added: Crates spawn with tabs or crypto. Set the values in the mod-specific configs. - For Epoch, the crypto can be accessed by pressing space bar. - -Added: Additional documentation for those who wish to design their own missions. - See \missions\blue\default.sqf and default2.sqf for details. - -Added: greater control over AI loadouts. - For land-based dynamic missions you can now specify for each mission: - Uniforms - Headgear - Vests - Weapons allowed - Sidearms allows. - (See \Missions\Blue\default2.sqf for examples). - [Still to do: upgrade statics for the same functionality; doable but will require adding these parameters to the spawn info for the groups of infantry, vehicle, submerged and air units]; - -Added: greater control of mission helis - you can now set variables in the mission file (see examples below). - when these are not defined in the mission file, defaults are used. - _chancePara = blck_chanceParaBlue; // Setting this in the mission file overrides the defaults - _noPara = blck_noParaBlue; // Setting this in the mission file overrides the defaults - _chanceHeliPatrol = blck_chanceHeliPatrolBlue; // Setting this in the mission file overrides the defaults - _noChoppers = blck_noPatrolHelisBlue; - _missionHelis = blck_patrolHelisBlue; - -Added: default minimun and maximum radius for groups to patrol. - blck_minimumPatrolRadius = 22; // AI will patrol within a circle with radius of approximately min-max meters. note that because of the way waypoints are completed they may more more or less than this distance. - blck_maximumPatrolRadius = 35; - -Changed: **** VERY IMPORTANT ****** - The definitions of private variables used in missions in now read in through an include statement (see Missions\Blue\default.sqf for an example) - Please update any custom mission you have generated accordingly. - This should save quite a bit of editing going forward. - Please note that if you do not update the private variables definitions list certain features of the mission spawner may not work due to issues with scope of variables. - -Changed: Each mission is now compiled at server startup which I hope will save a little server resource between restarts. - A few variables that were not used were eliminated. - Some declarations of private variables were consolidated. - Together these changes should be worth a small performance bump. - -Changed: Code for Heli Patrols redone. - Code that spawns paratroops moved to a separate function that is called when a player is within a certain radius of the mission. - Code that spawns a supplemental loot chest added - this will be spawned along with the paratroop reinforcements, if desired. - This crate can have customized loot (think ammo, building supplies, tools and food, ala Exile/Epoch airdrops). - -Changed: Logic for spawning paratroops was redone so it is more clear. - When helis are spawned the paratroops will spawn at the heli location at the location at which the heli spawn based on probability set in _chancePara in the mission file or the default for that mission difficulty. - When no helies are to be spawned, paratroops will spawn at the mission center when it spawns based on probability set in _chancePara in the mission file or the default for that mission difficulty. - A delay was added so that paratroops spawn when players are nearby for more drama !! - -Changed: Methods for detecting NULL Groups (rarely a problem with arma these days) simplified. - Still more work to be done here. - -Changed: Methods for defining mission crate loot were relaxed. - You can define each item either with the old method ["Item Name", minimun number, maximum number] or just "Item name". - -Fixed: disabled some logging that is not required except when debugging. -Fixed: AI Counts were not being shown at dynamic UMS. -Fixed: AI were glitching through walls. -Fixed: Emplaced weapons are now spawned at correct locations when their positions are defined in an array in the mission file. -Fixed: an issue with the experimental build whereby the number of dynamically tracked missions was not correctly spawned. -Fixed: Dead Ai in vehicles were sometimes detected as alive. Dead AI are now ejected. -Fixed: Vehicles are now properly released to players when all AI inside are killed when an HC is connected. - -Version 1.80 Build 118 -Added: you can now determine whether objects spawned at dynamic missions have simulation or damage enabled. - See the medicalCamp.sqf mission for an example of how this is done. -Added: you can now spawn simple objects as part of your mission landscape. Useful for STATIC missions only. -Added: lists of armed vehicles from which you can choose those you wish to spawn at vehicles broken down by category (wheeled, traced APC, Tank, etc) -Added: Three constants that define how far away missions are from players when they spawn. - blck_minDistanceToBases = 900; Minimum distance from any freq jammer or flag - blck_minDistanceToPlayer = 900; Minimum distance from any player - blck_minDistanceFromTowns = 300; Minimum distance from cites or towns. - -Changed: Default missions reworked to support the above. - -Version 1.79, Build 116 -Added: Map-specific information for Lythium. -Added: New configuration setting: blck_showCountAliveAI = true; When = true, the number of alive AI at a mission will be displayed by the mission marker. -Added: You can now define the types of patrol vehicles spawned based on AI difficulty. - -Fixed: Setting blck_useTimeAcceleration = false; now disables the time acceleration module. -Fixed: several issues with dynamic UMS missions. -Fixed: AI Heli's at missions should now be released to players when all AI are dead. -Fixed: script errors when dynamic simulation off. - -Changed: Code for checking the state of AI vehicles and releasing them to players was re-written. -Changed: Eliminated useless files from the debug folder (mission.pbo). - Please replace the debug folder in your mission PBO with the updated one found on the github. - [removed all scripts for markers from mission\debug. These are now located in custom_server\compiles\functions.] - -Version 6.78 Build 107 -Fixed: blck_baseSkill is now used properly to set skill of units. -Added: Units assemble in formation when spawned. - -Version 6.78 build 106 -Changed how event handlers are handled. -bug fixes -Removed lines specific to GRG servers. - -Version 6.76 Build 104 -Added: A new timer that determines the time after which Vehicles are deleted once all AI are dead if no player has entered the driver's seat. -Added: an optional variable in the template for missions called _missionGroups by which you can define the parameters (position, skill level, number, patrol radius) for each group spawned. - See the default2.sqf mission under custom_server\Missions\blue for an example -Changed: The method by which the server handles AI damage was changed to use MPHit. -Added: an MPKilled event handler for vehicles. - -Fixed: Static Vehicles were being spawned repeatedly. -Fixed: _missionGroups parameters were not being handled correctly. -Fixed: sever FPS was not being logged by GMS_passToHCs -Fixed: crate marker was not shown when in debug mode. -Known Issues: Vehicles are not unlocked when released to players if an HC is connected. - -Version 6.74 Build 97 -Added Core Code for spawning dynamic underwater missions. -Added Core Code for spawning scuba units and surface and SDV patrols. -Added Code to spawn static underwater missions. -Note: support for scuba AI required a significant re-write of the code for spawning AI groups and units. - -Changed static missions so that AI are spawned only when players are within 2000 meter. -Added optional respawn to static AI groups, vehicles, emplaced weaps and aircraft. -Added four functions that support spawning of static AI with setting for difficulty, patrol radius, and respawn time. - For examples, see the updated static eample mission - and blck_custom_config.sqf and the examples below: - - position difficulty radius respawn - [[[22920.4,16887.3,3.19144],"red",[1,2], 75, 120]] call blck_fnc_sm_AddGroup; - - weapon position difficulty radius (not used) respawn time - [["B_G_Mortar_01_F",[22867.3,16809.1,3.17968],"red",0,0]] call blck_fnc_sm_AddEmplaced; - - vehicle position difficulty radius respawn - [["B_G_Offroad_01_armed_F",[22819.4,16929.5,3.17413],"red", 600, 0]] call blck_fnc_sm_AddVehicle; - - aircraft position difficulty radius respawn - [["Exile_Chopper_Huey_Armed_Green",[22923.4,16953,3.19],"red", 1000, 0]] call blck_fnc_sm_AddAircraft; -Re-did event handlers for compatability with Arma 1.78+, and moved most code into pre-compiled functions that execute on the server. - -====================== -Version 6.72 Build 81 -[Added] Support for headless clients. This functionality works for one HC regardless of the name used for HCs. -[Added] Added an optional variable for mission patrol vehicles: _missionPatrolVehicles - One can use this variable to defin the spawn position and types of vehicles spawned at missions. - note: one can still have the type of vehicle randomized by using selectRandom and pointing it to either the default list of patrol vehicles for the mission system or providing a custom array of vehicle class names. - I added this because on some of our GRG missions the vehicles were being destroyed at the time they were spawned. -[Changed] Crates can now be lifted only AFTER a mission is completed. -[Changed] The client is now activated using remoteExec instead of a public variable. - **** Please be sure to update the files in the debug folder on your client. - -===================== -Version 6.71 Build 77 -[Added] HandleDamage Event Handler for Armed Vehicles to increase their interaction with players. -[Fixed] Mission name was not displayed with start or end messages when the mission marker labels were disabled. -[Fixed] the mission system would hang in some situations due to an undefined global variable in SLS. - -============================ -8/13/17 Version 6.61 Build 71 -[Added] Most parameters for numbers of loot, AI, and vehicle patrols can be defined as either a scalar value or range. - Note that there is backwards compatability to prior versions so you need make no changes to your configs if you do not wish to. - The major reason to include this feature is so that players to do not go looking for that third static weapon at an orange mission. They have to scope out the situation. -[Added] options to have multiple aircraft spawn per mission. - [Note that if you spawn more than one aircraft I recommend that you disable the paratroop spawns to avoid spawning more than 124 groups]. -[Added] an optional militarized setting whereby missions use a full complement of Arma air and ground vehicles including fighter jets and tanks. This is OFF by default. - Uncomment #define blck_milServer in custom_server\Configs\blck_defines to enable this. - [ Note!!! There are both general and mod-specific configs for the militarized missions.] -[Added] Support for setting a range for certain configurations rather than setting a single value. -This should make missions a little more varied in that players will no longer be looking for the 4 statics that always spawn at an orange mission. -This pertains to: - Numbers of Emplaced Weapons - Numbers of Vehicles Patrols - Numbers of Air Patrols - AI Skills; for example you can now set ["aimingAccuracy",[0.08,16]],["aimingShake",[0.25,0.35]],["aimingSpeed",0.5],["endurance",0.50], .... ]; - Numbers of Items to load into Mission and Static loot crates; for example, for the orange level of difficulty item counts could be revised as follows: - blck_lootCountsOrange = [[6,8],[24,32],[5,10],[25,35],16,1]; - -7/27/17 Version 6.59 Build 60 -[added] AI units in mission vehicles and emplaced weapons are notified of the location of the shooter when an AI unit is hit or killed. Location of the unit is revealed gradually between 0.1 and 4 where 4 is precise. Increments increase with increasing mission difficulty. - -6/1/17 Version 6.59 Build 59 -[changed] Players are no longer given crypto for each AI kill. Crypto added to AI Bodies was increased. -[fixed] error in GMS_fnc_setupWaypoints wherein _arc was not defined early enough in the script. -[fixed] Exile Respect Loss bug (temporary fix only). - -5/21/17 Version 6.58 build 58 -[Fixed] typos for blck_epochValuables. -[Fixed] All loot was removed from AI vehicles at the time a mission was completed. -[Fixed] When mission completion criteria included killing all AI, missions could be completed with alive AI in vehicles. - -4/6/17 Version 6.58 Build 54 -[Added] A FAQ presenting an overview of the mission system and addons. -[Changed] Helicopter crew waypoint system reverted to that from Build 46. -[Fixed] Mission timouts would prevent new missions from spawning after a while. -[Fixed] blck_timeAcceleration now determines if time acceleration is activated. -[Fixed] Missions did not complete correctly under certain circumstances. -[Fixed] Mission vehicles were not properly deleted, unlocked or otherwise handled at misison end or when AI crew were killed. -[Fixed] Throws errors when evaluating errors related to certain disallowed types of kills. -Known errors: throws errors with certain loot crate setups (Exile) - -3/23/17 Verision 6.58 build 48 -Turned debugging off -Added some preprocessor commands to minimize the use of if()then for debugging purposes when running without any debugging settings on. -Teaks to heli patrol waypoint system. -bugfixes. - -3/21/17 Version 6.58 Build 44 -[Added] Each mission now has a setting for mines which is set to false. To use the global setting in blck_config for yoru mission just change this to read: - _useMines = blck_useMines; -[Fixed] Logging by the time acceleration module was disabled. -[Fixed] Emplaced weapons now spawn in the correct locations. -[Fixed] Missions end correctly when all AI are dead and _endCondition = -[changed] Reverted to the waypoint system from build 42. - -3/18/17 Version 6.58 Build 44 -[Fixed] Time acceleration was not working. -[Fixed] blck_timeAcceleration now determines if time acceleration is activated. -[Fixed] The mission described by default2 in the blue missions folder now spawns correctly. - You can use this as a guide for how to place loot crates or static weapons at specific locations like inside or on top of structures. - Loot vehicles are now spawned correctly. - Loot crates positioned at specific locations are now spawned correctely. - static weapons to be spawned at specified positions are now spawned correctly. - That mission is disabled by default. -[Added] option to disable time acceleration (blck_timeAcceleration = true; line 30 of blck_config.sqf) -[Added] options to have armed heli's patrolling the missions and for them to drop AI. -[Added] options to have paratroops drop over missions as an alternative to the above. -[Added] Code optimization for GMS_fnc_spawnMissionAI.sqf and several other AI spawning scripts. -Added] Formalizing exception handling for the case in which a createGroup request returns grpNull. - If this happens during mission spawning the mission will be aborted and all mission objects and AI will be deleted. - This should prevent the mission system from crashing causing no further missions to spawn. -[Added] a new configuration that sets a cap on the maximum number of spawned missions. - blck_maxSpawnedMissions = 4; // Line 181 of blck_configs.sqf -[Added] a function blck_fnc_allPlayers which returns an array of allPlayers (as a temporizing fix till BIS patches the allPlayers function. - -[Changed] Coding improvements for waypoint generation. - Tried a new approach to generating waypoints to make AI more aggressive without the overhead of the last method. - -[Changed] Redid the mission spawner to spawn one random mission every 1 min for mission for which timers say they can be spoawned. - This will continue until the cap is reached then randomly select a mission from those that are ready to be respawned to be spawned next. - If you want the various missions to have an equal chance of being spawned at all times, give the the timers for blue, red, green and red timers the same values for Min and Max. -[Chaged] logic for detecting whether a player is near the mission center or loot crates to test if a player is near any of an array of location or objects. -[Added] a function blck_fnc_allPlayers which returns an array of allPlayers (as a temporizing fix till BIS patches the allPlayers function. - -To Do - consider moving back to storing AI in a group-based manner (doable easily, needs testing). - Build a template for static missions (planned for Ver 6.60). - Write a static mission spawning routine (planned for Ver 6.60). - -3/17/17 Version 6.58 Build 43 -Reverted back to v6.56 build 39 then: -[Added] a Hit event handler to make AI more responsive. All AI in the group to which the hit AI belongs are informed of the shooter's location. -[Changed] the Killed event handler as below. -[Added] New logic for informing AI of the location of players to give AI a more gradual ramp up from little knowledge about player location to full knowledge. -[Added] scripts and functions for reinforcements: a) heli patrols; b) paratroops. -[Added] ...\custom_server\Configs\blck_defines.hpp inside which you can disable APEX gear and other attributes. - -[Changed] Re-organized variables in the configs. -[Changed] Divided configs into tow basic parts: - - General configs for the mission system. - - Mod-specific configs. -[Changed] spawnMarker.sqf in the debug folder (mission.pbo) to reduce unneeded logging. - -3/13/17 Version 6.57 Build 41 -Changed the method of tracking live AI from an array of units to an array of groups which will aid in monitoring groups for a 'stuck' state. -Added Search and Destroy waypoints for each location in the waypoint cycle. -Change waypoint compbat mode to "COMBAT" -Added Group Waypoint Monitor that deals with the case wherein a group gets 'stuck' in a search and destroy waypoint without any nearby targets. -Updated spawnMarker.sqf in the debug folder (mission.pbo) to reduce unneeded logging. - -3/12/17 Version 6.57 Build 40 Reworked AI Event handlers -Added an event handler to make AI more responsive. -Revised logic for informing AI of the location of players to give AI a more gradual ramp up from little knowledge about player location to full knowledge. - -2/24/17 Version 6.56 Build 39. Reworked Mission End Criteria and timing of loading of loot chests -Added a check so that mission completion by players near loot crates was tripped only when players were on foot. -Added a setting that determines whether loot crates are loaded when the mission spawns or once the mission is complete. - see blck_loadCratesTiming = "atMissionCompletion"; (line 78) for this configuration setting. - -1/28/17 Version 6.55 Build 38 Bug Fixes -bug fixes -Commented out logging that is no longer needed -Removed a weapon from loot tables that could be used for dupping. - -1/24/17 Version 6.55 Build 35 Improved handling of static weapons with dead AI; added option to delete loot chests at some time after mission completion. -Added a new configuration blck_killEmptyStaticWeapons which determines if static weapons shoudl be disabled after the AI is killed. -Added a configuration blck_cleanUpLootChests that determines if loot crates are deleted when other mission objects are deleted. -Fixed an issue that prevented proper deletion of mission objects and live AI. - -1/23/17 Version 6.54 Build 33 Bug Fixes -Fixed typos in GMS_fnc_vehicleMonitor.sqf -Removed a few files that are not used or needed. -Removed some code that had been commented out from blck_functions.sqf. - -1/22/17 Version 6.54 build 32 Primarily performance-oriented improvements to switch from using timers and .sqf to a 'thread' that scans various arrays related to missions and mission objects using pre-compiled functions. -Changed code to test for conditions that trigger to spawn mission objects and AI completely -Rewrote the code for spawning emplaced weapons from scratch. -Fixed an error in how the waitTime till a mission was respawned after being updated to inactive status. -Added additional reporting as to the mission type for which AI, statics and vehicle patrols are being spawned. -Continued switching from blck_debugOn to blck_debugLevel. -Continued work to move much of the code from GMS_fnc_missionSpawner to precompiled functions. - - tested and working for all but the emplaced weapons module. -Removed old code that had been commented out from GMS_missionSpawner. -deactivated the 'fired' event handler -added an 'reloaded' event handler to units that adds a magazin of the type used to reload the weapon to prevent units running out of ammo. this also provides a break in firing and is more realistic. -Added a check to GMS_fnc_vehicleMonitor that addes ammo to vehicle cargo when stores are low. Removed the infinite ammo script for static and vehicle weapons, again for greater realism. -Increased number of rounds of ammo added to AI units for primary and secondary weapons. -Tweaked code in GMS_fnc_spawnUnit to increase efficiency. -Attempted a fix for occaisional issues with missions not triggering or ending by changing from distance to distance2D. -Tweaked code for deleting dead AI to also delete any weapons containers nearby. -Checked throughout for potential scope issues; ensured all private variables were declared as such. -Changed the method by which mission patrol vehicles and static weapons are deleted at the end of a mission. - -1/21/17 Build 29. Reverted to an older system for mission timers. -Went back to the timerless system for spawning missions. -Improved code for updating the array of pending/active missions - GMS_fnc_updateMissionQue.sqf re-written to take greater advantage of existing array commands: set and find. -Ensured that the array used to store the location(s) of active or recent missions is properly updated. - -1/13/17 Version 6.54 Build 27 -Rerverted back to the code that spawned a single instance of each mission until I can debug certain issues. - -1/7/17 Version 6.53 Build 24 AI difficulty updates; some performance improvements. -Added a setting blck_baseSkill = 0.7; // This defines the base skil of AI. Increase it to make AI more challenging. -Tweaked AI difficulty settings to make missions more difficult. -changed - GMS_EH_unitKilled - the event handler now uses precompiled rather than compiled on the fly code. -changed - several other minor performance tweaks were made server side. -changed - small changes were made the the loop in blck_client.sqf -Tweaked debugging information to reduced unnecessary logging when not in debug-mode. -Disabled the loop sending server fps client-side -fixed - GMS_fnc_updateMissionQue was not correctly updating mission information after mission completion. -fixed - GMS_fnc_mainThread was not deleted old AI and Vehicles from the arrays used to capture them after mission completion. -changed - calls to GMS_fnc_vehicleMonitor were moved inside the main loop. - -1/3/17 Version 6.51 Build 23 Added several new kinds of messaging to the UI. -Moved configuration for the client from debug\blckclient.sqf to debug\blckconfig.sqf. -Added a setting blck_useKillMessages = true/false; (line 60 of the config. when true, kill messages will be send to all players when a player kills an AI. The style of the message is controlled client-side (debug\blck_config.sqf) -Added a setting blck_useKillScoreMessage = true/false; // (line 61 of the config) when true a tile is displayed to the killer with the kill score information -Added a setting blck_useIEDMessages = true/false; // when true players will receive a message that their vehicle was damaged when AI are killed in a forbidden way (Run over Or Killed with vehicle-mounted weapons) -Fixed: Messages that a nearby IED was detonated are now properly displayed when players illegally kill AI. -Added a way to easily include / exclude APEX items. To exclude them comment out the line - #define useAPEX 1 - at approximately line 219 in the config. - -12/21/16 Version 6.50 Build 21 Added checks that delete empty groups. -Added a check for mod type to the routine that deletes empty groups as this is only needed for Epoch. -Added back the code that (a) eliminates the mission timers and (b) allows multiple instances of a mission to be spawned. - -12/20/16 Version 6.46 Buid 20 Tweaks to time acceleration module. -Moved Variables for time acceleration to the config files. -Reworked code for time acceleration to use timeDay and BIS_fnc_sunriseSunsetTime. - -11/20/16 Build 6.45 Build 19 UI-related additions and bug fixes. -Added Option to display mission information in Toasts (Exile Only). -Fixed an issue related to bugs in Arma 1.66 - -11/16/16 Version 6.44 Build 15 Added options for automated generation of location blacklists; added APEX gear; tweaks to the code that loads items into crates. -Added parameters - blck_blacklistTraderCities=true; // the locations of the Epoch/Exile trader cities will be pulled from the config and added to the location blacklist for the mission system. - blcklistConcreteMixerZones = true; // Locations of the concrete mixers will be pulled from the configs; no missions will be spawned within 1000 m of these locations. - blck_blacklistSpawns = true; // Locations of Exile spawns will be pulled from the config. No missions will spawn within 1000 m of these locations. -Added: the main thread now runs a function that checks for empty groups. -Fixed: The mission system would hang on epoch after a while because createGroup returned nullGroup. this appeared to occur because the maximum number of active groups had been reached. Deleting empty groups periodically solved the issue on a test machine. -Teaked: code to check whether a possible mission spawn location is near a flag or plot pole. Still needs work. -Added: Completed adding EDEN weapons, optics, bipods, optics to AI configurations and mission loot crates. -Added APEX headgear and uniforms. (Note, you would need to add any of these you wished for players to sell to Epoch\\epoch_config\CfgPricing.hpp on Epoch) -Changed: Definitions of blacklist locations such as spawns moved from GMS_findWorld.sqf to the blck_configs_(epoch|exile). -Changed: Divided rifles and optics into subcategories to better enable assigning weapons to AI difficulties in a sort of class-based way, e.g., 556, 6.5, or LMG are separate classes. -Changed: DLS crate loader (not publically available yet) now uses blck_fnc_loadLootItemsFromArray rather than the prior approach for which specific crate loading functions were called depending on the loadout type (weapons, building supplies, foord etc). -Fixed: You can now loot AI bodies in Epoch. - -11/12/16 Version 6.43 Build 12 Added MAP ADDONS and Loot Crate Spawners. -Added: MapAddons - use this to spawn AI strongholds or other compositions you generate with Eden editor at server startup. -Added: Loot Crate Spawner - Spawn loot crates at prespecified points. This is designed so that you can spawn crates inside buildings or other structures spawned through the map-addons. -Added: APEX weapons, sights and optics to AI and loot crates. - -11/12/16 Version 6.42 Build 11 Added code to fit weapons attachments. -Enhancements to code to equip weapons; pointrs, silencers and bipods are now attached. - -11/11/16 Version 6.42 build 10 Added code to fit weapons attachments. Improved code to spawn mission objects. -Redid the code that spawns the objects at missions to work properly with the new formats generated by M3Arma EDEN Editor whilc being backwards compatible with older formats used in the existing missions. -Added code to add scopes and other attachments to AI weapons. -Added new variable blck_blacklistedOptics which you can use to block spawning optics like TMS. -Added new parameter blck_removeNVG which when true will cause NVG to be deleted from AI bodies. -Fixed: launchers and rounds should now be deleted when blck_removeLaunchers = true; -Fixed: All AI should spawn with a uniform. -More bug fixes and correction of typos. - -11/2/16 Version 6.41 Build 9 Kill message improvements; added money to AI. -Added a parameter blck_useKilledAIName that, when true, changes the kill messages to show player name and AI unit name -Added message to players for killstreaks and a crypto/Tabs bonus for killstreaks. -Exile: AI spawn with a few tabs. -//Epoch: AI spawn with a few Crypto -Corrected an error that would spawn Epoch NVG on AI in Exile. - -10/25/16 Version 6.4 Build 8 Code improvements. -Reworked the code to spawn vehicle patrols and static weapons and clean them up. -Reworked the code that messages players to be sure that calling titleText does not hang the messaging function and delay hints or system chat notifications. - -10/22/16 v 6.3 Build 8-14-16 Code performance improvements. -Moved routines that delete dead AI, Alive AI and mission objects from individual loops to a single loop spawned by blck_init.sqf. -Added functions to cache these data with time stamps for later time-based deletion. - -10/21/16 Version 6.2 Build 7 Coding improvements -Redid system for markers which are now defined in the mission template reducing dependence on client side configurations for each mission or marker type. -Bug-fixes for helicrashes including ensuring that live AI are despawned after a certain time. - -10-1-16 Version 6.1.4 Build 6 Added a time acceleration function -1) Added back the time acceleration module - -9-25-16 Version 6.1.4 Build 6 bug fixes; added metadata. -1) Added metadata for Australia 5.0.1 -2) Fixed bugs with the IED notifications used when a player is penalized for illeagal AI Kills. _fnc_processIlegalKills (server side) and blckClient (client side) reworked. _this select 0 etc was replaced with params[] throughout. Many minor errors were corrected. - -9/24/16 Version 6.1.3 Build 5 Code optimization -1) Re-wrote the SLS crate spawning code which now relies on functions for crate spawning and generating a smoke source already used by the mission system. Replaced old functions with newer ones (e.g., params[] and selectRandom). Found a few bugs. Broke the script up into several discrete functions. Tested on Exile and Epoch, -2) Reworked the code for generating a smoke source. Added additional options with defaults set using params[]. - -9-19-16 Ver 6.1.2/11/16 Bug fixes. -Minor bug fixes to support Exile. -Corrected errors with scout and hunter missions trying to spawn using Epoch headgear. -Corrected error wherein AI were spawned as Epoch soldiers -Inactivated a call to an exile function that had no value - -9-15-16 vER 6.1.1 Bug fixes. -1) Reverted to the old spawnUnits routine because the new one was not spawning AI at Scouts and Hunters correctly. - -9-13-16 Ver 6.10 Improved vehicle patrols. -1) Added waypoints for spawned AI Vehicles. -2) Reworked the logic for generating the positions of these waypoints -3) Added loiter waypoints in addition to move wayponts. -4) Reworked the param/params for spawnUnits -5) several other minor optimizations. - -9-3-16 Ver 6.0 -1) Re-did the custom_server folder so the mod automatically starts. Blck_client.sqf no longer calls the mod from the server. -2) Added a variable blck_modType which presently can be either "Epoch" or "Exile" with the aim of having a single mission system for both mods. -3) Added a more intelligent method for loading key components (variables, functions, and map-specific parameters). -4) Re-did all code to automatically select correct parameters to run correctly on either exile or epoch servers. -5) Added the Exile Static Loot Crate Spawner; Re-did this to load either an exile or epoch version as needed since a lot of the variables and also the locations tables are unique. -6) Added the Dynamic Loot system from Exile again with Exile and Epoch specific configurations; here the difference is only in the location tables. -7) Pulled the map addons function from the Exile build and added a functionality to spawn addons appropriately for map and mod type. -8) Helicrashes redone to provide more variability in the types of wrecks, loot and challenge. These are spawned by a new file Crashes2.sqf -9) Added a setting to determine the number of crash sites spawned at any one time: blck_maxCrashSites. Set to -1 to disable altogether. -10) Added settings to enable / disable specific mission classes, e.g., blck_enableOrangeMissions. Set to 1 to enable, -1 to disable. - -8-14-16 -Added mission timout feature, set blck_MissionTimeout = -1 to disble; -Changed to use of params for all .sqf which also eliminated calls to BIS_fnc_params -changed to selectRandom for all .sqf - -some changes to client side functions to eliminate the public variable event handler (credits to IT07 for showing the way) -Added the armed powerler to the list of default mission vehicles. - -2/28/16 -1) Bug fixes completed. Cleanup of bodies is now properly separated from cleanup of live AI. Cleanup of vehicles with live AI is now working correctly. -2) Released to servers this morning. -3) Next step will be to add in the heli reinforcements for ver 5.2. - -2/20/16 -Bugfixes and enhancements. -1) added checks for nearby bases or nearby players when spawning missions. -2) Fixed typos in Medical Camp missions. -3) Added two new modes for completing mission: 1) mission is complete when all AI are killed; 2) mission is complete when player reaches the crate OR when all AI are killed. - -In Progress -1) Mission timouts -2) Added optional reinforcments via helicopters which can then patrol the mission area. - -2/11/16 -Major Update to Build 5.0 - -1) All missions but heli crashes are spawned using a single mission timer and mission spawner -2) The mission timer now calles a file containing the mission parameters. The mission spawner is included and run from that file. -3) A kill feed was added reporting each AI kill. -4) AI kills are now handled via an event handler run on the server for forward compatability with headless clients. -5) Multiple minor errors and bug fixes related to mission difficulty, AI loadouts, loot and other parameters were included. -6) The first phase of restructuring of the file structure has been completed. Most code for functions and units has been moved to a compiles directory in Compiles\Units and Compiles\Functions. -7) Some directionality and randomness was added where mission objects are spawned at random locations from an array of objects to give the missions more of a feeling of a perimeter defense where H-barrier and other objects were added. -8) As part of the restructuing, variables were moved from AIFunctions to a separate file. -9) Bugs in routines for cleanup of dead and live AI were fixed. A much simpler system for tracking live AI, dead AI, locations of active and recent missions, was implemented because of the centralization of the mission spawning to a single script diff --git a/Adding New Dynamic Missions-HowTo.txt b/Adding New Dynamic Missions-HowTo.txt deleted file mode 100644 index ea9f37f..0000000 --- a/Adding New Dynamic Missions-HowTo.txt +++ /dev/null @@ -1,51 +0,0 @@ - - -This update includes a plugin for the 3DEN Editor that simplifies creation the .sqf files that code a mission. - -My approach to doing this as follows: - -1) Start Arma with the following mods: - @epoch;@exile;@blckeagls_3DEN. - (adjust to meet your specific needs; obviously any additional mods such as those from CUP can be included). - -2) Start the Eden Editor. -3) Lay out your static mission. You should: - place a marker that will be displayed when the mission is initialized (save your work) - Set the icon/shape, color and any text for your marker - - Recommended: place a road cone with a flasher at the center of your mission - Note, you can comment this out later. - It is used to calculate positions of everything else. - - Place all buldings, sandbags, etc (save your work) - Place any vehicle or air patrols - - Note that they will patrol using the postion at which you place them as the centerpoint of their patrol. - (save your work). - - Place any static weapons. - Note, you can place these inside or on top of buildings. - (save your work). - - Place a unit at each location you wish to have a group patrol. - Note: The mission spawner will attempt to spawn an entire group at these locations using the weapons, uniforms, - etc defined in blck_config.sqf or its derivatives. - Note: you can spawn this inside or on top of buildings. - - Place some sort of ammo box, cardboard box, or other loot container. - Save your work. - - Set Difficulty level as desired using the dropdown menu at the right of the toolbar. - Set any other mission parameters including: - loot crate spawn timing, - loot crate fill timing, - mission end criteria - - Select Export Dynamic Mission from the blckeagls dropdown menu. - Select Copy, then paste the text into a text editor. - Change any settings including numbers of AI, AI respawn times, or patrol radii. - - Save the file based on difficulty level. - For a Blue difficulty mission, save the file to the custom_server\Missions\Blue directory. - Add filename for your new mission to custom_server\Missions\GMS_missionLists.sqf - -Pbo custom_server and test your new mission. diff --git a/Adding New StaticMissions-HowTo.txt b/Adding New StaticMissions-HowTo.txt deleted file mode 100644 index c613042..0000000 --- a/Adding New StaticMissions-HowTo.txt +++ /dev/null @@ -1,45 +0,0 @@ - - -This update includes an 3DEN plugin to make it easy to export static missions. -This can be done by laying out everything for your static mission in the 3DEN editor, -then using the @blckeagls_3DEN editor plugin. - -My approach to doing this as follows: - -1) Start Arma with the following mods: - @epoch;@exile;@blckeagls_3DEN. - (adjust to meet your specific needs; obviously any additional mods such as those from CUP can be included). - -2) Start the Eden Editor. -3) Lay out your static mission. You should: - place a marker indicating where it will spawn (save your work) - Set the icon/shape, color and any text for your marker - - Place all buldings, sandbags, etc (save your work) - Place any vehicle or air patrols - - Note that they will patrol using the postion at which you place them as the centerpoint of their patrol. - (save your work). - Place any static weapons. - Note: these can be inside or on top of buildings. - - (save your work). - Place a unit at each location you wish to have a group patrol. - Note: The mission spawner will attempt to spawn an entire group at these locations using the weapons, uniforms, - etc defined in blck_config.sqf or its derivatives. - Note: groups can be spawned inside or on top of buildings; just place on unit whereever you want a groupl - - Place some sort of ammo box, cardboard box, or other loot container. - Save your work. - - Note the postion of your marker. - - Set Difficulty level as desired using the dropdown menu at the right of the toolbar. - - Select Export Static Mission from the blckeagls dropdown menu. - Select Copy, then paste the text into a text editor. - Change any settings including numbers of AI, AI respawn times, or patrol radii. - - Save the file to the custom_server\Missions\Static\missions directory then - add filename for your new static mission to custom_server\Missions\Static\GMS_StaticMissionLists.sqf - -in order to specify additional options. Use the information provided in the example static missions to guide you. diff --git a/FAQ.txt b/FAQ.txt index ed51460..28e1f50 100644 --- a/FAQ.txt +++ b/FAQ.txt @@ -1,10 +1,10 @@ This addon includes several modules which will be discussed in the following order: 1. The core, dynamic mission system 2. A static mission system -3. A custom time acceleration module -4. A module to execute scripts for custom bases (map addons) and so forth. -5. A module to spawn loot crates in specific locations at server startup. -6. Tools to export mission layouts designed in the editor for use with mission templates. This allows you to quickly add content to your server. Tools are available for both static and dynamic missions. +3. A custom time acceleration module (disabled by default) +4. A module to execute scripts for custom bases (map addons) and so forth (disabled by default, probably no longer useful). +5. A module to spawn loot crates in specific locations at server startup (disabled by default, probably no longer useful). +6. A plugin for the 3DEN editor to help configure and export missions. 1. Core Mission System. @@ -42,8 +42,8 @@ General settings include: Where possible, I have tried group weapons based on desirability from low rank (5.56 ammo) to high rank (7.6 caliber or larger, large bore sniper, heavy LMG) then combine these groups to define parameters as needed. The missions themselves are spawned from templates which can be used to define most aspects of the missions including: - the messages sent to players; - Text used to label the mark + Messages sent to players; + Text used to label the marker Type of marker used to label the map Number of AI groups and number of AI or, alternatively desired their spawn locations. (optional) loot chest positions and loot to be loaded @@ -53,9 +53,9 @@ The missions themselves are spawned from templates which can be used to define m To create and run new missions simply: layout an AI base in the Arma 3 editor, - export the base as an .sqf using the tools provided. + define commonly adjusted setting using the editor plugin. + export the base as an .sqf using the editor plugin provided. Define the above parameters (nu. AI groups, No AI, etc) - add this information to the mission template and modify any messages accordingly Add the name of the file (e.g., "newAImission" to the list of missions to be spawned of that class in ...\custom)server\missions\GMS_missionLists.sqf Repack your custom_server.pbo diff --git a/INSTALLATION.txt b/INSTALLATION.txt index 9795e15..747ab01 100644 --- a/INSTALLATION.txt +++ b/INSTALLATION.txt @@ -1,8 +1,10 @@ Installation: +///////////////////////////// +CLIENT ///////////////////////////// // MPMissions - modify your mission pbo (epoch.Altis.pbo) as follows. -1) Unpack the Zip file you downloaded from the Github to a folder in a convenient location. +1) Unpack the Zip file you downloaded from the Github to a convenient location. 2) Unpack your mission pbo (epoch.Altis.pbo or Exile.Altis.pbo). 3) Open the folder containing the unpacked mission. 4) Copy the debug folder from your download (MPMissions\epoch.Altis or MPMissions\exile.Altis) @@ -21,6 +23,16 @@ Pack custom_server. Add the @GMS folder to the root directory of your server (the same location as your mods such as @Epoch or @Exile Add "@GMS;" to -servermods in the startup parameters for your server. +Alternative method: +Copy custom_server to either: +@epochhive\addons + +or + +@exileserver\addons + +as appropriate. + ///////////////////////// // Battleye Exceptions diff --git a/KnownIssues.txt b/KnownIssues.txt index 0deddf5..2d2e02d 100644 --- a/KnownIssues.txt +++ b/KnownIssues.txt @@ -1,10 +1,11 @@ Known issues -6.96 +7.00 There is no consistent check for the case in which the call to createGroup returns grpNull because the max number of groups on that side has been spawned. some AI vehicles may still wander some distance from the mission center. -The distribution of missions is a bit West-favored on Altis (Ghost will fix). +The distribution of missions is a bit West-favored on Altis. +Mission spawning is broken on Namalsk diff --git a/README.md b/README.md index b77bc58..34c2562 100644 --- a/README.md +++ b/README.md @@ -13,9 +13,10 @@ Included is an updated version of blckeagls mission system. This began as an eff * Credits Epoch Mod developer team. + Exile Mod developer team. blckeagls - Mission system 2.0.2 Thomas_TKO for new missions - poreid for endless testing and feedback + porkeld for endless testing and feedback Schalldampfer for bug reports and coding tips Grahame for suggestions for new features, coding improvements and updates to the Epoch-specific Configs. Narines - bug fixes and improvements. @@ -30,7 +31,7 @@ Included is an updated version of blckeagls mission system. This began as an eff KiloSwiss (SEM) Hogscrapper (HC missions for A3) the Vampire (DZMS and VEMF) - The FUCHS (EMS) + The FUCHS lazylink (the original mission system) Matt11 (Wicked AI) Updates: Face (A3EAI/A3XAI) @@ -40,7 +41,7 @@ Included is an updated version of blckeagls mission system. This began as an eff * Compatability Works well with VEMF, SEM, and A3AI all running on the same server. -* Please see the change log for a full listing of the most current changes. +* Please see the change log for a full listing of the most recent changes. -------------------------- License diff --git a/changeLog.sqf b/changeLog.sqf index 1016d3b..8f7ceba 100644 --- a/changeLog.sqf +++ b/changeLog.sqf @@ -9,17 +9,33 @@ Many thanks for new Coding and ideas from Grahame. Significant Changes: + ===================== -7.00 Build 214 -New: Option to drop crates on a parachute at mission spawn which adds some randomness to where crates end up. - blck_spawnCratesTiming = "addMissionSpawnAir"; +7.00 Build 218 +New: Option to drop crates on a parachute at mission spawn which adds some randomness to where crates end up. + blck_spawnCratesTiming = "atMissionSpawnAir"; + +New: You can now add money to crates at static missions by defining the following parameter in your .sqf for the mission. + _crateMoney = 10000; + // this can be a value or a range such as [1000,10000]; + a random amount of money from 0 to the maximum defined will be added. + +New: Added some basic error checking and logging for incorrect entries for some key settings. + +New: 3DEN Editor plugin exports missions as .sqf formated text ready to paste into a file. + See the instructions in the @blckeagls_3DEN folder of this download for more information. + Fixed: Don and Hostage missions could not be completed Fixed: Missions tended to spawn all at once Fixed: vehicles are spawned at a safe spot which should reduce unintended explosions Fixed: Missions sometimes spawned on steep hillsides. Fixed: Vehicles sometimes blew up on spawn. -Added: The system has been upgreaded to a state-based system, meaning one scrpt is running once all missions are initialized. +Fixed: Money was not added to crates at dynamic missions + +Changed: Timers for spawning missions adjusted a bit to space out spawn/timeouts a bit more. +Changed: The system has been upgreaded to a state-based system, meaning only one script (GMS_fnc_mainThread)is running once all missions are initialized. Changed: a lot of debugging was removed. +Changed: List of missions for dynamic Underwater missions was moved to \Missions\GMS_missionLIsts.sqf 6.98 Build 206