Ergebnis 1 bis 4 von 4

Thema: [Modding] Umbau der Civ4UnitInfos.xml

  1. #1
    Ein Platz an der Sonne Avatar von Commander Bello
    Registriert seit
    05.06.05
    Ort
    Nähe Koblenz
    Beiträge
    6.209

    [Modding] Umbau der Civ4UnitInfos.xml

    Ich bearbeite gerade mal wieder die Civ4UnitInfos.xml.

    Dabei fällt mir auf, dass die einzelnen Elemente völlig wirr und ungeordnet sind.

    Nun würde ich das gerne ändern. Mir ist klar, dass dafür in erster Linie schon einmal die Civ4UnitSchema.xml angefasst werden muss.
    Dort gibt es Einträge wie diesen hier:
    Code:
        <ElementType name="FeatureStruct" content="eltOnly">
            <element type="FeatureType"/>
            <element type="iTime"/>
            <element type="Yields"/>
            <element type="bRemove"/>
        </ElementType>
        <ElementType name="FeatureStructs" content="eltOnly">
            <element type="FeatureStruct" minOccurs="0" maxOccurs="*"/>
        </ElementType>
    Blau gekennzeichnet sind die "datentragenden" Elemente, rot is quasi eine "Hülle", weil nur "elementetragend".

    Nun meine Frage:
    Kann ich neue "rote" Elemente kreieren, um die "blauen" Elemente besser zusammenzufassen (verbunden damit ist eine Umgruppierung in der Reihenfolge, die sich natürlich auch in der Civ4UnitSchema.xml widerspiegeln muss), ohne dass Einstellungen in der DLL vorzunehmen sind?
    Mit anderen Worten, liest die DLL alle Elemente aus den entsprechenden xml-Dateien widerspruchslos aus, oder sind Reihenfolge und Anzahl der Elemente auch in der DLL irgendwo niedergelegt? (Mir ist klar, dass "datentragende" Elemente in der DLL verwendet werden müssten, aber um diese geht es in meiner Fragestellung ja nicht)

    Nachtrag:
    Um es genauer zu spezifizieren:
    Mir schwebt so etwas vor:
    Code:
    <CombatValues>
      <CombatGeneral>
         <iCombat>10</iCombat>
         ....
      </CombatGeneral>
      <CombatLand>
          <TerrainAttacks/>
           ....
       </CombatLand>
       <CombatSea/>
    </CombatValues>
    Geändert von Commander Bello (28. Oktober 2012 um 11:09 Uhr)


  2. #2
    Col-Modder Avatar von raystuttgart
    Registriert seit
    19.03.10
    Ort
    Stuttgart
    Beiträge
    4.585
    Zitat Zitat von Commander Bello Beitrag anzeigen
    Kann ich neue "rote" Elemente kreieren, um die "blauen" Elemente besser zusammenzufassen, ohne dass Einstellungen in der DLL vorzunehmen sind?
    Nein.

    Zitat Zitat von Commander Bello Beitrag anzeigen
    Reihenfolge und Anzahl der Elemente auch in der DLL irgendwo niedergelegt?
    Reihenfolge: Üblicherweise nicht.
    Struktur / Anzahl: Ja, absolut.

    ----

    Nochmal, die Logik steckt in der DLL.
    Das XML tut nix anderes als Daten so zu liefern, wie es die DLL verlangt.

    Du kannst nicht der DLL im XML vorschreiben, wie sie das XML lesen soll.
    Das funktioniert immer anders rum.

    Die DLL bestimmt die Struktur des XML und nicht umgekehrt.
    ("Anzahl" gehört zur Struktur.)

    Das Schema ist lediglich als eine Sicherheitsprüfung zu verstehen, damit der Modder gleich merkt, ob seine Änderungen valide sind.

    Wenn das XML nicht so aufgebaut ist, wie es die DLL erwartet, passiert:

    A) Wenn du Glück hast gar nix.
    (Sprich das XML wird ignoriert, weil die DLL einfach nix davon weiß.)

    B) Wenn du Pech hast schwerwiegende Fehler ohne Ende.
    (Sprich CTDs, wenn die DLL auf etwas wichtiges zugreifen will, aber an der erwarteten Stelle nicht findet.)

    DLL, XML und XML-Schema müssen im Einklang sein.

    Tip:

    Schau dir einfach in der DLL an, in welcher Struktur sie die Informationen erwartet.
    Alles andere führt zu nix.
    Geändert von raystuttgart (28. Oktober 2012 um 11:35 Uhr)
    Teammitgleid dieses Projekt für Colonization:
    [Mod] We The People
    (Nachfolgerprojekt von Religion and Revolution)

    Davor Teammitgleid dieses Projekt für Colonization:
    [Mod] Religion and Revolution

    Vor-Vorheriges Projekt für Colonization:
    [ModMod] ray's Wunschliste

    Und wiederum davor Teammitglied von:
    [Mod] The Authentic Colonization (TAC)

  3. #3
    Ein Platz an der Sonne Avatar von Commander Bello
    Registriert seit
    05.06.05
    Ort
    Nähe Koblenz
    Beiträge
    6.209
    Ok.

    Aber es reicht (hoffentlich), diese Struktur einmal, resp. zweimal bekannt zu geben?
    Ich vermute, das geschieht in irgendwelchen Dateinen Civ4Units.cpp und Civ4Units.h (oder so ähnlich)?

    Wie gesagt, ich will keine neuen Werte einführen, mit denen die DLL irgendwas machen (rechnen) soll, sondern nur die logischen Orte verändern.

    Wenn das aber dazu führt, dass ich die DLL komplett (am "besten" noch inkl. Python) umbauen müsste, dann kann ich meine Gedanken hier auch gleich einstellen.


  4. #4
    Col-Modder Avatar von raystuttgart
    Registriert seit
    19.03.10
    Ort
    Stuttgart
    Beiträge
    4.585
    Zitat Zitat von Commander Bello Beitrag anzeigen
    Aber es reicht (hoffentlich), diese Struktur einmal, resp. zweimal bekannt zu geben?
    Ich vermute, das geschieht in irgendwelchen Dateinen Civ4Units.cpp und Civ4Units.h (oder so ähnlich)?
    Schau es dir doch einfach mal selber an.

    Rumgerate und Spekulationen führen dich doch zu nix.
    In den Sourcefiles kannst du das alles nachlesen.

    Üblicherweise musst du:

    1. Die Methoden die die Daten aus dem XML auslesen (CvInfos.cpp und CvInfos.h) umbauen.
    2. Jeden Aufruf dieser Methoden an die neuen Methoden-Rückgabewerte anpassen.

    Zitat Zitat von Commander Bello Beitrag anzeigen
    Wie gesagt, ich will keine neuen Werte einführen, mit denen die DLL irgendwas machen (rechnen) soll, sondern nur die logischen Orte verändern.
    Das ist mir klar, aber auch das kannst du nicht tun, ohne die DLL anzupassen.
    Die DLL erwartet die Daten in einer gewissen Struktur.
    Da gibt es nix dran zu rütteln.
    Teammitgleid dieses Projekt für Colonization:
    [Mod] We The People
    (Nachfolgerprojekt von Religion and Revolution)

    Davor Teammitgleid dieses Projekt für Colonization:
    [Mod] Religion and Revolution

    Vor-Vorheriges Projekt für Colonization:
    [ModMod] ray's Wunschliste

    Und wiederum davor Teammitglied von:
    [Mod] The Authentic Colonization (TAC)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •