DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
PluginDayzPlayerDebug_Weapons.c
См. документацию.
2// *************************************************************************************
3// ! PluginDayzPlayerWeaponsDebugUserData
4// *************************************************************************************
6{
7 void PluginDayzPlayerWeaponsDebugUserData(int pAction, int pActionType)
8 {
9 m_iAction = pAction;
10 m_iActionT = pActionType;
11 }
12
13
15 {
16 return m_iAction;
17 }
18
20 {
21 return m_iActionT;
22 }
23
24
25 protected int m_iAction;
26 protected int m_iActionT;
27}
28
29
30// *************************************************************************************
31// ! PluginDayzPlayerDebug_AbilityConfig
32// *************************************************************************************
34{
35 void PluginDayzPlayerDebug_AbilityConfig(string pName, int pAction, int pActionT)
36 {
37 m_Name = pName;
38 m_iAction = pAction;
39 m_iActionT = pActionT;
40 }
41
42 string m_Name;
44 int m_iActionT;
45};
46
47
49// *************************************************************************************
50// ! PluginDayzPlayerDebug
51// *************************************************************************************
53{
56 TextListboxWidget m_Selector;
57 ButtonWidget m_ButtonStart;
62 ButtonWidget m_SetInitStateB;
63 ButtonWidget m_WeaponChange;
64 ButtonWidget m_WeaponHide;
69
70 // command handler properties
77
81
82 //---------------------------------------------------
83 //
84
87 {
88 PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload Mag Bullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADRIFLE_MAGAZINE_BULLET),
89 PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload NoMag Buller", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADRIFLE_NOMAGAZINE_BULLET),
90 PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload Mag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADRIFLE_MAGAZINE_NOBULLET),
91 PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload NoMag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADRIFLE_NOMAGAZINE_NOBULLET),
92 PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload Mag NoBullet lock", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADRIFLE_MAGAZINE_NOBULLET_OPEN),
93 PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload NoMag NoBullet lock", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADRIFLE_NOMAGAZINE_NOBULLET_OPEN),
94 PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload Clip NoBullet", WeaponActions.RELOAD_CLIP, WeaponActionReloadClipTypes.RELOADRIFLE_CLIP_NOBULLET),
95 PluginDayzPlayerDebug_AbilityConfig("Rifle - Reload Clip Bullet", WeaponActions.RELOAD_CLIP, WeaponActionReloadClipTypes.RELOADRIFLE_CLIP_BULLET),
96
97 PluginDayzPlayerDebug_AbilityConfig("Pistol Closed - Reload Mag Bullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_MAGAZINE_BULLET_CLOSED),
98 PluginDayzPlayerDebug_AbilityConfig("Pistol Closed - Reload NoMag Bullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_NOMAGAZINE_BULLET_CLOSED),
99 PluginDayzPlayerDebug_AbilityConfig("Pistol Closed Charged - Reload Mag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_MAGAZINE_NOBULLET_CLOSED_COCKED),
100 PluginDayzPlayerDebug_AbilityConfig("Pistol Closed Charged - Reload NoMag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_NOMAGAZINE_NOBULLET_CLOSED_COCKED),
101 PluginDayzPlayerDebug_AbilityConfig("Pistol Closed Discharged - Reload Mag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_MAGAZINE_NOBULLET_CLOSED_UNCOCKED),
102 PluginDayzPlayerDebug_AbilityConfig("Pistol Closed Discharged - Reload NoMag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_NOMAGAZINE_NOBULLET_CLOSED_UNCOCKED),
103 PluginDayzPlayerDebug_AbilityConfig("Pistol Opened - Reload NoMag ", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_NOMAGAZINE_NOBULLET_OPENED),
104 PluginDayzPlayerDebug_AbilityConfig("Pistol Opened - Reload Mag ", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADPISTOL_MAGAZINE_NOBULLET_OPENED),
105
106 PluginDayzPlayerDebug_AbilityConfig("Pistol Detach Magazine", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOAD_MAGAZINE_DETACH),
107 PluginDayzPlayerDebug_AbilityConfig("Rifle Detach Magazine", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADRIFLE_MAGAZINE_DETACH),
108
109 PluginDayzPlayerDebug_AbilityConfig("Sp Rifle - Reload Mag Bullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADSRIFLE_MAGAZINE_BULLET),
110 PluginDayzPlayerDebug_AbilityConfig("Sp Rifle - Reload NoMag Buller", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADSRIFLE_NOMAGAZINE_BULLET),
111 PluginDayzPlayerDebug_AbilityConfig("Sp Rifle - Reload Mag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADSRIFLE_MAGAZINE_NOBULLET),
112 PluginDayzPlayerDebug_AbilityConfig("Sp Rifle - Reload NoMag NoBullet", WeaponActions.RELOAD, WeaponActionReloadTypes.RELOADSRIFLE_NOMAGAZINE_NOBULLET),
113
114 PluginDayzPlayerDebug_AbilityConfig("Mechanism Opened", WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_OPENED),
115 PluginDayzPlayerDebug_AbilityConfig("Mechanism Closed", WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED),
116 PluginDayzPlayerDebug_AbilityConfig("Mechanism Spec", WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_SPECIAL),
117 PluginDayzPlayerDebug_AbilityConfig("Mechanism Closed Uncocked", WeaponActions.MECHANISM, WeaponActionMechanismTypes.MECHANISM_CLOSED_UNCOCKED),
118
119 PluginDayzPlayerDebug_AbilityConfig("Chamb 1 Bullet Opened", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ONEBULLET_OPENED),
120 PluginDayzPlayerDebug_AbilityConfig("Chamb 1 Bullet Closed", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ONEBULLET_CLOSED),
121 PluginDayzPlayerDebug_AbilityConfig("Chamb 1 Bullet Unique Opened", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ONEBULLET_UNIQUE_OPENED),
122 PluginDayzPlayerDebug_AbilityConfig("Chamb 1 Bullet Unique Closed", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ONEBULLET_UNIQUE_CLOSED),
123
124 PluginDayzPlayerDebug_AbilityConfig("Chamb 2 Bullets Start", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_TWOBULLETS_START),
125 PluginDayzPlayerDebug_AbilityConfig("Chamb 2 Bullets End", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_TWOBULLETS_END),
126
127 PluginDayzPlayerDebug_AbilityConfig("Chamb Loopable Start Closed", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED),
128 PluginDayzPlayerDebug_AbilityConfig("Chamb Loopable Start Closed keep bullet", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_CLOSED_KEEP),
129 PluginDayzPlayerDebug_AbilityConfig("Chamb Loopable Start Opened", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_OPENED),
130 PluginDayzPlayerDebug_AbilityConfig("Chamb Loopable End", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_ENDLOOPABLE),
131
132 PluginDayzPlayerDebug_AbilityConfig("Chamb Loopable Shotgun Start Uncocked", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_SHOTGUN_UNCOCKED),
133 PluginDayzPlayerDebug_AbilityConfig("Chamb Loopable Shotgun Start Cocked", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_STARTLOOPABLE_SHOTGUN_COCKED),
134
135 PluginDayzPlayerDebug_AbilityConfig("Chamb 1", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_DOUBLE_1),
136 PluginDayzPlayerDebug_AbilityConfig("Chamb 2", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_DOUBLE_2),
137 PluginDayzPlayerDebug_AbilityConfig("Chamb 3", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_DOUBLE_3),
138 PluginDayzPlayerDebug_AbilityConfig("Chamb 4", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_DOUBLE_4),
139
140 PluginDayzPlayerDebug_AbilityConfig("Crossbow Opened", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_CROSSBOW_OPENED),
141 PluginDayzPlayerDebug_AbilityConfig("Crossbow Close", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_CROSSBOW_CLOSED),
142 PluginDayzPlayerDebug_AbilityConfig("Crossbow Full", WeaponActions.CHAMBERING, WeaponActionChamberingTypes.CHAMBERING_CROSSBOW_FULL),
143
144 PluginDayzPlayerDebug_AbilityConfig("INTERRUPT", WeaponActions.INTERRUPT, -1),
145
146
147 PluginDayzPlayerDebug_AbilityConfig("Chamb Loader 1 Bullet Opened", WeaponActions.CHAMBERING_LOADER, WeaponActionChamberingLoaderTypes.CHAMBERINGLOADER_OPENED),
148 PluginDayzPlayerDebug_AbilityConfig("Chamb Loader 1 Bullet Closed", WeaponActions.CHAMBERING_LOADER, WeaponActionChamberingLoaderTypes.CHAMBERINGLOADER_CLOSED),
149
150 PluginDayzPlayerDebug_AbilityConfig("Unjamming Start", WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_START),
151 PluginDayzPlayerDebug_AbilityConfig("Unjamming End", WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_END),
152 PluginDayzPlayerDebug_AbilityConfig("Unjamming Interrupt", WeaponActions.UNJAMMING, WeaponActionUnjammingTypes.UNJAMMING_INTERRUPT),
153
156 PluginDayzPlayerDebug_AbilityConfig("Fire Empty Cocked", WeaponActions.FIRE, WeaponActionFireTypes.FIRE_COCKED),
157 PluginDayzPlayerDebug_AbilityConfig("Fire Empty Uncocked", WeaponActions.FIRE, WeaponActionFireTypes.FIRE_UNCOCKED),
160
161 };
162
163
164 int FindAbilityConfig(int pAction, int pActionT)
165 {
166 int l = m_AbilityConfig.Count();
167 for (int i = 0; i < l; i++)
168 {
169 if (m_AbilityConfig[i].m_iAction == pAction && m_AbilityConfig[i].m_iActionT == pActionT)
170 {
171 return i;
172 }
173 }
174 return -1;
175 }
176
177
178 //---------------------------------------------------
179 // gui stuff
180
182 {
183 m_MainWnd = pMainWnd;
184
186
188 DayZPlayer player = DayZPlayer.Cast( GetGame().GetPlayer() );
189 if (player)
190 {
191 HumanCommandWeapons hcw = player.GetCommandModifier_Weapons();
192 hcw.DebugResetEvents();
193 }
194 }
195
196
201
202
204 {
205 m_Selector = TextListboxWidget.Cast( m_MainWnd.FindAnyWidget("WeapActionSelector") );
206 m_ButtonStart = ButtonWidget.Cast( m_MainWnd.FindAnyWidget("WeapActionStart") );
207
208 m_WidgetActionRunning = TextWidget.Cast( m_MainWnd.FindAnyWidget("WeapActionRunning") );
209 m_WidgetActionEvents = TextWidget.Cast( m_MainWnd.FindAnyWidget("WeapActionEvents") );
210
211 m_SetInitStateI = EditBoxWidget.Cast( m_MainWnd.FindAnyWidget("WeapInitStateI") );
212 m_SetInitStateB = ButtonWidget.Cast( m_MainWnd.FindAnyWidget("WeapInitStateB") );
213
214 m_WeaponChange = ButtonWidget.Cast( m_MainWnd.FindAnyWidget("WeapChange") );
215 m_WeaponHide = ButtonWidget.Cast( m_MainWnd.FindAnyWidget("WeapHide") );
216 m_WeaponSlotH = EditBoxWidget.Cast( m_MainWnd.FindAnyWidget("WeaponChangeSlotH") );
217 m_WeaponSlotS = EditBoxWidget.Cast( m_MainWnd.FindAnyWidget("WeaponChangeSlotS") );
218 m_WeaponActionProgressStart = EditBoxWidget.Cast( m_MainWnd.FindAnyWidget("WeapActionProgressStart") );
219 m_WeaponActionProgressEnd = EditBoxWidget.Cast( m_MainWnd.FindAnyWidget("WeapActionProgressEnd") );
220
221
222 m_WidgetActionEvents.SetText("Events:");
223
224 }
225
227 {
228 }
229
230
231
232 //---------------------------------------------------
233 // main update
234
235
236 void Tick()
237 {
238 DayZPlayer player = DayZPlayer.Cast( GetGame().GetPlayer() );
239 if (!player)
240 {
241 return;
242 }
243
244 if (player)
245 {
246 EntityAI entityInHands = player.GetHumanInventory().GetEntityInHands();
247 Weapon_Base w;
248 if (Class.CastTo(w, entityInHands))
249 {
250 if (m_CurrentWeapon != w)
251 WeaponsInit(w);
252 }
253 else
254 {
255 m_Selector.ClearItems();
256 }
257 }
258
260 HumanCommandWeapons hcw = player.GetCommandModifier_Weapons();
261
262 string text = "Action: " + hcw.GetRunningAction().ToString() + " " + hcw.GetRunningActionType().ToString();
263 m_WidgetActionRunning.SetText(text);
264
265
266 int aEvent = hcw.DebugIsEvent();
267 if (aEvent != -1)
268 {
269 string eventStr = "Event: ";
270 eventStr = eventStr + aEvent.ToString() + " ";
271 while(true)
272 {
273 aEvent = hcw.DebugIsEvent();
274 if (aEvent == -1)
275 {
276 break;
277 }
278
279 Print("Event: " + aEvent.ToString());
280
281 eventStr += aEvent.ToString();
282 eventStr += " ";
283 }
284
285 m_WidgetActionEvents.SetText(eventStr);
286 }
287 }
288
289
290
291 //---------------------------------------------------
292 // Actions
293
295 {
296
297 m_Selector.ClearItems();
298
300 int abilityCount = w.GetAbilityCount();
301
302 for (int i = 0; i < abilityCount; ++i)
303 {
304 AbilityRecord rec = w.GetAbility(i);
305 int abConfigIndex = FindAbilityConfig(rec.m_action, rec.m_actionType);
306 if (abConfigIndex != -1)
307 {
309 }
310 }
311
312 m_Selector.AddItem("=========== All - not safe =========", NULL, 0);
313
314
315 // if (abilityCount == 0)
316 {
317 int l = m_AbilityConfig.Count();
318 for (int a = 0; a < l; a++)
319 {
321 }
322 }
323
324 m_CurrentWeapon = w;
325 }
326
327
330 {
331 int row = m_Selector.GetSelectedRow();
332 if (row == -1)
333 {
334 return;
335 }
336
338 m_Selector.GetItemData(row, 0, userData);
339 if (userData)
340 {
341 m_CH_WeapAction = userData.GetAction();
345
346 Print("DayzPlayerImplement_Weapons::WeaponsStartAction");
347 }
348 }
349
350
351 //---------------------------------------------------
352 // window ui clicks
353
355 bool OnClick(Widget w, int x, int y, int button)
356 {
357 if (w == m_ButtonStart)
358 {
360 return true;
361 }
362 else if (w == m_SetInitStateB)
363 {
364 int frameI = m_SetInitStateI.GetText().ToInt();
365
366 DayZPlayer player = DayZPlayer.Cast( GetGame().GetPlayer() );
367
368 HumanCommandWeapons hcw = player.GetCommandModifier_Weapons();
369 hcw.SetInitState(frameI);
370 }
371 else if (w == m_WeaponChange)
372 {
373 Print("Weapon Change pressed");
374
376 if (d == null)
377 {
378 Print("No dispatcher - cannot get selected weapon");
379 return false;
380 }
381
383 if (p == null)
384 {
385 Print("No selected object");
386 return false;
387 }
388
389 Param1<string> p1 = Param1<string>.Cast(p);
390 Print(p1.param1);
391
392 m_CH_WeaponChangeI = p1.param1;
393 m_CH_WeaponChangeSlotH = m_WeaponSlotH.GetText().ToInt();
394 m_CH_WeaponChangeSlotS = m_WeaponSlotS.GetText().ToInt();
395 }
396 else if (w == m_WeaponHide)
397 {
399 m_CH_WeaponChangeSlotH = m_WeaponSlotH.GetText().ToInt();
400 m_CH_WeaponChangeSlotS = m_WeaponSlotS.GetText().ToInt();
401 }
402
403
404 return false;
405 }
406
407 //---------------------------------------------------
408 // Global handler to handle commands from player
409
410 bool IsWeaponChange(out string pNewWeapon, out int pHideSlot, out int pShowSlot)
411 {
412 if (m_CH_WeaponChangeSlotH == -1)
413 {
414 return false;
415 }
416
417 pNewWeapon = m_CH_WeaponChangeI;
418 pHideSlot = m_CH_WeaponChangeSlotH;
419 pShowSlot = m_CH_WeaponChangeSlotS;
420
423
424 return true;
425 }
426
427
428 //---------------------------------------------------
429 // Global handler to handle commands from player
430
432 {
433
434 // last action again
435 if (KeyState(KeyCode.KC_MULTIPLY) == 1)
436 {
437 ClearKey(KeyCode.KC_MULTIPLY);
440
441 Print("DayzPlayerImplement_Weapons OnKC_MULTIPLY");
442 }
443
444
445 if (m_CH_WeapAction >= 0)
446 {
449
451 DayZPlayer player = DayZPlayer.Cast( GetGame().GetPlayer() );
452 if (player != NULL)
453 {
454 HumanCommandWeapons hcw = player.GetCommandModifier_Weapons();
457
458 Print("DayzPlayerImplement_Weapons::WeaponsStartAction2");
459
460 }
461
462 m_CH_WeapAction = -1;
463 }
464
465 }
466}
Dispatcher GetDispatcher()
Определения Dispatcher.c:20
const CallID CALL_ID_SCR_CNSL_GETSELECTEDITEM
Определения Dispatcher.c:11
Icon x
Icon y
PlayerBase GetPlayer()
Определения ModifierBase.c:51
int m_iAction
Определения PluginDayzPlayerDebug_Weapons.c:54
void PluginDayzPlayerWeaponsDebugUserData(int pAction, int pActionType)
Определения PluginDayzPlayerDebug_Weapons.c:36
string m_Name
Определения PluginDayzPlayerDebug_Weapons.c:42
int m_iActionT
Определения PluginDayzPlayerDebug_Weapons.c:55
class PluginDayzPlayerWeaponsDebugUserData PluginDayzPlayerDebug_AbilityConfig(string pName, int pAction, int pActionT)
Определения PluginDayzPlayerDebug_Weapons.c:35
class SyncedValue m_Name
int m_actionType
corresponds to Human::actions == RELOAD, MECHANISM, ...
Определения Weapon_Base.c:7
int m_action
Определения Weapon_Base.c:6
pair ( action, actionType )
Определения Weapon_Base.c:5
Super root of all classes in Enforce script.
Определения EnScript.c:11
Param CallMethod(CallID call_id, Param params)
Определения Dispatcher.c:15
Определения Dispatcher.c:14
Определения EnWidgets.c:354
Определения Building.c:6
proto native void DebugResetEvents()
proto native int GetRunningAction()
returns -1 when no action is running or RELOAD,MECHANISM, ....
proto native void SetActionProgressParams(float pStart, float pEnd)
sets start and end animation position - f.e. for reload clip action
proto native bool StartAction(WeaponActions pAction, int pActionType)
start reload,mechanism,chambering,unjam ...
proto native int DebugIsEvent()
return -1 when there is no event, otherwise it returns pId of event from animation
proto native void SetInitState(int pFrameIndex)
proto native int GetRunningActionType()
returns -1 when no action is running or appropriate action type
Определения human.c:994
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Определения param.c:12
void WeaponsInit(Weapon_Base w)
EditBoxWidget m_WeaponActionProgressStart
Определения PluginDayzPlayerDebug_Weapons.c:67
int FindAbilityConfig(int pAction, int pActionT)
bool OnClick(Widget w, int x, int y, int button)
buttons clicks
ref array< ref PluginDayzPlayerDebug_AbilityConfig > m_AbilityConfig
Определения PluginDayzPlayerDebug_Weapons.c:86
bool IsWeaponChange(out string pNewWeapon, out int pHideSlot, out int pShowSlot)
TextListboxWidget m_Selector
Определения PluginDayzPlayerDebug_Weapons.c:56
EditBoxWidget m_WeaponActionProgressEnd
Определения PluginDayzPlayerDebug_Weapons.c:68
void PluginDayzPlayerDebug_Weapons(Widget pMainWnd)
void PluginDayzPlayerWeaponsDebugUserData(int pAction, int pActionType)
Определения PluginDayzPlayerDebug_Weapons.c:7
Определения EnWidgets.c:220
shorthand
Определения BoltActionRifle_Base.c:6
Определения EnWidgets.c:190
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
proto native CGame GetGame()
proto void Print(void var)
Prints content of variable to console/log.
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
proto native void ClearKey(KeyCode key)
KeyCode
Определения EnSystem.c:157
proto native int KeyState(KeyCode key)
WeaponActionReloadClipTypes
Определения human.c:861
WeaponActionChamberingTypes
Определения human.c:876
WeaponActions
actions
Определения human.c:816
WeaponActionChamberingLoaderTypes
Определения human.c:906
WeaponActionReloadTypes
Определения human.c:832
WeaponActionUnjammingTypes
Определения human.c:912
WeaponActionFireTypes
Определения human.c:920