;--------------------------------------------------------------------------------------------------;
;--------------------------------------------------------------------------------------------------;
Step one: Extract the following files from INIZH.big.
You will need the FinalBig extractor program.
Download FinalBig here: http://wagnerma.de/downloads.php
;----------------------
The INI files you will need:
CommandButton.ini
CommandSet.ini
Locomotor.ini
ObjectCreationList.ini
Science.ini
SpecialPower.ini
Weapon.ini
FactionBuilding.ini
;----------------------
Also, you will need the file called Generals.str
Download that here: http://forum.cncrene...?showtopic=9494
;--------------------------------------------------------------------------------------------------;
;--------------------------------------------------------------------------------------------------;
Step two: Setting up the files and folders you need.
;------
1. Create a folder called Data.
2. Place the Generals.str file inside that folder.
3. Create a folder called INI, inside the data folder.
4. Place all the ini files except FactionBuilding.ini inside there.
5. Create a folder inside the INI folder called Object.
6. Place the factionbuilding.ini file in there.
7. Inside the object folder, create a new text document. [Right-Click, then select New File]
8. Name the file whatever you want, but give it a .ini extension. [It could be New1337Stuff.ini or whatever you want]
;--------------------------------------------------------------------------------------------------;
;--------------------------------------------------------------------------------------------------;
Step three: Creating your airplane's coding.
Alright, boring stuff out of the way, here's where we get into creating your plane.
You can open .ini files with notepad or any other text editing program
1. Copy this into your custom file:
;----------------------------------------------------------------------------------------------------------
Object AmericaJetRaptorACStrike
; *** ART Parameters ***
SelectPortrait = SACRaptor_L
ButtonImage = SACRaptor
UpgradeCameo1 = Upgrade_AmericaLaserMissiles
UpgradeCameo2 = Upgrade_AmericaAdvancedTraining
UpgradeCameo3 = Upgrade_AmericaCountermeasures
UpgradeCameo4 = Upgrade_AmericaBunkerBusters
;UpgradeCameo5 = NONE
Draw = W3DModelDraw ModuleTag_01
DefaultConditionState
Model = AVRaptor
HideSubObject = BurnerFX01 BurnerFX02
WeaponLaunchBone = PRIMARY WeaponA
ParticleSysBone = Wingtip01 JetContrail
ParticleSysBone = Wingtip02 JetContrail
ParticleSysBone = Engine01 JetLenzflare
ParticleSysBone = Engine02 JetLenzflare
End
ConditionState = REALLYDAMAGED
Model = AVRaptor_D
HideSubObject = BurnerFX01 BurnerFX02
WeaponLaunchBone = PRIMARY WeaponA
ParticleSysBone = Wingtip01 JetContrail
ParticleSysBone = Wingtip02 JetContrail
ParticleSysBone = Engine01 JetLenzflare
ParticleSysBone = Engine02 JetLenzflare
ParticleSysBone = Smoke01 JetSmoke
ParticleSysBone = Engine01 JetEngineDamagedSmoke
End
OkToChangeModelColor = Yes
End
; ***DESIGN parameters ***
DisplayName = OBJECT:Raptor
EditorSorting = VEHICLE
Side = America
TransportSlotCount = 0 ;how many "slots" we take in a transport (0 == not transportable)
VisionRange = 300.0
ShroudClearingRange = 300.0
Prerequisites
Object = AmericaAirfield
End
WeaponSet
Conditions = None
Weapon = PRIMARY ACStrikeRaptorMissileWeapon
End
ArmorSet
Conditions = None
Armor = AirplaneArmor
DamageFX = None
End
ArmorSet
Conditions = PLAYER_UPGRADE
Armor = CountermeasuresAirplaneArmor
DamageFX = None
End
ExperienceValue = 50 100 150 400 ;Experience point value at each level
ExperienceRequired = 0 150 450 900;Experience points needed to gain each level
IsTrainable = Yes ;Can gain experience
;CommandSet = AmericaJetRaptorCommandSet
; *** AUDIO Parameters ***
SoundAmbient = RaptorAmbientLoop
SoundAmbientRubble = NoSound
; *** ENGINEERING Parameters ***
RadarPriority = UNIT
KindOf = PRELOAD CAN_CAST_REFLECTIONS CAN_ATTACK VEHICLE AIRCRAFT SCORE IGNORED_IN_GUI EMP_HARDENED
Body = ActiveBody ModuleTag_02
MaxHealth = 350.0
InitialHealth = 350.0
End
Behavior = SpecialPowerCompletionDie ModuleTag_03
SpecialPowerTemplate = SuperweaponAircraftCarrierStrike
End
Behavior = JetSlowDeathBehavior ModuleTag_05
FXOnGroundDeath = FX_JetOnGroundDeath
OCLOnGroundDeath = OCL_RaptorDeathFinalBlowUp
DestructionDelay = 99999999; destruction will happen when we
RollRate = 0.2
RollRateDelta = 100%;each frame, rollrate = rollrate * rollrateDelta
PitchRate = 0.0
FallHowFast = 110.0%;Bigger is faster (can be over 100%,it's a fraction of gravity)
FXInitialDeath = FX_RaptorDeathInitial
OCLInitialDeath = OCL_RaptorDeathInitial
DelaySecondaryFromInitialDeath = 500; in milliseconds
FXSecondary = FX_JetDeathSecondary
OCLSecondary = OCL_RaptorDeathSecondary
FXHitGround = FX_JetDeathHitGround
OCLHitGround = OCL_RaptorDeathHitGround
DelayFinalBlowUpFromHitGround = 200; in milliseconds
FXFinalBlowUp = FX_JetDeathFinalBlowUp
OCLFinalBlowUp = OCL_RaptorDeathFinalBlowUp
; DeathLoopSound = MICAL NEEDS TO MAKE ME
End
Behavior = PhysicsBehavior ModuleTag_05
Mass = 500.0
End
Behavior = TransportContain ModuleTag_092
Slots = 100
ScatterNearbyOnExit = No
OrientLikeContainerOnExit = Yes
KeepContainerVelocityOnExit = Yes
ExitPitchRate = 30
ExitBone = WeaponA
AllowInsideKindOf = PROJECTILE
DoorOpenTime = 0
NumberOfExitPaths = 0
DestroyRidersWhoAreNotFreeToExit = Yes
End
Behavior = ArmorUpgrade ModuleTag_Armor08
TriggeredBy = Upgrade_AmericaCountermeasures
End
Behavior = CountermeasuresBehavior ModuleTag_09
TriggeredBy = Upgrade_AmericaCountermeasures
FlareTemplateName = CountermeasureFlare
FlareBoneBaseName = Flare; Name of the base flare bone (Flare01, Flare02, Flare03)
VolleySize = 2; Number of flares launched per volley (requires bones)
VolleyArcAngle = 60.0; Max angle of flare relative to forward direction (with VolleySize of 1, flare will always goes straight back).
VolleyVelocityFactor = 2.0; Shoots out flares at a stronger velocity with a higher value.
DelayBetweenVolleys = 1000; Time between flare volleys
NumberOfVolleys = 3; Number of times the volleys will fire before reloading
ReloadTime = 0; After all volleys launched, then reloading must occur. If 0, then reloading occurs at airstrip only.
EvasionRate = 30%; With active flares, the specified percentage will be diverted.
ReactionLaunchLatency = 0; Reaction between getting shot at and the firing of the first volley of countermeasures.
MissileDecoyDelay = 200; A reported missile that has been determined to hit a decoy will wait this long before acquiring countermeasures.
End
Behavior = DeliverPayloadAIUpdate ModuleTag_DeliverPayload
End
Locomotor = SET_NORMAL RaptorACStrikeLocomotor
Behavior = OCLSpecialPower ModuleTag_ModuleTag_ModuleTag_99
SpecialPowerTemplate = SuperweaponAircraftCarrierStrike
OCL = SUPERWEAPON_AircraftCarrierStrike
CreateLocation = USE_OWNER_OBJECT
ScriptedSpecialPowerOnly = Yes
End
Behavior = FlammableUpdate ModuleTag_11
AflameDuration = 5000; If I catch fire, I'll burn for this long...
AflameDamageAmount = 3 ; taking this much damage...
AflameDamageDelay = 500 ; this often.
End
Geometry = Cylinder
GeometryIsSmall = Yes
GeometryMajorRadius = 7.0
GeometryMinorRadius = 7.0
GeometryHeight = 7.0
Shadow = SHADOW_VOLUME
ShadowSizeX = 89; minimum elevation angle above horizon. Used to limit shadow length
End
Alright, now here's where we disect this coding a bit.
These parts are absolutely nessecary to make your special power work:
Behavior = SpecialPowerCompletionDie ModuleTag_03
SpecialPowerTemplate = SuperweaponAircraftCarrierStrike
End
This tells the game that when this unit dies, it completes the special power. You don't have to worry too much about this, just make sure you spell the name of it right.
Behavior = TransportContain ModuleTag_092
Slots = 100
ScatterNearbyOnExit = No
OrientLikeContainerOnExit = Yes
KeepContainerVelocityOnExit = Yes
ExitPitchRate = 30
ExitBone = WeaponA
AllowInsideKindOf = PROJECTILE
DoorOpenTime = 0
NumberOfExitPaths = 0
DestroyRidersWhoAreNotFreeToExit = Yes
End
This plane is a lot like a troop crawler or helix. It "carries" the ammunition and drops it on its target.
Behavior = DeliverPayloadAIUpdate ModuleTag_DeliverPayload
End
Another quickie. This just tells you that this plane drops something.
Behavior = OCLSpecialPower ModuleTag_ModuleTag_ModuleTag_99
SpecialPowerTemplate = SuperweaponAircraftCarrierStrike
OCL = SUPERWEAPON_AircraftCarrierStrike
CreateLocation = USE_OWNER_OBJECT
ScriptedSpecialPowerOnly = Yes
End
This defines some values which relate to the aircraft object. Make sure the names are correct, and you won't have to mess around with this too much.
Also, copy this into the file as well:
;----------------------------------------------------------------------------------------------------------
Object FakePayloadObject
; ***DESIGN parameters ***
DisplayName = OBJECT:Cookie
Side = America
EditorSorting = SYSTEM
TransportSlotCount = 1;how many "slots" we take in a transport (0 == not transportable)
VisionRange = 0.0
ArmorSet
Conditions = None
Armor = BallisticMissileArmor
DamageFX = None
End
; *** ENGINEERING Parameters ***
KindOf = PROJECTILE BALLISTIC_MISSILE
Body = ActiveBody ModuleTag_02
MaxHealth = 1000.0
InitialHealth = 1000.0
SubdualDamageCap = 200
SubdualDamageHealRate = 100000
SubdualDamageHealAmount = 50
End
Behavior = InstantDeathBehavior DeathModuleTag_01
DeathTypes = NONE +DETONATED
End
Behavior = InstantDeathBehavior DeathModuleTag_02
DeathTypes = NONE +LASERED
FX = FX_GenericMissileDisintegrate
OCL = OCL_GenericMissileDisintegrate
End
Behavior = InstantDeathBehavior DeathModuleTag_03
DeathTypes = ALL -LASERED -DETONATED
FX = FX_GenericMissileDeath
End
Behavior = PhysicsBehavior ModuleTag_08
Mass = 1
End
Behavior = MissileAIUpdate ModuleTag_09
TryToFollowTarget = Yes
FuelLifetime = 0
InitialVelocity = 10
IgnitionDelay = 1000
End
Locomotor = SET_NORMAL SCUDMissileLocomotor
Geometry = Cylinder
GeometryMajorRadius = 8.0
GeometryHeight = 4.0
GeometryIsSmall = Yes
Shadow = SHADOW_DECAL
End
I'll tell you about this thing later.
;--------------------------------------------------------------------------------------------------;
;--------------------------------------------------------------------------------------------------;
Step Four: Creating the nuts and bolts which make this special power work.
In specialpower.ini, copy this into it. Read the comments there, they tell you some important info.
;-----------------------------------------------------------------------------
SpecialPower SuperweaponAircraftCarrierStrike
Enum = SPECIAL_NAPALM_STRIKE;This tells the AI how to use this special power. However, that requires some AI coding.
ReloadTime = 150000 ;Two minutes, 30 seconds.
InitiateSound = AircraftCarrierVoiceAttack;The sound you here when you pick a target.
RequiredScience = SCIENCE_AircraftCarrierStrike;The thing you spend a generals point on to make this work
PublicTimer = No;You don't want everyone to know when this is ready to fire, like a nuclear missile.
SharedSyncedTimer = Yes;No idea, just leave this as yes.
ViewObjectDuration = 20000;How long the shroud around the target is revealed
ViewObjectRange = 180;How much shroud is revealed around the target.
RadiusCursorRadius = 120;Radius of the target cursor.
ShortcutPower = Yes;Capable of being fired by the side-bar shortcut.
AcademyClassify = ACT_SUPERPOWER;Considered a powerful special power that a player could fire. Not for simpler unit based powers.
End
In weapon.ini, copy/paste this inside:
Weapon ACStrikeRaptorMissileWeapon
PrimaryDamage = 50.0
PrimaryDamageRadius = 15.0
SecondaryDamage = 35.0
SecondaryDamageRadius = 30.0
ScatterRadius = 120.0
AttackRange = 600.0
AcceptableAimDelta = 30
DamageType = JET_MISSILES
DeathType = EXPLODED
WeaponSpeed = 1000
ProjectileObject = RaptorJetMissile
ProjectileExhaust = MissileExhaust
VeterancyProjectileExhaust = HEROIC HeroicMissileExhaust
FireFX = None
FireSound = RaptorJetMissileWeapon
ProjectileDetonationFX = WeaponFX_JetMissileDetonation
RadiusDamageAffects = ALLIES ENEMIES NEUTRALS NOT_SIMILAR
DelayBetweenShots = 200
ClipSize = 5
ClipReloadTime = 8000
AutoReloadsClip = RETURN_TO_BASE
ProjectileCollidesWith = STRUCTURES
AntiAirborneVehicle = Yes
AntiAirborneInfantry = No
ShowsAmmoPips = Yes
End
This tells the game how the weapon works. Don't worry too much about this for now.
In science.ini, paste this inside:
Science SCIENCE_AircraftCarrierStrike
PrerequisiteSciences = SCIENCE_Rank1;Availiable to purchase at rank 1.
SciencePurchasePointCost = 1;Only costs 1 general's point.
IsGrantable = Yes
DisplayName = CONTROLBAR:AircraftCarrierStrike;Generals.str editing. I'll get more in-depth with this later.
Description = CONTROLBAR:AircraftCarrierStrikeScienceDescription;Generals.str editing again
End
This is the thing you purchase that allows you to fire the special power.
As always, read my comments.
In objectcreationlist.ini, paste this inside:
; -----------------------------------------------------------------------------
; -----------------------------------------------------------------------------
ObjectCreationList SUPERWEAPON_AircraftCarrierStrike
DeliverPayload
Transport = AmericaJetRaptorACStrike
FormationSize = 5;How many planes fly to the target.
FormationSpacing = 50.0;How far apart the planes are from each other.
StartAtPreferredHeight = Yes
StartAtMaxSpeed = Yes
MaxAttempts = 3
DropDelay = 200
Payload = FakePayloadObject 5;Details below
FireWeapon = Yes;It fires a weapon while going past the target.
DeliveryDistance = 600;How far away it begins attacking
WeaponConvergenceFactor = 1.0;Not sure what this is
DeliveryDecalRadius = 120;The target
DeliveryDecal
Texture = SCCNapalmStrike_China
Style = SHADOW_ALPHA_DECAL
OpacityMin = 25%
OpacityMax = 50%
OpacityThrobTime = 500
Color = R:255 G:156 B:0 A:255
OnlyVisibleToOwningPlayer = Yes
End
End
End
Remember the FakePayload object mentioned earlier? Well, this is what it's about:
This certain power does not drop any bombs in the regular method. Instead, it fires a weapon like any other aircraft.
If you changed the FakePayloadObject to MOAB, it would drop several MOAB's while flying over the target. Talk about overpowered.
Also, using the payload tag will cause the aircraft to drop the bombs like a carpet bomber would.
In locomotor.ini, paste this in:
;------------------------------------------------------------------------------
Locomotor RaptorACStrikeLocomotor
Surfaces = AIR
Speed = 180; in dist/sec
SpeedDamaged = 180; in dist/sec
MinSpeed = 45 ; in dist/sec
TurnRate = 200; in degrees/sec
TurnRateDamaged = 90 ; in degrees/sec
MaxThrustAngle = 60 ; in degrees (NOT degrees/sec)
Acceleration = 80 ; in dist/(sec^2)
AccelerationDamaged = 50 ; in dist/(sec^2)
Lift = 120; in dist/(sec^2)
LiftDamaged = 80 ; in dist/(sec^2)
Braking = 10 ; in dist/(sec^2)
MinTurnSpeed = 70 ; in dist/sec
PreferredHeight = 150
AllowAirborneMotiveForce = Yes
ZAxisBehavior = SURFACE_RELATIVE_HEIGHT
CirclingRadius = 100
Appearance = WINGS
PitchInDirectionOfZVelFactor = 1.0 ; how much to pitch according to our z-vel. 0=none, 1=lots (0=default)
PitchStiffness = 0.5 ; stiffness of the "springs" in the suspension forward & back.
RollStiffness = 0.4 ; stiffness of the "springs" in the suspension side to side.
PitchDamping = 0.9 ; How fast it damps. 0=perfect spring, bounces forever. 1=glued to terrain.
RollDamping = 0.8 ; How fast it damps. 0=perfect spring, bounces forever. 1=glued to terrain.
ForwardVelocityPitchFactor = 0 ; How much velocity will cause the front to lift/dip
LateralVelocityRollFactor = 0.2 ; How much cornering will cause the chassis to roll.
Apply2DFrictionWhenAirborne = Yes
AirborneTargetingHeight = 30
LocomotorWorksWhenDead = Yes ; JetSlowDeathBehavior needs this to function correctly
End
This controls how the aircraft moves. Don't make it any faster or slower for this aircraft, or else it will move really slow, or so fast it can't fire its missiles in time.
;--------------------------------------------------------------------------------------------------;
;--------------------------------------------------------------------------------------------------;
Number next: Creating the buttons for the special power.
Open commandbutton.ini and paste this in:
;-----------------------------------------------------------------------------------
CommandButton Command_AircraftCarrierStrike
Command = SPECIAL_POWER
SpecialPower = SuperweaponAircraftCarrierStrike
Options = CONTEXTMODE_COMMAND NEED_TARGET_POS NEED_SPECIAL_POWER_SCIENCE
TextLabel = CONTROLBAR:AircraftCarrierStrike
ButtonImage = SAcarrier
ButtonBorderType = ACTION; Identifier for the User as to what kind of button this is
DescriptLabel = CONTROLBAR:AircraftCarrierStrikeDescription
RadiusCursorType = NAPALMSTRIKE
InvalidCursorName = GenericInvalid
End
CommandButton Command_AircraftCarrierStrikeFromShortcut
Command = SPECIAL_POWER_FROM_SHORTCUT
SpecialPower = SuperweaponAircraftCarrierStrike
Options = CONTEXTMODE_COMMAND NEED_TARGET_POS NEED_SPECIAL_POWER_SCIENCE
TextLabel = CONTROLBAR:AircraftCarrierStrike
ButtonImage = SAcarrier
DescriptLabel = CONTROLBAR:AircraftCarrierStrikeDescription
RadiusCursorType = NAPALMSTRIKE
InvalidCursorName = GenericInvalid
End
CommandButton Command_PurchaseScienceAircraftCarrierStrike
Command = PURCHASE_SCIENCE
Science = SCIENCE_AircraftCarrierStrike
ButtonImage = SAcarrier
ButtonBorderType = UPGRADE; Identifier for the User as to what kind of button this is
End
These three buttons are what you use to make this special power work:
Button one: The command center's button. This is the button you select to fire it.
Button two: The shortcut button. This is the button you use on the sidebar.
Button three: The science purchase button. This is the button you click to buy the special power.
Now, into commandset.ini.
Search [ctrl+F] for americacommandcentercommandset.
Under number 10, create a number 11 slot, following the above examples.
Like this:
11 = Command_AircraftCarrierStrike
Now you've enabled the button on the command center. Each command set can only have 14 buttons.
Now, search for SpecialPowerShortcutUSA
These are the sidebar commands you find on the side of the screen.
There are only 10 slots, and all 10 are filled already.
You don't have to have a button here, you can always fire it from the command center.
If you want, you can replace the tenth line with this:
10 = Command_AircraftCarrierStrikeFromShortcut
Finally, search for CommandSet SCIENCE_AMERICA_CommandSetRank1
These are the buttons on the level one list in the general's powers menu.
Look at the developers comments if you wish, but replace the entire thing with this:
CommandSet SCIENCE_AMERICA_CommandSetRank1
1 = Command_PurchaseSciencePaladinTank
2 = Command_PurchaseScienceStealthFighter
3 = Command_PurchaseScienceSpyDrone
4 = Command_PurchaseScienceAircraftCarrierStrike;The new code line
END
The second-to-last step: Generals.str editing:
Open generals.str with notepad.
Paste this inside:
CONTROLBAR:AircraftCarrierStrike
"Aircraft Carrier Strike"
END
CONTROLBAR:AircraftCarrierStrikeDescription
"Call in a strike of Raptors from an off-map Aircraft Carrier \n \n Countdown Timer: 2:30"
END
CONTROLBAR:AircraftCarrierStrikeScienceDescription
"Call in a strike of Raptors from an off-map Aircraft Carrier \n \n Deploy from: Command Center"
END
This is the text that you see when you hover the pointer over the button. A "\n" is a symbol used to indicate moving one line down.
Save and move on.
Final step: Enabling the power for the command center
One simple step. Open factionbuilding.ini [in the object folder]
Search for americacommandcenter
Then, search for Upgrade_AmericaMOAB
Above where it saya Geometry = BOX, paste this:
Behavior = OCLSpecialPower ModuleTag_AircraftCarrierStrike
SpecialPowerTemplate = SuperweaponAircraftCarrierStrike
OCL = SUPERWEAPON_AircraftCarrierStrike
CreateLocation = CREATE_AT_EDGE_NEAR_SOURCE
End
And that's it.
Instalation:
;------------
Copy/paste the data folder over the one in the command and conquer generals zero hour main directory.
Then play the game
Uninstallation
;--------------------;
When you want to uninstall, go into the data folder and ONLY DELETE THE FOLLOWING FILES:
Generals.str
All the contents of the INI folder.
;--------------------------------------------------------------------------------------------------;
;--------------------------------------------------------------------------------------------------;
THE END
Have fun with your new General's Power! Also, feel free to tinker around with some of the settings. You can try things like adding more airplanes, making the weapon more powerful, or making the weapon entirely different.
Jordan
Your finished product should look something like this:

EDIT: Just played around with the text to make it a little more defined between steps.
EDIT 2: Added picture.
Edited by Jordan, 21 January 2007 - 21:35.