3. Mai 2024, 13:38 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: Mehrere Abhängigkeiten für CommandButtons  (Gelesen 2619 mal)

Marioverraeter

  • Gastwirt zu Bree
  • **
  • Beiträge: 119
Mehrere Abhängigkeiten für CommandButtons
« am: 17. Mai 2010, 21:28 »
Hallo zusammen,

ich habe da seit ein paar Tagen ein Problem beim Coden einer erweiterten Version der CRP Submod und wollte fragen, ob ihr mir da weiterhelfen könnt - ich weiß wirklich nicht mehr weiter und habe auch sonst im Internet nichts dazu gefunden. :(

Es geht darum, einen commandbutton von mehr als einem Upgrade abhängig zu machen.
In dem Block eines Commands in der Commandbutton.ini findet sich ja die Zeile
Options = CANCELABLE NEED_UPGRADEletzteres wenn eben ein Upgrade notwendig ist. Dann eine zusätzliche Zeile:
NeededUpgrade = Upgrade_NameDesBenötigtenUpgradesAber was, wenn mehr als ein Upgrade als Voraussetzung erforderlich sein soll?

Ich habe schon folgendes probiert:
Options = CANCELABLE NEED_UPGRADE
NeededUpgrade = Upgrade_Name1 Upgrade_Name2
und:
Options = CANCELABLE NEED_UPGRADE
NeededUpgrade = Upgrade_Name1 AND Upgrade_Name2
und weiter auch, was manchmal sogar zu klappen schien aber sehr unzuverlässig war:
Options = CANCELABLE NEED_UPGRADE NEED_UPGRADE ;hier den Tag doppelt
NeededUpgrade = Upgrade_Name1
NeededUpgrade = Upgrade_Name2

Alles ohne Erfolg. Im Internet habe ich folgendes gefunden: CommandButtons dependent on multiple upgrades - The 3rd Age

Er umgeht das Problem einfach damit, wenn etwas ein echtes Upgrade und ein Upgrade_StructureLevelX erfordern soll, das echte Upgrade in die Zeile NeededUpgrade zu setzen und dann statt Upgrade_StructureLevelX kommt eine Zeile dazu namens:
RequireLevel = X ;X für das erforderliche Level, also 2 oder 3
Das hat bei mir aber erstens nicht funktioniert, zweitens, also unabhängig davon ob es klappt oder nicht, ist das nicht hinreichend da es dadurch immer noch nicht möglich ist, einen Befehl von mehr als einem Upgrade abhängig zu machen.

Dort wurde außerdem folgender Kommentar gepostet:
Zitat
Illuvatar - Sunday April 25, 2010 - 2:06

Uh... to shorten this tutorial up to about two sentences: You only need to put both upgrades in the TriggeredBy field in the behavior block (most likely in the unit ini file). Then just add the following field:
RequiresAllTriggers = Yes

Versteht jemand was er meint? Klar, jede unit hat in ihrem ini-Block Behavior Blocks, und da kann man in TriggeredBy mehrere Dinge einfügen, und Requires All Triggers, aber... inwiefern kann das auf die Rekrutierung der Einheit zurückgreifen? Ich sehe hier keinen Bezug zum CommandButton selbst! Außerdem, was wenn der CommandButton kein Button zum Unit Build ist? In meinem Problem geht es nämlich darum, ein eigenes Upgrade von mehreren vorangehenden Upgrades abhängig zu machen... und die Upgrades in der Upgrade.ini haben ja bekanntlich keine Behavior Blocks.

Somit habe ich darauf geantwortet:
Zitat
Marioverraeter - Sunday May 16, 2010 - 11:01

Interesting. In deed, this is exactly one problem I am bothering with at the time.

The method you present here is okay for only one upgrade + structure level requirement. However, it is not sufficient for commandbuttons dependent on multiple upgrades in general, with more than only one actual upgrade required.

When I was fiddling about with this, it seemed to work on adding NEED_UPGRADE multiple times in the Options line and then adding multiple NeededUpgrade lines. It "seemed" to work... but sometimes, it seemed to fail again. I am not sure about that.

Are there other experiences with this multiple dependencies issue? Would be great.

--------

P.S.: Illuvatar, could you explain this method further? I didn't actually get the point; a unit always has multiple behavior blocks. which one do you mean?

--------

Okay, so far... testing my own approach has resulted in a complete fail. It does not work either. Maybe it seemed to work because the last upgrade I got was randomly the one of those which was taken as *the* needed upgrade, I dont't know.

Anyway, it would be nice if someone has another idea or method to bring this to work. The inability to set dependencies on multiple upgrades just made my whole work of two weeks, an upgrade system for all factions, useless. Help appreciated.

Bisher wie gesagt ohne Antwort, ohne weitere Erfolge oder Ideen... aber es muss doch irgendwie möglich sein, mehr als ein Upgrade vorauszusetzen! 8-|

Jedenfalls, wenn jemand eine Idee hat oder eine Methode, die dabei funktioniert oder wenigstens einen Ansatz, wäre ich froh und dankbar.

Mit freundlichen Grüßen,
Mario
Appell an alle aktiven Edain Mod I-Spieler, sich am
Edain Mod I Community Revival Projekt
zu beteiligen! Schaut doch einfach mal vorbei. ;)

