indexToObject wird nicht übergeben

  • Hallo zusammen,
    ich hab da ein kleines Problem. Und zwar möchte ich die Arbeitsbreite von Anbaugeräten ermitteln und das auch wenn diese mehrere WorkAreas haben. Aus diesem Grund habe ich folgenden Teil in eine eigene Funktion ausgelagert:
    [lua]function PTOLimiter:getWorkAreas(xmlFile, key)
    print("key: " ..key);
    local waStart = Utils.indexToObject(self.components, getXMLString(xmlFile, key .. "#startIndex"));
    local waWidth = Utils.indexToObject(self.components, getXMLString(xmlFile, key .. "#widthIndex"));
    if waStart ~= nil and waWidth ~= nil then
    print("waStart: " ..waStart.. ", waWidth: " ..waWidth);
    local sx, sy, sz = getTranslation(waStart);
    local wx, wy, wz = getTranslation(waWidth);
    local wW = math.abs(sx) + math.abs(wx);
    return PTOLimiter:round(wW, 1);
    else
    print("waStart und waWidth = nil");
    return 0;
    end;
    end;[/lua]


    Das Problem an der Sache ist, "waStart" und "waWidth" bekommen keinen Wert zugewiesen, egal wie ich es drehe und wende. Der "key" wird aber ordentlich übergeben und hat in diesem Fall den Wert "vehicle.workAreas.workarea". Komischerweise hat es, als es noch keine eigene Funktion war, tadellos funktioniert...
    Hat zufällig jemand ne Idee warum ich keine Werte erhalte? Vielleicht seh ich auch einfach den Wald wieder vor lauter Bäumen nicht...

  • Hmm nein, das habe ich tatsächlich nicht. Ich bin davon ausgegangen, wenn die bei der load function korrekt erkannt wird, wird sie es auch bei jeder anderen function im Script...


    Ich habe jetzt auf die Schnelle einfach mal den Befehl print(xmlFile) sowohl bei function load als auch bei function getWorkAreas eingefügt. Ist wahrscheinlich keine elegante Lösung, aber was besseres fiel mir gerade nicht ein. :D
    Interessant ist aber, dass ich bei beiden Einträgen den Wert 825660.000000 erhalte. Ich bin mir nicht sicher was der Wert bedeutet, aber daher es beides mal der Selbe ist, wird auch die aufgerufene xml Datei die selbe sein, oder nicht?

  • Wieso liest du die Werte überhaupt aus der XML aus? Wenn dein Script die WorkAreas benötigt, muss das sowieso als prerequisites eingetragen werden. Und dann ist die workAreas Tabelle im Spiel schon vorhanden, sobald deine Spezi geladen wird. Da kannst du also schon gleich drauf zugreifen, ohne nochmal erneut aus der XML auszulegen.


    Was versuchst du eigentlich mit dem Script zu bezwecken? Dem "wW" zufolge würde ich auf die Arbeitsbreite tippen. Wenn ja, das funktioniert so nicht. Guck dir mal den 3-Punkt Düngerstreuer im Grundspiel an, dann solltest du erkennen, wieso das nicht funktionieren kann.

  • Stimmt, das ist natürlich auch eine gute Lösung!
    Ich will nur die tatsächliche Arbeitsbreite ermitteln und nichts an dieser verändern. Die Arbeitsbreite ist im weiteren Verlauf eine Variable um die Ausbringmenge pro Hektar zu ermitteln und DIESE dann einzustellen. Das hat auch wie gesagt alles schön funktionert, solange bis ich die oben genannte Funktion in eine eigene Funktion gewandelt habe. Hatte das allerdings auch bis jetzt nur im originalen Zunhammerfass und in der Zunidisc verbaut.
    Bei dem Streuer ist ja der StartIndex in der Mitte :pinch: Macht aber ja auch Sinn, der Düngerstreuer hat ja schließlich ein dreieckiges Streubild. Schade, beim Fass, der Scheibenegge und einer Feldspritze hätte das geklappt...
    Danke erstmal, ich probiers mal so wie du gesagt hast, das sollte mir ja einige Zeilen Code einsparen :whistling:

Jetzt mitmachen!

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