Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
actiontakeitemtohands.c
Go to the documentation of this file.
1
class
ActionTakeItemToHands
:
ActionInteractBase
2
{
3
void
ActionTakeItemToHands
()
4
{
5
m_CommandUID
=
DayZPlayerConstants
.CMD_ACTIONMOD_PICKUP_HANDS;
6
m_CommandUIDProne
=
DayZPlayerConstants
.CMD_ACTIONFB_PICKUP_HANDS;
7
m_Text
=
"#take_to_hands"
;
8
}
9
10
override
void
CreateConditionComponents
()
11
{
12
m_ConditionItem
=
new
CCINone
();
13
m_ConditionTarget
=
new
CCTObject
(
UAMaxDistances
.
DEFAULT
);
14
}
15
16
override
bool
HasProneException
()
17
{
18
return
true
;
19
}
20
21
override
typename
GetInputType
()
22
{
23
return
ContinuousInteractActionInput
;
24
}
25
26
override
bool
HasProgress
()
27
{
28
return
false
;
29
}
30
31
override
bool
ActionCondition
(
PlayerBase
player,
ActionTarget
target,
ItemBase
item)
32
{
33
ItemBase
targetItem =
ItemBase
.Cast(target.GetObject());
34
if
(!targetItem)
35
return
false
;
36
37
EntityAI
targetParent =
EntityAI
.Cast(targetItem.GetHierarchyParent());
38
if
(!targetItem.
IsTakeable
() || targetItem.IsBeingPlaced() || targetItem.IsSetForDeletion() || ( targetItem.GetHierarchyParent() && !
BaseBuildingBase
.Cast(targetParent) ) || ((targetParent && !targetItem.
CanDetachAttachment
(targetParent)) || (targetParent && !targetParent.CanReleaseAttachment(targetItem))))
39
return
false
;
40
41
return
player.GetInventory().CanAddEntityIntoHands(targetItem);
42
}
43
44
override
bool
CanContinue
(
ActionData
action_data)
45
{
46
return
true
;
47
}
48
49
override
void
OnEndServer
(
ActionData
action_data)
50
{
51
super.OnEndServer(action_data);
52
53
EntityAI
takenEntity =
EntityAI
.Cast(action_data.m_Target.GetObject());
54
if
(takenEntity && takenEntity.GetCompEM() && takenEntity.IsElectricAppliance())
55
takenEntity.GetCompEM().UnplugThis();
56
}
57
58
override
void
OnExecute
(
ActionData
action_data)
59
{
60
if
(
g_Game
.IsDedicatedServer())
61
{
62
ClearActionJuncture
(action_data);
63
return
;
64
}
65
66
ItemBase
ntarget =
ItemBase
.Cast(action_data.m_Target.GetObject());
67
ClearInventoryReservationEx
(action_data);
68
69
float
stackable = ntarget.GetTargetQuantityMax(-1);
70
71
if
(stackable == 0 || stackable >= ntarget.GetQuantity())
72
{
73
action_data.m_Player.PredictiveTakeEntityToHands(ntarget);
74
}
75
else
76
{
77
InventoryLocation
il =
new
InventoryLocation
();
78
il.
SetHands
(action_data.m_Player, ntarget);
79
ntarget.SplitIntoStackMaxToInventoryLocationClient(il);
80
}
81
}
82
83
override
void
CreateAndSetupActionCallback
(
ActionData
action_data)
84
{
85
EntityAI
target =
EntityAI
.Cast(action_data.m_Target.GetObject());
86
if
(!target)
87
return
;
88
89
ActionBaseCB
callback;
90
91
if
(target.IsHeavyBehaviour())
92
{
93
Class
.
CastTo
(callback, action_data.m_Player.StartCommand_Action(
DayZPlayerConstants
.CMD_ACTIONFB_PICKUP_HEAVY,
GetCallbackClassTypename
(),
DayZPlayerConstants
.STANCEMASK_ERECT));
94
}
95
else
96
{
97
if
(action_data.m_Player.IsPlayerInStance(
DayZPlayerConstants
.STANCEMASK_CROUCH |
DayZPlayerConstants
.STANCEMASK_ERECT))
98
{
99
Class
.
CastTo
(callback, action_data.m_Player.AddCommandModifier_Action(
m_CommandUID
,
GetCallbackClassTypename
()));
100
}
101
else
102
{
103
Class
.
CastTo
(callback, action_data.m_Player.StartCommand_Action(
m_CommandUIDProne
,
GetCallbackClassTypename
(),
DayZPlayerConstants
.STANCEMASK_PRONE));
104
}
105
}
106
107
callback.
SetActionData
(action_data);
108
callback.
InitActionComponent
();
109
action_data.m_Callback = callback;
110
}
111
112
113
override
bool
CanBeUsedOnBack
()
114
{
115
return
true
;
116
}
117
}
118
119
class
ActionSwapItemToHands:
ActionTakeItemToHands
120
{
121
bool
m_Executable
;
122
123
override
bool
ActionCondition
(
PlayerBase
player,
ActionTarget
target,
ItemBase
item)
124
{
125
ItemBase
targetItem =
ItemBase
.Cast(target.GetObject());
126
if
(!targetItem || !targetItem.
IsTakeable
() || targetItem.IsBeingPlaced())
127
return
false
;
128
129
return
player.GetInventory().CanSwapEntitiesEx(targetItem,item);
130
}
131
132
override
bool
UseMainItem
()
133
{
134
return
true
;
135
}
136
137
override
bool
MainItemAlwaysInHands
()
138
{
139
return
true
;
140
}
141
142
override
void
CreateAndSetupActionCallback
(
ActionData
action_data)
143
{
144
EntityAI
target =
EntityAI
.Cast(action_data.m_Target.GetObject());
145
if
(!target)
146
return
;
147
148
ActionBaseCB
callback;
149
150
if
(target.IsHeavyBehaviour())
151
{
152
Class
.
CastTo
(callback, action_data.m_Player.StartCommand_Action(
DayZPlayerConstants
.CMD_ACTIONFB_PICKUP_HEAVY,GetCallbackClassTypename(),
DayZPlayerConstants
.STANCEMASK_ERECT));
153
}
154
else
155
{
156
return
;
157
}
158
159
callback.
SetActionData
(action_data);
160
callback.
InitActionComponent
();
161
action_data.m_Callback = callback;
162
}
163
164
override
void
Start
(
ActionData
action_data)
165
{
166
super.Start(action_data);
167
168
bool
b1 = action_data.m_MainItem.ConfigGetString(
"physLayer"
) ==
"item_large"
;
169
action_data.m_MainItem.m_ThrowItemOnDrop = b1;
170
171
EntityAI
object
=
EntityAI
.Cast(action_data.m_Target.GetObject());
172
if
(!
object
|| !
object
.
IsHeavyBehaviour
())
173
{
174
action_data.m_Player.GetActionManager().InterruptNoSync();
175
}
176
else
177
m_Executable
=
true
;
178
}
179
180
override
void
OnExecute
(
ActionData
action_data)
181
{
182
if
(!
m_Executable
)
183
return
;
184
185
if
(
g_Game
.IsDedicatedServer())
186
{
187
ClearActionJuncture
(action_data);
188
return
;
189
}
190
191
PerformSwap
(action_data);
192
}
193
194
override
void
OnEnd
(
ActionData
action_data)
195
{
196
super.OnEnd(action_data);
197
198
if
(
m_Executable
)
199
{
200
m_Executable
=
false
;
201
return
;
202
}
203
204
if
(
g_Game
.IsDedicatedServer())
205
{
206
ClearActionJuncture
(action_data);
207
return
;
208
}
209
210
PerformSwap
(action_data);
211
}
212
213
void
PerformSwap
(
ActionData
action_data )
214
{
215
ClearInventoryReservationEx
(action_data);
216
217
EntityAI
ntarget =
EntityAI
.Cast(action_data.m_Target.GetObject());
218
if
(action_data.m_Player)
219
{
220
InventoryMode
invMode =
InventoryMode
.PREDICTIVE;
221
if
(!
g_Game
.IsMultiplayer())
222
invMode =
InventoryMode
.LOCAL;
223
else
if
(action_data.m_Player.NeedInventoryJunctureFromServer(ntarget, ntarget.GetHierarchyParent(), action_data.m_Player))
224
invMode =
InventoryMode
.JUNCTURE;
225
226
action_data.m_Player.TakeEntityToHandsImpl(invMode, ntarget);
227
}
228
}
229
}
InventoryMode
InventoryMode
NOTE: PREDICTIVE is not to be used at all in multiplayer.
Definition
inventory.c:22
ActionData
ActionBase ActionData
Definition
actionbase.c:30
m_Executable
ActionTakeItemToHands m_Executable
PerformSwap
void PerformSwap(ActionData action_data)
Definition
actiontakeitemtohands.c:213
ActionTarget
class ActionTargets ActionTarget
ActionBaseCB
Definition
animatedactionbase.c:2
ActionBaseCB::InitActionComponent
void InitActionComponent()
Definition
animatedactionbase.c:66
ActionBaseCB::SetActionData
void SetActionData(ActionData action_data)
Definition
animatedactionbase.c:109
ActionBase::m_Text
string m_Text
Definition
actionbase.c:64
ActionBase::m_ConditionItem
ref CCIBase m_ConditionItem
Definition
actionbase.c:70
ActionBase::m_ConditionTarget
ref CCTBase m_ConditionTarget
Definition
actionbase.c:71
ActionBase::ClearInventoryReservationEx
void ClearInventoryReservationEx(ActionData action_data)
Definition
actionbase.c:1040
ActionBase::ClearActionJuncture
void ClearActionJuncture(ActionData action_data)
Definition
actionbase.c:1104
ActionInteractBase::ActionInteractBase
void ActionInteractBase()
Definition
actioninteractbase.c:43
ActionInteractBase::MainItemAlwaysInHands
override bool MainItemAlwaysInHands()
Definition
actioninteractbase.c:76
ActionInteractBase::UseMainItem
override bool UseMainItem()
Definition
actioninteractbase.c:71
ActionTakeItemToHands
Definition
actiontakeitemtohands.c:2
ActionTakeItemToHands::CanBeUsedOnBack
override bool CanBeUsedOnBack()
Definition
actiontakeitemtohands.c:113
ActionTakeItemToHands::OnEndServer
override void OnEndServer(ActionData action_data)
Definition
actiontakeitemtohands.c:49
ActionTakeItemToHands::CanContinue
override bool CanContinue(ActionData action_data)
Definition
actiontakeitemtohands.c:44
ActionTakeItemToHands::ActionTakeItemToHands
void ActionTakeItemToHands()
Definition
actiontakeitemtohands.c:3
ActionTakeItemToHands::HasProgress
override bool HasProgress()
Definition
actiontakeitemtohands.c:26
ActionTakeItemToHands::CreateConditionComponents
override void CreateConditionComponents()
Definition
actiontakeitemtohands.c:10
ActionTakeItemToHands::OnExecute
override void OnExecute(ActionData action_data)
Definition
actiontakeitemtohands.c:58
ActionTakeItemToHands::ActionCondition
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Definition
actiontakeitemtohands.c:31
ActionTakeItemToHands::GetInputType
override GetInputType()
Definition
actiontakeitemtohands.c:21
ActionTakeItemToHands::CreateAndSetupActionCallback
override void CreateAndSetupActionCallback(ActionData action_data)
Definition
actiontakeitemtohands.c:83
ActionTakeItemToHands::HasProneException
override bool HasProneException()
Definition
actiontakeitemtohands.c:16
AnimatedActionBase::m_CommandUIDProne
int m_CommandUIDProne
Definition
animatedactionbase.c:144
AnimatedActionBase::GetCallbackClassTypename
GetCallbackClassTypename()
Definition
animatedactionbase.c:312
AnimatedActionBase::m_CommandUID
int m_CommandUID
Definition
animatedactionbase.c:143
BaseBuildingBase
Definition
fence.c:2
CCINone
Definition
ccinone.c:2
CCTObject
Definition
cctobject.c:2
Class
Super root of all classes in Enforce script.
Definition
enscript.c:11
ContinuousInteractActionInput
Definition
actioninput.c:523
EntityAI
Definition
inventoryitem.c:2
InventoryLocation
InventoryLocation.
Definition
inventorylocation.c:30
InventoryLocation::SetHands
proto native void SetHands(notnull EntityAI parent, EntityAI e)
ItemBase
Definition
inventoryitem.c:742
ItemBase::IsTakeable
override bool IsTakeable()
Definition
basebuildingbase.c:1008
ItemBase::CanDetachAttachment
override bool CanDetachAttachment(EntityAI parent)
Definition
gardenlime.c:42
PlayerBase
Definition
playerbaseclient.c:2
UAMaxDistances
Definition
actionconstants.c:110
UAMaxDistances::DEFAULT
const float DEFAULT
Definition
actionconstants.c:112
g_Game
DayZGame g_Game
Definition
dayzgame.c:3942
DayZPlayerConstants
DayZPlayerConstants
defined in C++
Definition
dayzplayer.c:602
Start
void Start()
Plays all elements this effects consists of.
Definition
effect.c:157
Class::CastTo
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
OnEnd
void OnEnd()
Definition
sound.c:226
IsHeavyBehaviour
override bool IsHeavyBehaviour()
Definition
itembase.c:9240
Games
Dayz
scripts
4_world
classes
useractionscomponent
actions
interact
actiontakeitemtohands.c
Generated by
1.17.0