mirror of
https://github.com/EpochModTeam/Epoch.git
synced 2024-08-30 18:22:13 +00:00
8fb45fc35c
Streamline all events to Events Monitor within Server Monitor fsm. Cycles and removes events as they decay or are looted.
95 lines
3.8 KiB
Plaintext
95 lines
3.8 KiB
Plaintext
/*
|
|
Carnival Event
|
|
by Aaron Clark - EpochMod.com
|
|
|
|
Improvements and or bugfixes and other contributions are welcome via the github:
|
|
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server_settings/EpochEvents/CarnivalSpawner.sqf
|
|
*/
|
|
//[[[cog import generate_private_arrays ]]]
|
|
private ["_cfgEpoch", "_debug", "_showMarkers", "_limit", "_counter", "_decayTime", "_distFromOthers", "_others", "_position", "_goodPos", "_objs","_item", "_lootPos", "_lootPos", "_loot", "_debugMkr", "_markers", "_originalColors", "_decayMarkerColor", "_compromisedColor", "_rEvents", "_thisEvent"];
|
|
//[[[end]]]
|
|
_cfgEpoch = configFile >> "CfgEpoch" >> worldname;
|
|
_debug = if(getNumber(_cfgEpoch >> "debugCarnivalSpawner") isEqualTo 1)then{true}else{false};
|
|
_limit = getNumber(_cfgEpoch >> "maxCarnivalSpawns");
|
|
_counter = missionNameSpace getVariable["EPOCH_carnivalCounter",0];
|
|
_others = missionNameSpace getVariable["EPOCH_carnivals", [[0,0,0]] ];
|
|
_distFromOthers = getNumber(_cfgEpoch >> "distFromOtherCarnivals");
|
|
|
|
//STOP THE SCRIPT AND EXIT IF THE COUNTER IS TOO HIGH.
|
|
if (_counter >= _limit) exitWith {
|
|
if (_debug) then {diag_log "DEBUG: suppressed carnival spawn over limit"};
|
|
};
|
|
|
|
for "_i" from 0 to 100 step 1 do {
|
|
_position = [epoch_centerMarkerPosition, 0, EPOCH_dynamicVehicleArea, 10, 0, 1000, 0] call BIS_fnc_findSafePos;
|
|
_goodPos = true;
|
|
|
|
_goodPos = [_position, true, true, true, _others, _distFromOthers] call EPOCH_server_isNearChecks;
|
|
|
|
if(_goodPos)then{
|
|
_i = 100;
|
|
}else{
|
|
_position = [];
|
|
};
|
|
};
|
|
|
|
_objs = [];
|
|
if ((count _position) == 2) then{
|
|
// CREATE THE CARNIVAL AREA AND LOOT
|
|
_item = createVehicle["ferrisWheel_EPOCH", _position, [], 0.0, "CAN_COLLIDE"];
|
|
_objs pushBack _item;
|
|
_lootPos = [_position,1,20,3,1,20,0] call BIS_fnc_findSafePos;
|
|
_loot = createVehicle["container_epoch", _lootPos, [], 0.0, "CAN_COLLIDE"];
|
|
_loot setMass 220;
|
|
_loot setVariable["EPOCH_Loot",false,true];
|
|
|
|
if(_debug)then{
|
|
_debugMkr = createMarker [str(_lootPos),_lootPos];
|
|
_debugMkr setMarkerShape "ICON";
|
|
_debugMkr setMarkerType "mil_dot";
|
|
_debugMkr setMarkerColor "ColorRed";
|
|
};
|
|
|
|
{
|
|
_item = createVehicle[_x, _position, [], 80, "NONE"];
|
|
_objs pushBack _item;
|
|
sleep 1;
|
|
} forEach (getArray(_cfgEpoch >> "carnivalSpawnedObjects"));
|
|
|
|
// SET UP THE MARKER.
|
|
_markers = [];
|
|
_originalColors = [];
|
|
_showMarkers = if(getNumber(_cfgEpoch >> "showCarnivalMarkers") isEqualTo 1)then{true}else{false};
|
|
_decayMarkerColor = getText(_cfgEpoch >> "carnivalDecayMarkerColor");
|
|
_compromisedColor = getText(_cfgEpoch >> "carnivalCompromisedColor");
|
|
if (_showMarkers) then{
|
|
_markers = ["Carnival",_position] call EPOCH_server_createGlobalMarkerSet;
|
|
{
|
|
_originalColors pushBack (getMarkerColor _x);
|
|
}forEach _markers;
|
|
|
|
// Check for HeightenedPlayerVsPlayer false and remove comprimised coloring
|
|
if!(getNumber(_cfgEpoch >> "HeightenedPlayerVsPlayer") isEqualTo 1)then{
|
|
_compromisedColor = getMarkerColor (_markers select 0);
|
|
};
|
|
};
|
|
|
|
// TICK COUNTER + 1 SPAWNED PLANT PATCH.
|
|
_counter = _counter + 1;
|
|
missionNameSpace setVariable["EPOCH_carnivalCounter",_counter];
|
|
|
|
// ADD POSITION TO OTHERS ARRAY
|
|
missionNameSpace setVariable["EPOCH_carnivals", _others + [_position]];
|
|
|
|
// SEND EVENT TO MONITOR
|
|
_decayTime = getNumber(_cfgEpoch >> "carnivalDecayTime");
|
|
_serverSettingsConfig = configFile >> "CfgEpochServer";
|
|
_timeMultiplier = ([_serverSettingsConfig, "timeMultiplier", 1] call EPOCH_fnc_returnConfigEntry);
|
|
_rEvents = missionNameSpace getVariable["EPOCH_RunningEvents",[]];
|
|
_thisEvent = [_lootPos, [_loot], _objs,"carnivalCounter", diag_tickTime, (_decayTime * _timeMultiplier), _showMarkers, _markers, _originalColors, _decayMarkerColor, _compromisedColor];
|
|
missionNameSpace setVariable["EPOCH_RunningEvents",_rEvents + [_thisEvent]];
|
|
if (_debug) then {
|
|
diag_log format["EPOCHDebug: carnivalSpawner-%1", missionNameSpace getVariable["EPOCH_RunningEvents",[]]];
|
|
};
|
|
};
|