DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionDestroyPart.c
См. документацию.
8
10{
11 static int CYCLES = 4;
12
14 {
16 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_DISASSEMBLE;
17 m_FullBody = true;
18 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT;
19
20 m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_HIGH;
21 m_Text = "#destroy";
22 }
23
29
30 override void OnActionInfoUpdate( PlayerBase player, ActionTarget target, ItemBase item )
31 {
32 ConstructionActionData construction_action_data = player.GetConstructionActionData();
33 m_Text = "#destroy " + construction_action_data.GetTargetPart();
34 }
35
36 override bool CanBeUsedLeaning()
37 {
38 return false;
39 }
40
41 override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
42 {
43 //Action not allowed if player has broken legs
44 if (player.GetBrokenLegs() == eBrokenLegs.BROKEN_LEGS)
45 return false;
46
47 return DestroyCondition( player, target, item, true );
48 }
49
50 override bool ActionConditionContinue( ActionData action_data )
51 {
52 return DestroyCondition( action_data.m_Player, action_data.m_Target, action_data.m_MainItem , false );
53 }
54
55 override void OnFinishProgressServer( ActionData action_data )
56 {
57 BaseBuildingBase base_building = BaseBuildingBase.Cast( action_data.m_Target.GetObject() );
58 Construction construction = base_building.GetConstruction();
59 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
60 ConstructionPart construction_part = construction_action_data.GetTargetPart();
61
62 if ( construction.CanDestroyPart( construction_part.GetPartName() ) )
63 {
64 //build
65 string part_name = construction_part.GetPartName();
66 string zone_name;
67 DamageSystem.GetDamageZoneFromComponentName(base_building,part_name,zone_name);
68
69 if (zone_name != "")
70 {
71 base_building.AddHealth(zone_name,"Health",-(base_building.GetMaxHealth(zone_name,"")/CYCLES));
72 if ( base_building.GetHealth(zone_name,"Health") < 1 )
73 construction.DestroyPartServer( action_data.m_Player, construction_part.GetPartName(), AT_DESTROY_PART );
74 }
75 else
76 {
77 construction.DestroyPartServer( action_data.m_Player, construction_part.GetPartName(), AT_DESTROY_PART );
78 }
79
80 //add damage to tool
81 action_data.m_MainItem.DecreaseHealth( UADamageApplied.DESTROY, false );
82 }
83 }
84
85 protected bool DestroyCondition( PlayerBase player, ActionTarget target, ItemBase item, bool camera_check )
86 {
87 Object target_object = target.GetObject();
88 if ( target_object && target_object.CanUseConstruction() )
89 {
90 string part_name = target_object.GetActionComponentName( target.GetComponentIndex() );
91
92 BaseBuildingBase base_building = BaseBuildingBase.Cast( target_object );
93 Construction construction = base_building.GetConstruction();
94 ConstructionPart construction_part = construction.GetConstructionPartToDestroy( part_name );
95
96 if ( construction_part )
97 {
98 //camera and position checks
99 if ( !player.GetInputController().CameraIsFreeLook() && IsInReach(player, target, UAMaxDistances.DEFAULT) && !player.GetInputController().CameraIsFreeLook() )
100 {
101 //Camera check (client-only)
102 if ( camera_check )
103 {
104 if ( GetGame() && ( !GetGame().IsDedicatedServer() ) )
105 {
106 if ( !base_building.IsFacingCamera( part_name ) )
107 {
108 return false;
109 }
110 }
111 }
112
113 ConstructionActionData construction_action_data = player.GetConstructionActionData();
114 construction_action_data.SetTargetPart( construction_part );
115
116 return true;
117 }
118 }
119 }
120
121 return false;
122 }
123
124 override string GetAdminLogMessage(ActionData action_data)
125 {
126 return " destroyed " + action_data.m_Target.GetObject().GetDisplayName() + " with " + action_data.m_MainItem.GetDisplayName();
127 }
128}
const int AT_DESTROY_PART
Определения _constants.c:8
ActionBase ActionData
Определения ActionBase.c:30
class ActionTargets ActionTarget
void Construction(BaseBuildingBase parent)
Определения Construction.c:26
eBrokenLegs
Определения EBrokenLegs.c:2
float m_SpecialtyWeight
Определения ActionBase.c:77
int m_StanceMask
Определения ActionBase.c:62
bool IsInReach(PlayerBase player, ActionTarget target, float maxDistance=1.0)
Определения ActionBase.c:1158
string m_Text
Определения ActionBase.c:58
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 ActionContinuousBase()
Определения ActionContinuousBase.c:124
bool DestroyCondition(PlayerBase player, ActionTarget target, ItemBase item, bool camera_check)
Определения ActionDestroyPart.c:85
override void OnActionInfoUpdate(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionDestroyPart.c:30
void ActionDestroyPart()
Определения ActionDestroyPart.c:13
override void OnFinishProgressServer(ActionData action_data)
Определения ActionDestroyPart.c:55
override bool CanBeUsedLeaning()
Определения ActionDestroyPart.c:36
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionDestroyPart.c:41
override void CreateConditionComponents()
Определения ActionDestroyPart.c:24
override bool ActionConditionContinue(ActionData action_data)
Определения ActionDestroyPart.c:50
static int CYCLES
Определения ActionDestroyPart.c:11
override string GetAdminLogMessage(ActionData action_data)
Определения ActionDestroyPart.c:124
override void CreateActionComponent()
Определения ActionDestroyPart.c:3
int m_CommandUID
Определения AnimatedActionBase.c:143
override bool IsFacingCamera(string selection)
Определения Fence.c:678
Определения Fence.c:2
Определения CCINonRuined.c:2
Определения CCTNone.c:2
ConstructionPart GetTargetPart()
Определения ConstructionActionData.c:93
void SetTargetPart(ConstructionPart target_part)
Определения ConstructionActionData.c:88
string GetPartName()
Определения ConstructionPart.c:30
Определения InventoryItem.c:731
Определения ObjectTyped.c:2
Определения PlayerBaseClient.c:2
const float DESTROY
Определения ActionConstants.c:151
const float DEFAULT
Определения ActionConstants.c:112
const float DEFAULT_DESTROY
Определения ActionConstants.c:36
Определения ActionConstants.c:28
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
proto native CGame GetGame()