Fahrzeug an bestimmtem Halt einsetzen

  • Ich war lange nicht mehr hier... Vor kurzem aber wieder angefangen CiM zu spielen. Und daher beschlossen, das Fahrzeuge-fahren-hintereinander-Problem endlich mal zu lösen:


    Fahrzeug an bestimmtem Halt einsetzen


    Ich bitte um konstruktive Kritik (oder Lob, falls euch sonst nicht einfällt).


    Banjo

    Cogito ergo sum. Ich denke, also bin ich. Denke ich denn?


    AFAIK = as far as I know (so weit ich weiss) / IMHO = in my humble opinion (Meiner unmassgeblichen Meinung nach) / lol = laughing out loudly (lautes Herauslachen) / prellen = (jemand dekoriert seine Sätze mit zu vielen ? und !) / ROFL = rolling on the floor laughin (auf dem Boden rollend vor lachen) / SCNR = sorry, could not resist (Ich konnt's mir nicht verkneifen) / UT(F)SE = use the (fucking) search engine (benutz endlich die Suchmaschine) / WFM = works for me (funktioniert bei mir)

    Einmal editiert, zuletzt von Banjobeni ()

  • sehr schön! werde ich auf jeden Fall ausprobieren. Da kommt mir der Gedanke nach einen geregelten Fahrplan für Verkehrsfahrzeuge (sodass nicht irgendwann 2 Busse direkt hintereinander auf einer Linie fahren - gibts sowas bereits?)


    Gibts leider nicht - und wirds IMHO ohne Umstellung der Core-Engine von CiM auch nicht geben.

    Cogito ergo sum. Ich denke, also bin ich. Denke ich denn?


    AFAIK = as far as I know (so weit ich weiss) / IMHO = in my humble opinion (Meiner unmassgeblichen Meinung nach) / lol = laughing out loudly (lautes Herauslachen) / prellen = (jemand dekoriert seine Sätze mit zu vielen ? und !) / ROFL = rolling on the floor laughin (auf dem Boden rollend vor lachen) / SCNR = sorry, could not resist (Ich konnt's mir nicht verkneifen) / UT(F)SE = use the (fucking) search engine (benutz endlich die Suchmaschine) / WFM = works for me (funktioniert bei mir)

  • Moin Banjobeni,


    tz,tz,tz, kaum wieder da und schon gegen die Boardregeln verstoßen, das haben wir gerne :D
    §22 ->Allgemeine Foren-Regeln - Board-Regeln - Cities in Motion - Fanpage , warst halt lange nicht mehr da ;)


    Zum eigentlichen Thema.
    Ich freue mich, das ich von dir endlich mal wieder etwas lese und du uns gleich ein Mod zur Verfügung stellst.
    Werde es mal die nächsten Tage ausprobieren.


    Mfg Sebastian


  • Fahrzeug an bestimmtem Halt einsetzen
    Ich bitte im konstruktive Kritik (oder Lob, falls euch sonst nicht einfällt).


    Ich möchte noch darauf hinweisen, dass man das nur mit CIM > 1.0.20 machen sollte, da sonst das Absturzrisko sehr beachtlich ist.
    Auch sonst haben meine Tests gezeigt, das CIM das Online umsortieren von Linien mit Abstürzen quittieren kann , sobald eine Tram gerade ein Stop erreicht.
    Das passiert aber sehr sehr sehr selten, nur so als Info, da ich CIM als Frankenstein CIM schon eine ganze weile so nutze, um Haltestellen Online entfernen und hinzufügen zu können.


    Sollte es kuriose Probleme geben, hilft es die Linie zu schließen und wieder zu eröffnen...

  • eis_os, vielen Dank für deine Infos. Hast du eine Ahnung, wo die objekte definiert sind, die in diesen script files als $line o.ä. referenziert werden?

    Cogito ergo sum. Ich denke, also bin ich. Denke ich denn?


    AFAIK = as far as I know (so weit ich weiss) / IMHO = in my humble opinion (Meiner unmassgeblichen Meinung nach) / lol = laughing out loudly (lautes Herauslachen) / prellen = (jemand dekoriert seine Sätze mit zu vielen ? und !) / ROFL = rolling on the floor laughin (auf dem Boden rollend vor lachen) / SCNR = sorry, could not resist (Ich konnt's mir nicht verkneifen) / UT(F)SE = use the (fucking) search engine (benutz endlich die Suchmaschine) / WFM = works for me (funktioniert bei mir)

  • Es gibt da mehrere Teile:


    a) MAIN.$grid.lines
    b) $lines
    c) MAIN.$gameDate.$lines


    a und c werden im Savegame gespeichert,


    Das Ergebniss von MAIN.$grid.lines.createLine ist das Hauptobjekt = $lineobj
    $lineobj bekommt eine Script Variable $data , das ist eine map ["index", $line.$index, "name", $line.$name, "active", false, "visible", true, "vehicles", [], "new", true];
    $lineobj kommt in $lines[] von linepanel.script.
    MAIN.$gameData.$lines[] bekommt $lineobj.$data;


    Warum so kompliziert?


    $lineobj ist eine Internes Grid Objekt, es speichert nur seine eigenen Daten,
    erweiterte Daten wie der Name oder der Status werden in $data gespeichert,
    und diese Daten müssen auch in das Savegame, also in MAIN.$gameData.$lines[].


    -edit-
    Wenn da was schief läuft, ist das Savegame wohl Schrott...
    -edit2-


    $grid.lines ist ein Array(children) mit gsTransportLine Objekten
    gsTransportLine Objekte beinhalten wiederum ein Array(children) gsTransportVehicle Objekten,


    gsTransportLine hat ein paar Events wie spawnBus, unspawnBus (ist für alle Transporttypen identisch). Die Fügen dann ein paar Visuelle Objekte hinzu zu einen Fahrzeug.


    Aber die Logik für das eigentliche auf die Linen setzen ist im gsTransportLine Objekt, aber in der C++ Seite die wir nicht kennen und nicht verändern können.

  • Wie funktioniert das mit dem patch-file? Ich würde den Mod gerne mit Linstatisticsplus kombinieren, aber das mit dem Anpassen der linepanel.script kriege ich nicht hin - Die linepanel.patch kann ich mit notepad++ öffnen, aber dann?

  • Nach vielen Monaten habe ich mich nochmal damit beschäftigt. Falls noch jemand Interesse hat, LSP mit dieser Mod zu kombinieren, hier ist die Anleitung. Ich habe dabei aber die Funktion weggelassen, dass beim Entfernen von Haltestellen von einer Linie diese Linie offenbleibt, weil das oft zu Fehlern führte.


    Ihr braucht...



    Wenn alles da ist, müsst ihr:


    • Die .gs-Datei öffnen und in scripts die Datei linepanel.script öffnen (Rechtsklick->Edit...) oder sie extrahieren (Rechtsklick->Extract to...) und sie öffnen
    • In der linepanel.script zu den 230er Zeilen scrollen. Ihr ändert dann die function createBus, indem ihr Folgenden Code direkt unter dem Funktionsnamen einfügt:
      Code
      $stopIndex = $selectedStop; if ($line.active && $stopIndex > 0) { $numStops = $line.stopCount; reverseStops(0, $stopIndex - 1); reverseStops($stopIndex, $numStops - 1); reverseStops(0, $numStops - 1); }


    • Die function reverseStops definieren, indem ihr den Code am Ende einfügt:
      Code
      function reverseStops($start, $end) { 
      while ($start < $end) { 
      moveStop($start, $end); 
      $start++; 
      $end--; 
      } 
      }


    • In den 1070ern die function moveStop modifizieren: Die ersten zwei Zeilen,
      Code
      if ($selectedLine.active) togglePauseLine($selectedLine); 
      if (!$selectedLine.visible) toggleShowLine($selectedLine);

      müssen mit einem // auskommentiert ("deaktiviert") werden:

      Code
      //if ($selectedLine.active) togglePauseLine($selectedLine); 
      //if (!$selectedLine.visible) toggleShowLine($selectedLine);


    • Abspeichern. Achtet darauf, dass ihr sie wirklich als linepanel.script speichert!
    • Wenn ihr die Datei in Schritt 1 extrahiert habt: Macht im GSFileViewer einen Rechtsklick auf die Datei linepanel.script und wählt "Exclude from Archive", macht dann einen Rechtsklick irgendwo hin und wählt "Add new content...". Im folgenden Fenster könnt ihr die ersten zwei Felder ignorieren, wählt im dritten die abgespeicherte .script-Datei und tragt dann im vierten Feld vor den Dateinamen ein "scripts\", sodass im letzten Feld dann steht
      Code
      scripts\linepanel.script

      Klickt OK.

    • Wählt im GSFileViewer oben "Save to new GS File..." an, speichert es irgendwo unter dem Originalnamen (lineStatisticsPlus.gs) und verschiebt diese .gs-Datei in euren addons-Ordner. Löscht vorher die originale lineStatisticsPlus.gs!


    Der Code, den ich hier zeige, ist aus der Modifikation von Banjobeni übernommen. Darf ich die modifizierte Scriptdatei oder gleich die ganze .gs hier veröffentlichen? Das würde es für Viele wohl leichter machen.
    Wenn Bilder gewünscht sind, kann ich noch Screenshots hochladen.

    2 Mal editiert, zuletzt von gojo () aus folgendem Grund: Einleitende Bemerkungen hinzugefügt, Absätze korrigiert

Jetzt mitmachen!

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