Amazone EDX6000-2C | 19.8.: release

  • Hallo zusammen!


    Da ich bei Erscheinen des LS13 ziemlich enttäuscht war, dass die Amazone EDX6000 nicht düngen kann, obwohl es die 2C-Version ist, habe ich mich jetzt dieses Problems selbst angenommen.


    Ich habe aus sowingMachine und Sprayer eine eigene Specialization gebastelt, die gleichzeitiges Säen und Düngen erlaubt. Da die Unterfußdüngung eigentlich nur eine Startdüngung ist, wollte ich die Möglichkeit offen halten, später noch einmal zu düngen bzw. spritzen. Deshalb gibt es drei Düngereinstellungen:

    • ohne Düngung
    • Teilfläche
    • Vollfläche


    Durchgeschaltet wird standardmäßig mit links Shift + O.



    Für die Teilflächendüngung habe ich in der i3D mit dem Giants Editor drei neue cuttingAreas eingefügt, die in der XML dann als sprayingAreas definiert werden. Das sieht leider nicht immer gut aus auf dem Feld, aber es erfüllt seinen Zweck.



    Funktionen:

    • Säen von Mais und Zuckerrüben
    • Unterfußdüngung (Vollfläche, Teilfläche, ohne)
    • Düngestufen durchschalten mit links Shift + O
    • Helferbetrieb möglich
    • Auffüllen am jeweiligen Trigger (Saatgut/Dünger)
    • Spurreisser
    • Beleuchtung V3.1


    Die Spezi kann dann natürlich auch für andere Sämaschinen verwendet werden.


    Update 22.07.13

    • Düngeeinstellung wird gespeichert
    • Textanzeige der aktuellen Düngeeinstellung unter der Fruchtart
    • Fronttank Amazone FT 1001 erhöht Gesamtkapazität
    • Shopdescription & Specs angepasst
    • Betatest


    Update 25.07.13

    • MP überarbeitet


    Update 31.07.13

    • Script aufgeräumt -> sowingMachine-Code entfernt, MP-Events integriert
    • Hauptfunktion läuft wieder als standard 'sowingMachine' -> wird von Courseplay richtig erkannt
    • XML-Eintrag "allowFullFertilization" (true/false): bestimmt, ob die Maschine vollflächig düngen kann


    Update 11.08.13

    • Getrennte Tanks für Dünger und Saatgut
    • Kombinierte Anzeige von Düngerfüllstand und -Modus
    • Anzeige kann per XML verschoben werden
    • MP-Events wieder ausgelagert ^^


    Status: Released

  • Da du keine PN's haben willst hier:


    Anbiet :thumbsup:


    Wirkt aufjedenfall vielversprechend.


    Mit der Schrift wie die Düngung ist kann ich mich auch anfreunden :)

  • Die Drille ist dir gut gelungen. Aber kennt man nicht anderster von dir.


    Ich bin in einem kleinen LU und wir verstehen etwas zum Thema modden. Und da wir täglich MP spielen und auch eine Server Version haben können wir die Drille perfekt auf MP testen. Also würde ich/wir und freuen die Drille testen zu dürfen.

  • Hi All,


    Auf jeden Fall eine gute Idee mit der gleichzeitigen Düngung. Was ich nur nicht ganz checke ist, wofür soll die Teildüngung gut sein. Bin leider kein Landwirt, vielleicht kann mich kurz jemand darüber aufklären.

  • Im ls gibt es nur gedüngt und ungedüngt. In echt düngst du aber auch nochmal. Somit wird mit der Teildüngung der Reiz hervorgerufen nochmal zu düngen da ja teile fehlen.

  • Da du keine PN's haben willst hier:

    Ups, hab ich wohl mal abgeschaltet. Geht jetzt wieder! ^^


    der fronttank ist aber für flüssigdünger und in der sämaschine hat man festen kunstdünger. Von amazone gibt es bei sämaschinen nur einen fronttank ber der avant http://www.amazone.de/252.asp

    Der Fronttank wird auch bei der EDX 6000-2FC, verwendet. Dass dort eigentlich Kunstdünger rein gehört, weiß ich. Aber der richtige Tank ist im LS nicht vorhanden. Wenn du ihn moddest, können wir ihn verwenden. Dann aber bitte auch gleich mit Verrohrung nacht hinten :D


    .

  • Nach einem kurzen Test, wir sind grade noch dabei ist uns schon ein Fehler aufgefallen.
    Der Mitspieler kann die Düngebreite zwar umstellen, aber ich als Hoster sehe weiterhin die von mir bzw. standart eingestellt Düngebreite.

  • Zitat von »Malte [2]«




    der fronttank ist aber für flüssigdünger und in der sämaschine hat man festen kunstdünger. Von amazone gibt es bei sämaschinen nur einen fronttank ber der avant http://www.amazone.de/252.asp
    Der Fronttank wird auch bei der EDX 6000-2FC, verwendet. Dass dort eigentlich Kunstdünger rein gehört, weiß ich. Aber der richtige Tank ist im LS nicht vorhanden. Wenn du ihn moddest, können wir ihn verwenden. Dann aber bitte auch gleich mit Verrohrung nacht hinten


    .


    Mit dem modden könnte ich mich versuchen aber ohne AO Textur


    Sry für Doppelpost

  • Nach einem kurzen Test, wir sind grade noch dabei ist uns schon ein Fehler aufgefallen.
    Der Mitspieler kann die Düngebreite zwar umstellen, aber ich als Hoster sehe weiterhin die von mir bzw. standart eingestellt Düngebreite.

    O.K. So etwas in der Art hatte ich befürchtet. Ich hab´ von den Multiplayer-Funktionen leider wenig Ahnung. Wenn einer ´nen Tipp hätte, wäre ich sehr dankbar. Aber ich klemm mich mal dahinter.

  • Wie sieht denn das Script mit dem dazugehörigen Event aus?
    LogFehler?



    Im Übrigen ein cooles Projekt :thumbup:. Macht den LS ein ganzes Stück interessanter. Auch wenn ich getrennte Kammern begrüßt hätte. So hätte man den Verbauch des Unterfußdüngers evtl. auch ingame einstellen können. Aber ich denke das wäre zu viel des Guten :D


    Grüße Kai

  • Hmmm... also momentan habe ich keinen Plan woran das liegt.


    Hier mal der entsprechende Teil aus updateTick(dt):
    [expander]

    Code
    if doGroundManipulation then if self.isServer then if self.isFertilizing < 3 then -- 3 -> nicht düngen local litersPerSecond = self.sprayLitersPerSecond[self.currentFillType]; if litersPerSecond == nil then litersPerSecond = self.defaultSprayLitersPerSecond; end; if self.isFertilizing == 2 then -- Bei Teilfläche nur halber Dünger-Verbrauch litersPerSecond = litersPerSecond / 2; end; local usage = litersPerSecond * dt*0.001; local hasSpray = false; if self.capacity == 0 or self:getIsHired() then hasSpray = true; local fillType = self.currentFillType; if fillType == Fillable.FILLTYPE_UNKNOWN then fillType = self:getFirstEnabledFillType(); end local fillTypeDesc = Fillable.fillTypeIndexToDesc[fillType]; if fillTypeDesc ~= nil then local delta = usage*fillTypeDesc.pricePerLiter g_currentMission.missionStats.expensesTotal = g_currentMission.missionStats.expensesTotal + delta; g_currentMission.missionStats.expensesSession = g_currentMission.missionStats.expensesSession + delta; g_currentMission:addSharedMoney(-delta, "other"); end; else if self.fillLevel > 0 then hasSpray = true; self:setFillLevel(self.fillLevel - usage, self.currentFillType); else -- try to find another attached sprayer local fillType = self.currentFillType; if fillType == Fillable.FILLTYPE_UNKNOWN then fillType = self:getFirstEnabledFillType(); end local sprayerTank = UrfSeeder.findAttachedSprayerTank(self:getRootAttacherVehicle(), fillType); if sprayerTank ~= nil then hasSpray = true; sprayerTank:setFillLevel(sprayerTank:getFillLevel(fillType) - usage, fillType); end end; end; if hasSpray then if self.isFertilizing == 1 then --Vollfläche düngen -> verwende cuttingAreas self.sprayAmount = self.cuttingAreas; elseif self.isFertilizing == 2 then --Teilfläche düngen -> verwende sprayingAreas self.sprayAmount = self.sprayingAreas; end; local sprayingAreasSend = {}; for _,sprayingArea in pairs(self.sprayAmount) do if self:getIsAreaActive(sprayingArea) then local sx,s_,sz = getWorldTranslation(sprayingArea.start); if g_currentMission:getIsFieldOwnedAtWorldPos(sx,sz) then local sx1,s_1,sz1 = getWorldTranslation(sprayingArea.width); local sx2,s_2,sz2 = getWorldTranslation(sprayingArea.height); local sqm = math.abs((sz1-sz)*(sx2-sx) - (sx1-sx)*(sz2-sz)); -- this is the cross product with y=0 --Utils.updateSprayArea(x, z, x1, z1, x2, z2); self.lastSprayingArea = self.lastSprayingArea + sqm; table.insert(sprayingAreasSend, {sx,sz,sx1,sz1,sx2,sz2}); else showFieldNotOwnedWarning = true; end end; end; if (table.getn(sprayingAreasSend) > 0) then SprayerAreaEvent.runLocally(sprayingAreasSend); g_server:broadcastEvent(SprayerAreaEvent:new(sprayingAreasSend)); end; end; end; local hasSeeds = (self.fillLevel > 0); local useFillLevel = true; if self.capacity == 0 or self:getIsHired() then useFillLevel = false; hasSeeds = true; end; if hasSeeds then local cuttingAreasSend = {}; for k, cuttingArea in pairs(self.cuttingAreas) do if self:getIsAreaActive(cuttingArea) then local x,_,z = getWorldTranslation(cuttingArea.start); if g_currentMission:getIsFieldOwnedAtWorldPos(x,z) then local x1,_,z1 = getWorldTranslation(cuttingArea.width); local x2,_,z2 = getWorldTranslation(cuttingArea.height); table.insert(cuttingAreasSend, {x,z,x1,z1,x2,z2}); else showFieldNotOwnedWarning = true; end end end if (table.getn(cuttingAreasSend) > 0) then local seedsFruitType = self.seeds[self.currentSeed]; local dx,dy,dz = localDirectionToWorld(self.sowingDirectionNode, 0, 0, 1); local angleRad = Utils.getYRotationFromDirection(dx, dz) local desc = FruitUtil.fruitIndexToDesc[seedsFruitType]; if desc ~= nil and desc.directionSnapAngle ~= 0 then angleRad = math.floor(angleRad / desc.directionSnapAngle + 0.5) * desc.directionSnapAngle; end local angle = Utils.convertToDensityMapAngle(angleRad, g_currentMission.terrainDetailAngleMaxValue); local area, detailArea = SowingMachineAreaEvent.runLocally(cuttingAreasSend, seedsFruitType, angle, self.useDirectPlanting) if area > 0 or detailArea > 0 then if area > 0 then local fruitDesc = FruitUtil.fruitIndexToDesc[seedsFruitType]; local pixelToSqm = g_currentMission:getFruitPixelsToSqm(); local sqm = area*pixelToSqm; local ha = sqm/10000; self.lastSowingArea = sqm; local usage = fruitDesc.seedUsagePerSqm*sqm; g_currentMission.missionStats.seedUsageTotal = g_currentMission.missionStats.seedUsageTotal + usage; g_currentMission.missionStats.seedUsageSession = g_currentMission.missionStats.seedUsageSession + usage; g_currentMission.missionStats.hectaresSeededTotal = g_currentMission.missionStats.hectaresSeededTotal + ha; g_currentMission.missionStats.hectaresSeededSession = g_currentMission.missionStats.hectaresSeededSession + ha; if useFillLevel then self:setFillLevel(self.fillLevel - usage, self.currentFillType); else local fillTypeDesc = Fillable.fillTypeIndexToDesc[Fillable.FILLTYPE_SEEDS] if fillTypeDesc ~= nil then local price = usage*fillTypeDesc.pricePerLiter; g_currentMission.missionStats.expensesTotal = g_currentMission.missionStats.expensesTotal + price; g_currentMission.missionStats.expensesSession = g_currentMission.missionStats.expensesSession + price; g_currentMission:addSharedMoney(-price, "other"); end end end g_server:broadcastEvent(SowingMachineAreaEvent:new(cuttingAreasSend, seedsFruitType, angle, self.useDirectPlanting)); end; end; end; end; g_currentMission.missionStats.seedingDurationTotal = g_currentMission.missionStats.seedingDurationTotal + dt/(1000*60); g_currentMission.missionStats.seedingDurationSession = g_currentMission.missionStats.seedingDurationSession + dt/(1000*60); end

    [/expander]








    .

Jetzt mitmachen!

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