mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-13 19:52:38 +03:00
Direct menu to cursortarget or player
Please test the living hell out of this.
This commit is contained in:
@@ -7,38 +7,54 @@ if ((vehicle player) == player) then {
|
||||
_cTarget = cursorTarget;
|
||||
_dis = if (_cTarget isKindOf "USEC_ch53_E" || _cTarget isKindOf "MV22") then {25} else {12};
|
||||
_exit = false;
|
||||
|
||||
if (locked _cTarget && {(_cTarget isKindOf "LandVehicle") or {_cTarget isKindOf "Air"} or {_cTarget isKindOf "Ship"}} && {(player distance _cTarget) <= _dis}) then {
|
||||
_exit = true;
|
||||
} else {
|
||||
_nearestObjects = (position player) nearEntities [["Air", "Car", "Motorcycle", "Tank", "Ship"], 26];
|
||||
if (count _nearestObjects >= 1) then {
|
||||
{
|
||||
_vehType = TypeOf _x;
|
||||
_dis = getNumber (configFile >> "CfgVehicles" >> _vehType >> "supplyRadius");
|
||||
if (_dis < 2) then {_dis = _dis * 4;} else {_dis = _dis * 3;}; //There seems to be significant inaccuracy of the supplyRadius config definition that is worse when the value is smaller
|
||||
_dis = _dis min 12;
|
||||
_gearSelection = getText (configFile >> "CfgVehicles" >> _vehType >> "memoryPointSupply");
|
||||
_supplyPositionWorld = _x modelToWorld (_x selectionPosition _gearSelection);
|
||||
if (_x isKindOf "USEC_ch53_E" || _x isKindOf "MV22") then {_dis = 25;};
|
||||
if (locked _x && {(_supplyPositionWorld distance player) <= _dis}) then {
|
||||
_exit = true;
|
||||
};
|
||||
} forEach _nearestObjects;
|
||||
|
||||
if (!DZE_GearCheckBypass) then {
|
||||
if (locked _cTarget && {(_cTarget isKindOf "LandVehicle") or {_cTarget isKindOf "Air"} or {_cTarget isKindOf "Ship"}} && {(player distance _cTarget) <= _dis}) then {
|
||||
_exit = true;
|
||||
} else {
|
||||
_nearestObjects = (position player) nearEntities [["Air", "Car", "Motorcycle", "Tank", "Ship"], 26];
|
||||
if (count _nearestObjects >= 1) then {
|
||||
{
|
||||
_vehType = TypeOf _x;
|
||||
_dis = getNumber (configFile >> "CfgVehicles" >> _vehType >> "supplyRadius");
|
||||
if (_dis < 2) then {_dis = _dis * 4;} else {_dis = _dis * 3;}; //There seems to be significant inaccuracy of the supplyRadius config definition that is worse when the value is smaller
|
||||
_dis = _dis min 12;
|
||||
_gearSelection = getText (configFile >> "CfgVehicles" >> _vehType >> "memoryPointSupply");
|
||||
_supplyPositionWorld = _x modelToWorld (_x selectionPosition _gearSelection);
|
||||
if (_x isKindOf "USEC_ch53_E" || _x isKindOf "MV22") then {_dis = 25;};
|
||||
if (locked _x && {(_supplyPositionWorld distance player) <= _dis}) then {
|
||||
_exit = true;
|
||||
};
|
||||
} forEach _nearestObjects;
|
||||
};
|
||||
};
|
||||
if (DZE_BackpackAntiTheft) then {
|
||||
_friendlies = player getVariable ["friendlies",[]];
|
||||
_rID = if (DZE_permanentPlot) then { getPlayerUID _cTarget } else { _cTarget getVariable ["CharacterID","0"] };
|
||||
if ((!canbuild or isInTraderCity) && {_cTarget isKindOf "Man"} && {alive _cTarget} && {isPlayer _cTarget} && {!(_rID in _friendlies)} && {(player distance _cTarget) < 12}) then {
|
||||
localize "STR_EPOCH_PLAYER_316" call dayz_rollingMessages;
|
||||
_display closeDisplay 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
if (_exit) then {
|
||||
_lastSave = dayz_lastSave;
|
||||
_startTime = diag_tickTime;
|
||||
localize "str_epoch_player_7" call dayz_rollingMessages;
|
||||
_display closeDisplay 1;
|
||||
};
|
||||
|
||||
if (DZE_BackpackAntiTheft) then {
|
||||
_friendlies = player getVariable ["friendlies",[]];
|
||||
_rID = if (DZE_permanentPlot) then { getPlayerUID _cTarget } else { _cTarget getVariable ["CharacterID","0"] };
|
||||
if ((!canbuild or isInTraderCity) && {_cTarget isKindOf "Man"} && {alive _cTarget} && {isPlayer _cTarget} && {!(_rID in _friendlies)} && {(player distance _cTarget) < 12}) then {
|
||||
localize "STR_EPOCH_PLAYER_316" call dayz_rollingMessages;
|
||||
_display closeDisplay 1;
|
||||
_ctType = typeOf _cTarget;
|
||||
//direct gear to cursorTarget
|
||||
[_lastSave, _startTime, _ctType, _cTarget] spawn {
|
||||
waitUntil {((_this select 0) != dayz_lastSave) || {diag_tickTime >= ((_this select 1) + 1)}}; //waiting is required otherwise player_forceSave will reset DZE_GearCheckBypass
|
||||
DZE_GearCheckBypass = true;
|
||||
if ((((_this select 2) in DZE_isNewStorage) || {(_this select 2) == "LockboxStorage"} || {(_this select 2) isKindOf "Land_A_tent"} || {(_this select 2) isKindOf "WeaponHolder"} || {((!alive (_this select 3)) && {(_this select 2) isKindOf "Man"})}) && {!(locked (_this select 3))}) then {
|
||||
Player action ["GEAR", (_this select 3)];
|
||||
} else {
|
||||
createGearDialog [player, "RscDisplayGear"];
|
||||
};
|
||||
};
|
||||
} else {
|
||||
DZE_GearCheckBypass = false; //exit will always be false the when the above code opens a new gear menu, this will reset the variable
|
||||
};
|
||||
};
|
||||
@@ -544,6 +544,7 @@ DZE_tradeObject = DZE_tradeVehicle + ["trade_backpacks"];
|
||||
if (isNil "DZE_plotOwnershipExclusions") then {
|
||||
DZE_plotTakeOwnershipItems = DayZ_SafeObjects - (DZE_LockableStorage + ["Plastic_Pole_EP1_DZ","DZ_storage_base"]);
|
||||
};
|
||||
DZE_GearCheckBypass = false;
|
||||
isInTraderCity = false;
|
||||
inTraderCity = "Unknown Trader";
|
||||
PlayerDeaths = [];
|
||||
|
||||
Reference in New Issue
Block a user