DIY - Simhub Dash Displays

U

User 26591

Ich bin grade am Umsetzen einer kleinen Ansicht, in der man erkennen kann, zwischen welchen Fahrzeugen man nach einem Boxenstopp wieder rauskommt, es gibt ja in SimHub (noch) keine Möglichkeit, auf der Streckenkarte zeichnen zu können.

Dazu hab' ich ein paar Parameter konfigurierbar gemacht:
- Die Pitstopdeltatime (PDT) kann pro Strecke in Sekunden angegeben werden
- es gibt einen "Bufferzeit" in Sekunden vor und nach der Deltatime, die global immer gleich ist.

In der Animation unten habe ich für meine Tests eine PDT von 5 Sekunden (ich weiss, unrealistisch, habe aber leider kein langes Replay zur Verfügung) und einen Buffer von +/-2 Sekunden definiert.

Die Routine berechnet aufgrund der regulären Abstände im Rennen den Abstand der einzelnen Fahrzeuge zum "Wiedereintrittspunkt" (GapToReentry-GTR), indem mehr oder weniger die PDT vom Abstand abgezogen wird (ein bissl komplexer).

Im Beispiel wäre ein Fahrzeug mit einer GTR von 5.0 genau zu dem Zeitpunkt auf der Strecke, wenn man rauskkommen würde und wird rot dargestellt. Da habe ich ein Fenster von +/- 1 Sekunde hergenommen (also von 4-6 Sekunden GTR).
Ist die GTR ausserhalb dieses Fenster, aber noch im Bufferbereich, wird es lila dargestellt.

Für den Fahrer heisst das, ist die Ansicht ohne Farben, gibt es aktuell kein Fahrzeug, das mich nach dem Boxenstopp behindern würde.

Anhang anzeigen 105661

Nachdem hier im Forum ja ein recht gutes Schwarmwissen vorliegt, wollte ich fragen, ob das für euch während des Rennens brauchbar ist und natürlich, welche zusätzlichen Ideen ihr hättet, um das Ganze besser machen zu können.

lg
michi
Tolle Idee - ich würde das sicherlich nutzen.

LG
 
U

User 561

Ich bin grade am Umsetzen einer kleinen Ansicht, in der man erkennen kann, zwischen welchen Fahrzeugen man nach einem Boxenstopp wieder rauskommt, es gibt ja in SimHub (noch) keine Möglichkeit, auf der Streckenkarte zeichnen zu können.

Dazu hab' ich ein paar Parameter konfigurierbar gemacht:
- Die Pitstopdeltatime (PDT) kann pro Strecke in Sekunden angegeben werden
- es gibt einen "Bufferzeit" in Sekunden vor und nach der Deltatime, die global immer gleich ist.

In der Animation unten habe ich für meine Tests eine PDT von 5 Sekunden (ich weiss, unrealistisch, habe aber leider kein langes Replay zur Verfügung) und einen Buffer von +/-2 Sekunden definiert.

Die Routine berechnet aufgrund der regulären Abstände im Rennen den Abstand der einzelnen Fahrzeuge zum "Wiedereintrittspunkt" (GapToReentry-GTR), indem mehr oder weniger die PDT vom Abstand abgezogen wird (ein bissl komplexer).

Im Beispiel wäre ein Fahrzeug mit einer GTR von 5.0 genau zu dem Zeitpunkt auf der Strecke, wenn man rauskkommen würde und wird rot dargestellt. Da habe ich ein Fenster von +/- 1 Sekunde hergenommen (also von 4-6 Sekunden GTR).
Ist die GTR ausserhalb dieses Fenster, aber noch im Bufferbereich, wird es lila dargestellt.

Für den Fahrer heisst das, ist die Ansicht ohne Farben, gibt es aktuell kein Fahrzeug, das mich nach dem Boxenstopp behindern würde.

Anhang anzeigen 105661

Nachdem hier im Forum ja ein recht gutes Schwarmwissen vorliegt, wollte ich fragen, ob das für euch während des Rennens brauchbar ist und natürlich, welche zusätzlichen Ideen ihr hättet, um das Ganze besser machen zu können.

lg
michi
Diese Funktion ist extrem gut. Wo speicherst du denn die PDT? Und kalkulierst Du die Selektion für den Pitstop, also Reifenwechsel und Sprit mit ein?
 
U

User 26065

Diese Funktion ist extrem gut. Wo speicherst du denn die PDT? Und kalkulierst Du die Selektion für den Pitstop, also Reifenwechsel und Sprit mit ein?
Hallo, Markus!

Es wird ein eigenes .js-File geben, das im Simhubfolder unter "JavascriptExtensions" abgelegt werden muss. Das kann von jedem einfach editiert werden und so Richtwerte eingetragen werden.
Leider gibt's in ACC kein Property um auszulesen, welche Strategie für den Boxenstopp gewählt ist, daher ist das ein vollkommen statischer Wert, der im Moment vom Fahrer mehr oder weniger aufgrund von Erfahrungswerten bzw. geplanter Strategie eingetragen werden muss.

Darum gibt's ja auch die Bufferzeit, die man dazueintragen kann.

Mir wäre anders natürlich lieber, aber besser einen groben Überblick, wo man rauskommt, als überhaupt keine Idee ;) (die ich im Moment habe).

Aber das bringt mich grade auf die Idee, noch eine kleine Anzeige einzubauen, die die für die Strecke eingetragenen Werte für PDT und Buffer mitausgibt, das hat man ja nicht immer im Kopf.

lg
m
 
U

User 26065

