DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ CanBeUsedLeaning()

override bool GetInputType::CanBeUsedLeaning ( )

См. определение в файле ActionBuildPart.c строка 255

255 : ActionReciveData
256{
257 string m_PartType;
258}
259
260class BuildPartActionData : ActionData
261{
262 string m_PartType;
263};
264
266{
267 override void CreateActionComponent()
268 {
269 float time = SetCallbackDuration(m_ActionData.m_MainItem);
270 m_ActionData.m_ActionComponent = new CAContinuousTime(time);
271 }
272
273 float SetCallbackDuration(ItemBase item)
274 {
275 return UATimeSpent.BASEBUILDING_CONSTRUCT_MEDIUM;
276 }
277};
278
280{
281 void ActionBuildPart()
282 {
283 m_CallbackClass = ActionBuildPartCB;
284 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_ASSEMBLE;
285 m_FullBody = true;
286 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT;
287
288 m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_HIGH;
289 m_Text = "#build";
290 }
291
292 override void CreateConditionComponents()
293 {
294 m_ConditionItem = new CCINonRuined;
295 m_ConditionTarget = new CCTNone;
296 }
297
298 override void OnActionInfoUpdate(PlayerBase player, ActionTarget target, ItemBase item)
299 {
300 ConstructionActionData construction_action_data = player.GetConstructionActionData();
301 ConstructionPart constrution_part = construction_action_data.GetBuildPartAtIndex(m_VariantID);
302
303 if (constrution_part)
304 {
305 m_Text = "#build " + constrution_part.GetName();
306 }
307 }
308
309 override bool CanBeUsedLeaning()
310 {
311 return false;
312 }
313
314 override bool CanBeUsedInFreelook()
315 {
316 return false;
317 }
318
319 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
320 {
321 if (player.IsPlacingLocal() || player.IsPlacingServer())
322 return false;
323
324 //Action not allowed if player has broken legs
325 if (player.GetBrokenLegs() == eBrokenLegs.BROKEN_LEGS)
326 return false;
327
328 //gate..
329 if (target.GetObject() && (!target.GetObject().CanUseConstructionBuild() || target.GetObject().CanUseHandConstruction()))
330 return false;
331
332 if ((!GetGame().IsDedicatedServer()))
333 {
334 if (MiscGameplayFunctions.ComplexBuildCollideCheckClient(player, target, item, m_VariantID))
335 {
336 return true;
337 }
338 return false;
339 }
340 return true;
341 }
342
343 override bool ActionConditionContinue(ActionData action_data)
344 {
345 BaseBuildingBase base_building = BaseBuildingBase.Cast(action_data.m_Target.GetObject());
346 Construction construction = base_building.GetConstruction();
347 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
348 CollisionCheckData check_data = new CollisionCheckData;
349
350 check_data.m_PartName = part_name;
351 check_data.m_AdditionalExcludes.Insert(action_data.m_Player);
352
353 bool canBuild = construction.CanBuildPart(part_name, action_data.m_MainItem, true);
354 if (GetGame().IsServer())
355 {
356 bool collides = construction.IsCollidingEx(check_data);
357
358 return !collides && canBuild;
359 }
360 else
361 {
362 return canBuild;
363 }
364 }
365
366 override void OnFinishProgressServer(ActionData action_data)
367 {
368 BaseBuildingBase base_building = BaseBuildingBase.Cast(action_data.m_Target.GetObject());
369 Construction construction = base_building.GetConstruction();
370
371 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
372 CollisionCheckData check_data = new CollisionCheckData;
373
374 check_data.m_PartName = part_name;
375 check_data.m_AdditionalExcludes.Insert(action_data.m_Player);
376
377 if (!construction.IsCollidingEx(check_data) && construction.CanBuildPart(part_name, action_data.m_MainItem, true)) //redundant at this point?
378 {
379 //build
380 construction.BuildPartServer(action_data.m_Player, part_name, AT_BUILD_PART);
381 //add damage to tool
382 action_data.m_MainItem.DecreaseHealth(UADamageApplied.BUILD, false);
383 }
384 }
385
386 override string GetSoundCategory(ActionData action_data)
387 {
388 return "Base_building";
389 }
390
392 {
393 BuildPartActionData action_data = new BuildPartActionData;
394 return action_data;
395 }
396
397 //setup
398 override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = NULL)
399 {
400 if (super.SetupAction(player, target, item, action_data, extra_data))
401 {
403
404 if (!GetGame().IsDedicatedServer())
405 {
406 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
407 BuildPartActionData.Cast(action_data).m_PartType = construction_action_data.GetBuildPartAtIndex(m_VariantID).GetPartName();
408 }
409 return true;
410 }
411
412 return false;
413 }
414
415 protected void SetBuildingAnimation(ItemBase item)
416 {
417 switch (item.Type())
418 {
419 case Pickaxe:
420 case Shovel:
421 case FarmingHoe:
422 case FieldShovel:
423 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_DIG;
424 break;
425 case Pliers:
426 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_INTERACT;
427 break;
428 case SledgeHammer:
429 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_MINEROCK;
430 break;
431 default:
432 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_ASSEMBLE;
433 break;
434 }
435 }
436
437 override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
438 {
439 super.WriteToContext(ctx, action_data);
440
441 ctx.Write(BuildPartActionData.Cast(action_data).m_PartType);
442 }
443
444 override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
445 {
446 action_recive_data = new BuildPartActionReciveData;
447 super.ReadFromContext(ctx, action_recive_data);
448
449 string part_type;
450 if (ctx.Read(part_type))
451 {
452 BuildPartActionReciveData.Cast(action_recive_data).m_PartType = part_type;
453 return true;
454 }
455 else
456 {
457 return false;
458 }
459 }
460
461 override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
462 {
463 super.HandleReciveData(action_recive_data, action_data);
464
465 BuildPartActionData.Cast(action_data).m_PartType = BuildPartActionReciveData.Cast(action_recive_data).m_PartType;
466 }
467
468 override string GetAdminLogMessage(ActionData action_data)
469 {
470 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
471 string partName = BuildPartActionData.Cast(action_data).m_PartType;
472
473 string message = string.Format("Built %1 on %2 with %3", partName, action_data.m_Target.GetObject().GetDisplayName(), action_data.m_MainItem.GetDisplayName());
474 return message;
475 }
476}
477
478class ActionActionBuildPartNoTool: ActionBuildPart
479{
480 override typename GetInputType()
481 {
482 return ContinuousInteractActionInput;
483 }
484
485 override bool UseMainItem()
486 {
487 return false;
488 }
489
490 override bool HasProgress()
491 {
492 return true;
493 }
494
495 override bool HasAlternativeInterrupt()
496 {
497 return false;
498 }
499}
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 BaseBuildingBase()
Определения BaseBuildingBase.c:1328
void CollisionCheckData()
Определения Construction.c:1329
void Construction(BaseBuildingBase parent)
Определения Construction.c:26
eBrokenLegs
Определения EBrokenLegs.c:2
class GP5GasMask extends MaskBase ItemBase
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
int m_CommandUID
Определения AnimatedActionBase.c:143
ConstructionPart GetBuildPartAtIndex(int idx)
Определения ConstructionActionData.c:184
string GetPartName()
Определения ConstructionPart.c:30
string GetName()
Определения ConstructionPart.c:24
proto bool Write(void value_out)
proto bool Read(void value_in)
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.