DayZ 1.28
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
weapon_utils.c
См. документацию.
1bool pushToChamberFromAttachedMagazine(Weapon_Base weapon, int muzzleIndex)
2{
3 Magazine mag = weapon.GetMagazine(muzzleIndex);
4 if (mag && !mag.IsDamageDestroyed())
5 {
6 if (LogManager.IsWeaponLogEnable()) { wpnDebugPrint("[wpnfsm] " + Object.GetDebugName(weapon) + " chamberFromAttachedMagazine, using attached magazine mag=" + mag.ToString()); }
7 float damage;
8 string type;
9 if (mag && mag.LocalAcquireCartridge(damage, type))
10 {
11 weapon.SelectionBulletShow();
12 if (LogManager.IsWeaponLogEnable()) { wpnDebugPrint("[wpnfsm] " + Object.GetDebugName(weapon) + " chamberFromAttachedMagazine, ok - cartridge acquired: dmg=" + damage + " type=" + type); }
13 }
14 else
15 Error("[wpnfsm] " + Object.GetDebugName(weapon) + " chamberFromAttachedMagazine, error - cannot take cartridge from magazine");
16
17 if (weapon.PushCartridgeToChamber(muzzleIndex, damage, type))
18 {
19 if (LogManager.IsWeaponLogEnable()) { wpnDebugPrint("[wpnfsm] " + Object.GetDebugName(weapon) + " chamberFromAttachedMagazine, ok - loaded chamber"); }
20 return true;
21 }
22 else
23 Error("[wpnfsm] " + Object.GetDebugName(weapon) + " chamberFromAttachedMagazine, error - cannot load chamber!");
24 }
25 else
26 {
27 if (LogManager.IsWeaponLogEnable()) { wpnDebugPrint("[wpnfsm] " + Object.GetDebugName(weapon) + " chamberFromAttachedMagazine - magazine destroyer or no attached"); }
28 //Error("[wpnfsm] " + Object.GetDebugName(weapon) + " chamberFromAttachedMagazine, error - no magazine attached");
29 }
30 return false;
31}
32
33bool pushToChamberFromInnerMagazine(Weapon_Base weapon, int muzzleIndex)
34{
35
36 if (LogManager.IsWeaponLogEnable()) { wpnDebugPrint("[wpnfsm] " + Object.GetDebugName(weapon) + " chamberFromInnerMagazine, using inner magazine."); }
37 float damage;
38 string type;
39 if (weapon.PopCartridgeFromInternalMagazine(muzzleIndex,damage, type))
40 {
41 weapon.SelectionBulletShow();
42 if (LogManager.IsWeaponLogEnable()) { wpnDebugPrint("[wpnfsm] " + Object.GetDebugName(weapon) + " chamberFromInnerMagazine, ok - cartridge acquired: dmg=" + damage + " type=" + type); }
43 }
44 else
45 Error("[wpnfsm] " + Object.GetDebugName(weapon) + " chamberFromInnerMagazine, error - cannot take cartridge from magazine");
46
47 if (weapon.PushCartridgeToChamber(muzzleIndex, damage, type))
48 {
49 if (LogManager.IsWeaponLogEnable()) { wpnDebugPrint("[wpnfsm] " + Object.GetDebugName(weapon) + " chamberFromInnerMagazine, ok - loaded chamber"); }
50 return true;
51 }
52 else
53 Error("[wpnfsm] " + Object.GetDebugName(weapon) + " chamberFromInnerMagazine, error - cannot load chamber!");
54
55 return false;
56}
57
58void ejectBulletAndStoreInMagazine(Weapon_Base weapon, int muzzleIndex, Magazine mag, DayZPlayer p)
59{
60 float damage = 0;
61 string type = string.Empty;
62 string magazineTypeName = weapon.GetChamberedCartridgeMagazineTypeName(muzzleIndex);
63 if (weapon.EjectCartridge(muzzleIndex, damage, type))
64 {
66 wpnDebugPrint("[wpnfsm] " + Object.GetDebugName(weapon) + " ejectBulletAndStoreInMagazine, ejected chambered cartridge");
67 }
68 else
69 Error("[wpnfsm] " + Object.GetDebugName(weapon) + " ejectBulletAndStoreInMagazine, error - cannot eject chambered cartridge!");
70
71
72 if (mag == null)
73 {
74 if (!GetGame().IsMultiplayer() || GetGame().IsServer())
75 {
77 if (DayZPlayerUtils.HandleStoreCartridge(p, weapon, muzzleIndex, damage, type, magazineTypeName))
78 {
80 wpnDebugPrint("[wpnfsm] " + Object.GetDebugName(weapon) + " ejectBulletAndStoreInMagazine, ok - cartridge stored in magazine");
81 }
82 else
83 Error("[wpnfsm] " + Object.GetDebugName(weapon) + " ejectBulletAndStoreInMagazine, error - cannot store cartridge!");
84 if (!GetGame().IsMultiplayer() || GetGame().IsServer())
85 }
86 }
87 else
88 {
89 if (mag.LocalStoreCartridge(damage, type))
90 {
91 mag.SetSynchDirty();
93 wpnDebugPrint("[wpnfsm] " + Object.GetDebugName(weapon) + " ejectBulletAndStoreInMagazine, ok - cartridge stored in user defined magazine");
94 }
95 else
96 Error("[wpnfsm] " + Object.GetDebugName(weapon) + " ejectBulletAndStoreInMagazine, error - cannot store cartridge in magazine");
97 }
98}
99
100bool magazinesHaveEqualSizes(notnull Magazine mag, notnull Magazine mag2)
101{
102 int w, h;
103 GetGame().GetInventoryItemSize(mag, w, h);
104 int w2, h2;
105 GetGame().GetInventoryItemSize(mag2, w2, h2);
106 if (w == w2 && h == h2)
107 {
108 if (LogManager.IsWeaponLogEnable()) { wpnDebugPrint("[wpnfsm] guard - same inventory sizes"); }
109 return true;
110 }
111
112 if (LogManager.IsWeaponLogEnable()) { wpnDebugPrint("[wpnfsm] guard - different inventory sizes"); }
113 return false;
114}
115
void wpnDebugPrint(string s)
void DayZPlayerUtils()
cannot be instantiated
Определения DayZPlayerUtils.c:465
proto void GetInventoryItemSize(InventoryItem item, out int width, out int height)
static bool IsWeaponLogEnable()
Определения 3_Game/tools/Debug.c:718
Определения 3_Game/tools/Debug.c:594
Определения ObjectTyped.c:2
shorthand
Определения BoltActionRifle_Base.c:6
proto native CGame GetGame()
void Error(string err)
Messagebox with error message.
Определения EnDebug.c:90
bool pushToChamberFromInnerMagazine(Weapon_Base weapon, int muzzleIndex)
Определения weapon_utils.c:33
bool magazinesHaveEqualSizes(notnull Magazine mag, notnull Magazine mag2)
Определения weapon_utils.c:100
void ejectBulletAndStoreInMagazine(Weapon_Base weapon, int muzzleIndex, Magazine mag, DayZPlayer p)
Определения weapon_utils.c:58
bool pushToChamberFromAttachedMagazine(Weapon_Base weapon, int muzzleIndex)
Определения weapon_utils.c:1