224 {
225 if ( player && source )
226 {
227 string playerPrefix =
GetPlayerPrefix( player , player.GetIdentity() ) +
"[HP: " + player.GetHealth().ToString() +
"]";
228 string playerPrefix2;
230 PlayerBase playerSource;
231
232 if ( source.IsPlayer() )
233 playerSource = PlayerBase.Cast( source );
234 else
235 playerSource = PlayerBase.Cast( source.GetHierarchyParent() );
236
237 if (playerSource)
238 playerPrefix2 =
GetPlayerPrefix( playerSource , playerSource.GetIdentity() );
239
240 switch ( damageType )
241 {
243
244 if (source.IsZombie() || source.IsAnimal())
245 {
247 break;
248
250
252 }
253 else if (source.IsPlayer())
254 {
256 }
257 else if ( playerSource && (source.
IsMeleeWeapon() || source.IsWeapon()))
258 {
260
262 }
263 else
264 {
266
268 }
269 break;
270
272
273 if ( source.IsWeapon() && playerSource )
274 {
276 m_Distance = vector.Distance( player.GetPosition(), playerSource.GetPosition() );
277
279 }
280 else
281 {
283
285 }
286 break;
287
289
290 LogPrint( playerPrefix +
" hit by explosion (" + ammo +
")" );
291 break;
292
294
295 LogPrint( playerPrefix +
" stunned by " + ammo );
296 break;
297
299 float globalHealthDamage = damageResult.
GetDamage(
"",
"Health");
301 {
302 if (globalHealthDamage > 0.0)
303 LogPrint(playerPrefix +
" hit by " + ammo);
304 }
305 else if ( source.GetType() == "AreaDamageManager" )
306 {
308 if ( parent )
309 {
310 LogPrint( playerPrefix +
" hit by " + parent.GetType() +
" with " + ammo );
311 }
312 }
313 else if (source.IsTransport())
314 {
315 string vehicle = source.GetType();
316 Transport transport = Transport.Cast(source);
317 Human driver = transport.CrewDriver();
318 playerSource = PlayerBase.Cast(driver);
319 if (playerSource)
320 playerPrefix2 =
GetPlayerPrefix( playerSource , playerSource.GetIdentity() );
321 else
322 playerPrefix2 = "NO DRIVER";
323
324 LogPrint( playerPrefix +
" hit by " + playerPrefix2 +
" with " + ammo +
" (" + vehicle +
")" );
325 }
326 else
327 {
329
331 }
332 break;
333
334 default:
335
336 LogPrint(
"DEBUG: PlayerHitBy() unknown damageType: " + ammo );
337 break;
338 }
339 }
340 else
341 {
342 LogPrint(
"DEBUG: player/source does not exist");
343 }
344 }
DamageType
exposed from C++ (do not change)
void DayZPlayerImplementFallDamage(DayZPlayer pPlayer)
class BoxCollidingParams component
ComponentInfo for BoxCollidingResult.
override bool IsMeleeWeapon()
void LogPrint(string message)
string GetPlayerPrefix(PlayerBase player, PlayerIdentity identity)
string GetHitMessage(TotalDamageResult damageResult, int component, string zone, string ammo)
proto native float GetDamage(string zoneName, string healthType)