Fruittype, Filltype, fruittypeToFilltype, fruitIndexToDesc, große Verwirrung?

  • Moin..


    Sitze grade an anso's Drescher, und langsam bin ich so verwirrt dass ich alles durcheinander bringe.


    Wo ist denn nun der Unterschied, zwischen dem FruitType, und dem FillType? Wann verwende ich was?
    Und wofür ist FruitUtil.fruitIndexToDesc[fruitType] ?


    Kann mir das irgend jemand in wenigen Worten erklären? Möchte nur verstehen was dahinter steckt...


    Danke schon mal.. :)


    LG

  • Moin...


    viel kann ich dir dazu leider auch nicht sagen, aber meiner Meinung nach macht es Sinn in fruitType und fillType zu unterscheiden, da es ja auch "Fruchtarten" gibt, die man nicht säen/ernten, sondern nur in einen Anhänger füllen kann, wie z.B. Sand oder Kiesel... vielleicht hat es ja damit etwas zu tun. Den Namen fruitType nutzt man dann quasi für die Fruchtart, wenn sie in Sämaschinen und Mähdreschern "verarbeitet" wird und den Namen fillType, wenn die Fruchtart z.B. in einen Anhänger "gefüllt" wird.


    Mit FruitUtil.fruitIndexToDesc bekommst du meiner Meinung nach die ganzen Daten einer Fruchtart, welche mit FruitUtil.registerFruitType für die Fruchtart "angelegt" wurden (http://ls-mods.de/scriptDocumentation.php?class=fruitUtil)... also z.B. der Name des foliage layers in der map i3d, boolesche Werte wie "needsSeeding", "hasStraw" oder Zahlenwerte wie "minHarvestingGrowthState", "pricePerLiter" etc.


    Bsp:

    Zitat von GIANTS Software GmbH

    [lua]local fruitDesc = FruitUtil.fruitIndexToDesc[self.lastValidFruitType];
    if fruitDesc.hasStraw then
    ...[/lua]


    oder:

    Zitat von GIANTS Software GmbH


    [lua]...
    literPerSqm = FruitUtil.fruitIndexToDesc[fruitType].literPerSqm;
    ...[/lua]

  • Moin..


    Danke, doch noch ne Antwort.. :D


    Zitat

    viel kann ich dir dazu leider auch nicht sagen, aber meiner Meinung nach macht es Sinn in fruitType und fillType zu unterscheiden, da es ja auch "Fruchtarten" gibt, die man nicht säen/ernten, sondern nur in einen Anhänger füllen kann, wie z.B. Sand oder Kiesel... vielleicht hat es ja damit etwas zu tun. Den Namen fruitType nutzt man dann quasi für die Fruchtart, wenn sie in Sämaschinen und Mähdreschern "verarbeitet" wird und den Namen fillType, wenn die Fruchtart z.B. in einen Anhänger "gefüllt" wird.


    Naja, das klingt logisch.. Dann müsste ich ja im Drescher immer ausschließlich mit fruitType arbeiten? Mal die Logik ganz weggelassen ist mir einfach wichtig dass es funktioniert, und das tut es im Moment nicht :D
    Aber da kannst du mir vermutlich auch nicht so genau weiterhelfen?


    Das weitere klingt durchaus logisch, da ja das ganze so lautet:
    FruitUtil.fruitIndexToDesc[fruitType].literPerSqm
    Nun bleibt aber die Frage, muss das was hier als fruitType mal drinne ist nun der fruitType oder der fillType rein?


    Letztlich funktioniert es eben nicht mit dem Dreschen, und ich weiß nicht so genau warum.



    Anfangen tut die fruitType Geschichte in der LUA damit:
    [lua] self.fruittypes = {};
    self.fruittypes[FruitUtil.FRUITTYPE_UNKNOWN] = true;
    local fruitTypes = getXMLString(xmlFile, "vehicle.Zugdrescher#fruitTypes");
    if fruitTypes ~= nil then
    local types = Utils.splitString(" ", fruitTypes);
    for k,v in pairs(types) do
    local desc = FruitUtil.fruitTypes[v];
    if desc ~= nil then
    self.fruittypes[desc.index] = true;
    end;
    end;
    end;[/lua]
    Weiter geht es dann damit:
    [lua] -- Finde den Fruchttyp.. *g*
    if self.foundFruittype == false then
    renderText(0.1, 0.18, 0.021, "aktuell kein Fruchttyp gefunden")
    if self.graintank.currentFillLevel < self.graintank.maximalChangeable then
    self.lowFillLevel = true;
    renderText(0.1, 0.2, 0.021, "low Fill Level ist true")
    else
    self.lowFillLevel = false;
    renderText(0.1, 0.2, 0.021, "low Fill Level ist false")
    end;


    if self.graintank.currentFruitType == FruitUtil.FRUITTYPE_UNKNOWN or self.lowFillLevel then
    renderText(0.1, 0.22, 0.021, "low fill level oder unknown fruittype")
    local oldFruitType = self.graintank.currentFruitType;
    for fruitType, v in pairs(self.fruittypes) do
    renderText(0.1, 0.24, 0.021, "schleife: ".. fruitType)
    local area = Utils.getFruitArea(fruitType, startX, startZ, widthX, widthZ, heighX, heighZ);
    if area > 0 then
    renderText(0.1, 0.26, 0.021, "area ist größer 0 : "..area);
    if fruitType ~= oldFruitType then
    if self.lowFillLevel then
    self:setGraintankFillLevelAndFruittype(0, fruitType); -- reset des FillLevels wenn Fruittypewechsel unter der 4% Schwelle
    else
    self:setGraintankFillLevelAndFruittype(self.graintank.currentFillLevel, fruitType);
    end;
    end;
    self.foundFruittype = true;
    renderText(0.1, 0.28, 0.021, "found fruitType!!");
    break;
    end;
    end;
    end;
    end;[/lua]


    Das Dreschen übernimmt letztlich der Part:


    [lua]if self.foundFruittype == true then
    renderText(0.1, 0.3, 0.021, "found fruitType nun true!!");
    local fruitTypeToFillType = self.graintank.currentFruitType
    renderText(0.1, 0.32, 0.021, "derzeit lokaler fruitType = ".. fruitTypeToFillType);
    local value = Utils.cutFruitArea(fruitTypeToFillType, startX, startZ, widthX, widthZ, heighX, heighZ);
    renderText(0.1, 0.34, 0.021, "local value: "..value);
    local pixelToQm = 2048 / 4096 * 2048 / 4096 / g_currentMission.maxFruitValue;
    local literPerQm = FruitUtil.fruitIndexToDesc[fruitTypeToFillType].literPerSqm * (0.50 * (3 - g_currentMission.missionStats.difficulty));
    local qm = value * pixelToQm
    local newFillLevel = qm*literPerQm+self.graintank.currentFillLevel
    renderText(0.1, 0.36, 0.021, "newFillLevel : "..newFillLevel);
    self:setGrainTankFillLevelAndFruittype(newFillLevel, self.graintank.currentFruitType)

    local ha = sqm/10000;
    g_currentMission.missionStats.hectaresThreshedTotal = g_currentMission.missionStats.hectaresThreshedTotal + ha;
    g_currentMission.missionStats.hectaresThreshedSession = g_currentMission.missionStats.hectaresThreshedSession + ha;
    end;[/lua]


    Ist eigentlich im großen und ganzen vom orig. Combine Script grob abgeschaut... Aber nen Fehler hab ich wohl dennoch drin. Meine Vermutung liegt eben darin dass ich fruitType's und fillType's durcheinanderbringe.. ?



    LG

  • uff, sorry modelleicher... ich glaube, da müßte man den gesamten Hintergrund wissen sowie das komplette Skript sehen und sich reinfitzeln... sonst findet man wohl keinen Fehler, sondern nur viele über dem Kopf schwirrende Fragezeichen.


    Das Standardskript Combine.lua könnt ihr wohl nicht zum Dreschen nutzen?

  • Naja, das gesamte Script ist nix besonderes, sind nur noch paar Variablen etc. drumherum.


    Momentan bin ich so weit dass der Drescher drischt.


    Da fruitTypes Integere Werte sind (1 für Weizen 2 für Gerste 3 für Raps etc.) macht auch fruitIndexToDesc Sinn.


    Allerdings hab ich immer noch das Problem dass ich nicht weiß wo der Unterschied von FruitType und FillType liegt?


    Zitat

    Das Standardskript Combine.lua könnt ihr wohl nicht zum Dreschen nutzen?


    Ne, ist ja n gezogender Drescher, und die Combine.lua mag nicht ohne Steerable..



    LG

  • So aus dem Bauch heraus würde ich sagen, dass fillType für Schaufel, Anhänger etc ist, also etwas, was sich füllen lässt und fruitType eine Frucht, die sich ernten lässt. Wenn du es aber genau wissen willst wirst du wohl Stegei fragen müssen^^ Oder du probierst halt aus.

Jetzt mitmachen!

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