Das Spiel frägt NIE ab, welche Gebäude freigeschaltet werden. Das Spiel weis also zu keinem Zeitpunkt welche Gebäude du bereits bauen kannst und welche nicht.
Du meinst es sicher anders als es hier geschrieben steht. Das Spiel besteht zu 50% aus solchen Abfragen, der Rest ist Mathematik, z.b. wie schnell darf ein Schiff fahren mit 50% Gewichts-Auslastung und Gegenwind aus Süd-Süd-Ost. Diese Rechenaufgaben gibt es pro Sekunde zu tausenden.
Zu den Triggern: ab 50 Bauern erlaubt mir ein Trigger, der diese Anzahl Bauern bestätigt, das Bauen einer Fischerei. Ab 200 oder 250 Bauern (müßt nachschauen) darf ich aufsteigen. Wieder ein Trigger, der diese Anzahl Bauern bestätigt. Ist er gesetzt, schaltet er damit die Teile des Arbeitermenü's frei wie Wohnhäuser, Lehmgrube, Ziegelei usw. Das gleiche dann in den höheren Einwohnerstufen.
Jeder Einwohnerstufe hat also seinen Trigger und unter diesem wird eine Liste geführt, was jetzt alles gebaut werden darf, etwa so:
Bauernanzahl von 200 (oder 250?) erreicht - setze Trigger für Arbeiter und erlaube
- Arbeiterhaus
- Lehmgrube
- Ziegelei
usw.
Nun gäbe es in der Tat code-technisch einen "Anti-Trigger", aber welche Folgen hätte das?
All diese Freischalt-Trigger beruhen auf der Einwohnerzahl, ich kann also nur diesen für ungültig erklären. Habe ich jetzt z.b. meine Bauern auf 100 reduziert und diesen Aufstiegstrigger entfernt, entfallen damit automatisch sämtliche anderen Berechtigungen. Mit weniger Bauern darf ich keine Arbeiter bauen und ohne Arbeiter keine Handwerker. Man würde also für sämtliche Gebäude die Bauberechtigung verlieren außer den Bauern, die ich immer bauen kann, solang da ein Kontor steht. So funktioniert nämlich die Übernahme einer Mitspielerinsel. Und genau so wird die Insel dann leer gemacht.
Man könnte es nun anders gestalten und für jede Einwohnergruppe eine Mindestanzahl festlegen. Dazu müßte jedes!!! Gebäude, das ab Arbeiter baubar ist, eine Abfrage bekommen, wie viele Bauern vorhanden sind. Sind es weniger als diese 200 oder 250, gibt es ein Bauverbot mit Aufforderung, erst das Bauern-Minimum zu erfüllen. Bei Handwerkerobjekten fragt man dann Bauern und Arbeiter ab, bei Investoren dann Bauern, Arbeiter, Handwerker und Ingenieure usw. Solcher Art Abfrage würde unter XML wohl eine Verdopplung des Codes bedeuten und wäre eher etwas für LUA, was, einfach gesagt, ein Mix aus PHP und Javascript ist. Dort kann man dann mit Abfragen im Format if, elseif, else oder when arbeiten. Das wäre dann im Groben so: Wenn (if) die Anzahl der Bauern > 200 ist AND (und) die Anzahl der Handwerker > 500 ist, dann erlaube das Bauen der Quarzgrube oder (else) fordere zum Bau eines Bauernhauses auf.
Da Ansätze von LUA schon seit GU9 oder GU10 im Code zu finden sind, wird das wohl die Programmiersprache im nächsten Anno sein, so zumindest die Meinung der Modding-Experten. Der Code wird durch solche Abfragemöglichkeiten wohl komplexer, kann dann durch Komprimierung so verschlankt werden, das man am Ende weniger Last hat.
Das Problem des TE hat weniger mit solchen Bevölkerungsgruppe und ihren Triggern zu tun. Es ist einfach die Folge der Codeumstellung von UBI. Diese wurde benötigt, um die Multifabriken und die Hacienda abzusichern. UBI selbst betraf das Problem nicht, weil jedes Gewerbe nur einmal etwas produziert und damit MainFactory ist. Einfaches Beispiel ist die Rumproduktion. Die gibt es ausschließlich in der Neuen Welt, darum ist Rum in der NW auch MainFactory. Über Mods gibt es dann die Möglichkeit, auch in der AW Rum herzustellen. Liefere Zuckerrohr und Bretter, dann mach ich daraus Rum für die Alte Welt. Beispiele solcher neuen Produktionsstätten gibt es dann diverse. Nähmaschinen in der Neuen Welt, Zuckerproduktion in der Alten Welt, die Modder waren da sehr erfinderisch.
Die Logik ist dabei recht einfach: alles, was im Vanillaspiel schon produziert wurde und nun per Mod auch in einer anderen Session oder über eine andere Methode prodiziert werden soll, muß den Eintrag <IsMainFactory>0</IsMainFactory> erhalten. Erstelle ich mir aber etwas völlig Neues, z.b. einen Rapsbauern, eine Ananasplantage, dann wäre die <IsMainFactory>1</IsMainFactory>.
Also geht man seine Mods durch und sucht nach diesem Eintrag <IsMainFactory>1</IsMainFactory>.
In Anno gibt es im Vanilla-Code auch die Möglichkeit, eine Definition aus einer übergeordneten Asset zu verwenden, das erfolgt mit der Kurzschreibweise <IsMainFactory />, i.d.R. aber in der übergeordneten Gruppe <FactoryBase />. Ist das der Fall, muß man den Eintrag erst setzen, damit der übergeordnete überschrieben wird, also so
|
Quellcode
|
1
2
3
|
<FactoryBase>
<IsMainFactory>0</IsMainFactory>
</FactoryBase>
|
Bei den Holzfällern kam noch dazu, das UBI sich selbst ein Ei ins Nest gelegt hat und eine Mindestanzahl Bäumen pro Holzfäller festgelegt hat. Im Normalfall pflanzt der Holzfäller 70 Bäume und fällt dann welche, pflanzt wieder nach usw. Da aber nach dem ersten Fällen die Mindestzahl nicht mehr vorhanden war, arbeitete der Holzfäller nicht mehr. Man konnte ihn austricksen, in dem man selbst Bäume pflanzte, mußte aber ständig dran bleiben. Der Fehler ist im GU14 aufgetreten und wurde mit GU 14.1 korrigiert.
Bei den Lehmgruben ist es ähnlich wie mit dem Rum oder den Nähmaschinen. Es gibt per Mod die Möglichkeit, Lehmgruben als Tagebau an jeder x-beliebigen Stelle zu errichten, neuerdings auch die Möglichkeit, sie per Flußbauplatz in der AW zu fördern usw usw. Da kann man nur die Mods durchsuchen nach "clay" und dann schauen, was definiert wurde.
Und dann kommen wir zu dem Problem, was hier mehrfach schon angesprochen wurde und auch von nordstern84 so gemeint war. Vanilla oder auch eine Mod haben eine Bedingung zur Freischaltung, die Einwohnerzahl der jeweiligen Bevölkerungsgruppe, entweder Arbeiter, Obreros oder Älteste in Enbesa. Damit wäre die Lehmgrube freigeschalten. Nun hast du aber den Fehlerhaften Code in der Mod und dadurch werden direkt am Spielbeginn alle Lehmgruben gesperrt. Diese Sperre ist im Spielstand gespeichert. Es bräuchte jetzt neben der Reparatur also eine erneute Freischaltung. Das ließe sich mit einer individuellen Mod wohl erreichen, einfachste Lösung ist aber ein Spielstand, der vor der erstmaligen Benutzung dieser einen Mod, gespielt wurde. Da dies für die allermeisten User nicht mehr nachvollziehbar ist, ist die Empfehlung dann ein Spielstand vor dem GU 14, also vor dem 12.April 2022 / 18.00 Uhr MESZ, zu laden.
Dieser Sperrtrigger auf Grund der fehlerhaften Mod wäre praktisch genau das Gegenteil von o.g. Freischalttriggern, der "Antitrigger" dazu wäre eine erneute Freischaltung. Die ließe sich speziell dafür schon programmieren, allerdings muß sichergestellt sein, das der Fehler auch wirklich korrigiert wurde. Und weil es meines Wissens noch keiner für genau solchen Fall gemacht hat, wäre unklar, ob das so auch funktioniert. Nicht, das am Ende mehr Schaden entsteht.