DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ PlayerHitBy()

void PluginBase::PlayerHitBy ( TotalDamageResult damageResult,
int damageType,
PlayerBase player,
EntityAI source,
int component,
string dmgZone,
string ammo )
inlineprotected

См. определение в файле PluginAdminLog.c строка 223

224 {
225 if ( player && source )
226 {
227 string playerPrefix = GetPlayerPrefix( player , player.GetIdentity() ) + "[HP: " + player.GetHealth().ToString() + "]";
228 string playerPrefix2;
229 m_HitMessage = GetHitMessage( damageResult, component, dmgZone, ammo );
230 PlayerBase playerSource;
231
232 if ( source.IsPlayer() )// Fists
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 {
242 case DamageType.CLOSE_COMBAT: // Player melee, animals, infected
243
244 if (source.IsZombie() || source.IsAnimal()) // Infected & Animals
245 {
246 if (m_HitFilter == 1)
247 break;
248
249 m_DisplayName = source.GetDisplayName();
250
251 LogPrint( playerPrefix + " hit by " + m_DisplayName + m_HitMessage );
252 }
253 else if (source.IsPlayer())// Fists
254 {
255 LogPrint( playerPrefix + " hit by " + playerPrefix2 + m_HitMessage );
256 }
257 else if ( playerSource && (source.IsMeleeWeapon() || source.IsWeapon())) // Melee weapons
258 {
259 m_ItemInHands = source.GetDisplayName();
260
261 LogPrint( playerPrefix + " hit by " + playerPrefix2 + m_HitMessage + " with " + m_ItemInHands );
262 }
263 else
264 {
265 m_DisplayName = source.GetType();
266
267 LogPrint( playerPrefix + " hit by " + m_DisplayName + m_HitMessage );
268 }
269 break;
270
271 case DamageType.FIRE_ARM: // Player ranged
272
273 if ( source.IsWeapon() && playerSource )
274 {
275 m_ItemInHands = source.GetDisplayName();
276 m_Distance = vector.Distance( player.GetPosition(), playerSource.GetPosition() );
277
278 LogPrint( playerPrefix + " hit by " + playerPrefix2 + m_HitMessage + " with " + m_ItemInHands + " from " + m_Distance + " meters ");
279 }
280 else
281 {
282 m_DisplayName = source.GetType();
283
284 LogPrint( playerPrefix + " hit by " + m_DisplayName + m_HitMessage );
285 }
286 break;
287
288 case DamageType.EXPLOSION: // Explosion
289
290 LogPrint( playerPrefix + " hit by explosion (" + ammo + ")" );
291 break;
292
293 case DamageType.STUN: // unused atm
294
295 LogPrint( playerPrefix + " stunned by " + ammo );
296 break;
297
298 case DamageType.CUSTOM: // Others (Vehicle hit, fall, fireplace, barbed wire ...)
299 float globalHealthDamage = damageResult.GetDamage("", "Health");
300 if (ammo == DayZPlayerImplementFallDamage.FALL_DAMAGE_AMMO_HEALTH || ammo == DayZPlayerImplementFallDamage.FALL_DAMAGE_AMMO_SHOCK || ammo == DayZPlayerImplementFallDamage.FALL_DAMAGE_AMMO_HEALTH_OTHER_ATTACHMENTS)
301 {
302 if (globalHealthDamage > 0.0)
303 LogPrint(playerPrefix + " hit by " + ammo);
304 }
305 else if ( source.GetType() == "AreaDamageManager" )
306 {
307 EntityAI parent = EntityAI.Cast( source );
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 {
328 m_DisplayName = source.GetType();
329
330 LogPrint( playerPrefix + " hit by " + m_DisplayName + " with " + ammo );
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 }
class LogManager EntityAI
DamageType
exposed from C++ (do not change)
Определения DamageSystem.c:11
void DayZPlayerImplementFallDamage(DayZPlayer pPlayer)
Определения DayZPlayerImplementFallDamage.c:73
class BoxCollidingParams component
ComponentInfo for BoxCollidingResult.
override bool IsMeleeWeapon()
void LogPrint(string message)
Определения PluginAdminLog.c:62
string m_DisplayName
Определения PluginAdminLog.c:9
string GetPlayerPrefix(PlayerBase player, PlayerIdentity identity)
Определения PluginAdminLog.c:67
string m_HitMessage
Определения PluginAdminLog.c:10
string m_ItemInHands
Определения PluginAdminLog.c:14
string GetHitMessage(TotalDamageResult damageResult, int component, string zone, string ammo)
Определения PluginAdminLog.c:103
float m_Distance
Определения PluginAdminLog.c:11
int m_HitFilter
Определения PluginAdminLog.c:21
proto native float GetDamage(string zoneName, string healthType)

Перекрестные ссылки component, DayZPlayerImplementFallDamage(), vector::Distance(), TotalDamageResult::GetDamage(), GetHitMessage(), GetPlayerPrefix(), EntityAI::IsMeleeWeapon(), LogPrint(), m_DisplayName, m_Distance, m_HitFilter, m_HitMessage и m_ItemInHands.