DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionTakeMaterialToHands.c
См. документацию.
1
3{
5 {
6 m_CommandUID = DayZPlayerConstants.CMD_ACTIONMOD_PICKUP_HANDS;
7 m_CommandUIDProne = DayZPlayerConstants.CMD_ACTIONFB_PICKUP_HANDS;
8 m_Text = "#take";
9 }
10
16
17 override bool HasProneException()
18 {
19 return true;
20 }
21
22 override void OnActionInfoUpdate( PlayerBase player, ActionTarget target, ItemBase item )
23 {
24 ConstructionActionData construction_action_data = player.GetConstructionActionData();
25 EntityAI attachment = construction_action_data.GetActualAttachmentToDetach();
26
27 if ( attachment )
28 {
29 m_Text = "#take " + attachment.GetDisplayName();
30 }
31 }
32
33 override typename GetInputType()
34 {
36 }
37
38 override bool HasProgress()
39 {
40 return false;
41 }
42
43 override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
44 {
45 EntityAI target_entity = EntityAI.Cast( target.GetObject() );
46 if ( target_entity && target_entity.CanUseConstruction() )
47 {
48 BaseBuildingBase base_building = BaseBuildingBase.Cast( target_entity );
49 if(!base_building.IsPlayerInside(player,""))
50 return false;
51
52 ConstructionActionData construction_action_data = player.GetConstructionActionData();
53 string main_part_name = target_entity.GetActionComponentName( target.GetComponentIndex() );
54 //Print(main_part_name);
55
56 if ( GetGame().IsMultiplayer() || GetGame().IsServer() )
57 {
58 construction_action_data.RefreshAttachmentsToDetach( target_entity, main_part_name );
59 }
60 EntityAI attachment = construction_action_data.GetActualAttachmentToDetach();
61
62 if ( attachment && player.GetInventory().CanAddEntityIntoHands( attachment ) && attachment.GetHierarchyRootPlayer() != player )
63 {
64 return true;
65 }
66 }
67
68 return false;
69 }
70
71 override bool CanContinue( ActionData action_data )
72 {
73 return true;
74 }
75
76 override void OnExecute( ActionData action_data )
77 {
78 if (GetGame().IsDedicatedServer())
79 {
80 ClearActionJuncture(action_data);
81 return;
82 }
83
84 OnExecuteImpl(action_data);
85 }
86
87 protected void OnExecuteImpl( ActionData action_data )
88 {
89 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
90 ItemBase item_target = ItemBase.Cast( construction_action_data.GetActualAttachmentToDetach() );
91 if( item_target )
92 {
93 float stackable = item_target.GetTargetQuantityMax();
94
95 if( stackable == 0 || stackable >= item_target.GetQuantity() )
96 {
97 //take to hands
98 action_data.m_Player.PredictiveTakeEntityToHands( item_target );
99 }
100 else if( stackable != 0 && stackable < item_target.GetQuantity() )
101 {
102 //split and take to hands
103 item_target.SplitIntoStackMaxHandsClient( action_data.m_Player );
104 }
105 }
106 }
107
108 override void CreateAndSetupActionCallback( ActionData action_data )
109 {
110 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
111 EntityAI target = construction_action_data.GetActualAttachmentToDetach();
112
113 bool heavy_item = false;
114 ActionBaseCB callback;
115 if ( target && target.ConfigIsExisting("heavyItem") && target.ConfigGetBool("heavyItem") )
116 {
117 heavy_item = true;
118 }
119
120 if( heavy_item )
121 {
122 Class.CastTo(callback, action_data.m_Player.StartCommand_Action(DayZPlayerConstants.CMD_ACTIONFB_PICKUP_HEAVY,GetCallbackClassTypename(),DayZPlayerConstants.STANCEMASK_ERECT));
123 }
124 else
125 {
126 if( action_data.m_Player.IsPlayerInStance(DayZPlayerConstants.STANCEMASK_CROUCH | DayZPlayerConstants.STANCEMASK_ERECT) )
127 {
128 Class.CastTo(callback, action_data.m_Player.AddCommandModifier_Action(DayZPlayerConstants.CMD_ACTIONMOD_PICKUP_HANDS,GetCallbackClassTypename()));
129 }
130 else
131 {
132 Class.CastTo(callback, action_data.m_Player.StartCommand_Action(DayZPlayerConstants.CMD_ACTIONFB_PICKUP_HANDS,GetCallbackClassTypename(),DayZPlayerConstants.STANCEMASK_PRONE));
133 }
134 }
135 callback.SetActionData(action_data);
136 callback.InitActionComponent();
137 action_data.m_Callback = callback;
138 }
139}
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
ref CCTBase m_ConditionTarget
Определения ActionBase.c:65
void InitActionComponent()
Определения AnimatedActionBase.c:66
void SetActionData(ActionData action_data)
Определения AnimatedActionBase.c:109
Определения AnimatedActionBase.c:2
void ActionInteractBase()
Определения ActionInteractBase.c:43
void OnExecuteImpl(ActionData action_data)
Определения ActionTakeMaterialToHands.c:87
override bool HasProneException()
Определения ActionTakeMaterialToHands.c:17
override void CreateConditionComponents()
Определения ActionTakeMaterialToHands.c:11
override bool CanContinue(ActionData action_data)
Определения ActionTakeMaterialToHands.c:71
override void CreateAndSetupActionCallback(ActionData action_data)
Определения ActionTakeMaterialToHands.c:108
override bool HasProgress()
Определения ActionTakeMaterialToHands.c:38
override void OnActionInfoUpdate(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionTakeMaterialToHands.c:22
void ActionTakeMaterialToHands()
Определения ActionTakeMaterialToHands.c:4
override void OnExecute(ActionData action_data)
Определения ActionTakeMaterialToHands.c:76
override GetInputType()
Определения ActionTakeMaterialToHands.c:33
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionTakeMaterialToHands.c:43
int m_CommandUID
Определения AnimatedActionBase.c:143
GetCallbackClassTypename()
Определения AnimatedActionBase.c:312
int m_CommandUIDProne
Определения AnimatedActionBase.c:144
override bool IsPlayerInside(PlayerBase player, string selection)
Определения Fence.c:615
Определения Fence.c:2
Определения CCINotPresent.c:2
Определения CCTCursor.c:2
Super root of all classes in Enforce script.
Определения EnScript.c:11
EntityAI GetActualAttachmentToDetach()
Определения ConstructionActionData.c:380
void RefreshAttachmentsToDetach(EntityAI target, string main_part_name)
Определения ConstructionActionData.c:351
Определения Building.c:6
Определения 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.