Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: AnnoZone Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

saladin

SeeBär

  • »saladin« ist der Autor dieses Themas

Beiträge: 280

Registrierungsdatum: 21. Juli 2009

  • Nachricht senden

1

Samstag, 19. März 2022, 08:39

Modifikationsnamen und der ModLoader

Moin Moin.

Unseres Wissens handelt es sich beim ModLoader um ein Programm das den Limitierungen der XML Notation unterliegt, ebenso auch denen der XPath Syntax.

Soll heißen : ein Modname wie

Quellcode

1
[ItemEdit] Käsekuchen


bricht den Ladeprozess ab, das Spiel startet nicht. Klar, Umlaute geht nicht. Oder Sonderzeichen wie das ß.

Das hier nimmt er auch, folglich spielt die Stringlänge keine Rolle

Quellcode

1
[ShipEdit] Pyrphorischer Schlachtkreuzer (neues Modell) (2000501100)



Aber das hier nimmt er nicht.

Quellcode

1
[ShipEdit] Piraten ​Fregatte (neu) (2000501101)



Versteckte Sonderzeichen sind da auch nicht drin.

Hat jemand eine Idee?


saladin
P.S. Das geht :

Quellcode

1
[ShipEdit] Marmeladeneimer (neu) (2000501101)
  [url]www.citybuilders.de[/url]

rvogt64

Freibeuter

Beiträge: 352

Registrierungsdatum: 20. Oktober 2021

  • Nachricht senden

2

Montag, 21. März 2022, 08:09

Das hier nimmt er auch, folglich spielt die Stringlänge keine Rolle

Quellcode
1
[ShipEdit] Pyrphorischer Schlachtkreuzer (neues Modell) (2000501100)
Kann es sein, dass der Loader streikt, wenn Namen verwendet werden, die im originalen Spiel auch existieren.

Es gibt die "Piraten Fregatte" und es gibt den "Pyrophorischen Schlachtkreuzer"
In Deinem Mod-Beispiel hast Du aber einen Rechtschreibfehler drin. Du hast diesen "Pyrphorischer Schlachtkreuzer" genannt.
Da fehlt also das "o" nach Pyr :D Und der funktioniert ja

Ich hab zwar keinen Plan über das Warum und Wieso..... Aber mir fällt hier sonst nichts anderes ein.
Wenn das komplett abwegig ist.....seht´s mir nach :engel:


schöne Grüße
  Bei meiner Tastatur ist das "J" kaputt..... :keineahnung: Also nicht wundern wenn das hin und wieder in meinen Antworten fehlt :unschuldig:

rvogt64

Freibeuter

Beiträge: 352

Registrierungsdatum: 20. Oktober 2021

  • Nachricht senden

3

Montag, 21. März 2022, 12:17

Das hier nimmt er auch, folglich spielt die Stringlänge keine Rolle

Quellcode
1
[ShipEdit] Pyrphorischer Schlachtkreuzer (neues Modell) (2000501100)
Kann es sein, dass der Loader streikt, wenn Namen verwendet werden, die im originalen Spiel auch existieren.

Es gibt die "Piraten Fregatte" und es gibt den "Pyrophorischen Schlachtkreuzer"
In Deinem Mod-Beispiel hast Du aber einen Rechtschreibfehler drin. Du hast diesen "Pyrphorischer Schlachtkreuzer" genannt.
Da fehlt also das "o" nach Pyr :D Und der funktioniert ja

Ich hab zwar keinen Plan über das Warum und Wieso..... Aber mir fällt hier sonst nichts anderes ein.
Wenn das komplett abwegig ist.....seht´s mir nach :engel:


schöne Grüße
Sorry Saladin....... das war ja mal wieder ein ziemlicher Blödsinn von meiner Seite :silly: .....Du hast den "Pyrphorischen Schlachtkreuzer" natürlich richtig geschrieben!!!! Also ist meine eh schon wackelige Theorie...... ziemlich klar widerlegt :keineahnung:
Naja....... drum sollte man sich halt erst schlau machen, bevor man schreibt....
Sorry und schöne GRüße
  Bei meiner Tastatur ist das "J" kaputt..... :keineahnung: Also nicht wundern wenn das hin und wieder in meinen Antworten fehlt :unschuldig:

Jacobi22

unregistriert

4

Montag, 21. März 2022, 13:16

