28. Mär 2024, 20:56 Hallo Gast.
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge. Hierbei werden gemäß Datenschutzerklärung Benutzername und Passwort verschlüsselt für die gewählte Dauer in einem Cookie abgelegt.


Select Boards:
 
Language:
 


Autor Thema: Vermillions Fragen  (Gelesen 11652 mal)

Vermilion

  • Elbischer Pilger
  • **
  • Beiträge: 157
Vermillions Fragen
« am: 17. Nov 2010, 14:24 »
Hallo ich will nach längerer Ruhezeit mal wieder ein bisschen was ändern an einer Mod von mir und bitte (mal wieder) um Hilfe. Mein Ziel:

Hat man eine Bestimmte Einheit gebaut (z.B. Mordor Sauron) soll der Bau eins Gebäudes deaktiviert werden
Umgekehrt auch (also das Gebäude zuerst, dann soll der Held bzw Heldenbutton deaktiviert werden)



« Letzte Änderung: 13. Apr 2013, 14:34 von Ealendril der Dunkle »

Aklas

  • Gastwirt zu Bree
  • **
  • Beiträge: 109
Re:Bau einer Bestimmten Einheit soll eine andere Blockieren
« Antwort #1 am: 8. Mär 2011, 18:09 »
Mach doch einfach ein upgrade(zxy), das beim bau deiner einheit freigeschaltet wird.
dieses upgrade  muss dann das commandset des baumeisters ändern (in eins wo das gebäude nich mehr vorkommt).
dann machst du noch ein anderes upgrade(xyz), welches beim bau deines Gebäudes freigeschaltet wird und den Baubutton der Einheit entfernt.

Script:
upgrade.ini
Upgrade Upgrade_xyz
  Type                = OBJECT
End

Upgrade Upgrade_zxy
  Type                = OBJECT
End

deinporter.ini
(das muss in die engineering parameter)
    Behavior = CommandSetUpgrade ModuleTag_CommandSetzxy
        TriggeredBy       = Upgrade_zxy
        CommandSet        = zxyCommandSet
    End

deingebäudemiteinheitdri n.ini
(das muss in die engineering parameter)
    Behavior = CommandSetUpgrade ModuleTag_CommandSetxyz
        TriggeredBy       = Upgrade_xyz
        CommandSet        = xyzCommandSet
    End

commandset.ini

CommandSet deingebäudemiteinheit_co mmandset
   1 = deine Einheit
   2 = irgendwas
   3 = irgendwas anderes
End

CommandSet xyzcommandset
  1   = irgendwas
  2   = irgendwas anderes
end

CommandSet deinporter_commandset
   1 = dein Gebäude (welches deaktiviert werden soll)
   2 = irgendwas
   3 = irgendwas anderes
  ...
End

CommandSet zxycommandset
  1   = irgendwas
  2   = irgendwas anderes
  ...
end

müsste irgendwie so funktionieren, is aber alles ausm gedächtnis ich hab das auch mal irgendwann gemacht.

Vermilion

  • Elbischer Pilger
  • **
  • Beiträge: 157
Re:Bau einer Bestimmten Einheit soll eine andere Blockieren
« Antwort #2 am: 11. Okt 2012, 23:49 »
Vielen Dank! :-)

Vermilion

  • Elbischer Pilger
  • **
  • Beiträge: 157
Re:Bau einer Bestimmten Einheit soll eine andere Blockieren
« Antwort #3 am: 13. Apr 2013, 01:58 »
Wollte das jetzt mal probieren, das Problem ist aber, die Einheit ist ein Held, der in der Festung rekrutiert wird. Mach ich aus dem Held n Ringhero (wegen dem upgrade) erscheint da auch ein button von einem eigenen Helden (obwohl ich die deaktiviert hab) und wenn ich das Gebäude baue sind mehrere buttons weg. Nebenbei kann ich den ringhero button zwar anklicken aber es tut sich nix.

Lostir

  • Elbischer Pilger
  • **
  • Beiträge: 180
