390 : ActionReciveData
391{
393}
394
396{
398};
399
401{
403 {
405 m_ActionData.m_ActionComponent =
new CAContinuousTime(time);
406 }
407
409 {
410 return UATimeSpent.BASEBUILDING_CONSTRUCT_MEDIUM;
411 }
412};
413
415{
417 {
422
425 }
426
428 {
431 }
432
434 {
435 ConstructionActionData construction_action_data = player.GetConstructionActionData();
437
438 if (constrution_part)
439 {
441 }
442 }
443
445 {
446 return false;
447 }
448
450 {
451 return false;
452 }
453
455 {
456 if (player.IsPlacingLocal() || player.IsPlacingServer())
457 return false;
458
459
460 if (player.GetBrokenLegs() ==
eBrokenLegs.BROKEN_LEGS)
461 return false;
462
463
464 if (target.GetObject() && (!target.GetObject().CanUseConstructionBuild() || target.GetObject().CanUseHandConstruction()))
465 return false;
466
467 if ((!
GetGame().IsDedicatedServer()))
468 {
469 if (MiscGameplayFunctions.ComplexBuildCollideCheckClient(player, target, item,
m_VariantID))
470 {
471 return true;
472 }
473 return false;
474 }
475 return true;
476 }
477
479 {
481 Construction construction = base_building.GetConstruction();
482 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
484
485 check_data.m_PartName = part_name;
486 check_data.m_AdditionalExcludes.
Insert(action_data.m_Player);
487
488 bool canBuild = construction.CanBuildPart(part_name, action_data.m_MainItem, true);
490 {
491 bool collides = construction.IsCollidingEx(check_data);
492
493 return !collides && canBuild;
494 }
495 else
496 {
497 return canBuild;
498 }
499 }
500
502 {
504 Construction construction = base_building.GetConstruction();
505
506 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
508
509 check_data.m_PartName = part_name;
510 check_data.m_AdditionalExcludes.
Insert(action_data.m_Player);
511
512 if (!construction.IsCollidingEx(check_data) && construction.CanBuildPart(part_name, action_data.m_MainItem, true))
513 {
514
515 construction.BuildPartServer(action_data.m_Player, part_name,
AT_BUILD_PART);
516
517 action_data.m_MainItem.DecreaseHealth(UADamageApplied.BUILD, false);
518 }
519 }
520
522 {
523 return "Base_building";
524 }
525
527 {
528 BuildPartActionData action_data = new BuildPartActionData;
529 return action_data;
530 }
531
532
534 {
535 if (super.SetupAction(player, target, item, action_data, extra_data))
536 {
538
539 if (!
GetGame().IsDedicatedServer())
540 {
541 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
543 }
544 return true;
545 }
546
547 return false;
548 }
549
551 {
552 switch (item.Type())
553 {
554 case Pickaxe:
555 case Shovel:
556 case FarmingHoe:
557 case FieldShovel:
559 break;
560 case Pliers:
562 break;
563 case SledgeHammer:
565 break;
566 default:
568 break;
569 }
570 }
571
573 {
574 super.WriteToContext(ctx, action_data);
575
576 ctx.
Write(BuildPartActionData.Cast(action_data).m_PartType);
577 }
578
580 {
581 action_recive_data = new BuildPartActionReciveData;
582 super.ReadFromContext(ctx, action_recive_data);
583
584 string part_type;
585 if (ctx.
Read(part_type))
586 {
587 BuildPartActionReciveData.Cast(action_recive_data).m_PartType = part_type;
588 return true;
589 }
590 else
591 {
592 return false;
593 }
594 }
595
597 {
598 super.HandleReciveData(action_recive_data, action_data);
599
600 BuildPartActionData.Cast(action_data).m_PartType = BuildPartActionReciveData.Cast(action_recive_data).m_PartType;
601 }
602
604 {
605 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
606 string partName = BuildPartActionData.Cast(action_data).m_PartType;
607
608 string message = string.Format("Built %1 on %2 with %3", partName, action_data.m_Target.GetObject().GetDisplayName(), action_data.m_MainItem.GetDisplayName());
609 return message;
610 }
611}
612
614{
616 {
617 return ContinuousInteractActionInput;
618 }
619
621 {
622 return false;
623 }
624
626 {
627 return true;
628 }
629
631 {
632 return false;
633 }
634}
BuildPartActionReciveData m_PartType
override bool HasProgress()
override bool UseMainItem()
class ActionTargets ActionTarget
void CollisionCheckData()
void Construction(BaseBuildingBase parent)
class GP5GasMask extends MaskBase ItemBase
ref CCIBase m_ConditionItem
ref CCTBase m_ConditionTarget
override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data=NULL)
override bool CanBeUsedInFreelook()
override bool CanBeUsedLeaning()
override void CreateConditionComponents()
override string GetSoundCategory(ActionData action_data)
override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
void SetBuildingAnimation(ItemBase item)
override bool ActionConditionContinue(ActionData action_data)
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
override ActionData CreateActionData()
override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
override string GetAdminLogMessage(ActionData action_data)
override void OnFinishProgressServer(ActionData action_data)
override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
override void OnActionInfoUpdate(PlayerBase player, ActionTarget target, ItemBase item)
float SetCallbackDuration(ItemBase item)
override void CreateActionComponent()
bool HasAlternativeInterrupt()
ConstructionPart GetBuildPartAtIndex(int idx)
proto bool Write(void value_out)
proto bool Read(void value_in)
DayZPlayerConstants
defined in C++
Serializer ParamsReadContext
proto native CGame GetGame()
Serializer ParamsWriteContext
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.