diff --git a/SQF/dayz_code/Configs/RscDisplay/remoteVehicle.hpp b/SQF/dayz_code/Configs/RscDisplay/remoteVehicle.hpp new file mode 100644 index 000000000..4a73600fe --- /dev/null +++ b/SQF/dayz_code/Configs/RscDisplay/remoteVehicle.hpp @@ -0,0 +1,304 @@ +class rv_RscText { + idc = -1; + x = 0; + y = 0; + h = 0.037; + w = 0.3; + type = 0; + style = 0; + shadow = 2; + colorShadow[] = {0, 0, 0, 0.5}; + font = "Zeppelin32"; + SizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + text = ""; + colorText[] = {1, 1, 1, 1.0}; + colorBackground[] = {0, 0, 0, 0}; + linespacing = 1; + tooltipColorText[] = {1,1,1,1}; + tooltipColorBox[] = {1,1,1,1}; + tooltipColorShade[] = {0,0,0,0.65}; +}; + +class rv_RscTitle : rv_RscText { + idc = -1; + style = 0; + sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorText[] = {0.95, 0.95, 0.95, 1}; +}; + +class rv_RscShortcutButton { + idc = -1; + style = 0; + default = 0; + shadow = 2; + w = 0.183825; + h = "((((safezoneW / safezoneH) min 1.2) / 1.2) / 20)"; + color[] = {1,1,1,1.0}; + colorFocused[] = {1,1,1,1.0}; + color2[] = {0.95,0.95,0.95,1}; + colorDisabled[] = {1,1,1,0.25}; + colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",1}; + colorBackgroundFocused[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])",1}; + colorBackground2[] = {1,1,1,1}; + animTextureDefault = "gza\scripts\gold\gui\normal_ca.paa"; + animTextureNormal = "gza\scripts\gold\gui\normal_ca.paa"; + animTextureDisabled = "gza\scripts\gold\gui\normal_ca.paa"; + animTextureOver = "gza\scripts\gold\gui\over_ca.paa"; + animTextureFocused = "gza\scripts\gold\gui\focus_ca.paa"; + animTexturePressed = "gza\scripts\gold\gui\down_ca.paa"; + periodFocus = 1.2; + periodOver = 0.8; + class HitZone { + left = 0.0; + top = 0.0; + right = 0.0; + bottom = 0.0; + }; + class ShortcutPos { + left = 0; + top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; + w = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1) * (3/4)"; + h = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + }; + class TextPos { + left = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1) * (3/4)"; + top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 20) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; + right = 0.005; + bottom = 0.0; + }; + period = 0.4; + font = "Zeppelin32"; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + text = ""; + action = ""; + class Attributes { + font = "Zeppelin32"; + color = "#E5E5E5"; + align = "left"; + shadow = 1; + }; + class AttributesImage { + font = "Zeppelin32"; + color = "#E5E5E5"; + align = "left"; + }; + soundPush[] = { "", 0, 1 }; + soundEnter[] ={ "", 0, 1 }; + soundClick[] ={ "", 0, 1 }; + soundEscape[] ={ "", 0, 1 }; + sound[] ={ "", 0, 1 }; +}; + +class rv_RscButtonMenu : rv_RscShortcutButton { + idc = -1; + type = 16; + style = "0x02 + 0xC0"; + default = 0; + shadow = 0; + x = 0; + y = 0; + w = 0.095589; + h = 0.039216; + animTextureNormal = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureDisabled = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureOver = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureFocused = "#(argb,8,8,3)color(1,1,1,1)"; + animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)"; + animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)"; + colorBackground[] = {0,0,0,0.8}; + colorBackgroundFocused[] = {1,1,1,1}; + colorBackground2[] = {0.75,0.75,0.75,1}; + color[] = {1,1,1,1}; + colorFocused[] = {0,0,0,1}; + color2[] = {0,0,0,1}; + colorText[] = {1,1,1,1}; + colorDisabled[] = {1,1,1,0.25}; + period = 1.2; + periodFocus = 1.2; + periodOver = 1.2; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + sizeEx = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + tooltipColorText[] = {1,1,1,1}; + tooltipColorBox[] = {1,1,1,1}; + tooltipColorShade[] = {0,0,0,0.65}; + class TextPos { + left = "0.25 * (((safezoneW / safezoneH) min 1.2) / 40)"; + top = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) - (((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)) / 2"; + right = 0.005; + bottom = 0.0; + }; + class Attributes { + font = "Zeppelin32"; + color = "#E5E5E5"; + align = "center"; + shadow = 0; + }; + class ShortcutPos { + left = "(6.25 * (((safezoneW / safezoneH) min 1.2) / 40)) - 0.0225 - 0.005"; + top = 0.005; + w = 0.0225; + h = 0.03; + }; + textureNoShortcut = ""; +}; + +class rv_RscListBox { + style = 16; + idc = -1; + type = 5; + w = 0.275; + h = 0.04; + font = "Zeppelin32"; + colorSelect[] = {0.11,0.686,0.831,1}; + colorText[] = {1, 1, 1, 1}; + colorBackground[] = {0.28,0.28,0.28,0.28}; + colorSelect2[] = {1, 1, 1, 1}; + colorSelectBackground[] = {0.95, 0.95, 0.95, 0.5}; + colorSelectBackground2[] = {1, 1, 1, 0.5}; + colorScrollbar[] = {0.2, 0.2, 0.2, 1}; + arrowFull = "\ca\ui\data\igui_arrow_top_active_ca.paa"; + arrowEmpty = "\ca\ui\data\igui_arrow_top_ca.paa"; + wholeHeight = 0.45; + rowHeight = 0.04; + color[] = {0.7, 0.7, 0.7, 1}; + colorActive[] = {0,0,0,1}; + colorDisabled[] = {0,0,0,0.3}; + sizeEx = 0.023; + maxHistoryDelay = 1; + autoScrollSpeed = -1; + autoScrollDelay = 5; + autoScrollRewind = 0; + tooltipColorText[] = {1,1,1,1}; + tooltipColorBox[] = {1,1,1,1}; + tooltipColorShade[] = {0,0,0,0.65}; + class ScrollBar { + color[] = {1, 1, 1, 0.6}; + colorActive[] = {1, 1, 1, 1}; + colorDisabled[] = {1, 1, 1, 0.3}; + thumb = "\ca\ui\data\igui_scrollbar_thumb_ca.paa"; + arrowFull = "\ca\ui\data\igui_arrow_top_active_ca.paa"; + arrowEmpty = "\ca\ui\data\igui_arrow_top_ca.paa"; + border = "\ca\ui\data\igui_border_scroll_ca.paa"; + }; + soundPush[] = { "", 0, 1 }; + soundEnter[] ={ "", 0, 1 }; + soundClick[] ={ "", 0, 1 }; + soundEscape[] ={ "", 0, 1 }; + sound[] ={ "", 0, 1 }; + soundSelect[] = { "", 0, 1 }; +}; + +class rv_RscStructuredText { + type = 13; + style = 0; + x = 0; + y = 0; + h = 0.035; + w = 0.1; + text = ""; + size = "(((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 1)"; + colorText[] = {1, 1, 1, 1.0}; + shadow = 1; + class Attributes { + font = "Zeppelin32"; + color = "#ffffff"; + align = "left"; + shadow = 1; + }; +}; + +class remoteVehicle { + idd = 8800; + name="remoteVehicle"; + onLoad = "uiNamespace setVariable ['rv_dialog', _this select 0]"; + movingEnabled = 0; + enableSimulation = 1; + + class controlsBackground { + class rv_RscTitleBackground : rv_RscText { + colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; + idc = -1; + x = 0.1; + y = 0.2; + w = 0.8; + h = (1 / 25); + }; + + class MainBackground : rv_RscText { + colorBackground[] = {0,0,0,0.7}; + idc = -1; + x = 0.1; + y = 0.2 + (11 / 250); + w = 0.8; + h = 0.7 - (22 / 250); + }; + + class VehicleInfoHeader : rv_RscText { + idc = 8830; + text = $STR_CL_RV_VEHICLE_INFO; + colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; + x = 0.47; y = 0.26; + w = 0.42; + h = (1 / 25); + }; + + class CloseBtn : rv_RscButtonMenu { + idc = -1; + text = $STR_UI_CLOSE; + onButtonClick = "closeDialog 2;"; + x = -0.06 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); + y = 0.9 - (1 / 25); + w = (6.25 / 40); + h = (1 / 25); + }; + }; + + class controls { + class Title : rv_RscTitle { + idc = 8801; + text = ""; + x = 0.1; + y = 0.2; + w = 0.8; + h = (1 / 25); + }; + + class VehicleList : rv_RscListBox { + idc = 8802; + text = ""; + sizeEx = 0.04; + colorBackground[] = {0.1,0.1,0.1,0.9}; + onLBSelChanged = "[_this] call rv_vehicleInfo;"; + x = 0.11; y = 0.302; + w = 0.35; h = 0.49; + }; + + class VehicleTitleBox : rv_RscText { + idc = 8804; + text = $STR_CL_RV_VEHICLE_LIST; + colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.3843])", "(profilenamespace getvariable ['GUI_BCG_RGB_G',0.7019])", "(profilenamespace getvariable ['GUI_BCG_RGB_B',0.8862])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.7])"}; + x = 0.11; y = 0.26; + w = 0.35; + h = (1 / 25); + }; + + class selectVehicle : rv_RscButtonMenu { + idc = 8850; + text = $STR_CL_RV_SELECT_VEHICLE; + onButtonClick = "rv_isOk = true;closeDialog 0;"; + x = 0.1 + (6.25 / 40) + (1 / 250 / (safezoneW / safezoneH)); + y = 0.9 - (1 / 25); + w = (6.25 / 20); + h = (1 / 25); + }; + + class vehicleInfomationList : rv_RscStructuredText { + idc = 8803; + text = ""; + sizeEx = 0.035; + x = 0.47; y = 0.3; + w = 0.41; h = 0.5; + }; + }; +}; diff --git a/SQF/dayz_code/actions/remoteVehicle/remoteVehicle.sqf b/SQF/dayz_code/actions/remoteVehicle/remoteVehicle.sqf new file mode 100644 index 000000000..8b51bf3ae --- /dev/null +++ b/SQF/dayz_code/actions/remoteVehicle/remoteVehicle.sqf @@ -0,0 +1,152 @@ +/* + Remote vehicle script by salival (https://github.com/oiad) +*/ + +if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;}; +dayz_actionInProgress = true; + +private ["_characterID","_checkDistance","_display","_distance","_fuel","_group","_vehicleFound","_keyID","_keyName","_option","_time","_vehicle","_vehicleType","_index","_control","_keyDisplay","_exit"]; + +_keyName = _this select 0; +_option = _this select 1; + +_checkDistance = true; // Check to see if the player is too far away from the remote +_distance = 300; // Maximum distance the player can be away from the vehicle to be able to use the remote. + +disableSerialization; + +_exit = { + dayz_actionInProgress = false; + rv_vehicleList = nil; + rv_selected = nil; +}; + +_display = findDisplay 106; +_display closeDisplay 0; + +_keyList = call epoch_tempKeys; +_keyID = 0; + +_keyID = (_keyList select 0) select ((_keyList select 2) find _keyName); +_foundPos = (_keyList select 0) find _keyID; + +if (_foundPos >= 0) then { + _keyDisplay = (_keyList select 1) select _foundPos; +}; + +if (_foundPos == -1) exitWith {systemChat localize "STR_CL_RV_NO_KEYS"; call _exit;}; + +rv_vehicleList = []; +_vehicleFound = false; +{ + _vehicleType = typeOf _x; + _characterID = _x getVariable ["CharacterID","0"]; + if ((_characterID == _keyID) && {_vehicleType isKindOf "Air" || _vehicleType isKindOf "LandVehicle" || _vehicleType isKindOf "Ship"}) then { + _vehicleFound = true; + rv_vehicleList set [count rv_vehicleList,_x]; + }; +} count vehicles; + +if (count rv_vehicleList > 1) then { + rv_isOk = false; + + createDialog "remoteVehicle"; + + _display = uiNamespace getVariable["rv_dialog", displayNull]; + _display displayCtrl 8801 ctrlSetText(format[localize "STR_CL_RV_TITLE",_keyDisplay]); + + _control = ((findDisplay 8800) displayCtrl 8802); + lbClear _control; + { + _control lbAdd getText(configFile >> "CfgVehicles" >> typeOf _x >> "displayName"); + if (!isNull DZE_myVehicle && {local DZE_myVehicle} && {alive DZE_myVehicle} && {DZE_myVehicle == _x}) then { + _control lbSetColor [(lbSize _control)-1,[0, 1, 0, 1]]; + }; + } count rv_vehicleList; + _control lbSetCurSel 0; + + waitUntil {!dialog}; + +} else { + rv_selected = rv_vehicleList select 0; + rv_isOk = true; +}; + +if (!rv_isOk) exitWith {call _exit;}; + +if (!_vehicleFound) exitWith {systemChat localize "STR_CL_RV_NO_VEHICLES"; call _exit;}; + +_vehicleType = typeOf rv_selected; +_displayName = getText(configFile >> "CfgVehicles" >> _vehicleType >> "displayName"); + +if (!alive rv_selected) exitWith {systemChat localize "STR_CL_RV_DESTROYED"; call _exit;}; +if (_checkDistance && {(player distance rv_selected) >= _distance}) exitWith {format[localize "STR_CL_RV_RANGE_FAIL",_displayName] call dayz_rollingMessages; call _exit;}; + +if (_option == 1) then { + _group = units group player; + + systemChat format[localize "STR_CL_RV_EJECT",_displayName]; + { + if !(_x in _group) then { + _x action ["eject",rv_selected]; + systemChat format[localize "STR_CL_RV_EJECT_PLAYER",name _x]; + }; + } forEach (crew rv_selected); +}; + +if (_option == 2) then { + systemChat format[localize "STR_CL_RV_ENGINE",if (isEngineOn rv_selected) then {localize "strwfoff"} else {localize "strwfon"},_displayName]; + if (isEngineOn rv_selected) then { + if (rv_selected isKindOf "Helicopter") then { // This is needed because dayz_engineSwitch won't turn off the engine for a helicopter. + _fuel = fuel rv_selected; + rv_selected setFuel 0; + player action ["engineOff",rv_selected]; + uiSleep 4.5; + rv_selected setFuel _fuel; + } else { + [rv_selected,false] call dayz_engineSwitch; + }; + } else { + [rv_selected,true] call dayz_engineSwitch; + }; +}; + +if (_option == 3) then { + systemChat format[localize "STR_BLD_UNLOCKED",_displayName]; + PVDZE_veh_Lock = [rv_selected,false]; + _time = diag_tickTime; + + if (local rv_selected) then { + PVDZE_veh_Lock call local_lockUnlock; + } else { + publicVariable "PVDZE_veh_Lock"; + waitUntil {uiSleep 0.1;(!locked rv_selected or (diag_tickTime - _time > 4))}; + }; +}; + +if (_option == 4) then { + systemChat format[localize "STR_EPOCH_PLAYER_117",_displayName]; + PVDZE_veh_Lock = [rv_selected,true]; + _time = diag_tickTime; + + if (local rv_selected) then { + PVDZE_veh_Lock call local_lockUnlock; + } else { + publicVariable "PVDZE_veh_Lock"; + waitUntil {uiSleep 0.1;(locked rv_selected or (diag_tickTime - _time > 4))}; + }; +}; + +if (_option == 5) then { + if !(rv_selected getVariable["vehicleLights",false]) then { + player action ["lightOn", rv_selected]; + systemChat format[localize "STR_CL_RV_LIGHTS",localize "strwfon",_vehicleType]; + rv_selected setVariable ["vehicleLights",true,true]; + } else { + player action ["lightOff", rv_selected]; + systemChat format[localize "STR_CL_RV_LIGHTS",localize "strwfoff",_vehicleType]; + rv_selected setVariable ["vehicleLights",false,true]; + }; +}; + +call _exit; \ No newline at end of file diff --git a/SQF/dayz_code/actions/remoteVehicle/vehicleInfo.sqf b/SQF/dayz_code/actions/remoteVehicle/vehicleInfo.sqf new file mode 100644 index 000000000..8fc6a2390 --- /dev/null +++ b/SQF/dayz_code/actions/remoteVehicle/vehicleInfo.sqf @@ -0,0 +1,54 @@ +private ["_backPackCount","_backPackCount_raw","_backPackSlots","_formattedText","_gearCount","_magazineCount","_magazineCount_raw","_magazineSlots","_name","_picture","_price","_text","_typeOf","_weaponSlots","_weaponsCount","_weaponsCount_raw","_control","_index"]; + +_gearCount = { + private ["_counter"]; + _counter = 0; + {_counter = _counter + _x;} count _this; + _counter +}; + +_control = (_this select 0) select 0; +_index = (_this select 0) select 1; + +rv_selected = rv_vehicleList select _index; +_typeOf = typeOf rv_selected; + +_weaponsCount_raw = getWeaponCargo rv_selected; +_magazineCount_raw = getMagazineCargo rv_selected; +_backPackCount_raw = getBackpackCargo rv_selected; + +_weaponSlots = getNumber(configFile >> "CfgVehicles" >> _typeOf >> "transportMaxWeapons"); +_magazineSlots = getNumber(configFile >> "CfgVehicles" >> _typeOf >> "transportMaxMagazines"); +_backPackSlots = getNumber(configFile >> "CfgVehicles" >> _typeOf >> "transportmaxbackpacks"); +_name = getText(configFile >> "CfgVehicles" >> _typeOf >> "displayName"); +_picture = getText(configFile >> 'CfgVehicles' >> _typeOf >> 'picture'); + +_weaponsCount = (_weaponsCount_raw select 1) call _gearCount; +_magazineCount = (_magazineCount_raw select 1) call _gearCount; +_backPackCount = (_backPackCount_raw select 1) call _gearCount; + +_formattedText = format [ + "
" + + "%2: %3
" + + "%4: %5
" + + "%6: %13/%10 %14/%11 %15/%12
", + _picture, + localize "STR_EPOCH_NAME", + _name, + localize "STR_EPOCH_CLASS", + _typeOf, + localize "STR_EPOCH_CARGO_SPACE", + "\z\addons\dayz_code\gui\gear\gear_ui_slots_weapons_white.paa", + "\z\addons\dayz_code\gui\gear\gear_ui_slots_items_white.paa", + "\z\addons\dayz_code\gui\gear\gear_ui_slots_backPacks_white.paa", + _weaponSlots, + _magazineSlots, + _backPackSlots, + _weaponsCount, + _magazineCount, + _backPackCount, + _text +]; + +((findDisplay 8800) displayCtrl 8803) ctrlSetStructuredText parseText _formattedText; +ctrlShow [8803,true]; \ No newline at end of file diff --git a/SQF/dayz_code/config.cpp b/SQF/dayz_code/config.cpp index 50a6ab9f5..ad7d12120 100644 --- a/SQF/dayz_code/config.cpp +++ b/SQF/dayz_code/config.cpp @@ -129,6 +129,7 @@ class DefaultEventhandlers { #include "Configs\RscDisplay\doorManagement\doorManagement.hpp" #include "Configs\RscDisplay\doorManagement\doorAccess.hpp" #include "Configs\RscDisplay\zscDialogs.hpp" +#include "Configs\RscDisplay\remoteVehicle.hpp" //#include "Configs\RscDisplay\tradermenu.hpp" class CfgTasks diff --git a/SQF/dayz_code/configVariables.sqf b/SQF/dayz_code/configVariables.sqf index 553cdbf90..277a4ea41 100644 --- a/SQF/dayz_code/configVariables.sqf +++ b/SQF/dayz_code/configVariables.sqf @@ -179,6 +179,18 @@ if (!isDedicated) then { ["ItemGPS",localize "STR_CL_CA_RANGE_DOWN","if(isNil 'CA_GPS_RANGE') then {CA_GPS_RANGE = 1500;};CA_GPS_RANGE = (CA_GPS_RANGE - 100) max 1000; format[localize 'STR_CL_CA_RANGE_GPS',CA_GPS_RANGE] call dayz_rollingMessages;","true"] */ ]; + + DZE_Remote_Vehicle = false; // Enable/Disable the Remote Vehicle options like ejecting players from a vehicle or lock/unlock the vehicle from the distance just by the key. + + if (DZE_Remote_Vehicle) then { + DZE_CLICK_ACTIONS = DZE_CLICK_ACTIONS + [ + ["ItemKey",localize "STR_CL_RV_CA_EJECT","spawn remoteVehicle;","true",1], + ["ItemKey",localize "STR_CL_RV_CA_ENGINE","spawn remoteVehicle;","true",2], + ["ItemKey",localize "STR_CL_RV_CA_UNLOCK","spawn remoteVehicle;","true",3], + ["ItemKey",localize "STR_CL_RV_CA_LOCK","spawn remoteVehicle;","true",4], + ["ItemKey",localize "STR_CL_RV_CA_LIGHTS","spawn remoteVehicle;","true",5] + ]; + }; }; // Both diff --git a/SQF/dayz_code/init/compiles.sqf b/SQF/dayz_code/init/compiles.sqf index ad0589cd6..da871e734 100644 --- a/SQF/dayz_code/init/compiles.sqf +++ b/SQF/dayz_code/init/compiles.sqf @@ -198,6 +198,11 @@ if (!isDedicated) then { fnc_radioState = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\radioState.sqf"; // Toggle radio on and off fnc_localizeMessage = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_localizeMessage.sqf"; fnc_remoteMessage = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_remoteMessage.sqf"; + + 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"; + }; // Weather if (DZE_Weather in [3,4]) then {