DayZ Scripts
v1.21.156300 ยท Jun 20, 2023
 
Loading...
Searching...
No Matches
ActionAttach.c
Go to the documentation of this file.
2{
4}
5
6
8{
9 void ActionAttach()
10 {
11 m_Text = "#attach";
12 }
13
15 {
18 m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_ATTACHITEM;
19 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
20 }
21
23 {
24 AttachActionData action_data = new AttachActionData();
25 return action_data;
26 }
27
28 override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = null)
29 {
31 if (!GetGame().IsDedicatedServer())
32 {
33 EntityAI targetEntity;
34 if (target.IsProxy())
35 {
36 targetEntity = EntityAI.Cast(target.GetParent());
37 }
38 else
39 {
40 targetEntity = EntityAI.Cast(target.GetObject());
41 }
42
43 if (!targetEntity.GetInventory().FindFreeLocationFor(item, FindInventoryLocationType.ATTACHMENT, il))
44 return false;
45 }
46
47 if (super.SetupAction(player, target, item, action_data, extra_data))
48 {
49 #ifndef SERVER
50 AttachActionData action_data_a = AttachActionData.Cast(action_data);
51 action_data_a.m_AttSlot = il.GetSlot();
52 #endif
53
54 return true;
55 }
56
57 return false;
58 }
59
60
61 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
62 {
63 EntityAI targetEntity = EntityAI.Cast(target.GetObject());
64 if (targetEntity && item)
65 {
66 return targetEntity.GetInventory() && targetEntity.GetInventory().CanAddAttachment(item) && !targetEntity.CanUseConstruction());
67 }
68
69 return false;
70 }
71
72 override void OnExecuteServer(ActionData action_data)
73 {
74 if (GetGame().IsMultiplayer())
75 return;
76
77 ClearInventoryReservationEx(action_data);
78 AttachActionData action_data_a = AttachActionData.Cast(action_data);
79 AttachItem(action_data_a);
80 }
81
82 override void OnExecuteClient(ActionData action_data)
83 {
84 ClearInventoryReservationEx(action_data);
85
86 AttachActionData action_data_a = AttachActionData.Cast(action_data);
87 AttachItem(action_data_a);
88 }
89
90 protected void AttachItem(AttachActionData action_data)
91 {
92 EntityAI entity;
93 if (action_data.m_Target.IsProxy())
94 {
95 entity = EntityAI.Cast(action_data.m_Target.GetParent());
96 }
97 else
98 {
99 entity = EntityAI.Cast(action_data.m_Target.GetObject());
100 }
101
102 if (entity && action_data.m_MainItem)
103 {
104 action_data.m_Player.PredictiveTakeEntityToTargetAttachmentEx(entity, action_data.m_MainItem, action_data.m_AttSlot);
105 }
106 }
107
108 override bool CanBeSetFromInventory()
109 {
110 return false;
111 }
112}
AttachActionData ActionData ActionAttach()
Definition ActionAttach.c:9
protected void AttachItem(ActionData action_data)
ActionData CreateActionData()
Definition ActionBase.c:213
bool CanBeSetFromInventory()
Definition ActionBase.c:301
ref CCIBase m_ConditionItem
Definition ActionBase.c:55
ref CCTBase m_ConditionTarget
Definition ActionBase.c:56
bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data=NULL)
Definition ActionBase.c:144
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
FindInventoryLocationType
flags for searching locations in inventory
ItemBase m_MainItem
Definition ActionBase.c:28
PlayerBase m_Player
Definition ActionBase.c:33
ref ActionTarget m_Target
Definition ActionBase.c:32
override void CreateConditionComponents()
Definition ActionPin.c:8
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Definition ActionPin.c:19
protected void OnExecuteServer(ActionData action_data)
protected void OnExecuteClient(ActionData action_data)
InventoryLocation.
proto native int GetSlot()
returns slot id if current type is Attachment
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Definition param.c:12
const float DEFAULT
DayZPlayerConstants
defined in C++
Definition dayzplayer.c:602
proto native CGame GetGame()