Command & Conquer Headquarters | Alles über C&C bei CNC HQ
HQ MENÜ
SOCIAL:
Filed under: HdR Modding News

BfME Modder Tutorial – Teil1

Wir werden jetzt für Gondor das „Gegengewichte“-Upgrade einbauen, dass die Reichweite für Katapulte um 25% erhöhen soll. Man soll eine Level 2 Belagerungswerkstatt dafür brauchen.
(Ich hab das Upgrade für meinen Mod gemacht, die Idee dazu hab ich aus Upgrade.ini (dazu später mehr))

Vorrausetzung für das Tutorial ist, daß ihr wißt,
-wie man die inis aus der ini.big extrahiert und wie man SuM mit den veränderten inis startet
-wie man neue Strings (Texte) in die lotr.csf einfügt (Hier ein kurzes Tutorial zum Thema lotr.csf)
-wie man Werte (Kosten, Bauzeiten und ähnliches) in der gamedata.ini definiert
-Grundwissen über die Funktionsweise von CommandButtons und Waffen

[Mehr]
Schritt 1
Wir öffnen die upgrade.ini und suchen den Eintrag „Upgrade_GondorCounterweights“. Dieses Upgrade war ursprünglich für SuM geplannt, wurde aber dann doch nicht eingebaut.
Wir wollen es jetzt wieder einbauen mit dem Effekt, das es Katapulten mehr Reichweite gibt (ka, was es Orginal für einen Effekt haben sollte).

Schritt 2
Wir verändern das Upgrade so:

Aus

Upgrade Upgrade_GondorCounterweights
DisplayName = UPGRADE:GondorCounterweights
Type = OBJECT
ButtonImage = BGWorkshop_Counterweights
Cursor = ArrowUpgrade
;UnitSpecificSound = GondorPorterVoiceCreate__________
End

wird

Upgrade Upgrade_GondorCounterWeights
DisplayName = UPGRADE:GondorCounterWeights
Type = OBJECT
BuildCost = GONDOR_PERSONAL_COUNTER_WEIGHTS_BUILDCOST
BuildTime = GONDOR_PERSONAL_COUNTER_WEIGHTS_BUILDTIME
ResearchSound = UpgradeFireStones
UpgradeFX = FX_PorterDeliverFireStones
End
Darüber fügen wir jetzt diesen Eintrag ein:
Upgrade Upgrade_TechnologyGondorCounterWeights
DisplayName = UPGRADE:GondorCounterWeights
Type = PLAYER
BuildCost = GONDOR_TECH_COUNTER_WEIGHTS_BUILDCOST
BuildTime = GONDOR_TECH_COUNTER_WEIGHTS_BUILDTIME
ResearchSound = PorterFireStonesVoiceReady
End

Upgrade_TechnologyGondorCounterWeights ist das Upgrade (oder genauer gesagt, die Technologie), die man in der Belagerungswerkstatt/Schmiede erforscht, während Upgrade_GondorCounterWeights das Upgrade ist, das man bei der Einheit selbst entwickelt.

DisplayName verweißt auf einen String in der lotr.csf, dies wird in SuM aber nicht gebraucht und kann daher ignoriert werden (stammt noch aus CnC Generals).

Type ist sehr wichtig, ein Upgrade mit Player muss vom Spieler nur einmal erforscht werden und wirkt dann auf alle Einheiten, ein Upgrade mit Object muss für jede Einheit seperat gekauft werden.

BuildCost und BuildTime sind die Kosten und die Bauzeiten der Upgrades, man kann sie hier direkt per Zahl hinschreiben oder sie in der gamedata.ini definieren (das werd ich hier nicht extra beschreiben).

ResearchSound und UpgradeFX sind die Licht und Soundeffekte, die abgespielt werden, wenn das Upgrade erforscht wurde. (ich hab hier einfach die Effekte eines anderen Upgrades genommen, da es zu lange dauern würde, neue Effekte zu machen)

Zusammenfassung:
Wir haben nun 2 Upgrades, einmal die Technologie Upgrade_TechnologyGondorCounterWeights, die man einmal (Type = PLAYER) in der Belagerungswerkstatt erforscht und einmal das Upgrade Upgrade_GondorCounterWeights, mit dem wir jede Einheit seperat ausrüsten müssen (Type = OBJECT).
Die Upgrade.ini kann nun geschloßen werden.

