Modding Union

Modderecke => Coding => Thema gestartet von: Azaril am 27. Nov 2013, 12:37

Titel: Gebäude nicht mehr für Sieg relevant
Beitrag von: Azaril am 27. Nov 2013, 12:37
Seid gegrüßt, Member der Modding-Union,
ich wende mich an euch aufgrund eines Problems, welches ich seit längerem habe und dessen Lösung mir bislang verschleiert blieb.
Lasst mich euch zuerst erklären, was ich getan habe, dass es zu diesem Problem gekommen ist:

Ich wollte, dass man in meiner Mod die Einheiten-produzierenden Gebäude nur innerhalb eines gewissen Radius um die Festungen bauen kann, wie bei Isengard in der Edain Mod.
Wie bei den Isengard-Gebäuden oben genannter Mod wandte ich also einen "WallHubBehavior" an und gab ihnen den KindOf "WALL_HUB".
Das Ergebnis: Gebäude können wie gewollt nur in einem bestimmten Radius um die Festung gebaut werden, allerdings müssen sie für einen Sieg nicht mehr zerstört werden, sondern nur noch die Festung.

Meine Frage an euch ist nun, wie man dieses Problem beheben kann, da man schon das ganze Lager zerstören sollte, um einen Spieler zu vernichten.
Ich hoffe, dass ihr mir wieder einmal weiterhelfen könnt.
MfG
Carmondai

PS: Bevor jemand danach fragt: Ich habe durch ausprobieren herausgefunden, dass es garantiert an dem "WallHubBehavior" und dem entsprechenden KindOf liegt und an nichts anderem.
Titel: Re:Gebäude nicht mehr für Sieg relevant
Beitrag von: Ealendril der Dunkle am 27. Nov 2013, 13:23
Es gibt zwei KindOfs, die diese von dir angesprochene Sache betreffen:
IGNORE_FOR_VICTORY -> Sorgt dafür, dass das Object unrelevant für den Sieg ist.
MP_COUNT_FOR_VICTORY -> Sorgt explizit dafür, dass das Object relevant für den Sieg ist.

Titel: Re:Gebäude nicht mehr für Sieg relevant
Beitrag von: Azaril am 27. Nov 2013, 15:48
Ja, ich kenne diese beiden KindOfs, die betroffenen Gebäude besitzen auch MP_COUNT_FOR_VICTORY, aber das scheint ignoriert zu werden, sobald ich WALL_HUB dazu schreibe.

Aus meiner ElvenBarracks.ini:
KindOf = PRELOAD STRUCTURE SELECTABLE IMMOBILE SCORE NEED_BASE_FOUNDATION MP_COUNT_FOR_VICTORY AUTO_RALLYPOINT FS_FACTORY LIVING_WORLD_BUILDING_MIRROR WALL_HUBMit diesem KindOf muss das Gebäude nicht zerstört werden, um den Spieler, dem es gehört, zu erledigen.

Wenn ich WALL_HUB auskommentiere, funktioniert es wieder und der Spieler hat erst verloren, wenn auch die Elbenkaserne zerstört wird.
Titel: Re:Gebäude nicht mehr für Sieg relevant
Beitrag von: Prinz von Dol Amroth am 27. Nov 2013, 16:38
Dann lass doch einfach ein unsichtbares Egg von der Kaserne beschwören. Welches das Kindof MPCount... hat und wenn die Kaserne zerstört wird, dann feuert es einfach eine Weapon, die das Egg zerstört. 
Titel: Re:Gebäude nicht mehr für Sieg relevant
Beitrag von: Ealendril der Dunkle am 27. Nov 2013, 16:49
Geht sogar noch einfacher: ObjectCreation-Module einbauen und dort eben jenes unsichtbare Object mit dem Kindof droppen. Dort folgenden SlavedBehaviour einfügen:

    Behavior = SlavedUpdate ModuleTag_Slave
        DieOnMastersDeath = Yes
    End


Mich wundert aber, dass du dieses Problem hast, Wenn ich mich recht entsinne, hatten wir das Problem bei Isengart nicht,
Titel: Re:Gebäude nicht mehr für Sieg relevant
Beitrag von: Gnomi am 27. Nov 2013, 16:52
Doch, wir hatten das Problem bei Isengart auch. Man hat nur überlebt, wenn man mindestens eine Zitadelle/Festung hatte.^^ (war zumindest das letzte Mal so, als ich es getestet hab)
Titel: Re:Gebäude nicht mehr für Sieg relevant
Beitrag von: Azaril am 27. Nov 2013, 18:31
Das Object:
Object VictoryCounter

Draw = W3DScriptedModelDraw ModuleTag_Draw
DefaultModelConditionState     
Model = NONE
End
    End

KindOf = MP_COUNT_FOR_VICTORY

Behavior = SlavedUpdate ModuleTag_Slave
DieOnMastersDeath = Yes
End

  Body = ActiveBody ModuleTag_02
    MaxHealth       = 1.0
  End

End

Und dann in der ElvenBarracks.ini:
Behavior = GrantUpgradeCreate ModuleTag_ActLikeAnOldUpgrade
UpgradeToGrant = Upgrade_TrebuchetTurret
GiveOnBuildComplete = Yes
End

Behavior = ObjectCreationUpgrade SpawnVictoryCounter
TriggeredBy = Upgrade_TrebuchetTurret
Delay = 0.0
ThingToSpawn = VictoryCounter
Offset = X:0 Y:0 Z:0
FadeInTime = 0
End

Aber kein Unterschied im Spiel. Der Spieler geht zugrunde, sobald die Festung zerstört wurde.