If your adding a new sound its just a simple but long process.
This is for zero hour.
The sound file should be a wav with a project hertz of 44100 or 22050. (Don't ask me why)
The wav file should go in Command & Conquer(tm) Generals Zero Hour / Data / Audio / Sounds
- If any of the folders data audio or sounds are not there, just make them.
- You might have a different name for the default c&c generals zh folder.
- Remember the name of the wav EXACTLY
- All the sounds can be found in the Sound related BIG files. (speechenglish.big)
From there extract INIZH.big using FinalBig.
Take your SoundEffects.ini and these others.
- For Weapons - weapon.ini
- For things like my unit just died (explosion) - FX list
- For a person talking - the ini file under ini / object <- from there its pretty easy to find what file your units in (americainfantry😄 )
- There are some more but that's most of them .
In SoundEffects.ini open it up and use this code
- Voice
AudioEvent (NameYourSound)
Sounds = (WAVFileNameEXCACTLY)
Control = random
Volume = 60
Type = ui voice player
End
- Sound(like a weapon shooting)
AudioEvent (NameYourSound)
Sounds =(WAVFileNameEXCACTLY)
Volume = 95
Limit = 3 ;or any other number limit...
PitchShift = -10 10
VolumeShift = -20
Control = interrupt random
Priority = normal
Type = world shrouded everyone
End
- The WAV file name should be the name of your audio sound
- The Name your sound is any name you want your sound to be called (easier to just name it the audio files name)
- There are more sound types and different controls, priorities etc. Just hunt for a sound with them to find them.
After That the sounds go here
- FX list
FXList YetAnotherNameForTheSound
Sound
Name = TheSoundNameUsedIn(YourSoundName)
End
End
- From there FX's can be used in different places. Death of a Unit Rocket Shooting, and others. Its only there for complicated sounds with particles or just particles...
- Weapon
Weapon MarauderTankGun
PrimaryDamage = 60.0
PrimaryDamageRadius = 5.0
ScatterRadiusVsInfantry = 10.0 ;When this weapon is used against infantry, it can randomly miss by as much as this distance.
AttackRange = 170.0
MinTargetPitch = -15 ; we may not target anything outside of this pitch range
MaxTargetPitch = 15 ; ditto
DamageType = ARMOR_PIERCING
DeathType = NORMAL
WeaponSpeed = 300 ; dist/sec
WeaponRecoil = 10
ProjectileObject = MarauderTankShell
FireFX = WeaponFX_GenericTankGunNoTracer; <- A place for an FX list!
VeterancyFireFX = HEROIC WeaponFX_HeroicGenericTankGunNoTracer ; look up
ProjectileDetonationFX = WeaponFX_GenericTankShellDetonation
FireSound = MarauderTankWeapon RadiusDamageAffects = ALLIES ENEMIES NEUTRALS
DelayBetweenShots = 2000 ; time between shots, msec
ClipSize = 0 ; how many shots in a Clip (0 == infinite)
ClipReloadTime = 0 ; how long to reload a Clip, msec
; note, these only apply to units that aren't the explicit target
; (ie, units that just happen to "get in the way"... projectiles
; always collide with the Designated Target, regardless of these flags
ProjectileCollidesWith = STRUCTURES WALLS
End
- Voice
;------------------------------------------------------------------------------
Object AmericaInfantryMissileDefender
; *** ART Parameters ***
SelectPortrait = SAMissleDefender_L
ButtonImage = SAMissleDefender
UpgradeCameo1 = Upgrade_AmericaAdvancedTraining
UpgradeCameo2 = Upgrade_AmericaChemicalSuits
;UpgradeCameo3 = NONE
;UpgradeCameo4 = NONE
;UpgradeCameo5 = NONE
Draw = W3DModelDraw ModuleTag_01
OkToChangeModelColor = Yes
;***NOTE***
;A little history -- the MissileDefender now uses the assets of the TankHunter.
;The TH uses assets of the GLA tunnel defender, and the TD uses assets of the NEW
;MD. It was a design/art/code decision because the new missile defender animations
;don't suit that of a mobile/offensive unit with packing and unpacking.
DefaultConditionState
Model = NITHNT_SKN
IdleAnimation = NITHNT_SKL.NITHNT_STA 0 30
IdleAnimation = NITHNT_SKL.NITHNT_IDA
IdleAnimation = NITHNT_SKL.NITHNT_IDB
AnimationMode = ONCE
AnimationSpeedFactorRange = 0.8 1.2
TransitionKey = TRANS_Stand
WeaponMuzzleFlash = PRIMARY MuzzleFX
WeaponFireFXBone = PRIMARY Muzzle
WeaponLaunchBone = PRIMARY Muzzle
WeaponLaunchBone = SECONDARY Muzzle
End
AliasConditionState = REALLYDAMAGED
ConditionState = FIRING_A
Animation = NITHNT_SKL.NITHNT_ATA
AnimationMode = ONCE
TransitionKey = TRANS_START_FIRING
End
AliasConditionState = FIRING_A REALLYDAMAGED
ConditionState = BETWEEN_FIRING_SHOTS_A
Animation = NITHNT_SKL.NITHNT_STA
AnimationMode = ONCE
; this is basically a trick: this guy has a nontrivial animation for firing,
; and a long recycle time between shots. we want him to finish his fire animation
; (unless he's ordered to do something else), so this is just a handy trick that
; says, "if the previous state had this transition key, allow it to finish before
; switching to us, if possible".
WaitForStateToFinishIfPossible = TRANS_START_FIRING
End
AliasConditionState = BETWEEN_FIRING_SHOTS_A REALLYDAMAGED
ConditionState = MOVING
Animation = NITHNT_SKL.NITHNT_RNA 20
AnimationMode = LOOP
Flags = RANDOMSTART
TransitionKey = None
ParticleSysBone = None InfantryDustTrails
End
AliasConditionState = MOVING REALLYDAMAGED
ConditionState = RELOADING_A
Animation = NITHNT_SKL.NITHNT_ATA 10
AnimationMode = ONCE
;WeaponLaunchBone = PRIMARY WeaponA
End
AliasConditionState = MOVING RELOADING_A
AliasConditionState = MOVING RELOADING_A REALLYDAMAGED
ConditionState = DYING
Animation = NITHNT_SKL.NITHNT_DTA
Animation = NITHNT_SKL.NITHNT_DTB
AnimationSpeedFactorRange = 0.9 1.25
AnimationMode = ONCE
TransitionKey = TRANS_Dying
End
TransitionState = TRANS_Dying TRANS_Flailing
Animation = NITHNT_SKL.NITHNT_ADTA1
AnimationMode = ONCE
End
ConditionState = DYING EXPLODED_FLAILING
Animation = NITHNT_SKL.NITHNT_ADTA2
AnimationMode = LOOP
TransitionKey = TRANS_Flailing
End
ConditionState = DYING EXPLODED_BOUNCING
Animation = NITHNT_SKL.NITHNT_ADTA3
AnimationMode = ONCE
TransitionKey = None
End
;PARACHUTING ANIMATIONS
ConditionState = FREEFALL
Animation = NITHNT_SKL.NITHNT_PFL
AnimationMode = LOOP
TransitionKey = TRANS_Falling
End
AliasConditionState = FREEFALL REALLYDAMAGED
AliasConditionState = FREEFALL DYING
ConditionState = PARACHUTING
Animation = NITHNT_SKL.NITHNT_PHG
AnimationMode = LOOP
Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first
TransitionKey = TRANS_Chute
End
AliasConditionState = PARACHUTING REALLYDAMAGED
AliasConditionState = PARACHUTING DYING
TransitionState = TRANS_Falling TRANS_Chute
Animation = NITHNT_SKL.NITHNT_POP
AnimationMode = ONCE
Flags = PRISTINE_BONE_POS_IN_FINAL_FRAME ; our bone positions should come from the last frame, rather than the first
End
TransitionState = TRANS_Chute TRANS_Stand
Animation = NITHNT_SKL.NITHNT_PTD
AnimationMode = ONCE
End
End
; ***DESIGN parameters ***
DisplayName = OBJECT:MissileTeam
Side = America
EditorSorting = INFANTRY
TransportSlotCount = 1 ;how many "slots" we take in a transport (0 == not transportable)
WeaponSet
Conditions = None
Weapon = PRIMARY MissileDefenderMissileWeapon
Weapon = SECONDARY MissileDefenderLaserGuidedMissileWeapon ;Controlled by special ability
AutoChooseSources = PRIMARY FROM_PLAYER FROM_SCRIPT FROM_AI
AutoChooseSources = SECONDARY NONE
End
ArmorSet
Conditions = None
Armor = HumanArmor
DamageFX = InfantryDamageFX
End
ArmorSet
Conditions = PLAYER_UPGRADE
Armor = ChemSuitHumanArmor
DamageFX = InfantryDamageFX
End
VisionRange = 150
ShroudClearingRange = 400
Prerequisites
Object = AmericaBarracks
End
BuildCost = 300
BuildTime = 5.0 ;in seconds
ExperienceValue = 20 20 40 60 ;Experience point value at each level
ExperienceRequired = 0 100 200 400 ;Experience points needed to gain each level
IsTrainable = Yes ;Can gain experience
CrushableLevel = 0 ;What am I?: 0 = for infantry, 1 = for trees, 2 = general vehicles
CommandSet = AmericaInfantryMissileDefenderCommandSet
; *** AUDIO Parameters ***
VoiceSelect = MissileDefenderVoiceSelect
VoiceMove = MissileDefenderVoiceMove
VoiceGuard = MissileDefenderVoiceMove
VoiceAttack = MissileDefenderVoiceAttack
VoiceAttackAir = MissileDefenderVoiceAttack
VoiceFear = MissileDefenderVoiceFear
UnitSpecificSounds
VoiceGarrison = MissileDefenderVoiceGarrison
VoiceCreate = MissileDefenderVoiceCreate
VoiceEnter = MissileDefenderVoiceMove
VoiceGetHealed = MissileDefenderVoiceMove
End
; *** ENGINEERING Parameters ***
RadarPriority = UNIT
KindOf = PRELOAD SELECTABLE CAN_ATTACK ATTACK_NEEDS_LINE_OF_SIGHT CAN_CAST_REFLECTIONS INFANTRY SCORE
Body = ActiveBody ModuleTag_02
MaxHealth = 100.0
InitialHealth = 100.0
End
Behavior = ArmorUpgrade ModuleTag_Armor01
TriggeredBy = Upgrade_AmericaChemicalSuits
End
Behavior = ExperienceScalarUpgrade ModuleTag_03
TriggeredBy = Upgrade_AmericaAdvancedTraining
AddXPScalar = 1.0 ;Increases experience gained by an additional 100%
End
Behavior = AIUpdateInterface ModuleTag_04
AutoAcquireEnemiesWhenIdle = Yes
End
Behavior = AutoFindHealingUpdate ModuleTag_05 ; This update will have the unit go to a healing station if injured. jba
ScanRate = 1000 ; once a second.
ScanRange = 300 ;
NeverHeal = 0.85 ; don't heal if we are > 85% healthy.
AlwaysHeal = 0.25 ; if we get below 25%, find healing right away.
End
Locomotor = SET_NORMAL MissileDefenderLocomotor
Behavior = PhysicsBehavior ModuleTag_06
Mass = 5.0
End
Behavior = SpecialAbility ModuleTag_08
SpecialPowerTemplate = SpecialAbilityMissileDefenderLaserGuidedMissiles
UpdateModuleStartsAttack = Yes
InitiateSound = MissileDefenderVoiceAttackLaser
End
Behavior = SpecialAbilityUpdate ModuleTag_09
SpecialPowerTemplate = SpecialAbilityMissileDefenderLaserGuidedMissiles
StartAbilityRange = 200.0
AbilityAbortRange = 250.0 ;If the target moves outside this range, abort.
PreparationTime = 1000
PersistentPrepTime = 500
SpecialObject = LaserBeam
SpecialObjectAttachToBone = Muzzle01
End
;Added by JMC on 7/12/03 so that the skirmish AI can tell the missile defenders to hunt using
;the laser guided missiles.
Behavior = CommandButtonHuntUpdate ModuleTag_CBHunt ; allows use of command button hunt script with this unit.
End
Behavior = SquishCollide ModuleTag_10
;nothing
End
; --- begin Death modules ---
Behavior = SlowDeathBehavior ModuleTag_Death01
DeathTypes = ALL -CRUSHED -SPLATTED -EXPLODED -BURNED -POISONED -POISONED_BETA -POISONED_GAMMA
SinkDelay = 3000
SinkRate = 0.5 ; in Dist/Sec
DestructionDelay = 8000
FX = INITIAL FX_MissileDefenderDie
End
Behavior = SlowDeathBehavior ModuleTag_Death02
DeathTypes = NONE +CRUSHED +SPLATTED
SinkDelay = 3000
SinkRate = 0.5 ; in Dist/Sec
DestructionDelay = 8000
FX = INITIAL FX_GIDieCrushed
End
Behavior = SlowDeathBehavior ModuleTag_Death03
DeathTypes = NONE +EXPLODED
SinkDelay = 3000
SinkRate = 0.5 ; in Dist/Sec
DestructionDelay = 8000
FX = INITIAL FX_MissileDefenderDie
FlingForce = 8
FlingForceVariance = 3
FlingPitch = 60
FlingPitchVariance = 10
End
Behavior = SlowDeathBehavior ModuleTag_Death04
DeathTypes = NONE +BURNED
DestructionDelay = 0
FX = INITIAL FX_DieByFireUSA
OCL = INITIAL OCL_FlamingInfantry
End
Behavior = SlowDeathBehavior ModuleTag_Death05
DeathTypes = NONE +POISONED
DestructionDelay = 0
FX = INITIAL FX_DieByToxinUSA
OCL = INITIAL OCL_ToxicInfantry
End
Behavior = SlowDeathBehavior ModuleTag_Death06 ; don't forget to give it a new, unique module tag
DeathTypes = NONE +POISONED_BETA
DestructionDelay = 0
FX = INITIAL FX_DieByToxinUSA
OCL = INITIAL OCL_ToxicInfantryBeta ;you'll have to create this OCL and make it use the blue guys instead of green ones
End
Behavior = SlowDeathBehavior ModuleTag_Death07
DeathTypes = NONE +POISONED_GAMMA
DestructionDelay = 0
FX = INITIAL FX_DieByToxinUSA
OCL = INITIAL OCL_ToxicInfantryGamma
End
; --- end Death modules ---
Behavior = PoisonedBehavior ModuleTag_13
PoisonDamageInterval = 100 ; Every this many msec I will retake the poison damage dealt me...
PoisonDuration = 3000 ; ... for this long after last hit by poison damage
End
Geometry = CYLINDER
GeometryMajorRadius = 7.0
GeometryMinorRadius = 7.0
GeometryHeight = 12.0
GeometryIsSmall = Yes
Shadow = SHADOW_DECAL
ShadowSizeX = 14;
ShadowSizeY = 14;
ShadowTexture = ShadowI;
BuildCompletion = APPEARS_AT_RALLY_POINT
End
When your done with that here is where those files are saved.
Weapon.ini goes to C&C GeneralsZh / Data / INI
- Sound Effects.ini See Above
- FX list See Above
- Weapon.ini See Above
- Any file with units in them C&C GeneralsZh / Data / INI / Object
Notes
Sorry if this is a bit confusing, its just a lot of steps. I will be glad to clear up a part I explained badly.
Sorry also for the late reply. I had to go somewhere and left my computer on for the night.
Wow I typed a lot.
PS - I'm not gone yet!😮
Edited by user
16 years ago |
Reason: Ahh forgot to hit "enter"