DayZ 1.28
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionTakeArrowToHands.c
См. документацию.
2{
4 {
5 m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_PICKUP_HANDS;
6 m_CommandUIDProne = DayZPlayerConstants.CMD_ACTIONFB_PICKUP_HANDS;
7 m_Text = "#take_to_hands";
8 }
9
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 bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
32 {
33 EntityAI targetEntity = EntityAI.Cast(target.GetObject());
34 if (!targetEntity || (targetEntity && targetEntity.IsManagingArrows() && !targetEntity.IsDamageDestroyed()))
35 return false;
36
37 ArrowManagerBase arrowManager = targetEntity.GetArrowManager();
38 if (arrowManager)
39 {
40 ItemBase arrow = ItemBase.Cast(arrowManager.GetFirstArrow());
41 if (arrow && !arrow.IsSetForDeletion())
42 {
43 if (player.GetInventory().CanAddEntityIntoHands(arrow))
44 return true;
45 }
46 }
47
48 return false;
49 }
50
52 {
53 EntityAI targetEntity = EntityAI.Cast(target.GetObject());
54 if (!targetEntity || (targetEntity && targetEntity.IsManagingArrows() && !targetEntity.IsDamageDestroyed()))
55 return null;
56
57 ArrowManagerBase arrowManager = targetEntity.GetArrowManager();
58 if (arrowManager)
59 {
60 return arrowManager.GetFirstArrow();
61 }
62
63 return null;
64 }
65
66 override bool CanContinue(ActionData action_data)
67 {
68 return true;
69 }
70
71 override bool InventoryReservation(ActionData action_data)
72 {
73 bool success = true;
74
76
77 EntityAI targetEntity;
78 if (EntityAI.CastTo(targetEntity, action_data.m_Target.GetObject()))
79 {
80 ArrowManagerBase arrowManager = targetEntity.GetArrowManager();
81 if (arrowManager)
82 {
83 ItemBase targetArrow = ItemBase.Cast(arrowManager.GetFirstArrow());
84 if (targetArrow)
85 {
86 il.SetHands(action_data.m_Player,targetArrow);
87 if (action_data.m_Player.GetInventory().HasInventoryReservation(targetArrow, il))
88 {
89 success = false;
90 }
91 else
92 {
93 action_data.m_Player.GetInventory().AddInventoryReservationEx(targetArrow, il, GameInventory.c_InventoryReservationTimeoutMS);
94 }
95 }
96 }
97 }
98
99 if (success)
100 {
101 if (il)
102 action_data.m_ReservedInventoryLocations.Insert(il);
103 }
104
105 return success;
106 }
107
108
109 override void OnExecute(ActionData action_data)
110 {
111 if (GetGame().IsDedicatedServer())
112 {
113 ClearActionJuncture(action_data);
114 return;
115 }
116
117 InventoryLocation il = action_data.m_ReservedInventoryLocations.Get(0);
118
119 ItemBase arrow = ItemBase.Cast(il.GetItem());
120 ClearInventoryReservationEx(action_data);
121
122 float stackable = arrow.GetTargetQuantityMax(-1);
123
124 if (stackable == 0 || stackable >= arrow.GetQuantity())
125 {
126 action_data.m_Player.PredictiveTakeEntityToHands(arrow);
127 }
128 else
129 {
130 arrow.SplitIntoStackMaxToInventoryLocationClient(il);
131 }
132 }
133
134 override void CreateAndSetupActionCallback(ActionData action_data)
135 {
136 EntityAI target = EntityAI.Cast(action_data.m_Target.GetObject());
137 if (!target)
138 return;
139
140 ActionBaseCB callback;
141
142 if (target.IsHeavyBehaviour())
143 {
144 Class.CastTo(callback, action_data.m_Player.StartCommand_Action(DayZPlayerConstants.CMD_ACTIONFB_PICKUP_HEAVY,GetCallbackClassTypename(), DayZPlayerConstants.STANCEMASK_ERECT));
145 }
146 else
147 {
148 if (action_data.m_Player.IsPlayerInStance(DayZPlayerConstants.STANCEMASK_CROUCH | DayZPlayerConstants.STANCEMASK_ERECT))
149 {
150 Class.CastTo(callback, action_data.m_Player.AddCommandModifier_Action(m_CommandUID,GetCallbackClassTypename()));
151 }
152 else
153 {
154 Class.CastTo(callback, action_data.m_Player.StartCommand_Action(m_CommandUIDProne,GetCallbackClassTypename(),DayZPlayerConstants.STANCEMASK_PRONE));
155 }
156 }
157
158 callback.SetActionData(action_data);
159 callback.InitActionComponent();
160 action_data.m_Callback = callback;
161 }
162
163
164 override bool CanBeUsedOnBack()
165 {
166 return true;
167 }
168}
ActionBase ActionData
Определения ActionBase.c:30
void ActionTarget(Object object, Object parent, int componentIndex, vector cursorHitPos, float utility, string surfaceName="")
Определения ActionTargets.c:121
void ClearActionJuncture(ActionData action_data)
Определения ActionBase.c:1122
string m_Text
Определения ActionBase.c:58
ref CCIBase m_ConditionItem
Определения ActionBase.c:64
void ClearInventoryReservationEx(ActionData action_data)
Определения ActionBase.c:1061
ref CCTBase m_ConditionTarget
Определения ActionBase.c:65
void InitActionComponent()
Определения AnimatedActionBase.c:66
void SetActionData(ActionData action_data)
Определения AnimatedActionBase.c:109
Определения AnimatedActionBase.c:2
void ActionInteractBase()
Определения ActionInteractBase.c:43
override bool InventoryReservation(ActionData action_data)
Определения ActionTakeArrowToHands.c:71
override Object GetDisplayInteractObject(PlayerBase player, ActionTarget target)
Определения ActionTakeArrowToHands.c:51
override void CreateConditionComponents()
Определения ActionTakeArrowToHands.c:10
override bool CanBeUsedOnBack()
Определения ActionTakeArrowToHands.c:164
override bool HasProneException()
Определения ActionTakeArrowToHands.c:16
override void OnExecute(ActionData action_data)
Определения ActionTakeArrowToHands.c:109
override void CreateAndSetupActionCallback(ActionData action_data)
Определения ActionTakeArrowToHands.c:134
override GetInputType()
Определения ActionTakeArrowToHands.c:21
void ActionTakeArrowToHands()
Определения ActionTakeArrowToHands.c:3
override bool HasProgress()
Определения ActionTakeArrowToHands.c:26
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionTakeArrowToHands.c:31
override bool CanContinue(ActionData action_data)
Определения ActionTakeArrowToHands.c:66
int m_CommandUID
Определения AnimatedActionBase.c:143
GetCallbackClassTypename()
Определения AnimatedActionBase.c:312
int m_CommandUIDProne
Определения AnimatedActionBase.c:144
EntityAI GetFirstArrow()
Определения ArrowManagerBase.c:82
Определения CCINone.c:2
Определения CCTObject.c:2
Super root of all classes in Enforce script.
Определения EnScript.c:11
const int c_InventoryReservationTimeoutMS
reservations
script counterpart to engine's class Inventory
proto native void SetHands(notnull EntityAI parent, EntityAI e)
sets current inventory location type to Hands
proto native EntityAI GetItem()
returns item of current inventory location
InventoryLocation.
Определения InventoryLocation.c:29
Определения ObjectTyped.c:2
Определения PlayerBaseClient.c:2
const float DEFAULT
Определения ActionConstants.c:112
DayZPlayerConstants
defined in C++
Определения 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.