Créé le 10/05/2003
Dernière mise à jour le 10/05/2003
Il s'agit d'un volume que le mappeur peut ajouter dans sa map une fois le package du script ouvert.
La
particuliarité de ce volume est qu'il régénère les joueurs qui se trouvent
a l'intérieur de celui-ci.
Le problème de ces actors si spéciaux que sont les volumes,
c'est qu'ils ne gèrent pas les functions de temps (Timer(), Tick())
or on a besoin de Timer() pour régénéré les joueurs chaque seconde.
Il
faut donc spawné un actor exprés (VolumeTimer) qui va
s'en occupé, son Timer() lancera la function TimerPop() du volume.
//===========================================
// RegenVolume
//
created by Crokx
// 10/05/2003 (dd/mm/yyyy)
//===========================================
class
RegenVolume extends PhysicsVolume;
var() int RegenAmount;
var()
int RegenLimit;
var VolumeTimer RegenTimer;
//=============================
//
Dés le début dans la partie
//=============================
simulated
function PostBeginPlay()
{
Super.PostBeginPlay();
RegenAmount
= Min(RegenAmount, RegenLimit);
RegenTimer
= Spawn(class'VolumeTimer', SELF);
if(RegenTimer
!= None) RegenTimer.V
= SELF; // inutile car en spawnant le volume Timer avec un Owner
SELF (second paramètre) il s'assigne tout seul cette variable dans son propre code
}
//===============================
//
Appelé par RegenTimer.Timer()
//===============================
function
TimerPop(VolumeTimer VT)
{
local
Pawn P;
if(VT != RegenTimer)
return;
ForEach TouchingActors(class'Pawn',
P)
{
if((P
!= None)
&&
(P.IsPlayerPawn())
&&
(P.Health < RegenLimit))
P.Health
= Min(P.Health+RegenAmount, RegenLimit);
}
}
//=========
//
Default
//=========
defaultproperties
{
RegenAmount=5
RegenLimit=100
}
Déclaration des variables:
Dés le début dans la partie:
Note:
Pour mieux comprendre le VolumeTimer, ouvrez UnrealEd
et éditez le, il se trouve dans Actor/Info/.
Le RegenTimer lance dans son Timer() le TimerPop() du volume: