А, ну тут все просто:
И сам танк:
class DKVehicles extends ONSWheeledCraft;
#exec OBJ LOAD FILE=DKVehiclesTex.utx
#exec OBJ LOAD FILE=DA2_WeaponSounds.uax
#exec OBJ LOAD FILE=DKVehiclesMesh.usx
#exec OBJ LOAD FILE=RO_vehicles.uax
#exec OBJ LOAD FILE=A.uax
#exec OBJ LOAD FILE=A2.uax
#exec OBJ LOAD FILE=A3.uax
#exec OBJ LOAD FILE=DKoppIISound.uax
#exec OBJ LOAD FILE=BallisticSounds2.uax
var float YawAccel, PitchAccel;
var float ClientUpdateTime;
var float StartDrivingTime;
var float TreadVelocityScale;
var float MaxGroundSpeed, MaxAirSpeed;
var() float MaxPitchSpeed;
var() class<Emitter> ExhaustClass;
var() array<Name> ExhaustBones;
var Rotator LastAim;
var VariableTexPanner LeftTreadPanner, RightTreadPanner;
var array<Emitter> ExhaustPuffs;
var FX_EngineFire TankDamage;
//-----------------------------------------------------------
// ImportantVehicle
//-----------------------------------------------------------
function bool ImportantVehicle()
{
return true;
}
//-----------------------------------------------------------
// RecommendLongRangedAttack
//-----------------------------------------------------------
function bool RecommendLongRangedAttack()
{
return true;
}
//-----------------------------------------------------------
// RecommendLongRangedAttack
//-----------------------------------------------------------
function ShouldTargetMissile(Projectile P)
{
if ( (WeaponPawns.Length > 0) && (WeaponPawns[0].Controller == None) )
Super.ShouldTargetMissile(P);
}
//-----------------------------------------------------------
// PostBeginPlay
//-----------------------------------------------------------
simulated function PostBeginPlay()
{
super.PostBeginPlay();
if ( Level.NetMode != NM_DedicatedServer )
SetupTreads();
}
//-----------------------------------------------------------
// Tick
//-----------------------------------------------------------
simulated function Tick(float DeltaTime)
{
local float EnginePitch;
local float LinTurnSpeed;
local KRigidBodyState BodyState;
local KarmaParams KP;
local bool bOnGround;
local int i;
KGetRigidBodyState(BodyState);
KP = KarmaParams(KParams);
// Increase max karma speed if falling
bOnGround = false;
for(i=0; i<KP.Repulsors.Length; i++)
{
//log("Checking Repulsor "$i);
if( KP.Repulsors != None && KP.Repulsors.bRepulsorInContact )
bOnGround = true;
//log("bOnGround: "$bOnGround);
}
if (bOnGround)
KP.kMaxSpeed = MaxGroundSpeed;
else
KP.kMaxSpeed = MaxAirSpeed;
if ( Level.NetMode != NM_DedicatedServer )
{
LinTurnSpeed = 0.5 * BodyState.AngVel.Z;
EnginePitch = 64.0 + VSize(Velocity)/MaxPitchSpeed * 64.0;
SoundPitch = FClamp(EnginePitch, 64, 128);
if ( LeftTreadPanner != None )
{
LeftTreadPanner.PanRate = VSize(Velocity) / TreadVelocityScale;
if (Velocity Dot Vector(Rotation) > 0)
LeftTreadPanner.PanRate = -1 * LeftTreadPanner.PanRate;
LeftTreadPanner.PanRate += LinTurnSpeed;
}
if ( RightTreadPanner != None )
{
RightTreadPanner.PanRate = VSize(Velocity) / TreadVelocityScale;
if (Velocity Dot Vector(Rotation) > 0)
RightTreadPanner.PanRate = -1 * RightTreadPanner.PanRate;
RightTreadPanner.PanRate -= LinTurnSpeed;
}
}
Super.Tick( DeltaTime );
}
//-----------------------------------------------------------
// SetupTreads
//-----------------------------------------------------------
simulated function SetupTreads()
{
LeftTreadPanner = VariableTexPanner(Level.ObjectPool.AllocateObject(class'VariableTexPanner'));
if ( LeftTreadPanner != None )
{
LeftTreadPanner.Material = Skins[2];
LeftTreadPanner.PanDirection = rot(0, 16384, 0);
LeftTreadPanner.PanRate = 0.0;
Skins[2] = LeftTreadPanner;
}
RightTreadPanner = VariableTexPanner(Level.ObjectPool.AllocateObject(class'VariableTexPanner'));
if ( RightTreadPanner != None )
{
RightTreadPanner.Material = Skins[2];
RightTreadPanner.PanDirection = rot(0, 16384, 0);
RightTreadPanner.PanRate = 0.0;
Skins[2] = RightTreadPanner;
}
}
//-----------------------------------------------------------
// DestroyTreads
//-----------------------------------------------------------
simulated function DestroyTreads()
{
if ( LeftTreadPanner != None )
{
Level.ObjectPool.FreeObject(LeftTreadPanner);
LeftTreadPanner = None;
}
if ( RightTreadPanner != None )
{
Level.ObjectPool.FreeObject(RightTreadPanner);
RightTreadPanner = None;
}
}
//-----------------------------------------------------------
// DrivingStatusChanged
//-----------------------------------------------------------
simulated event DrivingStatusChanged()
{
local int i;
local Coords WheelCoords;
Super.DrivingStatusChanged();
if (!bDriving)
{
if ( LeftTreadPanner != None )
LeftTreadPanner.PanRate = 0.0;
if ( RightTreadPanner != None )
RightTreadPanner.PanRate = 0.0;
}
}
//-----------------------------------------------------------
// KDriverEnter
//-----------------------------------------------------------
function KDriverEnter(Pawn p)
{
local int i;
local Coords BoneCoords;
Super.KDriverEnter(p);
SVehicleUpdateParams();
if (Level.NetMode != NM_DedicatedServer)
{
for (i = 0; i < ExhaustBones.Length; i++)
{
BoneCoords = GetBoneCoords(ExhaustBones);
ExhaustPuffs = spawn(ExhaustClass, self,, BoneCoords.Origin);
ExhaustPuffs.SetBase(self);
}
}
SetTimer(0.1, True);
bOwnerNoSee = False;
}
//-----------------------------------------------------------
// DriverLeft
//-----------------------------------------------------------
function DriverLeft()
{
local int i;
if (Level.NetMode != NM_DedicatedServer)
{
for(i=0; i < ExhaustPuffs.Length; i++)
if (ExhaustPuffs != None)
ExhaustPuffs.Destroy();
}
Super.DriverLeft();
}
//-----------------------------------------------------------
// CheckReset
//-----------------------------------------------------------
event CheckReset()
{
local Pawn P;
if ( bKeyVehicle && IsVehicleEmpty() )
{
Died(None, class'DamageType', Location);
return;
}
if ( !IsVehicleEmpty() )
{
ResetTime = Level.TimeSeconds + 60;
return;
}
foreach CollidingActors(class 'Pawn', P, 2500.0)
{
if (P.Controller != none && P != self && P.GetTeamNum() == GetTeamNum() && FastTrace(P.Location + P.CollisionHeight * vect(0,0,1), Location + CollisionHeight * vect(0,0,1)))
{
ResetTime = Level.TimeSeconds + 60;
return;
}
}
//if factory is active, we want it to spawn new vehicle NOW
if ( ParentFactory != None )
{
ParentFactory.VehicleDestroyed(self);
ParentFactory.Timer();
ParentFactory = None; //so doesn't call ParentFactory.VehicleDestroyed() again in Destroyed()
}
Destroy();
}
//-----------------------------------------------------------
// HealDamage
//-----------------------------------------------------------
function bool HealDamage(int Amount, Controller Healer, class<DamageType> DamageType)
{
if (ResetTime-Level.TimeSeconds<0.0)
ResetTime = Level.TimeSeconds+0.0;
return super.HealDamage(Amount, Healer, DamageType);
}
//-----------------------------------------------------------
// TakeDamage
//-----------------------------------------------------------
function TakeDamage( int Damage, Pawn instigatedBy, Vector hitlocation,
Vector momentum, class<DamageType> damageType)
{
if ( (Health <= 0.30*HealthMax) && (TankDamage == none) )
{
TankDamage = spawn( class'DKoppIIVehicles.FX_EngineFire' , self);
if (TankDamage != none)
AttachToBone(TankDamage,'Turret');
}
if ( (Health <= 0.30*HealthMax) && (Driver != none) )
Driver.TakeDamage(Damage,InstigatedBy,HitLocation,Momentum,DamageType) ;
super.TakeDamage(Damage,InstigatedBy,HitLocation,Momentum,DamageType);
}
//-----------------------------------------------------------
// Destroyed
//-----------------------------------------------------------
simulated function Destroyed()
{
local int i;
if (Level.NetMode != NM_DedicatedServer)
{
for(i=0; i < ExhaustPuffs.Length; i++)
if (ExhaustPuffs != None)
ExhaustPuffs.Destroy();
}
TankDamage.Destroy();
DestroyTreads();
Super.Destroyed();
}
//-----------------------------------------------------------
// Precache
//-----------------------------------------------------------
static function StaticPrecache(LevelInfo L)
{
local int i;
if (Default.RedSkin != None)
L.AddPrecacheMaterial(Default.RedSkin);
if (Default.BlueSkin != None)
L.AddPrecacheMaterial(Default.BlueSkin);
}
simulated function UpdatePrecacheMaterials()
{
if (Default.RedSkin != None)
Level.AddPrecacheMaterial(Default.RedSkin);
if (Default.BlueSkin != None)
Level.AddPrecacheMaterial(Default.BlueSkin);
Super.UpdatePrecacheMaterials();
}
defaultproperties
{
ExhaustClass=Class'DKoppIIVehicles.FX_TankSmokeEffect'
ExplosionSoundVolume=255.000000
ExplosionSoundRadius=1500.000000
ExplosionDamage=500.000000
ExplosionRadius=1100.000000
ExplosionMomentum=50000.000000
ExplosionDamageType=Class'DKoppIIVehicles.DT_VehiclesExp'
ExplosionSounds(0)=Sound'DKoppIISound.TankDestroy.TankDestroy1'
ExplosionSounds(1)=Sound'DKoppIISound.TankDestroy.TankDestroy2'
ExplosionSounds(2)=Sound'DKoppIISound.TankDestroy.TankDestroy3'
ExplosionSounds(3)=Sound'DKoppIISound.TankDestroy.TankDestroy4'
ExplosionSounds(4)=Sound'DKoppIISound.TankDestroy.TankDestroy1'
DamagedEffectScale=0.000000
DamagedEffectHealthSmokeFactor=0.400000
DamagedEffectHealthFireFactor=0.200000
DamagedEffectAccScale=1.000000
DamagedEffectFireDamagePerSec=0.000000
DestructionLinearMomentum=(Min=250000.000000,Max=400000.000000)
DestructionAngularMomentum=(Max=150.000000)
DestructionEffectClass=Class'DKoppIIVehicles.FX_MG_BulletMetal'
DisintegrationHealth=0.000000
DisintegrationEffectClass=Class'DKoppIIVehicles.FX_TankDestroy'
ImpactDamageSounds(0)=None
ImpactDamageSounds(1)=None
ImpactDamageSounds(2)=None
ImpactDamageSounds(3)=None
ImpactDamageSounds(4)=None
ImpactDamageSounds(5)=None
ImpactDamageSounds(6)=None
ImpactDamageSounds(7)=None
ImpactDamageSounds(8)=None
ImpactDamageSounds(9)=None
ImpactDamageSounds(10)=None
ImpactDamageSounds(11)=None
ImpactDamageMult=0.000300
ImpactDamageThreshold=1000.000000
ImpactDamageTicks=10.000000
bDrawDriverInTP=True
bCanDoTrickJumps=True
bDrawMeshInFP=True
bPCRelativeFPRotation=False
bTeamLocked=False
bHasHandbrake=True
bHasFireImpulse=True
bSeparateTurretFocus=True
bHighScoreKill=True
bDriverHoldsFlag=False
bFPNoZFromCameraPitch=True
bDramaticLighting=False
bAlwaysRelevant=True
bShadowCast=True
bCanStrafe=True
CenterSpringForce="SpringONSSRV"
StartUpForce="TankStartUp"
ShutDownForce="TankShutDown"
TPCamDistRange=(Max=2000.000000)
FireImpulse=(Z=-100000.000000,X=-200000.000000)
AltFireImpulse=(Z=-100000.000000,X=-200000.000000)
ShadowMaxTraceDist=4000.000000
ShadowCullDistance=20000.000000
MomentumMult=0.500000
DriverDamageMult=0.040000
DrivePos=(Z=60)
LinkHealMult=0.000000
MaxDesireability=0.600000
ObjectiveGetOutDist=1500.000000
FlagBone="Turret"
FlagRotation=(Yaw=32768)
HornSounds(0)=Sound'ONSVehicleSounds-S.Horns.Horn06'
HornSounds(1)=Sound'ONSVehicleSounds-S.Horns.Dixie_Horn'
RanOverDamageType=Class'Onslaught.DamTypePRVRoadkill'
CrushedDamageType=Class'Onslaught.DamTypePRVPancake'
GroundSpeed=1000.000000
NetUpdateFrequency=1.000000
NetPriority=3.000000
MaxLights=24
CollisionRadius=100.000000
CollisionHeight=100.000000
ShakeRotMag=(Z=250.000000)
ShakeRotRate=(Z=1500.000000)
ShakeRotTime=6.000000
ShakeOffsetMag=(Z=10.000000)
ShakeOffsetRate=(Z=200.000000)
ShakeOffsetTime=10.000000
ViewShakeRadius=100.000000
SpawnOverlay(0)=None
SpawnOverlay(1)=None
Skins(0)=None
Skins(1)=None
Skins(2)=None
Skins(3)=None
Skins(4)=None
Skins(5)=None
Skins(6)=None
Skins(7)=None
Skins(8)=None
Skins(9)=None
}
#exec OBJ LOAD FILE=DKVehiclesTex.utx
#exec OBJ LOAD FILE=DA2_WeaponSounds.uax
#exec OBJ LOAD FILE=DKVehiclesMesh.usx
#exec OBJ LOAD FILE=RO_vehicles.uax
#exec OBJ LOAD FILE=A.uax
#exec OBJ LOAD FILE=A2.uax
#exec OBJ LOAD FILE=A3.uax
#exec OBJ LOAD FILE=DKoppIISound.uax
#exec OBJ LOAD FILE=BallisticSounds2.uax
var float YawAccel, PitchAccel;
var float ClientUpdateTime;
var float StartDrivingTime;
var float TreadVelocityScale;
var float MaxGroundSpeed, MaxAirSpeed;
var() float MaxPitchSpeed;
var() class<Emitter> ExhaustClass;
var() array<Name> ExhaustBones;
var Rotator LastAim;
var VariableTexPanner LeftTreadPanner, RightTreadPanner;
var array<Emitter> ExhaustPuffs;
var FX_EngineFire TankDamage;
//-----------------------------------------------------------
// ImportantVehicle
//-----------------------------------------------------------
function bool ImportantVehicle()
{
return true;
}
//-----------------------------------------------------------
// RecommendLongRangedAttack
//-----------------------------------------------------------
function bool RecommendLongRangedAttack()
{
return true;
}
//-----------------------------------------------------------
// RecommendLongRangedAttack
//-----------------------------------------------------------
function ShouldTargetMissile(Projectile P)
{
if ( (WeaponPawns.Length > 0) && (WeaponPawns[0].Controller == None) )
Super.ShouldTargetMissile(P);
}
//-----------------------------------------------------------
// PostBeginPlay
//-----------------------------------------------------------
simulated function PostBeginPlay()
{
super.PostBeginPlay();
if ( Level.NetMode != NM_DedicatedServer )
SetupTreads();
}
//-----------------------------------------------------------
// Tick
//-----------------------------------------------------------
simulated function Tick(float DeltaTime)
{
local float EnginePitch;
local float LinTurnSpeed;
local KRigidBodyState BodyState;
local KarmaParams KP;
local bool bOnGround;
local int i;
KGetRigidBodyState(BodyState);
KP = KarmaParams(KParams);
// Increase max karma speed if falling
bOnGround = false;
for(i=0; i<KP.Repulsors.Length; i++)
{
//log("Checking Repulsor "$i);
if( KP.Repulsors != None && KP.Repulsors.bRepulsorInContact )
bOnGround = true;
//log("bOnGround: "$bOnGround);
}
if (bOnGround)
KP.kMaxSpeed = MaxGroundSpeed;
else
KP.kMaxSpeed = MaxAirSpeed;
if ( Level.NetMode != NM_DedicatedServer )
{
LinTurnSpeed = 0.5 * BodyState.AngVel.Z;
EnginePitch = 64.0 + VSize(Velocity)/MaxPitchSpeed * 64.0;
SoundPitch = FClamp(EnginePitch, 64, 128);
if ( LeftTreadPanner != None )
{
LeftTreadPanner.PanRate = VSize(Velocity) / TreadVelocityScale;
if (Velocity Dot Vector(Rotation) > 0)
LeftTreadPanner.PanRate = -1 * LeftTreadPanner.PanRate;
LeftTreadPanner.PanRate += LinTurnSpeed;
}
if ( RightTreadPanner != None )
{
RightTreadPanner.PanRate = VSize(Velocity) / TreadVelocityScale;
if (Velocity Dot Vector(Rotation) > 0)
RightTreadPanner.PanRate = -1 * RightTreadPanner.PanRate;
RightTreadPanner.PanRate -= LinTurnSpeed;
}
}
Super.Tick( DeltaTime );
}
//-----------------------------------------------------------
// SetupTreads
//-----------------------------------------------------------
simulated function SetupTreads()
{
LeftTreadPanner = VariableTexPanner(Level.ObjectPool.AllocateObject(class'VariableTexPanner'));
if ( LeftTreadPanner != None )
{
LeftTreadPanner.Material = Skins[2];
LeftTreadPanner.PanDirection = rot(0, 16384, 0);
LeftTreadPanner.PanRate = 0.0;
Skins[2] = LeftTreadPanner;
}
RightTreadPanner = VariableTexPanner(Level.ObjectPool.AllocateObject(class'VariableTexPanner'));
if ( RightTreadPanner != None )
{
RightTreadPanner.Material = Skins[2];
RightTreadPanner.PanDirection = rot(0, 16384, 0);
RightTreadPanner.PanRate = 0.0;
Skins[2] = RightTreadPanner;
}
}
//-----------------------------------------------------------
// DestroyTreads
//-----------------------------------------------------------
simulated function DestroyTreads()
{
if ( LeftTreadPanner != None )
{
Level.ObjectPool.FreeObject(LeftTreadPanner);
LeftTreadPanner = None;
}
if ( RightTreadPanner != None )
{
Level.ObjectPool.FreeObject(RightTreadPanner);
RightTreadPanner = None;
}
}
//-----------------------------------------------------------
// DrivingStatusChanged
//-----------------------------------------------------------
simulated event DrivingStatusChanged()
{
local int i;
local Coords WheelCoords;
Super.DrivingStatusChanged();
if (!bDriving)
{
if ( LeftTreadPanner != None )
LeftTreadPanner.PanRate = 0.0;
if ( RightTreadPanner != None )
RightTreadPanner.PanRate = 0.0;
}
}
//-----------------------------------------------------------
// KDriverEnter
//-----------------------------------------------------------
function KDriverEnter(Pawn p)
{
local int i;
local Coords BoneCoords;
Super.KDriverEnter(p);
SVehicleUpdateParams();
if (Level.NetMode != NM_DedicatedServer)
{
for (i = 0; i < ExhaustBones.Length; i++)
{
BoneCoords = GetBoneCoords(ExhaustBones);
ExhaustPuffs = spawn(ExhaustClass, self,, BoneCoords.Origin);
ExhaustPuffs.SetBase(self);
}
}
SetTimer(0.1, True);
bOwnerNoSee = False;
}
//-----------------------------------------------------------
// DriverLeft
//-----------------------------------------------------------
function DriverLeft()
{
local int i;
if (Level.NetMode != NM_DedicatedServer)
{
for(i=0; i < ExhaustPuffs.Length; i++)
if (ExhaustPuffs != None)
ExhaustPuffs.Destroy();
}
Super.DriverLeft();
}
//-----------------------------------------------------------
// CheckReset
//-----------------------------------------------------------
event CheckReset()
{
local Pawn P;
if ( bKeyVehicle && IsVehicleEmpty() )
{
Died(None, class'DamageType', Location);
return;
}
if ( !IsVehicleEmpty() )
{
ResetTime = Level.TimeSeconds + 60;
return;
}
foreach CollidingActors(class 'Pawn', P, 2500.0)
{
if (P.Controller != none && P != self && P.GetTeamNum() == GetTeamNum() && FastTrace(P.Location + P.CollisionHeight * vect(0,0,1), Location + CollisionHeight * vect(0,0,1)))
{
ResetTime = Level.TimeSeconds + 60;
return;
}
}
//if factory is active, we want it to spawn new vehicle NOW
if ( ParentFactory != None )
{
ParentFactory.VehicleDestroyed(self);
ParentFactory.Timer();
ParentFactory = None; //so doesn't call ParentFactory.VehicleDestroyed() again in Destroyed()
}
Destroy();
}
//-----------------------------------------------------------
// HealDamage
//-----------------------------------------------------------
function bool HealDamage(int Amount, Controller Healer, class<DamageType> DamageType)
{
if (ResetTime-Level.TimeSeconds<0.0)
ResetTime = Level.TimeSeconds+0.0;
return super.HealDamage(Amount, Healer, DamageType);
}
//-----------------------------------------------------------
// TakeDamage
//-----------------------------------------------------------
function TakeDamage( int Damage, Pawn instigatedBy, Vector hitlocation,
Vector momentum, class<DamageType> damageType)
{
if ( (Health <= 0.30*HealthMax) && (TankDamage == none) )
{
TankDamage = spawn( class'DKoppIIVehicles.FX_EngineFire' , self);
if (TankDamage != none)
AttachToBone(TankDamage,'Turret');
}
if ( (Health <= 0.30*HealthMax) && (Driver != none) )
Driver.TakeDamage(Damage,InstigatedBy,HitLocation,Momentum,DamageType) ;
super.TakeDamage(Damage,InstigatedBy,HitLocation,Momentum,DamageType);
}
//-----------------------------------------------------------
// Destroyed
//-----------------------------------------------------------
simulated function Destroyed()
{
local int i;
if (Level.NetMode != NM_DedicatedServer)
{
for(i=0; i < ExhaustPuffs.Length; i++)
if (ExhaustPuffs != None)
ExhaustPuffs.Destroy();
}
TankDamage.Destroy();
DestroyTreads();
Super.Destroyed();
}
//-----------------------------------------------------------
// Precache
//-----------------------------------------------------------
static function StaticPrecache(LevelInfo L)
{
local int i;
if (Default.RedSkin != None)
L.AddPrecacheMaterial(Default.RedSkin);
if (Default.BlueSkin != None)
L.AddPrecacheMaterial(Default.BlueSkin);
}
simulated function UpdatePrecacheMaterials()
{
if (Default.RedSkin != None)
Level.AddPrecacheMaterial(Default.RedSkin);
if (Default.BlueSkin != None)
Level.AddPrecacheMaterial(Default.BlueSkin);
Super.UpdatePrecacheMaterials();
}
defaultproperties
{
ExhaustClass=Class'DKoppIIVehicles.FX_TankSmokeEffect'
ExplosionSoundVolume=255.000000
ExplosionSoundRadius=1500.000000
ExplosionDamage=500.000000
ExplosionRadius=1100.000000
ExplosionMomentum=50000.000000
ExplosionDamageType=Class'DKoppIIVehicles.DT_VehiclesExp'
ExplosionSounds(0)=Sound'DKoppIISound.TankDestroy.TankDestroy1'
ExplosionSounds(1)=Sound'DKoppIISound.TankDestroy.TankDestroy2'
ExplosionSounds(2)=Sound'DKoppIISound.TankDestroy.TankDestroy3'
ExplosionSounds(3)=Sound'DKoppIISound.TankDestroy.TankDestroy4'
ExplosionSounds(4)=Sound'DKoppIISound.TankDestroy.TankDestroy1'
DamagedEffectScale=0.000000
DamagedEffectHealthSmokeFactor=0.400000
DamagedEffectHealthFireFactor=0.200000
DamagedEffectAccScale=1.000000
DamagedEffectFireDamagePerSec=0.000000
DestructionLinearMomentum=(Min=250000.000000,Max=400000.000000)
DestructionAngularMomentum=(Max=150.000000)
DestructionEffectClass=Class'DKoppIIVehicles.FX_MG_BulletMetal'
DisintegrationHealth=0.000000
DisintegrationEffectClass=Class'DKoppIIVehicles.FX_TankDestroy'
ImpactDamageSounds(0)=None
ImpactDamageSounds(1)=None
ImpactDamageSounds(2)=None
ImpactDamageSounds(3)=None
ImpactDamageSounds(4)=None
ImpactDamageSounds(5)=None
ImpactDamageSounds(6)=None
ImpactDamageSounds(7)=None
ImpactDamageSounds(8)=None
ImpactDamageSounds(9)=None
ImpactDamageSounds(10)=None
ImpactDamageSounds(11)=None
ImpactDamageMult=0.000300
ImpactDamageThreshold=1000.000000
ImpactDamageTicks=10.000000
bDrawDriverInTP=True
bCanDoTrickJumps=True
bDrawMeshInFP=True
bPCRelativeFPRotation=False
bTeamLocked=False
bHasHandbrake=True
bHasFireImpulse=True
bSeparateTurretFocus=True
bHighScoreKill=True
bDriverHoldsFlag=False
bFPNoZFromCameraPitch=True
bDramaticLighting=False
bAlwaysRelevant=True
bShadowCast=True
bCanStrafe=True
CenterSpringForce="SpringONSSRV"
StartUpForce="TankStartUp"
ShutDownForce="TankShutDown"
TPCamDistRange=(Max=2000.000000)
FireImpulse=(Z=-100000.000000,X=-200000.000000)
AltFireImpulse=(Z=-100000.000000,X=-200000.000000)
ShadowMaxTraceDist=4000.000000
ShadowCullDistance=20000.000000
MomentumMult=0.500000
DriverDamageMult=0.040000
DrivePos=(Z=60)
LinkHealMult=0.000000
MaxDesireability=0.600000
ObjectiveGetOutDist=1500.000000
FlagBone="Turret"
FlagRotation=(Yaw=32768)
HornSounds(0)=Sound'ONSVehicleSounds-S.Horns.Horn06'
HornSounds(1)=Sound'ONSVehicleSounds-S.Horns.Dixie_Horn'
RanOverDamageType=Class'Onslaught.DamTypePRVRoadkill'
CrushedDamageType=Class'Onslaught.DamTypePRVPancake'
GroundSpeed=1000.000000
NetUpdateFrequency=1.000000
NetPriority=3.000000
MaxLights=24
CollisionRadius=100.000000
CollisionHeight=100.000000
ShakeRotMag=(Z=250.000000)
ShakeRotRate=(Z=1500.000000)
ShakeRotTime=6.000000
ShakeOffsetMag=(Z=10.000000)
ShakeOffsetRate=(Z=200.000000)
ShakeOffsetTime=10.000000
ViewShakeRadius=100.000000
SpawnOverlay(0)=None
SpawnOverlay(1)=None
Skins(0)=None
Skins(1)=None
Skins(2)=None
Skins(3)=None
Skins(4)=None
Skins(5)=None
Skins(6)=None
Skins(7)=None
Skins(8)=None
Skins(9)=None
}
И сам танк:
class Ispolin extends DKVehicles;
var Deco_IspolinChassis TankHull;
var Deco_IspolinTurret Turret;
var Deco_TireR TireR;
var Deco_TireL TireL;
var Deco_Ispolin_FlapA FlapA;
var Deco_Ispolin_FlapB FlapB;
var Deco_Ispolin_FlapC FlapC;
var DKHeadlightCorona LightR1;
var DKHeadlightCorona LightL1;
var DKHeadlightProjector ProjectR1;
var DKHeadlightProjector ProjectL1;
var DKBrakelightCorona BrakeR1;
var DKBrakelightCorona BrakeL1;
simulated function DrawHUD(Canvas Canvas)
{
local Material BGMaterial;
Super.DrawHUD(Canvas);
BGMaterial = Texture'DKVehiclesTex.Ammo.Ammo76';
Canvas.SetPos(Canvas.SizeX*0.0, Canvas.SizeY*0.85);
Canvas.SetDrawColor(255, 255, 255, 255);
Canvas.DrawTile(BGMaterial, 128, 64, 0, 0, BGMaterial.MaterialUSize(), BGMaterial.MaterialVSize());
BGMaterial = Texture'DKVehiclesTex.Ammo.IconAmmo76';
Canvas.SetPos(Canvas.SizeX*0.0, Canvas.SizeY*0.75);
Canvas.SetDrawColor(255, 255, 255, 255);
Canvas.DrawTile(BGMaterial, 128, 64, 0, 0, BGMaterial.MaterialUSize(), BGMaterial.MaterialVSize());
}
function KDriverEnter(Pawn p)
{
local int i;
Super.KDriverEnter(p);
SVehicleUpdateParams();
if (LightL1==none)
{
LightR1 = Spawn(class'DKHeadlightCorona',self,,Location);
if( !AttachToBone(LightR1,'LightR1') )
{
return;
}
}
if (LightL1==none)
{
LightL1 = Spawn(class'DKHeadlightCorona',self,,Location);
if( !AttachToBone(LightL1,'LightL1') )
{
LightL1.Destroy();
return;
}
}
if (BrakeR1==none)
{
BrakeR1 = Spawn(class'DKBrakelightCorona',self,,Location);
if( !AttachToBone(BrakeR1,'BrakeR1') )
{
BrakeR1.Destroy();
return;
}
}
if (BrakeL1==none)
{
BrakeL1 = Spawn(class'DKBrakelightCorona',self,,Location);
if( !AttachToBone(BrakeL1,'BrakeL1') )
{
BrakeL1.Destroy();
return;
}
}
if (ProjectR1==none)
{
ProjectR1 = Spawn(class'DKHeadlightProjector ',self,,Location);
if( !AttachToBone(ProjectR1,'LightR1') )
{
ProjectR1.Destroy();
return;
}
}
if (ProjectL1==none)
{
ProjectL1 = Spawn(class'DKHeadlightProjector ',self,,Location);
if( !AttachToBone(ProjectL1,'LightL1') )
{
ProjectL1.Destroy();
return;
}
}
SetTimer(0.1, True);
}
function DriverLeft()
{
local int i;
if (Level.NetMode != NM_DedicatedServer)
{
LightR1.Destroy();
LightL1.Destroy();
BrakeR1.Destroy();
BrakeL1.Destroy();
ProjectR1.Destroy();
ProjectL1.Destroy();
}
Super.DriverLeft();
}
simulated function Destroyed()
{
local int i;
if (Level.NetMode != NM_DedicatedServer)
{
LightR1.Destroy();
LightL1.Destroy();
BrakeR1.Destroy();
BrakeL1.Destroy();
ProjectR1.Destroy();
ProjectL1.Destroy();
}
Super.Destroyed();
}
simulated event DestroyAppearance()
{
TankHull = Spawn(class'Deco_IspolinChassis',,, Location + (vect(0,0,150) << Rotation));
Turret = Spawn(class'Deco_IspolinTurret',,, Location + (vect(0,0,250) << Rotation));
TireR = Spawn(class'Deco_TireR',,, Location + (vect(-120,100,20) << Rotation));
TireR = Spawn(class'Deco_TireR',,, Location + (vect(-80,100,20) << Rotation));
TireR = Spawn(class'Deco_TireR',,, Location + (vect(-40,100,20) << Rotation));
TireR = Spawn(class'Deco_TireR',,, Location + (vect(0,100,20) << Rotation));
TireR = Spawn(class'Deco_TireR',,, Location + (vect(40,100,20) << Rotation));
TireR = Spawn(class'Deco_TireR',,, Location + (vect(80,100,20) << Rotation));
TireL = Spawn(class'Deco_TireL',,, Location + (vect(-120,-100,20) << Rotation));
TireL = Spawn(class'Deco_TireL',,, Location + (vect(-80,-100,20) << Rotation));
TireL = Spawn(class'Deco_TireL',,, Location + (vect(-40,-100,20) << Rotation));
TireL = Spawn(class'Deco_TireL',,, Location + (vect(0,-100,20) << Rotation));
TireL = Spawn(class'Deco_TireL',,, Location + (vect(40,-100,20) << Rotation));
TireL = Spawn(class'Deco_TireL',,, Location + (vect(80,-100,20) << Rotation));
FlapA = Spawn(class'Deco_Ispolin_FlapA',,, Location + (vect(200,60,200) << Rotation));
FlapA = Spawn(class'Deco_Ispolin_FlapA',,, Location + (vect(180,40,200) << Rotation));
FlapA = Spawn(class'Deco_Ispolin_FlapA',,, Location + (vect(200,20,200) << Rotation));
FlapA = Spawn(class'Deco_Ispolin_FlapA',,, Location + (vect(180,-20,200) << Rotation));
FlapA = Spawn(class'Deco_Ispolin_FlapA',,, Location + (vect(200,-40,200) << Rotation));
FlapA = Spawn(class'Deco_Ispolin_FlapA',,, Location + (vect(180,-60,200) << Rotation));
FlapB = Spawn(class'Deco_Ispolin_FlapB',,, Location + (vect(-0,80,250) << Rotation));
FlapB = Spawn(class'Deco_Ispolin_FlapB',,, Location + (vect(-10,80,250) << Rotation));
FlapC = Spawn(class'Deco_Ispolin_FlapC',,, Location + (vect(-80,60,200) << Rotation));
FlapC = Spawn(class'Deco_Ispolin_FlapC',,, Location + (vect(80,-60,200) << Rotation));
FlapB = Spawn(class'Deco_Ispolin_FlapB',,, Location + (vect(10,-80,250) << Rotation));
FlapB = Spawn(class'Deco_Ispolin_FlapB',,, Location + (vect(0,-80,250) << Rotation));
}
static function StaticPrecache(LevelInfo L)
{
Super.StaticPrecache(L);
L.AddPrecacheMaterial(Material'DKVehiclesTex.T18.T18_Def');
L.AddPrecacheMaterial(Material'DKVehiclesTex.T18.T18_X_Def');
L.AddPrecacheMaterial(Material'DKVehiclesTex.ZTZ.ZTZ_Def');
L.AddPrecacheMaterial(Material'DKVehiclesTex.Detail.TreadsV');
L.AddPrecacheMaterial(Material'DKVehiclesTex.Detail.invis');
L.AddPrecacheMaterial(Material'Detail.caustics');
L.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Ispolin.Ispolin_X');
L.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Ispolin.Ispolin_T_X');
L.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Defender.Deco_Flap');
L.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Ispolin.Ispolin_FlapB');
L.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Defender.TireL');
L.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Defender.TireR');
L.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.TankShel');
}
simulated function UpdatePrecacheMaterials()
{
Level.AddPrecacheMaterial(Material'DKVehiclesTex.T18.T18_Def');
Level.AddPrecacheMaterial(Material'DKVehiclesTex.T18.T18_X_Def');
Level.AddPrecacheMaterial(Material'DKVehiclesTex.ZTZ.ZTZ_Def');
Level.AddPrecacheMaterial(Material'DKVehiclesTex.Detail.TreadsV');
Level.AddPrecacheMaterial(Material'DKVehiclesTex.Detail.invis');
Level.AddPrecacheMaterial(Material'Detail.caustics');
Super.UpdatePrecacheMaterials();
}
simulated function UpdatePrecacheStaticMeshes()
{
Level.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Ispolin.Ispolin_X');
Level.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Ispolin.Ispolin_T_X');
Level.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Defender.Deco_Flap');
Level.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Ispolin.Ispolin_FlapB');
Level.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Defender.TireL');
Level.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Defender.TireR');
Level.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.TankShel');
Super.UpdatePrecacheStaticMeshes();
}
defaultproperties
{
TreadVelocityScale=275.000000
MaxGroundSpeed=500.000000
MaxAirSpeed=2000.000000
WheelSoftness=0.100000
WheelPenScale=2.000000
WheelPenOffset=0.000000
WheelAdhesion=1.000000
WheelInertia=0.070000
WheelLongFrictionFunc=(Points=(,(InVal=100.000000,OutVal=1.000000),(InVal=200.000000,OutVal=0.900000),(InVal=10000000000.000000,OutVal=0.900000)))
WheelLongSlip=0.001000
WheelLatSlipFunc=(Points=(,(InVal=30.000000,OutVal=0.010000),(InVal=45.000000),(InVal=10000000000.000000)))
WheelLongFrictionScale=2.000000
WheelLatFrictionScale=1.500000
WheelHandbrakeSlip=0.750000
WheelHandbrakeFriction=2.000000
WheelSuspensionMaxRenderTravel=50.000000
WheelSuspensionOffset=-20.000000
WheelSuspensionTravel=50.000000
FTScale=0.010000
ChassisTorqueScale=0.300000
MinBrakeFriction=0.000000
MaxSteerAngleCurve=(Points=((OutVal=50.000000),(InVal=500.000000,OutVal=20.000000),(InVal=600.000000,OutVal=10.000000),(InVal=1000000000.000000,OutVal=5.000000)))
TorqueCurve=(Points=((OutVal=7.000000),(InVal=200.000000,OutVal=8.000000),(InVal=1500.000000,OutVal=8.500000),(InVal=2500.000000)))
GearRatios(0)=-0.500000
GearRatios(1)=0.400000
GearRatios(2)=0.650000
GearRatios(3)=0.850000
GearRatios(4)=1.300000
TransRatio=0.100000
ChangeUpPoint=2000.000000
ChangeDownPoint=1000.000000
LSDFactor=1.000000
EngineInertia=0.050000
EngineBrakeFactor=0.000100
EngineBrakeRPMScale=0.000000
MaxBrakeTorque=50.000000
SteerSpeed=90.000000
TurnDamping=35.000000
StopThreshold=200.000000
HandbrakeThresh=200.000000
IdleRPM=500.000000
EngineRPMSoundRange=10000.000000
SteerBoneName="SteeringWheel"
SteerBoneAxis=AXIS_Z
SteerBoneMaxAngle=90.000000
DustSlipRate=1.000000
DustSlipThresh=10.000000
RevMeterScale=4000.000000
AirPitchDamping=25.000000
DriverWeapons(0)=(WeaponClass=Class'DKoppIIVehicles.IspolinT',WeaponBone="Turret")
PassengerWeapons(0)=(WeaponPawnClass=Class'DKoppIIVehicles.IspolinT2Pawn',WeaponBone="Turret2")
RedSkin=Shader'DKVehiclesTex.T18.T18'
BlueSkin=Shader'DKVehiclesTex.T18.T18'
IdleSound=Sound'DKoppIISound.Engine.TankEngine10'
StartUpSound=Sound'DKoppIISound.Engine.TankEngine10_up'
ShutDownSound=Sound'DKoppIISound.Engine.TankEngine10_end'
Begin Object Class=SVehicleWheel Name=RWheel1
SuspensionTravel=0.000000
PenScale=5.000000
Softness=0.000000
bPoweredWheel=False
SteerType=VST_Fixed
BoneName="RWheel1"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="RSus1"
SupportBoneAxis=AXIS_Z
End Object
Wheels(0)=SVehicleWheel'DKoppIIVehicles.Ispolin.RWheel1'
Begin Object Class=SVehicleWheel Name=RWheel2
bPoweredWheel=True
SteerType=VST_Steered
BoneName="RWheel2"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="RSus2"
SupportBoneAxis=AXIS_Z
End Object
Wheels(1)=SVehicleWheel'DKoppIIVehicles.Ispolin.RWheel2'
Begin Object Class=SVehicleWheel Name=RWheel3
bPoweredWheel=True
SteerType=VST_Steered
BoneName="RWheel3"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="RSus3"
SupportBoneAxis=AXIS_Z
End Object
Wheels(2)=SVehicleWheel'DKoppIIVehicles.Ispolin.RWheel3'
Begin Object Class=SVehicleWheel Name=RWheel4
bPoweredWheel=True
SteerType=VST_Steered
BoneName="RWheel4"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="RSus4"
SupportBoneAxis=AXIS_Z
End Object
Wheels(3)=SVehicleWheel'DKoppIIVehicles.Ispolin.RWheel4'
Begin Object Class=SVehicleWheel Name=RWheel5
bPoweredWheel=True
SteerType=VST_Inverted
BoneName="RWheel5"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="RSus5"
SupportBoneAxis=AXIS_Z
End Object
Wheels(4)=SVehicleWheel'DKoppIIVehicles.Ispolin.RWheel5'
Begin Object Class=SVehicleWheel Name=RWheel6
bPoweredWheel=True
SteerType=VST_Inverted
BoneName="RWheel6"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="RSus6"
SupportBoneAxis=AXIS_Z
End Object
Wheels(5)=SVehicleWheel'DKoppIIVehicles.Ispolin.RWheel6'
Begin Object Class=SVehicleWheel Name=RWheel7
bPoweredWheel=True
SteerType=VST_Inverted
BoneName="RWheel7"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="RSus7"
SupportBoneAxis=AXIS_Z
End Object
Wheels(6)=SVehicleWheel'DKoppIIVehicles.Ispolin.RWheel7'
Begin Object Class=SVehicleWheel Name=Rwheel8
SuspensionTravel=0.000000
PenScale=5.000000
Softness=0.000000
bPoweredWheel=False
SteerType=VST_Fixed
BoneName="Rwheel8"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="RSus8"
SupportBoneAxis=AXIS_Z
End Object
Wheels(7)=SVehicleWheel'DKoppIIVehicles.Ispolin.Rwheel8'
Begin Object Class=SVehicleWheel Name=LWheel1
SuspensionTravel=0.000000
PenScale=5.000000
Softness=0.000000
bPoweredWheel=False
SteerType=VST_Fixed
BoneName="LWheel1"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
BoneOffset=(Y=7.000000)
WheelRadius=32.000000
SupportBoneName="LSus1"
SupportBoneAxis=AXIS_Z
End Object
Wheels(8)=SVehicleWheel'DKoppIIVehicles.Ispolin.LWheel1'
Begin Object Class=SVehicleWheel Name=LWheel2
bPoweredWheel=True
SteerType=VST_Steered
BoneName="LWheel2"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="LSus2"
SupportBoneAxis=AXIS_Z
End Object
Wheels(9)=SVehicleWheel'DKoppIIVehicles.Ispolin.LWheel2'
Begin Object Class=SVehicleWheel Name=LWheel3
bPoweredWheel=True
SteerType=VST_Steered
BoneName="LWheel3"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="LSus3"
SupportBoneAxis=AXIS_Z
End Object
Wheels(10)=SVehicleWheel'DKoppIIVehicles.Ispolin.LWheel3'
Begin Object Class=SVehicleWheel Name=LWheel4
bPoweredWheel=True
SteerType=VST_Steered
BoneName="LWheel4"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="LSus4"
SupportBoneAxis=AXIS_Z
End Object
Wheels(11)=SVehicleWheel'DKoppIIVehicles.Ispolin.LWheel4'
Begin Object Class=SVehicleWheel Name=LWheel5
bPoweredWheel=True
SteerType=VST_Inverted
BoneName="LWheel5"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="LSus5"
SupportBoneAxis=AXIS_Z
End Object
Wheels(12)=SVehicleWheel'DKoppIIVehicles.Ispolin.LWheel5'
Begin Object Class=SVehicleWheel Name=LWheel6
bPoweredWheel=True
SteerType=VST_Inverted
BoneName="LWheel6"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="LSus6"
SupportBoneAxis=AXIS_Z
End Object
Wheels(13)=SVehicleWheel'DKoppIIVehicles.Ispolin.LWheel6'
Begin Object Class=SVehicleWheel Name=LWheel7
bPoweredWheel=True
SteerType=VST_Inverted
BoneName="LWheel7"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="LSus7"
SupportBoneAxis=AXIS_Z
End Object
Wheels(14)=SVehicleWheel'DKoppIIVehicles.Ispolin.LWheel7'
Begin Object Class=SVehicleWheel Name=Lwheel8
SuspensionTravel=0.000000
PenScale=5.000000
Softness=0.000000
bPoweredWheel=False
SteerType=VST_Fixed
BoneName="Lwheel8"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="LSus8"
SupportBoneAxis=AXIS_Z
End Object
Wheels(15)=SVehicleWheel'DKoppIIVehicles.Ispolin.Lwheel8'
VehicleMass=10.000000
ExitPositions(0)=(Y=-200.000000,Z=100.000000)
ExitPositions(1)=(Y=200.000000,Z=100.000000)
EntryRadius=300.000000
FPCamPos=(X=25.000000,Z=250.000000)
FPCamViewOffset=(X=-100.000000)
TPCamDistance=650.000000
TPCamLookat=(X=0.000000,Y=-200.000000,Z=0.000000)
TPCamWorldOffset=(Z=280.000000)
VehiclePositionString="Ispolin"
VehicleNameString="Ispolin"
HealthMax=1800.000000
Health=1800
Mesh=SkeletalMesh'DKVehiclesAnim.T18'
Skins(0)=Shader'DKVehiclesTex.T18.T18'
Skins(1)=Shader'DKVehiclesTex.ZTZ.ZTZ'
Skins(2)=Texture'DKVehiclesTex.Detail.TreadsV'
Skins(3)=Texture'DKVehiclesTex.Detail.invis'
Begin Object Class=KarmaParamsRBFull Name=KParams0
KInertiaTensor(0)=1.000000
KInertiaTensor(3)=3.000000
KInertiaTensor(5)=3.000000
KCOMOffset=(X=-0.300000,Z=-0.500000)
KStartEnabled=True
bKNonSphericalInertia=True
KActorGravScale=1.500000
KMass=15.000000
KMaxAngularSpeed=10000.000000
KMaxSpeed=10000.000000
KAngularDamping=0.000000
KLinearDamping=0.000000
bHighDetailOnly=False
bClientOnly=False
bKDoubleTickRate=False
bKStayUpright=True
bDestroyOnWorldPenetrate=True
bDoSafetime=True
KFriction=0.500000
KImpactThreshold=500.000000
End Object
KParams=KarmaParamsRBFull'DKoppIIVehicles.Ispolin.KParams0'
}
var Deco_IspolinChassis TankHull;
var Deco_IspolinTurret Turret;
var Deco_TireR TireR;
var Deco_TireL TireL;
var Deco_Ispolin_FlapA FlapA;
var Deco_Ispolin_FlapB FlapB;
var Deco_Ispolin_FlapC FlapC;
var DKHeadlightCorona LightR1;
var DKHeadlightCorona LightL1;
var DKHeadlightProjector ProjectR1;
var DKHeadlightProjector ProjectL1;
var DKBrakelightCorona BrakeR1;
var DKBrakelightCorona BrakeL1;
simulated function DrawHUD(Canvas Canvas)
{
local Material BGMaterial;
Super.DrawHUD(Canvas);
BGMaterial = Texture'DKVehiclesTex.Ammo.Ammo76';
Canvas.SetPos(Canvas.SizeX*0.0, Canvas.SizeY*0.85);
Canvas.SetDrawColor(255, 255, 255, 255);
Canvas.DrawTile(BGMaterial, 128, 64, 0, 0, BGMaterial.MaterialUSize(), BGMaterial.MaterialVSize());
BGMaterial = Texture'DKVehiclesTex.Ammo.IconAmmo76';
Canvas.SetPos(Canvas.SizeX*0.0, Canvas.SizeY*0.75);
Canvas.SetDrawColor(255, 255, 255, 255);
Canvas.DrawTile(BGMaterial, 128, 64, 0, 0, BGMaterial.MaterialUSize(), BGMaterial.MaterialVSize());
}
function KDriverEnter(Pawn p)
{
local int i;
Super.KDriverEnter(p);
SVehicleUpdateParams();
if (LightL1==none)
{
LightR1 = Spawn(class'DKHeadlightCorona',self,,Location);
if( !AttachToBone(LightR1,'LightR1') )
{
return;
}
}
if (LightL1==none)
{
LightL1 = Spawn(class'DKHeadlightCorona',self,,Location);
if( !AttachToBone(LightL1,'LightL1') )
{
LightL1.Destroy();
return;
}
}
if (BrakeR1==none)
{
BrakeR1 = Spawn(class'DKBrakelightCorona',self,,Location);
if( !AttachToBone(BrakeR1,'BrakeR1') )
{
BrakeR1.Destroy();
return;
}
}
if (BrakeL1==none)
{
BrakeL1 = Spawn(class'DKBrakelightCorona',self,,Location);
if( !AttachToBone(BrakeL1,'BrakeL1') )
{
BrakeL1.Destroy();
return;
}
}
if (ProjectR1==none)
{
ProjectR1 = Spawn(class'DKHeadlightProjector ',self,,Location);
if( !AttachToBone(ProjectR1,'LightR1') )
{
ProjectR1.Destroy();
return;
}
}
if (ProjectL1==none)
{
ProjectL1 = Spawn(class'DKHeadlightProjector ',self,,Location);
if( !AttachToBone(ProjectL1,'LightL1') )
{
ProjectL1.Destroy();
return;
}
}
SetTimer(0.1, True);
}
function DriverLeft()
{
local int i;
if (Level.NetMode != NM_DedicatedServer)
{
LightR1.Destroy();
LightL1.Destroy();
BrakeR1.Destroy();
BrakeL1.Destroy();
ProjectR1.Destroy();
ProjectL1.Destroy();
}
Super.DriverLeft();
}
simulated function Destroyed()
{
local int i;
if (Level.NetMode != NM_DedicatedServer)
{
LightR1.Destroy();
LightL1.Destroy();
BrakeR1.Destroy();
BrakeL1.Destroy();
ProjectR1.Destroy();
ProjectL1.Destroy();
}
Super.Destroyed();
}
simulated event DestroyAppearance()
{
TankHull = Spawn(class'Deco_IspolinChassis',,, Location + (vect(0,0,150) << Rotation));
Turret = Spawn(class'Deco_IspolinTurret',,, Location + (vect(0,0,250) << Rotation));
TireR = Spawn(class'Deco_TireR',,, Location + (vect(-120,100,20) << Rotation));
TireR = Spawn(class'Deco_TireR',,, Location + (vect(-80,100,20) << Rotation));
TireR = Spawn(class'Deco_TireR',,, Location + (vect(-40,100,20) << Rotation));
TireR = Spawn(class'Deco_TireR',,, Location + (vect(0,100,20) << Rotation));
TireR = Spawn(class'Deco_TireR',,, Location + (vect(40,100,20) << Rotation));
TireR = Spawn(class'Deco_TireR',,, Location + (vect(80,100,20) << Rotation));
TireL = Spawn(class'Deco_TireL',,, Location + (vect(-120,-100,20) << Rotation));
TireL = Spawn(class'Deco_TireL',,, Location + (vect(-80,-100,20) << Rotation));
TireL = Spawn(class'Deco_TireL',,, Location + (vect(-40,-100,20) << Rotation));
TireL = Spawn(class'Deco_TireL',,, Location + (vect(0,-100,20) << Rotation));
TireL = Spawn(class'Deco_TireL',,, Location + (vect(40,-100,20) << Rotation));
TireL = Spawn(class'Deco_TireL',,, Location + (vect(80,-100,20) << Rotation));
FlapA = Spawn(class'Deco_Ispolin_FlapA',,, Location + (vect(200,60,200) << Rotation));
FlapA = Spawn(class'Deco_Ispolin_FlapA',,, Location + (vect(180,40,200) << Rotation));
FlapA = Spawn(class'Deco_Ispolin_FlapA',,, Location + (vect(200,20,200) << Rotation));
FlapA = Spawn(class'Deco_Ispolin_FlapA',,, Location + (vect(180,-20,200) << Rotation));
FlapA = Spawn(class'Deco_Ispolin_FlapA',,, Location + (vect(200,-40,200) << Rotation));
FlapA = Spawn(class'Deco_Ispolin_FlapA',,, Location + (vect(180,-60,200) << Rotation));
FlapB = Spawn(class'Deco_Ispolin_FlapB',,, Location + (vect(-0,80,250) << Rotation));
FlapB = Spawn(class'Deco_Ispolin_FlapB',,, Location + (vect(-10,80,250) << Rotation));
FlapC = Spawn(class'Deco_Ispolin_FlapC',,, Location + (vect(-80,60,200) << Rotation));
FlapC = Spawn(class'Deco_Ispolin_FlapC',,, Location + (vect(80,-60,200) << Rotation));
FlapB = Spawn(class'Deco_Ispolin_FlapB',,, Location + (vect(10,-80,250) << Rotation));
FlapB = Spawn(class'Deco_Ispolin_FlapB',,, Location + (vect(0,-80,250) << Rotation));
}
static function StaticPrecache(LevelInfo L)
{
Super.StaticPrecache(L);
L.AddPrecacheMaterial(Material'DKVehiclesTex.T18.T18_Def');
L.AddPrecacheMaterial(Material'DKVehiclesTex.T18.T18_X_Def');
L.AddPrecacheMaterial(Material'DKVehiclesTex.ZTZ.ZTZ_Def');
L.AddPrecacheMaterial(Material'DKVehiclesTex.Detail.TreadsV');
L.AddPrecacheMaterial(Material'DKVehiclesTex.Detail.invis');
L.AddPrecacheMaterial(Material'Detail.caustics');
L.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Ispolin.Ispolin_X');
L.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Ispolin.Ispolin_T_X');
L.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Defender.Deco_Flap');
L.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Ispolin.Ispolin_FlapB');
L.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Defender.TireL');
L.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Defender.TireR');
L.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.TankShel');
}
simulated function UpdatePrecacheMaterials()
{
Level.AddPrecacheMaterial(Material'DKVehiclesTex.T18.T18_Def');
Level.AddPrecacheMaterial(Material'DKVehiclesTex.T18.T18_X_Def');
Level.AddPrecacheMaterial(Material'DKVehiclesTex.ZTZ.ZTZ_Def');
Level.AddPrecacheMaterial(Material'DKVehiclesTex.Detail.TreadsV');
Level.AddPrecacheMaterial(Material'DKVehiclesTex.Detail.invis');
Level.AddPrecacheMaterial(Material'Detail.caustics');
Super.UpdatePrecacheMaterials();
}
simulated function UpdatePrecacheStaticMeshes()
{
Level.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Ispolin.Ispolin_X');
Level.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Ispolin.Ispolin_T_X');
Level.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Defender.Deco_Flap');
Level.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Ispolin.Ispolin_FlapB');
Level.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Defender.TireL');
Level.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.Defender.TireR');
Level.AddPrecacheStaticMesh(StaticMesh'DKVehiclesMesh.TankShel');
Super.UpdatePrecacheStaticMeshes();
}
defaultproperties
{
TreadVelocityScale=275.000000
MaxGroundSpeed=500.000000
MaxAirSpeed=2000.000000
WheelSoftness=0.100000
WheelPenScale=2.000000
WheelPenOffset=0.000000
WheelAdhesion=1.000000
WheelInertia=0.070000
WheelLongFrictionFunc=(Points=(,(InVal=100.000000,OutVal=1.000000),(InVal=200.000000,OutVal=0.900000),(InVal=10000000000.000000,OutVal=0.900000)))
WheelLongSlip=0.001000
WheelLatSlipFunc=(Points=(,(InVal=30.000000,OutVal=0.010000),(InVal=45.000000),(InVal=10000000000.000000)))
WheelLongFrictionScale=2.000000
WheelLatFrictionScale=1.500000
WheelHandbrakeSlip=0.750000
WheelHandbrakeFriction=2.000000
WheelSuspensionMaxRenderTravel=50.000000
WheelSuspensionOffset=-20.000000
WheelSuspensionTravel=50.000000
FTScale=0.010000
ChassisTorqueScale=0.300000
MinBrakeFriction=0.000000
MaxSteerAngleCurve=(Points=((OutVal=50.000000),(InVal=500.000000,OutVal=20.000000),(InVal=600.000000,OutVal=10.000000),(InVal=1000000000.000000,OutVal=5.000000)))
TorqueCurve=(Points=((OutVal=7.000000),(InVal=200.000000,OutVal=8.000000),(InVal=1500.000000,OutVal=8.500000),(InVal=2500.000000)))
GearRatios(0)=-0.500000
GearRatios(1)=0.400000
GearRatios(2)=0.650000
GearRatios(3)=0.850000
GearRatios(4)=1.300000
TransRatio=0.100000
ChangeUpPoint=2000.000000
ChangeDownPoint=1000.000000
LSDFactor=1.000000
EngineInertia=0.050000
EngineBrakeFactor=0.000100
EngineBrakeRPMScale=0.000000
MaxBrakeTorque=50.000000
SteerSpeed=90.000000
TurnDamping=35.000000
StopThreshold=200.000000
HandbrakeThresh=200.000000
IdleRPM=500.000000
EngineRPMSoundRange=10000.000000
SteerBoneName="SteeringWheel"
SteerBoneAxis=AXIS_Z
SteerBoneMaxAngle=90.000000
DustSlipRate=1.000000
DustSlipThresh=10.000000
RevMeterScale=4000.000000
AirPitchDamping=25.000000
DriverWeapons(0)=(WeaponClass=Class'DKoppIIVehicles.IspolinT',WeaponBone="Turret")
PassengerWeapons(0)=(WeaponPawnClass=Class'DKoppIIVehicles.IspolinT2Pawn',WeaponBone="Turret2")
RedSkin=Shader'DKVehiclesTex.T18.T18'
BlueSkin=Shader'DKVehiclesTex.T18.T18'
IdleSound=Sound'DKoppIISound.Engine.TankEngine10'
StartUpSound=Sound'DKoppIISound.Engine.TankEngine10_up'
ShutDownSound=Sound'DKoppIISound.Engine.TankEngine10_end'
Begin Object Class=SVehicleWheel Name=RWheel1
SuspensionTravel=0.000000
PenScale=5.000000
Softness=0.000000
bPoweredWheel=False
SteerType=VST_Fixed
BoneName="RWheel1"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="RSus1"
SupportBoneAxis=AXIS_Z
End Object
Wheels(0)=SVehicleWheel'DKoppIIVehicles.Ispolin.RWheel1'
Begin Object Class=SVehicleWheel Name=RWheel2
bPoweredWheel=True
SteerType=VST_Steered
BoneName="RWheel2"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="RSus2"
SupportBoneAxis=AXIS_Z
End Object
Wheels(1)=SVehicleWheel'DKoppIIVehicles.Ispolin.RWheel2'
Begin Object Class=SVehicleWheel Name=RWheel3
bPoweredWheel=True
SteerType=VST_Steered
BoneName="RWheel3"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="RSus3"
SupportBoneAxis=AXIS_Z
End Object
Wheels(2)=SVehicleWheel'DKoppIIVehicles.Ispolin.RWheel3'
Begin Object Class=SVehicleWheel Name=RWheel4
bPoweredWheel=True
SteerType=VST_Steered
BoneName="RWheel4"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="RSus4"
SupportBoneAxis=AXIS_Z
End Object
Wheels(3)=SVehicleWheel'DKoppIIVehicles.Ispolin.RWheel4'
Begin Object Class=SVehicleWheel Name=RWheel5
bPoweredWheel=True
SteerType=VST_Inverted
BoneName="RWheel5"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="RSus5"
SupportBoneAxis=AXIS_Z
End Object
Wheels(4)=SVehicleWheel'DKoppIIVehicles.Ispolin.RWheel5'
Begin Object Class=SVehicleWheel Name=RWheel6
bPoweredWheel=True
SteerType=VST_Inverted
BoneName="RWheel6"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="RSus6"
SupportBoneAxis=AXIS_Z
End Object
Wheels(5)=SVehicleWheel'DKoppIIVehicles.Ispolin.RWheel6'
Begin Object Class=SVehicleWheel Name=RWheel7
bPoweredWheel=True
SteerType=VST_Inverted
BoneName="RWheel7"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="RSus7"
SupportBoneAxis=AXIS_Z
End Object
Wheels(6)=SVehicleWheel'DKoppIIVehicles.Ispolin.RWheel7'
Begin Object Class=SVehicleWheel Name=Rwheel8
SuspensionTravel=0.000000
PenScale=5.000000
Softness=0.000000
bPoweredWheel=False
SteerType=VST_Fixed
BoneName="Rwheel8"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="RSus8"
SupportBoneAxis=AXIS_Z
End Object
Wheels(7)=SVehicleWheel'DKoppIIVehicles.Ispolin.Rwheel8'
Begin Object Class=SVehicleWheel Name=LWheel1
SuspensionTravel=0.000000
PenScale=5.000000
Softness=0.000000
bPoweredWheel=False
SteerType=VST_Fixed
BoneName="LWheel1"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
BoneOffset=(Y=7.000000)
WheelRadius=32.000000
SupportBoneName="LSus1"
SupportBoneAxis=AXIS_Z
End Object
Wheels(8)=SVehicleWheel'DKoppIIVehicles.Ispolin.LWheel1'
Begin Object Class=SVehicleWheel Name=LWheel2
bPoweredWheel=True
SteerType=VST_Steered
BoneName="LWheel2"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="LSus2"
SupportBoneAxis=AXIS_Z
End Object
Wheels(9)=SVehicleWheel'DKoppIIVehicles.Ispolin.LWheel2'
Begin Object Class=SVehicleWheel Name=LWheel3
bPoweredWheel=True
SteerType=VST_Steered
BoneName="LWheel3"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="LSus3"
SupportBoneAxis=AXIS_Z
End Object
Wheels(10)=SVehicleWheel'DKoppIIVehicles.Ispolin.LWheel3'
Begin Object Class=SVehicleWheel Name=LWheel4
bPoweredWheel=True
SteerType=VST_Steered
BoneName="LWheel4"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="LSus4"
SupportBoneAxis=AXIS_Z
End Object
Wheels(11)=SVehicleWheel'DKoppIIVehicles.Ispolin.LWheel4'
Begin Object Class=SVehicleWheel Name=LWheel5
bPoweredWheel=True
SteerType=VST_Inverted
BoneName="LWheel5"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="LSus5"
SupportBoneAxis=AXIS_Z
End Object
Wheels(12)=SVehicleWheel'DKoppIIVehicles.Ispolin.LWheel5'
Begin Object Class=SVehicleWheel Name=LWheel6
bPoweredWheel=True
SteerType=VST_Inverted
BoneName="LWheel6"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="LSus6"
SupportBoneAxis=AXIS_Z
End Object
Wheels(13)=SVehicleWheel'DKoppIIVehicles.Ispolin.LWheel6'
Begin Object Class=SVehicleWheel Name=LWheel7
bPoweredWheel=True
SteerType=VST_Inverted
BoneName="LWheel7"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="LSus7"
SupportBoneAxis=AXIS_Z
End Object
Wheels(14)=SVehicleWheel'DKoppIIVehicles.Ispolin.LWheel7'
Begin Object Class=SVehicleWheel Name=Lwheel8
SuspensionTravel=0.000000
PenScale=5.000000
Softness=0.000000
bPoweredWheel=False
SteerType=VST_Fixed
BoneName="Lwheel8"
BoneRollAxis=AXIS_Y
BoneSteerAxis=AXIS_Y
WheelRadius=32.000000
SupportBoneName="LSus8"
SupportBoneAxis=AXIS_Z
End Object
Wheels(15)=SVehicleWheel'DKoppIIVehicles.Ispolin.Lwheel8'
VehicleMass=10.000000
ExitPositions(0)=(Y=-200.000000,Z=100.000000)
ExitPositions(1)=(Y=200.000000,Z=100.000000)
EntryRadius=300.000000
FPCamPos=(X=25.000000,Z=250.000000)
FPCamViewOffset=(X=-100.000000)
TPCamDistance=650.000000
TPCamLookat=(X=0.000000,Y=-200.000000,Z=0.000000)
TPCamWorldOffset=(Z=280.000000)
VehiclePositionString="Ispolin"
VehicleNameString="Ispolin"
HealthMax=1800.000000
Health=1800
Mesh=SkeletalMesh'DKVehiclesAnim.T18'
Skins(0)=Shader'DKVehiclesTex.T18.T18'
Skins(1)=Shader'DKVehiclesTex.ZTZ.ZTZ'
Skins(2)=Texture'DKVehiclesTex.Detail.TreadsV'
Skins(3)=Texture'DKVehiclesTex.Detail.invis'
Begin Object Class=KarmaParamsRBFull Name=KParams0
KInertiaTensor(0)=1.000000
KInertiaTensor(3)=3.000000
KInertiaTensor(5)=3.000000
KCOMOffset=(X=-0.300000,Z=-0.500000)
KStartEnabled=True
bKNonSphericalInertia=True
KActorGravScale=1.500000
KMass=15.000000
KMaxAngularSpeed=10000.000000
KMaxSpeed=10000.000000
KAngularDamping=0.000000
KLinearDamping=0.000000
bHighDetailOnly=False
bClientOnly=False
bKDoubleTickRate=False
bKStayUpright=True
bDestroyOnWorldPenetrate=True
bDoSafetime=True
KFriction=0.500000
KImpactThreshold=500.000000
End Object
KParams=KarmaParamsRBFull'DKoppIIVehicles.Ispolin.KParams0'
}
Infinite War v5.0.2 construction
UIP 2.0 - UIPP(UIP 2.1)
Сообщение отредактировал UberSoldier - Понедельник, 11 Января 16, 23:12