DayZ 1.28
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
DayZPlayerImplementThrowing.c
См. документацию.
2{
4 {
5 m_Player = pPlayer;
7
9 }
10
11 void HandleThrowing(HumanInputController pHic, HumanCommandWeapons pHcw, EntityAI pEntityInHands, float pDt)
12 {
13 if ( !pEntityInHands && !m_bThrowingAnimationPlaying )
14 {
16 {
18 pHcw.SetThrowingMode(false);
19 }
20
21 return;
22 }
23
26
29 {
30 ResetState();
31
32 pHcw.SetActionProgressParams(0, 0);
34 }
35
38 {
40
41 if ( !CanContinueThrowingEx(pHic, pEntityInHands) )
42 {
44 ResetState();
45
46 pHcw.SetActionProgressParams(0, 0);
47 pHcw.SetThrowingMode(false);
48
49 return;
50 }
51
53 if ( pHcw.WasItemLeaveHandsEvent() )
54 {
55 float lr = pHcw.GetBaseAimingAngleLR();
56 float ud = pHcw.GetBaseAimingAngleUD();
57 vector aimOrientation = m_Player.GetOrientation();
58 aimOrientation[0] = aimOrientation[0] + lr;
59
60 //add 5 deg
61 aimOrientation[1] = aimOrientation[1] + ud + 5;
62
63 //clear inventoy reservation in case item is reserved (e.g. action was executed on this player)
65 pEntityInHands.GetInventory().GetCurrentInventoryLocation(loc);
66 m_Player.GetInventory().ClearInventoryReservationEx(pEntityInHands, loc);
67
68 m_Player.GetHumanInventory().ThrowEntity(pEntityInHands, aimOrientation.AnglesToVector(), c_fThrowingForceMin + m_fThrowingForce01 * (c_fThrowingForceMax - c_fThrowingForceMin));
69 return;
70 }
71
74 {
75 if ( pHic.IsAttackButton() )
76 {
79
81 if ( m_fThrowingForce01 > 1.0 )
83
85 }
86 else
87 {
88 HumanCommandMove hcm = m_Player.GetCommand_Move();
89 bool standingFromBack = hcm && hcm.IsStandingFromBack();
90
91 if ( m_bThrowingInProgress && !standingFromBack)
92 {
94
95 int throwType = 1;
96
97 HumanItemBehaviorCfg itemCfg = m_Player.GetItemAccessor().GetItemInHandsBehaviourCfg();
98 itemCfg = m_Player.GetItemAccessor().GetItemInHandsBehaviourCfg();
99 if ( itemCfg )
100 {
101 switch ( itemCfg.m_iType )
102 {
103 case ItemBehaviorType.TWOHANDED:
104 case ItemBehaviorType.POLEARMS:
105 throwType = 2;
106 break;
107 case ItemBehaviorType.FIREARMS:
108 throwType = 3;
109 }
110 }
111
112 pHcw.ThrowItem(throwType);
114 }
115 }
116 }
117 }
118 else
119 {
120 ResetState();
121 }
122 }
123
125 {
127 m_bThrowingInProgress = false;
129 }
130
131 void SetThrowingModeEnabled(bool enable)
132 {
133 if (enable != m_bThrowingModeEnabled)
134 {
135 m_Player.OnThrowingModeChange(enable);
136 }
137 m_bThrowingModeEnabled = enable;
138 }
139
141 {
143 }
144
147 {
149 }
150
156
158 {
159 // basic stance has priority
160 if( pHic.IsStanceChange() )
161 return false;
162
163 // don't change mode in raise
164 if( pHic.IsWeaponRaised() )
165 return false;
166
167 // check if it's not a heavy item
168 HumanItemBehaviorCfg itemCfg = m_Player.GetItemAccessor().GetItemInHandsBehaviourCfg();
169 if( itemCfg && itemCfg.m_iType == ItemBehaviorType.HEAVY )
170 return false;
171
172/* HumanMovementState movementState = new HumanMovementState();
173 m_Player.GetMovementState(movementState);
174 if( movementState.IsInProne() )
175 return false;*/
176
177 PlayerBase playerPB = PlayerBase.Cast(m_Player);
178 if( playerPB )
179 {
180 if( playerPB.GetEmoteManager().IsEmotePlaying() )
181 return false;
182
183 if( playerPB.GetActionManager().GetRunningAction() != NULL )
184 return false;
185
186 if( playerPB.IsRestrained() || playerPB.IsItemsToDelete())
187 return false;
188
189 if( playerPB.GetDayZPlayerInventory().IsProcessing() )
190 return false;
191
192 if( playerPB.GetWeaponManager().IsRunning() )
193 return false;
194 }
195
196 if (!CheckFreeSpace() )
197 return false;
198
199 return true;
200 }
201
203 {
204 HumanItemBehaviorCfg itemInHandsCfg = m_Player.GetItemAccessor().GetItemInHandsBehaviourCfg();
205 bool boo = false;
206 UAInterface input_interface = m_Player.GetInputInterface();
207 if(input_interface && input_interface.SyncedPress("UAGear"))
208 {
209 boo = true;
210 }
211 if( boo || pHic.IsWeaponRaised() || (itemInHandsCfg && itemInHandsCfg.m_iType == ItemBehaviorType.HEAVY) )
212 {
213 return false;
214 }
215
216 if (!CheckFreeSpace() )
217 return false;
218
219 return true;
220 }
221
223 {
224 if ( pEntityInHands == null )
225 return false;
226
227 return CanContinueThrowing(pHic);
228 }
229
231 {
232 return m_Player.CheckFreeSpace(vector.Forward, 0.7, false);
233 }
234
239 private float m_fThrowingForce01;
240
241 private const float c_fThrowingForceMin = 20.0;
242 private const float c_fThrowingForceMax = 90.0;
243 private const float c_fThrowingForceCoef = 1.0;
244}
void DayZPlayerImplementThrowing(DayZPlayer pPlayer)
Определения DayZPlayerImplementThrowing.c:3
bool CanContinueThrowing(HumanInputController pHic)
Определения DayZPlayerImplementThrowing.c:202
bool CanContinueThrowingEx(HumanInputController pHic, EntityAI pEntityInHands)
Определения DayZPlayerImplementThrowing.c:222
void SetThrowingModeEnabled(bool enable)
Определения DayZPlayerImplementThrowing.c:131
const float c_fThrowingForceCoef
Определения DayZPlayerImplementThrowing.c:243
const float c_fThrowingForceMin
Определения DayZPlayerImplementThrowing.c:241
bool CanChangeThrowingStance(HumanInputController pHic)
Определения DayZPlayerImplementThrowing.c:157
void HandleThrowing(HumanInputController pHic, HumanCommandWeapons pHcw, EntityAI pEntityInHands, float pDt)
Определения DayZPlayerImplementThrowing.c:11
const float c_fThrowingForceMax
Определения DayZPlayerImplementThrowing.c:242
bool IsThrowingInProgress()
Throwing wind-up only (button hold)
Определения DayZPlayerImplementThrowing.c:146
bool IsThrowingAnimationPlaying()
Throwing animation after button release.
Определения DayZPlayerImplementThrowing.c:152
proto native bool IsStandingFromBack()
return true if prone on back is chaning to crounch/stand
Определения human.c:434
proto native bool WasItemLeaveHandsEvent()
proto native void SetThrowingMode(bool pState)
proto native void SetActionProgressParams(float pStart, float pEnd)
sets start and end animation position - f.e. for reload clip action
proto native bool IsThrowingMode()
proto native float GetBaseAimingAngleLR()
returns base aiming angle LR - without sway/offsets/...
proto native void ThrowItem(int throwType)
proto native float GetBaseAimingAngleUD()
returns base aiming angle UD - without sway/offsets/...
Определения human.c:998
proto native bool IsAttackButton()
returns true if 'UAFire' button is pressed (== true for multiple ticks). Synced.
proto native bool IsThrowingModeChange()
returns true if change of throwing mode has been requested
proto native bool IsWeaponRaised()
returns true if weapon is raised
proto native bool IsStanceChange()
stance change button was pressed
Определения human.c:18
int m_iType
Определения humanitems.c:15
Определения humanitems.c:6
InventoryLocation.
Определения InventoryLocation.c:29
Определения PlayerBaseClient.c:2
proto native bool SyncedPress(string action, bool check_focus=true)
Определения UAInput.c:97
static const vector Forward
Определения EnConvert.c:109
proto vector AnglesToVector()
Converts spherical coordinates (yaw, pitch, roll in degrees) to unit length vector.
Определения EnConvert.c:106