From 056f3a0cb0b85db770cdccca6d6338af63a33478 Mon Sep 17 00:00:00 2001 From: He-Man Date: Sun, 5 Nov 2017 02:47:11 +0100 Subject: [PATCH] Make temp Vehicles Lockable + Lock hints --- .../@epochhive/epochconfig.hpp | 1 + .../EPOCH_server_lockVehicle.sqf | 24 +++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/Server_Install_Pack/@epochhive/epochconfig.hpp b/Server_Install_Pack/@epochhive/epochconfig.hpp index c328e2cf..a1be095f 100644 --- a/Server_Install_Pack/@epochhive/epochconfig.hpp +++ b/Server_Install_Pack/@epochhive/epochconfig.hpp @@ -59,6 +59,7 @@ defaultlinkedItems[] = { disableAutoRefuel = "true"; // Removes auto refuel from all buildings at server startup. simulationHandlerOld = "false"; // When enabled this feature disables simulation on vehicles that are not nea players. Can help improve client fps at the cost of server fps. vehicleLockTime = 1800; // Controls how many seconds it takes to allow another person/group to unlock vehicle. +VehLockMessages = "true"; // Give players a hint, that the Vehicle is locked / unlocked removevehweapons[] = { // remove these Weapons from spawned Vehicles "missiles_DAR","gatling_30mm","gatling_20mm","missiles_DAGR","cannon_30mm_Plane_CAS_02_F","Missile_AA_03_Plane_CAS_02_F","Missile_AGM_01_Plane_CAS_02_F","Rocket_03_HE_Plane_CAS_02_F", "Rocket_03_AP_Plane_CAS_02_F","Bomb_03_Plane_CAS_02_F","Bomb_04_Plane_CAS_01_F","Rocket_04_AP_Plane_CAS_01_F","Rocket_04_HE_Plane_CAS_01_F","Missile_AGM_02_Plane_CAS_01_F","Missile_AA_04_Plane_CAS_01_F", diff --git a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_lockVehicle.sqf b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_lockVehicle.sqf index bcfeeebf..da0f4be4 100644 --- a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_lockVehicle.sqf +++ b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_lockVehicle.sqf @@ -13,7 +13,7 @@ https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_lockVehicle.sqf */ //[[[cog import generate_private_arrays ]]] -private ["_crew","_driver","_isLocked","_lockOwner","_lockedOwner","_logic","_playerGroup","_playerUID","_response","_vehLockHiveKey","_vehSlot"]; +private ["_VehLockMessages","_msg","_crew","_driver","_isLocked","_lockOwner","_lockedOwner","_logic","_playerGroup","_playerUID","_response","_vehLockHiveKey","_vehSlot"]; //[[[end]]] params [ ["_vehicle",objNull,[objNull]], @@ -26,6 +26,8 @@ if (isNull _vehicle) exitWith {}; if !([_player,_token] call EPOCH_server_getPToken) exitWith {}; if (_player distance _vehicle > 20) exitWith {}; +_VehLockMessages = ['CfgEpochClient' call EPOCH_returnConfig, "VehLockMessages", true] call EPOCH_fnc_returnConfigEntry; + // Group access _playerUID = getPlayerUID _player; _playerGroup = _player getVariable["GROUP", ""]; @@ -43,6 +45,9 @@ if (_vehSlot != "ABORT") then { if ((_response select 0) == 1 && (_response select 1) isEqualType [] && !((_response select 1) isEqualTo[])) then { _lockedOwner = _response select 1 select 0; }; +} +else { + _lockedOwner = _vehicle getvariable ["EPOCH_LockedOwner","-1"]; }; // get locked state @@ -57,6 +62,7 @@ _crew = []; }; } forEach (crew _vehicle); + // if vehicle has a crew and player is not inside vehicle only allow locking if already owner _logic = if !(_crew isEqualTo []) then { if (_player in _crew) then { @@ -75,7 +81,12 @@ _logic = if !(_crew isEqualTo []) then { if (_logic) then { if (_value) then { - ["VehicleLock", _vehLockHiveKey, EPOCH_vehicleLockTime, [_lockOwner]] call EPOCH_fnc_server_hiveSETEX; + if !(_vehSlot isequalto "ABORT") then { + ["VehicleLock", _vehLockHiveKey, EPOCH_vehicleLockTime, [_lockOwner]] call EPOCH_fnc_server_hiveSETEX; + } + else { + _vehicle setvariable ["EPOCH_LockedOwner",_lockOwner]; + }; } else { // re-allow damage (server-side) on first unlock if (_vehicle getVariable ["EPOCH_disallowedDamage", false]) then { @@ -90,4 +101,13 @@ if (_logic) then { } else { [_vehicle, _value] remoteExec ['EPOCH_client_lockVehicle',_vehicle]; }; + if (_VehLockMessages) then { + _msg = if (_value) then {"Vehicle Locked"} else {"Vehicle unlocked"}; + [_msg,5] remoteExec ["Epoch_Message",_player]; + }; +} +else { + if (_VehLockMessages) then { + ["You are not the owner",5] remoteExec ["Epoch_Message",_player]; + }; };