arma2-epoch-server/MPMissions/DayZ_Epoch_24.Napf/spawn/functions/spawn_fill.sqf
2022-04-21 16:15:41 +03:00

96 lines
2.8 KiB
Plaintext
Executable File

private ["_block","_blockGroup","_blockPlot","_bodies","_body","_grid","_hlevel","_humanity","_index","_inGroup","_lb","_level","_name","_uid"];
disableSerialization;
_block = [];
_blockGroup = false;
_blockPlot = false;
_lb = (findDisplay 88890) displayCtrl 8888;
_humanity = player getVariable ["humanity",0];
_inGroup = count units group player > 1;
_uid = getPlayerUID player;
spawn_plot = objNull;
if (spawn_nearPlot) then {
{
if (_x getVariable ["ownerPUID","0"] == _uid) exitWith {
spawn_plot = _x;
};
} count (entities "Plastic_Pole_EP1_DZ");
};
if (spawn_bodyCheck > 0) then {
_bodies = [];
{
if (_x getVariable["bodyUID","0"] == _uid) then {
_bodies set [count _bodies,(getPosATL _x)];
};
} count allDead;
{
_body = _x;
{
//Never block random or custom base
if (count _x == 4 && {_body distance (_x select 1) < spawn_bodyCheck}) then {
_block set [count _block,(_x select 0)];
};
} forEach spawn_public;
if (_inGroup && spawn_nearGroup) then {
_grid = getPosATL leader group player;
if (surfaceIsWater _grid) then {_grid = ATLToASL _grid;};
if (_body distance _grid < spawn_bodyCheck) then {_blockGroup = true;};
};
if (!isNull spawn_plot) then {
_grid = getPosATL spawn_plot;
if (surfaceIsWater _grid) then {_grid = ATLToASL _grid;};
if (_body distance _grid < spawn_bodyCheck) then {_blockPlot = true;};
};
} count _bodies;
if (count _block > 0 or _blockGroup or _blockPlot) then {
systemChat format[localize "STR_ESS_BLOCKED",spawn_bodyCheck];
};
};
lbClear _lb;
{
_name = _x select 0;
if !(_name in _block) then {
if (count _x == 2) then { //Custom base by UID
_level = 0;
_hlevel = 0;
} else {
_level = _x select 2;
_hlevel = _x select 3;
};
_index = _lb lbAdd _name;
if ((_hlevel < 0 && _humanity >= _hlevel) or (_hlevel > 0 && _humanity <= _hlevel) or (_level > 0 && !(_level in spawn_levels))) then {
_lb lbSetPicture [_index,"\ca\ui\data\ui_task_failed_ca.paa"];
} else {
_lb lbSetPicture [_index,"\ca\ui\data\ui_task_done_ca.paa"];
};
_lb lbSetColor [_index, switch true do {
case (count _x == 2): {[1,1,0,1]}; //Custom base by UID
case (_level > 0): {[0,1,0,.8]};
case (_hlevel > 0): {[.38,.7,.9,1]};
case (_hlevel < 0): {[1,0,0,1]};
case (count _x > 4): {[.97,.87,.35,1]}; //Random
default {[.88,.88,.88,1]};
}];
};
} forEach spawn_public;
if (_inGroup && spawn_nearGroup && !_blockGroup) then {
_index = _lb lbAdd (localize "STR_ESS_GROUP");
_lb lbSetColor [_index,[1,.7,.4,1]];
_lb lbSetPicture [_index,"\ca\ui\data\ui_task_done_ca.paa"];
};
if (!isNull spawn_plot && !_blockPlot) then {
_index = _lb lbAdd (localize "STR_ESS_PLOT");
_lb lbSetColor [_index,[1,.7,.4,1]];
_lb lbSetPicture [_index,"\ca\ui\data\ui_task_done_ca.paa"];
};
lbSort _lb;