Mineralwassers kleine Texturenstube

  • Hi!


    Ich will jetzt einmal konkret versuchen, eine Textur zu verändern und sie als Addon einer Karte mitzuliefern. Dazu habe ich ein vermutlich einfaches Objekt rausgesucht, die Mauerwerbungen. Und ich mache sowas zum ersten Mal!



    Die wall-ad.dds enthält insgesamt 6 unterschiedliche Werbegrafiken, die in den verschiedenen wall_ad01, 02 usw. beschrieben werden. Nur damit ich das Konzept verstehe: Wenn ich jetzt die .dds ummale und als Addon einer Karte beifügen will, muss ich dann quasi die ganzen wallad- Dateien hinzufügen?

    Meine Arbeitsschritte bisher:

    • Die .dds umgestalten :thumbsup:
    • Einen "ad-textures"(Name der Mod)-Ordner im Addons-Ordner anlegen mit den Unterordnern objects und scripts
    • eine environment.script angelegt, an der ich rumwerkele und die wahrscheinlich noch voller Fehler steckt großer Mist ist :pinch:
      siehe unten
    • Sämtliche wall-ad-Dateien umbenannt von wall-ad01.* in wall-ad01MW.*



    Es geht mir also darum, die neue Werbetexturen neben den originalen anzusiedeln, also hinzuzufügen.
    Meine Fragen/Probleme:


    *An welchen wall-ad Dateien muss ich etwas machen? z.B. die Properties-Dateien?
    *Muss ich alle Dateien umbenennen bzw. modifizieren oder reichen die Hauptdateien wall_ad_painted.material; wall_ad.dds; wall_ad. material
    * Ich hab Probleme, die environment.script hinzubekommen. Aktuell sieht sie so aus:



    und folgendes in der log-Datei


    Zitat

    Loading editor...
    Error: File "/addons/ad-textures/objects/ad-props/wall_adMW.object" not found!
    Error: Runtime error in "addons/ad-textures/scripts/environment.script" at line 6: Internal error!
    Error: Called from "addons/ad-textures/scripts/environment.script" at line 14
    Error: Runtime error in "metro/scripts/environment.script" at line 212: Internal error!

  • muss ich dann quasi die ganzen wallad- Dateien hinzufügen?


    Ja.


    Zitat

    $level.loadProp("ads", "wallad-01MW", "/addons/Ad-Textures/ojects/ad-props/wall_ad01MW");
    ...


    Vor addons/... muss vermutlich noch ein Slash (rot markiert).


    Übrigens: CiM liebt kleingeschriebenes und ist Schreibungsabhängig. Du beugst Problemen vor, wenn du dich auf konsequente Kleinschreibung festlegst, was die Ordner- und Dateihierarchie angeht.


  • Ja.



    Vor addons/... muss vermutlich noch ein Slash (rot markiert).


    Übrigens: CiM liebt kleingeschriebenes und ist Schreibungsabhängig. Du beugst Problemen vor, wenn du dich auf konsequente Kleinschreibung festlegst, was die Ordner- und Dateihierarchie angeht.


    Die Slashes hab ich grad eingefügt!
    Okay, sehe ich das richtig so, dass CiM in Konflikt gerät durch die unterschiedlichen environment.scripts


    Zitat

    Error: File "addons/Ad-Textures/ojects/ad-props/wall_ad01.object" not found!
    Error: Runtime error in "metro/scripts/environment.script" at line 75: Internal error!


    und ich also jetzt quasi mich um das Problem "neue Objekte einfügen" kümmern muss?


    Ich hab mich mal des hier geposteten Scripts bedient, das ich versuche umzuschreiben


    Muss ich hier anstelle von "ObjectPath" den Ordner mit den neuen Texturen anwählen? und stimmt das Script so :)

  • Okay, sehe ich das richtig so, dass CiM in Konflikt gerät durch die unterschiedlichen environment.scripts


    Ne, da gibt es keine Konflikte wenn du nur die paar Prop-Zeilen hinzufügst.


    und ich also jetzt quasi mich um das Problem "neue Objekte einfügen" kümmern muss?


    Vermutlich... ich hab's mal auch grad probiert, aber er will dauernd auf wall_ad.dds zugreifen (statt auf wall_ad.dds) und crasht. Wenn ich in der wall_ad01_mw.object ganz unten die Verlinkung auf die wall_ad zur wall_ad_mw umhexe, will er zusätzlich ne .object die garnicht exisitert. Keine Ahnung :wacko:


    Da muss mal einer derjenigen gucken die schon mehr Erfahrung mit neuen Objekten haben :S


  • Ein erster Erfolg :D


    Zwar werden die Original-Ads nicht mehr berücksichtigt und die Mauerwerbungen sind doppelt drin, aber hey!


    Folgende environment hab ich jetzt verwendet:


  • Zwar werden die Original-Ads nicht mehr berücksichtigt und die Mauerwerbungen sind doppelt drin, aber hey!


    Ach das hätt ich dir in 10 Sek machen können, mal ganz arrogant gesagt :D
    Dachte es geht darum, eben nicht die originale Werbung zu ersetzen..? Wenn du das auch noch hinbekommst, vergiß nich zu sagen wie :thumbup:


  • Ach das hätt ich dir in 10 Sek machen können, mal ganz arrogant gesagt :D
    Dachte es geht darum, eben nicht die originale Werbung zu ersetzen..? Wenn du das auch noch hinbekommst, vergiß nich zu sagen wie :thumbup:


    Ja, ich weiß, im Grunde ist das ja jetzt die Variante des im-Spiel-Ersetzens. Dass ich das schonmal hingekriegt hab, darf mir Grund zum Feiern sein :D .
    Das andre wird komplizierter. Schließlich müssten die ganzen .properties umgeändert werden

    Zitat

    @Ä wall_ad06_scene.scene object ÿe ÈB 0@P 1@H wall_ad06 1@ € œÁª`°¹ ÌÁ ÿÿ? @@ P@ ©Ð< A


    Auch stellt sich mir die Frage, ob ich zusätzlich noch einen strings-Ordner anlegen muss

    Zitat

    this.displayName = MAIN.$strings.$prop_wallad;


    Also ich brauch Hilfe beim Erstellen der environment.script !

  • Vielleicht kann mich ein Mod aus diesem Thread verschieben, damit hier nicht so ein Chaos entsteht. Ich kann ja dann eine Schritt für Schritt-Anleitung machen, die etwas mehr ins Detail geht, falls ich mal soweit bin.


    Naja, aber immer doch. ;) Musst nur noch ein Titel auswählen, weil meiner ist, nunja, "Ein-Titel-in-2-Sekunden-gewählt"-Titel. ;(


    Dann hätt ich mal die Frage:
    Was benutzt du für ein Programm für die material-Dateien?


  • Naja, aber immer doch. ;) Musst nur noch ein Titel auswählen, weil meiner ist, nunja, "Ein-Titel-in-2-Sekunden-gewählt"-Titel. ;(


    Dann hätt ich mal die Frage:
    Was benutzt du für ein Programm für die material-Dateien?


    Danke dir!


    Eigentlich noch keines :) (Weil ich vielleicht fälschlicherweise davon ausgegangen bin, dass ich die einfach übernehmen könnte)


    Zwecks Übersichtlichkeit habe ich meine aktuelle Lage im Eingangspost zusammengefasst!


    Folgendes versuch ich jetzt, nämlich die wall_ad01.script-Dateien nach immis-Schema umzubennen.



  • Meine Arbeitsschritte bisher:

    • Die .dds umgestalten :thumbsup:
    • Einen "ad-textures"(Name der Mod)-Ordner im Addons-Ordner anlegen mit den Unterordnern objects und scripts
    • eine environment.script angelegt, an der ich rumwerkele und die wahrscheinlich noch voller Fehler steckt großer Mist ist :pinch:
      siehe unten
    • Sämtliche wall-ad-Dateien umbenannt von wall-ad01.* in wall-ad01MW.*


    lass das umbenennen weg, das verkompliziert die Dinge nur unnötig.
    die .object datei gibt an welche .material Datei geladen werden soll - die .material datei gibt an welche Texture(.dds) datei geladen werden soll. wenn du jetzt die dateien umbenennst musst du mitm hexeditor rumpfuschen um das alles wieder geradezubiegen.
    Es sollte auch ohne umbenennen gehen. Der Dateiname spielt im Spiel nachher sowieso keine Rolle.


    wichtig ist allein nachher der Name unter dem du das object in der environment.script lädst:

    Code
    $level.loadProp("ads", "wallad-01MW", ...
                            ^^^^^^^^^^^^ 
                            hier  musst du umbenennen, da dieser Name im Spiel eindeutig sein muss
  • Hallo


    Das heißt, ich geh zurück zu dem Punkt, an dem ich die gleichen Namen verwende, aber meine Versionen, die dann zusammen mit den Originalen im Spiel geladen werden? Oder ist es schon möglich, meine Objekte parallel einzufügen und trotzdem keine Umbenennungsorgie heraufzubeschwören? Heißt: Ich muss alle sechs wall-ads eindeutig umbenennen (Warum spielt diese eindeutige Umbenennung denn so eine wichtige Rolle?), für die einfache wall_ad gibt es ja keine object-Datei. Oder warte: ich muss gar nichts umbenennen, nur den Part im Code, also etwa:


    Zitat

    loadProp("ads", "monalisa", "/addons/ad-textures/objects/ad-props/wall_ad01");

    ?
    Ist das dann allein der Name, unter dem es nachher im Spiel erscheint?



    Sorry wenn ich dumme Fragen stelle, aber ich versuche das ganze zu verstehen.

  • Oder warte: ich muss gar nichts umbenennen, nur den Part im Code, also etwa:


    exakt.


    ?
    Ist das dann allein der Name, unter dem es nachher im Spiel erscheint?


    Die GameEngine benutzt das Objekt dann unter dem Namen. Der Spieler selbst sieht diesen Namen nicht.
    Den Namen den man im Spiel zu sehen bekommt, kann in der wall_adxx.script festgelegt werden( this.displayName )



    nebenbei: hat jemand schon mal mit der Funktion setTextureVariation rumgespielt, die bei einigen Objekten benutzt wird? (z.b buildings/airport/platform.script)
    der name lässt vermuten dass man damit auch mehrere alternative Texturen für Objekte festlegen kann.


  • Hey, kein Offtopic in meinem Thread! :D


    Es klappt :love: (Natürlich, auf dem Stand war ich ja heut Mittag schonmal. Es ist keine ideale Lösung, aber immerhin schonmal ein Anfang.)


    Ich hab jetzt noch ne Frage: Ich will ein paar Werbetafeln hinzufügen.
    Es gibt widerum 6 object-Dateien
    billboard01.object
    ......02
    .......03


    sowie
    billboard01b.objet
    usw.


    Setze ich nur die ersten drei in die environment, werden mir zwar zusätzliche, aber blanke Werbetafeln angezeigt. Mit den unteren dreien im Skript stürzt das Spiel ab, mit dem Hinweis, die jeweiligen billboard01b.object nicht finden zu können.


    Besteht übrigens eine Nachfrage für eine Schritt-für-Schritt Anfängeranleitung zum Thema?

  • Die xxxx01b.objekte sind nur Bezugsobjekte für die normalen Objekte. Da mußt du mal in den Material- und script-Dateien rumstöbern, wo die Verweise stehen. Dann sollten die Tafeln evtl auch Bilder haben.
    Und ich werd mir auch Notizen bei meinen Häusern machen und dann online stellen.


    EDIT:
    Ich hab mich mal da etwas durchgearbeitet. Die +b.Dateien sind wohl für die diagonalen Pedanten der jeweiligen Objekte zuständig. Meine "neuen" Häuser sind jetzt auch ohne diagonaler Variante. X(

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!