DayZ 1.30
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
55 if ( g_Game.IsMultiplayer() || g_Game.IsServer() )
56 {
57 construction_action_data.RefreshAttachmentsToDetach( target_entity, main_part_name );
58 }
59 EntityAI attachment = construction_action_data.GetActualAttachmentToDetach();
60
61 if ( attachment && player.GetInventory().CanAddEntityIntoHands( attachment ) && attachment.GetHierarchyRootPlayer() != player )
62 {
63 return true;
64 }
65 }
66
67 return false;
68 }
69
70 override bool CanContinue( ActionData action_data )
71 {
72 return true;
73 }
74
75 override void OnExecute( ActionData action_data )
76 {
77 if (g_Game.IsDedicatedServer())
78 {
79 ClearActionJuncture(action_data);
80 return;
81 }
82
83 OnExecuteImpl(action_data);
84 }
85
86 protected void OnExecuteImpl( ActionData action_data )
87 {
88 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
89 ItemBase item_target = ItemBase.Cast( construction_action_data.GetActualAttachmentToDetach() );
90 if( item_target )
91 {
92 float stackable = item_target.GetTargetQuantityMax();
93
94 if( stackable == 0 || stackable >= item_target.GetQuantity() )
95 {
96 //take to hands
97 action_data.m_Player.PredictiveTakeEntityToHands( item_target );
98 }
99 else if( stackable != 0 && stackable < item_target.GetQuantity() )
100 {
101 //split and take to hands
102 item_target.SplitIntoStackMaxHandsClient( action_data.m_Player );
103 }
104 }
105 }
106
107 override void CreateAndSetupActionCallback( ActionData action_data )
108 {
109 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
110 EntityAI target = construction_action_data.GetActualAttachmentToDetach();
111
112 bool heavy_item = false;
113 ActionBaseCB callback;
114 if ( target && target.ConfigIsExisting("heavyItem") && target.ConfigGetBool("heavyItem") )
115 {
116 heavy_item = true;
117 }
118
119 if( heavy_item )
120 {
121 Class.CastTo(callback, action_data.m_Player.StartCommand_Action(DayZPlayerConstants.CMD_ACTIONFB_PICKUP_HEAVY,GetCallbackClassTypename(),DayZPlayerConstants.STANCEMASK_ERECT));
122 }
123 else
124 {
125 if( action_data.m_Player.IsPlayerInStance(DayZPlayerConstants.STANCEMASK_CROUCH | DayZPlayerConstants.STANCEMASK_ERECT) )
126 {
127 Class.CastTo(callback, action_data.m_Player.AddCommandModifier_Action(DayZPlayerConstants.CMD_ACTIONMOD_PICKUP_HANDS,GetCallbackClassTypename()));
128 }
129 else
130 {
131 Class.CastTo(callback, action_data.m_Player.StartCommand_Action(DayZPlayerConstants.CMD_ACTIONFB_PICKUP_HANDS,GetCallbackClassTypename(),DayZPlayerConstants.STANCEMASK_PRONE));
132 }
133 }
134 callback.SetActionData(action_data);
135 callback.InitActionComponent();
136 action_data.m_Callback = callback;
137 }
138}
string m_Text
Определения ActionBase.c:57
ref CCIBase m_ConditionItem
Определения ActionBase.c:63
ref CCTBase m_ConditionTarget
Определения ActionBase.c:64
void ClearActionJuncture(ActionData action_data)
Определения ActionBase.c:1207
void ActionTarget(Object object, Object parent, int componentIndex, vector cursorHitPos, float utility, string surfaceName="")
Определения ActionTargets.c:125
DayZGame g_Game
Определения DayZGame.c:4074
void InitActionComponent()
Определения AnimatedActionBase.c:68
void SetActionData(ActionData action_data)
Определения AnimatedActionBase.c:113
Определения AnimatedActionBase.c:2
PlayerBase m_Player
Определения ActionBase.c:40
ActionBaseCB m_Callback
Определения ActionBase.c:36
Определения ActionBase.c:22
void ActionInteractBase()
Определения ActionInteractBase.c:43
void OnExecuteImpl(ActionData action_data)
Определения ActionTakeMaterialToHands.c:86
override bool HasProneException()
Определения ActionTakeMaterialToHands.c:17
override void CreateConditionComponents()
Определения ActionTakeMaterialToHands.c:11
override bool CanContinue(ActionData action_data)
Определения ActionTakeMaterialToHands.c:70
override void CreateAndSetupActionCallback(ActionData action_data)
Определения ActionTakeMaterialToHands.c:107
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:75
override GetInputType()
Определения ActionTakeMaterialToHands.c:33
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionTakeMaterialToHands.c:43
int m_CommandUID
Определения AnimatedActionBase.c:147
GetCallbackClassTypename()
Определения AnimatedActionBase.c:319
int m_CommandUIDProne
Определения AnimatedActionBase.c:148
override bool IsPlayerInside(PlayerBase player, string selection)
Определения Fence.c:661
Определения Fence.c:2
Определения CCINotPresent.c:2
Определения CCTCursor.c:2
Super root of all classes in Enforce script.
Определения EnScript.c:11
EntityAI GetActualAttachmentToDetach()
Определения ConstructionActionData.c:566
void RefreshAttachmentsToDetach(EntityAI target, string main_part_name)
Определения ConstructionActionData.c:537
Определения PlayerBaseClient.c:2
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.