Abfragen ob das Fahrzeug mit manualIgnition aus ist?

  • Hi,


    ich möchte mein RPM Script etwas erweitern weil bei Fahrzeugen mit manualIgnition Script die Drehzahl von 100 angezeigt wird auch wenn der Schlepper aus ist.


    ich habe also versucht herauszufinden, wie man abfragt ob das Fahrzeug aus ist.


    Hier mein Versuch:
    [lua]
    function showRPM:update(dt)
    if self.isEntered then
    if self.isMotorStarted == false then
    setTextBold(true);
    setTextAlignment(RenderText.ALIGN_RIGHT);
    setTextColor(1, 0, 0, 1);
    renderText(self.showRPMPosX + 0.105, self.showRPMPosY + 0.010, 0.022, "OFF");
    end;
    if self.motor.lastMotorRpm > 1900 then
    setTextBold(true);
    setTextAlignment(RenderText.ALIGN_RIGHT);
    setTextColor(1, 0, 0, 1);
    renderText(self.showRPMPosX + 0.105, self.showRPMPosY + 0.010, 0.022, tostring(math.floor(self.motor.lastMotorRpm)));
    else
    setTextBold(true);
    setTextAlignment(RenderText.ALIGN_RIGHT);
    setTextColor(0, 1, 0, 1);
    renderText(self.showRPMPosX + 0.105, self.showRPMPosY + 0.010, 0.022, tostring(math.floor(self.motor.lastMotorRpm)));
    end;
    end;
    end;
    [/lua]


    Ich habe es auch so versucht:


    [lua]
    if self.isEntered and self.isMotorStarted == false then
    [/lua]


    Leider hat beides nicht funktioniert.
    Der erste Ansatz funktioniert zwar aber es wird die Drehzahl trotzdem noch angezeigt. Beide Anzeigen (OFF und 100 U/min) liegen dabei übereinander.
    Beim 2ten Ansatz gibt es einen Log Fehler (unknown vehicle type).


    Hat jemand einen Tipp für mich?


    lg
    Webby

  • [lua]function showRPM:update(dt)
    if self:getIsActive() then
    if self.isMotorStarted == false then
    setTextBold(true);
    setTextAlignment(RenderText.ALIGN_RIGHT);
    setTextColor(1, 0, 0, 1);
    renderText(self.showRPMPosX + 0.105, self.showRPMPosY + 0.010, 0.022, "OFF");
    end;
    if self.motor.lastMotorRpm > 1900 then
    setTextBold(true);
    setTextAlignment(RenderText.ALIGN_RIGHT);
    setTextColor(1, 0, 0, 1);
    renderText(self.showRPMPosX + 0.105, self.showRPMPosY + 0.010, 0.022, tostring(math.floor(self.motor.lastMotorRpm)));
    else
    setTextBold(true);
    setTextAlignment(RenderText.ALIGN_RIGHT);
    setTextColor(0, 1, 0, 1);
    renderText(self.showRPMPosX + 0.105, self.showRPMPosY + 0.010, 0.022, tostring(math.floor(self.motor.lastMotorRpm)));
    end;
    end;
    end;[/lua]


    Probier es mal so. Kann aber nicht sagen ob es funktioniert.


    MfG

  • Also, ich verstehe das jetzt so, du kriegst es zwar hin abzufragen ob der Motor an oder aus ist... Dein Problem liegt jetzt nur darin, wenn der Motor aus ist, liegen die Anzeigen das er aus ist und die drehzahl 100 übereinander...!


    Bau das mit den Drehzahlen doch in eine weitere abfrage:


    [lua]


    function showRPM:update(dt)
    if self.isEntered then
    if self.isMotorStarted == false then
    setTextBold(true);
    setTextAlignment(RenderText.ALIGN_RIGHT);
    setTextColor(1, 0, 0, 1);
    renderText(self.showRPMPosX + 0.105, self.showRPMPosY + 0.010, 0.022, "OFF");
    end;
    if self.isMotorStarted == true then
    if self.motor.lastMotorRpm > 1900 then
    setTextBold(true);
    setTextAlignment(RenderText.ALIGN_RIGHT);
    setTextColor(1, 0, 0, 1);
    renderText(self.showRPMPosX + 0.105, self.showRPMPosY + 0.010, 0.022, tostring(math.floor(self.motor.lastMotorRpm)));
    else
    setTextBold(true);
    setTextAlignment(RenderText.ALIGN_RIGHT);
    setTextColor(0, 1, 0, 1);
    renderText(self.showRPMPosX + 0.105, self.showRPMPosY + 0.010, 0.022, tostring(math.floor(self.motor.lastMotorRpm)));
    end;
    end;
    end;
    end;[/lua]


    Nur wenn er an ist, soll er den Text der Drehzahl ausgeben...!


    Und die erste if abfrage solltest du auf:
    [lua]


    self:getIsActiveForInput() [/lua]
    schreiben, so hat es mir modelleicher mal erklärt:


    Zitat

    solltest du if self:getIsActive() then durch if self:getIsActiveForInput() then ersetzen.
    Der Grund ist, dass self:getIsActive immer "true" ist wenn irgend jemand im Fahrzeug sitzt. (Helfer, Mitspieler, man selbst.) self:getIsActiveForInput() gibt nur true zurück wenn man selbst im Fahrzeug sitzt.
    Aber im Allgemeinen sollte man vor Tastenabfragen immer erst mal überprüfen ob man auch selbst im Fahrzeug sitzt, sonst kommt es irgendwann zwangsläufig so, dass man ein anderes Fahrzeug ausversehen mit steuert..

  • Ich glaube da wärst du selber auch noch drauf gekommen.


    Im grunde hast du ja jetzt 2 Bedingungen geprüft, wenn der Motor aus ist, dann mach das... und wenn die Drehzahl so ist, mach das. Da im Skript vorher ja schon immer das Problem auftauchte, wäre dir der einfall sicher auch noch gekommen.


    Aber vielleicht reicht es auch aus, einfach nur zu fragen ob der Morot gestartet ist, und wenn er gestartet ist, erst dann zeige dein HUD, würde sicher auch gehen.


    Ich denke, die 2 abfragen ob der Motor gestartet ist, kannst du auch anders schreiben, also mit "else" glaube ich (da bin ich mir noch nicht soi ganz sicher), also quasi, ist der Motor aus, mach das... ansonsten tue immer das andere, in deinem Fall die Drahzahl schreiben.


    Aber ich bin da jetzt auch nicht der Fachmann, ich teste auch selber immer noch viel rum um alles zu verstehen...
    if right==true then
    render text (Ohne Log Fehler)
    else
    render text (Du dussel)
    end;
    :D

  • Ich stricke an dem Script schon den ganzen Tag rum, 90% davon ging für die Ausrichtung über dem Betriebsstundenzähler drauf und das passt auch noch nicht 100% wie man auf dem Bild sehen kann.


    Wahrscheinlich wäre ich drauf gekommen aber im Moment sehe ich nur noch Code wo gar keiner ist :D


    Mit else hatte ich auch schon mehrere Varianten durch aber irgendwie gab es immer LogFehler 8|


    Naja für´s erste funktioniert es so und das ist erstmal die Hauptsache!


    Wenn du noch Tipps haben solltest, was die Ausrichtung angeht... ich habe immer ein Ohr offen ;)


    lg
    Webby

Jetzt mitmachen!

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