DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionRepairCarChassis.c
См. документацию.
3
5{
6 protected typename m_LastValidType; // deprecated
8
10 {
12 m_SpecialtyWeight = UASoftSkillsWeight.PRECISE_LOW;
13 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_INTERACT;
14 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT;
15 m_FullBody = true;
16 m_LockTargetOnUse = false;
17 m_Text = "#repair";
18
20 }
21
22 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
23 {
24 if (player.GetBrokenLegs() == eBrokenLegs.BROKEN_LEGS)
25 return false;
26
27 CarScript car = CarScript.Cast(target.GetObject());
28 if (!car)
29 {
30 return false;
31 }
32
33 if (GetGame().IsMultiplayer() && GetGame().IsServer())
34 {
35 return true;
36 }
37
38 if (m_LastValidType != target.Type() || m_LastValidComponentIndex != target.GetComponentIndex() || m_CurrentDamageZone == "")
39 {
40 string damageZone = "";
41 array<string> selections = new array<string>();
42 car.GetActionComponentNameList(target.GetComponentIndex(), selections);
43
44 foreach (string selection : selections)
45 {
46 //NOTE: relevant fire geometry and view geometry selection names MUST match in order to get a valid damage zone
47 if (car && DamageSystem.GetDamageZoneFromComponentName(car, selection, damageZone))
48 {
49 if (damageZone == "Engine")
50 continue;
51
52 int zoneHP = car.GetHealthLevel(damageZone);
53 if (zoneHP > GameConstants.STATE_WORN && zoneHP < GameConstants.STATE_RUINED)
54 {
55 m_CurrentDamageZone = damageZone;
56 m_LastValidComponentIndex = target.GetComponentIndex();
57
58 //Determine if using a "Special" item for repairing
59 WoodenPlank plank = WoodenPlank.Cast(item);
60 Fabric tarp = Fabric.Cast(item);
61
62 //Prevent planks and tarp from repairing non related areas
63 if ((tarp || plank) && (damageZone != "BackWood" && damageZone != "BackTarp"))
64 return false;
65
66 return true;
67 }
68 }
69 }
70 }
71
72 return false;
73 }
74
75 override void AdjustItemQuantityServer(ActionData action_data)
76 {
77 if (action_data.m_MainItem.HasQuantity())
78 {
79 if (action_data.m_MainItem.GetQuantity() > 1)
80 {
81 int qnt = action_data.m_MainItem.GetQuantity();
82 Fabric usedTarp = Fabric.Cast(action_data.m_MainItem);
83 WoodenPlank usedPlank = WoodenPlank.Cast(action_data.m_MainItem);
84 if (usedTarp || usedPlank)
85 {
86 qnt -= 1;
87 }
88 else
89 {
90 qnt -= action_data.m_MainItem.GetQuantityMax() * 0.25;
91 }
92
93 action_data.m_MainItem.SetQuantity(qnt);
94 }
95 else
96 {
97 action_data.m_MainItem.Delete();
98 }
99 }
100 }
101};
102
103// deprecated
104class RepairCarChassisActionReciveData : ActionReciveData
105{}
106
107class RepairCarChassisActionData : ActionData
108{}
int m_StanceMask
Определения ActionBase.c:33
ActionBase ActionData
Определения ActionBase.c:30
class ActionTargets ActionTarget
eBrokenLegs
Определения EBrokenLegs.c:2
float m_SpecialtyWeight
Определения ActionBase.c:77
string m_Text
Определения ActionBase.c:58
bool m_LockTargetOnUse
Определения ActionBase.c:60
bool m_FullBody
Определения ActionBase.c:61
override void AdjustItemQuantityServer(ActionData action_data)
Определения ActionRepairCarChassis.c:75
void ActionRepairCarChassis()
Определения ActionRepairCarChassis.c:9
int m_LastValidComponentIndex
Определения ActionRepairCarChassis.c:7
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionRepairCarChassis.c:22
int m_CommandUID
Определения AnimatedActionBase.c:143
Определения CivilianSedan.c:2
Определения crafting.c:107
Определения constants.c:659
Определения InventoryItem.c:731
Определения PlayerBaseClient.c:2
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
proto native CGame GetGame()
const int STATE_RUINED
Определения constants.c:846
const int STATE_WORN
Определения constants.c:849