mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-14 04:02:37 +03:00
Too many config variables made this unnecessarily complicated. Most servers will want the defaults. For those that want to customize further they can easily overwrite these files. These seem like the most logical defaults to me. Allow all of these people to manage and unlock by default: - door owner - plot owner - plot friend - plot admin - door friend - door admin Door friends should be able to manage by default so they don't have to wait for the owner to come back online to add someone as a door friend. Plot friends and plot admins can get around the door by removing it and building another one anyway, so locking them out is pointless. It is still useful to have these as separate variables for servers that do not require plot poles though. Regular friendlies should not be included by default, since we have the more fine grained plot friends and door friends lists for that. Regular friendlies will probably be replaced by groups in the near future anyway. Please post a comment if there are any issues with these defaults I'm forgetting. Thanks.
102 lines
3.1 KiB
Plaintext
102 lines
3.1 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.
|
|
*/
|
|
private ["_display","_obj","_objectCharacterID"];
|
|
|
|
if (!isNil "DZE_DYN_UnlockDoorInprogress") exitWith {localize "str_epoch_player_21" call dayz_rollingMessages;};
|
|
|
|
DZE_DYN_UnlockDoorInprogress = true;
|
|
|
|
// find display and check the door opening method
|
|
_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 {
|
|
if (!isNil 'KeyCodeTryTimer') then {
|
|
if (diag_tickTime > KeyCodeTryTimer) then {
|
|
KeyCodeTry = nil;
|
|
KeyCodeTryTimer = nil;
|
|
};
|
|
};
|
|
|
|
_obj = dayz_selectedDoor; // our target
|
|
_notNearestPlayer = _obj call dze_isnearest_player;
|
|
|
|
if (_notNearestPlayer) then {
|
|
// close display since another player is closer
|
|
_display closeDisplay 3000;
|
|
localize "STR_EPOCH_ACTIONS_16" call dayz_rollingMessages;
|
|
} else {
|
|
// get object combination
|
|
_objectCharacterID = _obj getVariable ["CharacterID","0"];
|
|
|
|
if(DZE_doorManagement) then {
|
|
// Check player access
|
|
_isowner = [player, _obj] call FNC_check_access;
|
|
if (
|
|
(_isOwner select 0) or // door owner
|
|
(_isOwner select 2) or // plot owner
|
|
(_isOwner select 3) or // plot friend
|
|
(_isOwner select 4) or // plot admin
|
|
(_isOwner select 5) or // door friend
|
|
(_isOwner select 6) // door admin
|
|
) then {
|
|
DZE_Lock_Door = dayz_selectedDoor getVariable['CharacterID','0'];
|
|
};
|
|
};
|
|
|
|
|
|
|
|
// Check combination
|
|
if (DZE_Lock_Door == _objectCharacterID) then {
|
|
[player,"combo_unlock",0,false] call dayz_zombieSpeak;
|
|
|
|
// close display
|
|
_display closeDisplay 3000;
|
|
|
|
// unlock if locked
|
|
if (_obj animationPhase "Open_hinge" == 0) then {
|
|
_obj animate ["Open_hinge", 1];
|
|
};
|
|
if (_obj animationPhase "Open_latch" == 0) then {
|
|
_obj animate ["Open_latch", 1];
|
|
};
|
|
|
|
if(_doorMethod == "Eye") then {
|
|
localize "STR_EPOCH_DOORACCESS_SUCCESS" call dayz_rollingMessages;
|
|
};
|
|
|
|
KeyCodeTry = nil;
|
|
} else {
|
|
["Working",0,[100,15,10,0]] call dayz_NutritionSystem;
|
|
DZE_Lock_Door = "";
|
|
[player,"combo_locked",0,false] call dayz_zombieSpeak;
|
|
[player,20,true,(getPosATL player)] spawn player_alertZombies;
|
|
|
|
if (isNil 'KeyCodeTry') then {KeyCodeTry = 0;};
|
|
KeyCodeTry = KeyCodeTry + 1;
|
|
|
|
if (!isNil 'KeyCodeTryTimer') then {KeyCodeTryTimer = diag_tickTime+10;};
|
|
if (KeyCodeTry >= ((round(random 4)) + 4)) then {
|
|
if (isNil 'KeyCodeTryTimer') then {KeyCodeTryTimer = diag_tickTime+10;};
|
|
localize "str_epoch_player_19" call dayz_rollingMessages;
|
|
_display closeDisplay 3000;
|
|
};
|
|
|
|
if(_doorMethod == "Eye") then {
|
|
localize "STR_EPOCH_DOORACCESS_FAILURE" call dayz_rollingMessages;
|
|
_display closeDisplay 3000;
|
|
};
|
|
};
|
|
};
|
|
} else {
|
|
// close display since no target
|
|
_display closeDisplay 3000;
|
|
};
|
|
DZE_DYN_UnlockDoorInprogress = nil; |