Dazu zum Spielen die
Edain Mod I Community Revival Edition Submod
- unsere Edain Mod-Version bis zum Release 2.0.

Manuel2811

  • Elbischer Pilger
  • **
  • Beiträge: 185
Re: Mehrere Abhängigkeiten für CommandButtons
« Antwort #1 am: 26. Mai 2010, 12:45 »
Wenn du uns dein genaueres Vorhaben einmal erklären könntest ließe sich das Ganze besser eingrenzen. Möchtest du es für einen Helden haben? Für eine Horde? Ein Gebäude? Was genau? Dann könnte ich dir dementsprechend ein paar "umwege" vorschlagen, die aber später ingame zum erwünschten Erfolg führen.

Greez

Manuel2811
Elvenstar Mod
Sollen Sie nur kommen!! Es gibt immer noch einen Coder im Elvenstar-Reich der noch nicht zu Staub zerfallen ist!!

Marioverraeter

  • Gastwirt zu Bree
  • **
  • Beiträge: 119
Re: Mehrere Abhängigkeiten für CommandButtons
« Antwort #2 am: 26. Mai 2010, 17:51 »
Okay, also... mir ging es erstmal nur allgemein darum, da ich es für mehrere Anwendungsbereiche bräuchte. In der letzten Zeit hatte ich geplant, konzipiert und herumexperimentiert, ein Upgrade-System (also soetwas wie ein TechTree wie man ihn aus anderen, komplexeren Strategiespielen als SuM1 kennt) fraktionsspezifisch zu implementieren. Ich habe viel Zeit mit der genauen Planung dieser Entwicklungen, ihrer Abhängigkeiten und Effekte verbracht. Grundsätzlich ist das Upgradesystem, so wie ich es mir eigentlich gedacht hatte, dezentral und einerseits verzweigt, andererseits auch wieder zusammenfließend. Intention dahinter war vor allem, dem Gameplay mehr Tiefe zu verleihen durch eine wesentlichere Strukturierung des Spielablaufs zwischen EarlyGame, MidGame und EndGame, bzw. der Übergänge dazwischen, um mehr Abwechslung in das Spielgeschehen zu bringen. Außerdem war die fraktionsspezifische Auslegung bereits für Abwechslung ausgelegt und insbesondere zur Betonung des wesentlichen, grundeigenen Charakters jeder Fraktion. Zuletzt kommt noch der Zweck dazu, im späteren Spielverlauf das Spiel auf einem "höheren Niveau" in Bezug auf Wirtschafts- und Militär-Management ablaufen zu lassen.
Eigentlich habe ich damit ja nun nur das selbe Problem (um beim TechTree-Bild zu bleiben) wie bei einem echten Baum auch: Die Äste können sich nur verzweigen, aber nicht wieder zusammenwachsen, was ich aber wollte. Nebenbei, da einige der Upgrades in den Zitadellen gekauft werden sollten, habe ich die Zuweisungen von CommandSets zu Zitadellen-Gebäuden neugeordnet, sodass nicht ein Commandset wie zuvor von mehreren Fraktionen genutzt wird, und dann die Fraktions-Zita-CommandSets um die gewünschten Befehle ergänzt.
Die Wirkungen der Upgrades sind vor allem spezifische Rohstoffproduktionsbesch leuniger, Freischaltungen bestimmter Einheiten und Gebäude (selten), in der ursprünglichen Auslegung insbesondere auch die Freischaltung von Helden, spezifische Einheitenrekrutierungsbe schleuniger und die Freischaltung größerer/erweiterter Horden/Bataillone zur direkten Rekrutierung.
Meistens verzweigen sich die Upgrade-Stränge zunächst und haben mehrere Ausgangspunkte, laufen dann aber zu den richtig starken End-Spitzen wieder zusammen.

