DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionDismantlePart.c
См. документацию.
2{
3 override void CreateActionComponent()
4 {
5 float time = SetCallbackDuration(m_ActionData.m_MainItem);
6 m_ActionData.m_ActionComponent = new CAContinuousTime( time );
7 }
8
10 {
11 /*switch( item.Type() )
12 {
13 case Pickaxe:
14 case Shovel:
15 case FieldShovel:
16 return UATimeSpent.BASEBUILDING_DECONSTRUCT_MEDIUM;
17 case FirefighterAxe:
18 return UATimeSpent.BASEBUILDING_DECONSTRUCT_FAST;
19 default:
20 return UATimeSpent.BASEBUILDING_DECONSTRUCT_SLOW;
21 }*/
23 }
24};
25
27{
29 {
31 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_DISASSEMBLE;
32 m_FullBody = true;
33 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT;
34
35 m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_HIGH;
36 m_Text = "#dismantle";
37 }
38
40 {
42 m_ConditionTarget = new CCTNone;//CCTNonRuined( UAMaxDistances.BASEBUILDING );
43 }
44
45 override void OnActionInfoUpdate( PlayerBase player, ActionTarget target, ItemBase item )
46 {
47 ConstructionActionData construction_action_data = player.GetConstructionActionData();
48 m_Text = "#dismantle " + construction_action_data.GetTargetPart().GetName();
49 }
50
51 override string GetText()
52 {
53 PlayerBase player = PlayerBase.Cast( GetGame().GetPlayer() );
54 if ( player )
55 {
56 ConstructionActionData construction_action_data = player.GetConstructionActionData();
57 ConstructionPart constrution_part = construction_action_data.GetTargetPart();
58
59 if ( constrution_part )
60 {
61 return "#dismantle" + " " + constrution_part.GetName();
62 }
63 }
64
65 return "";
66 }
67
68 override bool CanBeUsedLeaning()
69 {
70 return false;
71 }
72
73 override bool CanBeUsedInFreelook()
74 {
75 return false;
76 }
77
78 override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
79 {
80 if ( player.IsPlacingLocal() )
81 return false;
82
83 //Action not allowed if player has broken legs
84 if (player.GetBrokenLegs() == eBrokenLegs.BROKEN_LEGS)
85 return false;
86
87 return DismantleCondition( player, target, item, true ) && player.m_MovementState.m_iStanceIdx != DayZPlayerConstants.STANCEIDX_PRONE;
88 }
89
90 override bool ActionConditionContinue( ActionData action_data )
91 {
92 return DismantleCondition( action_data.m_Player, action_data.m_Target, action_data.m_MainItem , false ) && action_data.m_Player.m_MovementState.m_iStanceIdx != DayZPlayerConstants.STANCEIDX_PRONE;
93 }
94
95 override void OnFinishProgressServer( ActionData action_data )
96 {
97 BaseBuildingBase base_building = BaseBuildingBase.Cast( action_data.m_Target.GetObject() );
98 Construction construction = base_building.GetConstruction();
99 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
100 ConstructionPart construction_part = construction_action_data.GetTargetPart();
101
102 if ( construction.CanDismantlePart( construction_part.GetPartName(), action_data.m_MainItem ) )
103 {
104 //build
105 construction.DismantlePartServer( action_data.m_Player, construction_part.GetPartName(), AT_DISMANTLE_PART );
106
107 //add damage to tool
108 action_data.m_MainItem.DecreaseHealth( UADamageApplied.DISMANTLE, false );
109 }
110 }
111
112 //setup
113 override bool SetupAction( PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = NULL )
114 {
115 if ( super.SetupAction( player, target, item, action_data, extra_data ) )
116 {
117 SetBuildingAnimation( item );
118
119 return true;
120 }
121
122 return false;
123 }
124
125 protected void SetBuildingAnimation( ItemBase item )
126 {
127 switch ( item.Type() )
128 {
129 case Pickaxe:
130 case Shovel:
131 case FarmingHoe:
132 case FieldShovel:
133 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_DIG;
134 break;
135 case Pliers:
136 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_INTERACT;
137 break;
138 default:
139 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_DISASSEMBLE;
140 break;
141 }
142 }
143
144 protected bool DismantleCondition(PlayerBase player, ActionTarget target, ItemBase item, bool camera_check)
145 {
146 if (player && !player.IsPlacingLocal() && !player.IsPlacingServer())
147 {
148 Object targetObject = target.GetObject();
149 EntityAI targetEntity;
150 if (targetObject && targetObject.CanUseConstruction())
151 {
152 //invalid if is gate and is locked
153 if (Class.CastTo(targetEntity, targetObject) && (targetEntity.FindAttachmentBySlotName("Att_CombinationLock") || targetEntity.FindAttachmentBySlotName("Material_FPole_Flag")) )
154 return false;
155
156 string partName = targetObject.GetActionComponentName(target.GetComponentIndex());
157
158 BaseBuildingBase baseBuilding = BaseBuildingBase.Cast(targetObject);
159 Construction construction = baseBuilding.GetConstruction();
160 ConstructionPart constructionPart = construction.GetConstructionPartToDismantle(partName, item);
161
162 if (constructionPart)
163 {
164
165 //invalid on gate if the gate is opened
166 if (constructionPart.IsGate() && baseBuilding.IsOpened())
167 return false;
168
169 //camera and position checks
170 bool checked = false;
171
172 if (constructionPart.IsBase())
173 checked = true;
174
175 if (!checked && baseBuilding.IsPlayerInside(player, partName))
176 {
177 //Camera check (client-only)
178 if (camera_check)
179 {
180 if (GetGame() && (!GetGame().IsDedicatedServer()))
181 {
182 if (baseBuilding.IsFacingCamera(partName))
183 return false;
184 }
185 }
186
187 checked = true;
188 }
189
190 if (checked)
191 {
192 ConstructionActionData constructionActionData = player.GetConstructionActionData();
193 constructionActionData.SetTargetPart(constructionPart);
194
195 return true;
196 }
197 }
198 }
199 }
200
201 return false;
202 }
203
204 override string GetAdminLogMessage(ActionData action_data)
205 {
206 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
207 ConstructionPart construction_part = construction_action_data.GetTargetPart();
208
209 string message = string.Format("Dismantled %1 from %2 with %3", construction_part.GetName(), action_data.m_Target.GetObject().GetDisplayName(), action_data.m_MainItem.GetDisplayName() );
210 return message;
211 }
212}
const int AT_DISMANTLE_PART
Определения _constants.c:7
ActionBase ActionData
Определения ActionBase.c:30
class ActionTargets ActionTarget
void Construction(BaseBuildingBase parent)
Определения Construction.c:26
eBrokenLegs
Определения EBrokenLegs.c:2
PlayerBase GetPlayer()
Определения ModifierBase.c:51
float m_SpecialtyWeight
Определения ActionBase.c:77
int m_StanceMask
Определения ActionBase.c:62
string m_Text
Определения ActionBase.c:58
ref CCIBase m_ConditionItem
Определения ActionBase.c:64
bool m_FullBody
Определения ActionBase.c:61
ref CCTBase m_ConditionTarget
Определения ActionBase.c:65
ActionData m_ActionData
Определения AnimatedActionBase.c:3
void ActionContinuousBase()
Определения ActionContinuousBase.c:124
override void OnActionInfoUpdate(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionDismantlePart.c:45
bool DismantleCondition(PlayerBase player, ActionTarget target, ItemBase item, bool camera_check)
Определения ActionDismantlePart.c:144
override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data=NULL)
Определения ActionDismantlePart.c:113
void SetBuildingAnimation(ItemBase item)
Определения ActionDismantlePart.c:125
override bool CanBeUsedLeaning()
Определения ActionDismantlePart.c:68
override void OnFinishProgressServer(ActionData action_data)
Определения ActionDismantlePart.c:95
override void CreateConditionComponents()
Определения ActionDismantlePart.c:39
override bool CanBeUsedInFreelook()
Определения ActionDismantlePart.c:73
override string GetAdminLogMessage(ActionData action_data)
Определения ActionDismantlePart.c:204
override bool ActionConditionContinue(ActionData action_data)
Определения ActionDismantlePart.c:90
override string GetText()
Определения ActionDismantlePart.c:51
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionDismantlePart.c:78
void ActionDismantlePart()
Определения ActionDismantlePart.c:28
float SetCallbackDuration(ItemBase item)
Определения ActionDismantlePart.c:9
override void CreateActionComponent()
Определения ActionDismantlePart.c:3
int m_CommandUID
Определения AnimatedActionBase.c:143
override bool IsPlayerInside(PlayerBase player, string selection)
Определения Fence.c:615
override bool IsOpened()
Определения Fence.c:110
override bool IsFacingCamera(string selection)
Определения Fence.c:678
Определения Fence.c:2
Определения CCINonRuined.c:2
Определения CCTNone.c:2
Super root of all classes in Enforce script.
Определения EnScript.c:11
ConstructionPart GetTargetPart()
Определения ConstructionActionData.c:93
void SetTargetPart(ConstructionPart target_part)
Определения ConstructionActionData.c:88
bool IsGate()
Определения ConstructionPart.c:70
string GetPartName()
Определения ConstructionPart.c:30
bool IsBase()
Определения ConstructionPart.c:65
string GetName()
Определения ConstructionPart.c:24
Определения Building.c:6
Определения FarmingHoe.c:2
Определения InventoryItem.c:731
Определения ObjectTyped.c:2
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Определения param.c:12
Определения PlayerBaseClient.c:2
const float DISMANTLE
Определения ActionConstants.c:149
const float BASEBUILDING_DECONSTRUCT_SLOW
Определения ActionConstants.c:66
Определения ActionConstants.c:28
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.