DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionMountBarbedWire.c
См. документацию.
1class BarbedWireActionReceiveData : ActionReciveData
2{
3 string m_SlotName;
4}
5
6class BarbedWireActionData : ActionData
7{
8 string m_SlotName;
9}
10
18
20{
21 float m_DamageAmount; //DEPRECATED
22 string m_SlotName; //DEPRECATED
23
25 {
27 m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_INTERACT;
28 m_FullBody = true;
29 m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT;
30
31 m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_HIGH;
32 m_Text = "#mount";
33 }
34
40
41 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
42 {
43 BaseBuildingBase base_building = BaseBuildingBase.Cast(target.GetObject());
44 if (base_building && base_building.CanUseConstruction() && base_building.CanUseConstructionBuild())
45 {
46 if (!base_building.IsPlayerInside(player,""))
47 return false;
48
49 BarbedWire barbed_wire = GetBarbedWire(target);
50 return (barbed_wire && !barbed_wire.IsMounted() && !barbed_wire.IsRuined());
51 }
52
53 return false;
54 }
55
57 {
58 BarbedWireActionData action_data = new BarbedWireActionData();
59 return action_data;
60 }
61
62 override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = null)
63 {
64 if (super.SetupAction(player, target, item, action_data, extra_data))
65 {
66 #ifndef SERVER
67 BarbedWireActionData actionDataBW = BarbedWireActionData.Cast(action_data);
68 actionDataBW.m_SlotName = GetZoneSelection(target);
69 #endif
70
71 return true;
72 }
73
74 return false;
75 }
76
77 override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
78 {
79 super.WriteToContext(ctx, action_data);
80 BarbedWireActionData actionDataBW
81
82 if (Class.CastTo(actionDataBW,action_data))
83 {
84 ctx.Write(actionDataBW.m_SlotName);
85 }
86 }
87
88 override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data )
89 {
90 if (!action_recive_data)
91 {
92 action_recive_data = new BarbedWireActionReceiveData;
93 }
94 super.ReadFromContext(ctx, action_recive_data);
95 BarbedWireActionReceiveData receiveDataBW = BarbedWireActionReceiveData.Cast(action_recive_data);
96
97 string slotName;
98 if (!ctx.Read(slotName))
99 return false;
100 receiveDataBW.m_SlotName = slotName;
101
102 return true;
103 }
104
105 override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
106 {
107 super.HandleReciveData(action_recive_data, action_data);
108
109 BarbedWireActionReceiveData receiveDataBW = BarbedWireActionReceiveData.Cast(action_recive_data);
110 BarbedWireActionData.Cast(action_data).m_SlotName = receiveDataBW.m_SlotName;
111 }
112
113 override void OnStartServer(ActionData action_data)
114 {
115 super.OnStartServer(action_data);
116
117 BarbedWire wire = GetBarbedWire(action_data.m_Target);
118 if (wire && wire.GetLoopDeploySoundset() != string.Empty)
119 wire.StartItemSoundServer(SoundConstants.ITEM_DEPLOY_LOOP);
120 }
121
122 override void OnEndServer(ActionData action_data)
123 {
124 BarbedWire wire = GetBarbedWire(action_data.m_Target);
125 if (wire && wire.GetLoopDeploySoundset() != string.Empty)
126 wire.StopItemSoundServer(SoundConstants.ITEM_DEPLOY_LOOP);
127
128 super.OnEndServer(action_data);
129 }
130
131 override void OnFinishProgressServer(ActionData action_data)
132 {
133 BarbedWireActionData actionDataBW = BarbedWireActionData.Cast(action_data);
134 BaseBuildingBase base_building = BaseBuildingBase.Cast(actionDataBW.m_Target.GetObject());
135
136 //mount and refresh parent
137 BarbedWire wire = BarbedWire.Cast(base_building.FindAttachmentBySlotName(actionDataBW.m_SlotName));
138 wire.SetMountedState(true);
139
140 if (wire.GetDeploySoundset() != string.Empty)
141 wire.StartItemSoundServer(SoundConstants.ITEM_DEPLOY);
142
143 //solution for DamageSystem's case sensitivity
144 string zone = "invalid";
145 array<string> zones = new array<string>;
146 zones.Copy(base_building.GetEntityDamageZoneMap().GetKeyArray());
147
148 string tmp = "";
149 string test = "";
150 for (int i = 0; i < zones.Count(); i++)
151 {
152 tmp = zones.Get(i);
153 test = tmp;
154 test.ToLower();
155
156 if (test == actionDataBW.m_SlotName)
157 {
158 zone = tmp;
159 break;
160 }
161 }
162
163 base_building.SetHealth01(zone,"Health",wire.GetHealth01("","Health")); //attachment slot names and damagezone names must match
164 }
165
166 BarbedWire GetBarbedWire(ActionTarget target)
167 {
168 BaseBuildingBase base_building = BaseBuildingBase.Cast(target.GetObject());
169 BarbedWire wire;
170 if (Class.CastTo(wire,base_building.FindAttachmentBySlotName(GetZoneSelection(target))))
171 {
172 return wire;
173 }
174
175 return null;
176 }
177
179 {
180 BaseBuildingBase base_building = BaseBuildingBase.Cast(target.GetObject());
181 return base_building.GetActionComponentName(target.GetComponentIndex());
182 }
183
184 override string GetAdminLogMessage(ActionData action_data)
185 {
186 string message = string.Format("Player %1 Mounted BarbedWire on %2", action_data.m_Player, action_data.m_Target.GetObject().ClassName());
187 return message;
188 }
189}
ActionBase ActionData
Определения ActionBase.c:30
BarbedWireActionReceiveData m_SlotName
class ActionTargets ActionTarget
PlayerSpawnPreset slotName
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 WriteToContext(ParamsWriteContext ctx, ActionData action_data)
Определения ActionMountBarbedWire.c:77
override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
Определения ActionMountBarbedWire.c:88
override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
Определения ActionMountBarbedWire.c:105
override void OnEndServer(ActionData action_data)
Определения ActionMountBarbedWire.c:122
float m_DamageAmount
Определения ActionMountBarbedWire.c:21
override void OnFinishProgressServer(ActionData action_data)
Определения ActionMountBarbedWire.c:131
override string GetAdminLogMessage(ActionData action_data)
Определения ActionMountBarbedWire.c:184
override ActionData CreateActionData()
Определения ActionMountBarbedWire.c:56
void ActionMountBarbedWire()
Определения ActionMountBarbedWire.c:24
override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data=null)
Определения ActionMountBarbedWire.c:62
string GetZoneSelection(ActionTarget target)
Определения ActionMountBarbedWire.c:178
override void CreateConditionComponents()
Определения ActionMountBarbedWire.c:35
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionMountBarbedWire.c:41
BarbedWire GetBarbedWire(ActionTarget target)
Определения ActionMountBarbedWire.c:166
string m_SlotName
Определения ActionMountBarbedWire.c:22
override void OnStartServer(ActionData action_data)
Определения ActionMountBarbedWire.c:113
override void CreateActionComponent()
Определения ActionMountBarbedWire.c:13
int m_CommandUID
Определения AnimatedActionBase.c:143
override bool IsPlayerInside(PlayerBase player, string selection)
Определения Fence.c:615
override bool CanUseConstructionBuild()
Определения Fence.c:718
Определения Fence.c:2
Определения CCINonRuined.c:2
Определения CCTNonRuined.c:2
Super root of all classes in Enforce script.
Определения EnScript.c:11
Определения InventoryItem.c:731
Base Param Class with no parameters. Used as general purpose parameter overloaded with Param1 to Para...
Определения param.c:12
Определения PlayerBaseClient.c:2
proto bool Write(void value_out)
proto bool Read(void value_in)
const float BASEBUILDING
Определения ActionConstants.c:116
const float DEFAULT_CONSTRUCT
Определения ActionConstants.c:33
Определения ActionConstants.c:28
Result for an object found in CGame.IsBoxCollidingGeometryProxy.
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.
static proto string Format(string fmt, void param1=NULL, void param2=NULL, void param3=NULL, void param4=NULL, void param5=NULL, void param6=NULL, void param7=NULL, void param8=NULL, void param9=NULL)
Gets n-th character from string.
proto int ToLower()
Changes string to lowercase. Returns length.