Nun werde ich konkreter, um das Problem in Einzelfällen zu veranschaulichen:
1) Beispiel Rohan:
Rohan hat im wesentlichen drei Gruppen von Upgrades (zwischen denen jedoch noch Verzweigungen bestehen): Gehöfte-Ups, Zitadellen (Tech)-Ups, Rüstkammer (Einheiten)-Ups, und separat die Militär-Ups von Infanterie (Kaserne/Schießstand, ich verwende Edain, sollte aber keinen großen Unterschied machen) und Kavallerie. In den Stallungen lassen sich nun also drei Ups erforschen (ich kürze die Namen jetzt ab): FastCavalry, AdvancedCavalry und Eilrekrutierung. FastCavalry gibt einen dezenten Bauzeit-Bonus, AdvCav aktualisiert das CommandSet zu Rekrutierungsbefehlen größerer Bataillone, Eilrekrutierung gibt speziell für Kavallerie einen deutlichen Beschleunigungsbonus. Bei der Infanterie ist das auch so aufgebaut, nur die Wirkungen sind dabei schwächer, dafür erfordern die genannten-Kavallerie-Upgrades zuvor die Gehöfte-Verbesserungen. Derer gibt es zwei, Fruchtfolge und Erntesegen (letzteres stärker). Diese Eilrekrutierung wäre also abhängig von a) Rang 3 der Stallungen, b) Erntesegen, c) FastCav + AdvCav und d) einem Zita-Upgrade, Ruf des Königs. Technisch ergibt sich aber diese Schwierigkeit sogar schon an Erntesegen: Es erfordert Gehöft Stufe 3 und Fruchtfolge. Auch die Infanterie-Eilrekrutierung hat ein ähnliches, wenn auch kleineres Problem: Kaserne Rang 3, FastInf, AdvInf und Ruf des Königs. Die jeweilige Abhängigkeit von AdvInf/Cav könnte man terminieren, indem der Upgrade-Befehl einfach nur im aktualisierten CommandSet zur Verfügung steht. Aber das schmälert das Problem nur geringfügig. Und Eilrekrutierung einfach nur von Stallungen Rang 3 oder nur von Ruf des Königs abhängig zu machen, wäre balancingtechnisch undenkbar, dann müsste der Effekt so stark abgemildert werden, dass man es sich gleich sparen kann.

