mirror of
https://github.com/Ignatz-HeMan/SEM
synced 2024-08-30 16:22:10 +00:00
249 lines
8.1 KiB
Plaintext
249 lines
8.1 KiB
Plaintext
/*
|
|
SEM - "Simple Epoch Missions" configuration file
|
|
By KiloSwiss
|
|
*/
|
|
/*
|
|
Update 27.03.2017
|
|
By [Ignatz] He-Man
|
|
*/
|
|
[] spawn {
|
|
diag_log "#SEM INIT: Waiting for Epoch Server Ready ...";
|
|
waituntil {!isnil "EPOCH_SERVER_READY"};
|
|
diag_log "#SEM INIT: Epoch Server is ready... SEM waiting more 10s to start ...";
|
|
uisleep 10;
|
|
diag_log "#SEM INIT: Initialize Simple Epoch Missions";
|
|
|
|
private ["_handle","_end"];
|
|
_handle = execVM "sem\sem_config.sqf";
|
|
waitUntil {isNull _handle};
|
|
diag_log "#SEM: Loaded settings.";
|
|
|
|
if ((typeName SEM_debug) isEqualTo "SCALAR") then {
|
|
SEM_debug = (switch(round SEM_debug)do{
|
|
case 0:{"off"};
|
|
case 1:{"log"};
|
|
case 2:{"full"};
|
|
default{"log"};
|
|
});
|
|
};
|
|
if !(SEM_debug in ["off","log","full"]) then {
|
|
SEM_debug = "log"
|
|
};
|
|
|
|
if (SEM_debug in ["log","full"]) then{
|
|
SEM_version = getText(configFile >> "CfgPatches" >> "sem" >> "SEM_version");
|
|
diag_log format ["#SEM Version %1 is running on %2 %3 version %4 [%5] %6 branch.",
|
|
SEM_version,
|
|
(productVersion select 1),
|
|
str(if(isDedicated)then[{"dedicated server"},{if(hasInterface)then[{if(isServer)then[{"localhost"},{"client"}]},{"headless client"}]}]),
|
|
str(floor((productVersion select 2)/100)) + "." + str((productVersion select 2)-((floor((productVersion select 2)/100))*100)),
|
|
str(productVersion select 3),
|
|
(productVersion select 4)];
|
|
};
|
|
|
|
/* Set up variables */
|
|
|
|
SEM_MinPlayerStatic = (if(isMultiPlayer)then[{1 max SEM_MinPlayerStatic},{0}]);
|
|
SEM_MinPlayerDynamic = (if(isMultiPlayer)then[{1 max SEM_MinPlayerDynamic},{0}]);
|
|
SEM_MissionTimerMin = 1 max SEM_MissionTimerMin;
|
|
SEM_MissionTimerMax = 1 max SEM_MissionTimerMax;
|
|
SEM_MissionCleanup = -1 max SEM_MissionCleanup;
|
|
if(SEM_MissionTimerMin > SEM_MissionTimerMax)then{
|
|
private "_tempValueHolder";
|
|
_tempValueHolder = SEM_MissionTimerMax;
|
|
SEM_MissionTimerMax = SEM_MissionTimerMin;
|
|
SEM_MissionTimerMin = _tempValueHolder;
|
|
};
|
|
|
|
SEM_Krypto_AIroadkill = 1 max (abs SEM_Krypto_AIroadkill);
|
|
|
|
{if !(_x in SEM_removeWeaponsFromDeadAI)then{SEM_removeWeaponsFromDeadAI pushBack _x}}forEach ["launch_RPG32_F","Srifle_GM6_F","Srifle_LRR_F","m107_EPOCH","m107Tan_EPOCH"];
|
|
{if !(_x in SEM_removeMagazinesFromDeadAI)then{SEM_removeMagazinesFromDeadAI pushBack _x}}forEach ["RPG32_F","RPG32_HE_F","5Rnd_127x108_Mag","5Rnd_127x108_APDS_Mag","7Rnd_408_Mag"];
|
|
SEM_AIdropGearChance = 0 max SEM_AIdropGearChance min 100;
|
|
SEM_AIsniperDamageDistance = 300 max SEM_AIsniperDamageDistance min 1000;
|
|
SEM_AIsniperDamageEHunits = [];
|
|
|
|
if(SEM_debug isEqualTo "full")then{ /* Load debug settings */
|
|
SEM_MinPlayerStatic = 0;
|
|
SEM_MinPlayerDynamic = 0;
|
|
SEM_MissionCleanup = 2;
|
|
SEM_AIdisableSniperDamage = true; SEM_AIsniperDamageDistance = 100;
|
|
[] spawn {
|
|
SEM_version = SEM_version + " - DEBUG IS ON!";
|
|
while{true}do{publicVariable "SEM_version"; UIsleep 180};
|
|
};
|
|
}else{publicVariable "SEM_version"; UIsleep 30};
|
|
|
|
SEM_worldData = call SEM_fnc_getWorldData;
|
|
if(SEM_debug in ["log","full"])then{diag_log format["#SEM DEBUG: World Data received. Counting %1 locations on island %2", count (SEM_worldData select 2), str worldName]};
|
|
|
|
publicVariable "SEM_AIsniperDamageDistance";
|
|
SEM_lastMissionPositions = [];
|
|
SEM_MissionID = 0;
|
|
|
|
if(hasInterface && isServer)then{waitUntil{isPlayer player}};
|
|
|
|
SEM_createMissionMarker = {
|
|
private ["_create","_markerPos","_markerID","_markerA","_markerB","_markerC","_markerD","_markerC_Pos","_markerName","_markerColor"];
|
|
_create = _this select 0;
|
|
|
|
//Create Marker
|
|
if (_create) then {
|
|
_markerPos = _this select 1;
|
|
_markerID = _this select 2;
|
|
_markerName = _this select 3;
|
|
_markerColor = (
|
|
switch (_this select 4) do {
|
|
case 0: {"ColorWhite"};
|
|
case 1: {"ColorUNKNOWN"};
|
|
case 2: {"ColorOrange"};
|
|
case 3: {"ColorEAST"};
|
|
case 4: {"ColorCIV"};
|
|
case 5: {"ColorBlack"};
|
|
default {"Default"};
|
|
}
|
|
);
|
|
_staticMission = ( switch(_this select 5)do{
|
|
case "static": {true};
|
|
case "dynamic": {false};
|
|
default {true};
|
|
});
|
|
|
|
|
|
if (_staticMission)then { //Static Mission
|
|
_markerA = createMarker [format["SEM_MissionMarkerA_%1", _markerID], _markerPos];
|
|
_markerB = createMarker [format["SEM_MissionMarkerB_%1", _markerID], _markerPos];
|
|
_markerC = createMarker [format["SEM_MissionMarkerC_%1", _markerID], _markerPos];
|
|
|
|
{
|
|
_x setMarkerShape "ELLIPSE";
|
|
_x setMarkerSize [500,500];
|
|
_x setMarkerPos _markerPos
|
|
}forEach [_markerA,_markerB];
|
|
|
|
_markerA setMarkerBrush "Cross";
|
|
_markerA setMarkerColor _markerColor;
|
|
|
|
_markerB setMarkerBrush "Border";
|
|
_markerB setMarkerColor "ColorRed";
|
|
|
|
_markerC_Pos = [(_markerPos select 0) - (count _markerName * 15), (_markerPos select 1) - 530, 0];
|
|
_markerC setMarkerShape "Icon";
|
|
_markerC setMarkerType "HD_Arrow";
|
|
_markerC setMarkerColor _markerColor;
|
|
_markerC setMarkerPos _markerC_Pos;
|
|
_markerC setMarkerText _markerName;
|
|
_markerC setMarkerDir 37;
|
|
}
|
|
else { //Dynamic Mission
|
|
_markerD = createMarker [format["SEM_MissionMarkerD_%1", _markerID], _markerPos];
|
|
_markerD setMarkerShape "Icon";
|
|
_markerD setMarkerType "mil_circle"; //"HD_Destroy";
|
|
_markerD setMarkerColor _markerColor;
|
|
_markerD setMarkerPos _markerPos;
|
|
_markerD setMarkerText _markerName;
|
|
};
|
|
}
|
|
else { //else delete marker
|
|
_this spawn {
|
|
private ["_endCondition","_deleteMarkerID","_endMissionType"];
|
|
_endCondition = _this select 1;
|
|
_deleteMarkerID = _this select 2;
|
|
_endMissionType = _this select 3;
|
|
|
|
if(_endCondition == 3)then {
|
|
{
|
|
if (getMarkerColor format["SEM_MissionMarker%1_%2", _x, _deleteMarkerID] != "") then {
|
|
format["SEM_MissionMarker%1_%2", _x, _deleteMarkerID] setMarkerColor "ColorIndependent";
|
|
};
|
|
} forEach (
|
|
if (_endMissionType == "static") then {
|
|
["A","B","C"]
|
|
}
|
|
else {
|
|
["D"]
|
|
}
|
|
);
|
|
sleep 120;
|
|
}
|
|
else {
|
|
{
|
|
if (getMarkerColor format["SEM_MissionMarker%1_%2", _x, _deleteMarkerID] != "")then{
|
|
format["SEM_MissionMarker%1_%2", _x, _deleteMarkerID] setMarkerColor "ColorGrey";
|
|
};
|
|
} forEach (if(_endMissionType == "static")then {
|
|
["A","B","C"]
|
|
}
|
|
else {
|
|
["D"]
|
|
}
|
|
);
|
|
uisleep 30;
|
|
};
|
|
|
|
{ /* Only delete existing Marker */
|
|
if (getMarkerColor format["SEM_MissionMarker%1_%2", _x, _deleteMarkerID] != "") then {
|
|
deleteMarker format["SEM_MissionMarker%1_%2", _x, _deleteMarkerID];
|
|
}
|
|
} forEach (
|
|
if (_endMissionType == "static") then {
|
|
["A","B","C"]
|
|
}
|
|
else {
|
|
["D"]
|
|
}
|
|
);
|
|
};
|
|
};
|
|
};
|
|
|
|
SEM_client_updateMissionMarkerPos = {
|
|
private["_updateMarkerID","_updateMarkerPos"];
|
|
_updateMarkerID = _this select 0;
|
|
_updateMarkerPos = _this select 1;
|
|
|
|
if (getMarkerColor format["SEM_MissionMarkerD_%1", _updateMarkerID] != "")then{
|
|
format["SEM_MissionMarkerD_%1", _updateMarkerID] setMarkerPos _updateMarkerPos;
|
|
};
|
|
};
|
|
|
|
SEM_Client_VehDamage = compilefinal "
|
|
private ['_vk','_vP','_s'];
|
|
_vk = _this;
|
|
_vP = vehicle player;
|
|
if (!local _vk) exitWith {};
|
|
if (_vk != _vP) exitWith {};
|
|
{
|
|
_vk setHitIndex [_forEachIndex,((_vk getHitIndex _forEachIndex)+(0.15+(random 0.15)))];
|
|
} forEach ((getAllHitPointsDamage _vk) param [0,[]]);
|
|
";
|
|
SEM_Client_GlobalHint = compilefinal "
|
|
_this spawn {
|
|
if (isnil 'SEM_lastEvent') then {
|
|
SEM_lastEvent = 0;
|
|
};
|
|
waitUntil {
|
|
if(time - SEM_lastEvent > 20) exitwith {
|
|
SEM_lastEvent = time;
|
|
true
|
|
};
|
|
false
|
|
};
|
|
_sound = _this select 0;
|
|
switch(_sound)do{
|
|
case 0:{playSound 'UAV_05'};
|
|
case 1:{playSound 'UAV_01'};
|
|
case 2:{playSound 'UAV_04'};
|
|
case 3:{playsound 'UAV_03'};
|
|
};
|
|
hint parseText format['%1', _this select 1];
|
|
};
|
|
";
|
|
publicvariable 'SEM_Client_VehDamage';
|
|
publicvariable 'SEM_Client_GlobalHint';
|
|
|
|
[
|
|
[SEM_staticMissions, SEM_staticMissionsPath ,"static"],
|
|
[SEM_dynamicMissions, SEM_dynamicMissionsPath ,"dynamic"]
|
|
] call SEM_fnc_missionController;
|
|
}; |