Build 2 - fully functioning

TODO:
add a tool to set mission start and end messages.

Test that the output is functional without editing.
This commit is contained in:
Chris Cardozo 2020-08-15 16:27:20 -04:00
parent d4758ebcac
commit 67dc2bd7bd
18 changed files with 448 additions and 64 deletions

View File

@ -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

View File

@ -0,0 +1,5 @@
params["_end"];
missionNamespace setVariable["blck_endMessage",_end];
systemChat format["End Message set to %1",_end];

View File

@ -1,2 +1,7 @@
/*
blckeagls 3EDEN Editor Plugin
by Ghostrider-GRG-
Copyright 2020
*/
params["_3DENobject","_center"];

View File

@ -1,2 +1,7 @@
/*
blckeagls 3EDEN Editor Plugin
by Ghostrider-GRG-
Copyright 2020
*/
diag_log format["Help called at %1",diag_tickTime];

View File

@ -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];

View File

@ -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;

View File

@ -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;
};

View File

@ -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];

View File

@ -1,4 +1,9 @@
/*
blckeagls 3EDEN Editor Plugin
by Ghostrider-GRG-
Copyright 2020
*/
params["_mode"];
missionNamespace setVariable["blck_endState",_mode];

View File

@ -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"];

View File

@ -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];

View File

@ -1,4 +1,9 @@
/*
blckeagls 3EDEN Editor Plugin
by Ghostrider-GRG-
Copyright 2020
*/
params["_timing"];
missionNamespace setVariable["blck_lootTiming",_timing];

View File

@ -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];

View File

@ -1,4 +1,9 @@
/*
blckeagls 3EDEN Editor Plugin
by Ghostrider-GRG-
Copyright 2020
*/
params["_mode"];

View File

@ -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;
/*
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],<null>];
_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";

View File

@ -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 "];";

View File

@ -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");

View File

@ -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";
};
};
};
};