Dayz  1.11.153731
Dayz Code Explorer by Zeroy
ActionTakeItemToHands.c
Go to the documentation of this file.
2 {
4  {
5  m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_PICKUP_HANDS;
6  m_CommandUIDProne = DayZPlayerConstants.CMD_ACTIONFB_PICKUP_HANDS;
8  }
9 
10  override void CreateConditionComponents()
11  {
14  }
15 
16  override bool HasProneException()
17  {
18  return true;
19  }
20 
21  override typename GetInputType()
22  {
24  }
25 
26  override bool HasProgress()
27  {
28  return false;
29  }
30 
31  override string GetText()
32  {
33  return "#take_to_hands";
34  }
35 
36  override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
37  {
38  ItemBase tgt_item = ItemBase.Cast( target.GetObject() );
39  if ( !tgt_item )
40  return false;
41  EntityAI tgt_parent = EntityAI.Cast(tgt_item.GetHierarchyParent());
42  if ( !tgt_item.IsTakeable() || tgt_item.IsBeingPlaced() || ( tgt_item.GetHierarchyParent() && !BaseBuildingBase.Cast(tgt_parent) ) || ((tgt_parent && !tgt_item.CanDetachAttachment(tgt_parent)) || (tgt_parent && !tgt_parent.CanReleaseAttachment(tgt_item))) )
43  return false;
44 
45  return player.GetInventory().CanAddEntityIntoHands(tgt_item);
46  }
47 
48  override bool CanContinue( ActionData action_data )
49  {
50  return true;
51  }
52 
53  override void OnExecute( ActionData action_data )
54  {
55  if ( GetGame().IsMultiplayer() && GetGame().IsServer() )
56  return;
57 
58  ItemBase ntarget = ItemBase.Cast(action_data.m_Target.GetObject());
59  ClearInventoryReservation(action_data);
60 
61  float stackable = ntarget.GetTargetQuantityMax(-1);
62 
63  if ( stackable == 0 || stackable >= ntarget.GetQuantity() )
64  {
65  action_data.m_Player.PredictiveTakeEntityToHands( ntarget );
66  }
67  else
68  {
70  il.SetHands(action_data.m_Player, ntarget);
71  ntarget.SplitIntoStackMaxToInventoryLocationClient( il );
72  }
73  }
74 
75  override void CreateAndSetupActionCallback( ActionData action_data )
76  {
77  //Print("starting - CreateAndSetupActionCallback");
78  EntityAI target = EntityAI.Cast(action_data.m_Target.GetObject());
79  ActionBaseCB callback;
80  if (!target)
81  return;
82 
83  if (target.IsHeavyBehaviour())
84  {
85  //Print("heavybehaviour");
86  Class.CastTo(callback, action_data.m_Player.StartCommand_Action(DayZPlayerConstants.CMD_ACTIONFB_PICKUP_HEAVY,GetCallbackClassTypename(),DayZPlayerConstants.STANCEMASK_ERECT));
87  }
88  else
89  {
90  //Print("else - SHOULD NOT BE HERE");
91  if( action_data.m_Player.IsPlayerInStance(DayZPlayerConstants.STANCEMASK_CROUCH | DayZPlayerConstants.STANCEMASK_ERECT) )
92  {
93  Class.CastTo(callback, action_data.m_Player.AddCommandModifier_Action(DayZPlayerConstants.CMD_ACTIONMOD_PICKUP_HANDS,GetCallbackClassTypename()));
94  }
95  else
96  {
97  Class.CastTo(callback, action_data.m_Player.StartCommand_Action(DayZPlayerConstants.CMD_ACTIONFB_PICKUP_HANDS,GetCallbackClassTypename(),DayZPlayerConstants.STANCEMASK_PRONE));
98  }
99  }
100  //Print(callback);
101  callback.SetActionData(action_data);
102  callback.InitActionComponent();
103  action_data.m_Callback = callback;
104  }
105 
106 
107  override bool CanBeUsedOnBack()
108  {
109  return true;
110  }
111 };
112 
114 {
116 
117  override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
118  {
119  ItemBase tgt_item = ItemBase.Cast( target.GetObject() );
120  if ( !tgt_item || !tgt_item.IsTakeable() || tgt_item.IsBeingPlaced() )
121  return false;
122 
123  return player.GetInventory().CanSwapEntitiesEx(tgt_item,item);
124  }
125 
126  override bool UseMainItem()
127  {
128  return true;
129  }
130 
131  override bool MainItemAlwaysInHands()
132  {
133  return true;
134  }
135 
136  override void CreateAndSetupActionCallback( ActionData action_data )
137  {
138  EntityAI target = EntityAI.Cast(action_data.m_Target.GetObject());
139  ActionBaseCB callback;
140  if (!target)
141  return;
142 
143  if (target.IsHeavyBehaviour())
144  {
145  Class.CastTo(callback, action_data.m_Player.StartCommand_Action(DayZPlayerConstants.CMD_ACTIONFB_PICKUP_HEAVY,GetCallbackClassTypename(),DayZPlayerConstants.STANCEMASK_ERECT));
146  }
147  else
148  {
149  return;
150  }
151  callback.SetActionData(action_data);
152  callback.InitActionComponent();
153  action_data.m_Callback = callback;
154  }
155 
156  override void Start( ActionData action_data )
157  {
158  super.Start( action_data );
159 
160  //Print("action_data.m_Target.GetObject() + " + action_data.m_Target.GetObject());
161  //Print("action_data.m_MainItem + " + action_data.m_MainItem);
162 
163  bool b1 = action_data.m_MainItem.ConfigGetString("physLayer") == "item_large";
164  action_data.m_MainItem.m_ThrowItemOnDrop = b1; //hack, should be redundant anyway
165 
166  EntityAI object = EntityAI.Cast(action_data.m_Target.GetObject());
167  if (!object || !object.IsHeavyBehaviour())
168  {
169  action_data.m_Player.GetActionManager().Interrupt();
170  }
171  else
172  m_Executable = true;
173  }
174 
175  override void OnExecuteServer( ActionData action_data )
176  {
177  if (!m_Executable)
178  return;
179 
180  if (GetGame().IsMultiplayer())
181  return;
182 
183  PerformSwap(action_data);
184  }
185 
186  override void OnExecuteClient( ActionData action_data )
187  {
188  if (!m_Executable)
189  return;
190 
191  PerformSwap(action_data);
192  }
193 
194  override void OnEndServer( ActionData action_data )
195  {
196  if (m_Executable)
197  {
198  m_Executable = false;
199  return;
200  }
201 
202  if (GetGame().IsMultiplayer())
203  return;
204 
205  PerformSwap(action_data);
206  }
207 
208  override void OnEndClient( ActionData action_data )
209  {
210  if (m_Executable)
211  {
212  m_Executable = false;
213  return;
214  }
215 
216  PerformSwap(action_data);
217  }
218 
219  void PerformSwap( ActionData action_data )
220  {
221  EntityAI ntarget = EntityAI.Cast(action_data.m_Target.GetObject());
222  if (action_data.m_Player)
223  {
224  InventoryMode invMode = InventoryMode.PREDICTIVE;
225  if (action_data.m_Player.NeedInventoryJunctureFromServer(ntarget, ntarget.GetHierarchyParent(), action_data.m_Player))
226  invMode = InventoryMode.JUNCTURE;
227 
228  action_data.m_Player.TakeEntityToHandsImpl(invMode, ntarget);
229  }
230  }
231 }
ItemBase
Definition: InventoryItem.c:445
ActionSwapItemToHands::OnExecuteServer
override void OnExecuteServer(ActionData action_data)
Definition: ActionTakeItemToHands.c:175
GetGame
proto native CGame GetGame()
ActionTakeItemToHands
Definition: ActionTakeItemToHands.c:1
m_ConditionTarget
ref CCTBase m_ConditionTarget
Definition: ActionBase.c:53
ItemBase::CanDetachAttachment
override bool CanDetachAttachment(EntityAI parent)
Definition: GardenLime.c:42
AnimatedActionBase::m_CommandUID
protected int m_CommandUID
Definition: AnimatedActionBase.c:125
CursorIcons
Definition: gameplay.c:500
ContinuousInteractActionInput
void ContinuousInteractActionInput(PlayerBase player)
Definition: ActionInput.c:274
ActionSwapItemToHands::m_Executable
bool m_Executable
Definition: ActionTakeItemToHands.c:115
ActionSwapItemToHands::Start
override void Start(ActionData action_data)
Definition: ActionTakeItemToHands.c:156
ActionData::m_Player
PlayerBase m_Player
Definition: ActionBase.c:31
CCINone
Definition: CCINone.c:1
CCTObject
Definition: CCTObject.c:1
ActionTakeItemToHands::CreateConditionComponents
override void CreateConditionComponents()
Definition: ActionTakeItemToHands.c:10
InventoryMode
InventoryMode
Definition: Inventory.c:19
InventoryLocation
InventoryLocation.
Definition: InventoryLocation.c:27
AnimatedActionBase::m_CommandUIDProne
protected int m_CommandUIDProne
Definition: AnimatedActionBase.c:126
ActionTakeItemToHands::OnExecute
override void OnExecute(ActionData action_data)
Definition: ActionTakeItemToHands.c:53
ActionTakeItemToHands::CanContinue
override bool CanContinue(ActionData action_data)
Definition: ActionTakeItemToHands.c:48
ActionTakeItemToHands::GetInputType
override GetInputType()
Definition: ActionTakeItemToHands.c:21
ActionTakeItemToHands::HasProgress
override bool HasProgress()
Definition: ActionTakeItemToHands.c:26
UAMaxDistances
Definition: ActionConstants.c:95
ActionSwapItemToHands
Definition: ActionTakeItemToHands.c:113
ActionData::m_MainItem
ItemBase m_MainItem
Definition: ActionBase.c:26
UAMaxDistances::DEFAULT
const float DEFAULT
Definition: ActionConstants.c:98
ActionSwapItemToHands::OnEndServer
override void OnEndServer(ActionData action_data)
Definition: ActionTakeItemToHands.c:194
ActionInteractBase
Definition: ActionInteractBase.c:54
PlayerBase
Definition: PlayerBaseClient.c:1
ActionSwapItemToHands::OnEndClient
override void OnEndClient(ActionData action_data)
Definition: ActionTakeItemToHands.c:208
ActionTakeItemToHands::HasProneException
override bool HasProneException()
Definition: ActionTakeItemToHands.c:16
ActionInteractBase::m_HUDCursorIcon
string m_HUDCursorIcon
Definition: ActionInteractBase.c:56
ActionData
Definition: ActionBase.c:18
ActionSwapItemToHands::MainItemAlwaysInHands
override bool MainItemAlwaysInHands()
Definition: ActionTakeItemToHands.c:131
DayZPlayerConstants
DayZPlayerConstants
defined in C++
Definition: dayzplayer.c:568
BaseBuildingBase
Definition: Fence.c:1
ActionTakeItemToHands::ActionTakeItemToHands
void ActionTakeItemToHands()
Definition: ActionTakeItemToHands.c:3
ClearInventoryReservation
void ClearInventoryReservation(ActionData action_data)
Definition: ActionBase.c:738
ActionSwapItemToHands::UseMainItem
override bool UseMainItem()
Definition: ActionTakeItemToHands.c:126
InventoryLocation::SetHands
proto native void SetHands(notnull EntityAI parent, EntityAI e)
ActionTakeItemToHands::GetText
override string GetText()
Definition: ActionTakeItemToHands.c:31
Class::CastTo
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
ActionSwapItemToHands::CreateAndSetupActionCallback
override void CreateAndSetupActionCallback(ActionData action_data)
Definition: ActionTakeItemToHands.c:136
ActionData::m_Target
ref ActionTarget m_Target
Definition: ActionBase.c:30
ActionBaseCB::SetActionData
void SetActionData(ActionData action_data)
Definition: AnimatedActionBase.c:91
ActionTarget
class ActionTargets ActionTarget
ActionTakeItemToHands::CanBeUsedOnBack
override bool CanBeUsedOnBack()
Definition: ActionTakeItemToHands.c:107
ActionSwapItemToHands::OnExecuteClient
override void OnExecuteClient(ActionData action_data)
Definition: ActionTakeItemToHands.c:186
ActionSwapItemToHands::PerformSwap
void PerformSwap(ActionData action_data)
Definition: ActionTakeItemToHands.c:219
ActionBaseCB::InitActionComponent
void InitActionComponent()
Definition: AnimatedActionBase.c:58
AnimatedActionBase::GetCallbackClassTypename
protected GetCallbackClassTypename()
Definition: AnimatedActionBase.c:238
ActionSwapItemToHands::ActionCondition
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Definition: ActionTakeItemToHands.c:117
m_ConditionItem
ref CCIBase m_ConditionItem
Definition: ActionBase.c:52
CursorIcons::LootCorpse
const string LootCorpse
Definition: gameplay.c:513
ActionTakeItemToHands::ActionCondition
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Definition: ActionTakeItemToHands.c:36
ActionBaseCB
Definition: AnimatedActionBase.c:1
ActionTakeItemToHands::CreateAndSetupActionCallback
override void CreateAndSetupActionCallback(ActionData action_data)
Definition: ActionTakeItemToHands.c:75
Class
Super root of all classes in Enforce script.
Definition: EnScript.c:7
EntityAI
Base native class of all vehicles in game.
Definition: Building.c:4
ItemBase::IsTakeable
override bool IsTakeable()
Definition: TrapSpawnBase.c:99
ActionData::m_Callback
ActionBaseCB m_Callback
Definition: ActionBase.c:27
IsHeavyBehaviour
bool IsHeavyBehaviour()
returns item behaviour of item (more in ItemBase)
Definition: EntityAI.c:2085