DayZ 1.28
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
WeaponFire.c
См. документацию.
1// fire
2class WeaponDryFire extends WeaponStartAction
3{
5
6 override void OnEntry (WeaponEventBase e)
7 {
8 super.OnEntry(e);
9 if (e)
10 {
12 }
13 m_weapon.ResetBurstCount();
14 }
15
16 override bool IsWaitingForActionFinish () { return true; }
17
18 override void OnUpdate (float dt)
19 {
20 m_dtAccumulator += dt;
21 DayZPlayer p;
22 Class.CastTo(p, m_weapon.GetHierarchyParent());
23 if (p)
24 {
25 HumanInputController hic = p.GetInputController();
26
27 int muzzleIndex = m_weapon.GetCurrentMuzzle();
28 float reloadTime = m_weapon.GetReloadTime(muzzleIndex);
29 if ( hic.IsAttackButton() && m_dtAccumulator >= reloadTime)
30 if (m_weapon.CanProcessWeaponEvents())
31 m_weapon.ProcessWeaponEvent(new WeaponEventDryFireTimeout(p));
32 }
33 }
34
35 override void OnExit (WeaponEventBase e)
36 {
38 super.OnExit(e);
39 }
40
41};
42
43// fire
44class WeaponFire extends WeaponStartAction
45{
46 float m_dtAccumulator;
47
48 override bool IsWaitingForActionFinish () { return true; }
49
50 override void OnEntry (WeaponEventBase e)
51 {
52 if (e)
53 {
54 if (GetGame().IsServer())
55 {
56 PlayerBase playerOwner;
57 Class.CastTo(playerOwner, m_weapon.GetHierarchyParent());
58 m_weapon.AddJunctureToAttachedMagazine(playerOwner, 100);
59 }
60
62
63 if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " WeaponFire bang!"); }
64 //m_weapon.Fire();
65 int mi = m_weapon.GetCurrentMuzzle();
66 if (TryFireWeapon(m_weapon, mi))
67 {
69 if (Class.CastTo(p, e.m_player))
70 p.GetAimingModel().SetRecoil(m_weapon);
71 m_weapon.OnFire(mi);
72 }
73 }
74 super.OnEntry(e);
75 }
76
77 override void OnUpdate (float dt)
78 {
79 m_dtAccumulator += dt;
80
81 DayZPlayer p;
82 Class.CastTo(p, m_weapon.GetHierarchyParent());
83
84 int muzzleIndex = m_weapon.GetCurrentMuzzle();
85 float reloadTime = m_weapon.GetReloadTime(muzzleIndex);
86 if (m_dtAccumulator >= reloadTime)
87 if (m_weapon.CanProcessWeaponEvents())
88 m_weapon.ProcessWeaponEvent(new WeaponEventReloadTimeout(p));
89 }
90
91 override void OnExit (WeaponEventBase e)
92 {
93 if (e)
95
96 if (GetGame().IsServer())
97 {
98 PlayerBase playerOwner;
99 Class.CastTo(playerOwner, m_weapon.GetHierarchyParent());
100 m_weapon.ClearJunctureToAttachedMagazine(playerOwner);
101 }
102 super.OnExit(e);
103 }
104
105 override void OnAbort (WeaponEventBase e)
106 {
107 m_weapon.ResetBurstCount();
108 super.OnAbort(e);
109 }
110};
111
112class WeaponFireWithEject extends WeaponFire
113{
114 override void OnEntry (WeaponEventBase e)
115 {
116 m_dtAccumulator = 0;
117
118 if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " WeaponFire bang!"); }
119 //m_weapon.Fire();
120 int mi = m_weapon.GetCurrentMuzzle();
121 if (TryFireWeapon(m_weapon, mi))
122 {
124 if (Class.CastTo(p, e.m_player))
125 p.GetAimingModel().SetRecoil(m_weapon);
126 m_weapon.EjectCasing(mi);
127 m_weapon.EffectBulletHide(mi);
128 m_weapon.OnFire(mi);
129 }
130 super.OnEntry(e);
131 }
132}
133
134// fire
136{
138
139 override bool IsWaitingForActionFinish () { return true; }
140
141 override void OnEntry (WeaponEventBase e)
142 {
143 if (e)
144 {
145 m_dtAccumulator = 0;
146
147 if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " WeaponFire bang bang!"); }
148
149 int mi = m_weapon.GetCurrentMuzzle();
150 int b = m_weapon.GetCurrentModeBurstSize(mi);
151 if (b > 1)
152 {
153 for (int i = 0; i < b; i++)
154 {
155 if (TryFireWeapon(m_weapon, i))
156 {
158 if (Class.CastTo(p1, e.m_player))
159 p1.GetAimingModel().SetRecoil(m_weapon);
160 m_weapon.OnFire(i);
161 }
162 }
163 }
164 else
165 {
166 if (TryFireWeapon(m_weapon, mi))
167 {
169 if (Class.CastTo(p, e.m_player))
170 p.GetAimingModel().SetRecoil(m_weapon);
171 m_weapon.OnFire(mi);
172 }
173 }
174
175 if (mi >= m_weapon.GetMuzzleCount() - 1)
176 m_weapon.SetCurrentMuzzle(0);
177 else
178 m_weapon.SetCurrentMuzzle(mi + 1);
179 }
180 super.OnEntry(e);
181 }
182
183 override void OnUpdate (float dt)
184 {
185 m_dtAccumulator += dt;
186
187 DayZPlayer p;
188 Class.CastTo(p, m_weapon.GetHierarchyParent());
189
190 int muzzleIndex = m_weapon.GetCurrentMuzzle();
191 float reloadTime = m_weapon.GetReloadTime(muzzleIndex);
192 if (m_dtAccumulator >= reloadTime)
193 if (m_weapon.CanProcessWeaponEvents())
194 m_weapon.ProcessWeaponEvent(new WeaponEventReloadTimeout(p));
195 }
196
197 override void OnExit (WeaponEventBase e)
198 {
199 if (e)
200 m_dtAccumulator = 0;
201 super.OnExit(e);
202 }
203
204 override void OnAbort (WeaponEventBase e)
205 {
206 m_weapon.ResetBurstCount();
207 super.OnAbort(e);
208 }
209};
210
211
212class WeaponFireMagnum extends WeaponFireMultiMuzzle
213{
214 override void OnEntry (WeaponEventBase e)
215 {
216 super.OnEntry(e);
217 if (e)
218 {
219 Magnum_Cylinder cylinder = Magnum_Cylinder.Cast(m_weapon.GetAttachmentByType(Magnum_Cylinder));
220 Magnum_Ejector ejector = Magnum_Ejector.Cast(m_weapon.GetAttachmentByType(Magnum_Ejector));
221 if(cylinder && ejector)
222 {
223 float a;
224 int mi = m_weapon.GetCurrentMuzzle();
225 switch(mi)
226 {
227 case 0:
229 break;
230 case 1:
232 cylinder.ResetAnimationPhase("Rotate_Cylinder", MAGNUM_ROTATION_POSITION_6 );
233 ejector.ResetAnimationPhase("Rotate_Ejector", MAGNUM_ROTATION_POSITION_6 );
234 break;
235 case 2:
237 break;
238 case 3:
240 break;
241 case 4:
243 break;
244 case 5:
246 break;
247 }
248 cylinder.SetAnimationPhase("Rotate_Cylinder", a );
249 ejector.SetAnimationPhase("Rotate_Ejector", a );
250 }
251 }
252 }
253
254 override void OnUpdate (float dt)
255 {
256 m_dtAccumulator += dt;
257
258 DayZPlayer p;
259 Class.CastTo(p, m_weapon.GetHierarchyParent());
260
261 int muzzleIndex = m_weapon.GetCurrentMuzzle();
262 float reloadTime = m_weapon.GetReloadTime(muzzleIndex);
263 if (m_dtAccumulator >= reloadTime)
264 if (m_weapon.CanProcessWeaponEvents())
265 m_weapon.ProcessWeaponEvent(new WeaponEventReloadTimeout(p));
266 }
267
268 override void OnExit (WeaponEventBase e)
269 {
270 if (e)
271 m_dtAccumulator = 0;
272 super.OnExit(e);
273 }
274};
275
276
277
278// fire to jam
279class WeaponFireToJam extends WeaponStartAction
280{
281 float m_dtAccumulator;
282
283 override bool IsWaitingForActionFinish () { return true; }
284
285 override void OnEntry (WeaponEventBase e)
286 {
287 if (e)
288 {
289 m_dtAccumulator = 0;
290
291 if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " WeaponFire bang! and jam?"); }
292 //m_weapon.Fire();
293 int mi = m_weapon.GetCurrentMuzzle();
294 if (TryFireWeapon(m_weapon, mi))
295 {
296 m_weapon.SetJammed(true);
298 if (Class.CastTo(p, e.m_player))
299 p.GetAimingModel().SetRecoil(m_weapon);
300 m_weapon.OnFire(mi);
301 }
302 }
303 m_weapon.ResetBurstCount();
304 super.OnEntry(e);
305 }
306
307 override void OnUpdate (float dt)
308 {
309 m_dtAccumulator += dt;
310
311 DayZPlayer p;
312 Class.CastTo(p, m_weapon.GetHierarchyParent());
313
314 int muzzleIndex = m_weapon.GetCurrentMuzzle();
315 float reloadTime = m_weapon.GetReloadTime(muzzleIndex);
316 if (m_dtAccumulator >= reloadTime)
317 if (m_weapon.CanProcessWeaponEvents())
318 m_weapon.ProcessWeaponEvent(new WeaponEventReloadTimeout(p));
319 }
320
321 override void OnExit (WeaponEventBase e)
322 {
323 m_dtAccumulator = 0;
324 super.OnExit(e);
325 }
326};
327
328
329class WeaponFireAndChamber extends WeaponFire
330{
331 override void OnEntry (WeaponEventBase e)
332 {
333 super.OnEntry(e);
334 if (e)
335 {
336 if (!m_weapon.IsJammed())
337 {
338 if (LogManager.IsWeaponLogEnable()) { wpnDebugPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " ejected fired out casing"); }
339 int mi = m_weapon.GetCurrentMuzzle();
340 m_weapon.EjectCasing(mi);
341 m_weapon.EffectBulletHide(mi);
342 m_weapon.SelectionBulletHide();
343
345 }
346 }
347 }
348};
349
350class WeaponFireAndChamberFromInnerMagazine extends WeaponFire
351{
352 override void OnEntry (WeaponEventBase e)
353 {
354 super.OnEntry(e);
355
356 if (!m_weapon.IsJammed())
357 {
358 if (LogManager.IsWeaponLogEnable()) { wpnDebugPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " ejected fired out casing"); }
359 int mi = m_weapon.GetCurrentMuzzle();
360 m_weapon.EjectCasing(mi);
361 m_weapon.EffectBulletHide(mi);
362 m_weapon.SelectionBulletHide();
363
365 }
366 }
367};
368
void wpnPrint(string s)
void wpnDebugPrint(string s)
class WeaponGuardIsDestroyed extends WeaponGuardBase m_weapon
Определения Guards.c:604
HandStateEquipped OnEntry
Определения WeaponChambering.c:292
const float MAGNUM_ROTATION_POSITION_2
Определения Magnum.c:4
const float MAGNUM_ROTATION_POSITION_1
Определения Magnum.c:3
const float MAGNUM_ROTATION_POSITION_3
Определения Magnum.c:5
const float MAGNUM_ROTATION_POSITION_4
Определения Magnum.c:6
const float MAGNUM_ROTATION_POSITION_6
Определения Magnum.c:8
const float MAGNUM_ROTATION_POSITION_5
Определения Magnum.c:7
const float MAGNUM_ROTATION_POSITION_0
Определения Magnum.c:2
override void OnAbort()
Определения RemoteDetonator.c:300
class WeaponChambering_Chamber_OnEntry extends WeaponChambering_Base OnExit
Определения WeaponChambering.c:352
class WeaponFireWithEject extends WeaponFire m_dtAccumulator
override bool IsWaitingForActionFinish()
Определения WeaponFire.c:139
proto native bool TryFireWeapon(EntityAI weapon, int muzzleIndex)
Super root of all classes in Enforce script.
Определения EnScript.c:11
Определения ManBase.c:2
override void OnEntry(HandEventBase e)
Определения Hand_States.c:34
proto native bool IsAttackButton()
returns true if 'UAFire' button is pressed (== true for multiple ticks). Synced.
Определения human.c:18
static bool IsWeaponLogEnable()
Определения 3_Game/tools/Debug.c:718
Определения 3_Game/tools/Debug.c:594
Определения ObjectTyped.c:2
Определения PlayerBaseClient.c:2
DayZPlayer m_player
Определения Events.c:37
signalize mechanism manipulation
Определения Events.c:35
override void OnEntry(WeaponEventBase e)
Определения WeaponFire.c:114
Определения WeaponFire.c:113
override void OnEntry(WeaponEventBase e)
Определения WeaponFire.c:214
override void OnExit(WeaponEventBase e)
Определения WeaponFire.c:268
override void OnUpdate(float dt)
Определения WeaponFire.c:254
override void OnAbort(WeaponEventBase e)
Определения WeaponFire.c:105
override void OnEntry(WeaponEventBase e)
Определения WeaponFire.c:6
float m_dtAccumulator
Определения WeaponFire.c:4
override bool IsWaitingForActionFinish()
Определения WeaponFire.c:16
override void OnExit(WeaponEventBase e)
Определения WeaponFire.c:35
override void OnUpdate(float dt)
Определения WeaponFire.c:18
simple class starting animation action specified by m_action and m_actionType
Определения WeaponChambering.c:3
proto native CGame GetGame()
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
proto native void OnUpdate()
Определения 3_Game/tools/tools.c:349
bool pushToChamberFromInnerMagazine(Weapon_Base weapon, int muzzleIndex)
Определения weapon_utils.c:33
bool pushToChamberFromAttachedMagazine(Weapon_Base weapon, int muzzleIndex)
Определения weapon_utils.c:1