Fahrzeug Manager [Beta/WIP]

  • Da es durch die vielen neuen Fahrzeuge und deren verschiedene Traktionsvarianten (aus verschiedenen MODs) langsam etwas unübersichtlich wird, hatte schon länger vor das Fenster zum Fahrzeugkauf zu überarbeiten.
    Die Hauptidee besteht darin, alle Varianten eines Fahrzeugs im Shop über einen Button in der Fahrzeugliste verfügbar zu machen, um die Anzahl der Listeneinträge zu verringern.


    Die verschiedenen Traktionsvarianten (Lang- und Kurzzüge, Mehrfachtraktionen) konnte ich schon zusammenfassen:
    [gallery]2549[/gallery]


    Momentane Features:
    - verschiedene Varianten eines Fahrzeugs können über die Einstellungen in der .vehinfo-Datei zu Spielbeginn erzeugt werden
    - die zusätzlichen Varianten erscheinen nicht einzeln im Fahrzeug-Shop, sondern können über die Basisvariante und zwei neue Kontrollelemente ausgewählt werden
    - Einstellungsmöglicheit um alle Fahrzeuge ab 1920 und für immer verfügbar zu machen (gilt nur solange die Option aktiv ist)


    Weitere Ziele/Ideen:
    - Icons je nach Fahrzeugzusammenstellung erweitern um diese kenntlich zu machen
    - Struktur des Depots an die Flexibilität des Fahrzeugkaufs anpassen (nicht mehr die ganzen Züge speichern, sondern die Anzahl der einzelnen Teile)
    - verschiedene Lackierungsvarianten zusammenfassen
    - diverse weitere fahrzeugbezogene Einstellungen (wenn mir noch welche einfallen ;) )


    Bevor ich die erste Testversion veröffentliche würde ich hier gerne erstmal eure Meinung dazu hören.
    Braucht ihr sowas, oder kann ich es gleich sein lassen? ;)


    Aktuelle "Probleme":
    Ich muss das vehiclepanel.script ändern um die neuen Funktionen verfügbar zu machen.
    Im Moment habe ich zwar eine Installations-Funktion, die die 3 Zeilen einfügt und auch eine Deinstallations-Funktion, die die Änderung wieder rückgängig macht, aber ich muss noch rausfinden wie und vor allem wann ich die Deinstallations-Funktion am sinnvollsten ausführe.

  • Schön, kann ich eine Sache von meiner Todo Liste streichen.
    ModManager hat ein Hook System für Änderungen, leider wird die API dazu noch zu früh entladen.


    PS: Wie werden die Traktionen gespeichert? Da ModManager die Speicherstände überprüft...

  • Schonmal vielen Dank für das positive Feedback, ich werde dann in den nächsten Tagen dann mal versuchen den Code etwas aufzuräumen, damit ich eine Testversion hochladen kann.


    ModManager hat ein Hook System für Änderungen, leider wird die API dazu noch zu früh entladen.


    Ja, das hatte ich gelesen, daher habe ich mir erstmal eine eigene Funktion dafür geschrieben, wenn die öffentliche API funktioniert, werde ich wohl auch darauf umsteigen. Wäre es möglich das ModManager den Addons ein OnActivate/OnDeactivate Event zu Verfügung stellt? das würde mir schon helfen.


    PS: Wie werden die Traktionen gespeichert? Da ModManager die Speicherstände überprüft...


    Die Traktionen werden als zusätzliche PlayerVehicles geladen (über das environment.script, nachdem alle normalen Fahrzeuge geladen wurden, die ID setzt sich aus der ursprünglichen ID des Fahrzeugs und Zusätzen für die Konfiguration zusammen), so ähnlich wie in deinem tram_couple Script. Bei den Savegamechecks hatte ich bisher keine Probleme und wenn ich mit meinem Script die Startdaten ändere, überträgt ModManager die Änderungen auch auf alle zusätzlichen Fahrzeuge.

  • OnActivate/OnDeactivate Event:



    Das Hinzufügen kann man im game.script erledigen, alle meine Metro / Tram Erweiterungen bauen ja sich auch erst so zusammen. MM 0.5 wird wohl dann auch endlich die Verzeichnisse komplett bereinigen... Entfernen könnte man im onDestroy event des game.script machen. Das game.script wird nur geladen wenn ModManager das Verzeichnis/Mod als Aktiv führt. Wenn CIM sauber beendet wird, bekommt jedes game.script ein onDestroy event...


    Probleme kann es dann nur bei einem CIM Crash geben.


    Deswegen räumt die ModManager Hook API CIM beim starten immer wieder auf, aber CIM entlädt erst die Public API.
    Dann die Mods und dann wird erst das Destroy event an ModManager geschickt. :cursing: Somit kann ich die API noch nicht anbieten.


    Es werde das wohl noch mal alles Umbauen und der Mod Entwickler lädt dann seine eigenen Instanzen der Public API, das wird wohl noch ne Woche verbraten...

  • Ja ich arbeite noch daran, ich müsste allerdings bei ein paar Trams für verscheidene Varianten die Offsets und Anchors ändern, daher zieht es sich im Moment etwas.


    Publik API ist fertig, ändern von Dateien sollte möglich sein...


    Dann werde ich mal versuchen den Fahrzeug Manager dahingehend zu ändern, danke für den Hinweis.

  • Ich entschuldige mich für den Doppelpost, aber ich fürchte das könnte sonst hier untergehen.


    Eine erste Testversion des Fahrzeug Managers ist fertig!


    Die Features entsprechen noch in etwa denen im ersten Post.


    Installation
    Einfach die .gs-Datei aus dem Archiv in einen der beiden Addons Ordner kopieren.
    Achtung: Es wird der ModManager benötigt, wenn er nicht vorhanden ist, kann der Fahrzeug Manager die nötigen Änderungen an der Script-Datei des Vehiclepanels nicht ausführen.


    Einstellungen in der VehicleManager_Settings.script (ein Interface gibt es dafür leider noch nicht)
    $always_available = true/false;
    Gibt an ob alle Fahrzeuge immer verfügbar sein sollen


    $savegame_compatibility = 0 - 1;
    0: Die Fahrzeuge aus der Ignorelist werden weder erstellt noch im Kauffenster angezeigt
    1: Die Fahrzeuge aus der Ignorelist werden aus Kompatibilitätsgründen erzeugt, falls sie nicht schon existieren, aber nicht im Kauffenster angezeigt.


    $output_level = 0 - 5;
    Legt fest wie viele Meldungen der Fahrzeug Manager ins log schreibt,
    0: nur Fehlermeldungen
    1: grundlegende Statusmeldungen
    2: ausführlichere Statusmeldungen
    3+4: noch wie 2
    5: Debug-Modus (möglicherweise nur für mich verständlich ;-) )


    Informationen für Ersteller von Fahrzeug Mods
    Im Archiv befindet sich eine html-Datei mit den vorläufigen Spezifikationen der .vehinfo-Datei und ein paar Erklärungen. (Ob sich die Spezifikationen noch ändern hängt auch von eurem Feedback ab)
    Die .vehinfo-Datei sollte sich wie die .modinfo-Datei im Basisverzeichnis der Erweiterung befinden.
    Die Ignorelist ist dazu gedacht, dass man Usern die den Fahrzeug-Manager nicht nutzen trotzdem weitere Fahrzeugvarianten anbieten kann, ohne das diese bei Nutzung des Fahrzeug Managers im Kaufmenü zusätzlich erscheinen.


    eis_os:
    Es wäre praktisch, wenn man die API auch im init-Script schon laden könnte, da ich die Änderungen wenn möglich nicht jedes mal durchführen möchte wenn ein Spielstand geladen/ein neues Spiel gestartet wird.
    Im Moment wird das durch die Abfrage ob der Mod aktiv ist verhindert, da er ja erst nach dem Laden des init-Scripts als aktiv gesetzt wird.


    EDIT:
    Dateianhang entfernt, es gibt bald eine neue Version.

  • Hmm, das init.script wird nur einmalig geladen da es sonst Probleme mit den DLCs geben könnte. (Zumindest sollte es nur einmal geladen werden)
    Man kann aber danach Mod abschalten. Mal schauen was ein Reinit anrichtet.


    Auch fehlt noch ein Möglichkeit environment.scripts sicher zu ändern.
    Funktioniert die API sonst aber zufriedenstellend?


    Mediziner hat ja schon nach einer API Möglichkeit gefragt ein Settings Fenster pro Mod anzubieten, vielleicht baue ich das auch noch in ModManager ein.


    -edit
    Nur so als Anregung, man könnte auch die Fahrzeugdaten erweitern, könnte vielleicht die vehinfo einsparen...


    -edit2 -
    Wer bastelt sich denn dort sein eigenes API Script :rolleyes:

  • Vielen Dank für deine vielversprechen Mod :thumbsup:


    Die Spezifikationen der .vehinfo sehen sehr kompliziert aus.


    Der Vehiclemanager ist mit seinen 2 angebotenen Einstellungsmöglichkeiten sehr auf U-Bahnen und moderne Straßenbahnen ausgelegt, oder?
    Ich hätte meine neuen Rekowagen gerne mit mit Rekombinations-Möglichkeiten versehn. Leider bekomme ich die nicht in dein Doppeltraktion / Mittelteil Konzept gequetscht.
    ich würde gerne an einen Triebwagen bis zu 2 Beiwagen individuell anhängen lassen. Alternativ auch bis zu 2 Triebwagen.


    Ideal wäre es, wen man aus allen Fahrzeugvarianten eines Mods beliebige Kombinationen aus passenden Trieb und Beiwagen für Straßenbahnen erstellen könnte.


    Für meine KT4D-Doppeltraktion gibt es beispielsweise für den 2. Triebwagen einen abgesenkten Stromabnehmer. Wird soetwas zukunftig unterstützt?



    Mediziner hat ja schon nach einer API Möglichkeit gefragt ein Settings Fenster pro Mod anzubieten, vielleicht baue ich das auch noch in ModManager ein.


    JA 8o , das würde deinen MM von einem "gut zu haben" zu einem "damit holt man mehr aus Mods raus" machen

  • Na das ging ja mal schnell mit dem ersten Feedback.


    Funktioniert die API sonst aber zufriedenstellend?


    Die eine Hook Funktion die ich nutze, funktioniert wohl fehlerfrei. Mir ist allerdings aufgefallen, dass die Änderungen beim Deaktivieren des Mods nicht rückgängig gemacht werden (Habe die eingefügten Zeilen jetzt mit ein paar Abfragen versehen, damit sie nur ausgeführt werden wenn der Fahrzeug Manager aktiv ist), das könnte aber auch daran liegen, dass ich die API über einen kleinen Umweg lade.


    Nur so als Anregung, man könnte auch die Fahrzeugdaten erweitern, könnte vielleicht die vehinfo einsparen...


    Das ist eine gute Idee, werde ich demnächst mal testen, das Format der Informationen könnte man ja beibehalten.


    Mediziner hat ja schon nach einer API Möglichkeit gefragt ein Settings Fenster pro Mod anzubieten, vielleicht baue ich das auch noch in ModManager ein.


    Das wäre sicherlich eine nützliche Erweiterung, mir würden auch ja/nein-Felder und Eingabefelder für Zahlen reichen.


    Der Vehiclemanager ist mit seinen 2 angebotenen Einstellungsmöglichkeiten sehr auf U-Bahnen und moderne Straßenbahnen ausgelegt, oder?
    Ich hätte meine neuen Rekowagen gerne mit mit Rekombinations-Möglichkeiten versehn. Leider bekomme ich die nicht in dein Doppeltraktion / Mittelteil Konzept gequetscht.
    ich würde gerne an einen Triebwagen bis zu 2 Beiwagen individuell anhängen lassen. Alternativ auch bis zu 2 Triebwagen.


    Prinzipiell ist es auch die Originalfahrzeuge ausgelegt. Die Kombination Triebwagen + x-mal Beiwagen sollte aber auch über die Mittelteil Einstellung funktionieren, wenn man für "lastpart" einfach ein leeres Array einträgt.
    Mehrere Triebwagen geht dann über die Mehrfachtraktion, vieleicht könnte ich die Grenzen der einzelnen Werte auch noch voneinander abhängig machen (damit bei 2 Beiwagen z.B. keine Doppeltraktion mehr möglich ist).


    Man könnte natürlich auch für jedes Fahrzeug eine Liste mit allen mögllichen Trailerkombinationen (und deren Preis, Verbrauch, etc.) angeben, die Frage ist dann nur wie man die einzelnen Varianten sinnvoll auswählt.
    Wenn du mir mal genau aufschreibst, welche Kombinationen deiner Meinung nach möglich sein sollten, kann ich mal versuchen, dass auch möglichst wenige Einstellungsmöglichkeiten zu reduzieren.

  • Zum Bug, sobald das Mod deaktiviert wird, sollten alle Hooks entfernt werden, das muss ich mal in den nächsten Tagen nochmalig testen, oder es gibt beim entladen einen Fehler in ModManager. ?(
    Bis jetzt hat das im game.script gut funktioniert, vielleicht ist die Datei Verfolgung kaputt. Musste ja das Design schon mehrmals umschreiben. Das API Interface sollte auch so funktionieren.


    Tauchen den die Dateinamen in mm_hooktracker.script (im Spielverzeichnis) auf?

  • Mir vorschwebende Kombinationen für meine Mods:


    Rekozüge:


    TW solo
    TW + BW
    TW + TW2
    TW + BW + BW
    TWzr + BWzr + TWzr bzw TW + BW + TW2
    TW + TW2 + BW


    (mit TW2 meine ich einen Triebwagen mit abgesenktem Bügel)


    Tatra-Wagen KT4:


    TW
    TW + TW2


    hier bestehen die Wagen aus je 2 Teilen, die aber nicht getrennt werden können.


    (also: TW_kopf & TW_hinten + TW2_kopf & TW_hinten)


    T6A2:


    TW
    TW+BW
    TW+BW+BW


    Schienenbusse:


    TW
    TW+BW
    TW+BW+BW


    Ein Vorschlag wäre, wenn man den Fahrzeugtyp ausgewählt hat über einen Button "eigene Konfiguration" ein extra Fenster rechts daneben zu öffnen, in dem dann alle als zugehörig definierten Trieb und Beiwagen zur Verfügung gestellt werden und beliebig zusammengesetzt werden können. Bis zu einer vom Mod festgelegten Gesammtlänge.
    Die Zusammenstellung könnte zB über Pictogramme (wie die vom Fahrzeugmanager) erfolgen. Wenn keine individuellen Pictogramme vorhanden sind, dann eben Standardpictogramme.


    Die Fahrzeug-ID würde sich dann zB aus den einzel-IDs zusammensetzen.

  • ModManager 0.5 hat einen Fehler und kann bei Dateien kein Rollback machen. Ein komplett Rollback funktioniert aber. Das wird in 0.5.1 beseitigt, wird wohl am Wochenende herauskommen...


    Zum Thema init.script. Wie gesagt, ein init.script wird nur einmalig geladen. Das hat mit der Kompatibilität mit den DLCs zu tun. (ModManager ist da nicht ganz perfekt, sollte die Mod Liste neu geladen werden, wird das init.script wieder ausgeführt.) Daher kann ModManager auch in Zukunft die gewünschte Funktionalität nicht bieten.

    Grundsätzlich gäbe es bei dieser Art trotzdem Probleme, mit ModManager kann man neue Dateien während der Laufzeit herunterladen und installieren.
    Das wird im Vehicle Manager überhaupt nicht berücksichtigt.


    Code
    $strings = MAIN.$strings;
    
    
    if (! defined $strings.$vehiclemanager_prefix) {
      $strings = load "../strings/en_US.strings";
    }


    Sieht irgendwie komisch aus.


    Einmal in MAIN.$vehiclemanager.$strings laden und gut ist und dann $strings = MAIN.$vehiclemanager.$strings;


    Ich hab mal das Einstellungsfenster in meine Todo Liste geschrieben und eine loaded.script, pre environment.script , pre/post game/editor.script

  • Braucht man die neuste Version vom MM, weil mein PC (da wo CIM drauf ist) hat zurzeit kein Internet. Konnte ihn also noch nicht aktualisieren.


    Die Frage hat eis_os ja schon beantwortet, ich möchte aber noch anmerken, dass man den Fahrzeug Manager im jetzigen Stadium nur zum Testen nutzen sollte, da es noch sein kann, dass mit einer neueren Version die Savegame Kompatibilität verloren geht.


    Entwicklungstand:
    Ich habe jetzt die Traktionsinformationen wie von eis_os vorgeschlagen in das Fahrzeug-Script verschoben, damit sollten dann auch Fahrzeuge die mit dem ModManager installiert werden ohne Neustart im Fahrzeug Manager funktionieren. Die .vehinfo-Datei fällt jetzt also weg.
    Das Laden der String-Datei habe ich auch überarbeitet.


    Hier ein neuer Vorschlag für die Traktionsoptionen:


    id = String
    ID des zu erstellenden Fahrzeugs
    trailers = Array
    Die Trailer im selben Format wie im Fahrzeug-Script
    description = String
    Beschreibung der Traktionsoption, z.B. "3-Wagen-Zug", am besten über eine Variable in der String-Datei
    name = String
    Anzeigename des Fahrzeugs (optional, standard ist der Name des Basisfahrzeugs)
    price_factor = Float
    Preisverhältnis zum Basisfahrzeug (optional, standard ist 1.0)
    consumption_factor = Float
    Verbrauchsverhältnis zum Basisfahrzeug (optional, standard ist 1.0)
    iconpath = String
    Pfad zum Icon (optional, standard ist das Icon des Basisfahrzeugs)
    base_vehicle = String
    Gibt an bei welchem Fahrzeug diese Traktion zur Auswahl stehen soll (optional, standard ist das Basisfahrzeug)


    Basisfahrzeug = Das Fahrzeug in dessen Script die Informationen stehen


    Mögliche Erweiterungen:
    Weitere Variablen aus dem Fahrzeug-Script änderbar machen (attractiveness , reliability, type...)


    Die Auswahl der verschiedenen Optionen wäre dann über eine Liste möglcih, in der die "descriptions" stehen.

Jetzt mitmachen!

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