DayZ 1.30
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_LockTargetOnUse = false;
22 m_Text = "#destroy";
23 }
24
30
31 override void OnActionInfoUpdate( PlayerBase player, ActionTarget target, ItemBase item )
32 {
33 ConstructionActionData cad = player.GetConstructionActionData();
34 m_Text = "#destroy " + cad.GetTargetPart().GetName();;
35 }
36
37 override bool CanBeUsedLeaning()
38 {
39 return false;
40 }
41
42 override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
43 {
44 //Action not allowed if player has broken legs
45 if (player.GetBrokenLegs() == eBrokenLegs.BROKEN_LEGS)
46 return false;
47
48 return DestroyCondition( player, target, item, true );
49 }
50
51 override bool ActionConditionContinue( ActionData action_data )
52 {
53 return DestroyCondition( action_data.m_Player, action_data.m_Target, action_data.m_MainItem , false );
54 }
55
56 override void OnFinishProgressServer( ActionData action_data )
57 {
58 EntityAI ent = EntityAI.Cast(action_data.m_Target.GetObject());
59 ConstructionBase construction = ConstructionBase.Cast(ent.GetConstructionBasic());
60 ConstructionActionData construction_action_data = action_data.m_Player.GetConstructionActionData();
61 ConstructionPart construction_part = construction_action_data.GetTargetPart();
62
63 if ( construction.CanDestroyPart( construction_part.GetPartName() ) )
64 {
65 //build
66 string part_name = construction_part.GetPartName();
67 string zone_name;
68 DamageSystem.GetDamageZoneFromComponentName(ent,part_name,zone_name);
69
70 if (zone_name != "")
71 {
72 ent.AddHealth(zone_name,"Health",-(ent.GetMaxHealth(zone_name,"")/CYCLES));
73 if (ent.GetHealth(zone_name,"Health") < 1)
74 construction.DestroyPartServer( action_data.m_Player, construction_part.GetPartName(), AT_DESTROY_PART );
75 }
76 else
77 {
78 construction.DestroyPartServer( action_data.m_Player, construction_part.GetPartName(), AT_DESTROY_PART );
79 }
80
81 //add damage to tool
82 action_data.m_MainItem.DecreaseHealth( UADamageApplied.DESTROY, false );
83 }
84 }
85
86 protected bool DestroyCondition( PlayerBase player, ActionTarget target, ItemBase item, bool camera_check )
87 {
88 Object target_object = target.GetObject();
89 if ( target_object && target_object.CanUseConstruction() )
90 {
91 string part_name = target_object.GetActionComponentName( target.GetComponentIndex() );
92
93 EntityAI ent = EntityAI.Cast(target.GetObject());
94 ConstructionBase construction = ConstructionBase.Cast(ent.GetConstructionBasic());
95 ConstructionPart construction_part = construction.GetConstructionPartToDestroy( part_name );
96
97 if ( construction_part )
98 {
99 //camera and position checks
100 if ( !player.GetInputController().CameraIsFreeLook() && IsInReach(player, target, UAMaxDistances.DEFAULT) && !player.GetInputController().CameraIsFreeLook() )
101 {
102 //Camera check (client-only)
103 if ( camera_check )
104 {
105 if ( g_Game && ( !g_Game.IsDedicatedServer() ) )
106 {
107 if ( !ent.IsFacingCamera( part_name ) )
108 {
109 return false;
110 }
111 }
112 }
113
114 ConstructionActionData construction_action_data = player.GetConstructionActionData();
115 construction_action_data.SetTargetPart( construction_part );
116
117 return true;
118 }
119 }
120 }
121
122 return false;
123 }
124
125 override string GetAdminLogMessage(ActionData action_data)
126 {
127 return " destroyed " + action_data.m_Target.GetObject().GetDisplayName() + " with " + action_data.m_MainItem.GetDisplayName();
128 }
129}
const int AT_DESTROY_PART
bool m_FullBody
Определения ActionBase.c:60
string m_Text
Определения ActionBase.c:57
bool IsInReach(PlayerBase player, ActionTarget target, float maxDistance=1.0)
Определения ActionBase.c:1290
bool m_LockTargetOnUse
Определения ActionBase.c:59
ref CCIBase m_ConditionItem
Определения ActionBase.c:63
float m_SpecialtyWeight
Определения ActionBase.c:77
ref CCTBase m_ConditionTarget
Определения ActionBase.c:64
int m_StanceMask
Определения ActionBase.c:61
void ActionTarget(Object object, Object parent, int componentIndex, vector cursorHitPos, float utility, string surfaceName="")
Определения ActionTargets.c:125
void ConstructionBase(EntityAI parent)
Определения ConstructionBase.c:58
DayZGame g_Game
Определения DayZGame.c:4074
eBrokenLegs
Определения EBrokenLegs.c:2
ActionData m_ActionData
Определения AnimatedActionBase.c:3
void ActionContinuousBase()
Определения ActionContinuousBase.c:124
PlayerBase m_Player
Определения ActionBase.c:40
ref ActionTarget m_Target
Определения ActionBase.c:39
ItemBase m_MainItem
Определения ActionBase.c:35
Определения ActionBase.c:22
bool DestroyCondition(PlayerBase player, ActionTarget target, ItemBase item, bool camera_check)
Определения ActionDestroyPart.c:86
override void OnActionInfoUpdate(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionDestroyPart.c:31
void ActionDestroyPart()
Определения ActionDestroyPart.c:13
override void OnFinishProgressServer(ActionData action_data)
Определения ActionDestroyPart.c:56
override bool CanBeUsedLeaning()
Определения ActionDestroyPart.c:37
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionDestroyPart.c:42
override void CreateConditionComponents()
Определения ActionDestroyPart.c:25
override bool ActionConditionContinue(ActionData action_data)
Определения ActionDestroyPart.c:51
static int CYCLES
Определения ActionDestroyPart.c:11
override string GetAdminLogMessage(ActionData action_data)
Определения ActionDestroyPart.c:125
override void CreateActionComponent()
Определения ActionDestroyPart.c:3
int m_CommandUID
Определения AnimatedActionBase.c:147
Определения CCINonRuined.c:2
Определения CCTNone.c:2
ConstructionPart GetTargetPart()
Определения ConstructionActionData.c:126
void SetTargetPart(ConstructionPart target_part)
Определения ConstructionActionData.c:121
string GetPartName()
Определения ConstructionPart.c:198
string GetName()
Определения ConstructionPart.c:193
Instanced construction part data classes for dynamic data, statics now stored on EntityType level in ...
Определения ConstructionPart.c:4
Определения ObjectTyped.c:2
Определения PlayerBaseClient.c:2
const float DESTROY
Определения ActionConstants.c:154
const float DEFAULT
Определения ActionConstants.c:114
const float DEFAULT_DESTROY
Определения ActionConstants.c:36
Определения ActionConstants.c:28
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602