DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionTakeHybridAttachmentToHands.c
См. документацию.
1
3{
5 {
6 m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_PICKUP_HANDS;
7 m_CommandUIDProne = DayZPlayerConstants.CMD_ACTIONFB_PICKUP_HANDS;
8 m_Text = "#take_to_hands";
9 }
10
16
17 override bool HasProneException()
18 {
19 return true;
20 }
21
22 override typename GetInputType()
23 {
25 }
26
27 override bool HasProgress()
28 {
29 return false;
30 }
31
32 override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
33 {
34 EntityAI tgt_entity = EntityAI.Cast( target.GetObject() );
35
36 if ( tgt_entity && BaseBuildingBase.Cast(tgt_entity) &&!tgt_entity.IsBeingPlaced() /*&& BaseBuildingBase.Cast(tgt_entity).IsPlayerInside(player,"")*/ )
37 {
38 string component_name = tgt_entity.GetActionComponentName( target.GetComponentIndex() );
39
40 ItemBase attachment = ItemBase.Cast(tgt_entity.FindAttachmentBySlotName(component_name));
41
42 if ( attachment && player.GetInventory().CanAddEntityIntoHands(attachment) && attachment.IsTakeable() )
43 {
44 return true;
45 }
46 }
47 return false;
48 }
49
50 override bool CanContinue( ActionData action_data )
51 {
52 return true;
53 }
54
55 override void OnExecute( ActionData action_data )
56 {
57 if (GetGame().IsDedicatedServer())
58 {
59 ClearActionJuncture(action_data);
60 return;
61 }
62
63 OnExecuteImpl(action_data);
64 }
65
66 protected void OnExecuteImpl( ActionData action_data )
67 {
68 EntityAI tgt_entity = EntityAI.Cast( action_data.m_Target.GetObject() );
69 string component_name = tgt_entity.GetActionComponentName( action_data.m_Target.GetComponentIndex() );
70 ItemBase attachment;
71
72 if ( tgt_entity && ItemBase.CastTo(attachment, tgt_entity.FindAttachmentBySlotName(component_name)) )
73 {
74 ClearInventoryReservationEx(action_data);
75 float stackable = attachment.GetTargetQuantityMax(-1);
76
77 if( stackable == 0 || stackable >= attachment.GetQuantity() )
78 {
79 //take to hands
80 action_data.m_Player.PredictiveTakeEntityToHands( attachment );
81 }
82 else if( stackable != 0 && stackable < attachment.GetQuantity() )
83 {
84 //split and take to hands
85 attachment.SplitIntoStackMaxHandsClient( action_data.m_Player );
86 }
87 }
88 }
89
90 override void CreateAndSetupActionCallback( ActionData action_data )
91 {
92 EntityAI tgt_entity = EntityAI.Cast( action_data.m_Target.GetObject() );
93 string component_name = tgt_entity.GetActionComponentName( action_data.m_Target.GetComponentIndex() );
94 ItemBase attachment;
95 bool heavy_item = false;
96
97 if ( tgt_entity && ItemBase.CastTo(attachment, tgt_entity.FindAttachmentBySlotName(component_name)) )
98 {
99 ActionBaseCB callback;
100 if ( attachment && attachment.ConfigIsExisting("heavyItem") && attachment.ConfigGetBool("heavyItem") )
101 {
102 heavy_item = true;
103 }
104 }
105
106 if( heavy_item )
107 {
108 Class.CastTo(callback, action_data.m_Player.StartCommand_Action(DayZPlayerConstants.CMD_ACTIONFB_PICKUP_HEAVY,GetCallbackClassTypename(),DayZPlayerConstants.STANCEMASK_ERECT));
109 }
110 else
111 {
112 if( action_data.m_Player.IsPlayerInStance(DayZPlayerConstants.STANCEMASK_CROUCH | DayZPlayerConstants.STANCEMASK_ERECT) )
113 {
114 Class.CastTo(callback, action_data.m_Player.AddCommandModifier_Action(DayZPlayerConstants.CMD_ACTIONMOD_PICKUP_HANDS,GetCallbackClassTypename()));
115 }
116 else
117 {
118 Class.CastTo(callback, action_data.m_Player.StartCommand_Action(DayZPlayerConstants.CMD_ACTIONFB_PICKUP_HANDS,GetCallbackClassTypename(),DayZPlayerConstants.STANCEMASK_PRONE));
119 }
120 }
121 callback.SetActionData(action_data);
122 callback.InitActionComponent();
123 action_data.m_Callback = callback;
124 }
125}
ActionBase ActionData
Определения ActionBase.c:30
class ActionTargets ActionTarget
void ClearActionJuncture(ActionData action_data)
Определения ActionBase.c:1083
string m_Text
Определения ActionBase.c:58
ref CCIBase m_ConditionItem
Определения ActionBase.c:64
void ClearInventoryReservationEx(ActionData action_data)
Определения ActionBase.c:1025
ref CCTBase m_ConditionTarget
Определения ActionBase.c:65
Определения AnimatedActionBase.c:2
void ActionInteractBase()
Определения ActionInteractBase.c:43
override void CreateAndSetupActionCallback(ActionData action_data)
void OnExecuteImpl(ActionData action_data)
override bool CanContinue(ActionData action_data)
override void OnExecute(ActionData action_data)
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
int m_CommandUID
Определения AnimatedActionBase.c:143
GetCallbackClassTypename()
Определения AnimatedActionBase.c:312
int m_CommandUIDProne
Определения AnimatedActionBase.c:144
Определения Fence.c:2
Определения CCINotPresent.c:2
Определения CCTCursor.c:2
Super root of all classes in Enforce script.
Определения EnScript.c:11
Определения Building.c:6
override bool IsTakeable()
Определения BaseBuildingBase.c:988
Определения InventoryItem.c:731
Определения PlayerBaseClient.c:2
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
proto native CGame GetGame()
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.