XTra KrazzY/KActorSound
This custom class adds Sounds and Dynamic Volumes to KActors.
You can modify the code but explain it first with double slashes (//)
Intro
Hello... I'm XTra KrazzY and I found out that KActors never make any sounds, even if you try and configure them in the "KActor" impactsounds...
It took me a couple of minutes to realize that it was hidden in the xPawn Ragdoll impact sounds code. So I took it a bit further and it took me a couple of HOURS to finish and compile my newlyborn invention: Dynamic Volume.
When a KActor hits something it makes a strong sound... even if the impactVel's (a vector that controlls the impact velocity) vector size was small, so I decided to make a new code that will also control the volume based on the impact velocity.
Disclaimer
You may use my code as you wish.
Code
//========================================= // Dynamic Volume Kactors // (C) Copyrights to XTra Krazzy 2004 //========================================= class KActorSound extends KActor; var(KActorSounds) array<sound> HitImpactSounds; var(KActorSounds) float HitImpactSoundInterval; var transient float HitLastSoundTime; var string HitOverride; //You can change the volume values... event KImpact(actor other, vector pos, vector impactVel, vector impactNorm) { local int numSounds, soundNum; local float impactVelSize; numSounds = HitImpactSounds.Length; //log("Impact Velocity :"$VSize(impactVel)); impactVelSize = VSize(impactVel); //log("the var: "$impactvelsize); if(numSounds > 0 && Level.TimeSeconds > HitLastSoundTime + HitImpactSoundInterval) { soundNum = Rand(numSounds); //Log("Play Sound:"$soundNum); if(impactVelSize > 0 && impactVelSize < 100) { PlaySound(HitImpactSounds[soundNum], SLOT_Pain, 0.5); } if(impactVelSize >= 100 && impactvelsize < 300) { PlaySound(HitImpactSounds[soundNum], SLOT_Pain, 1); } if(impactVelSize >= 300 && impactVelSize < 600) { PlaySound(HitImpactSounds[soundNum], SLOT_Pain, 2.5); } if(impactVelSize >= 600 && impactVelSize < 1000) { PlaySound(HitImpactSounds[soundNum], SLOT_Pain, 5); } if(impactVelSize >= 1000 && impactVelSize < 3000) { PlaySound(HitImpactSounds[soundNum], SLOT_Pain, 10); } if(impactVelSize >= 3000) { PlaySound(HitImpactSounds[soundNum], SLOT_Pain, 20); } HitLastSoundTime = Level.TimeSeconds; } } defaultproperties { Begin Object Class=KarmaParams Name=KarmaParams0 KStartEnabled=True KImpactThreshold=0 bHighDetailOnly=False bKAllowRotate=True KFriction=0.2 KRestitution=0.5 KMass=0.5 bClientOnly=False Name="KarmaParams0" End Object KParams=KarmaParams'KarmaParams0' }
Comments?
Right here:
XTra KrazzY it sux, can't believe i made this piece of cr*p that long ago...