DayZ 1.30
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 // TODO@RR - rework - store data on Vehicle type instead; consider use of Speed instead of Speedometer
34 protected const float CAR_JUMPOUT_THRESHOLD = 8.0; // speed in km/h at which leaving the vehicle is considered a jump out
35 protected const float BOAT_JUMPOUT_THRESHOLD = 5.0;
36 protected const float MOTO_JUMPOUT_THRESHOLD = 10.0;
37
38 const int HEALTH_LOW_SPEED_VALUE = 30;
40
42 {
43 m_StanceMask = DayZPlayerConstants.STANCEMASK_ALL;
44 m_Text = "#leave_vehicle";
45 }
46
48 {
50 return data;
51 }
52
53
55 {
58 }
59
60 override typename GetInputType()
61 {
63 }
64
65 override bool HasProgress()
66 {
67 return false;
68 }
69
70 override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
71 {
72 HumanCommandVehicle vehCommand = player.GetCommand_Vehicle();
73 if (vehCommand && !vehCommand.IsTransitioning())
74 {
75 Transport trans = vehCommand.GetTransport();
76 if (trans)
77 {
78 int crewIndex = trans.CrewMemberIndex(player);
79 return crewIndex >= 0 && trans.CrewCanGetThrough(crewIndex) && trans.IsAreaAtDoorFreeDiag(crewIndex);
80 }
81 }
82
83 return false;
84 }
85
86 override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data = NULL)
87 {
88 if (super.SetupAction(player, target, item, action_data, extra_data))
89 {
90 HumanCommandVehicle vehCommand = action_data.m_Player.GetCommand_Vehicle();
91 if (vehCommand)
92 {
93 Transport trans = vehCommand.GetTransport();
94 if (trans)
95 {
96 GetOutTransportActionData gotActionData = GetOutTransportActionData.Cast(action_data);
97 ProcessGetOutTransportActionData(trans, gotActionData);
98 return true;
99 }
100 }
101 }
102 return false;
103 }
104
105 override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
106 {
107 super.WriteToContext(ctx, action_data);
108
109 GetOutTransportActionData gotActionData = GetOutTransportActionData.Cast(action_data);
110
111 ctx.Write(gotActionData.m_WasJumpingOutAnim);
112 }
113
114 override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
115 {
116 if (!action_recive_data)
117 action_recive_data = new GetOutTransportActionReciveData;
118
119 super.ReadFromContext(ctx, action_recive_data);
120 GetOutTransportActionReciveData action_data_got = GetOutTransportActionReciveData.Cast(action_recive_data);
121
122 if (!ctx.Read(action_data_got.m_WasJumpingOutAnim))
123 return false;
124
125 return true;
126 }
127
128 override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
129 {
130 super.HandleReciveData(action_recive_data, action_data);
131
132 GetOutTransportActionReciveData recive_data_got = GetOutTransportActionReciveData.Cast(action_recive_data);
133 GetOutTransportActionData action_data_got = GetOutTransportActionData.Cast(action_data);
134
135 action_data_got.m_WasJumpingOutAnim = recive_data_got.m_WasJumpingOutAnim;
136 }
137
139 {
140
141 float speed;
142 if (Car.Cast(veh))
143 {
145 speed = Car.Cast(veh).GetSpeedometerAbsolute();
146 }
147 else if (Boat.Cast(veh))
148 {
150 vector playerPosition = got_action_data.m_Player.PhysicsGetPositionWS();
151 vector velocity = dBodyGetVelocityAt(veh, playerPosition);
152 velocity[1] = 0; // sliding check doesn't use vertical velocity
153 speed = velocity.Normalize();
154 }
155 else if (Motorbike.Cast(veh))
156 {
158 speed = Motorbike.Cast(veh).GetSpeedometerAbsolute();
159 }
160
161 got_action_data.m_Speed = speed;
162 got_action_data.m_Vehicle = veh;
163
164 got_action_data.m_WasJumpingOut = got_action_data.m_Speed > got_action_data.m_JumpingOutThreshold;
165 if (got_action_data.m_Player.IsOwner())
166 got_action_data.m_WasJumpingOutAnim = got_action_data.m_WasJumpingOut;
167 }
168
169 override void OnStart(ActionData action_data)
170 {
171 super.OnStart(action_data);
172
173 HumanCommandVehicle vehCommand = action_data.m_Player.GetCommand_Vehicle();
174 if (vehCommand)
175 {
176 Transport trans = vehCommand.GetTransport();
177 if (trans)
178 {
179 GetOutTransportActionData gotActionData = GetOutTransportActionData.Cast(action_data);
180 ProcessGetOutTransportActionData(trans, gotActionData);
181
182 if (!gotActionData.m_WasJumpingOutAnim)
183 vehCommand.GetOutVehicle();
184 else
185 vehCommand.JumpOutVehicle();
186
187 if (Car.Cast(trans))
188 GetDayZGame().GetBacklit().OnLeaveCar();
189
190 if (action_data.m_Player.GetInventory())
191 action_data.m_Player.GetInventory().LockInventory(LOCK_FROM_SCRIPT);
192 }
193 }
194 }
195
196 override void OnStartServer(ActionData action_data)
197 {
198 super.OnStartServer(action_data);
199 }
200
201 override void OnUpdate(ActionData action_data)
202 {
203 if (action_data.m_State == UA_START)
204 {
205 if (!action_data.m_Player.GetCommand_Vehicle())
206 End(action_data);
207 }
208 }
209
210 override bool CanBeUsedInRestrain()
211 {
212 return true;
213 }
214
215 override bool CanBeUsedInVehicle()
216 {
217 return true;
218 }
219
220 override bool HasTarget()
221 {
222 return false;
223 }
224
225 override int GetActionCategory()
226 {
227 return AC_INTERACT;
228 }
229
230 override void OnEnd(ActionData action_data)
231 {
232 if (action_data.m_Player.GetInventory())
233 action_data.m_Player.GetInventory().UnlockInventory(LOCK_FROM_SCRIPT);
234 }
235
236 override void OnEndServer(ActionData action_data)
237 {
238 super.OnEndServer(action_data);
239
240 GetOutTransportActionData gotActionData = GetOutTransportActionData.Cast(action_data);
241
242 // if server determined it was a jump out, or client played jump out animation, deal damage
243 if (gotActionData.m_WasJumpingOut || gotActionData.m_WasJumpingOutAnim)
244 {
245 gotActionData.m_Player.OnJumpOutVehicleFinish(gotActionData.m_Speed);
246
247 ApplyJumpOutDmg(action_data);
248 }
249 }
250
251 //Manage all jumping out of vehicle damage logic
252 void ApplyJumpOutDmg(ActionData action_data)
253 {
254 GetOutTransportActionData gotActionData = GetOutTransportActionData.Cast(action_data);
255
256 CarScript car;
257 if (Class.CastTo(car, gotActionData.m_Vehicle))
258 car.OnVehicleJumpOutServer(gotActionData);
259
260 BoatScript boat;
261 if (Class.CastTo(boat, gotActionData.m_Vehicle))
262 boat.OnVehicleJumpOutServer(gotActionData);
263 }
264
265 // deprecated
268
269 [Obsolete("no replacement")]
271
272 [Obsolete("no replacement")]
273 void Unhide(PlayerBase player);
274}
string m_Text
Определения ActionBase.c:57
ref CCIBase m_ConditionItem
Определения ActionBase.c:63
ref CCTBase m_ConditionTarget
Определения ActionBase.c:64
void ActionBase()
Определения ActionBase.c:82
int m_StanceMask
Определения ActionBase.c:61
GetOutTransportActionData m_WasJumpingOutAnim
void ActionTarget(Object object, Object parent, int componentIndex, vector cursorHitPos, float utility, string surfaceName="")
Определения ActionTargets.c:125
DayZGame GetDayZGame()
Определения DayZGame.c:4076
proto static native void End()
Finalizes the testing process.
PlayerBase m_Player
Определения ActionBase.c:40
int m_State
Определения ActionBase.c:38
void ActionData()
Определения ActionBase.c:23
Определения ActionBase.c:22
override void HandleReciveData(ActionReciveData action_recive_data, ActionData action_data)
Определения ActionGetOutTransport.c:128
void ProcessGetOutActionData(Car car, GetOutTransportActionData got_action_data)
void ApplyJumpOutDmg(ActionData action_data)
Определения ActionGetOutTransport.c:252
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:70
override ActionData CreateActionData()
Определения ActionGetOutTransport.c:47
override void OnStartServer(ActionData action_data)
Определения ActionGetOutTransport.c:196
const float BOAT_JUMPOUT_THRESHOLD
Определения ActionGetOutTransport.c:35
override bool CanBeUsedInVehicle()
Определения ActionGetOutTransport.c:215
void Unhide(PlayerBase player)
override void OnUpdate(ActionData action_data)
Определения ActionGetOutTransport.c:201
void ProcessGetOutTransportActionData(Transport veh, GetOutTransportActionData got_action_data)
Определения ActionGetOutTransport.c:138
const float CAR_JUMPOUT_THRESHOLD
Определения ActionGetOutTransport.c:34
override bool ReadFromContext(ParamsReadContext ctx, out ActionReciveData action_recive_data)
Определения ActionGetOutTransport.c:114
override bool CanBeUsedInRestrain()
Определения ActionGetOutTransport.c:210
override GetInputType()
Определения ActionGetOutTransport.c:60
override void OnStart(ActionData action_data)
Определения ActionGetOutTransport.c:169
const int HEALTH_HIGH_SPEED_VALUE
Определения ActionGetOutTransport.c:39
override bool HasTarget()
Определения ActionGetOutTransport.c:220
override void CreateConditionComponents()
Определения ActionGetOutTransport.c:54
const float MOTO_JUMPOUT_THRESHOLD
Определения ActionGetOutTransport.c:36
override bool HasProgress()
Определения ActionGetOutTransport.c:65
const int HIGH_SPEED_VALUE
Определения ActionGetOutTransport.c:31
override void OnEndServer(ActionData action_data)
Определения ActionGetOutTransport.c:236
override bool SetupAction(PlayerBase player, ActionTarget target, ItemBase item, out ActionData action_data, Param extra_data=NULL)
Определения ActionGetOutTransport.c:86
override void WriteToContext(ParamsWriteContext ctx, ActionData action_data)
Определения ActionGetOutTransport.c:105
override void OnEnd(ActionData action_data)
Определения ActionGetOutTransport.c:230
void ActionGetOutTransport()
Определения ActionGetOutTransport.c:41
override int GetActionCategory()
Определения ActionGetOutTransport.c:225
const int HEALTH_LOW_SPEED_VALUE
Определения ActionGetOutTransport.c:38
const int DMG_FACTOR
Определения ActionGetOutTransport.c:26
void OnVehicleJumpOutServer(GetOutTransportActionData data)
Определения BoatScript.c:598
Определения BoatScript.c:42
Определения CCINone.c:2
Определения CCTNone.c:2
Определения CarScript.c:95
Определения Truck_02.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()
bool IsTransitioning()
Определения human.c:735
proto native void GetOutVehicle()
proto native void JumpOutVehicle()
Определения human.c:712
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)
Native class for boats - handles physics simulation.
Определения Boat.c:29
proto float Normalize()
Normalizes vector. Returns length.
Определения EnConvert.c:119
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.
void Obsolete(string msg="")
Определения EnScript.c:371
proto native vector dBodyGetVelocityAt(notnull IEntity body, vector globalpos)
const int UA_START
Определения 3_Game/DayZ/constants.c:501