DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ SpawnAttachedMagazine()

Magazine Weapon::SpawnAttachedMagazine ( string magazineType = "",
int flags = WeaponWithAmmoFlags.CHAMBER )
inlineprotected

Try to spawn and attach a magazine.

Аргументы
[in]magazineTypestring The magazine to attach, passing in empty string will select random
[in]flagsint Setup flags, please read WeaponWithAmmoFlags
Возвращает
The created magazine or null

См. определение в файле Weapon_Base.c строка 769

770 {
771 // Check if the gun has any magazines registered in config
772 if ( GetMagazineTypeCount(0) == 0 )
773 {
774 ErrorEx(string.Format("No 'magazines' config entry for %1.", this));
775 return null;
776 }
777
778 // Randomize when no specific one is given
779 if ( magazineType == "" )
780 {
781 if ( flags & WeaponWithAmmoFlags.MAX_CAPACITY_MAG)
782 magazineType = GetMaxMagazineTypeName(0);
783 else
784 magazineType = GetRandomMagazineTypeName(0);
785 }
786
787 EntityAI magAI = GetInventory().CreateAttachment(magazineType);
788 if (!magAI)
789 {
790 ErrorEx(string.Format("Failed to create and attach %1 to %2", GetDebugName(magAI), this));
791 return null;
792 }
793
794 Magazine mag;
795 if (!CastTo(mag, magAI))
796 {
797 ErrorEx(string.Format("Expected magazine, created: %1", GetDebugName(magAI)));
798 return null;
799 }
800
801 // Decide random quantity when enabled
802 if (flags & WeaponWithAmmoFlags.QUANTITY_RNG)
803 mag.ServerSetAmmoCount(Math.RandomIntInclusive(0, mag.GetAmmoMax()));
804
805 // Fill chamber when flagged
806 bool chamberRng = (flags & WeaponWithAmmoFlags.CHAMBER_RNG);
807 bool chamber = (flags & WeaponWithAmmoFlags.CHAMBER) || chamberRng;
808 if (chamber || chamberRng)
809 {
810 FillChamber(magazineType, flags);
811 }
812
813 // FSM cares about magazine state
815 Synchronize();
816
817 return mag;
818 }
class LogManager EntityAI
void Synchronize()
Определения CombinationLock.c:151
void RandomizeFSMState()
With the parameters given, selects a random suitable state for the FSM of the weapon @WARNING: Weapon...
Определения Weapon_Base.c:673
bool FillChamber(string ammoType="", int flags=WeaponWithAmmoFlags.CHAMBER)
Try to fill the chamber.
Определения Weapon_Base.c:895
override string GetDebugName()
Определения dayzplayer.c:1170
enum ShapeType ErrorEx

Перекрестные ссылки ErrorEx, FillChamber(), GetDebugName(), Math::RandomIntInclusive(), RandomizeFSMState() и Synchronize().

Используется в SpawnAmmo().