Wenn alles läuft, wie geplant, werd' ich die Version mit der PDT-Anzeige heute Nachmittag/Abend hochladen.
Aktuell ist grad etwas Betrieb im Betrieb, da war ich diese Woche zuhause nicht mehr motiviert, den Rechner einzuschalten...
 
U

User 561

Hallo, Markus!

Es wird ein eigenes .js-File geben, das im Simhubfolder unter "JavascriptExtensions" abgelegt werden muss.
Ich habe noch nichts dazu gefunden, wie man solche Files ausliest und beschreibt. In der Doku steht schlicht, dass man eine js-Extension startet, indem man js: davor schreibt. Ist halt wenig ergiebig. Da muss ich mich wohl mal eingehender mit Javascript auseinandersetzen.

Da Simhub keine globalen Variablen zulässt, die über mehr als ein Element hinweg funktionieren, muss ich lerne, die in ein File wegzuschreiben und daraus auszulesen.
 
U

User 26590

Wenn alles läuft, wie geplant, werd' ich die Version mit der PDT-Anzeige heute Nachmittag/Abend hochladen.
Aktuell ist grad etwas Betrieb im Betrieb, da war ich diese Woche zuhause nicht mehr motiviert, den Rechner einzuschalten...
Vielen vielen Dank dafür :daumen:
Freu mich drauf die Funktion zu testen :giggle:
 
U

User 561

User 6818:

Ja, ok. Verstehe. Scheint ja nicht allzu schwierig zu sein. Jetzt muss ich nur noch herausfinden, wie ich eine .ini auslese, dann habe ich meine Aufgabenstellung vollständig gelöst. Dann könnte ich in der .ini nämlich übersichtlich definieren (und leicht editieren), welche Funktion jede Rotary-Position
hat. Also z. B.

[Left Rotary Functions]
left_01 = 'ABS';
left_02 = 'TCR';
left_03 = 'TCC';

Klar, das kann ich auch direkt im Script hardcoden, aber elegant ist das absolut nicht und Änderungen sind eine Qual.
 
U

User 26065

Jedes File in dem JavaExtension Directory wird für jedes Element geladen.
Ich hab's so gelöst, dass ich nicht die variablen einzeln drinnen stehen habe, sondern eigene Funktionen mit "mi" als Präfix gebaut habe.

Als Beispiel, die Datei heisst z.B. miBigDisplay.js und drinnen sind alle Funktionen definiert..

Code:
function miGetPDT() {
   switch ($prop('Trackname')) {
     case 'Suzuka':
        return 39;
     ....
}

Und im Control dann wie von Max beschrieben aufrufen...

.ini Datei brauchst keine, am Besten du nennst die Datei MarcusIni.js ;)

Da ja automatisch alle .js Dateien aus dem Verzeichnis geladen werden, könnte es wahrscheinlich vorkommen, dass ein anderes Plugin deine überschreibt. Darum nutze ich das "mi"-Präfix, sowas würd' ich auf jeden Fall empfehlen.

lg
m
 
U

User 26065

Nachtrag: Eigentlich wär's am Einfachsten für deine Anwendung, in einer Funktion ein Array/Hash mit den Funktionen zurückzugeben.

z.B.
Code:
function mj_getLeftRotaryFunctions() {
   return functionArray['ABS','TCR','TCC',...];
}
und im Control kann man das dann auslesen:
Code:
var leftRotaryFunctions = mj_getLeftRotaryFunctions()
 
U

User 26065

So, die aktuellste Version ist online. Weiterhin wie gehabt unter
zu finden.

Allerdings sind für das BigDisplay jetzt 2 Files zu holen, 1x miBigDisplay.simhubdash und 1x miBigDisplay.js

Bitte die .js Datei im Simhubordner in den Unterordner "JavascriptExtensions" kopieren.
(Bei mir ist das z.B. C:\Program Files (x86)\SimHub\JavascriptExtensions)

ACHTUNG! Der Ordner "Simhub" im "Dokumente"-folder ist der falsche ;)

In der Datei miBigDisplay.js sind gleich als erstes für alle Tracks die einzelnen Pitstopdeltazeiten gespeichert, hier einfach hinter "return" immer den entsprechenden rausgefahrenen Wert in Sekunden eintragen.
Code:
function miGetPitstopDeltatime() {
  switch($prop('TrackName')) {
    case 'Mount Panorama Circuit':
      return 41;
    case 'WeatherTech Raceway Laguna Seca':
      return 42;
    case 'Circuit de Spa-Francorchamps':
      return 43;
    case 'Suzuka Circuit':
      return 44;
    case 'Kyalami Grand Prix Circuit':
      return 45;
    case 'Oulton Park':
      return 46;
    case 'Snetterton Circuit':
      return 47;
    case 'Donington Park':
      return 48;
    case 'Monza Circuit':
      return 49;
    case 'Brands Hatch Circuit':
      return 50;
    case 'Silverstone':
      return 51;
    case 'Circuit Paul Ricard':
      return 52;
    case 'Misano World Circuit':
      return 53;
    case 'Circuit Zandvoort':
      return 54;
    case 'Nürburgring':
      return 55;
    case 'Hungaroring':
      return 56; 
    case 'Circuit de Barcelona-Catalunya':
      return 57;
    case 'Circuit Zolder':
      return 58;
    case 'Autodromo Enzo e Dino Ferrari':
      return 59;
    default:
      return 60;
  }
}

Es würde mich freuen, wenn wir hier eine Sammlung der Standardzeiten (Reifenwechsel + Betankung) für alle Strecken sammeln könnten, dann muss ich die nicht alle selbst "erfahren".

lg
michi
 
Oben