Also ist meine eh schon wackelige Theorie...... ziemlich klar widerlegt
Aber die grundsätzliche Idee war gut ;-)
Für das Projekt, wo ich gerade arbeite, gibt es ja auch Blacklist's mit Forbidden Folder- and Filenames, ist eine durchaus übliche Methode.
Der "Haken" ist halt nur, das Anno intern alles über die GUID abwickelt und zu jeder GUID gibt es einen zugeordneten Namen, der dann wiederum in englisch verarbeitet wird. Über die vorhandenen Sprachdateien kann dann dieser GUID ein Text zugewiesen werden. Dieser Text muß UTF8-Formatiert sein und kann somit jedes Schriftzeichen enthalten, egal, in welcher Sprache.
Im Ordnernamen von Saladin oben sehe ich auf Anhieb kein Problem. Die Datei- und Ordnernamenskonvention erlaubt max 256 Zeichen, wobei eben alles mitzählt, Sonderzeichen wie die eckigen Klammern oder auch Leerzeichen, die auch mehrfach vorhanden sein können. Existiert eine entsprechende Struktur (z.b. in einem Webprojekt) könnte man auch Umlaute und alle möglichen Sonderzeichen verwenden, dazu benötigt es dann aber Interpreter, die, einfach gesagt, solch komplizierte Namen "übersetzen". Anno verwendet eher eine einfache Struktur, was dann bedeutet: keine Umlaute und nur begrenzte Sonderzeichen wie runde und eckige Klammern, Leerzeichen, das Kaufmanns-UND &, das Prozentzeichen usw

Der ModLoader liest das Verzeichnis /mods ordnerweise. Er hat dann vorgegebene Ordnerstrukturen, die durchsucht werden, die bekannteste Reihenfolge ist z.b. \data\config\export\main\asset
Dort befindet sich dann die assets.xml oder (je nach Mod) auch eine templates.xml oder properties.xml. Diese Dateien enthalten dann weitere Verweise, z.b. zu Grafiken, Sounds usw., wobei solche Dateien wieder aus dem Original kommen können oder von der Mod mitgebracht werden.
Alles, was in den XML-Dateien dieser Mod steht, wird in den Cache geschrieben. Wurde dieser Vorgang schon einmal erledigt oder ist abgeschlossen, geht der Modloader zum nächsten Ordner über.

Im speziellen Fall (Beispiel von Saladin oben) würde ich mir mal die Mod anschauen, die in der Ordnerstruktur vor besagter Mod geladen werden soll. Wird dort z.B. ein <ModOp> oder <ModOps> nicht geschlossen, sucht der Code nach einem Ende für diesen Abschnitt und das ggf auch in den folgenden Mods

saladin

SeeBär

  • »saladin« ist der Autor dieses Themas

Beiträge: 280

Registrierungsdatum: 21. Juli 2009

  • Nachricht senden

5

Montag, 21. März 2022, 14:42

Wir hatten bei der Entwicklung unseres Item Editors seinerzeit das Item 190683/Jaafan the Cruise Impresario. Als MOD Bezeichnung [ItemEdit] Jaafan der Kreuzfahrtimpresario brachte er den ModLoader zur Einstellung aller Arbeiten.

Jetzt eben besagte "Piraten Fregatte". "Piratenfregatte" läuft durch. Weiß der Henker.

Es gibt ja einige - jacobi22 schreibt es ja - NoGo Bezeichnungen. Die Cache Sache ist bekannt, aber jeder Mod wird vor Nutzung hinsichtlich des XML Syntax getestet. Wenn da ein Knoten offenbleibt sehen wir das.

Ich suche eigentlich irgendeine sinnreiche Erklärung. Da unsere Editoren die Bezeichnungen der MOD Ordner erzeugen wäre eine solche Information eben sehr nützlich bevor jemand schreibt das geht nicht.

saladin
  [url]www.citybuilders.de[/url]

Jacobi22

unregistriert

6

Dienstag, 22. März 2022, 12:19

Ich suche eigentlich irgendeine sinnreiche Erklärung
was ich mit Sicherheit sagen kann, ist, das im ModLoader keine Methodik enthalten ist, die irgendwelche Datei- oder Ordnernamen ausschließt. Was ich nicht sagen kann, ist das, was in der API steht, die Anno selbst für Python benutzt. Nun bin ich sicherlich kein Python-Spezialist, aber vom Code her ist es nicht so schwer zu verstehen. Nach meiner Recherche gibt es keine offizielle Python-Funktion, die solche Ordner vom Laden ausschließt, also wenn, ist es eher anno-spezifisch. Andererseits kann ich mir auch nicht vorstellen, das die API sich speziell auf bestimmte Mods bezieht.

Der ModLoader verfügt über diverse Methoden für ein erweitertes Error-Logging, die in der Public-Version deaktiviert sind. Ob damit dann auch mehr Infos zum speziellen Problem geloggt werden, müßte man austesten. Das wäre aber höchstens eine Bestätigung für die Theorie, aber etwas Definitives, das vergleichbar ist mit einem Regelbuch kommt dabei auch nicht raus. Insofern wäre die Frage, ob sich der Aufwand auch lohnt.

Ähnliche Themen