Enemy Hit Sound (UT2003)

  1. Introduction
  2. Code source
  3. Explication du code

Créé le 18/07/2003
Dernière mise à jour le 18/07/2003

1) Introduction

Hit Sound est un mutator pour Unreal Tournament 2003 qui produit un son quand vous avez tiré sur vôtre adversaire, mais pas sur un coéquipier dans un jeu par équipe.
On a besoin d'un GameRules pour accéder a la function NetDamage et la modifié.
Le mutator sert juste pour faire apparaîttre dans le jeu le HitSoundGameRules et a l'ajouter a la chaîne des GameRules du GameType comme pour le mutator d'origine Vampire par exemple. (sans cette chaîne le GameType prendrais en charge un seul GameRules et donc un seul mutator de ce type)

Top

2) Code source

Mutator:

//===========================================
// Enemy Hit Sound
//
created by Crokx
// 18/07/2003 (dd/mm/yyyy)
//===========================================

class EnemyHitSound extends Mutator;


//=============================
// Dés le début dans la partie
//=============================

function PostBeginPlay()
{
    local GameRules GR;

    Super.PostBeginPlay();

    GR = spawn(class'EnemyHitSoundGameRules');
    if(Level.Game.GameRulesModifiers == None)
        Level.Game.GameRulesModifiers = GR;
    else Level.Game.GameRulesModifiers.AddGameRules(GR);
    Destroy();
}


//=========
// Default
//=========

defaultproperties
{
    FriendlyName="Enemy Hit Sound"
    Description="Enemy Hit Sound by Crokx."
}

GameRules:

class EnemyHitSoundGameRules extends GameRules;


//===================================
// Quand un joueur reçois des dégats
//===================================
function int NetDamage(int OriginalDamage, int Damage, pawn injured, pawn instigatedBy, vector HitLocation, out vector Momentum, class<DamageType> DamageType)
{
    if((instigatedBy != None)
    && (instigatedBy != injured)
    && (instigatedBy.Controller != None)
    && (instigatedBy.Controller.IsA('PlayerController')))
    {
        if(Level.Game.bTeamGame)
        {
            if((injured.PlayerReplicationInfo != None)
            && (injured.PlayerReplicationInfo.Team == None)
            || (instigatedBy.PlayerReplicationInfo != None)
            && (instigatedBy.PlayerReplicationInfo.Team != injured.PlayerReplicationInfo.Team))
                PlayerController(instigatedBy.Controller).ClientPlaySound(Sound'MyHitSound');
        }
        else PlayerController(instigatedBy.Controller).ClientPlaySound(Sound'MyHitSound');
    }

    if(NextGameRules != None) return NextGameRules.NetDamage(OriginalDamage, Damage, injured, instigatedBy, HitLocation, Momentum, DamageType);
    return Damage;
}


//=========
// Default
//=========
defaultproperties
{
}

Fichier INT:

[Public]
Object=(Class=Class, MetaClass=Engine.Mutator, Name=EnemyHitSound.EnemyHitSound)

Top

3) Explication du code

Mutator:

GameRules:

Top