Fruchtart auslesen/erkennen

  • Hallo ihr lieben Leutz,


    ich wende mich mal mit einem Problem an euch, bei dem ich keine Lösung finde.


    Und zwar geht es darum, dass ein Mod die Fruchtart erkennen soll, die sich vor ihm befindet. Einer Variable soll dann der Index dieser Fruchtart zugeordnet werden.


    Zur Zeit kenne ich nur zwei "Funktionen", mit denen man die Dichte einer bestimmten Fruchtart bzw. eines bestimmten Channels in der Fläche auslesen kann, z.B:


    [lua]Utils.getFruitArea(FruitUtil.FRUITTYPE_BARLEY, x, z, x1, z1, x2, z2);[/lua]
    und
    [lua]Utils.getDensity(g_currentMission.terrainDetailId, g_currentMission.cultivatorChannel, x, z, x1, z1, x2, z2);[/lua]


    x, z, x1, z1, x2, z2 sind die Koordinaten der drei Punkte, die die Fläche ergeben:
    [lua]local x,y,z = getWorldTranslation(self.cuttingAreas[i].start);
    local x1,y1,z1 = getWorldTranslation(self.cuttingAreas[i].width);
    local x2,y2,z2 = getWorldTranslation(self.cuttingAreas[i].height);[/lua]


    Leider hab ich noch nichts gefunden, mit der man den Index oder den Namen der Fruchtart auslesen kann.



    Weiß jemand von euch, wie der Befehl heißt bzw. ob es diesen überhaupt gibt?


    Oder hat jemand eine Idee, wie man mit den bekannten Funktionen das Erkennen der Fruchtart realisieren könnte?

  • Sauber Heady! Vielen lieben Dank, funktioniert einwandfrei :D


    Eine kleine Frage hätt ich aber noch dazu:


    Da die Fruchtart nur einmal abgecheckt werden soll, wenn eine Taste gedrückt wird, hab ich das ganze folgendermaßen in die update-Funktion eingefügt:
    [lua]
    if InputBinding.hasEvent(InputBinding.CHECKFRUIT) then
    local x,y,z = getWorldTranslation(self.cuttingAreas[i].start);
    local x1,y1,z1 = getWorldTranslation(self.cuttingAreas[i].width);
    local x2,y2,z2 = getWorldTranslation(self.cuttingAreas[i].height);
    for i=1, table.getn(g_currentMission.fruits) do
    local area = Utils.getDensity(g_currentMission.fruits[i].id, 0, x, z, x1, z1, x2, z2);
    if area > 0 then
    self.fruitType = i;
    end;
    end;
    end;[/lua]


    Ist es jetzt in Bezug auf die Spielperformance egal, ob die Einträge für die drei Punkte (die die Fläche ergeben) innerhalb oder wie in diesem Fall vor der for-Schleife stehen?


    Ich denke mal, dass es egal ist, da diese Schleife ja eh nur ausgeführt wird, wenn die Taste gedrückt wird... sonst nicht.



    Aber angenommen das ganze wäre ohne den inputbinding-Eintrag in der update-Funktion, dann würde die Schleife ja theoretisch andauernd durchgegangen werden... hätte dann die Stelle an der die Punkte angegeben sind einen Einfluß auf die Performance?

  • performancesparender ist es auf jeden fall wenn die getWorldTranslation() funktion vor der for schleife aufgerufen wird.


    wenn die funktion innerhalb der for schleife ist, die min. 10x (je nachdem wie viel fruits registriert sind) erheblich auswirkung auf die performance hat kann ich schlecht sagen, habe da noch keine tests und erfahrung gemacht.

  • Also bei meinem Test konnt ich keine Unterschiede feststellen, Denke aber auch dass es sich negativ auf die Performance auswirkt, wenn es vielleicht auch nur gering ist... in diesem Beispiel jedenfalls.


    Nungut, nochmals Danke für die Infos, wenn keiner mehr dazu etwas sagen kann/mag und auch keine weiteren Fragen zu diesem Thema auftauchen, ist das Thema eigentlich abgehakt.

  • Ja Servuz,


    muß doch nochmal darauf zurück kommen... auf der HvorFandenErJegM3v2-Map (bis jetzt auch nur auf dieser Map) erzeugt folgende Zeile:
    [lua]334 local area = Utils.getDensity(g_currentMission.fruits[i].id, 0, x, z, x1, z1, x2, z2);[/lua]
    beim Aktivieren des AP (also beim Auslesen der Fruchtart) folgenden Fehler:
    Lua: Error running function: update
    C:/Users/TOM/Documents/My Games/FarmingSimulator2011/mods/CLAAS_Lexion770TTAP/APCombine.lua(334) : attempt to index field '?' (a nil value)


    Es ist zwar halb so schlimm, weil das Erkennen der Fruchtart trotzdem einwandfrei funktioniert... aber es wäre doch interessant zu wissen, warum dieser Log-Eintrag erzeugt wird. Viel kann ich leider auch nicht aus der Fehlermeldung entnehmen, das index field '?' erzeugt auch bei mir drei Fragezeichen... (wtf is that???)


    Hat jemand eine Idee, wo der Hase im Pfeffer liegt?

Jetzt mitmachen!

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