DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ActionGetOutTransport.c
См. документацию.
16
17// client determines animation, server will still deal damage
18class GetOutTransportActionReciveData : ActionReciveData
19{
20 bool m_WasJumpingOutAnim = false;
21}
22
24{
25 //For the two following values -> The HIGHER the value, the LOWER the output
26 const int DMG_FACTOR = 60; //value used to translate impact strength into actual damage (impact strength -> velocity squared)
27 const int SHOCK_FACTOR = 15; //Value used to translate impact strength into actual shock
28
29 //Variables used to determine the different speed levels for bleeding checks
30 const int LOW_SPEED_VALUE = 20;
31 const int HIGH_SPEED_VALUE = 30;
32
33 protected const float CAR_JUMPOUT_THRESHOLD = 8.0; // speed in km/h at which leaving the vehicle is considered a jump out
34 protected const float BOAT_JUMPOUT_THRESHOLD = 5.0;
35
36 const int HEALTH_LOW_SPEED_VALUE = 30;
38
40 {
41 m_StanceMask = DayZPlayerConstants.STANCEMASK_ALL;
42 m_Text = "#leave_vehicle";
43 }
44
46 {
48 return data;
49 }
50
51
53 {
56 }
57
58 override typename GetInputType()
59 {
61 }
62
63 override bool HasProgress()
64 {
65 return false;
66 }
67
68 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
69 {
70 HumanCommandVehicle vehCommand = player.GetCommand_Vehicle();
71 if (vehCommand)
72 {
73 Transport trans = vehCommand.GetTransport();
74 if (trans)
75 {
76 int crewIndex = trans.CrewMemberIndex(player);
77 return crewIndex >= 0 && trans.CrewCanGetThrough(crewIndex) && trans.IsAreaAtDoorFree(crewIndex);
78 }
79 }
80
81 return false;
82 }
83
84 override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = NULL)
85 {
86 if (super.SetupAction(player, target, item, action_data, extra_data))
87 {
88 HumanCommandVehicle vehCommand = action_data.m_Player.GetCommand_Vehicle();
89 if (vehCommand)
90 {
91 Transport trans = vehCommand.GetTransport();
92 if (trans)
93 {
94 GetOutTransportActionData gotActionData = GetOutTransportActionData.Cast(action_data);
95 ProcessGetOutTransportActionData(trans, gotActionData);
96 return true;
97 }
98 }
99 }
100 return false;
101 }
102
103 override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
104 {
105 super.WriteToContext(ctx, action_data);
106
107 GetOutTransportActionData gotActionData = GetOutTransportActionData.Cast(action_data);
108
109 ctx.Write(gotActionData.m_WasJumpingOutAnim);
110 }
111
112 override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
113 {
114 if (!action_recive_data)
115 action_recive_data = new GetOutTransportActionReciveData;
116
117 super.ReadFromContext(ctx, action_recive_data);
118 GetOutTransportActionReciveData action_data_got = GetOutTransportActionReciveData.Cast(action_recive_data);
119
120 if (!ctx.Read(action_data_got.m_WasJumpingOutAnim))
121 return false;
122
123 return true;
124 }
125
126 override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
127 {
128 super.HandleReciveData(action_recive_data, action_data);
129
130 GetOutTransportActionReciveData recive_data_got = GetOutTransportActionReciveData.Cast(action_recive_data);
131 GetOutTransportActionData action_data_got = GetOutTransportActionData.Cast(action_data);
132
133 action_data_got.m_WasJumpingOutAnim = recive_data_got.m_WasJumpingOutAnim;
134 }
135
137 {
138 float speed;
139 if (Car.Cast(veh))
140 {
142 speed = Car.Cast(veh).GetSpeedometerAbsolute();
143 }
144 else if (Boat.Cast(veh))
145 {
147 vector playerPosition = got_action_data.m_Player.PhysicsGetPositionWS();
148 vector velocity = dBodyGetVelocityAt(veh, playerPosition);
149 velocity[1] = 0; // sliding check doesn't use vertical velocity
150 speed = velocity.Normalize();
151 }
152
153 got_action_data.m_Speed = speed;
154 got_action_data.m_Vehicle = veh;
155
156 got_action_data.m_WasJumpingOut = got_action_data.m_Speed > got_action_data.m_JumpingOutThreshold;
157 if (got_action_data.m_Player.IsOwner())
158 got_action_data.m_WasJumpingOutAnim = got_action_data.m_WasJumpingOut;
159 }
160
161 override void OnStart(ActionData action_data)
162 {
163 super.OnStart(action_data);
164
165 HumanCommandVehicle vehCommand = action_data.m_Player.GetCommand_Vehicle();
166 if (vehCommand)
167 {
168 Transport trans = vehCommand.GetTransport();
169 if (trans)
170 {
171 GetOutTransportActionData gotActionData = GetOutTransportActionData.Cast(action_data);
172 ProcessGetOutTransportActionData(trans, gotActionData);
173
174 if (!gotActionData.m_WasJumpingOutAnim)
175 vehCommand.GetOutVehicle();
176 else
177 vehCommand.JumpOutVehicle();
178
179 if (Car.Cast(trans))
180 GetDayZGame().GetBacklit().OnLeaveCar();
181
182 if (action_data.m_Player.GetInventory())
183 action_data.m_Player.GetInventory().LockInventory(LOCK_FROM_SCRIPT);
184 }
185 }
186 }
187
188 override void OnStartServer(ActionData action_data)
189 {
190 super.OnStartServer(action_data);
191
192 HumanCommandVehicle vehCommand = action_data.m_Player.GetCommand_Vehicle();
193 if (vehCommand)
194 {
195 Transport trans = vehCommand.GetTransport();
196 if (trans)
197 {
198 CarScript car;
199 if (Class.CastTo(car, trans))
200 car.ForceUpdateLightsStart();
201 }
202 }
203 }
204
205 void Unhide(PlayerBase player);
206
207 override void OnUpdate(ActionData action_data)
208 {
209 if (action_data.m_State == UA_START)
210 {
211 if (!action_data.m_Player.GetCommand_Vehicle())
212 End(action_data);
213 }
214 }
215
216 override bool CanBeUsedInRestrain()
217 {
218 return true;
219 }
220
221 override bool CanBeUsedInVehicle()
222 {
223 return true;
224 }
225
226 override bool HasTarget()
227 {
228 return false;
229 }
230
231 override int GetActionCategory()
232 {
233 return AC_INTERACT;
234 }
235
236 override void OnEnd(ActionData action_data)
237 {
238 if (action_data.m_Player.GetInventory())
239 action_data.m_Player.GetInventory().UnlockInventory(LOCK_FROM_SCRIPT);
240 }
241
242 override void OnEndServer(ActionData action_data)
243 {
244 super.OnEndServer(action_data);
245
246 GetOutTransportActionData gotActionData = GetOutTransportActionData.Cast(action_data);
247
248 // if server determined it was a jump out, or client played jump out animation, deal damage
249 if (gotActionData.m_WasJumpingOut || gotActionData.m_WasJumpingOutAnim)
250 {
251 gotActionData.m_Player.OnJumpOutVehicleFinish(gotActionData.m_Speed);
252
253 ApplyJumpOutDmg(action_data);
254 }
255
256 CarScript car = CarScript.Cast(gotActionData.m_Vehicle);
257 if (car)
258 car.ForceUpdateLightsEnd();
259 }
260
261 //Manage all jumping out of vehicle damage logic
262 void ApplyJumpOutDmg(ActionData action_data)
263 {
264 GetOutTransportActionData gotActionData = GetOutTransportActionData.Cast(action_data);
265
266 CarScript car;
267 if (Class.CastTo(car, gotActionData.m_Vehicle))
268 car.OnVehicleJumpOutServer(gotActionData);
269
270 BoatScript boat;
271 if (Class.CastTo(boat, gotActionData.m_Vehicle))
272 boat.OnVehicleJumpOutServer(gotActionData);
273 }
274
275 // deprecated
278
280}
const int AC_INTERACT
Определения _constants.c:4
ActionBase ActionData
Определения ActionBase.c:30
GetOutTransportActionData m_WasJumpingOutAnim
class ActionTargets ActionTarget
DayZGame GetDayZGame()
Определения DayZGame.c:3870
proto static native void End()
Finalizes the testing process.
int m_StanceMask
Определения ActionBase.c:62
void ActionBase()
Определения ActionBase.c:82
string m_Text
Определения ActionBase.c:58
ref CCIBase m_ConditionItem
Определения ActionBase.c:64
ref CCTBase m_ConditionTarget
Определения ActionBase.c:65
override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
Определения ActionGetOutTransport.c:126
void ProcessGetOutActionData(Car car, GetOutTransportActionData got_action_data)
void ApplyJumpOutDmg(ActionData action_data)
Определения ActionGetOutTransport.c:262
const int SHOCK_FACTOR
Определения ActionGetOutTransport.c:27
const int LOW_SPEED_VALUE
Определения ActionGetOutTransport.c:30
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
Определения ActionGetOutTransport.c:68
override ActionData CreateActionData()
Определения ActionGetOutTransport.c:45
override void OnStartServer(ActionData action_data)
Определения ActionGetOutTransport.c:188
const float BOAT_JUMPOUT_THRESHOLD
Определения ActionGetOutTransport.c:34
override bool CanBeUsedInVehicle()
Определения ActionGetOutTransport.c:221
void Unhide(PlayerBase player)
override void OnUpdate(ActionData action_data)
Определения ActionGetOutTransport.c:207
void ProcessGetOutTransportActionData(Transport veh, GetOutTransportActionData got_action_data)
Определения ActionGetOutTransport.c:136
const float CAR_JUMPOUT_THRESHOLD
Определения ActionGetOutTransport.c:33
override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
Определения ActionGetOutTransport.c:112
override bool CanBeUsedInRestrain()
Определения ActionGetOutTransport.c:216
override GetInputType()
Определения ActionGetOutTransport.c:58
override void OnStart(ActionData action_data)
Определения ActionGetOutTransport.c:161
const int HEALTH_HIGH_SPEED_VALUE
Определения ActionGetOutTransport.c:37
override bool HasTarget()
Определения ActionGetOutTransport.c:226
override void CreateConditionComponents()
Определения ActionGetOutTransport.c:52
override bool HasProgress()
Определения ActionGetOutTransport.c:63
const int HIGH_SPEED_VALUE
Определения ActionGetOutTransport.c:31
override void OnEndServer(ActionData action_data)
Определения ActionGetOutTransport.c:242
override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data=NULL)
Определения ActionGetOutTransport.c:84
override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
Определения ActionGetOutTransport.c:103
override void OnEnd(ActionData action_data)
Определения ActionGetOutTransport.c:236
void ActionGetOutTransport()
Определения ActionGetOutTransport.c:39
override int GetActionCategory()
Определения ActionGetOutTransport.c:231
const int HEALTH_LOW_SPEED_VALUE
Определения ActionGetOutTransport.c:36
const int DMG_FACTOR
Определения ActionGetOutTransport.c:26
void OnVehicleJumpOutServer(GetOutTransportActionData data)
Определения BoatScript.c:534
Определения BoatScript.c:31
Определения CCINone.c:2
Определения CCTNone.c:2
Определения CivilianSedan.c:2
Super root of all classes in Enforce script.
Определения EnScript.c:11
float m_JumpingOutThreshold
Определения ActionGetOutTransport.c:5
Transport m_Vehicle
Определения ActionGetOutTransport.c:3
proto native Transport GetTransport()
proto native void GetOutVehicle()
proto native void JumpOutVehicle()
Определения human.c:690
Определения 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)
override bool IsAreaAtDoorFree(int currentSeat, float maxAllowedObjHeight=0.5, float horizontalExtents=0.5, float playerHeight=1.7)
Определения Car.c:102
Base native class for all motorized wheeled vehicles.
Определения Boat.c:28
proto float Normalize()
Normalizes vector. Returns length.
Определения EnConvert.c:106
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.
proto native vector dBodyGetVelocityAt(notnull IEntity body, vector globalpos)
const int UA_START
Определения constants.c:467