mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-14 12:12:34 +03:00
Add group system
Initial commit, not tested in multiplayer yet. Some revisions still left to do.
This commit is contained in:
57
SQF/dayz_code/groups/groupMarkers.sqf
Normal file
57
SQF/dayz_code/groups/groupMarkers.sqf
Normal file
@@ -0,0 +1,57 @@
|
||||
// Two second loop
|
||||
private ["_count","_group","_hasGPS","_index","_marker","_markBody","_markGroup","_markSelf","_pos","_self","_vehicle"];
|
||||
|
||||
_group = player call dayz_filterGroup;
|
||||
|
||||
if (dayz_requireRadio && {count _group > 1} && {!("ItemRadio" in items player)}) exitWith {
|
||||
[player] join grpNull;
|
||||
_group = [];
|
||||
if (!isNull findDisplay 80000) then {findDisplay 80000 closeDisplay 2;};
|
||||
localize "STR_EPOCH_RADIO_CONTACT_LOST" call dayz_rollingMessages;
|
||||
};
|
||||
|
||||
if (visibleMap or !isNull findDisplay 88890) then {
|
||||
_hasGPS = "ItemGPS" in items player;
|
||||
_markBody = (dayz_markBody == 1 or (dayz_markBody == 2 && _hasGPS));
|
||||
_markGroup = (dayz_markGroup == 1 or (dayz_markGroup == 2 && _hasGPS));
|
||||
_markSelf = (dayz_markSelf == 1 or (dayz_markSelf == 2 && _hasGPS));
|
||||
|
||||
_index = 0;
|
||||
{
|
||||
_self = _x == player;
|
||||
_vehicle = vehicle _x;
|
||||
if ((_self or _markGroup) && (!_self or _markSelf) && (driver _vehicle == _x)) then {
|
||||
_pos = getPosATL _x;
|
||||
if (surfaceIsWater _pos) then {_pos = getPosASL _x;};
|
||||
deleteMarkerLocal format["groupMember%1",_index];
|
||||
_marker = createMarkerLocal [format["groupMember%1",_index],_pos];
|
||||
_marker setMarkerTypeLocal "DestroyedVehicle";
|
||||
_marker setMarkerTextLocal format ["%1",if (_vehicle == _x) then {name _x} else {_vehicle call dayz_getCrew}];
|
||||
_marker setMarkerColorLocal "ColorGreen";
|
||||
} else {
|
||||
deleteMarkerLocal format["groupMember%1",_index];
|
||||
};
|
||||
_index = _index + 1;
|
||||
} count _group;
|
||||
|
||||
// Remove markers for group members that left
|
||||
_count = count _group;
|
||||
if (dayz_oldMemberCount > _count) then {
|
||||
for "_i" from _count to dayz_oldMemberCount do {deleteMarkerLocal format["groupMember%1",_i];};
|
||||
};
|
||||
dayz_oldMemberCount = _count;
|
||||
|
||||
if (_markBody) then {
|
||||
{
|
||||
if (_x getVariable["bodyName",""] == name player) then {
|
||||
deleteMarkerLocal "MyBody";
|
||||
_marker = createMarkerLocal ["MyBody",getPosATL _x];
|
||||
_marker setMarkerTypeLocal "DestroyedVehicle";
|
||||
_marker setMarkerTextLocal localize "STR_EPOCH_RIP";
|
||||
_marker setMarkerColorLocal "ColorRed";
|
||||
};
|
||||
} count allDead;
|
||||
} else {
|
||||
deleteMarkerLocal "MyBody";
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user