2) Beispiel Gondor
Das Gondor-Upgradesystem ist das komplexeste aller Fraktionen, Gondor kommt damit nur langsam in Fahrt, hat aber später die Möglichkeit, vergleichsweise weniger große aber dafür sehr starke Veteranen-Armeen ins Feld zu führen. Konkret ist da z.B. ein Problem: Merkantilismus. Ein finales Ökonomie-Up, das nochmal auf alle Einnahmen einen deutlichen Bonus errechnet, das aber zunächst recht teuer ist und für dessen Erforschung im Marktplatz zunächst alle anderen Öko-Ups (d.h. Erntesegen, Eisenerz, Belagerungsmaterial und evtl ein Stein-Up falls der Steinbruch ein AutoDeposit erhält) bereits gekauft sein müssen. Auch hier wird das so nicht funktionieren.
Ebenso bei "Militär-Akademie", einem Upgrade der Rang 3 Kaserne, das zur Rekrutierung größerer Armeen(-Bataillone) befähigt, hierzu aber erforschte Kenntnisse aus der Kaserne, dem Schießstand und der Zitadelle benötigt. Paralell dazu der Spezialfall "Kavallerie-Akademie" in den Stallungen Rang 3, er erfordert eine Freischaltung "Haferanbau" ohne sonstigen Effekt in den Gehöften, ebenso dieses Zitadellen-Up, wie gesagt Rang 3 des Gebäudes und die vorangehenden beiden (FastCav und AdvCav ähnlich wie bei Rohan aber mit schwächerer Wirkung). Dadurch sollte die Rekrutierung einer neuen Einheit (Schwanenritter, konnten in Edain sonst nur durch Imrahil beschworen werden) und größerer Ritterheere ermöglicht werden.

Auch für die bösen Fraktionen hätte ich Beispiele, z.B. die nachfolgende extreme Schnellrekrutierung in der Zitadelle von Mordor nach den einzelnen kleineren Beschleunigungen aus den einzelnen Gebäuden; auch das ist ein wichtiger Knotenpunkt, der sich so nicht umsetzen lässt.

Ganz kurz all das gesagt auf deine Nachfrage: Für PlayerUpgrades (im Code-Sinn). [ugly]

Ich möchte auch grundsätzlich nicht auf Abhängigkeiten verzichten und dafür Baukosten und -zeit nach oben ziehen, denn dann hätte ich bei dem Ziel versagt, den Spielablauf zu strukturieren, man könnte ja auch einfach gleich auf die besten sparen.


Und abschließend möchte ich noch anfügen, dass ich mir darüber im klaren bin, dass man einfach den Effekt des jeweiligen Upgrades von mehreren vorangegangenen Upgrades abhängig machen kann, statt den Erwerb dieses Upgrades selbst... das stimmt. Wäre mir aber nicht so lieb, weil die Verkettung wegfiele (man könnte die Wirkung ja schneller erreichen) und sich nochmal zusätzlicher Investitionsaufwand an Zeit und Geld bis zum Eintreten des Effektes ergeben sollte. Außerdem hat der Spieler dann ja keine Möglichkeit, im Spiel zu sehen, was das jetzt genau bewirkt und welche Folgen es hat, da das dazwischengeschaltete Upgrade (also der commandbutton mit Beschreibung usw., den man sonst ja i-wann mal drücken müsste) einfach entfällt.
Hättest du soetwas mit Umwegen gemeint?


Also, falls das der einzige Weg ist, dann werde ich diese Upgrade-Systeme wohl noch einmal reformieren, sodass ich eine bestmögliche Mitte finde, wie das Umgehen mehrerer Abhängigkeiten wo notwendig durch direkte Wirkungsauslösung vereinbar ist mit den Prinzipien des Systems, und diese dabei gewahrt bleiben.
Aber falls du doch Vorschläge hättest, wie ich das hinkriege, wäre ich dir überaus dankbar. :)

Liebe Grüße,
~Mario