Re:Bau einer Bestimmten Einheit soll eine andere Blockieren
« Antwort #4 am: 13. Apr 2013, 09:52 »
Es wäre glaube ich am besten, wenn du die Codes zeigen würdest, da man dir dann besser helfen kann. Wenn es um einen Helden geht, der nicht mehr gebaut werden darf, reicht es nicht den Button zu entfernen, sondern du musst statt dem Button einen Button einfügen, der unsichtbar ist. Das muss so sein, da Helden nach ihrer Position in der Volksheldenliste gebaut werden. Such dir einfach einen HEldenrekrutierbutton und mach bei Radial ein No.

thepinking

  • Elronds Berater
  • **
  • Beiträge: 314
  • WotE und FdK-Mod Coder
Re:Bau einer Bestimmten Einheit soll eine andere Blockieren
« Antwort #5 am: 13. Apr 2013, 11:53 »
Mach doch einfach ein upgrade(zxy), das beim bau deiner einheit freigeschaltet wird.
dieses upgrade  muss dann das commandset des baumeisters ändern (in eins wo das gebäude nich mehr vorkommt).
dann machst du noch ein anderes upgrade(xyz), welches beim bau deines Gebäudes freigeschaltet wird und den Baubutton der Einheit entfernt.

Script:
upgrade.ini
Upgrade Upgrade_xyz
  Type                = OBJECT
End

Upgrade Upgrade_zxy
  Type                = OBJECT
End

deinporter.ini
(das muss in die engineering parameter)
    Behavior = CommandSetUpgrade ModuleTag_CommandSetzxy
        TriggeredBy       = Upgrade_zxy
        CommandSet        = zxyCommandSet
    End

deingebäudemiteinheitdri n.ini
(das muss in die engineering parameter)
    Behavior = CommandSetUpgrade ModuleTag_CommandSetxyz
        TriggeredBy       = Upgrade_xyz
        CommandSet        = xyzCommandSet
    End

commandset.ini

CommandSet deingebäudemiteinheit_co mmandset
   1 = deine Einheit
   2 = irgendwas
   3 = irgendwas anderes
End

CommandSet xyzcommandset
  1   = irgendwas
  2   = irgendwas anderes
end

CommandSet deinporter_commandset
   1 = dein Gebäude (welches deaktiviert werden soll)
   2 = irgendwas
   3 = irgendwas anderes
  ...
End

CommandSet zxycommandset
  1   = irgendwas
  2   = irgendwas anderes
  ...
end

müsste irgendwie so funktionieren, is aber alles ausm gedächtnis ich hab das auch mal irgendwann gemacht.

Das ganze geht auch viel einfacher, ohne ein CommandSet erstellen zu müssen:
Das gebäude braucht ein (Player-) Upgrade als Vorraussetzung, welches man schon am beginn hat. Spawnt Sauron so entfernt er dieses Upgrade und das gebäude ist nicht mehr baubar. Stirbt Sauron spawnt ein Object das dir wieder das Upgrade gibt.

Vermilion

  • Elbischer Pilger
  • **
  • Beiträge: 157
Re:Bau einer Bestimmten Einheit soll eine andere Blockieren
« Antwort #6 am: 13. Apr 2013, 12:53 »
Ok danke  und wie geht das Player Upgrade? Das mit den Commandsets funzt nicht, hat keine wirkung.

Meine Codes:

Im Gebäude weches die Einheit deaktivieren soll:

Behavior = GrantUpgradeCreate ModuleTag_NoSauronCommandset
UpgradeToGrant = Upgrade_NoSauron
GiveOnBuildComplete = No ;// The ExemptStatus UnderConstruction hack doesn't work on foundation buildings.
End

Die Einheit welches das Gebäude entfernen soll:

Behavior = GrantUpgradeCreate ModuleTag_NoBraddurCommandset
UpgradeToGrant = Upgrade_baraddur
GiveOnBuildComplete = No ;// The ExemptStatus UnderConstruction hack doesn't work on foundation buildings.
End

