DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionCombinationLockUnlock.c
См. документацию.
2{
4 {
5 m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_OPENDOORFW;
6 m_Text = "#detach_combination_lock";
7 }
8
14
15 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
16 {
17 if (!target.GetObject())
18 return false;
19
20 CombinationLock lock = CombinationLock.Cast(target.GetObject());
21 if (!lock)
22 return false;
23
24 EntityAI parent = lock.GetHierarchyParent();
25 if (!parent)
26 return false;
27
28 int facingSide = lock.GetLockSideByComponentIndex(target.GetComponentIndex());
29 if (facingSide == -1)
30 return false;
31
32 if (parent.CanUseConstruction())
33 {
34 ConstructionActionData constructionActionData = player.GetConstructionActionData();
35 constructionActionData.SetCombinationLock(lock);
36 constructionActionData.SetCombinationLockSide(facingSide);
37 return true;
38 }
39
40 return false;
41 }
42
44 override void OnExecute(ActionData action_data)
45 {
46 if (!GetGame().IsServer() && GetGame().IsMultiplayer())
47 return;
48
49 TryUnlockLock(action_data);
50 }
51
52 override void OnExecuteServer(ActionData action_data)
53 {
54 TryUnlockLock(action_data);
55 }
56
57 void TryUnlockLock(ActionData action_data)
58 {
59 ConstructionActionData constructionActionData = action_data.m_Player.GetConstructionActionData();
60 CombinationLock combinationLock = constructionActionData.GetCombinationLock();
61 int facingSide = constructionActionData.GetCombinationLockSide();
62 if (!combinationLock || facingSide == -1)
63 return;
64
65 combinationLock.CheckLockedStateServer(facingSide);
66
67 // Check for unlock state
68 if (!combinationLock.IsLockedOnParent())
69 {
70 if (GetGame().IsMultiplayer())
71 ClearActionJuncture(action_data);
72 else
73 ClearInventoryReservationEx(action_data);
74
75 EntityAI targetEntity = EntityAI.Cast(action_data.m_Target.GetObject());
76 combinationLock.UnlockOnServer(action_data.m_Player, targetEntity.GetHierarchyParent(), facingSide);
77 }
78 else
79 {
80 combinationLock.StartItemSoundServer(SoundConstants.ITEM_COMBINATION_LOCK_WRONG_COMBINATION);
81 }
82 }
83
84 override void OnEndServer(ActionData action_data)
85 {
86 super.OnEndServer(action_data);
87
88 ConstructionActionData constructionActionData = action_data.m_Player.GetConstructionActionData();
89 CombinationLock combinationLock = constructionActionData.GetCombinationLock();
90 if (!combinationLock)
91 return;
92
93 combinationLock.StopItemSoundServer(SoundConstants.ITEM_COMBINATION_LOCK_WRONG_COMBINATION);
94 constructionActionData.SetCombinationLock(null);
95 }
96}
string m_Text
Определения ActionBase.c:57
ref CCIBase m_ConditionItem
Определения ActionBase.c:63
ref CCTBase m_ConditionTarget
Определения ActionBase.c:64
void ClearInventoryReservationEx(ActionData action_data)
Определения ActionBase.c:1120
void ClearActionJuncture(ActionData action_data)
Определения ActionBase.c:1207
void ActionTarget(Object object, Object parent, int componentIndex, vector cursorHitPos, float utility, string surfaceName="")
Определения ActionTargets.c:125
override void OnEndServer(ActionData action_data)
Определения ActionCombinationLockUnlock.c:84
void TryUnlockLock(ActionData action_data)
Определения ActionCombinationLockUnlock.c:57
override void OnExecuteServer(ActionData action_data)
Определения ActionCombinationLockUnlock.c:52
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionCombinationLockUnlock.c:15
override void CreateConditionComponents()
Определения ActionCombinationLockUnlock.c:9
override void OnExecute(ActionData action_data)
Only handles single player/offline handling.
Определения ActionCombinationLockUnlock.c:44
PlayerBase m_Player
Определения ActionBase.c:40
ref ActionTarget m_Target
Определения ActionBase.c:39
Определения ActionBase.c:22
void ActionInteractBase()
Определения ActionInteractBase.c:43
int m_CommandUID
Определения AnimatedActionBase.c:147
Определения CCINone.c:2
Определения CCTNonRuined.c:2
void SetCombinationLock(CombinationLock combination_lock)
Определения ConstructionActionData.c:401
CombinationLock GetCombinationLock()
Определения ConstructionActionData.c:396
int GetCombinationLockSide()
Определения ConstructionActionData.c:461
void SetCombinationLockSide(int lockSide)
Определения ConstructionActionData.c:456
Определения PlayerBaseClient.c:2
const float DEFAULT
Определения ActionConstants.c:114
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
DayZGame GetGame()
Определения gameplay.c:636