DayZ 1.27
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
class ActionTargets ActionTarget
void ClearActionJuncture(ActionData action_data)
Определения ActionBase.c:1083
string m_Text
Определения ActionBase.c:58
ref CCIBase m_ConditionItem
Определения ActionBase.c:64
void ClearInventoryReservationEx(ActionData action_data)
Определения ActionBase.c:1025
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
Определения Building.c:6
const int c_InventoryReservationTimeoutMS
reservations
Определения Inventory.c:712
script counterpart to engine's class Inventory
Определения Inventory.c:79
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
Определения InventoryItem.c:731
Определения 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.