Schritt 3
Wir öffnen die CommandButton.ini und fügen am Ende 2 neue Buttons ein:
CommandButton Command_PurchaseTechnologyGondorCounterWeights
Command = PLAYER_UPGRADE
Options = NEED_UPGRADE CANCELABLE
Upgrade = Upgrade_TechnologyGondorCounterWeights
NeededUpgrade = Upgrade_StructureLevel2
TextLabel = CONTROLBAR:PurchaseTechnologyGondorCounterWeights
ButtonImage = BGWorkshop_Trebuchet
ButtonBorderType = UPGRADE
DescriptLabel = CONTROLBAR:ToolTipPurchaseTechnologyGondorCounterW eights
Radial = Yes
InPalantir = Yes
LacksPrerequisiteLabel = TOOLTIP:LackLevel2WorkshopCounterWeights
End
CommandButton Command_PurchaseUpgradeGondorCounterWeights
Command = OBJECT_UPGRADE
Options = NEED_UPGRADE OK_FOR_MULTI_SELECT CANCELABLE
Upgrade = Upgrade_GondorCounterWeights
NeededUpgrade = Upgrade_TechnologyGondorCounterWeights
TextLabel = CONTROLBAR:PurchaseUpgradeGondorCounterWeights
ButtonImage = BGWorkshop_Trebuchet
ButtonBorderType = UPGRADE
DescriptLabel = CONTROLBAR:ToolTipPurchaseUpgradeGondorCounterWeig hts
InPalantir = Yes
LacksPrerequisiteLabel = TOOLTIP:LackGondorCounterWeights
End

Command hat in dem Fall eine ähnliche Funktion wie Type in der Upgrade.ini, auch hier gibts PLAYER_UPGRADE und OBJECT_UPGRADE zur Auswahl (man sollte darauf achten, bei einem PLAYER-Upgrade auch einen PLAYER_UPGRADE-Commandbutton zu benutzen, das gleiche gilt für OBJECT-Upgrades).

Options gibt die Eigenschafften des Buttons an, NEED_UPGRADE bedeutet, das man ein anderes Upgrade braucht, um den Button zu drücken, OK_FOR_MULTI_SELECT heißt, dass man den Button auch verwenden kann, wenn mehrere Einheiten gleichzeitig ausgewählt sind und CANCELABLE bedeutet, dass man das Upgrade auch abbbrechen kann.

Upgrade ist das Upgrade, was dieser Button entwickelt

NeededUpgrade ist das Upgrade, welches man haben muss, um den Button zu benutzen. Upgrade_StructureLevel2 bedeutet, das das betrefffende Gebäude erst Rank2 haben muss, ehe man dort das Upgrade entwickeln kann.

TextLabel, DescriptLabel, LacksPrerequisiteLabel sind die Texte, die im Button angezeigt werden, sie müssen in der lotr.csf definiert werden (dies ist nicht Bestandteil des Tutorials)

ButtonImage ist das Icon, das für den Button verwendet wird (ich hab da das Icon des Katapultes genommen)

ButtonBorderType ist die Farbe des Randes, von dem der Button umgeben ist.

InPalantir legt fest, ob der Button links unten im Palantir angezeigt wird.

Zusammenfassung:
Die Technologie (Upgrade_TechnologyGondorCounterWeights) kann erst erforscht werden, wenn das Gebäude Rank2 hat (NeededUpgrade = Upgrade_StructureLevel2), während das Upgrade (Upgrade_GondorCounterWeights) erst erfoscht werden kann, wenn man schon Upgrade_TechnologyGondorCounterWeights erforscht hat (NeededUpgrade = Upgrade_TechnologyGondorCounterWeights).
Die CommmandButton.ini kann un geschloßen werden.

Schritt 4
Wir fügen nun die Buttons in die CommandSet.ini ein.

Dazu öffnen wir die Commandset.ini und suchen nach GondorTrebuchetCommandSet. Dies ändern wir so um:

