DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionDetachBattery.c
См. документацию.
2{
3 protected const string SELECTION_BACK = "back";
4
5 override void CreateConditionComponents()
6 {
9
10 m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_ATTACHITEM;
11 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
12 }
13
14 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
15 {
16 if (!super.ActionCondition(player, target, item))
17 return false;
18
19 EntityAI targetEntity = EntityAI.Cast(target.GetObject());
20 if (!targetEntity || targetEntity && !targetEntity.GetInventory())
21 return false;
22
23 if (!targetEntity.GetInventory().HasAttachmentSlot(Battery9V.SLOT_ID))
24 return false;
25
26 EntityAI attachment = targetEntity.GetInventory().FindAttachment(Battery9V.SLOT_ID);
27 if (!attachment)
28 return false;
29
30 DigitalCodeLock codeLock = DigitalCodeLock.Cast(targetEntity);
31 if (codeLock)
32 {
33 if (!codeLock.GetHierarchyRoot())
34 return false;
35
36 if (codeLock.IsLocked() || codeLock.IsLockedInSlot())
37 return false;
38
39 array<string> selections = new array<string>;
40 if (codeLock)
41 codeLock.GetActionComponentNameList(target.GetComponentIndex(), selections);
42
43 bool isFactingBackSide;
44 foreach (string selectionName : selections)
45 {
46 if (selectionName == SELECTION_BACK)
47 {
48 isFactingBackSide = true;
49 break;
50 }
51 }
52
53 if (!isFactingBackSide)
54 return false;
55 }
56
57 if (player.GetInventory().CanAddEntityIntoHands(attachment))
58 {
59 if (attachment.CanDetachAttachment(targetEntity) && targetEntity.CanReleaseAttachment(attachment))
60 {
61 m_Text = "#detach_battery " + attachment.GetDisplayName();
62 return true;
63 }
64 }
65
66 return false;
67 }
68
69 override void OnExecute(ActionData action_data)
70 {
71 if (GetGame().IsDedicatedServer())
72 {
73 ClearActionJuncture(action_data);
74 return;
75 }
76
77 EntityAI targetEntity = EntityAI.Cast(action_data.m_Target.GetObject());
78 if (targetEntity)
79 {
80 EntityAI attachment = targetEntity.GetInventory().FindAttachment(Battery9V.SLOT_ID);
81 if (attachment)
82 {
83 ProcessDetach(action_data, attachment);
84 }
85 }
86 }
87
88 void ProcessDetach(ActionData actionData, EntityAI attachment)
89 {
91
92 //take to hands
93 actionData.m_Player.PredictiveTakeEntityToHands(attachment);
94 }
95
96 override bool CanBeSetFromInventory()
97 {
98 return false;
99 }
100}
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
int m_StanceMask
Определения ActionBase.c:61
void ActionTarget(Object object, Object parent, int componentIndex, vector cursorHitPos, float utility, string surfaceName="")
Определения ActionTargets.c:125
PlayerBase m_Player
Определения ActionBase.c:40
ref ActionTarget m_Target
Определения ActionBase.c:39
Определения ActionBase.c:22
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionDetachBattery.c:14
const string SELECTION_BACK
Определения ActionDetachBattery.c:3
override void OnExecute(ActionData action_data)
Определения ActionDetachBattery.c:69
void ProcessDetach(ActionData actionData, EntityAI attachment)
Определения ActionDetachBattery.c:88
override bool CanBeSetFromInventory()
Определения ActionDetachBattery.c:96
override void CreateConditionComponents()
Определения ActionDetachBattery.c:5
void ActionInteractBase()
Определения ActionInteractBase.c:43
int m_CommandUID
Определения AnimatedActionBase.c:147
static int SLOT_ID
Определения Battery9V.c:3
Определения Battery9V.c:2
Определения CCINone.c:2
Определения CCTCursor.c:2
bool IsLocked()
Определения CodeLock.c:373
Определения CodeLock.c:2
Определения PlayerBaseClient.c:2
const float DEFAULT
Определения ActionConstants.c:114
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
DayZGame GetGame()
Определения gameplay.c:636