From 152ec42daedc9b02aee22ce7ea6201e7dd7c96ea Mon Sep 17 00:00:00 2001 From: A Man Date: Wed, 18 Aug 2021 09:56:24 +0200 Subject: [PATCH] Add toggleable Locate Vehicle by salival to Epoch Core --- SQF/dayz_code/actions/locateVehicle.sqf | 57 +++++++++++++++++++ SQF/dayz_code/configVariables.sqf | 8 +++ SQF/dayz_code/init/compiles.sqf | 4 ++ .../DZE_Server_Config/BattlEye/scripts.txt | 14 ++--- 4 files changed, 76 insertions(+), 7 deletions(-) create mode 100644 SQF/dayz_code/actions/locateVehicle.sqf diff --git a/SQF/dayz_code/actions/locateVehicle.sqf b/SQF/dayz_code/actions/locateVehicle.sqf new file mode 100644 index 000000000..c689aa43d --- /dev/null +++ b/SQF/dayz_code/actions/locateVehicle.sqf @@ -0,0 +1,57 @@ +/* + locateVehicle by salival (https://github.com/oiad) +*/ + +if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;}; +dayz_actionInProgress = true; + +private ["_characterID","_found","_i","_keyID","_keyIDS","_keyList","_keyName","_keyNames","_locateMarkerDelete","_locateMarkerTime","_marker","_name","_position","_vehicle"]; + +_keyList = call epoch_tempKeys; +_keyIDS = _keyList select 0; +_keyNames = _keyList select 1; + +_locateMarkerDelete = true; // Delete markers after a certain amount of time to avoid cluttering the map? +_locateMarkerTime = 60; // Time in seconds before markers are deleted if enabled above. + +_i = 0; +for "_i" from 0 to 60 do {deleteMarkerLocal ("vehicleMarker"+ (str _i));}; + +if (count _keyIDS < 1) exitWith {dayz_actionInProgress = false; systemChat localize "STR_CL_LV_NO_KEYS";}; + +_i = 0; +{ + _keyID = parseNumber (_keyIDS select _forEachIndex); + _keyName = _keyNames select _forEachIndex; + _found = 0; + { + _vehicle = typeOf _x; + _characterID = parseNumber (_x getVariable ["CharacterID","0"]); + if ((_characterID == _keyID) && {_vehicle isKindOf "Air" || {_vehicle isKindOf "LandVehicle"} || {_vehicle isKindOf "Ship"}}) then { + _found = _found +1; + _i = _i +1; + _position = getPos _x; + _name = getText (configFile >> "CfgVehicles" >> _vehicle >> "displayName"); + _marker = createMarkerLocal ["vehicleMarker" + (str _i),[_position select 0,_position select 1]]; + _marker setMarkerShapeLocal "ICON"; + _marker setMarkerTypeLocal "DOT"; + _marker setMarkerColorLocal "ColorOrange"; + _marker setMarkerSizeLocal [1.0, 1.0]; + _marker setMarkerTextLocal format ["%1",_name]; + systemChat format[localize "STR_CL_LV_BELONGS",_keyName,_name,if (!alive _x) then {toLower (format [" (%1)",localize "str_artdlg_destroyed"])} else {""}]; + }; + } forEach vehicles; + if (_found == 0) then {systemChat format[localize "STR_CL_LV_NO_VEHICLES",_keyName]}; +} forEach _keyIDS; + +if (_i > 0) then { + systemChat format[localize "STR_CL_LV_FOUND",_i]; + if (_locateMarkerDelete) then { + _locateMarkerTime spawn { + uiSleep _this; + for "_i" from 0 to 60 do {deleteMarkerLocal ("vehicleMarker"+ (str _i));}; + }; + }; +}; + +dayz_actionInProgress = false; diff --git a/SQF/dayz_code/configVariables.sqf b/SQF/dayz_code/configVariables.sqf index 277a4ea41..03213d851 100644 --- a/SQF/dayz_code/configVariables.sqf +++ b/SQF/dayz_code/configVariables.sqf @@ -191,6 +191,14 @@ if (!isDedicated) then { ["ItemKey",localize "STR_CL_RV_CA_LIGHTS","spawn remoteVehicle;","true",5] ]; }; + + DZE_LocateVehicle = true; // Enable/Disable the option to locate a vehicle from a key in the inventory with a rightclick on the GPS. + + if (DZE_LocateVehicle) then { + DZE_CLICK_ACTIONS = DZE_CLICK_ACTIONS + [ + ["ItemGPS",localize "STR_CL_LV_LOCATE_VEHICLES","[] spawn locateVehicle;","true"] + ]; + }; }; // Both diff --git a/SQF/dayz_code/init/compiles.sqf b/SQF/dayz_code/init/compiles.sqf index da871e734..f1260455d 100644 --- a/SQF/dayz_code/init/compiles.sqf +++ b/SQF/dayz_code/init/compiles.sqf @@ -202,6 +202,10 @@ if (!isDedicated) then { if (DZE_Remote_Vehicle) then { remoteVehicle = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\remoteVehicle\remoteVehicle.sqf"; rv_vehicleInfo = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\remoteVehicle\vehicleInfo.sqf"; + }; + + if (DZE_LocateVehicle) then { + locateVehicle = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\locateVehicle.sqf"; }; // Weather diff --git a/Server Files/DZE_Server_Config/BattlEye/scripts.txt b/Server Files/DZE_Server_Config/BattlEye/scripts.txt index 1ea66bb6b..7351f5116 100644 --- a/Server Files/DZE_Server_Config/BattlEye/scripts.txt +++ b/Server Files/DZE_Server_Config/BattlEye/scripts.txt @@ -23,13 +23,13 @@ 1 createAgent !="_agent = if (_type == \"Pastor\") then {createAgent [_type, _Pos, [], 0, \"NONE\"]} else {createAgent [_type, _Pos, [], 0, \"FORM\"]};" !="_dog = createAgent [_type, _Pos, [], 0, \"NONE\"];" !="\n\n\n_type = _unitTypes call BIS_fnc_selectRandom;\n_agent = createAgent [_type, _position, [], 0, \"CAN_COLLIDE\"];\n_agent setDir (r" 1 createDialog !="_region = createDialog \"RscDisplaySpawnSelecter\";" !="_gender = createDialog 'RscDisplayGenderSelect';" !="_dialog = createDialog \"bloodTest\";" !"createDialog 'horde_journal_" !"Z_ResetContainer = true;\ncreateDialog \"AdvancedTrading\";" !"createDialog \"DoorManagement\";\ncall DoorNearbyHumans;" !="createDialog \"ComboLockUI\";" !"createdialog \"PlotManagement\";\ncall PlotNearbyHumans;" !"_ok = createDialog \"KeypadUI\";" !"EpochDeathBoardLoad = {\ncreatedialog \"EpochDeathBoardDialog\";" !="if(DZE_doorManagement) then {createdialog \"DoorAccess\";} else {createdialog \"ComboLockUI\";};" !"\ndisableSerialization;\ncreateDialog \"DZ_GroupDialog\";" !"createDialog _dialog;\n\nwaitUntil {!dialog};\n\nif (keypadCancel) exitWith {" !=";\n};\n\nZSC_CurrentStorage setVariable[\"isBusy\",true,true];\ncreateDialog \"BankDialog\";\ncall BankDialogUpdateAmounts;\n\nwaitUntil {!" !="ANKING_NOT_AVAIL\",_typeOf] call dayz_rollingMessages;\n};\n\ncreateDialog \"atmDialog\";\ncall AtmDialogUpdateAmounts;\n\nwaitUntil {!di" !="!_isBusy) then {\nplayer setVariable[\"isBusy\",true,true]; \ncreateDialog \"GivePlayerDialog\";\n_display = uiNamespace getVariable[\"z" !="ked\",\"VaultStorage2\",\"TallSafe\",\"TallSafeLocked\"]) then {\ncreateDialog \"SafeKeyPad\";\n} else {\ncreateDialog \"KeypadUI\";\n};\n};\n\nda" !";\n\nif (count rv_vehicleList > 1) then {\nrv_isOk = false;\n\ncreateDialog \"remoteVehicle\";\n\n_display = uiNamespace getVariable[\"rv_" 1 createDisplay -1 createMarker !"\"createMarkerLocal\"," !"rcreateMarkerLocal" !"if (isnil 'BIS_GITA_fnc_createMarkers' || false) then {" !"_marker = createMarkerLocal [format[\"groupMember" +1 createMarker !"\"createMarkerLocal\"," !"rcreateMarkerLocal" !"if (isnil 'BIS_GITA_fnc_createMarkers' || false) then {" !"_marker = createMarkerLocal [format[\"groupMember" !">> \"CfgVehicles\" >> _vehicle >> \"displayName\");\n_marker = createMarkerLocal [\"vehicleMarker\" + (str _i),[_position select 0,_pos" 1 createUnit !="_newUnit = _group createUnit [_class,respawn_west_original,[],0,\"NONE\"];" !="BIS_MPF_logic = BIS_MPF_dummygroup createUnit [\"Logic\", [1000,10,0], [], 0, \"NONE\"];" 1 createVehicleLocal !="_object = (_x select 1) createVehicleLocal [0,0,0];" !="_plant = _x createVehicleLocal (getMarkerPos \"center\");" !="_point = \"Logic\" createVehicleLocal getPosATL _unit;" !"_object = _type createVehicleLocal [0,0,0];" !" = \"#lightpoint\" createVehicleLocal " !" = \"#particlesource\" createVehicleLocal " !="_para = \"ParachuteWest\" createVehicleLocal [0,0,0];" !="_sign = \"Sign_arrow_down_large_EP1\" createVehicleLocal [0,0,0];" !"_obj = \"Sign_sphere10cm_EP1\" createVehicleLocal [0,0,0];" !="_objectSnapGizmo = \"Sign_sphere10cm_EP1\" createVehicleLocal [0,0,0];" 1 ctrlAddEventHandler 1 ctrlSetPosition !="_control ctrlSetPosition [_posX, _posY];" !"3,_h]};\n_control ctrlsetposition _pos;" !="_control ctrlSetPosition [0, (_y + _deltaY)];" !="_disp_ctrl ctrlSetPosition [_posX, _posY];" !="_control ctrlSetPosition _grpPos;" !="_group ctrlSetPosition _pos;" !="((uiNamespace getVariable 'DAYZ_GUI_waiting') displayCtrl 1400) ctrlSetPosition _sandLevel;" !="_delayControl ctrlSetPosition [0, _pos];" !="_icon ctrlSetPosition [(_screen select 0),(_screen select 1),.99,.65];" 1 cutText !"_layer cuttext [\"\",\"plain\"];\n};\nmissionnamespace" !"\n\n\n3100 cuttext [\"\",\"plain\"];" !"} else {\n16 cutText [\"\",\"PLAIN\"];" !"exitWith {\n1 cutText [localize \"" !"progress_monitor.sqf\";\n0 cutText ['','BLACK',0]" !="8 cutText [\"\",\"PLAIN\"];" -1 deleteMarker !"} count allDead;\n\n\nif (dayz_oldBodyCount > _bodyCount) then {" +1 deleteMarker !"} count allDead;\n\n\nif (dayz_oldBodyCount > _bodyCount) then {" !"ocateMarkerTime = 60; \n\n_i = 0;\nfor \"_i\" from 0 to 60 do {deleteMarkerLocal (\"vehicleMarker\"+ (str _i));};\n\nif (count _keyIDS < " 1 displayAddEventHandler !"bis_fnc_halo_keydown_eh = (finddisplay 46) displayaddeventhandler [\"keydown\",\"_this call bis_fnc_halo_keydown;\"];" 1 displaySetEventHandler 1 DZE_doorManagementAdmins !="\n\n\n\n\n\n\n\n\n\n\n\nDZE_doorManagementMustBeClose = false; \nDZE_doorManagementAdmins = []; \nDZE_doorManagementAllowManualCode = true; \nD" !="true; };\n} count _doorFriends;\n\n\n\n\nif(_playerUID in DZE_DoorManagementAdmins) then { _isDoorAdmin = true; };\n};\n\n\n\n[ _isOwner\n, " !="ove select 0) == _ownerPUID && (!(dayz_playerUID in DZE_doorManagementAdmins) && !(dayz_playerUID == _ownerPUID))) exitWith {sys" @@ -67,13 +67,13 @@ 1 SetEventHandler !"\n_menu ctrlSetEventHandler [\"ButtonClick\",_compile];\n};" !"inGameUISetEventHandler [\"Action\",\"false\"];" !="];\n};\n\n_menu ctrlSetText format[_type,_name];\n_menu ctrlSetEventHandler [\"ButtonClick\",_compile];\n_i = _i + 1;\n};\n_pos set [3,_h" !="];\n};\n\n_menu ctrlSetText format[_type,_name];\n_menu ctrlSetEventHandler [\"ButtonClick\",_compile];\n_i = _i + 1;\n};\n\nlocal _isKey " 1 setMarkerAlpha 1 setMarkerBrush -1 setMarkerColor !",if (_vehicle == _x) then {name _x} else {_vehicle call dayz_getCrew}];\n_marker setMarkerColorLocal \"ColorGreen\";" +1 setMarkerColor !",if (_vehicle == _x) then {name _x} else {_vehicle call dayz_getCrew}];\n_marker setMarkerColorLocal \"ColorGreen\";" !"eLocal \"ICON\";\n_marker setMarkerTypeLocal \"DOT\";\n_marker setMarkerColorLocal \"ColorOrange\";\n_marker setMarkerSizeLocal [1.0, 1.0" 1 setMarkerDir 1 setMarkerPos !"\"setMarkerPosLocal\"," !"rsetMarkerPosLocal" -1 setMarkerShape -1 setMarkerSize -1 setMarkerText !",if (_vehicle == _x) then {name _x} else {_vehicle call dayz_getCrew}];\n_marker setMarkerColorLocal \"ColorGreen\";" -1 setMarkerType !",if (_vehicle == _x) then {name _x} else {_vehicle call dayz_getCrew}];\n_marker setMarkerColorLocal \"ColorGreen\";" +1 setMarkerShape !"tr _i),[_position select 0,_position select 1]];\n_marker setMarkerShapeLocal \"ICON\";\n_marker setMarkerTypeLocal \"DOT\";\n_marker s" +1 setMarkerSize !"DOT\";\n_marker setMarkerColorLocal \"ColorOrange\";\n_marker setMarkerSizeLocal [1.0, 1.0];\n_marker setMarkerTextLocal format [\"%1\"," +1 setMarkerText !",if (_vehicle == _x) then {name _x} else {_vehicle call dayz_getCrew}];\n_marker setMarkerColorLocal \"ColorGreen\";" !"rOrange\";\n_marker setMarkerSizeLocal [1.0, 1.0];\n_marker setMarkerTextLocal format [\"%1\",_name];\nsystemChat format[localize \"STR" +1 setMarkerType !",if (_vehicle == _x) then {name _x} else {_vehicle call dayz_getCrew}];\n_marker setMarkerColorLocal \"ColorGreen\";" !" select 1]];\n_marker setMarkerShapeLocal \"ICON\";\n_marker setMarkerTypeLocal \"DOT\";\n_marker setMarkerColorLocal \"ColorOrange\";\n_m" 1 setPosASL !="_unit setPosAsl [(_position select 0), (_position select 1), (LHA_height+1)];" !="_flame setPosASL [_pos select 0,_pos select 1,(_pos select 2)+0.2];" !="_fire setPosASL _location;" !"_objectHelper setPosASL _position;\n} else {" !"_b0x1337 setPosASL (getPosASL player);\n} else {" !"_obj setPosASL [_center select 0, _a, _b];" !"_objectSnapGizmo setPosASL " !"_para setposasl [\n" !"_thingy setPosASL (ATLToASL _pos);\n} else {" !="> \"fixWaterPos\");\nif (_fixWaterSpawn == 1) then {\n_vehicle setPosASL (_pos);\n} else {\n_vehicle setPos (_pos);\n}; \n} else {\n_ve" 1 setTerrainGrid 1 setUnitRecoilCoefficient