#include "..\..\script_macros.hpp" if (!life_settings_tagson) exitWith {}; private ["_ui","_units","_masks"]; #define iconID 78000 #define scale 0.8 if (visibleMap || {!alive player} || {dialog}) exitWith { 500 cutText["","PLAIN"]; }; _ui = uiNamespace getVariable ["Life_HUD_nameTags",displayNull]; if (isNull _ui) then { 500 cutRsc["Life_HUD_nameTags","PLAIN"]; _ui = uiNamespace getVariable ["Life_HUD_nameTags",displayNull]; }; _units = nearestObjects[(visiblePosition player),["Man","Land_Pallet_MilBoxes_F","Land_Sink_F"],50]; _units = _units - [player]; _masks = LIFE_SETTINGS(getArray,"clothing_masks"); private _index = -1; { private "_text"; _idc = _ui displayCtrl (iconID + _forEachIndex); if (!(lineIntersects [eyePos player, eyePos _x, player, _x]) && alive _x && {!isNil {_x getVariable "realname"}}) then { _pos = switch (typeOf _x) do { case "Land_Pallet_MilBoxes_F": {[visiblePosition _x select 0, visiblePosition _x select 1, (getPosATL _x select 2) + 1.5]}; case "Land_Sink_F": {[visiblePosition _x select 0, visiblePosition _x select 1, (getPosATL _x select 2) + 2]}; default {[visiblePosition _x select 0, visiblePosition _x select 1, ((_x modelToWorld (_x selectionPosition "head")) select 2)+.5]}; }; _sPos = worldToScreen _pos; _distance = _pos distance player; if (count _sPos > 1 && {_distance < 15}) then { _text = switch (true) do { case (((headgear _x) in _masks || (goggles _x) in _masks || (uniform _x) in _masks) && side _x isEqualTo civilian): {format [" Maskeli"]}; case (_x in (units group player) && playerSide isEqualTo civilian): {format ["%1",(_x getVariable ["realname",name _x])];}; case (side _x isEqualTo west && {!isNil {_x getVariable "rank"}}): {format ["%2",switch ((_x getVariable "rank")) do { case 2: {"icons\ico_copRank2.paa"}; case 3: {"icons\ico_copRank3.paa"}; case 4: {"icons\ico_copRank4.paa"}; case 5: {"icons\ico_copRank5.paa"}; case 6: {"icons\ico_copRank6.paa"}; case 7: {"icons\ico_copRank7.paa"}; case 8: {"icons\ico_copRank8.paa"}; default {"icons\ico_copRank1.paa"}; },_x getVariable ["realname",name _x]]}; case (side _x isEqualTo independent): {format ["%1",_x getVariable ["realname",name _x]]}; default { if (!isNil {(group _x) getVariable "gang_name"}) then { format ["%1
%2",_x getVariable ["realname",name _x],(group _x) getVariable ["gang_name",""]]; } else { if (alive _x) then { format ["%1",(_x getVariable ["realname",name _x])]; } else { if (!isPlayer _x) then { _x getVariable ["realname","ERROR"]; }; }; }; }; }; if(_x getVariable ["speaking",false] && side _x isEqualTo civilian) then {_text = "" + _text}; if(_x getVariable ["speaking",false] && side _x isEqualTo west) then {_text = "" + _text}; if(_x getVariable ["speaking",false] && side _x isEqualTo independent) then {_text = "" + _text}; _idc ctrlSetStructuredText parseText _text; _idc ctrlSetPosition [_sPos select 0, _sPos select 1, 0.4, 0.65]; _idc ctrlSetScale scale; _idc ctrlSetFade 0; _idc ctrlCommit 0; _idc ctrlShow true; } else { _idc ctrlShow false; }; } else { _idc ctrlShow false; }; _index = _forEachIndex; } forEach _units; (_ui displayCtrl (iconID + _index + 1)) ctrlSetStructuredText parseText "";