actionactivatetrap.c 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. class ActionActivateTrapCB : ActionContinuousBaseCB
  2. {
  3. override void CreateActionComponent()
  4. {
  5. m_ActionData.m_ActionComponent = new CAContinuousTime(UATimeSpent.DEFAULT_DEPLOY);
  6. }
  7. override void InitActionComponent()
  8. {
  9. super.InitActionComponent();
  10. RegisterAnimationEvent("CraftingAction", UA_IN_CRAFTING);
  11. }
  12. }
  13. class ActionActivateTrap : ActionContinuousBase
  14. {
  15. void ActionActivateTrap()
  16. {
  17. m_CallbackClass = ActionActivateTrapCB;
  18. m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_CRAFTING;
  19. m_FullBody = true;
  20. m_StanceMask = DayZPlayerConstants.STANCEMASK_CROUCH;
  21. m_Sound = "craft_universal_0";
  22. m_SpecialtyWeight = UASoftSkillsWeight.PRECISE_LOW;
  23. m_Text = "#activate";
  24. }
  25. override void CreateConditionComponents()
  26. {
  27. m_ConditionTarget = new CCTNonRuined( UAMaxDistances.DEFAULT );
  28. m_ConditionItem = new CCINotPresent;
  29. }
  30. override typename GetInputType()
  31. {
  32. return ContinuousInteractActionInput;
  33. }
  34. override bool HasProgress()
  35. {
  36. return true;
  37. }
  38. override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
  39. {
  40. ItemBase targetItem = ItemBase.Cast(target.GetObject());
  41. if (targetItem && targetItem.IsBeingPlaced())
  42. return false;
  43. Object targetObject = target.GetObject();
  44. if (targetObject != null)
  45. {
  46. if (targetObject.IsInherited(TrapBase))
  47. {
  48. TrapBase trap = TrapBase.Cast(targetObject);
  49. if (trap.IsActivable())
  50. return true;
  51. }
  52. else if (targetObject.IsInherited(TrapSpawnBase))
  53. {
  54. TrapSpawnBase spawnTrap = TrapSpawnBase.Cast(targetObject);
  55. if (spawnTrap && !spawnTrap.IsActive())
  56. return spawnTrap.IsPlaceableAtPosition(spawnTrap.GetPosition());
  57. }
  58. }
  59. return false;
  60. }
  61. override void OnStartAnimationLoop( ActionData action_data )
  62. {
  63. super.OnStartAnimationLoop( action_data );
  64. if ( !GetGame().IsMultiplayer() || GetGame().IsServer() )
  65. {
  66. TrapBase trap = TrapBase.Cast( action_data.m_Target.GetObject() );
  67. if ( trap )
  68. {
  69. Param1<bool> play = new Param1<bool>( true );
  70. GetGame().RPCSingleParam( trap, SoundTypeTrap.ACTIVATING, play, true );
  71. }
  72. }
  73. }
  74. override void OnEnd( ActionData action_data )
  75. {
  76. if ( !GetGame().IsMultiplayer() || GetGame().IsServer() )
  77. {
  78. TrapBase trap = TrapBase.Cast( action_data.m_Target.GetObject());
  79. if ( trap )
  80. {
  81. Param1<bool> play = new Param1<bool>( false );
  82. GetGame().RPCSingleParam( trap, SoundTypeTrap.ACTIVATING, play, true );
  83. }
  84. }
  85. }
  86. override void OnEndAnimationLoop(ActionData action_data)
  87. {
  88. super.OnEndAnimationLoop(action_data);
  89. if (!GetGame().IsMultiplayer() || GetGame().IsServer())
  90. {
  91. TrapBase trap = TrapBase.Cast( action_data.m_Target.GetObject());
  92. Param1<bool> play = new Param1<bool>(false);
  93. GetGame().RPCSingleParam(trap, SoundTypeTrap.ACTIVATING, play, true);
  94. }
  95. }
  96. override void OnFinishProgressServer(ActionData action_data)
  97. {
  98. Object targetObject = action_data.m_Target.GetObject();
  99. if (targetObject != null)
  100. {
  101. vector orientation = action_data.m_Player.GetOrientation();
  102. vector position = targetObject.GetPosition();
  103. if (targetObject.IsInherited(TrapBase))
  104. {
  105. TrapBase trap = TrapBase.Cast(targetObject);
  106. trap.OnPlacementComplete(action_data.m_Player, position, orientation);
  107. trap.StartActivate(action_data.m_Player);
  108. }
  109. else if (targetObject.IsInherited(TrapSpawnBase))
  110. {
  111. TrapSpawnBase spawnTrap = TrapSpawnBase.Cast( targetObject );
  112. spawnTrap.OnPlacementComplete(action_data.m_Player, position, orientation);
  113. }
  114. }
  115. }
  116. }