DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionRepairMotorbikePart.c
См. документацию.
2class RepairMotorbikePartActionData : RepairVehiclePartActionData {}
3
4class ActionRepairMotorbikePartCB : ActionContinuousBaseCB
5{
6 override void CreateActionComponent()
7 {
8 m_ActionData.m_ActionComponent = new CAContinuousRepeat(UATimeSpent.BASEBUILDING_REPAIR_FAST);
9 }
10}
11
13{
15 {
16 m_CallbackClass = ActionRepairMotorbikePartCB;
17 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_INTERACT;
18 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT;
19 m_FullBody = true;
20 m_LockTargetOnUse = false;
21 m_Text = "#repair";
22 }
23
29
31 {
32 return false;
33 }
34
35 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
36 {
37 Object targetObject = target.GetObject();
38 Object targetParent = target.GetParent();
39 MotorbikePart motorbikePart = MotorbikePart.Cast(targetObject);
40
41 if (!motorbikePart || !player)
42 return false;
43
44 if (g_Game.IsMultiplayer() && g_Game.IsServer())
45 return true;
46
47 if (motorbikePart)
48 {
49 if (targetParent != null)
50 {
52 bool isPresent = motorbikePart.GetInventory().GetCurrentInventoryLocation(loc);
53
54 if (!isPresent || loc.GetSlot() == -1)
55 return false;
56 }
57
58 int zoneHP = motorbikePart.GetHealthLevel("");
59 return zoneHP > GameConstants.STATE_WORN && zoneHP < GameConstants.STATE_RUINED;
60 }
61
62 return false;
63 }
64
65 override void OnFinishProgressServer(ActionData action_data)
66 {
67 Object tgObject = action_data.m_Target.GetObject();
68
69 string damageZone = RepairMotorbikePartActionData.Cast(action_data).m_DamageZone;
70 if (!g_Game.IsMultiplayer())
71 damageZone = m_CurrentDamageZone;
72
73 if (tgObject)
74 {
75 MotorbikePart motorbikePart = MotorbikePart.Cast(tgObject);
76 if (motorbikePart)
77 {
78 int newDmgLevel = Math.Clamp(motorbikePart.GetHealthLevel(damageZone) - 1, GameConstants.STATE_WORN, GameConstants.STATE_RUINED);
79 float zoneMax = motorbikePart.GetMaxHealth("", "");
80 float randomValue = Math.RandomFloatInclusive(zoneMax * 0.05, zoneMax * 0.15);
81
82 switch (newDmgLevel)
83 {
85 motorbikePart.SetHealth("", "", (zoneMax * GameConstants.DAMAGE_RUINED_VALUE) + randomValue);
86 break;
87
89 motorbikePart.SetHealth("", "", (zoneMax * GameConstants.DAMAGE_BADLY_DAMAGED_VALUE) + randomValue);
90 break;
91
93 motorbikePart.SetHealth("", "", (zoneMax * GameConstants.DAMAGE_DAMAGED_VALUE) + randomValue);
94 break;
95
96 default:
97 break;
98 }
99
100 if (action_data.m_MainItem.HasQuantity())
101 {
102 if (action_data.m_MainItem.GetQuantity() > 1)
103 {
104 int qnt = action_data.m_MainItem.GetQuantity();
105 qnt -= action_data.m_MainItem.GetQuantityMax() * 0.25;
106 action_data.m_MainItem.SetQuantity(qnt);
107 }
108 else
109 action_data.m_MainItem.Delete();
110 }
111 }
112 }
113 }
114
116 {
117 RepairMotorbikePartActionData actionData = new RepairMotorbikePartActionData();
118 return actionData;
119 }
120
121 override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
122 {
123 super.WriteToContext(ctx, action_data);
124 RepairMotorbikePartActionData repairActionData;
125
126 if (HasTarget() && Class.CastTo(repairActionData, action_data))
127 {
128 repairActionData.m_DamageZone = m_CurrentDamageZone;
129 ctx.Write(repairActionData.m_DamageZone);
130 }
131 }
132
133 override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
134 {
135 if (!action_recive_data)
136 action_recive_data = new RepairMotorbikePartReceiveData();
137
138 super.ReadFromContext(ctx, action_recive_data);
139 RepairMotorbikePartReceiveData receiveDataRepair = RepairMotorbikePartReceiveData.Cast(action_recive_data);
140
141 if (HasTarget())
142 {
143 string zone;
144 if (!ctx.Read(zone))
145 return false;
146
147 receiveDataRepair.m_DamageZoneRecived = zone;
148 }
149
150 return true;
151 }
152
153 override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
154 {
155 super.HandleReciveData(action_recive_data, action_data);
156
157 RepairMotorbikePartReceiveData receiveDataRepair = RepairMotorbikePartReceiveData.Cast(action_recive_data);
158 RepairMotorbikePartActionData.Cast(action_data).m_DamageZone = receiveDataRepair.m_DamageZoneRecived;
159 }
160}
bool m_FullBody
Определения ActionBase.c:60
string m_Text
Определения ActionBase.c:57
bool HasTarget()
Определения ActionBase.c:259
bool m_LockTargetOnUse
Определения ActionBase.c:59
ref CCIBase m_ConditionItem
Определения ActionBase.c:63
ref CCTBase m_ConditionTarget
Определения ActionBase.c:64
int m_StanceMask
Определения ActionBase.c:61
ActionEat CreateActionComponent
Определения ActionEat.c:39
void ActionTarget(Object object, Object parent, int componentIndex, vector cursorHitPos, float utility, string surfaceName="")
Определения ActionTargets.c:125
DayZGame g_Game
Определения DayZGame.c:4074
ref ActionTarget m_Target
Определения ActionBase.c:39
ItemBase m_MainItem
Определения ActionBase.c:35
Определения ActionBase.c:22
override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
Определения ActionRepairMotorbikePart.c:153
override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
Определения ActionRepairMotorbikePart.c:133
override void OnFinishProgressServer(ActionData action_data)
Определения ActionRepairMotorbikePart.c:65
void ActionRepairMotorbikePart()
Определения ActionRepairMotorbikePart.c:14
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionRepairMotorbikePart.c:35
override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
Определения ActionRepairMotorbikePart.c:121
override void CreateConditionComponents()
Определения ActionRepairMotorbikePart.c:24
override bool CanBeUsedWithBrokenLegs()
Определения ActionRepairMotorbikePart.c:30
override ActionData CreateActionData()
Определения ActionRepairMotorbikePart.c:115
int m_CommandUID
Определения AnimatedActionBase.c:147
Определения CCINonRuined.c:2
Определения CCTCursor.c:2
Super root of all classes in Enforce script.
Определения EnScript.c:11
proto native int GetSlot()
returns slot id if current type is Attachment
InventoryLocation.
Определения InventoryLocation.c:30
override bool SetQuantity(float value, bool destroy_config=true, bool destroy_forced=false, bool allow_client=false, bool clamp_to_stack_max=true)
Определения PileOfBricks.c:64
Определения EnMath.c:7
Определения ObjectTyped.c:2
Определения PlayerBaseClient.c:2
proto bool Write(void value_out)
proto bool Read(void value_in)
const float REPAIR
Определения ActionConstants.c:115
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
Serializer ParamsReadContext
Определения gameplay.c:15
Serializer ParamsWriteContext
Определения gameplay.c:16
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
const float DAMAGE_BADLY_DAMAGED_VALUE
Определения 3_Game/DayZ/constants.c:924
const float DAMAGE_RUINED_VALUE
Определения 3_Game/DayZ/constants.c:925
const float DAMAGE_DAMAGED_VALUE
Определения 3_Game/DayZ/constants.c:923
const int STATE_RUINED
Определения 3_Game/DayZ/constants.c:909
const int STATE_WORN
Определения 3_Game/DayZ/constants.c:912
const int STATE_DAMAGED
Определения 3_Game/DayZ/constants.c:911
const int STATE_BADLY_DAMAGED
Определения 3_Game/DayZ/constants.c:910
static float RandomFloatInclusive(float min, float max)
Returns a random float number between and min [inclusive] and max [inclusive].
Определения EnMath.c:106
static proto float Clamp(float value, float min, float max)
Clamps 'value' to 'min' if it is lower than 'min', or to 'max' if it is higher than 'max'.