PS: Zu Helden, ja das ist auch etwas; die sollen zwar nie von mehreren, aber eigentlich doch von genau einem Upgrade abhängig werden. Die einzige Möglichkeit die ich bisher dafür hatte, war, sie aus den BuildableHeroesMP der Playertemplate.ini zu entfernen, aus den CSs der Keeps die GenericReviveSlots rauszuhauen und durch eigene Command_ConstructXXX Befehle zu ersetzen, diese in der commandbutton.ini entsprechend zu definieren und in der object-ini des Helden im DESIGN Block die Zeile "MaxSimultaneousOfType = 1" (ohne "") hinzuzufügen. (Evtl die Buttons durch eine CommandSetUpgrade-Funktion erst erscheinen zu lassen, ändert daran aber nichts). Der wesentliche Nachteil: Man kann Helden nicht mehr wiederbeleben, sondern nur noch erneut rekrutieren. D.h., sie haben wieder dieselbe BuildTime und Cost (keine besonderen ReviveTime und ReviveCost Werte, was ja ein überaus sinnvoller Balancing-Faktor ist) und sie verlieren unwiderruflich ihren Rang.  Ich musste auf diese Technik ausweichen, da diese spieleigene Regelung mit reviveslots usw. keine feste Definition von NeededUpgrade für einen commandbutton der Heldenrekrutierung zulies, und mir außer dieser Technik keine weitere bekannt ist, wie man die mögliche Rekrutierung eines Helden von einem Upgrade abhängig machen kann. Gibt es da noch etwas anderes, direkteres? Danke schön schonmal. Falls es darauf jetzt aber so leicht keine Antwort gibt würde ich einen anderen Thread aufmachen, das hat nämlich nichts mit diesem Thema hier direkt zu tun, sondern ist ein eigenständiges Problem.

Vielen Dank nochmal für die Hilfe. :)
Appell an alle aktiven Edain Mod I-Spieler, sich am
Edain Mod I Community Revival Projekt
zu beteiligen! Schaut doch einfach mal vorbei. ;)

Dazu zum Spielen die
Edain Mod I Community Revival Edition Submod
- unsere Edain Mod-Version bis zum Release 2.0.

Ealendril der Dunkle

  • Gast
Re: Mehrere Abhängigkeiten für CommandButtons
« Antwort #3 am: 27. Mai 2010, 13:43 »
Ich kann dir dazu nur sagen, dass man in SuMII mehrere Upgrades im Commandbutton-Parameter: NeededUpgrade = blabla angeben kann. In SuMI scheint dies scheinbar nicht zu funktionieren, deshalb wüsste ich nicht, wie man das anders lösen könnte.
Die einzige andere Lösung, die mir hierbei einfallen würde, wäre das Commandset des zuständigen Gebäudes mit jedem weiteren Upgrade switchen zu lassen. So könntest du in  dem Commandsetupgradebehavio ur per RequiredAllTriggers eben dort jene Upgrades angeben, die bewirken: Sobald diese Upgrades erhalten wurden, switcht das Commandset des Gebäudes und ermöglicht somit die Rekrutierung neuer Einheiten.
« Letzte Änderung: 27. Mai 2010, 13:48 von Ealendril der Dunkle »

Manuel2811

  • Elbischer Pilger
  • **
  • Beiträge: 185
Re: Mehrere Abhängigkeiten für CommandButtons
« Antwort #4 am: 27. Mai 2010, 22:20 »
Ich hatte gerade das Gefühl einen zähen Politik-Artikel ausm Spiegel oder Stern Zeitung durchzulesen und habe in der Mitte abgebrochen zu lesen....und da werd ich wohl nicht der Einzige sein.

Beschränk dich bitte mal aufs Wesentliche.....
Sollen Sie nur kommen!! Es gibt immer noch einen Coder im Elvenstar-Reich der noch nicht zu Staub zerfallen ist!!

Marioverraeter

  • Gastwirt zu Bree
  • **
  • Beiträge: 119
Re: Mehrere Abhängigkeiten für CommandButtons
« Antwort #5 am: 28. Mai 2010, 00:57 »
In Sum II geht das? Hm, tja, vielleicht doch die falsche Plattfrom.^^ Nein nein, wir bleiben SuM I treu...

