DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionRepairTent.c
См. документацию.
1class RepairTentActionReciveData : ActionReciveData
2{
4}
5
6class RepairTentActionData : ActionData
7{
9}
10
18
20{
21 typename m_LastValidType; //legacy stuff
23 int m_LastValidComponentIndex = -1; //legacy stuff
24
26 {
28 m_SpecialtyWeight = UASoftSkillsWeight.PRECISE_LOW;
29
30 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_INTERACT;
31 m_FullBody = true;
32 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
33 m_Text = "#repair";
34 }
35
41
42 override bool IsUsingProxies()
43 {
44 return true;
45 }
46
47 override bool HasTarget()
48 {
49 return true;
50 }
51
52 override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
53 {
54 Object targetObject = target.GetObject();
55 Object targetParent = target.GetParent();
56 if ( !targetParent || !targetParent.IsInherited(TentBase) )
57 return false;
58
59 if ( player && targetObject && targetParent )
60 {
61 array<string> selections = new array<string>;
62 PluginRepairing module_repairing;
63 Class.CastTo(module_repairing, GetPlugin(PluginRepairing));
64 targetObject.GetActionComponentNameList(target.GetComponentIndex(), selections, "view");
65 TentBase tent = TentBase.Cast( targetParent );
66
67 string damageZone = "";
68
69 for (int s = 0; s < selections.Count(); s++)
70 {
71 if ( DamageSystem.GetDamageZoneFromComponentName(tent, selections[s], damageZone) ) //NOTE: relevant fire geometry and view geometry selection names MUST match in order to get a valid damage zone
72 {
73 //Print("selections[s]: " + selections[s] + " | damageZone: " + damageZone);
74 break;
75 }
76 }
77
78 if ( damageZone != "" )
79 {
80 if (module_repairing.CanRepair(item,tent,damageZone))
81 {
82 m_CurrentDamageZone = damageZone;
83 return true;
84 }
85 }
86 }
87 return false;
88 }
89
90 override void OnFinishProgressServer( ActionData action_data )
91 {
92 Object targetObject = action_data.m_Target.GetObject();
93 Object targetParent = action_data.m_Target.GetParent();
94
95 string damageZone = RepairTentActionData.Cast(action_data).m_DamageZone;
96 if (!GetGame().IsMultiplayer())
97 damageZone = m_CurrentDamageZone;
98
99 if ( targetParent && targetParent.IsInherited(TentBase) && damageZone != "" )
100 {
101 TentBase tent = TentBase.Cast( targetParent );
102 PluginRepairing module_repairing;
103 Class.CastTo(module_repairing, GetPlugin(PluginRepairing));
104
105 RepairDamageTransfer(action_data.m_Player,action_data.m_MainItem,tent,m_SpecialtyWeight,damageZone);
106 module_repairing.Repair(action_data.m_Player,action_data.m_MainItem,tent,m_SpecialtyWeight,damageZone);
107 }
108 }
109
111 {
112 RepairTentActionData action_data = new RepairTentActionData;
113 return action_data;
114 }
115
116 override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
117 {
118 super.WriteToContext(ctx, action_data);
119 RepairTentActionData repair_action_data;
120
121 if( HasTarget() && Class.CastTo(repair_action_data,action_data) )
122 {
123 repair_action_data.m_DamageZone = m_CurrentDamageZone;
124 ctx.Write(repair_action_data.m_DamageZone);
125 }
126 }
127
128 override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data )
129 {
130 if(!action_recive_data)
131 {
132 action_recive_data = new RepairTentActionReciveData;
133 }
134 super.ReadFromContext(ctx, action_recive_data);
135 RepairTentActionReciveData recive_data_repair = RepairTentActionReciveData.Cast(action_recive_data);
136
137 if( HasTarget() )
138 {
139 string zone;
140 if ( !ctx.Read(zone) )
141 return false;
142
143 recive_data_repair.m_DamageZoneRecived = zone;
144 }
145 return true;
146 }
147
148 override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
149 {
150 super.HandleReciveData(action_recive_data, action_data);
151
152 RepairTentActionReciveData recive_data_repair = RepairTentActionReciveData.Cast(action_recive_data);
153 RepairTentActionData.Cast(action_data).m_DamageZone = recive_data_repair.m_DamageZoneRecived;
154 }
155
156 void RepairDamageTransfer(PlayerBase player, ItemBase repair_kit, ItemBase item, float specialty_weight, string damage_zone = "") //hack; mirrors current config setup, replace with either native DamageSystem methods, or script-side DamageSystem systemic solution
157 {
158 float transfer_to_global_coef = 0;
159 array<string> transfer_zones = new array<string>;
160 string path = "" + CFG_VEHICLESPATH + " " + item.GetType() + " DamageSystem DamageZones " + damage_zone;
161 PluginRepairing module_repairing;
162 Class.CastTo(module_repairing, GetPlugin(PluginRepairing));
163
164 GetGame().ConfigGetTextArray("" + path + " transferToZonesNames", transfer_zones);
165
166 for (int i = 0; i < transfer_zones.Count(); i++)
167 {
168 transfer_to_global_coef += GetGame().ConfigGetFloat("" + path + " Health transferToGlobalCoef");
169 if (transfer_zones.Get(i) == damage_zone)
170 continue;
171
172 module_repairing.Repair(player,repair_kit,item,specialty_weight,transfer_zones.Get(i),false);
173 }
174
175 //finally, repairs global
176 if (transfer_to_global_coef > 0)
177 {
178 module_repairing.Repair(player,repair_kit,item,specialty_weight,"",false);
179 }
180 }
181};
ActionBase ActionData
Определения ActionBase.c:30
RepairTentActionReciveData m_DamageZone
class ActionTargets ActionTarget
string path
Определения OptionSelectorMultistate.c:142
PluginBase GetPlugin(typename plugin_type)
Определения PluginManager.c:316
float m_SpecialtyWeight
Определения ActionBase.c:77
int m_StanceMask
Определения ActionBase.c:62
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
override void OnFinishProgressServer(ActionData action_data)
Определения ActionRepairTent.c:90
override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
Определения ActionRepairTent.c:116
override ActionData CreateActionData()
Определения ActionRepairTent.c:110
override void CreateConditionComponents()
Определения ActionRepairTent.c:36
void RepairDamageTransfer(PlayerBase player, ItemBase repair_kit, ItemBase item, float specialty_weight, string damage_zone="")
Определения ActionRepairTent.c:156
override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
Определения ActionRepairTent.c:128
string m_CurrentDamageZone
Определения ActionRepairTent.c:22
int m_LastValidComponentIndex
Определения ActionRepairTent.c:23
override bool HasTarget()
Определения ActionRepairTent.c:47
void ActionRepairTent()
Определения ActionRepairTent.c:25
m_LastValidType
Определения ActionRepairTent.c:21
override bool IsUsingProxies()
Определения ActionRepairTent.c:42
override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
Определения ActionRepairTent.c:148
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionRepairTent.c:52
override void CreateActionComponent()
Определения ActionRepairTent.c:13
int m_CommandUID
Определения AnimatedActionBase.c:143
Определения CCINonRuined.c:2
Определения CCTCursorParent.c:2
proto native float ConfigGetFloat(string path)
Get float value from config on path.
proto native void ConfigGetTextArray(string path, out TStringArray values)
Get array of strings from config on path.
Super root of all classes in Enforce script.
Определения EnScript.c:11
Определения InventoryItem.c:731
Определения ObjectTyped.c:2
Определения PlayerBaseClient.c:2
string m_DamageZoneRecived
Определения ActionRepairTent.c:3
proto bool Write(void value_out)
proto bool Read(void value_in)
Определения CarTent.c:2
const float SMALL
Определения ActionConstants.c:111
const float BASEBUILDING_REPAIR_FAST
Определения ActionConstants.c:67
Определения ActionConstants.c:28
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
Serializer ParamsReadContext
Определения gameplay.c:15
proto native CGame GetGame()
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 string CFG_VEHICLESPATH
Определения constants.c:220