mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-16 05:39:58 +03:00
This is a complete re-build of DayZ_SafeObjects. It was necessary to remove all the duplicated entries. DayZ_SafeObjects gets defined by multiple arrays now. This makes it much easier to update. Also every building with gear gets maintained now. Every single buildable epoch building is included within the maintain array and DayZ_SafeObjects.
99 lines
3.3 KiB
Plaintext
99 lines
3.3 KiB
Plaintext
/*
|
|
DayZ Unlock Door
|
|
Usage: [_obj] call player_unlockDoor;
|
|
Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com.
|
|
Modified for Zupa's DoorManagement.
|
|
*/
|
|
if (dayz_actionInProgress) exitWith {localize "str_epoch_player_21" call dayz_rollingMessages;};
|
|
dayz_actionInProgress = true;
|
|
|
|
private ["_display","_displayCombo","_displayEye","_doorMethod","_hasAccess","_notNearestPlayer","_obj","_objectCharacterID","_code"];
|
|
|
|
_doorMethod = "";
|
|
_displayCombo = findDisplay 41144;
|
|
_displayEye = findDisplay 61144;
|
|
if (!isNull _displayEye) then {_display = _displayEye; _doorMethod = "Eye";};
|
|
if (!isNull _displayCombo) then {_display = _displayCombo; _doorMethod = "Combo";};
|
|
|
|
if (!isNull dayz_selectedDoor) then {
|
|
_obj = dayz_selectedDoor;
|
|
_notNearestPlayer = _obj call dze_isnearest_player;
|
|
|
|
if (_notNearestPlayer) then {
|
|
_display closeDisplay 2;
|
|
localize "STR_EPOCH_ACTIONS_16" call dayz_rollingMessages;
|
|
} else {
|
|
_objectCharacterID = _obj getVariable ["CharacterID","0"];
|
|
|
|
if (DZE_doorManagement) then {
|
|
_hasAccess = [player, _obj] call FNC_check_access;
|
|
if (
|
|
(_hasAccess select 0) or // door owner
|
|
(_hasAccess select 2) or // plot owner
|
|
(_hasAccess select 3) or // plot friend
|
|
(_hasAccess select 4) or // plot admin
|
|
(_hasAccess select 5) or // door friend
|
|
(_hasAccess select 6) // door admin
|
|
) then {
|
|
DZE_Lock_Door = dayz_selectedDoor getVariable['CharacterID','0'];
|
|
};
|
|
};
|
|
|
|
if (isNil "dayz_UnlockTime") then {dayz_UnlockTime = 5;};
|
|
if (DZE_doorManagementHarderPenalty && {((diag_tickTime - dayz_lastCodeFail) + dayz_unlockTime / 2) > 120}) then {dayz_UnlockTime = 5;};
|
|
|
|
|
|
if (DZE_Lock_Door == _objectCharacterID) then {
|
|
_display closeDisplay 2;
|
|
|
|
_code = [DZE_Lock_Door,format ["%1 - EYESCAN",_objectCharacterID]] select (_doorMethod == "EYE");
|
|
|
|
if !(typeof _obj in DZE_LockedGates) then {
|
|
[player,"combo_unlock",0,false] call dayz_zombieSpeak;
|
|
|
|
if (_obj animationPhase "Open_hinge" == 0) then {
|
|
_obj animate ["Open_hinge", 1];
|
|
};
|
|
if (_obj animationPhase "Open_latch" == 0) then {
|
|
_obj animate ["Open_latch", 1];
|
|
};
|
|
|
|
PVDZE_handleSafeGear = [player,_obj,5,_code];
|
|
publicVariableServer "PVDZE_handleSafeGear";
|
|
} else {
|
|
GateMethod = _code;
|
|
};
|
|
|
|
if (_doorMethod == "Eye") then {
|
|
localize "STR_EPOCH_DOORACCESS_SUCCESS" call dayz_rollingMessages;
|
|
};
|
|
dayz_UnlockTime = 5;
|
|
dayz_lastCodeFail = 0;
|
|
} else {
|
|
PVDZE_handleSafeGear = [player,_obj,6,if (_doorMethod == "EYE") then {"EYESCAN"} else {DZE_Lock_Door}];
|
|
publicVariableServer "PVDZE_handleSafeGear";
|
|
|
|
DZE_Lock_Door = "";
|
|
[player,(getPosATL player),20,"combo_locked"] spawn fnc_alertZombies;
|
|
|
|
if (_doorMethod == "Eye") then {
|
|
localize "STR_EPOCH_DOORACCESS_FAILURE" call dayz_rollingMessages;
|
|
_display closeDisplay 2;
|
|
} else {
|
|
if (DZE_doorManagementHarderPenalty) then {
|
|
dayz_lastCodeFail = (diag_tickTime + dayz_UnlockTime);
|
|
dayz_UnlockTime = dayz_UnlockTime * 2;
|
|
} else {
|
|
dayz_lastCodeFail = (diag_tickTime + dayz_UnlockTime);
|
|
};
|
|
|
|
format [localize "str_epoch_player_19",round(dayz_lastCodeFail - diag_tickTime)] call dayz_rollingMessages;
|
|
_display closeDisplay 2;
|
|
};
|
|
};
|
|
};
|
|
} else {
|
|
_display closeDisplay 2;
|
|
};
|
|
dayz_actionInProgress = false;
|