Die beschriebene Methode ist praktisch dieselbe wie ich schilderte: Schlichtweg die *Wirkung* eines Upgrades von mehreren abhängig zu machen, nicht das Upgrade selbst. Das wäre ein Kompromiss, der zumindest noch umsetzbar wäre, ich hoffte allerdings auf eine Möglichkeit, die den Erwerb dieses Upgrades selbst; mitsamt Erscheinung des Buttons, Baukosten und Bauzeit dazwischen; ermöglicht, statt es schlichtweg zu umgehen.

Deine Schilderung bringen mich jetzt allerdings auf eine Idee: Man könnte doch ein solches CommandsetUpdateBehavior (mit den entsprechenden required triggers) dem Gebäude beifügen, das den Button des Upgrades selbst einblendet. Damit wären alle Bedingungen erfüllt! Bis auf zwei Nachteile:
A) Der Spieler weiß zuvor nicht, dass er später die Möglichkeit haben wird, dieses Upgrade zu kaufen. Falls er also zu den vielen vielen Spielern gehört, die sich nicht die Texte (Readmes usw) einer Mod durchlesen, bevor sie sie spielen (und erstrecht nicht so ausführliche wie ich sie zu schreiben pflege), dann kann er eigentlich nur darüber stolpern. Das ist natürlich ungünstig... aber dieses Problem könnte man ebenfalls umgehen, indem man dem alten Commandset einen FakeButton beifügt, der die Informationen über das Upgrade enthält mit dem Verweis auf die Abhängigkeiten, der aber nicht benutzt werden kann. Durch das csUpdate wird er dann durch den echten Button ersetzt. Problem gelöst.
B) Die einzige echte Einschränkung, die verbleibt, liegt darin, dass pro Gebäude immer nur ein solches commandsetupgradebehavio r paralell angewandt werden kann. Zwar ließen sich diese verketten, aber da in einem csupdatebehavior immer ein vollständiges cs angegeben wird, und nicht einfach die Hinzufügung eines einzelnen commands, können nicht mehr als einer paralell laufen, da sonst bei Freischaltung des zweiten der Effekt des ersten wieder verschwinden oder der Effekt des anderen gleich auch ohne dessen Erwerb mitgeliefert würde. Nur eine eindeutige, einwegige Verkettung solcher Effekte ist möglich.
Dieses Problem hat mir in anderem Zusammenhang auch die Möglichkeit genommen, mehr als einen Helden an einen construct-Befehl statt revive slot zu koppeln und ihn dennoch wiederbelebbar zu machen: Das funktioniert normal, indem man als einen Effekt der Rekrutierung des Helden beifügt, dass das Commandset abermals aktualisiert wird, um den Rekrutierungsbefehl zu entfernen, und der Held somit später ja wieder einen Revive Slot füllt, aber nicht noch ein zweites Mal rekrutiert werden kann. So funktioniert es z.B. auch bei Edain I König Elessar und Sauron. Allerdings ist das aus genau diesem Grund nicht mit mehr als einem Helden möglich, weshalb ich wie vorhin geschildert zudem auch noch vor dem angesprochenen Helden-Problem stehe. Wahrscheinlich werde ich dafür aber noch einen separaten Thread aufmachen, es ist jedenfalls eine andere Geschichte.

Was die Auswirkung dieser Einschränkung auf dieses konkrete Problem an den Upgrade-Systemen betrifft, so bin ich nun doch beruhigt: Nur wenige Knotenpunkte in diesem Netzwerk haben ja noch dieses Problem, und in aller Regel sind es nie mehr als einer in einem Gebäude. Sollte doch eine Ausnahme verbleiben, so wird es mir doch möglich sein, ohne große Abstriche eine leichte Umplanung vorzunehmen, die die technischen Möglichkeiten berücksichtigt und trotzdem das gesetzte Ziel erfüllt. Das Problem ist damit praktisch und in seiner Dringlichkeit gelöst.

