"addon"-Ordner nutzen

  • Das Spiel sucht an 3 Positionen nach Addons:


    1. Im Installationsverzeichnis von CiM ("X:\Steam\steamapps\common\cities in motion\")
    2. Im Ordner "metro" im Installationsverzeichnis ("X:\Steam\steamapps\common\cities in motion\metro\")
    3. In den Eigenen Dateien ("C:\Users\DeinNameHier\Documents\Cities In Motion\")


    Sobald CiM einen Ordner namens "addons" an einer dieser Positionen findet, läuft es dort jeden Ordner durch und wertet den aus.
    Auszug aus "addons.script":


    Ihr könnt also in "addons" euren eigenen Ordner kreieren - der kann heißen, wie er will (Sonderzeichen am besten nicht benutzen). Dort packt ihr dann all eure Sachen rein. In jedem Ordner schafft ihr die gleiche Struktur wie in "metro" auch, also "scripts", "strings" und so weiter. Jetzt baut ihr in "environment.script" eure Objekte rein, die geladen werden sollen und zeigt auf den Ordner, in dem sich eure Mod befindet.
    Wie das aussieht, kann man in der entpackten vehiclepack01.gs für die Bonusfahrzeuge sehen.

    Code
    $grid = MAIN.$grid;
    $level = MAIN.$level;
    $level.loadPlayerVehicle("x01-bus01", "/addons/vehiclepack01/bus01/bus15", mkdate(1,1,1920), mkdate(31,12,9999));
    $level.loadPlayerVehicle("x01-tram01", "/addons/vehiclepack01/tram01/tram_dlc01", mkdate(1,1,1920), mkdate(31,12,9999));
    $level.loadPlayerVehicle("x01-metro01", "/addons/vehiclepack01/metro01/metro_dlc", mkdate(1,1,1920), mkdate(31,12,9999));
    $grid.loadGridObject("x01-metro01b", "addons/vehiclepack01/metro01/metro_dlc_b.object");
    $level.loadPlayerVehicle("x01-waterbus01", "/addons/vehiclepack01/waterbus01/waterbus04", mkdate(1,1,1920), mkdate(31,12,9999));
    $level.loadPlayerVehicle("x01-heli01", "/addons/vehiclepack01/helicopter01/helicopter04", mkdate(1,1,1957), mkdate(31,12,9999));


    Alle Ordner werden alphabetisch geladen, d.h. z.B. die Realismus-Mod sollte als Ordnernamen sowas wie "ZZ_RealismusMod" haben. Solange jeder seinen eigenen Ordner nutzt, sollte es keine Probleme mit Addons geben. Schwieriger wirds, wenn bestimmte Sachen in bestimmter Reihenfolge geladen werden müssen. Da muss man dann womöglich Ordnernamen umbenennen - was dann auch dazu führt, dass man seine Scripts umbauen muss, da die ja auf den Ordner zeigen.
    Ihr könnt das ja mal ausprobieren. Es gibt eine Log-Datei in den eigenen Dateien ("C:\Users\DeinNameHier\Documents\Cities In Motion\"), die euch gut zeigt, wenn was schief läuft.


    EDIT:
    Hier als Beispiel Ricci's Straßenbahnen als Addon:
    http://ben.s15224373.onlinehom…empel/riccis_vehicles.zip
    Einfach das ZIP in den Ordner "addons" entpacken. So werden aus den 12 MB, die das "normale" Addon von Ricci braucht, nur knapp 500kB als ZIP.

  • Genial! Vielen Dank für die Info, das wird das ganze unheimlich erleichtern!


    Aber wenn ich nun beispielsweise im Editor ein neues Objekt haben möchte, muss dafür nicht eine neue, erweiterte default-buildings.script Datei vorhanden sein? Wird die in der Original .gs-Datei nicht überschrieben/ignoriert, so dass ich dann nur das neue Objekt besitze?

  • Muss man mal ausprobieren. Ich baue ja für die Fahrzeuge auch keine neue "default-vehicles.script", sondern baue ein "environment.script", in dem die Objekte geladen werden. Kann also sein, dass man dort auch die Gebäude reinladen kann.
    Das "addon.script" wird am Ende geladen, d.h. es wird erst alles "normale" geladen und dann alle Zusätze. Glaub nicht, dass da was überschrieben wird, es sei denn, du legst es drauf an.


    Hab mal rumgespielt. Hab den Bagger orangefarben gemalt und den als Addon eingebaut.
    http://ben.s15224373.onlinehom….info/krempel/zz_test.zip
    ZIP in den Ordner "addons" entpacken und den Bagger im Editor unter den Baustellen-Props suchen :)
    Funktioniert also bestens.

  • Muss man mal ausprobieren. Ich baue ja für die Fahrzeuge auch keine neue "default-vehicles.script", sondern baue ein "environment.script", in dem die Objekte geladen werden. Kann also sein, dass man dort auch die Gebäude reinladen kann.
    Das "addon.script" wird am Ende geladen, d.h. es wird erst alles "normale" geladen und dann alle Zusätze. Glaub nicht, dass da was überschrieben wird, es sei denn, du legst es drauf an.


    Hab mal rumgespielt. Hab den Bagger orangefarben gemalt und den als Addon eingebaut.
    http://ben.s15224373.onlinehom….info/krempel/zz_test.zip
    ZIP in den Ordner "addons" entpacken und den Bagger im Editor unter den Baustellen-Props suchen :)
    Funktioniert also bestens.


    Also Stationen gehen natürlich.

    Code
    event this.onDestroy::()

    wird auch unterstützt, sollten Probleme auftauchen und irgendeine Variable Amok läuft.


    Werbung Das steht aber auch im CIMInternals.txt/Werbung
    (Reload sollte euer Browser die Datei Cachen)


    Ein Tip:
    Einfach einen Neustart im Spiel machen, dann werden die Dateien neu geladen. Solange keine Fehler beim kompilieren auftreten gibt es auch keinen Abbruch.

  • Ich bin gerade am grübeln wie ich Werte so elegant ersetzen kann wie im Vehiclemod v3 um Kompatibilität zu selbigem Mod zu gewährleisten. Ich hab nämlich eine Mod gebastelt in der Fahrgäste bei Gelenkbussen (und dem modernsten - Bus-15) überall einsteigen statt nur vorne.


    Nur wenn ich das alles genauso wie im Vehikelmod erstelle, dh eine .script Datei die einfach die Original Werte überschreibt wo sie geändert wurden, übernimmt er meine Werte nicht.


    Vehiclemod sieht zb so aus:


    Analog dazu hab ich ein AddonOrdner erstellt und auf die gleiche Art versucht die Folgende Zeile hinzuzufügen:


    Code
    if($grid.getGridObject("bus15")) { 
    	with ($grid.getGridObject("bus15")) {
    		.addPath("doorR1-enter", GRID_PATH_END, vector(2.0, 0.4, 1.3), QUAT_IDENT, vector(-0.5, 0.4, 1.3), QUAT_IDENT);
    	}
    }


    Wie gesagt im Metro Ordner funktionieren die editierten Bus Dateien tadellos, aber als Addon will er nicht so richtig. Wahrscheinlich liegt es daran das der .addPath Eintrag hinzugefügt werden muss statt geändert?

  • @ Bennhardt


    Ich hab mir Ricci's Straßenbahnen als Addon mal angesehen. So wie du es hier hineingestellt hast, funktioniert es nicht ganz korrekt. Also die Straßenbahren fahren schon und das Spiel stürzt nicht ab, aber die tram-06kd wird fehlerhaft dargestellt. Da fehlt beim zweiten Wagen der vordere Teil.


    Ich hab versucht diesen ins environment.script hineinzuschreiben und zwar so:


    PHP
    $grid.loadGridObject("tram-06a", "/addons/vehiclepack02/tram-06kd/tram06a.object");


    Dadurch stürzte das Spiel beim Laden ab, mit folgender Fehlermeldung:

    Zitat

    Error: File "/addons/vehiclepack02/tram-06kd/tram06a.object" not found!
    Error: Runtime error in "addons/vehiclepack02/scripts/environment.script" at line 6: Internal error!
    Error: Runtime error in "metro/scripts/environment.script" at line 212: Internal error!

    Das komische ist, dass die tram06a.object auf jeden Fall in diesem Ordner ist. ?(


    Kannst du dir das mal ansehen, ob dir was auffällt?


    Ansonsten vielen Dank für deine Ausführungen hier. :thumbsup:

    4 Mal editiert, zuletzt von kabe () aus folgendem Grund: Rechtschreibung und Loxos danke für den Hinweis. War nur ein Kopierfehler, als ich es hier eingefügt hab.

  • Ist der Doppel-Slash in deinem Code Absicht?
    Oder hat der sogar einen tieferen Sinn?

    Muss ein Tippfehler sein. Versucht bei solchen Fehlern auch immer mal, den führenden Slash zu entfernen. In der "environment.script" muss das aber drin stehen, weil die Addon-Logik danach sucht, also so:


    $level.loadPlayerVehicle("tram-03two", "/addons/vehiclepack02/tram-03two/tram03", mkdate(1,5,1947), mkdate(15,5,1992));



    In den Modulen der Objekte muss das ab und zu raus (oder vielleicht auch IMMER), also so:


    RICHTIG
    this.colorMap = colormap("addons/zz_test/hotel/colors.bmp");


    statt so:


    FALSCH
    this.colorMap = colormap("/addons/zz_test/hotel/colors.bmp");



    Immer wenn das Log rummault, dass das Spiel was nicht finden kann, dann nehmt das führende Slash weg und versuchts nochmal.


    NACHTRAG:
    In dem Fall von Kabe:
    Auch hier muss das führende Slash weg. Meine "environment.scipt" sieht nun so aus:


    Code
    $grid = MAIN.$grid;
    $level = MAIN.$level;
    $level.loadPlayerVehicle("tram-03two", "/addons/vehiclepack02/tram-03two/tram03", mkdate(1,5,1947), mkdate(15,5,1992));
    $level.loadPlayerVehicle("tram-06k", "/addons/vehiclepack02/tram-06k/tram06a", mkdate(1,3,2005), mkdate(31,12,9999));
    $level.loadPlayerVehicle("tram-06kd", "/addons/vehiclepack02/tram-06kd/tram06a", mkdate(1,3,2005), mkdate(31,12,9999));
    $grid.loadGridObject("tram-06a", "addons/vehiclepack02/tram-06kd/tram06a.object");


    Funktioniert. Scheinbar müssen die PlayerVehicles einen führenden Slash haben, die GridObjects aber nicht. Da muss man rumprobieren.


    Hab die Datei "riccis_vehicles.zip" auf meinem Server erneuert. Sollte nun problemlos funktionieren. Danke für den Fehlerreport Kabe :)
    http://ben.s15224373.onlinehom…empel/riccis_vehicles.zip

  • Ja danke funktioniert nun. Steht ja auch in deinem vehiclepack01 Beispiel im ersten Post so drin. Hatte gestern Abend wohl schon Tomaten auf den Augen. :D

  • Ist es so auch möglich bestehende Fahrzeuge zu modifizieren? Ich möchte nämlich Busse, bei denen die Passagiere auch hinten einsteigen. Dazu muss ich etwas in den Scripts der Fahrzeuge hinzufügen. Habe schon versucht eine Ordnerstruktur der Art aufzubauen:
    C:\Users\DeinNameHier\Documents\Cities In Motion\addons\objects\vehicles\bus-xx\bus-xx.script


    In den Scripten habe ich geschrieben, was hinzugefügt werden soll. Jedoch wurde es im Spiel nicht übernommen. Habe die Änderungen direkt im jeweiligen Script gemacht, dann gings. Ist halt bezüglich den Updates nicht sinnvoll.

  • Ja, ich hatte eine Klammer vergessen, deswegen hat mein gesamtes .script nicht funktioniert. :whistling: Der Teil den ich herauskopiert dagegen schon. Blos den hab ich alleine nicht getestet und darum nicht gemerkt das es ja doch funktioniert.

  • Hallo, ich habe hier ein kleines Problem mit der Anleitung


    Und zwar hier:


    Wenn man also ein geändertes Hotel erstellen will, öffnet man die "default-buildings.script"-Datei und sucht dort nach "hotel".


    Ich würde gerne wissen wie das ist wenn man nur eine textur - im meinem Fall die Roads.dds - verändert hat, einen Link auf diese findet man nicht in dieser Datei, wie da vorgehen?

Jetzt mitmachen!

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