Dann beim Porter:
Behavior = CommandSetUpgrade ModuleTag_CommandSetBaraddurporter
        TriggeredBy       = Upgrade_baraddur
        CommandSet        = BaraddurporterCommandSet
        End

Gleiches für die Festung, codes poste ich jetzt mal nicht prinzip ist ja das selbe und der browser hier spinnt etwas.

In den Commandsets fehlen dann einfach die jew. Buttons aber im spiel sind sie da.
« Letzte Änderung: 13. Apr 2013, 12:58 von Vermilion »

Vermilion

  • Elbischer Pilger
  • **
  • Beiträge: 157
Re:Bau einer Bestimmten Einheit soll eine andere Blockieren
« Antwort #7 am: 13. Apr 2013, 13:21 »
Bitte, kann mir jemand sagen wie das mit dem Playerupgrade gemeint ist? Finde da jetzt keine anderen Beispiele in den inis. Wo muss das Upgrade rein, beim Gebäude?

thepinking

  • Elronds Berater
  • **
  • Beiträge: 314
  • WotE und FdK-Mod Coder
Re:Bau einer Bestimmten Einheit soll eine andere Blockieren
« Antwort #8 am: 13. Apr 2013, 13:37 »
Mal eine Anleitung (Namen sind natürlich abänderbar)

Bei Sauron kommt das rein:
Behavior = RemoveUpgradeUpgrade ModuleTag_RemoveGebaeude
TriggeredBy = Upgrade_MordorFaction
UpgradeToRemove = Upgrade_Gebaeudebauen
RemoveFromAllPlayerObjects = Yes
End
Behavior = CreateObjectDie ModuleTag_062
DeathTypes = ALL
CreationList = OCL_Gebaeudebauen
End
In die OCL.ini diese:
ObjectCreationList OCL_Gebaeudebauen
CreateObject
ObjectNames = Gebaeudebauen
Count = 1
End
End
In die Playertemplate bei Mordor das:
   StartingUnit5 = Gebaeudebauen
    StartingUnitOffset5 = X:0 Y:0 Z:0
Dann noch ein neues Object
Object Gebaeudebauen
    EvaEnemyObjectSightedEvent = None  ; Not a real unit
    ; ***DESIGN parameters ***
    VisionRange     = 0
    EditorSorting   = SYSTEM
    KindOf          = NO_COLLIDE IMMOBILE UNATTACKABLE IGNORE_FOR_VICTORY IGNORE_FOR_EVA_SPEECH_POSITION MOVE_ONLY
    ThreatLevel     = 0

    ; *** ENGINEERING Parameters ***
    Body = ActiveBody ModuleTag_01
        MaxHealth        = 999999999
        InitialHealth    = 999999999
    End
    Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
        MinLifetime        = 5000
        MaxLifetime        = 5000
    End
Behavior = GrantUpgradeCreate ModuleTag_Sauron
     UpgradeToGrant      = Gebaeudebauen
     GiveOnBuildComplete = Yes
End
End
Der CommandButton sollte ungefähr so aussehen:
CommandButton  Command_PorterConstructMordorCirithUngolPrison
    Command              = DOZER_CONSTRUCT
    Options              = NEED_UPGRADE CANCELABLE
    Object               = MordorDolGoldurPrison
    NeededUpgrade        = Upgrade_Gebaeudebauen
    TextLabel            = CONTROLBAR:ConstructMordorDolGoldurPrison
    ButtonImage          = HSDolVerlies
    ButtonBorderType     = BUILD
    DescriptLabel        = CONTROLBAR:ToolTipMordorCirithUngolPrison
    Radial               = Yes  
End
Und natürlich gibt es Beispiele mit Playerupgrades, du must nur richtig suchen...
Upgrade Upgrade_Gebaeudebauen
    Type              = PLAYER
End

Vermilion

  • Elbischer Pilger
  • **
  • Beiträge: 157