Also in diesem Sinne, vielen Dank euch beiden für die Impulse! :)
Ich kann mit den gesammelten Erkenntnissen meine Arbeit nun fortsetzen, und in der nächsten Version der Submod wird höchstwahrscheinlich das besagte Upgradesystem in praktisch vollem Umfang enthalten sein. Ich würde den Thread aber dennoch gerne offen lassen, falls jemand doch noch weitere Wege kennt, um dieses Problem zu bewältigen, oder ein eng verwandtes Problem vorbringen möchte.



Ich fasse nun zum Schluss die Ergebnisse zusammen:

Ziel: Gegenstand des Themas ist, ein Upgrade in SuMI von mehreren vorangestellt notwendigen Upgrades abhängig zu machen, um in dem Entwicklungssystem einer Fraktion "Knotenpunkte" zu ermöglichen.

Problem: In SuM I ist es nicht möglich, einem CommandButton mehrere NeededUpgrades zuzuweisen. So direkt lässt sich das gesetzte Ziel also nicht erreichen.

Lösungen: Während es offenbar nicht direkt möglich ist, den Erwerb eines Upgrades (also seinen commandbutton) von mehr als einem Upgrade abhängig zu machen, gibt es doch mehrere mögliche Methoden, dieses Problem zu umgehen und somit praktisch und näherungsweise zu lösen. Diese sind:
1) Kurzschluss des UpgradeButtons - Bei dieser Methode entfällt das Upgrade an sich und als CommandButton. Stattdessen werden dessen gewünschte Effekte (in Form von Behavior Blöcken in den entsprechenden INIs) direkt abhängig gemacht von allen notwendigen, gegebenen Upgrades durch die Zeile "RequiresAllTriggers = Yes" im Behavior Block und der Aufführung aller notwendigen Upgrades als Trigger dieses Behaviors. Dadurch wird das Upgrade selbst praktisch "kurzgeschlossen". Diese Methode funktioniert uneingeschränkt mit einer beliebigen Menge von Vor-Upgrades, aber es entfällt der tatsächliche Kauf (und somit Baukosten und Bauzeit) dieses Upgrades selbst. Die Information über das Upgrade sollte durch einen FakeButton angegeben werden.
2) Update des CommandSets des Upgradegebäudes - Bei dieser Methode kommt es sehr wohl zum Einsatz des CommandButtons jenes Upgrades, aber seine Abhängigkeit von vorangehenden Upgrades ist nicht direkt am Button, sondern wird indirekt dem Button vorausgesetzt: Das Gebäude, dessen CommandSet den Button enthält, erhält ein Behavior CommandSetUpdate, mit dem sein CommandSet von einer ursprünglichen Version mit einem FakeButton aktualisiert wird auf eines mit dem echten Button des Upgrades. Dieses Behavior CommandSetUpdate erfordert alle seine Trigger, und diese Trigger sind ebenso alle diese vorangehenden Upgrades. Somit ist die volle Funktionalität des Upgradeverhaltens gewährleistet. Nachteil bei dieser Methode ist, dass jedes Gebäude immer nur ein solches CommandSetUpdate Behavior erhalten kann, bzw. zumindest nur eine einsträngige, einwegige Verkettung solcher Behaviors, und nicht mehrere paralell. Das liegt daran, dass ein solches CommandSetUpdate immer das ganze CommandSet ersetzt, statt nur einen bestimmten Punkt hinzuzufügen, und die etwaige Vorhandenheit oder Nichtvorhandenheit eines anderen CSUpdates hierbei nicht berücksichtigt werden kann.

