Compare commits
13 Commits
4.0.0
...
1bdbdd1273
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1bdbdd1273 | ||
|
|
d4c01c6554 | ||
|
|
2866153654 | ||
|
|
23dc0656a6 | ||
| ef83d41a32 | |||
| e76da62b7f | |||
|
|
aaad8675a6 | ||
| c00f1b0e17 | |||
|
9f89ec12d5
|
|||
|
e55c9a0751
|
|||
|
5114ae334f
|
|||
|
296f945ea3
|
|||
|
fdcf70b713
|
71
.gitea/workflows/create-testing-snapshot.yaml
Normal file
71
.gitea/workflows/create-testing-snapshot.yaml
Normal file
@@ -0,0 +1,71 @@
|
||||
name: Generate testing snapshot
|
||||
on:
|
||||
push:
|
||||
branches: [develop]
|
||||
|
||||
jobs:
|
||||
Clean:
|
||||
name: Create testing release
|
||||
runs-on: windows
|
||||
steps:
|
||||
- name: Diagnostics
|
||||
run: |
|
||||
echo "repository: ${{ gitea.repository }}"
|
||||
echo "ref: ${{ gitea.ref }}"
|
||||
echo "ref_name: ${{ gitea.ref_name }}"
|
||||
echo "sha: ${{ gitea.sha }}"
|
||||
echo "api_url: ${{ gitea.api_url }}"
|
||||
echo "workflow: ${{ gitea.workflow }}"
|
||||
|
||||
- name: Checkout framework
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
path: MissionFramework
|
||||
|
||||
- name: Clean framework
|
||||
run: |
|
||||
Remove-Item -Recurse MissionFramework\aaFrameworkUtils
|
||||
Remove-Item -Recurse MissionFramework\framework\x
|
||||
Remove-Item -Recurse MissionFramework\.git*
|
||||
|
||||
- name: Backup artifacts from runner
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: framework-test-snapshot
|
||||
path: MissionFramework
|
||||
|
||||
- name: Create archive
|
||||
run: Compress-Archive MissionFramework framework-test-snapshot.zip
|
||||
|
||||
- name: Delete old testing-release release
|
||||
run: |
|
||||
$headers = @{
|
||||
"accept" = "application/json"
|
||||
"Authorization" = "token ${{secrets.RELEASE_TOKEN}}"
|
||||
}
|
||||
Invoke-WebRequest -Uri "${{ gitea.api_url }}/repos/${{ gitea.repository }}/releases/tags/testing-release" -Method Delete -Headers $headers
|
||||
|
||||
- name: Delete old testing-release tag
|
||||
run: |
|
||||
$headers = @{
|
||||
"accept" = "application/json"
|
||||
"Authorization" = "token ${{secrets.RELEASE_TOKEN}}"
|
||||
}
|
||||
Invoke-WebRequest -Uri "${{ gitea.api_url }}/repos/${{ gitea.repository }}/tags/testing-release" -Method Delete -Headers $headers
|
||||
|
||||
- name: Create new testing-release tag
|
||||
run: |
|
||||
$headers = @{
|
||||
"accept" = "application/json"
|
||||
"Authorization" = "token ${{secrets.RELEASE_TOKEN}}"
|
||||
}
|
||||
Invoke-WebRequest -Uri "${{ gitea.api_url }}/repos/${{ gitea.repository }}/tags" -Method Post -Headers $headers -ContentType "application/json" -Body "{`"message`": `"testing-release`", `"tag_name`": `"testing-release`", `"target`": `"${{ gitea.sha }}`"}"
|
||||
|
||||
- name: Create new testing-release
|
||||
uses: https://gitea.com/actions/gitea-release-action@v1.1.6
|
||||
with:
|
||||
tag_name: 'testing-release'
|
||||
name: 'testing-release'
|
||||
prerelease: true
|
||||
files: |-
|
||||
framework-test-snapshot.zip
|
||||
@@ -95,7 +95,9 @@ class Params
|
||||
|
||||
|
||||
// CfgFunctions
|
||||
#include "framework\CfgFunctions.hpp"
|
||||
class CfgFunctions {
|
||||
#include "framework\CfgFunctions.hpp"
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,180 +1,181 @@
|
||||
#include "script_mod.hpp"
|
||||
|
||||
class CfgFunctions {
|
||||
|
||||
class DOUBLES(PREFIX,init) {
|
||||
class functions {
|
||||
file = "framework\init\functions";
|
||||
class initServer { postInit = 1;};
|
||||
class initClient { postInit = 1;};
|
||||
class setDefaults { postInit = 1; };
|
||||
class addAARChatHandler { postInit = 1; };
|
||||
class addRespawnChatHandler { postInit = 1; };
|
||||
};
|
||||
class DOUBLES(PREFIX,init) {
|
||||
class functions {
|
||||
file = "framework\init\functions";
|
||||
class initServer { postInit = 1;};
|
||||
class initClient { postInit = 1;};
|
||||
class setDefaults {};
|
||||
class addAARChatHandler {};
|
||||
class addRespawnChatHandler {};
|
||||
class checkMissionSettings {};
|
||||
};
|
||||
|
||||
class PREFIX {
|
||||
class ambience {
|
||||
file = "framework\ambience";
|
||||
class flakInitVehicle {};
|
||||
class flakEH {};
|
||||
};
|
||||
};
|
||||
|
||||
class PREFIX {
|
||||
class ambience {
|
||||
file = "framework\ambience";
|
||||
class flakInitVehicle {};
|
||||
class flakEH {};
|
||||
};
|
||||
};
|
||||
|
||||
class DOUBLES(PREFIX,client) {
|
||||
class functions {
|
||||
file = "framework\client\functions";
|
||||
class bindEmptyGroupGarbageCleanup { postInit = 1; };
|
||||
class bindEventHandlers { postInit = 1; };
|
||||
class bindVehicleActions { postInit = 1; };
|
||||
class addZenModules {postInit = 1;};
|
||||
};
|
||||
class DOUBLES(PREFIX,client) {
|
||||
class functions {
|
||||
file = "framework\client\functions";
|
||||
class initClient {};
|
||||
class addMicroDAGRWaypoints {};
|
||||
class addZenModules {};
|
||||
class bindEventHandlers {};
|
||||
class bindUnconsciousListener {};
|
||||
class bindVehicleActions {};
|
||||
};
|
||||
};
|
||||
|
||||
class DOUBLES(PREFIX,common) {
|
||||
class functions {
|
||||
file = "framework\common\functions";
|
||||
class addCBASettings { preInit = 1; };
|
||||
class logMissionInfo {};
|
||||
class addPlayerInfoToArray {};
|
||||
class createOrUpdateDiaryRecord {};
|
||||
class getApprovedAssetsCfg {};
|
||||
class getBattalionCfg {};
|
||||
class getNameOfBase {};
|
||||
class getNearestBase {};
|
||||
class log {};
|
||||
class checkPlayerInventory {};
|
||||
class logSettingChanged {};
|
||||
class padString {};
|
||||
class recurseSubclasses {};
|
||||
};
|
||||
class DOUBLES(PREFIX,common) {
|
||||
class functions {
|
||||
file = "framework\common\functions";
|
||||
class addCBASettings { preInit = 1; };
|
||||
class logMissionInfo {};
|
||||
class addPlayerInfoToArray {};
|
||||
class createOrUpdateDiaryRecord {};
|
||||
class getApprovedAssetsCfg {};
|
||||
class getBattalionCfg {};
|
||||
class getNameOfBase {};
|
||||
class getNearestBase {};
|
||||
class log {};
|
||||
class checkPlayerInventory {};
|
||||
class logSettingChanged {};
|
||||
class padString {};
|
||||
class recurseSubclasses {};
|
||||
};
|
||||
};
|
||||
|
||||
class DOUBLES(PREFIX,fbcb2_assets) {
|
||||
class functions {
|
||||
file = "framework\fbcb2_assets\functions";
|
||||
class addCBASettings {preInit=1;};
|
||||
class initServer {};
|
||||
class initClient {};
|
||||
class getCallsignFromClassname {};
|
||||
class getCurrentAssetsByBase {};
|
||||
class getInventory {};
|
||||
class getMagsForWeapon {};
|
||||
class getStartingAndCurrentAssets {};
|
||||
class getStartingAssetsByBase {};
|
||||
class getVehicleData {};
|
||||
class getWeaponry {};
|
||||
class hintAllApprovedAssets {};
|
||||
class isAssetInRangeOfBase {};
|
||||
class removeAssetDiaryRecords {};
|
||||
class removeMarkersOnMap {};
|
||||
class showMarkersOnMap {};
|
||||
class updateAssetDiary {};
|
||||
class updateAssetsByBase {};
|
||||
};
|
||||
class DOUBLES(PREFIX,fbcb2_assets) {
|
||||
class functions {
|
||||
file = "framework\fbcb2_assets\functions";
|
||||
class addCBASettings {preInit=1;};
|
||||
class initServer {};
|
||||
class initClient {};
|
||||
class getCallsignFromClassname {};
|
||||
class getCurrentAssetsByBase {};
|
||||
class getInventory {};
|
||||
class getMagsForWeapon {};
|
||||
class getStartingAndCurrentAssets {};
|
||||
class getStartingAssetsByBase {};
|
||||
class getVehicleData {};
|
||||
class getWeaponry {};
|
||||
class hintAllApprovedAssets {};
|
||||
class isAssetInRangeOfBase {};
|
||||
class removeAssetDiaryRecords {};
|
||||
class removeMarkersOnMap {};
|
||||
class showMarkersOnMap {};
|
||||
class updateAssetDiary {};
|
||||
class updateAssetsByBase {};
|
||||
};
|
||||
};
|
||||
|
||||
class DOUBLES(PREFIX,fbcb2_main) {
|
||||
class functions {
|
||||
file = "framework\fbcb2_main\functions";
|
||||
class initClient {};
|
||||
class addEnvironmentRecord {};
|
||||
class addFrequenciesRecord {};
|
||||
class addSignalColorsRecord {};
|
||||
};
|
||||
class util {
|
||||
file = "framework\fbcb2_main\util";
|
||||
class formatRadioElementForDiary {};
|
||||
class generateElementFrequencyRecordText {};
|
||||
};
|
||||
class DOUBLES(PREFIX,fbcb2_main) {
|
||||
class functions {
|
||||
file = "framework\fbcb2_main\functions";
|
||||
class initClient {};
|
||||
class addEnvironmentRecord {};
|
||||
class addFrequenciesRecord {};
|
||||
class addSignalColorsRecord {};
|
||||
};
|
||||
|
||||
class DOUBLES(PREFIX,mapcopy) {
|
||||
class functions {
|
||||
file = "framework\mapcopy\functions";
|
||||
class addCBASettings {preInit=1;};
|
||||
class initClient {};
|
||||
class getMapMarkers {};
|
||||
class loadMapMarkers {};
|
||||
class mapMarkerToString {};
|
||||
class stringToMapMarker {};
|
||||
};
|
||||
class util {
|
||||
file = "framework\fbcb2_main\util";
|
||||
class formatRadioElementForDiary {};
|
||||
class generateElementFrequencyRecordText {};
|
||||
};
|
||||
};
|
||||
|
||||
class DOUBLES(PREFIX,performance) {
|
||||
class functions {
|
||||
file = "framework\performance\functions";
|
||||
class addCBASettings {preInit=1;};
|
||||
class addDNI_PlayerFPS { postInit = 1; };
|
||||
|
||||
// PFHs managed in addCBASettings onChange code
|
||||
class addClientStatsPFH {};
|
||||
class calculateClientStats {};
|
||||
class addServerStatsPFH {};
|
||||
class calculateServerStats {};
|
||||
};
|
||||
class DOUBLES(PREFIX,mapcopy) {
|
||||
class functions {
|
||||
file = "framework\mapcopy\functions";
|
||||
class addCBASettings {preInit=1;};
|
||||
class initClient {};
|
||||
class getMapMarkers {};
|
||||
class loadMapMarkers {};
|
||||
class mapMarkerToString {};
|
||||
class stringToMapMarker {};
|
||||
};
|
||||
};
|
||||
|
||||
class DOUBLES(PREFIX,reinsert) {
|
||||
class functions {
|
||||
file = "framework\reinsert\functions";
|
||||
class addCBASettings {preInit=1;};
|
||||
};
|
||||
class server {
|
||||
file = "framework\reinsert\server";
|
||||
class initServer {};
|
||||
class addToQueue {};
|
||||
class globalShowQueue {};
|
||||
class removeFromQueue {};
|
||||
class returnReinsertQueueNotification {};
|
||||
class validateQueue {};
|
||||
};
|
||||
class client {
|
||||
file = "framework\reinsert\client";
|
||||
class initClient {};
|
||||
class addAceSelfActions {};
|
||||
class addCheckQueueSelfAction {};
|
||||
class requestShowQueue {};
|
||||
};
|
||||
class DOUBLES(PREFIX,performance) {
|
||||
class functions {
|
||||
file = "framework\performance\functions";
|
||||
class addCBASettings {preInit=1;};
|
||||
class addDNI_PlayerFPS {postInit = 1;};
|
||||
|
||||
// PFHs managed in addCBASettings onChange code
|
||||
class addClientStatsPFH {};
|
||||
class calculateClientStats {};
|
||||
class addServerStatsPFH {};
|
||||
class calculateServerStats {};
|
||||
class addEmptyGroupCleanupPFH {};
|
||||
};
|
||||
};
|
||||
|
||||
class DOUBLES(PREFIX,resupply) {
|
||||
class functions {
|
||||
file = "framework\resupply\functions";
|
||||
class addCBASettings {preInit=1;};
|
||||
class initClient {};
|
||||
class createBox {};
|
||||
class getSupplyCratesCfg {};
|
||||
class addArsenalObjectSpawnBoxActions {};
|
||||
};
|
||||
class DOUBLES(PREFIX,reinsert) {
|
||||
class functions {
|
||||
file = "framework\reinsert\functions";
|
||||
class addCBASettings {preInit=1;};
|
||||
};
|
||||
|
||||
class DOUBLES(PREFIX,triageIcons) {
|
||||
class functions {
|
||||
file = "framework\triageIcons\functions";
|
||||
class addCBASettings {preInit=1;};
|
||||
class initClient {};
|
||||
class addDrawIconsPFH {};
|
||||
class addGetEntitiesPFH {};
|
||||
class updateColors {};
|
||||
};
|
||||
class server {
|
||||
file = "framework\reinsert\server";
|
||||
class initServer {};
|
||||
class addToQueue {};
|
||||
class globalShowQueue {};
|
||||
class removeFromQueue {};
|
||||
class returnReinsertQueueNotification {};
|
||||
class validateQueue {};
|
||||
};
|
||||
|
||||
class DOUBLES(PREFIX,vehicleFlags) {
|
||||
class functions {
|
||||
file = "framework\vehicleFlags\functions";
|
||||
class initClient {};
|
||||
class getActionsFlagCategories {};
|
||||
class getVehicleFlagsCfg {};
|
||||
class isClassExcluded {};
|
||||
};
|
||||
class client {
|
||||
file = "framework\reinsert\client";
|
||||
class initClient {};
|
||||
class addAceSelfActions {};
|
||||
class addCheckQueueSelfAction {};
|
||||
class requestShowQueue {};
|
||||
};
|
||||
};
|
||||
|
||||
class DOUBLES(PREFIX,zeus) {
|
||||
class functions {
|
||||
file = "framework\zeus\functions";
|
||||
class initClient {};
|
||||
class addZenModules {};
|
||||
};
|
||||
class DOUBLES(PREFIX,resupply) {
|
||||
class functions {
|
||||
file = "framework\resupply\functions";
|
||||
class addCBASettings {preInit=1;};
|
||||
class initClient {};
|
||||
class createBox {};
|
||||
class getSupplyCratesCfg {};
|
||||
class addArsenalObjectSpawnBoxActions {};
|
||||
};
|
||||
};
|
||||
|
||||
class DOUBLES(PREFIX,triageIcons) {
|
||||
class functions {
|
||||
file = "framework\triageIcons\functions";
|
||||
class addCBASettings {preInit=1;};
|
||||
class initClient {};
|
||||
class addDrawIconsPFH {};
|
||||
class addGetEntitiesPFH {};
|
||||
class updateColors {};
|
||||
};
|
||||
};
|
||||
|
||||
class DOUBLES(PREFIX,vehicleFlags) {
|
||||
class functions {
|
||||
file = "framework\vehicleFlags\functions";
|
||||
class initClient {};
|
||||
class getActionsFlagCategories {};
|
||||
class getVehicleFlagsCfg {};
|
||||
class isClassExcluded {};
|
||||
};
|
||||
};
|
||||
|
||||
class DOUBLES(PREFIX,zeus) {
|
||||
class functions {
|
||||
file = "framework\zeus\functions";
|
||||
class initClient {};
|
||||
class addZenModules {};
|
||||
};
|
||||
};
|
||||
59
framework/client/functions/fn_addMicroDAGRWaypoints.sqf
Normal file
59
framework/client/functions/fn_addMicroDAGRWaypoints.sqf
Normal file
@@ -0,0 +1,59 @@
|
||||
#include "..\script_component.hpp"
|
||||
|
||||
// adds default base locations to players' microDAGR as waypoints
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
[{!isNull player}, {
|
||||
|
||||
// add base locations (respawn modules)
|
||||
{
|
||||
private _wpName = [_x] call EFUNC(common,getNameOfBase);
|
||||
private _posASL = getPosASL _x;
|
||||
[_wpName, _posASL] call ace_microdagr_fnc_deviceAddWaypoint;
|
||||
} forEach GVARMAIN(baseObjects);
|
||||
|
||||
// add custom waypoints from mission_settings.hpp
|
||||
private _customWaypoints = [missionConfigFile >> "custom_microdagr_waypoints", "ARRAY", []] call CBA_fnc_getConfigEntry;
|
||||
{
|
||||
_x params [
|
||||
["_wpName", ""],
|
||||
["_pos", [0, 0, 0], [[], ""]],
|
||||
["_object", "", [""]]
|
||||
];
|
||||
private _realPos = nil;
|
||||
// if pos was provided, process
|
||||
if (count _pos > 0) then {
|
||||
if (typeName _pos == "STRING") then {
|
||||
_realPos = [_pos, true] call ACE_common_fnc_getMapPosFromGrid;
|
||||
_realPos set [2, getTerrainHeightASL _realPos];
|
||||
} else {_realPos = _pos;};
|
||||
};
|
||||
// if object was provided, process and override any pos
|
||||
if (count _object > 0) then {
|
||||
// object is provided as a string variable name
|
||||
private _realObject = missionNamespace getVariable _object;
|
||||
if (isNull _realObject) then {
|
||||
[
|
||||
LEVEL_WARNING,
|
||||
QUOTE(COMPONENT),
|
||||
format["Invalid object for custom microDAGR waypoint: %1", _wpName],
|
||||
[["name", _wpName], ["pos", _pos], ["object", _object]]] call EFUNC(common,log);
|
||||
continue;
|
||||
};
|
||||
_realPos = getPosASL (missionNamespace getVariable _object);
|
||||
};
|
||||
if (isNil "_realPos") then {
|
||||
[
|
||||
LEVEL_WARNING,
|
||||
QUOTE(COMPONENT),
|
||||
format["Invalid waypoint position for custom microDAGR waypoint: %1", _wpName],
|
||||
[["name", _wpName], ["pos", _pos], ["object", _object]]] call EFUNC(common,log);
|
||||
continue;
|
||||
};
|
||||
|
||||
[_wpName, _realPos] call ace_microdagr_fnc_deviceAddWaypoint;
|
||||
} forEach _customWaypoints;
|
||||
}] call CBA_fnc_waitUntilAndExecute;
|
||||
|
||||
nil;
|
||||
@@ -7,11 +7,20 @@ player addEventHandler["Respawn",
|
||||
params ["_unit", "_corpse"];
|
||||
private _killer = _corpse getVariable ["ace_medical_causeOfDeath", "#scripted"];
|
||||
if (_killer == "respawn_button") then {
|
||||
private _timeWentUnconscious = _unit getVariable [QGVARMAIN(lastTimeKnockedOut), -1];
|
||||
private _durationSpentUnconscious = diag_tickTime - _timeWentUnconscious;
|
||||
[
|
||||
LEVEL_INFO,
|
||||
QUOTE(COMPONENT),
|
||||
"RESPAWNED WHILE UNCONSCIOUS",
|
||||
[_unit] call EFUNC(common,addPlayerInfoToArray)
|
||||
[_unit, [[
|
||||
"durationSpentUnconscious",
|
||||
(if (_timeWentUnconscious > - 1) then {
|
||||
_durationSpentUnconscious
|
||||
} else {
|
||||
-1
|
||||
})
|
||||
]]] call EFUNC(common,addPlayerInfoToArray)
|
||||
] remoteExec [QEFUNC(common,log), 2];
|
||||
// format["%1 was unconscious then clicked the respawn button", name _unit] remoteExec["systemChat", 0];
|
||||
};
|
||||
|
||||
13
framework/client/functions/fn_bindUnconsciousListener.sqf
Normal file
13
framework/client/functions/fn_bindUnconsciousListener.sqf
Normal file
@@ -0,0 +1,13 @@
|
||||
#include "..\script_component.hpp"
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
["ace_medical_knockOut", { // local event that's also used directly by the ACE medical statemachine
|
||||
private _unit = _this;
|
||||
_this setVariable [QGVARMAIN(lastTimeKnockedOut), diag_tickTime];
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
|
||||
["ace_medical_WakeUp", { // local event that's also used directly by the ACE medical statemachine
|
||||
private _unit = _this;
|
||||
_this setVariable [QGVARMAIN(lastTimeKnockedOut), nil];
|
||||
}] call CBA_fnc_addEventHandler;
|
||||
23
framework/client/functions/fn_initClient.sqf
Normal file
23
framework/client/functions/fn_initClient.sqf
Normal file
@@ -0,0 +1,23 @@
|
||||
#include "..\script_component.hpp"
|
||||
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
call FUNC(addMicroDAGRWaypoints);
|
||||
call FUNC(addZenModules);
|
||||
call FUNC(bindEventHandlers);
|
||||
call FUNC(bindVehicleActions);
|
||||
|
||||
// add listener that tracks when the player goes unconscious and saves a variable with time
|
||||
call FUNC(bindUnconsciousListener);
|
||||
|
||||
[
|
||||
LEVEL_DEBUG,
|
||||
QUOTE(COMPONENT),
|
||||
"initClient complete",
|
||||
[]
|
||||
] call EFUNC(common,log);
|
||||
|
||||
localNamespace setVariable [QGVAR(complete), true];
|
||||
|
||||
nil;
|
||||
@@ -1,5 +1,7 @@
|
||||
#include "..\script_component.hpp"
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
[
|
||||
"saveaar",
|
||||
{
|
||||
|
||||
@@ -1,17 +1,29 @@
|
||||
#include "..\script_component.hpp"
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
[
|
||||
"respawn",
|
||||
{
|
||||
_clientID = _thisArgs select 0;
|
||||
player setDamage 1;
|
||||
|
||||
private _timeWentUnconscious = player getVariable [QGVARMAIN(lastTimeKnockedOut), -1];
|
||||
private _durationSpentUnconscious = diag_tickTime - _timeWentUnconscious;
|
||||
|
||||
// log to server RPT
|
||||
[
|
||||
LEVEL_INFO,
|
||||
QUOTE(COMPONENT),
|
||||
"CHAT COMMAND RESPAWN",
|
||||
[player] call EFUNC(common,addPlayerInfoToArray)
|
||||
[player, [[
|
||||
"durationSpentUnconscious",
|
||||
(if (_timeWentUnconscious > - 1) then {
|
||||
_durationSpentUnconscious
|
||||
} else {
|
||||
-1
|
||||
})
|
||||
]]] call EFUNC(common,addPlayerInfoToArray)
|
||||
] remoteExec [QEFUNC(common,log), 2];
|
||||
|
||||
// systemChat to all remote machines
|
||||
|
||||
41
framework/init/functions/fn_checkMissionSettings.sqf
Normal file
41
framework/init/functions/fn_checkMissionSettings.sqf
Normal file
@@ -0,0 +1,41 @@
|
||||
#include "..\script_component.hpp"
|
||||
|
||||
if (!hasInterface || !is3DENPreview) exitWith {};
|
||||
|
||||
private _warningText = [];
|
||||
|
||||
if (getText(missionConfigFile >> "author") in ["MISSION AUTHOR", ""]) then {
|
||||
_warningText pushBack "<t font='EtelkaMonospacePro' size='0.7'>mission_settings\author</t> is blank or default!";
|
||||
};
|
||||
if (getText(missionConfigFile >> "onLoadName") in ["THIS APPEARS ON TOP OF THE LOADING SCREEN IMAGE", ""]) then {
|
||||
_warningText pushBack "<t font='EtelkaMonospacePro' size='0.7'>mission_settings\onLoadName</t> is blank or default!";
|
||||
};
|
||||
|
||||
if (getText(missionConfigFile >> "briefingName") in ["THIS IS THE NAME ON THE #MISSIONS LIST", ""]) then {
|
||||
_warningText pushBack "<t font='EtelkaMonospacePro' size='0.7'>mission_settings\briefingName</t> is blank or default!";
|
||||
};
|
||||
if (getText(missionConfigFile >> "overviewText") in ["THIS IS WHERE YOU DESCRIBE THE MISSION IN THE #MISSION LIST", ""]) then {
|
||||
_warningText pushBack "<t font='EtelkaMonospacePro' size='0.7'>mission_settings\overviewText</t> is blank or default!";
|
||||
};
|
||||
|
||||
if (getText(missionConfigFile >> "missionSeries") in ["MY SERIES NAME", ""]) then {
|
||||
_warningText pushBack "<t font='EtelkaMonospacePro' size='0.7'>mission_settings\missionSeries</t> is blank or default!";
|
||||
};
|
||||
|
||||
if (count GVARMAIN(baseObjects) isEqualTo 0) then {
|
||||
_warningText pushBack "No respawn points placed!";
|
||||
};
|
||||
|
||||
if (count _warningText > 0) then {
|
||||
[{
|
||||
if (isNull (call BIS_fnc_displayMission)) exitWith {};
|
||||
|
||||
(_this#0) spawn {
|
||||
[_this joinString "<br/>", "Issues found!", true, false] call BIS_fnc_guiMessage;
|
||||
};
|
||||
[_this#1] call CBA_fnc_removePerFrameHandler;
|
||||
|
||||
}, 1, _warningText] call CBA_fnc_addPerFrameHandler;
|
||||
};
|
||||
|
||||
nil;
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "..\script_component.hpp"
|
||||
|
||||
if ( !hasInterface ) exitWith {};
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
["milsim_logText", {
|
||||
params [["_strArray", [""], [[]]]];
|
||||
@@ -14,6 +14,13 @@ waitUntil {!isNil QGVARMAIN(complete)};
|
||||
|
||||
["InitializePlayer", [player, true]] call BIS_fnc_dynamicGroups;
|
||||
|
||||
// run primary init functions
|
||||
call FUNC(addAARChatHandler);
|
||||
call FUNC(addRespawnChatHandler);
|
||||
call FUNC(setDefaults);
|
||||
call FUNC(checkMissionSettings);
|
||||
|
||||
|
||||
// Initialize a holder for managing local diary records
|
||||
// store records in format:
|
||||
// [subject, [
|
||||
@@ -23,6 +30,7 @@ EGVAR(common,diaryRecords) = createHashMap;
|
||||
|
||||
|
||||
// initialize other modules
|
||||
call EFUNC(client,initClient);
|
||||
call EFUNC(mapcopy,initClient);
|
||||
call EFUNC(reinsert,initClient);
|
||||
call EFUNC(resupply,initClient);
|
||||
@@ -33,6 +41,8 @@ call EFUNC(fbcb2_main,initClient);
|
||||
call EFUNC(fbcb2_assets,initClient);
|
||||
|
||||
|
||||
call FUNC(checkMissionSettings);
|
||||
|
||||
[
|
||||
LEVEL_DEBUG,
|
||||
QUOTE(COMPONENT),
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#include "..\script_component.hpp"
|
||||
|
||||
if (!hasInterface) exitWith {};
|
||||
|
||||
enableSaving[false, false];
|
||||
|
||||
enableRadio false;
|
||||
|
||||
@@ -1,5 +1,27 @@
|
||||
#include "..\script_component.hpp"
|
||||
|
||||
[
|
||||
QGVAR(emptyGroupCleanup_enable),
|
||||
"CHECKBOX",
|
||||
"Empty Group Cleanup Enabled",
|
||||
[QUOTE(SETTINGS_GROUP_NAME), QUOTE(COMPONENT_BEAUTIFIED)],
|
||||
true,
|
||||
true,
|
||||
{
|
||||
params ["_value"];
|
||||
[
|
||||
QGVAR(emptyGroupCleanup_enable),
|
||||
_value
|
||||
] call EFUNC(common,logSettingChanged);
|
||||
|
||||
if (!isNull (missionNamespace getVariable [QGVAR(emptyGroupCleanupPFH), locationNull])) then {
|
||||
deleteLocation GVAR(emptyGroupCleanupPFH);
|
||||
};
|
||||
|
||||
call FUNC(addEmptyGroupCleanupPFH);
|
||||
}
|
||||
] call CBA_fnc_addSetting;
|
||||
|
||||
//---------------------
|
||||
// Server CPS
|
||||
//---------------------
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
[]
|
||||
] call EFUNC(common,log);
|
||||
|
||||
_emptyGroupPFH = [
|
||||
GVAR(emptyGroupCleanupPFH) = [
|
||||
{
|
||||
{
|
||||
if (local _x) then {
|
||||
@@ -19,7 +19,7 @@ _emptyGroupPFH = [
|
||||
},
|
||||
300,
|
||||
[],
|
||||
{
|
||||
{ // on creation
|
||||
[
|
||||
LEVEL_INFO,
|
||||
QUOTE(COMPONENT),
|
||||
@@ -27,15 +27,16 @@ _emptyGroupPFH = [
|
||||
[]
|
||||
] call EFUNC(common,log);
|
||||
},
|
||||
{ [
|
||||
{ // on deletion
|
||||
[
|
||||
LEVEL_INFO,
|
||||
QUOTE(COMPONENT),
|
||||
"Empty group deletion PFH unloaded",
|
||||
[]
|
||||
] call EFUNC(common,log);
|
||||
},
|
||||
{ true },
|
||||
{ false },
|
||||
{ (missionNamespace getVariable [QGVAR(emptyGroupCleanup_enable), false]) },
|
||||
{ not (missionNamespace getVariable [QGVAR(emptyGroupCleanup_enable), false]) },
|
||||
[]
|
||||
] call CBA_fnc_createPerFrameHandlerObject;
|
||||
|
||||
@@ -9,8 +9,21 @@ overviewText = "THIS IS WHERE YOU DESCRIBE THE MISSION IN THE #MISSION LIST";
|
||||
// The name for the series of missions of your campaign. Used for organizational and search purposes
|
||||
missionSeries = "MY SERIES NAME";
|
||||
|
||||
// activate via #ace-fortify west base 2000
|
||||
|
||||
// Add waypoints to players' MicroDAGR devices
|
||||
// respawn locations (bases) are added by default, don't put them here
|
||||
custom_microdagr_waypoints[] = {
|
||||
// the first element is the waypoint name
|
||||
// the second element is the position of the waypoint - you may use a string for map grid (up to 10 digit) or an array for {X, Y} coordinates
|
||||
// the third element is optional - provide the variable name of an object if you want to use its initial position instead
|
||||
// {"WAYPOINT NAME", {POSITION <[x,y]>}, OBJECT <objNull>},
|
||||
// EXAMPLES:
|
||||
// {"KAVALA HOSPITAL", {1234.56, 7890.12}, ""},
|
||||
// {"CAMP TEMPEST", "03421460, ""},
|
||||
// {"MY CUSTOM OBJECT", {}, "myCustomObject"}
|
||||
};
|
||||
|
||||
// activate via #ace-fortify west base 2000
|
||||
class ACEX_Fortify_Presets {
|
||||
class base {
|
||||
displayName = "Ken Custom";
|
||||
|
||||
Reference in New Issue
Block a user