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

◆ WriteToContext()

override void GetInputType::WriteToContext ( ParamsWriteContext ctx,
ActionData action_data )
protected

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

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