Fazit:Das Ziel kann zwar nicht generell direkt durch echte Lösung des Problems erfüllt werden, dennoch ist es möglich, dieses praktisch und näherungsweise zu erreichen. Um also mehrere Upgrades als allesamt notwendige Voraussetzungen für einen Upgrade-CommandButton einzusetzen, hat man die Möglichkeiten, entweder die Abhängigkeiten des Buttons durch ein CommandSetUpdate vorzuverlagern/vorwegzunehmen, oder den Button wo notwendig einfach gänzlich zu entfernen und stattdessen diese mehreren Abhängigkeiten direkt auf die gewünschte Wirkung des vormaligen Upgrades zu beziehen. In beiden Fällen ist es auch möglich, entfallene Buttons zwecks Bedienkomforts durch FakeButtons zu ersetzen, um dem Spieler die Informationen über diese Upgradefunktion zukommen zu lassen.




So, und das war es jetzt damit. Gute Nacht euch allen! 8)

PS: @Manuel: Tut mir leid, ging nicht kürzer.
Appell an alle aktiven Edain Mod I-Spieler, sich am
Edain Mod I Community Revival Projekt
zu beteiligen! Schaut doch einfach mal vorbei. ;)

Dazu zum Spielen die
Edain Mod I Community Revival Edition Submod
- unsere Edain Mod-Version bis zum Release 2.0.

Manuel2811

  • Elbischer Pilger
  • **
  • Beiträge: 185
Re: Mehrere Abhängigkeiten für CommandButtons
« Antwort #6 am: 31. Mai 2010, 10:29 »
Also wenn ich mir jetzt deinen letzten Post so durchlese, dann scheinst du ja eigentlich die Lösung schon zu kennen, oder lieg ich da jetzt falsch? Wenn dem so ist, was genau ist dann jetzt noch deine Frage? ^^
Sollen Sie nur kommen!! Es gibt immer noch einen Coder im Elvenstar-Reich der noch nicht zu Staub zerfallen ist!!

Marioverraeter

  • Gastwirt zu Bree
  • **
  • Beiträge: 119
Re: Mehrere Abhängigkeiten für CommandButtons
« Antwort #7 am: 1. Jun 2010, 18:46 »
Hm, ja, das ist jetzt so eine Sache. :D

Also ich war am Anfang tatsächlich total hilflos damit, aber durch eure Antworten habt ihr mir entscheidende Impulse gegeben, um so doch auf eine Lösung zu kommen - das hat sich dann aus dem Schreiben heraus ergeben.

Daher nochmal vielen Dank, denn ohne euch wäre ich darauf überhaupt nicht gekommen. :)

Meine Zusammenfassung gegen Ende des letzten Posts war Reproduktion der Ergebnisse dieses ziemlich langen, textumfangreichen Threads, um deiner Aufforderung gerecht zu werden, mich kürzer zu fassen. Damit wollte ich noch einmal "kurz und knapp", auf das Wesentliche reduziert, die Ergebnisse wiedergeben, die wir auf dem Weg erarbeitet haben, damit andere mit ähnlichen Problemen diese daraufhin direkt verwenden können.

Offen bleibt eigentlich nur die Frage nach weiteren Möglichkeiten, denn wie schon gesagt haben wir immer noch nichts, wenn mehrere paralelle Upgradestränge in einem Gebäude multiple Abhängigkeiten erhalten sollen. Außer für diesen Sonderfall ist das Problem jetzt also gelöst.

Liebe Grüße,
Mario

(Thx nochma ;) )
Appell an alle aktiven Edain Mod I-Spieler, sich am
Edain Mod I Community Revival Projekt
zu beteiligen! Schaut doch einfach mal vorbei. ;)

Dazu zum Spielen die
Edain Mod I Community Revival Edition Submod
- unsere Edain Mod-Version bis zum Release 2.0.

Manuel2811

  • Elbischer Pilger
  • **
  • Beiträge: 185
Re: Mehrere Abhängigkeiten für CommandButtons
« Antwort #8 am: 2. Jun 2010, 10:25 »
weiterhin gutes Gelingen wünsche ich
« Letzte Änderung: 3. Jun 2010, 02:18 von Simbyte »
Sollen Sie nur kommen!! Es gibt immer noch einen Coder im Elvenstar-Reich der noch nicht zu Staub zerfallen ist!!