DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
ActionRepositionPluggedItem.c
Go to the documentation of this file.
2{
3 protected ItemBase m_SourceForReplug = NULL;
4
5// Through this action players can reposition already placed electric devices without unplugging them from the power source.
7 {
9 m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_PICKUP_HANDS;
10 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
11 /*m_CallbackClass = ActionBuildPartCB;
12 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_ASSEMBLE;
13 m_FullBody = true;
14 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT;*/
15 m_Text = "#reposition";
16 }
17
18 override typename GetInputType()
19 {
21 }
22
23 override bool HasProgress()
24 {
25 return false;
26 }
27
28 /*override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
29 {
30 ItemBase target_IB = ItemBase.Cast( target.GetObject() );
31
32 if ( !player.GetItemInHands() || ItemIsBeingRepositioned() )
33 {
34 if (target_IB.HasEnergyManager())
35 {
36 if ( target_IB.GetCompEM().IsPlugged() || ItemIsBeingRepositioned() )
37 {
38 return true;
39 }
40 }
41 }
42
43 return false;
44 }*/
45
46 /*override void OnStartServer( ActionData action_data )
47 {
48 Object targetObject = action_data.m_Target.GetObject();
49 ItemBase target_IB = ItemBase.Cast( targetObject );
50 EntityAI replug_device = target_IB.GetCompEM().GetEnergySource();
51 m_SourceForReplug = ItemBase.Cast(replug_device);
52
53 action_data.m_Player.ServerTakeEntityToHands( target_IB );
54 }
55
56 override void OnStartClient( ActionData action_data )
57 {
58 Object targetObject = action_data.m_Target.GetObject();
59 ItemBase target_IB = ItemBase.Cast( targetObject );
60 EntityAI replug_device = target_IB.GetCompEM().GetEnergySource();
61 m_SourceForReplug = ItemBase.Cast(replug_device);
62 }
63
64 override void OnExecuteServer( ActionData action_data )
65 {
66 Object targetObject = action_data.m_Target.GetObject();
67 ItemBase target_IB = ItemBase.Cast( targetObject );
68
69 if ( m_SourceForReplug.HasEnergyManager() )
70 {
71 ItemBase attached_device = GetAttachedDevice(m_SourceForReplug);
72
73 if (attached_device)
74 {
75 m_SourceForReplug = attached_device;
76 }
77
78 target_IB.GetCompEM().PlugThisInto(m_SourceForReplug);
79
80 if ( !action_data.m_Player.IsPlacingServer() )
81 {
82 target_IB.GetInventory().TakeEntityAsAttachment( InventoryMode.LOCAL, m_SourceForReplug );
83 }
84 }
85
86 m_SourceForReplug = NULL;
87 }
88
89 override void OnExecuteClient( ActionData action_data )
90 {
91 if ( !action_data.m_Player.IsPlacingLocal() )
92 {
93 Object targetObject = action_data.m_Target.GetObject();
94 ItemBase target_IB = ItemBase.Cast( targetObject );
95 action_data.m_Player.TogglePlacingLocal(target_IB);
96 }
97
98 m_SourceForReplug = NULL;
99 }
100
101 ItemBase GetAttachedDevice(ItemBase parent)
102 {
103 string parent_type = parent.GetType();
104
105 if ( parent.IsInherited(CarBattery) || parent.IsInherited(TruckBattery) )
106 {
107 ItemBase parent_attachment = ItemBase.Cast( parent.GetAttachmentByType(MetalWire) );
108
109 if (!parent_attachment)
110 {
111 parent_attachment = ItemBase.Cast( parent.GetAttachmentByType(BarbedWire) );
112 }
113 return parent_attachment;
114 }
115
116 return NULL;
117 }
118
119 ItemBase ItemIsBeingRepositioned()
120 {
121 return m_SourceForReplug;
122 }*/
123
124 override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
125 {
126 ItemBase tgt_item = ItemBase.Cast( target.GetObject() );
127 EntityAI tgt_parent = EntityAI.Cast(tgt_item.GetHierarchyParent());
128 if ( !tgt_item || !tgt_item.IsTakeable() || tgt_item.IsBeingPlaced() || (tgt_item.GetCompEM() && !tgt_item.GetCompEM().IsPlugged()) || ( tgt_item.GetHierarchyParent() && !BaseBuildingBase.Cast(tgt_item.GetHierarchyParent()) ) || ((tgt_parent && !tgt_item.CanDetachAttachment(tgt_parent)) || (tgt_parent && !tgt_parent.CanReleaseAttachment(tgt_item))) )
129 return false;
130
131 if ( tgt_item.HasEnergyManager() && tgt_item.GetCompEM().IsPlugged() )
132 {
133 return player.GetInventory().CanAddEntityIntoHands(tgt_item);
134 }
135
136 return false;
137 }
138
139 override bool CanContinue( ActionData action_data )
140 {
141 return true;
142 }
143
144 override void Start( ActionData action_data ) //Setup on start of action
145 {
146 super.Start( action_data );
147 ItemBase ntarget = ItemBase.Cast(action_data.m_Target.GetObject());
148 action_data.m_Player.TogglePlacingLocal(ntarget);
149 }
150
151 override void OnExecuteServer( ActionData action_data )
152 {
153 if (GetGame().IsMultiplayer())
154 return;
155
157 ItemBase ntarget = ItemBase.Cast(action_data.m_Target.GetObject());
158 ClearInventoryReservationEx(action_data);
159
160 action_data.m_Player.PredictiveTakeEntityToHands( ntarget );
161 }
162
163 override void OnExecuteClient( ActionData action_data )
164 {
166 ItemBase ntarget = ItemBase.Cast(action_data.m_Target.GetObject());
167 ClearInventoryReservationEx(action_data);
168
169 action_data.m_Player.PredictiveTakeEntityToHands( ntarget );
170 }
171
172 override void CreateAndSetupActionCallback( ActionData action_data )
173 {
174 //Print("starting - CreateAndSetupActionCallback");
175 EntityAI target = EntityAI.Cast(action_data.m_Target.GetObject());
176 ActionBaseCB callback;
177 if (!target)
178 return;
179
180 if (target.IsHeavyBehaviour())
181 {
182 //Print("heavybehaviour");
183 Class.CastTo(callback, action_data.m_Player.StartCommand_Action(DayZPlayerConstants.CMD_ACTIONFB_PICKUP_HEAVY,GetCallbackClassTypename(),DayZPlayerConstants.STANCEMASK_ERECT));
184 }
185 else
186 {
187 Class.CastTo(callback, action_data.m_Player.AddCommandModifier_Action(DayZPlayerConstants.CMD_ACTIONMOD_PICKUP_HANDS,GetCallbackClassTypename()));
188 }
189 callback.SetActionData(action_data);
190 callback.InitActionComponent();
191 action_data.m_Callback = callback;
192 }
193
194
195 override bool CanBeUsedOnBack()
196 {
197 return false;
198 }
199};
void ClearInventoryReservationEx(ActionData action_data)
Definition ActionBase.c:861
protected string m_Text
Definition ActionBase.c:49
protected int m_StanceMask
Definition ActionBase.c:53
class ActionTargets ActionTarget
void SetActionData(ActionData action_data)
PlayerBase m_Player
Definition ActionBase.c:33
ActionBaseCB m_Callback
Definition ActionBase.c:29
ref ActionTarget m_Target
Definition ActionBase.c:32
override void OnExecuteServer(ActionData action_data)
override void Start(ActionData action_data)
override bool CanContinue(ActionData action_data)
override void OnExecuteClient(ActionData action_data)
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
override void CreateAndSetupActionCallback(ActionData action_data)
protected GetCallbackClassTypename()
Super root of all classes in Enforce script.
Definition EnScript.c:11
InventoryLocation.
override bool IsTakeable()
override bool CanDetachAttachment(EntityAI parent)
Definition GardenLime.c:42
DayZPlayerConstants
defined in C++
Definition dayzplayer.c:602
proto native CGame GetGame()
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.