Hilfe bei speci...

  • Ich möchte per Knopfdruck das Standgas meines Trekkers erhöhen und wieder normalisieren. Hab jetzt mal versucht mit meinen sehr schmalen lua-kentnissen das ganze zu bewerkstelligen. Hab dann ne Speci erstellt, die aber irgendwie net funktioniert... ?(?(?(


    Findet jemand von euch den (oder noch schlimmer die) Fehler?


    [lua]setVehicleRpm = {};


    function setVehicleRpm.prerequisitesPresent(specializations)
    return SpecializationUtil.hasSpecialization(Motorized, specializations);
    end;


    function setVehicleRpm:load(xmlFile)
    self.saveMinRpm = 0;
    end;


    function setVehicleRpm:delete()
    end;


    function setVehicleRpm:mouseEvent(posX, posY, isDown, isUp, button)
    end;


    function setVehicleRpm:keyEvent(unicode, sym, modifier, isDown)
    end;


    function setVehicleRpm:update(dt)
    if self:getIsActiveForInput() and InputBinding.isPressed(InputBinding.setVehicleRpm) then
    self.setVehicleRpm = self.setVehicleRpm;
    end;
    end;




    function setVehicleRpm:updateTick(dt)
    end;



    function setVehicleRpm:draw()
    if self.saveMinRpm ~= 0 then
    if isActive == true then
    self.motor.minRpm = math.max(self.motor.minRpm-dt, -1000);
    else
    self.motor.minRpm = math.min(self.motor.minRpm+dt*2, self.saveMinRpm);
    end;
    else
    self.motor.minRpm = self.saveMinRpm;
    end;
    end;


    function setVehicleRpm:onLeave()
    end;


    [/lua]

  • Ich glaub so müsste es heißen, aber was kommt bei den Fragezeichen hin?


    [lua]setVehicleRpm = {};


    function setVehicleRpm.prerequisitesPresent(specializations)
    return SpecializationUtil.hasSpecialization(Motorized, specializations);
    end;


    function setVehicleRpm:load(xmlFile)
    self.setVehicleRpmUp = SpecializationUtil.callSpecializationsFunction("setVehicleRpmUp");
    self.saveMinRpm = 0;
    end;


    function setVehicleRpm:delete()
    end;


    function setVehicleRpm:mouseEvent(posX, posY, isDown, isUp, button)
    end;


    function setVehicleRpm:keyEvent(unicode, sym, modifier, isDown)
    end;


    function setVehicleRpm:update(dt)
    if self:getIsActiveForInput() then
    InputBinding.isPressed(InputBinding.setVehicleRpm) then
    ???;
    isKeyEvent = true;
    end;
    self:setVehicleRpmUp(dt, isKeyEvent);
    end;
    end;


    function setVehicleRpm:updateTick(dt)
    end;


    function setVehicleRpmUp(dt, isActive)
    if self.saveMinRpm ~= 0 then
    if dt ~= nil then
    if isActive == true then
    elf.motor.minRpm = math.max(self.motor.minRpm-dt, -1000);
    else
    self.motor.minRpm = math.min(self.motor.minRpm+dt*2, self.saveMinRpm);
    end;
    else
    self.motor.minRpm = self.saveMinRpm;
    end;
    end;
    end;



    function setVehicleRpm:draw()
    end;


    function setVehicleRpm:onLeave()
    end;
    [/lua]

  • Nun, wenn du willst dass das Standgas nur solange erhöht ist wie du auf der Taste drückst bist du auf dem richtigen Weg..


    Allerdings Zwischen Zeile 25 und 27 die ersten Fehler...


    [lua]local isKeyEvent = false; -- wir erzeugen die Variable local hier, somit gilt sie in diesem Block und seinen Untergeordneten Blocks
    If InputBinding.isPressed(InputBinding.setVehicleRpm) then -- wenn die Taste gedrückt ist dann:
    isKeyEvent = true;
    else -- ansonsten
    isKeyEvent = false;
    end;
    self:setVehicleRpmUp(dt, isKeyEvent)[/lua]



    Soweit dazu...


    Der nächste Fehler ist in Zeile 34.
    [lua]function setVehicleRpmUp(dt, isActive) -- geht nicht, die Funktion muss so aussehen:
    function setVehicleRpm:setVehicleRpmUp(dt, isActive)[/lua]




    Soviel zum Technischen... Zum rest kann ich grade nix sagen weil ich etwas in Eile bin, aber die Syntaxfehler dürften damit draussen sein.. ;)


    So ich hoffe hab in der Eile nix übersehn, bin grade am packen und abreisen fürn Urlaub.. :D


    LG

  • Vielen herzlichen Dank das Du da noch vor Deinem Urlaub drübergeschaut hast... :thumbsup::thumbsup:
    Wünsch Dir einen super Urlaub!! 8)


    Jetzt scheint der Fehler in der Funktion zu sein, den es funktioniert irgendwie immer no net... ;(


    [lua] setVehicleRpm = {};


    function setVehicleRpm.prerequisitesPresent(specializations)
    return SpecializationUtil.hasSpecialization(Motorized, specializations);
    end;


    function setVehicleRpm:load(xmlFile)
    self.setVehicleRpmUp = SpecializationUtil.callSpecializationsFunction("setVehicleRpmUp");
    self.saveMinRpm = 0;
    end;


    function setVehicleRpm:delete()
    end;


    function setVehicleRpm:mouseEvent(posX, posY, isDown, isUp, button)
    end;


    function setVehicleRpm:keyEvent(unicode, sym, modifier, isDown)
    end;


    function setVehicleRpm:update(dt)
    if self:getIsActiveForInput() then
    local isKeyEvent = false; -- wir erzeugen die Variable local hier, somit gilt sie in diesem Block und seinen Untergeordneten Blocks
    if InputBinding.isPressed(InputBinding.setVehicleRpm) then -- wenn die Taste gedrückt ist dann:
    isKeyEvent = true;
    else -- ansonsten
    isKeyEvent = false;
    end;
    self:setVehicleRpmUp(dt, isKeyEvent)
    end;
    end;


    function setVehicleRpm:updateTick(dt)
    end;


    function setVehicleRpm:setVehicleRpmUp(dt, isActive)
    if self.saveMinRpm ~= 0 then
    if dt ~= nil then
    if isActive == true then
    self.motor.minRpm = math.max(self.motor.minRpm-dt, -1000);
    else
    self.motor.minRpm = math.min(self.motor.minRpm+dt*2, self.saveMinRpm);
    end;
    else
    self.motor.minRpm = self.saveMinRpm;
    end;
    end;
    end;



    function setVehicleRpm:draw()
    end;


    function setVehicleRpm:onLeave()
    end; [/lua]

  • Diese Problem hab ich jetzt etwas einfacher in den Griff bekommen. :D


    Trotzdem vielen Dank für Deine Erklärung, so lern ich das ganze vielleicht noch irgendwann ernsthaft zu verstehen...
    Komm eigentlich aus dem CNC Bereich, und hab mich jetzt entschlossen im learningbydoing verfahren mir LUA Scripting anzueignen... :S

Jetzt mitmachen!

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