;--------------------------------------------------------------------------------------------------;
;--------------------------------------------------------------------------------------------------;
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.