DayZ 1.27
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 строка 210

211 {
212 if ( player && source )
213 {
214 string playerPrefix = GetPlayerPrefix( player , player.GetIdentity() ) + "[HP: " + player.GetHealth().ToString() + "]";
215 string playerPrefix2;
216 m_HitMessage = GetHitMessage( damageResult, component, dmgZone, ammo );
217 PlayerBase playerSource;
218
219 if ( source.IsPlayer() )// Fists
220 playerSource = PlayerBase.Cast( source );
221 else
222 playerSource = PlayerBase.Cast( source.GetHierarchyParent() );
223
224 if (playerSource)
225 playerPrefix2 = GetPlayerPrefix( playerSource , playerSource.GetIdentity() );
226
227 switch ( damageType )
228 {
229 case DamageType.CLOSE_COMBAT: // Player melee, animals, infected
230
231 if (source.IsZombie() || source.IsAnimal()) // Infected & Animals
232 {
233 if (m_HitFilter == 1)
234 break;
235
236 m_DisplayName = source.GetDisplayName();
237
238 LogPrint( playerPrefix + " hit by " + m_DisplayName + m_HitMessage );
239 }
240 else if (source.IsPlayer())// Fists
241 {
242 LogPrint( playerPrefix + " hit by " + playerPrefix2 + m_HitMessage );
243 }
244 else if ( playerSource && (source.IsMeleeWeapon() || source.IsWeapon())) // Melee weapons
245 {
246 m_ItemInHands = source.GetDisplayName();
247
248 LogPrint( playerPrefix + " hit by " + playerPrefix2 + m_HitMessage + " with " + m_ItemInHands );
249 }
250 else
251 {
252 m_DisplayName = source.GetType();
253
254 LogPrint( playerPrefix + " hit by " + m_DisplayName + m_HitMessage );
255 }
256 break;
257
258 case DamageType.FIRE_ARM: // Player ranged
259
260 if ( source.IsWeapon() && playerSource )
261 {
262 m_ItemInHands = source.GetDisplayName();
263 m_Distance = vector.Distance( player.GetPosition(), playerSource.GetPosition() );
264
265 LogPrint( playerPrefix + " hit by " + playerPrefix2 + m_HitMessage + " with " + m_ItemInHands + " from " + m_Distance + " meters ");
266 }
267 else
268 {
269 m_DisplayName = source.GetType();
270
271 LogPrint( playerPrefix + " hit by " + m_DisplayName + m_HitMessage );
272 }
273 break;
274
275 case DamageType.EXPLOSION: // Explosion
276
277 LogPrint( playerPrefix + " hit by explosion (" + ammo + ")" );
278 break;
279
280 case DamageType.STUN: // unused atm
281
282 LogPrint( playerPrefix + " stunned by " + ammo );
283 break;
284
285 case DamageType.CUSTOM: // Others (Vehicle hit, fall, fireplace, barbed wire ...)
286 float globalHealthDamage = damageResult.GetDamage("", "Health");
287 if (ammo == DayZPlayerImplementFallDamage.FALL_DAMAGE_AMMO_HEALTH || ammo == DayZPlayerImplementFallDamage.FALL_DAMAGE_AMMO_SHOCK || ammo == DayZPlayerImplementFallDamage.FALL_DAMAGE_AMMO_HEALTH_OTHER_ATTACHMENTS)
288 {
289 if (globalHealthDamage > 0.0)
290 LogPrint(playerPrefix + " hit by " + ammo);
291 }
292 else if ( source.GetType() == "AreaDamageManager" )
293 {
294 EntityAI parent = EntityAI.Cast( source );
295 if ( parent )
296 {
297 LogPrint( playerPrefix + " hit by " + parent.GetType() + " with " + ammo );
298 }
299 }
300 else
301 {
302 m_DisplayName = source.GetType();
303
304 LogPrint( playerPrefix + " hit by " + m_DisplayName + " with " + ammo );
305 }
306 break;
307
308 default:
309
310 LogPrint("DEBUG: PlayerHitBy() unknown damageType: " + ammo );
311 break;
312 }
313 }
314 else
315 {
316 LogPrint("DEBUG: player/source does not exist");
317 }
318 }
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()
Определения InventoryItem.c:81
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.