Problem bei automatischer Fahrgassenschaltung mit der Funktion "setJointMoveDown" aus Vehicle.lua

  • Hi,


    ich habe ein kleines Problem mit der Funktion "setJointMoveDown" aus der Vehicle.lua... vielleicht kann mir jemand weiterhelfen?


    Folgender Sachverhalt:


    Für eine automatische Fahrgassenschaltung möchte ich die Fahrten zählen lassen, wenn eine angebaute Sämaschine vom Schlepper ausgehoben wird.
    Für das Ausheben und Ablassen der angebauten Gerätschaften ist meiner Meinung nach die Funktion "setJointMoveDown" aus der Vehicle.lua zuständig.


    Das Fahrgassenskript ist in den Sämaschinen verbaut und folgendes habe ich zur Zeit ausprobiert:
    [lua]function DrivingLine:setJointMoveDown(jointDescIndex, moveDown, noEventSend)

    print("setJointMoveDown")
    if ...
    self.currentDrive = self.currentDrive + 1;
    end;
    end;
    [/lua]
    Wenn die Funktion "setJointMoveDown" aufgerufen wird, soll der Wert bei currentDrive um eins erhöht werden.


    Leider tut sich im Spiel garnix, der Text "setJointMoveDown" wird in der Log.txt auch nicht ausgegeben.


    Ich vermute, dass das Fahrgassenskript erwartet, dass die Sämaschine (Vehicle.lua) die Funktion "setJointMoveDown" aufruft.
    Tatsächlich wird ja aber die Funktion "setJointMoveDown" vom Schlepper (Vehicle.lua) aufgerufen und somit sollte das Fahrgassenskript die Funktion "setJointMoveDown" vom Schlepper erwarten bzw. darauf reagieren... ich hoffe ihr versteht meinen Gedankengang.


    Hab schon ein wenig mit "attacherVehicle" herumprobiert, aber leider ohne Erfolg.


    Hat jemand vielleicht eine Lösung für diesen Lösungsansatz oder vielleicht eine ganz andere Idee, wie man die Fahrten beim Ausheben der Geräte zählen kann?




    Im Helferbetrieb funktioniert das Zählen der Fahrten mit folgenden Zeilen einwandfrei:
    [lua]function DrivingLine:aiLower()

    if...
    self.currentDrive = self.currentDrive + 1;
    end;
    end;[/lua]
    Wenn die Fuktion "aiLower" aufgerufen wird, wird der Wert um eins erhöht.
    Hier scheint es zu funktionieren, da ja nur der Schlepper (also seine "AITractor.lua") diese Funktion aufruft...


    Gruessla TOM

  • Hallo, ich glaube mit dem JointMoveDown liegst du denke ich gar nicht so falsch. Ich habe mir mal die Vehicle.lua angeschaut und mir spontan etwas überlegt.



    [lua]
    -- UpdateTick --
    if self:getIsActiveForInput() then
    if self.attacherVehicle ~= nil then -- eigentlich unnötig, denke ich
    local implement = self.attacherVehicle.attachedImplements[self.attacherVehicle.selectedImplement];
    local jointDesc = self.attacherVehicle.attacherJoints[implement.jointDescIndex];
    local moveDown = jointDesc.moveDown;
    if self.backUpMoveDown ~= moveDown then;
    if not jointDesc.moveDown then
    --- zählen?
    end;
    self.backUpMoveDown = moveDown;
    end;
    end;
    end;
    -------------------
    [/lua]


    Das Rechtschreibfehler zur späten Stunde vorhanden sind, kann ich leider nicht ausschließen und getestet wurde dies auch nicht, aber ich denke mit dem Grundgedanken kannst du was anfangen ;).


    MfG und Viel Glück ;)


    EDIT: jointDesc.moveDown wird, mit dem Tastendruck geändert. Drückst du also mehrmals die Taste V, auch wenn sich die Sähmaschine nicht sonderlich bewegt, zählt er stätig hoch. Könnte evtl. zu schwierigkeiten führen :S.

  • So sollte es gehen:


    [lua]
    function DrivingLine:load(xmlFile)
    if self.setJointMoveDown ~= nil then
    self.setJointMoveDown = Utils.overwrittenFunction(self.setJointMoveDown, DrivingLine.setJointMoveDown);
    end;
    end;[/lua]


    [lua]
    function DrivingLine:setJointMoveDown(oldFunc, jointDescIndex, moveDown, noEventSend)
    oldFunc(self, jointDescIndex, moveDown, noEventSend);
    print("joint moved");
    end;[/lua]

  • Hi ihr Zwei,


    erstmal vielen lieben Dank für die Lösungsvorschläge!


    Konnte bis jetzt leider nur eine Lösung ausprobieren... und da habe ich mich für die erste Lösung von FIAT80-90DT entschieden, da ich diese noch sehr gut nachvollziehen kann... bei der overwrittenFunction hab ich wohl noch nicht komplett alle Zusammenhänge verstanden. Außerdem kommt es beim Überschreiben einer Funktion sicherlich eher zu Fehlern mit anderen Mods, die die gleiche Funktion überschreiben/verändern. Der Neugier halber werd ich deine Lösung aber auch noch ausprobieren, Raffi.


    Soweit funktioniert auch alles wie es soll... mehr dazu im WIP-Bereich: http://planet-ls.de/board/inde…&postID=198923#post198923

Jetzt mitmachen!

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