Dayz Explorer  1.24.157551 (v105080)
Dayz Code Explorer by Zeroy
actionpackgift.c
Go to the documentation of this file.
2 {
3  override void CreateActionComponent()
4  {
5  m_ActionData.m_ActionComponent = new CAContinuousTime(UATimeSpent.UNPACK);
6  }
7 };
8 
10 {
11  void ActionPackGift()
12  {
13  m_CallbackClass = ActionPackGiftCB;
14  m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_OPENITEM;
15  //m_FullBody = true;
16  m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
18  m_Text = "#STR_Wrap";
19  }
20 
21  override void CreateConditionComponents()
22  {
25  }
26 
27  override bool HasTarget()
28  {
29  return true;
30  }
31 
32  override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
33  {
34  ItemBase item_to_pack = ItemBase.Cast(target.GetObject());
35  if (!item_to_pack)
36  return false;
37 
38  if ( !item_to_pack.IsTakeable() ) return false;
39  if ( item_to_pack.IsBeingPlaced() ) return false;
40  if ( BaseBuildingBase.Cast(item_to_pack) ) return false;
41  if ( !item_to_pack.CanPutInCargo(null) ) return false;
42 
43  EntityAI tgt_parent = EntityAI.Cast( target.GetParent() );
44 
45  if ( tgt_parent )
46  {
47  if ( item_to_pack.GetInventory().IsAttachment() )
48  {
49  if ( !item_to_pack.CanDetachAttachment(tgt_parent) || !tgt_parent.CanReleaseAttachment(item_to_pack) )
50  return false;
51  }
52  else
53  {
54  if ( !item_to_pack.CanRemoveFromCargo(tgt_parent) || !tgt_parent.CanReleaseCargo(item_to_pack) )
55  return false;
56  }
57  }
58 
59  if ( item_to_pack.GetInventory().GetCargo() && item_to_pack.GetInventory().GetCargo().GetItemCount() > 0)
60  return false;
61 
62  if ( !item_to_pack.IsWeapon() && item_to_pack.GetInventory().AttachmentCount() > 0)
63  return false;
64 
65 
66  int x,y;
67  GetGame().GetInventoryItemSize( item_to_pack, x, y );
68 
69  if( x > 5 || y > 5 )
70  return false;
71 
72  return true;
73  }
74 
75  override void OnFinishProgressClient( ActionData action_data )
76  {
77  PlayerBase player = action_data.m_Player;
78  ItemBase item_to_pack = ItemBase.Cast(action_data.m_Target.GetObject());
79 
80  player.RemoveQuickBarEntityShortcut(item_to_pack);
81 
82  }
83 
84  override void OnFinishProgressServer( ActionData action_data )
85  {
86  ItemBase item_to_pack = ItemBase.Cast(action_data.m_Target.GetObject());
87  ItemBase item = action_data.m_MainItem;
88  PlayerBase player = action_data.m_Player;
89  string typeName;
90 
91  if (item_to_pack)
92  {
93  int x,y;
94  GetGame().GetInventoryItemSize( item_to_pack, x, y );
95  int rnd = Math.RandomIntInclusive(1, 4);
96 
98 
99  if( x <= 2 && y <= 2 )
100  {
101  typeName = "GiftBox_Small_" + rnd;
102  }
103  else if( x <= 3 && y <= 3 )
104  {
105  typeName = "GiftBox_Medium_" + rnd;
106  }
107  else if( x <= 5 && y <= 5 )
108  {
109  typeName = "GiftBox_Large_" + rnd;
110  }
111  else return;
112 
113 
114  if(!GetGame().IsDedicatedServer())
115  player.RemoveQuickBarEntityShortcut(item_to_pack);
116 
117  lambda = new ReplaceWithNewReciveCargoLambda( item, typeName, player,item_to_pack);
118  player.ServerReplaceItemWithNew(lambda);
119 
120  }
121 
122 
123  }
124 };
125 
127 {
128  protected EntityAI m_ItemToCargo;
129  void ReplaceWithNewReciveCargoLambda(EntityAI old_item, string new_item_type, PlayerBase player, EntityAI item_to_cargo)
130  {
131  m_ItemToCargo = item_to_cargo;
132  }
133 
134  override void OnSuccess(EntityAI new_item)
135  {
136  super.OnSuccess(new_item);
137 
139  m_ItemToCargo.GetInventory().GetCurrentInventoryLocation(src);
141 
142  dst.SetCargo(new_item, m_ItemToCargo, 0,0,0,false);
143 
144  if ( dst.IsValid() )
145  {
146  if(GetGame().IsDedicatedServer())
147  m_Player.ServerTakeToDst(src,dst);
148  else
149  m_Player.LocalTakeToDst(src,dst);
150 
151  }
152  }
153 };
ItemBase
Definition: inventoryitem.c:730
GetGame
proto native CGame GetGame()
CAContinuousTime
Definition: cacontinuoustime.c:1
UASoftSkillsWeight
Definition: actionconstants.c:118
y
Icon y
InventoryLocation
InventoryLocation.
Definition: inventorylocation.c:27
ActionPackGift
Definition: actionpackgift.c:9
PlayerBase
Definition: playerbaseclient.c:1
ActionTarget
class ActionTargets ActionTarget
ActionData
Definition: actionbase.c:20
DayZPlayerConstants
DayZPlayerConstants
defined in C++
Definition: dayzplayer.c:601
BaseBuildingBase
Definition: fence.c:1
CCTNonRuined
Definition: cctnonruined.c:1
m_Player
DayZPlayer m_Player
Definition: hand_events.c:42
UATimeSpent
Definition: actionconstants.c:26
ActionContinuousBaseCB
Definition: actioncontinuousbase.c:1
x
Icon x
m_Text
protected string m_Text
Definition: actionbase.c:49
m_ConditionItem
ref CCIBase m_ConditionItem
Definition: actionbase.c:55
ActionContinuousBase
Definition: actioncontinuousbase.c:132
CCINonRuined
Definition: ccinonruined.c:1
Math
Definition: enmath.c:6
m_ConditionTarget
ref CCTBase m_ConditionTarget
Definition: actionbase.c:56
ActionPackGiftCB
Definition: actionpackgift.c:1
m_SpecialtyWeight
protected float m_SpecialtyWeight
Definition: actionbase.c:68
m_StanceMask
protected int m_StanceMask
Definition: actionbase.c:53
TurnItemIntoItemLambda
Definition: miscgameplayfunctions.c:91
EntityAI
Definition: building.c:5
ReplaceWithNewReciveCargoLambda
Definition: actionpackgift.c:126