DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
ActionPlugTargetIntoThis.c
Go to the documentation of this file.
2{
4
6 {
7 m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_INTERACTONCE;
8 m_Retoggle = false;
9 m_Text = "#connect_together";
10 }
11
13 {
16 }
17
18 override bool Can(PlayerBase player, ActionTarget target, ItemBase item)
19 {
20 if (super.Can(player, target, item))
21 {
22 if (player.IsPlacingLocal())
23 {
24 m_Retoggle = true;
25
26 player.GetHologramLocal().SetIsHidden(true);
27 player.GetHologramLocal().GetProjectionEntity().HideAllSelections();
28 }
29 }
30
31 if (!super.Can(player, target, item))
32 {
33 if (m_Retoggle)
34 {
35 m_Retoggle = false;
36
37 player.GetHologramLocal().SetIsHidden(false);
38 player.GetHologramLocal().GetProjectionEntity().ShowAllSelections();
39 }
40 }
41
42 return super.Can(player, target, item);
43 }
44
45 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
46 {
47 ItemBase targetIB = ItemBase.Cast(target.GetObject());
48
49 //Prevent plugging to items in inventory
50 if (targetIB && targetIB.GetHierarchyRoot() == targetIB && item && targetIB.HasEnergyManager() && item.HasEnergyManager())
51 {
52 if (!targetIB.GetCompEM().IsPlugged() && item.GetCompEM().CanReceivePlugFrom(targetIB))
53 {
54 //hotfix, re-work entire action!
55 return targetIB.IsElectricAppliance();
56 }
57
58 // Special case for vehicle batteries
59 if (item.IsInherited(VehicleBattery))
60 {
61 MetalWire metalWire = MetalWire.Cast( item.GetCompEM().GetPluggedDevice());
62
63 if (metalWire && metalWire.GetCompEM().CanReceivePlugFrom(targetIB))
64 {
65 return true; // We can power the action_data.m_Target from vehicle battery because it has metal wire attached.
66 }
67 }
68 }
69
70 return false;
71 }
72
73 override bool IsDeploymentAction()
74 {
75 return true;
76 }
77
78 override void OnExecuteServer(ActionData action_data)
79 {
80 Process(action_data);
81 }
82
83 override void OnExecuteClient(ActionData action_data)
84 {
85 m_Retoggle = false;
86 }
87
88 void Process(ActionData action_data)
89 {
90 ItemBase targetIB = ItemBase.Cast(action_data.m_Target.GetObject());
91
92 if (action_data.m_MainItem.IsInherited(VehicleBattery))
93 {
94 // Car/truck batteries can have a metal wire attached through which they can power common electric appliances
95
96 MetalWire metalWire = MetalWire.Cast(action_data.m_MainItem.GetCompEM().GetPluggedDevice());
97
98 if (metalWire)
99 {
100 targetIB.GetCompEM().PlugThisInto(metalWire);
101 }
102 }
103 else
104 {
105 // Everything else in general
106 targetIB.GetCompEM().PlugThisInto(action_data.m_MainItem);
107 }
108
109 targetIB.GetInventory().TakeEntityAsAttachment(InventoryMode.LOCAL, action_data.m_MainItem);
110 action_data.m_Player.ServerDropEntity(action_data.m_MainItem);
111 }
112}
InventoryMode
Definition Inventory.c:20
ref CCIBase m_ConditionItem
Definition ActionBase.c:55
ref CCTBase m_ConditionTarget
Definition ActionBase.c:56
protected string m_Text
Definition ActionBase.c:49
class ActionTargets ActionTarget
ItemBase m_MainItem
Definition ActionBase.c:28
PlayerBase m_Player
Definition ActionBase.c:33
ref ActionTarget m_Target
Definition ActionBase.c:32
override void OnExecuteServer(ActionData action_data)
override void OnExecuteClient(ActionData action_data)
override bool Can(PlayerBase player, ActionTarget target, ItemBase item)
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
void Process(ActionData action_data)
override bool IsElectricAppliance()
const float DEFAULT
DayZPlayerConstants
defined in C++
Definition dayzplayer.c:602