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

◆ OnInputUserDataProcess()

bool WeaponManager::OnInputUserDataProcess ( int userDataType,
ParamsReadContext ctx )
inlineprivate

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

629 {
630 Weapon_Base wpn;
631 int mi;
632 InventoryLocation il;
633 int slotID;
634 bool accepted = false;
635 if( userDataType == INPUT_UDT_WEAPON_ACTION)
636 {
637 if (!ctx.Read(m_PendingWeaponAction))
638 return false;
639
641 return false;
642
644 {
647 }
648 m_InProgress = true;
649 m_IsEventSended = false;
650 Magazine mag = NULL;
651
652 Weapon_Base.CastTo( wpn, m_player.GetItemInHands() );
653 if ( wpn )
654 mi = wpn.GetCurrentMuzzle();
655
656 switch (m_PendingWeaponAction)
657 {
659 {
660 if ( !ctx.Read(mag) )
661 break;
662
663 if ( !mag || !wpn )
664 break;
665
666 slotID = wpn.GetSlotFromMuzzleIndex(mi);
667 il = new InventoryLocation();
668 il.SetAttachment(wpn,mag,slotID);
669 if( GetGame().AddInventoryJunctureEx(m_player, mag, il, false, 10000) )
670 accepted = true;
671
673 break;
674 }
676 {
677 if ( !ctx.Read(mag) )
678 break;
679
680 il = new InventoryLocation();
681 if (!il.ReadFromContext(ctx))
682 break;
683
684 if ( !mag || !wpn )
685 break;
686
687 if ( !wpn.GetMagazine(mi) )
688 break;
689
690 if ( GetGame().AddActionJuncture(m_player,mag,10000) )
691 accepted = true;
694
695 break;
696 }
698 {
699 il = new InventoryLocation();
700 if ( !il.ReadFromContext(ctx) )
701 break;
702
703 if ( !il.IsValid() )
704 break;
705
706 if ( !wpn )
707 break;
708
709 Magazine det_mag = wpn.GetMagazine(mi);
710 mag = Magazine.Cast(il.GetItem());
711 if ( !det_mag || ( mag != det_mag) )
712 break;
713
714 if (GetGame().AddInventoryJunctureEx(m_player, il.GetItem(), il, true, 10000))
715 accepted = true;
718 break;
719 }
721 {
722 ctx.Read(mag);
723
724 if ( !mag )
725 break;
726
727 if( GetGame().AddActionJuncture(m_player,mag,10000) )
728 accepted = true;
730 break;
731 }
733 {
734 ctx.Read(mag);
735
736 if ( !mag )
737 break;
738
739 if( GetGame().AddActionJuncture(m_player,mag,10000) )
740 accepted = true;
742 break;
743 }
744 case AT_WPN_UNJAM:
745 {
746 accepted = true;
747 //Unjam();
748 break;
749 }
751 {
752 accepted = true;
753 break;
754 }
756 {
757 accepted = true;
758 break;
759 }
760 default:
761 Error("unknown actionID=" + m_PendingWeaponAction);
762 break;
763 }
764 DayZPlayerSyncJunctures.SendWeaponActionAcknowledgment(m_player, m_PendingWeaponActionAcknowledgmentID, accepted);
765 }
766
767 return accepted;
768 }
const int INPUT_UDT_WEAPON_ACTION
Определения _constants.c:7
const int AT_WPN_DETACH_MAGAZINE
Определения _constants.c:12
const int AT_WPN_ATTACH_MAGAZINE
Определения _constants.c:10
const int AT_WPN_LOAD_BULLET
Определения _constants.c:13
const int AT_WPN_UNJAM
Определения _constants.c:14
const int AT_WPN_SWAP_MAGAZINE
Определения _constants.c:11
const int AT_WPN_LOAD_MULTI_BULLETS_START
Определения _constants.c:16
const int AT_WPN_EJECT_BULLET
Определения _constants.c:15
const int AT_WPN_SET_NEXT_MUZZLE_MODE
Определения _constants.c:18
proto native bool ClearJuncture(Man player, notnull EntityAI item)
proto native bool IsValid()
verify current set inventory location
proto native void SetAttachment(notnull EntityAI parent, EntityAI e, int slotId)
sets current inventory location type to Attachment with slot id set to <slotId>
bool ReadFromContext(ParamsReadContext ctx)
Определения InventoryLocation.c:296
proto native EntityAI GetItem()
returns item of current inventory location
proto bool Read(void value_in)
PlayerBase m_player
Определения WeaponManager.c:5
int m_PendingWeaponActionAcknowledgmentID
Определения WeaponManager.c:9
bool m_IsEventSended
Определения WeaponManager.c:18
bool m_InProgress
Определения WeaponManager.c:17
Magazine m_PendingTargetMagazine
Определения WeaponManager.c:10
ref InventoryLocation m_PendingInventoryLocation
Определения WeaponManager.c:13
int m_PendingWeaponAction
Определения WeaponManager.c:12
proto native CGame GetGame()
void Error(string err)
Messagebox with error message.
Определения EnDebug.c:90

Перекрестные ссылки AT_WPN_ATTACH_MAGAZINE, AT_WPN_DETACH_MAGAZINE, AT_WPN_EJECT_BULLET, AT_WPN_LOAD_BULLET, AT_WPN_LOAD_MULTI_BULLETS_START, AT_WPN_SET_NEXT_MUZZLE_MODE, AT_WPN_SWAP_MAGAZINE, AT_WPN_UNJAM, CGame::ClearJuncture(), Error(), GetGame(), InventoryLocation::GetItem(), INPUT_UDT_WEAPON_ACTION, InventoryLocation::IsValid(), m_InProgress, m_IsEventSended, m_PendingInventoryLocation, m_PendingTargetMagazine, m_PendingWeaponAction, m_PendingWeaponActionAcknowledgmentID, m_player, Serializer::Read(), InventoryLocation::ReadFromContext(), DayZPlayerSyncJunctures::SendWeaponActionAcknowledgment() и InventoryLocation::SetAttachment().