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

◆ HandleReciveData()

override void GetInputType::HandleReciveData ( ActionReciveData action_recive_data,
ActionData action_data )
protected

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

407 : ActionReciveData
408{
409 string m_PartType;
410}
411
412class BuildPartActionData : ActionData
413{
414 string m_PartType;
415};
416
418{
419 override void CreateActionComponent()
420 {
421 float time = SetCallbackDuration(m_ActionData.m_MainItem);
422 m_ActionData.m_ActionComponent = new CAContinuousTime(time);
423 }
424
425 float SetCallbackDuration(ItemBase item)
426 {
427 return UATimeSpent.BASEBUILDING_CONSTRUCT_MEDIUM;
428 }
429};
430
432{
433 void ActionBuildPart()
434 {
435 m_CallbackClass = ActionBuildPartCB;
436 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_ASSEMBLE;
437 m_FullBody = true;
438 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT;
439
440 m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_HIGH;
441 m_Text = "#build";
442 }
443
444 override void CreateConditionComponents()
445 {
446 m_ConditionItem = new CCINonRuined;
447 m_ConditionTarget = new CCTNone;
448 }
449
450 override void OnActionInfoUpdate(PlayerBase player, ActionTarget target, ItemBase item)
451 {
452 ConstructionActionData construction_action_data = player.GetConstructionActionData();
453 ConstructionPart constrution_part = construction_action_data.GetBuildPartAtIndex(m_VariantID);
454
455 if (constrution_part)
456 {
457 m_Text = "#build " + constrution_part.GetName();
458 }
459 }
460
461 override bool CanBeUsedLeaning()
462 {
463 return false;
464 }
465
466 override bool CanBeUsedInFreelook()
467 {
468 return false;
469 }
470
471 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
472 {
473 if (player.IsPlacingLocal() || player.IsPlacingServer())
474 return false;
475
476 //Action not allowed if player has broken legs
477 if (player.GetBrokenLegs() == eBrokenLegs.BROKEN_LEGS)
478 return false;
479
480 //gate..
481 if (target.GetObject() && (!target.GetObject().CanUseConstructionBuild() || target.GetObject().CanUseHandConstruction()))
482 return false;
483
484 if ((!GetGame().IsDedicatedServer()))
485 {
486 if (MiscGameplayFunctions.ComplexBuildCollideCheckClient(player, target, item, m_VariantID))
487 {
488 return true;
489 }
490 return false;
491 }
492 return true;
493 }
494
495 override bool ActionConditionContinue(ActionData action_data)
496 {
497 BaseBuildingBase base_building = BaseBuildingBase.Cast(action_data.m_Target.GetObject());
498 Construction construction = base_building.GetConstruction();
499 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
500 CollisionCheckData check_data = new CollisionCheckData;
501
502 check_data.m_PartName = part_name;
503 check_data.m_AdditionalExcludes.Insert(action_data.m_Player);
504
505 bool canBuild = construction.CanBuildPart(part_name, action_data.m_MainItem, true);
506 if (GetGame().IsServer())
507 {
508 bool collides = construction.IsCollidingEx(check_data);
509
510 return !collides && canBuild;
511 }
512 else
513 {
514 return canBuild;
515 }
516 }
517
518 override void OnFinishProgressServer(ActionData action_data)
519 {
520 BaseBuildingBase base_building = BaseBuildingBase.Cast(action_data.m_Target.GetObject());
521 Construction construction = base_building.GetConstruction();
522
523 string part_name = BuildPartActionData.Cast(action_data).m_PartType;
524 CollisionCheckData check_data = new CollisionCheckData;
525
526 check_data.m_PartName = part_name;
527 check_data.m_AdditionalExcludes.Insert(action_data.m_Player);
528
529 if (!construction.IsCollidingEx(check_data) && construction.CanBuildPart(part_name, action_data.m_MainItem, true)) //redundant at this point?
530 {
531 //build
532 construction.BuildPartServer(action_data.m_Player, part_name, AT_BUILD_PART);
533 //add damage to tool
534 action_data.m_MainItem.DecreaseHealth(UADamageApplied.BUILD, false);
535 }
536 }
537
538 override string GetSoundCategory(ActionData action_data)
539 {
540 return "Base_building";
541 }
542
544 {
545 BuildPartActionData action_data = new BuildPartActionData;
546 return action_data;
547 }
548
549 //setup
550 override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = NULL)
551 {
552 if (super.SetupAction(player, target, item, action_data, extra_data))
553 {
555
556 if (!GetGame().IsDedicatedServer())
557 {
558 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
559 BuildPartActionData.Cast(action_data).m_PartType = construction_action_data.GetBuildPartAtIndex(m_VariantID).GetPartName();
560 }
561 return true;
562 }
563
564 return false;
565 }
566
567 protected void SetBuildingAnimation(ItemBase item)
568 {
569 switch (item.Type())
570 {
571 case Pickaxe:
572 case Shovel:
573 case FarmingHoe:
574 case FieldShovel:
575 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_DIG;
576 break;
577 case Pliers:
578 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_INTERACT;
579 break;
580 case SledgeHammer:
581 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_MINEROCK;
582 break;
583 default:
584 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_ASSEMBLE;
585 break;
586 }
587 }
588
589 override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
590 {
591 super.WriteToContext(ctx, action_data);
592
593 ctx.Write(BuildPartActionData.Cast(action_data).m_PartType);
594 }
595
596 override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
597 {
598 action_recive_data = new BuildPartActionReciveData;
599 super.ReadFromContext(ctx, action_recive_data);
600
601 string part_type;
602 if (ctx.Read(part_type))
603 {
604 BuildPartActionReciveData.Cast(action_recive_data).m_PartType = part_type;
605 return true;
606 }
607 else
608 {
609 return false;
610 }
611 }
612
613 override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
614 {
615 super.HandleReciveData(action_recive_data, action_data);
616
617 BuildPartActionData.Cast(action_data).m_PartType = BuildPartActionReciveData.Cast(action_recive_data).m_PartType;
618 }
619
620 override string GetAdminLogMessage(ActionData action_data)
621 {
622 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
623 string partName = BuildPartActionData.Cast(action_data).m_PartType;
624
625 string message = string.Format("Built %1 on %2 with %3", partName, action_data.m_Target.GetObject().GetDisplayName(), action_data.m_MainItem.GetDisplayName());
626 return message;
627 }
628}
629
630class ActionActionBuildPartNoTool: ActionBuildPart
631{
632 override typename GetInputType()
633 {
634 return ContinuousInteractActionInput;
635 }
636
637 override bool UseMainItem()
638 {
639 return false;
640 }
641
642 override bool HasProgress()
643 {
644 return true;
645 }
646
647 override bool HasAlternativeInterrupt()
648 {
649 return false;
650 }
651}
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.