CommandSet GondorTrebuchetCommandSet
1 = Command_Guard
2 = Command_ToggleTrebAutoAcquire
3 = Command_PurchaseUpgradeGondorFireStones
4 = Command_PurchaseUpgradeGondorCounterWeights
5 = Command_Bombard
13 = Command_AttackMove
14 = Command_Stop
15 = Command_Guard
End
GondorTrebuchetWallCommandSet verändern wir ebendfalls:
CommandSet GondorTrebuchetWallCommandSet
1 = Command_ToggleTrebAutoAcquire
2 = Command_PurchaseUpgradeGondorFireStones
3 = Command_PurchaseUpgradeGondorCounterWeights
4 = Command_Bombard
14 = Command_Stop
End
Ebendso ändern wir TrebComboHordeCommandSet:
CommandSet TrebComboHordeCommandSet
1 = Command_Guard
2 = Command_ToggleTrebAutoAcquire
3 = Command_PurchaseUpgradeGondorForgedBlades
4 = Command_PurchaseUpgradeGondorHeavyArmor
5 = Command_PurchaseUpgradeGondorFireStones
6 = Command_PurchaseUpgradeGondorCounterWeights
7 = Command_PurchaseUpgradeGondorBasicTraining
13 = Command_AttackMove
14 = Command_Stop
15 = Command_Guard
End

Zu guter letzt bearbeiten wir GondorWorkshopCommandSet (Achtung, hier fügen wir einen anderen Button ein als bei den anderen Commandsets):

1 = Command_ConstructGondorTrebuchet
2 = Command_PurchaseTechnologyGondorFireStones
3 = Command_PurchaseTechnologyGondorCounterWeights
4 = Command_Sell
End

Zusammenfassung:
Wir haben nun bei der Schmiede den Button für die Technologie (Command_PurchaseTechnologyGondorCounterWeights) und bei den Katapulten den Button für das Upgrade (Command_PurchaseUpgradeGondorCounterWeights) eingefügt.
Die CommandSet.ini kann nun geschloßen werden.

Schritt 6
Nun müssen wir die Einheiten so umbauen, damit das Upgrade auch ne Wirkung hat. Dazu öffnen wir die trebuchet.ini (datainiobjectgoodfactionunitsgondor).

Die folgenden Schritte sind die schwersten bei Einbau eines Upgrades, sie sind je nach Upgrade und Einheit verschieden.
Bei diesem Upgrade ist das Problem, das man die Reichweite nur mit einem Weaponset-Upgrade verändern kann, beim Katapult wird dies aber schon von den Feuerstein-Upgrade benutzt.
Wir müssen also nicht nur das neue Upgrade einbauen, sondern auch das alte umbauen.

Dazu suchen wir erstmal nach Weapon = PRIMARY GondorTrebuchetRockFlaming und ändern es zu Weapon = PRIMARY GondorTrebuchetWithCounterWeight.

Als nächstes ersetzt ihr

Behavior = WeaponSetUpgrade ModuleTag_FlamingRock
TriggeredBy = Upgrade_GondorFireStones
End

durch

Behavior = WeaponSetUpgrade ModuleTag_CounterWeights
TriggeredBy = Upgrade_GondorCounterWeights
End

Behavior = StatusBitsUpgrade ModuleTag_ProductionLegality2
TriggeredBy = Upgrade_GondorFireStones Upgrade_TechnologyGondorTechnologyGondorFireStones
RequiresAllTriggers = Yes
End

WeaponSetUpgrade legt fest, dass das Weaponset von Conditions = None zu Conditions = PLAYER_UPGRADE wechselt (das PLAYER_UPGRADE hat nichts mit dem TYPE oder dem Command aus der Upgrade.ini/CommandButton.ini zu tun)

StatusBitsUpgrade hat eigentlich keinen wirklichen Effekt, aber ein Upgrade muss im Code der Einheit erwähnt werden, sonst kann diese Einheit das Upgrade nicht erforschen (SubObjectsUpgrade werden dabei nicht beachtet).
Also mußte ich ein StatusBitsUpgrade einbauen, da man sonst keine Feuersteine mehr entwickeln könnte.

