Показать сообщение отдельно
Старый 12.03.2012, 00:10   #135
Malinovskiy
RO Admin
 
Аватар для Malinovskiy
 
Регистрация: 13.02.2007
Адрес: Москва
Сообщений: 4,789
Сказал cпасибо: 1,000
Поблагодарили 2,559 раз в 1,229 сообщениях
Цитата:
Сообщение от Umris Посмотреть сообщение
Вообще то вместо попаданий считаются очки убийств.
Откуда инфа?

Просто я смотрел функцию TakeDamage из класса ROPawn:

Код:
event TakeDamage(int Damage, Controller InstigatedBy, vector HitLocation, vector Momentum, class<DamageType> DamageType, optional TraceHitInfo HitInfo, optional Actor DamageCauser)
{
	local int 	i;
	local int 	ActualDamage;
	local bool  bHasAssisted;
	// From Super Pawn.uc
	local PlayerController PC;
	local ROPLayerController ROPC;
	local Controller Killer;
	local float MomentumMagSq;
	local ROPawn RadiusPawn;
	local EHitZoneType ModifiedHitZoneType;

	if ( LastDamageTime != WorldInfo.TimeSeconds && Role == Role_Authority )
	{
		if ( InstigatedBy != none )
		{
			ROPC = ROPlayerController(InstigatedBy);

			if ( ROPC != none && ROPC.Pawn != none && ROPC.Pawn.Weapon != none && ROPC.StatsWrite != none )
			{
			 	ROPC.StatsWrite.AddToHits(1, ROPC.Pawn.Weapon.InvIndex);
			}
		}
	}
...
Непосредственно функция записи попадания выделена черным.

Сам ивент запускается при получении игроком любых повреждений, собственно он так и называется TakeDamage.

У нее есть входящий параметр class<DamageType> DamageType

Но в условии записи попаданий:
Цитата:
if ( ROPC != none && ROPC.Pawn != none && ROPC.Pawn.Weapon != none && ROPC.StatsWrite != none )
- я не нашел отсеивание на дамаг от взрывов и арты.

Чтобы это исправить нужно слегка дополнить условие:
Цитата:
if ( ROPC != none && ROPC.Pawn != none && ROPC.Pawn.Weapon != none && ROPC.StatsWrite != none && DamageType != ArtyDamageType && DamageType != GranateDamageType )

Или я что-то не заметил?
Malinovskiy вне форума   Ответить с цитированием