Jakobi22
immer mit
c, so viel Zeit muß sein
Ich weiß von Jakobi22, dass man Warnungen wohl meistens ignorieren kann
Wenn du nach einer Ursache dafür suchst, warum dein Spiel nicht laufen will, dann kannst du einen No-Matching-Node-Meldung ignorieren. Sie informiert dich darüber, das der angewählte Knoten, der Node, nicht existiert. Findet man den Knoten nicht, funktioniert dieser ModOp-Abschnitt nicht. Je nach Aufbau der Mod (im Code) kann es dann passieren, das die gesamte Mod nicht funktioniert, z.b. wenn sie nur einen ModOp-Bereich benutzt- die Probleme mit der Maug-Mog wären da ein gutes Beispiel
Zur Einleitung: gezeigte Meldung gehört zur Mod "City Hall", die das Rathaus "ersetzen" soll, das hier im Hochhaus-Stil gebaut wurde, sich somit den SkyScrapers anpasst, die im DLC Dächer der Stadt baubar sind. Diese CityHall kann ab 1000 Investoren gebaut werden.
[2022-05-11 05:55:19.939] [warning] No matching node for Path //Asset[Values/Standard/GUID='500447']
/Values/ConstructionCategory/BuildingList[not(Item[Building='137602'])]/Item[last()]
in [Buildings] [XAN] City Hall (data\config\export\main\asset\assets.xml:409)
das ist schon "Hohe Schule" des Moddings, alle Achtung -
not(Item[Building='XXXXXX']) findest du in keiner der Originaldateien, da hat schon jemand Ahnung, was geht oder nicht geht ;-)
unten im Bild der Original-Code-Abschnitt zu diesem Node, allerdings aus der data18, sonst passt er hier nicht drauf.
Angezeigt wird das Baumenü der Investoren, es fehlt aber alles aus dem DLC Dächer der Stadt, aber dazu später...
der Pfad bzw engl Path
[Values/Standard/GUID='500447'] - bezieht sich auf den Block mit der GUID, die im Bild schwarz markiert ist. Jede Einrückung wäre ein Knoten bzw ein Node. Kann man also nachverfolgen:
Values - Standard - GUID - 500447
Verwendet wird nun die Kurzform der ModOp. Sie erlaubt die Zusammenfassung mehrerer Blöcke (hier der Block "Standard" und der Block "ConstructionCategory") in einem Path. In der Langform, die zu Beginn des Moddings verwendet wurde, müßte man den kompletten Block verwenden von <Values> bis </Values>. Ein gutes Beispiel wäre die Maug-Mod. Diese könnte man heute auf geschätze 150 Zeilen reduzieren, wenn man überall die kürzeste Form des Codes verwendet.
weiter im Path:
die eckige Klammer (ein sog. Sqare Bracket) im ersten Teil [Values/Standard/GUID='500447'] mit dem nachfolgendem Rest gibt an, das es sich um verschiedene Blöcke auf gleicher Ebene handelt, also der Block "Standard" und der Block "ConstructionCategory", sieht man an den Einrückungen gut.
Es folgt der Path zum zweiten Block:
Values - ConstructionCategory - BuildingList, gefolgt von den Items in dieser Liste, die mit Item/Building aufgelistet werden. 1010489 wäre das Icon zum Bau der Weltausstellung, 269667 der Palast usw
Nun der gekennzeichnete Code
[not(Item[Building='137602'])]/Item[last()]:
Wie gesagt, diese Art der Schreibweise wird sonst nirgends im Vanilla-Code verwendet. Ohne das "not" würde er das angegebene Item 137602 (der Fahrstuhl) an das Ende der Liste zu setzen. last() wäre Letzter, last()-1 = Vorletzter usw. Mit diesem "not" gehe ich davon aus, das dieser ModOp genau das verhindern soll, das der Fahrstuhl das letzte Menü-Element dort ist
NACHTRAG: bin kein Python-Kenner, aber schau ich mir diverse ähnliche Funktionen an, könnte obiges "einfach übersetzt" auch heißen: Wenn Building 137602 nicht letzter Menüpunkt ist, mach es zum letzten Menüpunkt. Müßte man sich einfach mal anschauen... ich könnt auch den Autor fragen, aber Männer fragen ja nicht nach dem Weg :-D
Ich kann jetzt über die Ursache der Log-Meldung nur vermuten, aber ggf werden Fahrstühle erst später freigeschaltet oder man verfügt nicht über das DLC
siehe Antwort im nächsten PostLt. Autor handelt es sich um Fallbacks, so etwas wie eine "Notfallumleitung", gedacht für den Fall, das über eine andere Mod das Rathaus entfernt wurde oder in ein anderes Menü verschoben wurde
Und zu deiner Frage am Schluß: Was das Coding selbst betrifft, ist wohl Schwubbes Seite die erste und wohl auch einzige Wahl. Das sind in der Summe mehrere Monate Arbeit. Ich hab wohl eine private Dokuseite, die ich aber nur lokal halte. Das ist nicht mehr wie ein digitaler Notizzettel. Das für die Öffentlichkeit optisch aufzubereiten, würde sicher Wochen dauern.
Bei Maug findet man noch ein paar Infos, die aber mehr in Richtung Modellbau gehen, weniger um den Code. Auf Reddit und Discord kann man gezielt fragen und bekommt i.d.R auch eine Antwort, die setzt aber immer voraus, das du es später selbst erledigst. Dank Programmen wie dem ModBuilder gibt es ja nun viele neue "Autoren", aber fragen, was dieser oder jener Code bewirkt, darfst du da auch nicht.
Im Prinzip ist also alles Eigenstudium. Und wenn du einen guten "Freund" findest, erklärt der dir noch ein paar Dinge