DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionBuildPart.c
См. документацию.
1class BuildPartActionReciveData : ActionReciveData
2{
3 string m_PartType;
4}
5
6class BuildPartActionData : ActionData
7{
8 string m_PartType;
9};
10
12{
13 override void CreateActionComponent()
14 {
15 float time = SetCallbackDuration(m_ActionData.m_MainItem);
16 m_ActionData.m_ActionComponent = new CAContinuousTime(time);
17 }
18
23};
24
26{
28 {
30 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_ASSEMBLE;
31 m_FullBody = true;
32 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT;
33
34 m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_HIGH;
35 m_Text = "#build";
36 }
37
43
44 override void OnActionInfoUpdate(PlayerBase player, ActionTarget target, ItemBase item)
45 {
46 ConstructionActionData construction_action_data = player.GetConstructionActionData();
47 ConstructionPart constrution_part = construction_action_data.GetBuildPartAtIndex(m_VariantID);
48
49 if (constrution_part)
50 {
51 m_Text = "#build " + constrution_part.GetName();
52 }
53 }
54
55 override bool CanBeUsedLeaning()
56 {
57 return false;
58 }
59
60 override bool CanBeUsedInFreelook()
61 {
62 return false;
63 }
64
65 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
66 {
67 if (player.IsPlacingLocal() || player.IsPlacingServer())
68 return false;
69
70 //Action not allowed if player has broken legs
71 if (player.GetBrokenLegs() == eBrokenLegs.BROKEN_LEGS)
72 return false;
73
74 //gate..
75 if (target.GetObject() && (!target.GetObject().CanUseConstructionBuild() || target.GetObject().CanUseHandConstruction()))
76 return false;
77
78 if ((!GetGame().IsDedicatedServer()))
79 {
80 if (MiscGameplayFunctions.ComplexBuildCollideCheckClient(player, target, item, m_VariantID))
81 {
82 return true;
83 }
84 return false;
85 }
86 return true;
87 }
88
89 override bool ActionConditionContinue(ActionData action_data)
90 {
91 BaseBuildingBase base_building = BaseBuildingBase.Cast(action_data.m_Target.GetObject());
92 Construction construction = base_building.GetConstruction();
93 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
95
96 check_data.m_PartName = part_name;
97 check_data.m_AdditionalExcludes.Insert(action_data.m_Player);
98
99 bool canBuild = construction.CanBuildPart(part_name, action_data.m_MainItem, true);
100 if (GetGame().IsServer())
101 {
102 bool collides = construction.IsCollidingEx(check_data);
103
104 return !collides && canBuild;
105 }
106 else
107 {
108 return canBuild;
109 }
110 }
111
112 override void OnFinishProgressServer(ActionData action_data)
113 {
114 BaseBuildingBase base_building = BaseBuildingBase.Cast(action_data.m_Target.GetObject());
115 Construction construction = base_building.GetConstruction();
116
117 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
118 CollisionCheckData check_data = new CollisionCheckData;
119
120 check_data.m_PartName = part_name;
121 check_data.m_AdditionalExcludes.Insert(action_data.m_Player);
122
123 if (!construction.IsCollidingEx(check_data) && construction.CanBuildPart(part_name, action_data.m_MainItem, true)) //redundant at this point?
124 {
125 //build
126 construction.BuildPartServer(action_data.m_Player, part_name, AT_BUILD_PART);
127 //add damage to tool
128 action_data.m_MainItem.DecreaseHealth(UADamageApplied.BUILD, false);
129 }
130 }
131
132 override string GetSoundCategory(ActionData action_data)
133 {
134 return "Base_building";
135 }
136
138 {
139 BuildPartActionData action_data = new BuildPartActionData;
140 return action_data;
141 }
142
143 //setup
144 override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = NULL)
145 {
146 if (super.SetupAction(player, target, item, action_data, extra_data))
147 {
149
150 if (!GetGame().IsDedicatedServer())
151 {
152 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
153 BuildPartActionData.Cast(action_data).m_PartType = construction_action_data.GetBuildPartAtIndex(m_VariantID).GetPartName();
154 }
155 return true;
156 }
157
158 return false;
159 }
160
161 protected void SetBuildingAnimation(ItemBase item)
162 {
163 switch (item.Type())
164 {
165 case Pickaxe:
166 case Shovel:
167 case FarmingHoe:
168 case FieldShovel:
169 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_DIG;
170 break;
171 case Pliers:
172 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_INTERACT;
173 break;
174 case SledgeHammer:
175 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_MINEROCK;
176 break;
177 default:
178 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_ASSEMBLE;
179 break;
180 }
181 }
182
183 override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
184 {
185 super.WriteToContext(ctx, action_data);
186
187 ctx.Write(BuildPartActionData.Cast(action_data).m_PartType);
188 }
189
190 override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
191 {
192 action_recive_data = new BuildPartActionReciveData;
193 super.ReadFromContext(ctx, action_recive_data);
194
195 string part_type;
196 if (ctx.Read(part_type))
197 {
198 BuildPartActionReciveData.Cast(action_recive_data).m_PartType = part_type;
199 return true;
200 }
201 else
202 {
203 return false;
204 }
205 }
206
207 override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
208 {
209 super.HandleReciveData(action_recive_data, action_data);
210
211 BuildPartActionData.Cast(action_data).m_PartType = BuildPartActionReciveData.Cast(action_recive_data).m_PartType;
212 }
213
214 override string GetAdminLogMessage(ActionData action_data)
215 {
216 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
217 string partName = BuildPartActionData.Cast(action_data).m_PartType;
218
219 string message = string.Format("Built %1 on %2 with %3", partName, action_data.m_Target.GetObject().GetDisplayName(), action_data.m_MainItem.GetDisplayName());
220 return message;
221 }
222}
223
224class ActionActionBuildPartNoTool: ActionBuildPart
225{
226 override typename GetInputType()
229 }
230
231 override bool UseMainItem()
232 {
233 return false;
234 }
235
236 override bool HasProgress()
237 {
238 return true;
239 }
240
242 {
243 return false;
245}
const int AT_BUILD_PART
Определения _constants.c:6
ActionBase ActionData
Определения ActionBase.c:30
BuildPartActionReciveData m_PartType
override bool HasProgress()
Определения ActionBuildPart.c:236
override bool UseMainItem()
Определения ActionBuildPart.c:231
class ActionTargets ActionTarget
void CollisionCheckData()
Определения Construction.c:1329
void Construction(BaseBuildingBase parent)
Определения Construction.c:26
eBrokenLegs
Определения EBrokenLegs.c:2
float m_SpecialtyWeight
Определения ActionBase.c:77
int m_StanceMask
Определения ActionBase.c:62
string m_Text
Определения ActionBase.c:58
int m_VariantID
Определения ActionBase.c:68
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 ActionBuildPart()
Определения ActionBuildPart.c:27
override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data=NULL)
Определения ActionBuildPart.c:144
override bool CanBeUsedInFreelook()
Определения ActionBuildPart.c:60
override bool CanBeUsedLeaning()
Определения ActionBuildPart.c:55
override void CreateConditionComponents()
Определения ActionBuildPart.c:38
override string GetSoundCategory(ActionData action_data)
Определения ActionBuildPart.c:132
override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
Определения ActionBuildPart.c:190
void SetBuildingAnimation(ItemBase item)
Определения ActionBuildPart.c:161
override bool ActionConditionContinue(ActionData action_data)
Определения ActionBuildPart.c:89
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionBuildPart.c:65
override ActionData CreateActionData()
Определения ActionBuildPart.c:137
override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
Определения ActionBuildPart.c:183
override string GetAdminLogMessage(ActionData action_data)
Определения ActionBuildPart.c:214
override void OnFinishProgressServer(ActionData action_data)
Определения ActionBuildPart.c:112
override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
Определения ActionBuildPart.c:207
override void OnActionInfoUpdate(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionBuildPart.c:44
float SetCallbackDuration(ItemBase item)
Определения ActionBuildPart.c:19
override void CreateActionComponent()
Определения ActionBuildPart.c:13
override GetInputType()
Определения ActionContinuousBase.c:179
bool HasAlternativeInterrupt()
Определения ActionContinuousBase.c:147
void ActionContinuousBase()
Определения ActionContinuousBase.c:124
int m_CommandUID
Определения AnimatedActionBase.c:143
Определения Fence.c:2
string m_PartType
Определения ActionBuildPart.c:3
Определения CCINonRuined.c:2
Определения CCTNone.c:2
ConstructionPart GetBuildPartAtIndex(int idx)
Определения ConstructionActionData.c:184
string GetPartName()
Определения ConstructionPart.c:30
string GetName()
Определения ConstructionPart.c:24
Определения FarmingHoe.c:2
Определения InventoryItem.c:731
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Определения param.c:12
Определения PlayerBaseClient.c:2
proto bool Write(void value_out)
proto bool Read(void value_in)
const float BUILD
Определения ActionConstants.c:148
const float BASEBUILDING_CONSTRUCT_MEDIUM
Определения ActionConstants.c:62
Определения ActionConstants.c:28
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
Serializer ParamsReadContext
Определения gameplay.c:15
proto native CGame GetGame()
Serializer ParamsWriteContext
Определения gameplay.c:16
proto void Insert(int index, string input)
Inserts a string into the n-th index, increasing the string length by the size of the input.