Re:Bau einer Bestimmten Einheit soll eine andere Blockieren
« Antwort #9 am: 13. Apr 2013, 14:14 »
Vielen Dank das hilft schon enorm weiter! Leider wird Sauron aber noch gebaut, wenn das Gebäude vorher gebaut wird bzw da ist.

Was mir noch aufgefallen ist, ich hab zwar eingestellt dass das gebäude nur einmal gebaut werden kann aber schickt man zwei baumeister auf einmal los (wenn sie also noch beide zu dem bauort hinrollen) so bauen sie beide das gebäude.

« Letzte Änderung: 13. Apr 2013, 14:24 von Vermilion »

Ealendril der Dunkle

  • Gast
Re:Vermillions Fragen
« Antwort #10 am: 13. Apr 2013, 14:36 »
Bitte benutze nur noch einen Thread für deine Fragen. Du hast sage und schreibe über 20 Threads für einzelne Fragen erstellt. Ich habe den Titel des Threads jetzt geändert, halte dich zukünftig daran.
« Letzte Änderung: 13. Apr 2013, 14:44 von Ealendril der Dunkle »

thepinking

  • Elronds Berater
  • **
  • Beiträge: 314
  • WotE und FdK-Mod Coder
Re:Bau einer Bestimmten Einheit soll eine andere Blockieren
« Antwort #11 am: 13. Apr 2013, 15:02 »
Vielen Dank das hilft schon enorm weiter! Leider wird Sauron aber noch gebaut, wenn das Gebäude vorher gebaut wird bzw da ist.
Wo ist das Problem? Ich hab dir schon genau erklärt wie du ein ähnliches problem lösen kannst:
Das Gebäude entfernt nachdem es fertig ist ein Upgrade welches Vorraussetzung für Sauron ist und nachdem es weg ist bringt es dir wieder dieses Upgrade.

Vermilion

  • Elbischer Pilger
  • **
  • Beiträge: 157
Re:Vermillions Fragen
« Antwort #12 am: 13. Apr 2013, 15:09 »
Das Gebäude soll ja die Einheit wiederum blockieren nur ist das mit den Heldenbuttons in der Festung ja ne spezielle sache, da kann ich keinen speziellen commandbutton definieren wo dann "Neededupgrade" steht.  Füge ich einen neuen button hinzu (ähnlich wie der beim Entmoot wo Baumbart gebaut wird) so erscheint dieser Button nicht.

Ich müsste dann bzgl Sauron etwas in der Playertemplate (und Skirmishaidata für die KI) ändern. Aber ich denke das geht nicht oder geht über meine Verständnisse hinaus.

thepinking

  • Elronds Berater
  • **
  • Beiträge: 314
  • WotE und FdK-Mod Coder
Re:Vermillions Fragen
« Antwort #13 am: 13. Apr 2013, 15:28 »
Natürlich kann man ein NeededUpgrade einfügen.
Wenn Sauron Ringheld bleiben soll, ist es extrem einfach:
CommandButton Command_RingHeroReviveSlot
    Command                = REVIVE
    Options                = HIDE_WHILE_DISABLED CANCELABLE NEED_UPGRADE        ;Hides button while disabled.
    NeededUpgrade        = Upgrade_RingHero Upgrade_FortressRingHero
    TextLabel            = CONTROLBAR:GenericReviveHero
    ;ButtonImage        = ***Filled in automatically! No need to specify a button image.
    ButtonBorderType    = BUILD
    DescriptLabel        = CONTROLBAR:ToolTipGenericReviveHero
    InPalantir            = No
    Radial                = Yes
End
Diesen Eintrag hernehmen, kopieren, umbennen, Upgrade für Sauron hinzufügen, im CommandSet der Festung einfügen. Sollte kein Problem sein.


Vermilion

  • Elbischer Pilger
  • **
  • Beiträge: 157
Re:Vermillions Fragen
« Antwort #14 am: 13. Apr 2013, 15:55 »
Er ist leider kein Ringheld. Die gibt es bei mir nicht