DayZ 1.30
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 (g_Game.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}
string m_Text
Определения ActionBase.c:57
ref CCIBase m_ConditionItem
Определения ActionBase.c:63
ref CCTBase m_ConditionTarget
Определения ActionBase.c:64
void ClearInventoryReservationEx(ActionData action_data)
Определения ActionBase.c:1120
void ClearActionJuncture(ActionData action_data)
Определения ActionBase.c:1207
void ActionTarget(Object object, Object parent, int componentIndex, vector cursorHitPos, float utility, string surfaceName="")
Определения ActionTargets.c:125
DayZGame g_Game
Определения DayZGame.c:4074
void InitActionComponent()
Определения AnimatedActionBase.c:68
void SetActionData(ActionData action_data)
Определения AnimatedActionBase.c:113
Определения AnimatedActionBase.c:2
PlayerBase m_Player
Определения ActionBase.c:40
ActionBaseCB m_Callback
Определения ActionBase.c:36
ref ActionTarget m_Target
Определения ActionBase.c:39
ref array< ref InventoryLocation > m_ReservedInventoryLocations
Определения ActionBase.c:42
Определения ActionBase.c:22
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:147
GetCallbackClassTypename()
Определения AnimatedActionBase.c:319
int m_CommandUIDProne
Определения AnimatedActionBase.c:148
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:30
Определения ObjectTyped.c:2
Определения PlayerBaseClient.c:2
const float DEFAULT
Определения ActionConstants.c:114
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.