Courseplay-Erweiterungen (Tebbe HS180, Fuchs-Güllefass, Universal Bale Trailer)

  • Hallo zusammen,


    ich hab ein paar kleine Zusatzfunktionen bzw. -snippets für Courseplay geschrieben, die dazu führen dass Stefan Maurus' Tebbe HS180, sein Fuchs Güllefass und bassaddict's Universal Bale Trailer (besser) mit CP funktioneren. Wer möchte kann sich das einbauen, ich beschreibe weiter unten was zu tun ist und wie der Code funktioniert.


    Ich möchte aber zunächst ein paar Sachen betonen:

    • Die Änderungen führen dazu dass CP (und teilweise auch die Mods selber) seine Multiplayer-Fähigkeit verliert (es sei denn ihr tauscht untereinander eure CP-Dateien aus, wovon ich mich strengstenst distanziere!).
    • Ich werde nicht die gesamten fertigen Dateien zur Verfügung stellen. Die jeweiligen Autoren haben allesamt lange und hart an ihren Projekten gearbeitet, und daher halte ich es für 1. frevelhaft da jetzt gänzlich veränderten Teile online zu stellen, und 2. zumutbar dass ihr die Mods sowohl von den Originallinks runterladen als auch selbst verändern könnt.
    • Ich habe das ganze mit CP v2.99 gemacht, da das die Version ist die ich primär benutze. Die Änderungen müssten in v3.12 quasi genauso funktionieren, aber ich habe es nicht getestet.


    Tebbe HS180 Miststreuer von Stefan Maurus (v2.1)
    Der Tebbe funktioniert eigentlich 1a mit CP. Folgende zwei Funktionen habe ich aber hinzugefügt:

    • Die Klappe wird entweder automatisch geöffnet und geschlossen (wenn "Fruchtumfahrung" auf "ein" gesetzt ist) wenn der Tebbe anfängt zu streuen bzw. wenn er aufhört (leer ist); oder sie bleibt gänzlich zu (wenn "Fruchtumfahrung" auf "aus" gesetzt ist).
    • Die Rückwand fährt automatisch auf eine vom User eingestellte Stufe (1, 2 oder 3) und wird geschlossen wenn er aufhört (leer ist). Der User kann (muss) diese Stufe über die Courseplay-Arbeitsbreite eingeben: 1m = Stufe 1, 2m = Stufe 2, 3m = Stufe 3. Ich habe mich aufgrund von 3 Faktoren für 1, 2 und 3 entschieden:

      • Es ist simpel und an sich intuitiv. Man kann schneller zwischen den einzelnen Stufen wechseln.
      • Ich wollte nicht die Illusion aufkommen lassen man könne dadurch die wirkliche Arbeits- (Streu-)breite des Gerätes einstellen. Sondern "nur" die Rückwändstufe (die dann die Arbeitsbreitenveränderung, den Mistverbrauch etc. mit sich bringt).
      • Die Courseplay-Default-Arbeitsbreite ist 3m. Damit wäre das dann schon von Anfang an gesetzt.


    • Die Zeilenangaben stimmen jeweils wenn ihr den Code bis dahin so wie angegeben eingebaut habt.


    An dieser Stelle Respekt und Danke an Stefan Maurus für sein einfaches und sauberes Scripten. Hat die Sache relativ einfach gemacht.


    Einbau:
    Zunächst lassen wir CP wissen dass der aktuelle Miststreuer der Tebbe HS180 ist:


    mode4.lua - Z56 (unter "local is_ux5200 = workTool.state ~= nil and workTool.state.isTurnedOn ~= nil")
    [lua]local is_tebbeHS180Maurus = workTool.flapopen ~= nil and workTool.setDoorHigh ~= nil[/lua]
    Danach frägt CP ob es quasi an ist und gefahren wird etc. Dann folgt die Abfrage ob das Gerät die UX5200-Spritze ist, ergo gehen wir in den else-Bereich darunter.


    mode4.lua - Z74 (nach "else", vor "if isFoldable")
    [lua]
    if is_tebbeHS180Maurus then
    --Klappe, gekoppelt an CP-Fruchtumfahrung (true || false)
    local flapOpenBool = self.realistic_driving
    if flapOpenBool ~= nil then
    if type(flapOpenBool) == "boolean" then
    workTool:setFlapOpen(flapOpenBool)
    end
    else
    workTool:setFlapOpen(false)
    end

    --Rückwand, gekoppelt an CP-Arbeitsbreite (1 || 2 || 3)
    local doorOpenStage = self.toolWorkWidht
    if type(doorOpenStage) ~= "int" then
    local doorOpenStage = tonumber(self.toolWorkWidht)
    end
    local doorOpenStageValid = false

    if doorOpenStage ~= nil then
    if doorOpenStage == 1 or doorOpenStage == 2 or doorOpenStage == 3 then
    doorOpenStageValid = true
    end
    end

    if doorOpenStageValid then
    workTool:setDoorHigh(doorOpenStage)
    else
    allowedToDrive = false
    --"Rückwand-Stufe muss per Arbeitsbreite gesetzt sein (1, 2 oder 3)"
    self.global_info_text = courseplay:get_locale(self, "TebbeHS180DoorStage")
    end
    end
    [/lua]
    Der Code macht folgendes:
    [lua]
    if is_tebbeHS180Maurus then --wenn das Gerät der Tebbe HS180 ist
    --Klappe, gekoppelt an CP-Fruchtumfahrung (true || false)
    local flapOpenBool = self.realistic_driving -- Neue Variable, frägt die vom User eingestellte Fruchtumfahrung ab
    if flapOpenBool ~= nil then -- wenn die Fruchtumfahrung existiert...
    if type(flapOpenBool) == "boolean" then -- ...und sie boolean ist
    workTool:setFlapOpen(flapOpenBool) -- setze die die Klappe auf den eingestellten wert (true bzw. false)
    end
    else -- andernfals
    workTool:setFlapOpen(false) -- schließe die Klappe
    end

    --Rückwand, gekoppelt an CP-Arbeitsbreite (1 || 2 || 3)
    local doorOpenStage = self.toolWorkWidht -- Neue Variable, frägt die vom User eingestellte CP-Arbeitsbreite ab [toolWorkWidht = sic!]
    if type(doorOpenStage) ~= "int" then -- wenn die CP-Arbeitsbreite nicht im Integer-Format ist
    local doorOpenStage = tonumber(self.toolWorkWidht) -- konvertiere sie ins Integer-Format
    end
    local doorOpenStageValid = false

    if doorOpenStage ~= nil then -- wenn die CP-Arbeitsbreite existiert ...
    if doorOpenStage == 1 or doorOpenStage == 2 or doorOpenStage == 3 then -- ... und wenn die CP-Arbeitsbreite entweder 1, 2 oder 3 ist ...
    doorOpenStageValid = true -- ... dann ist alles okay mit der CP-Arbeitsbreite und wir können fortfahren
    end
    end

    if doorOpenStageValid then -- wenn alles okay mit der CP-Arbeitsbreite ist
    workTool:setDoorHigh(doorOpenStage) -- öffne die Rückwand auf die per CP-Arbeitsbreite eingestellte Stufe
    else --andernfalls
    allowedToDrive = false -- halte an, schalte den Streuer aus

    --* folgendes ist optional *
    --* EXTRA-INFO ZUR NACHRICHT-EINBLENDUNG WEITER UNTEN *
    --"Rückwand-Stufe muss per Arbeitsbreite gesetzt sein (1, 2 oder 3)"
    self.global_info_text = courseplay:get_locale(self, "TebbeHS180DoorStage") -- und verkünde die Nachricht dass hier was nicht stimmt
    end

    end
    [/lua]


    So, jetzt weiß er was zu tun ist wenn er zu streuen beginnt. Nun noch die Aktionen beim aufhören (wenn er leer ist). Wir gehen ist den workSpeed = false Bereich:


    mode4.lua - Z128 (nach "else", vor "if isFoldable")
    [lua]
    if is_tebbeHS180Maurus then
    workTool:setFlapOpen(false) --Schließe die Klappe
    workTool:setDoorHigh(0) --Setze die Rückwand auf Stufe 0 (= geschlossen).
    end
    [/lua]



    Optional: Nachricht-Einblendung wenn die Rückwandstufe nicht stimmt
    base.lua - Z66 oder irgendwo in dem Bereich wo die ganzen self.locales-Dingers angegeben sind.
    [lua]self.locales.TebbeHS180DoorStage = g_i18n:getText("TebbeHS180DoorStage")[/lua]


    moddesc.xml - in den l10n-Bereich

    XML
    <text name="TebbeHS180DoorStage">
    <en>Door must be set via CP work width (1, 2 or 3)</en>
    <de>Rückwand-Stufe muss per CP-Arbeitsbreite gesetzt sein (1, 2 oder 3)</de>
    </text>


    Und das war's. Wenn ihr alles richtig gemacht habt öffnet er jetzt beim Streu-Anfang die Klappe und setzt die Rückwand auf die von euch über die Arbeitsbreite angegebene Stufe, und schließt beide wenn er leer ist und zum Auffüllen fährt.



    Fuchs Güllefass von Stefan Maurus (v1.1)
    Das Güllefass ist deutlich simpler einzustellen als der Tebbe-Miststreuer. Wir wollen nur dass der Schwenkverteiler beim Düngen aktiviert wird. Leider muss man dafür auch den Code des Fasses selber minimal verändern.
    Die Zeilenangaben sind für die original mode4.lua (ohne den Miststreuer eingebaut).


    Einbau:
    Zunächst öffnen wir die Schwenkverteiler.lua des Güllefasses und kommentieren das if self:getIsActive() weg


    Schwenkverteiler.lua - Z72
    [lua]if self:getIsActive() then[/lua]
    wird zu
    [lua]--if self:getIsActive() then[/lua]


    Schwenkverteiler.lua - Z97
    [lua]end[/lua]
    wird zu
    [lua]--end[/lua]


    Das hat zur Folge dass der Schwenkverteiler auch aktiv sein kein wenn man nicht im Fahrzeug sitzt (was ja bei CP oftmals der Fall ist).


    Dann zurück zu CP.


    mode4.lua - Z56 (unter "local is_ux5200 = workTool.state ~= nil and workTool.state.isTurnedOn ~= nil")
    [lua]local is_fuchsMaurus = workTool.setAllumer ~= nil --ist das Arbeitsgerät das Fuchs-Güllefass?[/lua]


    mode4.lua - Z74 (nach "else", vor "if isFoldable")
    [lua]
    if is_fuchsMaurus then --wenn es das Fuchs-Güllefass ist
    workTool:setAllumer(true) --aktiviere den Schwenkverteiler
    end
    [/lua]


    mode4.lua - Z99 (nach "else", vor "if isFoldable")
    [lua]
    if is_fuchsMaurus then --wenn es das Fuchs-Güllefass ist
    workTool:setAllumer(false) --deaktiviere den Schwenkverteiler
    end
    [/lua]


    Das war's.


    [infobox]Die Dingers für bassaddict's UBT kommen später. Die Basissachen gehen, für den Rest muss ich noch ein wenig testen. Daher mein reserved post.[/infobox]

  • die heckklappe darf bei dem tebbe eigendlich nicht aufgehen zum streuen macht man in echt auch nur die schibewand


    Danke für den Hinweis. Zunächst wusste ich das erstmal nicht. Dann ist mir aber ingame aufgefallen wie blöd das mit dem ParticleSystem aussieht wenn die Klappe geschlossen ist. Das soll kein Hieb gegen Maurus sein, sondern eher gegen die LS-Engine.
    Ich habe den obigen Code also nun geupdated, mit folgender Änderung: die Öffnung der Klappe kann vom User gesetzt werden, via "Fruchtumfahrung ein" (Klappe auf während des Düngens) und "Fruchtumfahrung aus" (Klappe zu während des Düngens).

Jetzt mitmachen!

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