Zusammenfassung:
Bisher haben wir das Katapult so umgebaut, das es nach dem Gegengewichte-Upgrade (Upgrade_GondorCounterWeights) seine Waffe wechselt und nicht mehr nach dem Feuersteine-Upgrade (Upgrade_GondorFireStones).
Die Trebuche.ini kann nun geschloßen werden.

Momentmal, jetzt haben wir das normale Katapult verändert, doch wie sorgen wir dafür, das auch das Katapult auf der Mauer mit unserem neuen Upgrade ausgerüstet werden kann?

Ganz einfach, dies geschiet automatisch: Das Katapult auf der Mauer benutzt die gleichen Codes wie das normale Katapult, dh wir haben beide Katapulte auf einmal geändert.

Schritt 6
Die ist der letzte Schritt, nun brauchen wir die weapon.ini.
Sucht dort nach GondorTrebuchetRock. Die ist die normale Katapult-Waffe, so wie sie standartmäßig verwendet wird. Im unteren Teil der Waffe finden wir diese Zeilen:

ProjectileNugget
ProjectileTemplateName = GondorTrebuchetRockProjectile
WarheadTemplateName = GondorTrebuchetRockWarhead
End

ProjectileNugget
ProjectileTemplateName = GondorTrebuchetRockProjectile
WarheadTemplateName = GondorTrebuchetRockWarhead
RequiredUpgradeNames = Upgrade_TrebuchetTripleAmmo
End

ProjectileNugget
ProjectileTemplateName = GondorTrebuchetRockProjectile
WarheadTemplateName = GondorTrebuchetRockWarhead
RequiredUpgradeNames = Upgrade_TrebuchetTripleAmmo
End

Die letzten ProjectileNuggets stammen von einem Upgrade, das es in der veröffentlichten Version von SuM nicht mehr gibt, ändert die ProjectileNuggets daher so um:

ProjectileNugget
ProjectileTemplateName = GondorTrebuchetRockProjectile
WarheadTemplateName = GondorTrebuchetRockWarhead
ForbiddenUpgradeNames = Upgrade_GondorFireStones
End
ProjectileNugget
ProjectileTemplateName = GondorTrebuchetRockProjectileFlaming
WarheadTemplateName = GondorTrebuchetRockWarheadFlaming
RequiredUpgradeNames = Upgrade_GondorFireStones
End

Anstelle vom ursprünglichen 3 Nuggets gibts nur noch 2, die beide verwendet werden.
Das erste wird ganz normal verwendet, sobald aber das Feuerstein-Upgrade (Upgrade_GondorFireStones) erforscht wurde, wird es nicht mehr benutzt (ForbiddenUpgradeNames = Upgrade_GondorFireStones) .
Das 2. Nugget wird nur verwendet, wenn man das Feuerstein-Upgrade erforscht hat (RequiredUpgradeNames = Upgrade_GondorFireStones) . Somit hätten wir den Effekt des Feierstein-Upgrades wieder eingebaut, nun müssen wir noch unser Gegengewichts-Upgrade einbauen.

Dazu kopiert ihr die veränderte GondorTrebuchetRock-Waffe, nennt sie GondorTrebuchetWithCounterWeight und gebt ihr eine höhere Reichweite als der normalen Waffe (da das Upgrade die Reichweite um 25% erhöhen soll, wäre die neue Reichweite 525. Ihr könnt die Zahl direkt bei der neuen Waffe hinschreiben (AttackRange) oder wieder in die gamedata.ini eintragen.

Zusammenfassung:
Sobald man das Gegengewichts-Upgrade (Upgrade_GondorCounterWeights) entwickelt, wechselt das Katapult von der normalen Waffe (GondorTrebuchetRock) zu der geänderten Waffe mit mehr Reichweite (GondorTrebuchetWithCounterWeight). Sobald man das Feuerstein-Upgrade (Upgrade_GondorFireStones) erforscht hat, wird einfach automatisch das Geschoß gewechselt.

So, damit wären wir dann auch am Ende des Tutorial angekommen.

Sofern ihr auch alle benötigten Werte in der gamedata.ini eingetragen habt, solltet ihr euer neues Upgrade bauen können müssen.

Danke an Chris, für dieses gelungene Tutorial.