DayZ 1.27
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 {
55
56 if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " WeaponFire bang!"); }
57 //m_weapon.Fire();
58 int mi = m_weapon.GetCurrentMuzzle();
59 if (TryFireWeapon(m_weapon, mi))
60 {
62 if (Class.CastTo(p, e.m_player))
63 p.GetAimingModel().SetRecoil(m_weapon);
64 m_weapon.OnFire(mi);
65 }
66 }
67 super.OnEntry(e);
68 }
69
70 override void OnUpdate (float dt)
71 {
72 m_dtAccumulator += dt;
73
74 DayZPlayer p;
75 Class.CastTo(p, m_weapon.GetHierarchyParent());
76
77 int muzzleIndex = m_weapon.GetCurrentMuzzle();
78 float reloadTime = m_weapon.GetReloadTime(muzzleIndex);
79 if (m_dtAccumulator >= reloadTime)
80 if (m_weapon.CanProcessWeaponEvents())
81 m_weapon.ProcessWeaponEvent(new WeaponEventReloadTimeout(p));
82 }
83
84 override void OnExit (WeaponEventBase e)
85 {
86 if (e)
88 super.OnExit(e);
89 }
90
91 override void OnAbort (WeaponEventBase e)
92 {
93 m_weapon.ResetBurstCount();
94 super.OnAbort(e);
95 }
96};
97
98class WeaponFireWithEject extends WeaponFire
99{
100 override void OnEntry (WeaponEventBase e)
101 {
102 m_dtAccumulator = 0;
103
104 if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " WeaponFire bang!"); }
105 //m_weapon.Fire();
106 int mi = m_weapon.GetCurrentMuzzle();
107 if (TryFireWeapon(m_weapon, mi))
108 {
110 if (Class.CastTo(p, e.m_player))
111 p.GetAimingModel().SetRecoil(m_weapon);
112 m_weapon.EjectCasing(mi);
113 m_weapon.EffectBulletHide(mi);
114 m_weapon.OnFire(mi);
115 }
116 super.OnEntry(e);
117 }
118}
119
120// fire
122{
124
125 override bool IsWaitingForActionFinish () { return true; }
126
127 override void OnEntry (WeaponEventBase e)
128 {
129 if (e)
130 {
131 m_dtAccumulator = 0;
132
133 if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " WeaponFire bang bang!"); }
134
135 int mi = m_weapon.GetCurrentMuzzle();
136 int b = m_weapon.GetCurrentModeBurstSize(mi);
137 if (b > 1)
138 {
139 for (int i = 0; i < b; i++)
140 {
141 if (TryFireWeapon(m_weapon, i))
142 {
144 if (Class.CastTo(p1, e.m_player))
145 p1.GetAimingModel().SetRecoil(m_weapon);
146 m_weapon.OnFire(i);
147 }
148 }
149 }
150 else
151 {
152 if (TryFireWeapon(m_weapon, mi))
153 {
155 if (Class.CastTo(p, e.m_player))
156 p.GetAimingModel().SetRecoil(m_weapon);
157 m_weapon.OnFire(mi);
158 }
159 }
160
161 if (mi >= m_weapon.GetMuzzleCount() - 1)
162 m_weapon.SetCurrentMuzzle(0);
163 else
164 m_weapon.SetCurrentMuzzle(mi + 1);
165 }
166 super.OnEntry(e);
167 }
168
169 override void OnUpdate (float dt)
170 {
171 m_dtAccumulator += dt;
172
173 DayZPlayer p;
174 Class.CastTo(p, m_weapon.GetHierarchyParent());
175
176 int muzzleIndex = m_weapon.GetCurrentMuzzle();
177 float reloadTime = m_weapon.GetReloadTime(muzzleIndex);
178 if (m_dtAccumulator >= reloadTime)
179 if (m_weapon.CanProcessWeaponEvents())
180 m_weapon.ProcessWeaponEvent(new WeaponEventReloadTimeout(p));
181 }
182
183 override void OnExit (WeaponEventBase e)
184 {
185 if (e)
186 m_dtAccumulator = 0;
187 super.OnExit(e);
188 }
189
190 override void OnAbort (WeaponEventBase e)
191 {
192 m_weapon.ResetBurstCount();
193 super.OnAbort(e);
194 }
195};
196
197
198class WeaponFireMagnum extends WeaponFireMultiMuzzle
199{
200 override void OnEntry (WeaponEventBase e)
201 {
202 super.OnEntry(e);
203 if (e)
204 {
205 Magnum_Cylinder cylinder = Magnum_Cylinder.Cast(m_weapon.GetAttachmentByType(Magnum_Cylinder));
206 Magnum_Ejector ejector = Magnum_Ejector.Cast(m_weapon.GetAttachmentByType(Magnum_Ejector));
207 if(cylinder && ejector)
208 {
209 float a;
210 int mi = m_weapon.GetCurrentMuzzle();
211 switch(mi)
212 {
213 case 0:
215 break;
216 case 1:
218 cylinder.ResetAnimationPhase("Rotate_Cylinder", MAGNUM_ROTATION_POSITION_6 );
219 ejector.ResetAnimationPhase("Rotate_Ejector", MAGNUM_ROTATION_POSITION_6 );
220 break;
221 case 2:
223 break;
224 case 3:
226 break;
227 case 4:
229 break;
230 case 5:
232 break;
233 }
234 cylinder.SetAnimationPhase("Rotate_Cylinder", a );
235 ejector.SetAnimationPhase("Rotate_Ejector", a );
236 }
237 }
238 }
239
240 override void OnUpdate (float dt)
241 {
242 m_dtAccumulator += dt;
243
244 DayZPlayer p;
245 Class.CastTo(p, m_weapon.GetHierarchyParent());
246
247 int muzzleIndex = m_weapon.GetCurrentMuzzle();
248 float reloadTime = m_weapon.GetReloadTime(muzzleIndex);
249 if (m_dtAccumulator >= reloadTime)
250 if (m_weapon.CanProcessWeaponEvents())
251 m_weapon.ProcessWeaponEvent(new WeaponEventReloadTimeout(p));
252 }
253
254 override void OnExit (WeaponEventBase e)
255 {
256 if (e)
257 m_dtAccumulator = 0;
258 super.OnExit(e);
259 }
260};
261
262
263
264// fire to jam
265class WeaponFireToJam extends WeaponStartAction
266{
267 float m_dtAccumulator;
268
269 override bool IsWaitingForActionFinish () { return true; }
270
271 override void OnEntry (WeaponEventBase e)
272 {
273 if (e)
274 {
275 m_dtAccumulator = 0;
276
277 if (LogManager.IsWeaponLogEnable()) { wpnPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " WeaponFire bang! and jam?"); }
278 //m_weapon.Fire();
279 int mi = m_weapon.GetCurrentMuzzle();
280 if (TryFireWeapon(m_weapon, mi))
281 {
282 m_weapon.SetJammed(true);
284 if (Class.CastTo(p, e.m_player))
285 p.GetAimingModel().SetRecoil(m_weapon);
286 m_weapon.OnFire(mi);
287 }
288 }
289 m_weapon.ResetBurstCount();
290 super.OnEntry(e);
291 }
292
293 override void OnUpdate (float dt)
294 {
295 m_dtAccumulator += dt;
296
297 DayZPlayer p;
298 Class.CastTo(p, m_weapon.GetHierarchyParent());
299
300 int muzzleIndex = m_weapon.GetCurrentMuzzle();
301 float reloadTime = m_weapon.GetReloadTime(muzzleIndex);
302 if (m_dtAccumulator >= reloadTime)
303 if (m_weapon.CanProcessWeaponEvents())
304 m_weapon.ProcessWeaponEvent(new WeaponEventReloadTimeout(p));
305 }
306
307 override void OnExit (WeaponEventBase e)
308 {
309 m_dtAccumulator = 0;
310 super.OnExit(e);
311 }
312};
313
314
315class WeaponFireAndChamber extends WeaponFire
316{
317 override void OnEntry (WeaponEventBase e)
318 {
319 super.OnEntry(e);
320 if (e)
321 {
322 if (GetGame().IsServer())
323 {
324 PlayerBase playerOwner;
325 Class.CastTo(playerOwner, m_weapon.GetHierarchyParent());
326 m_weapon.AddJunctureToAttachedMagazine(playerOwner, 100);
327 }
328 if (!m_weapon.IsJammed())
329 {
330 if (LogManager.IsWeaponLogEnable()) { wpnDebugPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " ejected fired out casing"); }
331 int mi = m_weapon.GetCurrentMuzzle();
332 m_weapon.EjectCasing(mi);
333 m_weapon.EffectBulletHide(mi);
334 m_weapon.SelectionBulletHide();
335
337 }
338 }
339 }
340
341 override void OnExit (WeaponEventBase e)
342 {
343 super.OnExit(e);
344 if (GetGame().IsServer())
345 {
346 PlayerBase playerOwner;
347 Class.CastTo(playerOwner, m_weapon.GetHierarchyParent());
348 m_weapon.ClearJunctureToAttachedMagazine(playerOwner);
349 }
350
351 }
352};
353
354class WeaponFireAndChamberFromInnerMagazine extends WeaponFire
355{
356 override void OnEntry (WeaponEventBase e)
357 {
358 super.OnEntry(e);
359
360 if (!m_weapon.IsJammed())
361 {
362 if (LogManager.IsWeaponLogEnable()) { wpnDebugPrint("[wpnfsm] " + Object.GetDebugName(m_weapon) + " ejected fired out casing"); }
363 int mi = m_weapon.GetCurrentMuzzle();
364 m_weapon.EjectCasing(mi);
365 m_weapon.EffectBulletHide(mi);
366 m_weapon.SelectionBulletHide();
367
369 }
370 }
371};
372
void wpnPrint(string s)
Определения Debug.c:1
void wpnDebugPrint(string s)
Определения Debug.c:9
class WeaponGuardIsDestroyed extends WeaponGuardBase m_weapon
Определения Guards.c:604
HandStateEquipped OnEntry
Определения WeaponChambering.c:291
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 WeaponFireWithEject extends WeaponFire m_dtAccumulator
override bool IsWaitingForActionFinish()
Определения WeaponFire.c:125
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()
Определения Debug.c:718
Определения 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:100
override void OnExit(WeaponEventBase e)
Определения WeaponFire.c:341
Определения WeaponFire.c:99
override void OnEntry(WeaponEventBase e)
Определения WeaponFire.c:200
override void OnExit(WeaponEventBase e)
Определения WeaponFire.c:254
override void OnUpdate(float dt)
Определения WeaponFire.c:240
override void OnAbort(WeaponEventBase e)
Определения WeaponFire.c:91
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()
Определения 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