Download Mod 'GroundResponse.lua' runterladen

Modhoster Userbewertung
4.85 / 165 Stimmen

Empfehlungsrate

94,92%
nach 177 Stimmen

Ist dieser Mod besonders empfehlenswert?

135 Kommentare

Um Kommentare schreiben zu können musst du dich einloggen.
Du kannst dich auch kostenlos registrieren, falls du noch keinen Account hast - dauert nur eine Minute.

  1. rachederasen 11. 04 2017

    Hier eine Video Demo zur V1.5

    https://www.youtube.com/watch?v=-69hhRQXO2w

    Gruß Andy


  2. rachederasen 10. 04 2017

    Die V1.5 der Ground Response.lua ist endlich fertig.

    (Die V1.5 beruht noch auf einem umgeschriebenen 4Real Modul 3: V1.0.0.0, und behebt nicht das Verrutschen durch beladene Frontlader).

    V1.5 Final
    Realismus Version
    - Einsinkverhalten und Grip auf nassem und trockenem Boden individuell angepasst
    - das Einsinken verhält sich je nach Bodenart anders
    - die sinktirefriction richtet sich speziell nach den steerable`s (lenkbaren Fahrzeugen), damit diese mit stark einsinkenden Rädern fast keine Zugkraft mehr haben
    - Anhänger und Geräte haben hohe Längs- und Quersteiffigkeit, damit wird das um die Ecke ziehen bei weichem Boden sehr viel schwieriger
    - asynchrone Tragfähigkeit zum Reifendurchmesser damit sich das Einsinkverhalten mehr echten Schleppern in verschiedensten Klassen entspricht
    - das Auf- und Abwandern der Anhängerreifen ist nun behoben
    - Einsinktiefe der Anhängerräder angepasst

    In dieser Version gilt wieder : Auf nassem Boden starkes Einsinken, wenig Grip...bestimmte Bodenarten haben aber auch auf trockem Boden bei hohem Gewicht/cm² hohes Einsinken (z.B. gegrubberter Boden ist sehr weich, gepflügter richtig weich,...)

    Damit das "Festbuddeln" auch so gelingt, wie ich es in ungefähr in echt habe, habe ich die Friction Werte der StuffAndThings auf overall 0.85, und field auf 0.60 gestellt !!
    (Keine Sorge, dies passt jetzt, da die Anhänger ja nicht von der sinkTireFriction betroffen sind, und somit etwas mehr Quersteiffigkeit beim fahren am Hang bieten.)



    Des weiteren hat Giants Stellung bezogen, bezüglich meiner Anfrage nach einem einbaufertigem Modul 3: Ground Response V1.5

    Sie möchten dieses nicht selbst als Volldownload anbieten, da sie ja grade ein Update mit diversen fixes (V1.0.1.0) ausgeliefert haben (und wir alle kennen das Ergebnis...)
    und möchten auch NICHT das ich es zum Download anbiete, wegen der Verwechslungsgefahr mit ihrem.
    Deshalb bleibt uns/euch leider weiterhin nichts anderes übrig, als die .lua ins Originale Modul einzubauen (passt bei V1.0.0.0 und V1.0.1.0).

    Schade ist, das ihr so nicht die angepassten Matschpartikel nutzen könnt aus der soilwet.i3D,..

    Private Nutzung und Verbreitung ist aber weiterhin kein Problem für sie.
    Deshalb wird hilfsbedürftigen auch weiterhin unter die Arme gegriffen! Wie gehabt.

    Sobald ich Zeit habe, werde ich auch ein paar Videos hochladen.


    Gruß Andy

    1 Antworten

    1. Maulwurf63 11. 04 2017

      Also ich nutze ja schon von Anfang an deine LUA-Änderungen und finde die Lösung, einfach und Bequem, die LUA einfach nur austauschen zu müssen. Bei Bedarf noch etwas, nach deiner Anleitung, die Werte ändern und man hat einen riesen Spaß.
      Für die Offroader unter uns kann man sogar noch mehr Schwierigkeit rein bringen und richtige Geschicklichkeitsrennen ausfechten.

      Für deine Mühe und das Einbringen von mehr Realismus bin ich sehr dankbar. Jetzt kommt auch der von Giants so gepriesene dynamische Boden erst richtig zur Wirkung.

      Deine Bemühungen, immer noch mehr daran zu feilen, kann man gar nicht mit genug Lob aufwiegen.
      1000 Dank dafür.


  3. rachederasen 04. 03 2017

    https://www.youtube.com/watch?v=hDYKXnZPhXI

    Hier ein Video zur Installation


  4. rachederasen 01. 03 2017

    Noch mal für alle, die Fragen zur Installation haben:

    http://marhu.net/phpBB3/viewtopic.php?f=194&t=5849&start=10

    ...hier ist eine bebilderte Einbauanleitung ziemlich weit unten auf der Seite, mit der Überschrift ".lua ins Modul einbauen". Bitte nach dieser Anleitung verfahren.
    Wem die Bilder zu klein sind, kann diese mir strg+ auf seiner Tastatur vergrößern (anschließend mit strg- wieder verkleinern).

    Bei dem Entpacken (sowie auch wieder an ZIP-Kompremierten Ordner senden) des "FS17_ForRealModule03_GroundResponse" bitte beachten:

    Entpacken: Wenn ihr die"FS17_ForRealModule03_GroundResponse" entpackt, müssten da Folgende Dateien seinen:

    particleSystems (gelber Ordner)
    shaders (gelber Ordner)
    GroundResponse (.lua Datei)
    icon (Bild, DDS DAtei)
    modDesc (xml Datei)
    register (.lua Datei)
    (und nochmal die ursprüngliche "FS17_ForRealModule03_GroundResponse"-Zip)

    Dann die GroundResponse.lua durch meine neue hier erstzen.

    Verpacken: zum "verpacken" markiert ihr alle Dateien bis auf die "FS17_ForRealModule03_GroundResponse"-Zip und sendet diese per Rechtsklick eurer Maus an einen "ZIP-kompremierten" Ordner.

    Jetzt habt ihr 2 ZIP-Dateien stehen, davon sollte die alte ursprüngliche gelöscht werden, und die neue ZIP (die vorläufig einen Namen der 6 Unterdateien annimmt).

    Diese bitte noch umbenennen in "FS17_ForRealModule03_GroundResponse" und dann ab in de LS17 Modordner.

    Das wars schon.


  5. DerAgrarBoy 14. 04 2018

    Ich kann mir die mod nicht downloaden dann kommt dieser Text:
    -- -- GroundResponse -- -- -- @author GIANTS Software -- @date 15/10/2016 -- @tester rachederasen 28/02/2017 -- Copyright (C) GIANTS Software GmbH, Confidential, All Rights Reserved. GroundResponse = {}; function GroundResponse.prerequisitesPresent(specializations) return true; end function GroundResponse:load(savegame) self.loadParticleSystemsForWheel = GroundResponse.loadParticleSystemsForWheel; self.updateWheelDirtPS = GroundResponse.updateWheelDirtPS; self.updateWheelSink = GroundResponse.updateWheelSink; self.getWheelCurrentSink = GroundResponse.getWheelCurrentSink; self.updateWheelTireFriction = Utils.overwrittenFunction(self.updateWheelTireFriction, GroundResponse.updateWheelTireFriction); self.applyRandomForceToWheels = GroundResponse.applyRandomForceToWheels; if g_currentMission.wheelDirt ~= nil and g_currentMission.wheelDirt.referenceShape ~= nil and g_currentMission.wheelDirt.referencePS["soilDry"] ~= nil and g_currentMission.wheelDirt.referencePS["soilWet"] ~= nil then if self.wheels ~= nil and table.getn(self.wheels) > 0 then local numWheels = table.getn(self.wheels); for iWheel=1,numWheels do local wheel = self.wheels[iWheel]; if wheel.hasParticles then local refNode = wheel.node; self:loadParticleSystemsForWheel(refNode, wheel) if wheel.additionalWheels ~= nil then for _,additionalWheel in pairs(wheel.additionalWheels) do self:loadParticleSystemsForWheel(refNode, additionalWheel); end end end end for iWheel=1,numWheels do local wheel1 = self.wheels[iWheel]; if wheel1.oppositeWheelIndex == nil then for jWheel=1,numWheels do if iWheel ~= jWheel then local wheel2 = self.wheels[jWheel]; if math.abs(wheel1.positionX + wheel2.positionX) < 0.1 and math.abs(wheel1.positionZ - wheel2.positionZ) < 0.1 and math.abs(wheel1.positionY - wheel2.positionY) < 0.1 then wheel1.oppositeWheelIndex = jWheel; wheel2.oppositeWheelIndex = iWheel; break; end end end end end end end self.dirtParticleSystemDirtyFlag = self:getNextDirtyFlag(); end function GroundResponse:postLoad(savegame) for _,wheel in pairs(self.wheels) do wheel.sink = 0; wheel.sinkTarget = 0; wheel.radiusOriginal = wheel.radius; wheel.sinkFrictionScaleFactor = 1; wheel.sinkLongStiffnessFactor = 1; wheel.sinkLatStiffnessFactor = 1; end end function GroundResponse:loadParticleSystemsForWheel(refNode, wheel) wheel.dirtPS = {}; local psEmitterShape = clone(g_currentMission.wheelDirt.referenceShape, false, false, false); link(refNode, psEmitterShape); local x,y,z; if wheel.wheelTire == nil then x,y,z = localToLocal(wheel.driveNode, refNode, 0, 0, 0); else x,y,z = localToLocal(wheel.wheelTire, refNode, 0, 0, 0); end setTranslation(psEmitterShape, x+wheel.xOffset,y,z); setRotation(psEmitterShape, 0, 0, 0); setScale(psEmitterShape, 2*wheel.width, 2*wheel.radius, 2*wheel.radius); for _,name in pairs( {"soilDry", "soilWet"} ) do if g_currentMission.wheelDirt.referencePS[name] ~= nil then wheel.dirtPS[name] = {}; local psClone = clone(g_currentMission.wheelDirt.referencePS[name].shape, true, false, true); ParticleUtil.loadParticleSystemFromNode(psClone, wheel.dirtPS[name], false, g_currentMission.wheelDirt.referencePS[name].worldSpace, g_currentMission.wheelDirt.referencePS[name].forceFullLifespan); ParticleUtil.setEmitterShape(wheel.dirtPS[name], psEmitterShape); wheel.dirtPS[name].isActive = false; wheel.dirtPS[name].isActiveSend = false; wheel.dirtPS[name].particleSpeed = ParticleUtil.getParticleSystemSpeed(wheel.dirtPS[name]); wheel.dirtPS[name].particleRandomSpeed = ParticleUtil.getParticleSystemSpeedRandom(wheel.dirtPS[name]); --wheel.dirtPS[name].particleNormalSpeed = ParticleUtil.getParticleSystemNormalSpeed(wheel.dirtPS[name]); --wheel.dirtPS[name].particleTangentSpeed = ParticleUtil.getParticleSystemTangentSpeed(wheel.dirtPS[name]); end end end function GroundResponse:delete() for _,wheel in pairs(self.wheels) do ParticleUtil.deleteParticleSystems(wheel.dirtPS); if wheel.additionalWheels ~= nil then for _,additionalWheel in pairs(wheel.additionalWheels) do ParticleUtil.deleteParticleSystems(additionalWheel.dirtPS); end end end end function GroundResponse:mouseEvent(posX, posY, isDown, isUp, button) end function GroundResponse:keyEvent(unicode, sym, modifier, isDown) end function GroundResponse:readUpdateStream(streamId, timestamp, connection) if connection:getIsServer() then local dirty = streamReadBool(streamId); if dirty then for _,wheel in pairs(self.wheels) do wheel.dirtParticlesActive = streamReadBool(streamId); end end end end function GroundResponse:writeUpdateStream(streamId, connection, dirtyMask) if not connection:getIsServer() then if streamWriteBool(streamId, bitAND(dirtyMask, self.dirtParticleSystemDirtyFlag) ~= 0) then for _,wheel in pairs(self.wheels) do streamWriteBool(streamId, wheel.dirtParticlesActive); end end end end function GroundResponse:update(dt) if self.isServer then if self:getIsActive() then self:updateWheelSink(dt); self:applyRandomForceToWheels(dt); end end end function GroundResponse:updateTick(dt) if self.isClient then for _,wheel in pairs(self.wheels) do if wheel.dirtPS ~= nil then if wheel.netInfo.xDriveLast == nil then wheel.netInfo.xDriveLast = wheel.netInfo.xDrive; end local xDriveDiff = wheel.netInfo.xDrive - wheel.netInfo.xDriveLast; if xDriveDiff > math.pi then wheel.netInfo.xDriveLast = wheel.netInfo.xDriveLast + 2*math.pi; elseif xDriveDiff < -math.pi then wheel.netInfo.xDriveLast = wheel.netInfo.xDriveLast - 2*math.pi; end xDriveDiff = wheel.netInfo.xDrive - wheel.netInfo.xDriveLast; wheel.netInfo.xDriveLast = wheel.netInfo.xDrive; local wheelRotSpeed = math.deg(xDriveDiff) / (0.001 * dt); local maxWheelRotSpeed = 1080; local wheelRotFactor = math.abs(wheelRotSpeed) / maxWheelRotSpeed; wheelRotFactor = wheelRotFactor * wheel.radius; self:updateWheelDirtPS(wheel, wheelRotFactor, wheel.steeringAngle); if wheel.additionalWheels ~= nil then for _,additionalWheel in pairs(wheel.additionalWheels) do self:updateWheelDirtPS(additionalWheel, wheelRotFactor, wheel.steeringAngle); end end end end end end function GroundResponse:updateWheelDirtPS(wheel, wheelRotFactor, steeringAngle) if wheel.dirtPS ~= nil then local sizeScale = 2 * wheel.width * wheel.radius; for _,ps in pairs(wheel.dirtPS) do ParticleUtil.setEmittingState(ps, ps.isActive); if ps.isActive then -- emit count local speedEmitScale = wheelRotFactor * sizeScale; local speedEmitScaleWet = math.pow( 2*wheelRotFactor*sizeScale*g_currentMission.environment.groundWetness, 2 ); local emitScale = 0.5 * (speedEmitScale + speedEmitScaleWet); ParticleUtil.setEmitCountScale(ps, emitScale); -- speeds local speedFactor = 0.3 * wheelRotFactor; local speed = ps.particleSpeed * speedFactor; speed = math.min(speed, 0.001); ParticleUtil.setParticleSystemSpeed(ps, speed); --ParticleUtil.setParticleSystemNormalSpeed(ps, 1.0 ); --ParticleUtil.getParticleSystemTangentSpeed(ps, 0.4 ); ParticleUtil.setParticleSystemSpeedRandom(ps, ps.particleRandomSpeed * speedFactor); -- adjust position local dirSign = 1; if self.movingDirection < 0 then dirSign = -1; end local x,y,z; if wheel.wheelTire == nil then x,y,z = localToLocal(wheel.driveNode, getParent(ps.emitterShape), wheel.xOffset, 0, 0); else x,y,z = localToLocal(wheel.wheelTire, getParent(ps.emitterShape), 0, 0, 0); end setTranslation(ps.emitterShape, x,y,z); if self.movingDirection < 0 then setRotation(ps.emitterShape, 0,math.pi+steeringAngle,0); else setRotation(ps.emitterShape, 0,steeringAngle,0); end end end end end function GroundResponse:draw() end function GroundResponse:updateWheelSink(dt) local speed = self:getLastSpeed(); local detailId = g_currentMission.terrainDetailId; for _,wheel in pairs(self.wheels) do local width = 0.25 * wheel.width; local length = 0.25 * wheel.width; local x0,y0,z0; local x1,y1,z1; local x2,y2,z2; if wheel.repr == wheel.driveNode then x0,y0,z0 = localToWorld(wheel.node, wheel.positionX + width, wheel.positionY, wheel.positionZ - length); x1,y1,z1 = localToWorld(wheel.node, wheel.positionX - width, wheel.positionY, wheel.positionZ - length); x2,y2,z2 = localToWorld(wheel.node, wheel.positionX + width, wheel.positionY, wheel.positionZ + length); else local x,_,z = localToLocal(wheel.driveNode, wheel.repr, 0,0,0); x0,y0,z0 = localToWorld(wheel.repr, x + width, 0, z - length); x1,y1,z1 = localToWorld(wheel.repr, x - width, 0, z - length); x2,y2,z2 = localToWorld(wheel.repr, x + width, 0, z + length); end local x,z, widthX,widthZ, heightX,heightZ = Utils.getXZWidthAndHeight(nil, x0,z0, x1,z1, x2,z2); setDensityCompareParams(detailId, "greater", 0); local density, area, _ = getDensityParallelogram(detailId, x,z, widthX,widthZ, heightX,heightZ, g_currentMission.terrainDetailTypeFirstChannel, g_currentMission.terrainDetailTypeNumChannels); setDensityCompareParams(detailId, "greater", -1); local terrainValue = 0; if area > 0 then terrainValue = math.floor(density/area + 0.5); end local minVal, maxVal = 0, 1; local sinkSpeed = (dt/1000) * (speed/10) * (0.01 * math.random(120)); local maxSink = math.min(0.3, wheel.radius*0.7 * (0.8 + 0.5*g_currentMission.environment.groundWetness)) * 1.0; -- Multiplikator Zieleinsinktiefe von 0.6 - 1.3 if terrainValue == 1 then -- cultivator_gegrubberter Boden minVal, maxVal = 180, 180; -- Verhealtniswert im Ziel zum maximalem Einsinken sinkSpeed = sinkSpeed * 0.5; elseif terrainValue == 2 then -- plough_gepflügter Boden minVal, maxVal = 100, 100; sinkSpeed = sinkSpeed * 0.6; elseif terrainValue == 3 then -- sowing_gesähter Boden wie Weizen_Gerste_Raps minVal, maxVal = 110, 110; sinkSpeed = sinkSpeed * 0.3; elseif terrainValue == 4 then -- sowingWidth_gedrillter Boden wie Mais_Sonnenblumen minVal, maxVal = 120, 120; sinkSpeed = sinkSpeed * 0.4; elseif terrainValue == 5 then -- grass_Gras minVal, maxVal = 20, 30; sinkSpeed = sinkSpeed * 0.5; end local ploughEffect = false; if area == 0 then wheel.sinkTarget = 0; else if wheel.sink == wheel.sinkTarget or wheel.lastTerrainValue ~= terrainValue then local currentSink = self:getWheelCurrentSink(wheel); wheel.sinkTarget = math.min(maxSink, 0.01 * math.random(minVal, maxVal) * currentSink); -- 'ploughing effect' if terrainValue == 2 and wheel.oppositeWheelIndex ~= nil then local oppositeWheel = self.wheels[wheel.oppositeWheelIndex]; if oppositeWheel.lastTerrainValue ~= nil and oppositeWheel.lastTerrainValue ~= 2 then wheel.sinkTarget = wheel.sinkTarget * 1.5; ploughEffect = true; end end end end if wheel.sinkTarget ~= wheel.sink then local sinkDelta = maxSink * sinkSpeed; if terrainValue ~= wheel.lastTerrainValue then sinkDelta = maxSink * (dt/250); end if wheel.sink < wheel.sinkTarget then wheel.sink = math.min(wheel.sinkTarget, wheel.sink + sinkDelta); elseif wheel.sink > wheel.sinkTarget then wheel.sink = math.max(wheel.sinkTarget, wheel.sink - sinkDelta); end wheel.radius = wheel.radiusOriginal - wheel.sink; self:updateWheelBase(wheel); local sinkFactor = (wheel.sink/maxSink) * (0.4 + 0.6*g_currentMission.environment.groundWetness); -- bestimmt Einsinkverhalten_erste Zahl trockener Boden_zweite Zahl nasser Boden wheel.sinkFrictionScaleFactor = (1.0 - math.min(0.7, sinkFactor)); -- Traktion bei Einsinktiefe wheel.sinkLongStiffnessFactor = (1.0 - math.min(0.2, sinkFactor)); -- Bodensteiffigkeit in Fahrtrichtung beim Einsinken wheel.sinkLatStiffnessFactor = (1.0 - math.min(0.0, sinkFactor)); -- Bodensteiffigkeit in Querrichtung beim Einsinken self:updateWheelTireFriction(wheel); end wheel.lastTerrainValue = terrainValue; if wheel.dirtPS ~= nil then local enableSoilPS = false; if terrainValue == 1 then -- cultivator enableSoilPS = true; elseif terrainValue == 2 then -- plough enableSoilPS = true; elseif terrainValue == 3 then -- sowing enableSoilPS = true; elseif terrainValue == 4 then -- sowingWidth enableSoilPS = true; elseif terrainValue == 5 then -- grass enableSoilPS = false; end for _,ps in pairs(wheel.dirtPS) do ps.isActive = false; end if enableSoilPS and (speed > 1) and wheel.sink > 0 then if g_currentMission.environment.groundWetness > 0.2 then if wheel.dirtPS["soilWet"] ~= nil then wheel.dirtPS["soilWet"].isActive = true; end else if wheel.dirtPS["soilDry"] ~= nil then wheel.dirtPS["soilDry"].isActive = true; end end end if wheel.additionalWheels ~= nil then for _,additionalWheel in pairs(wheel.additionalWheels) do for _,ps in pairs(additionalWheel.dirtPS) do ps.isActive = enableSoilPS and (speed > 1) and wheel.sink > 0; end end end end end end function GroundResponse:getWheelCurrentSink(wheel) if wheel.maxDeformation == nil or wheel.wheelTire == nil then return 0; end local gravity = 9.81; local tireLoad = getWheelShapeContactForce(wheel.node, wheel.wheelShape); if tireLoad ~= nil then local nx,ny,nz = getWheelShapeContactNormal(wheel.node, wheel.wheelShape); local dx,dy,dz = localDirectionToWorld(wheel.node, 0,-1,0); tireLoad = -tireLoad*Utils.dotProduct(dx,dy,dz, nx,ny,nz); tireLoad = tireLoad + math.max(ny*gravity, 0.0) * wheel.mass; -- add gravity force of tire else tireLoad = 0; end tireLoad = tireLoad / gravity; local loadFactor = (tireLoad / wheel.restLoad); local totalWidth = wheel.width; if wheel.additionalWheels ~= nil then for _,additionalWheel in pairs(wheel.additionalWheels) do totalWidth = totalWidth + additionalWheel.width; end end local length = 2 * math.pi * (wheel.radius *1.5) * (20/360); -- Tragfähigkeit Reifenumfang local area = totalWidth * length; local loadFactor = math.min(10, loadFactor * 0.4 * (1.0/area) * (0.5 + (0.5*g_currentMission.environment.groundWetness))); -- bestimmt Einfluss der Ladung auf das Einsinken maxSink = loadFactor * wheel.maxDeformation; return maxSink; end function GroundResponse:updateWheelTireFriction(superFunc, wheel) if self.isServer and self.isAddedToPhysics then setWheelShapeTireFriction(wheel.node, wheel.wheelShape, wheel.sinkFrictionScaleFactor*wheel.maxLongStiffness, wheel.sinkLatStiffnessFactor*wheel.maxLatStiffness, wheel.maxLatStiffnessLoad, wheel.sinkFrictionScaleFactor*wheel.frictionScale*wheel.tireGroundFrictionCoeff); end; end function GroundResponse:applyRandomForceToWheels(dt) local numWheels = table.getn(self.wheels); if numWheels == 0 or not self:getIsActive() then return; end local speed = self:getLastSpeed(); local forceFactor = 0.001; local totalMass = 0; for _,component in pairs(self.components) do totalMass = totalMass + getMass(component.node); end for i=1, numWheels do local wheel = self.wheels[i]; if speed > 1 then if wheel.nextRandomHitTime == nil then local hitDistance = math.random(1, numWheels) * 0.5; local speedMS = speed / 3.6; local timeDelta = math.min(1000, (1000 * hitDistance / speedMS)); wheel.nextRandomHitTime = g_currentMission.time + timeDelta; end end if wheel.nextRandomHitTime ~= nil and wheel.nextRandomHitTime < g_currentMission.time then if wheel.hasGroundContact and wheel.contact == Vehicle.WHEEL_GROUND_CONTACT and wheel.forcePercentage == nil then local r1, r2 = Utils.getNormallyDistributedRandomVariables(5, 5*0.333); r1 = math.max(0.0001, r1); r2 = math.max(1, r2); -- linear influence of speed results in too intense hits --local force = forceFactor * totalMass * speed * r1; -- square root is better local force = forceFactor * totalMass * math.sqrt(speed) * r1 * 0.2; local maxForce = forceFactor * (totalMass * 0.5); force = math.min(force, maxForce); wheel.timeTillFullForce = r2 * 50; -- max. ~500ms wheel.forcePercentage = 0; wheel.currentForce = force; end end if wheel.currentForce ~= nil then local delta = (dt/wheel.timeTillFullForce) * 0.01 * math.random(20); if speed > 1 and not wheel.maxForceReached then wheel.forcePercentage = math.min(1, wheel.forcePercentage + delta); else wheel.forcePercentage = math.max(0, wheel.forcePercentage - delta); end local currentForce = wheel.forcePercentage * wheel.currentForce; local dx,dy,dz = 0,-currentForce,0; --local dx,dy,dz = localDirectionToWorld(wheel.node, 0,-currentForce,0); local px,py,pz = localToLocal(wheel.driveNode, wheel.node, 0,0,0); addImpulse(wheel.node, dx,dy,dz, px,py,pz, true); --addForce(wheel.node, dx,dy,dz, px,py,pz, true); if wheel.forcePercentage == 1 then wheel.maxForceReached = true; end if wheel.maxForceReached and wheel.forcePercentage == 0 then wheel.forcePercentage = nil; wheel.currentForce = nil; wheel.nextRandomHitTime = nil; wheel.maxForceReached = false end end end end

    1 Antworten

  6. olhund 14. 01 2018

    LUA call stack:
    =C:/Users/olhun/Documents/My Games/FarmingSimulator2017/mods/FS17_ForRealModule03_GroundResponse/register.lua (71) : delete
    dataS/scripts/BaseMission.lua (371) : deleteMap
    dataS/scripts/FSBaseMission.lua (537) : delete
    dataS/scripts/utils/Utils.lua (1870) : oldFunc
    dataS/scripts/utils/Utils.lua (1858) : oldFunc
    dataS/scripts/missions/mission00.lua (84) : delete
    dataS/scripts/events.lua (125) : delete
    dataS/scripts/gui/InGameMenu.lua (457) : OnInGameMenuMenu
    dataS/scripts/gui/InGameMenu.lua (715) : leaveCurrentGame
    dataS/scripts/gui/dialogs/YesNoDialog.lua (62) : callbackFunc
    dataS/scripts/gui/dialogs/YesNoDialog.lua (50) : sendCallback
    dataS/scripts/gui/elements/ButtonElement.lua (191) : raiseCallback
    dataS/scripts/gui/elements/GuiElement.lua (279) : mouseEvent
    dataS/scripts/gui/elements/GuiElement.lua (279) : mouseEvent
    dataS/scripts/gui/elements/GuiElement.lua (279) : mouseEvent
    dataS/scripts/gui/elements/GuiElement.lua (279) : mouseEvent
    dataS/scripts/gui/elements/Gui.lua (270) : mouseEvent
    dataS/scripts/main.lua (1857) : mouseEvent


  7. anthu 03. 08 2017

    hallo rachederrasen
    kann man diese groundresponse.lua auch mit giants neuem groundresponsemod v 1.0.2.0 verwenden?

    lg
    andreas

    2 Antworten

  8. gerrit0476 23. 05 2017

    Moin,

    ich habe mal eine Frage. Dein Script läuft super und es macht riesig Spaß aber beim Mod-Traktor "John Deere 7R TechMod V2" klappt es nicht! Dieser rutscht und hat auf dem Feld nur durchdrehende Reifen. Die einsinktiefen auf den Böden sind auch deutlich höher!
    Muss ich bei dem Traktor (Reifen) noch etwas anpassen?

    Gruß Gerrit

    1 Antworten

  9. Omat1998 12. 05 2017

    Moin Andy,
    erst einmal Danke, dass du dich so bemühst den Fehler zu finden!
    Ich habe noch ein bisschen getestet und ich weis nicht woran es lag, aber der Fehler ist weg. Frag mich nicht woran es jetzt lag. Ich habe zwar immer noch den ,,Fehler", dass die Trecker beim original Modul ein/zwei mal schaukeln, aber bei der überarbeiteten Version ist dies weg.
    Falls du mal sehen willst, was ich meine kann ich dir ein Video schicken, wo das zu sehen ist.

    Gruß Omat :D

    1 Antworten

  10. rachederasen 11. 05 2017

    Kommentarfunktion immer noch inaktiv...

    Hier das Video zum Test mit dem MF 7700:

    https://www.youtube.com/watch?v=bHvn0MkCaO8

    Gruß Andy


  11. rachederasen 11. 05 2017

    Moin Omat,

    danke für die Info.
    Habe jetzt noch mal kurz auf der Testmap getestet nur mit dem Modul 3 V1.5.2, Drive Controll, FillMassAdjust, Gearbox, und den Fahrzeugmods...Kein Schaukeln :( bin ratlos

    Kanns mir net erklären, habe den 7700 MF mal aufgenommen auf der "an der Ostsee"-Map, meinem TestAreal, der hat die beladenen Bandit 750 und den Fetten Krone Tridem hinter, auf 3 verschidenen Untergründen (Gras, Feld, Straße), kein Schaukeln, auf der neuen Südharz-Map schon.

    Das ist für mich grad unverständlich...
    Lade gerne ein Video hoch zum Beweis.

    Gruß Andy


  12. rachederasen 10. 05 2017

    Moin Omat.

    Das Problem, das du beschreibst, mit dem Schaukeln ist mir (wenn auch nur in abgeschwächter Form) auch aufgefallen.

    Nur bei mir sind nur einige Tridem (und auch nur voll beladen) betroffen. Der Bandit 750 machts z.B. net.

    Wenn ich die nächsten Tage mal wieder Zeit finde mich etwas länger an den PC zu setzen, als nur 5 min, dann schaue ich mal wo durch dies ausgelöst werden könnte.

    Hatte auch schon mal in einem meiner unzähligen Tests beobachtet, dass das Schaukeln mit dem Standart Modul 3 genau so auftritt.

    Könnte auch an einer anderen Mod liegen,...

    Um nach dem Problem mit einigen Rädern von Modschleppern zu suchen bin ich auch nocht nicht gekommen,...

    Gruß Andy

    1 Antworten

  13. Omat1998 10. 05 2017

    Moin Moin,
    ich habe dieses Skript runtergeladen und war erst einmal begeistert. Endlich müssen die Schlepper auch mal n bisschen Leistung haben um die Maschinen zu ziehen.
    Jetzt habe ich aber folgendes Problem entdeckt:
    Wenn ich an einen Schlepper einen Tandem oder Tridem Hänger hänge fängt dieser im Stillstand an zu schaukeln, was sich nur ändert wenn ich den Hänger abkoppel.
    Besonders fällt es auf mit dem MF 7700 und dem Krampe Bandit 750 auf einem Feld (egal ob gegrubert/gepflügt oder abgeerntet).

    Ich habe schon viel ausprobiert finde den Fehler aber nicht.
    Ich nutze das Modul 03 in der neuesten Version ( 1.0.1.0 ) und die Ground Response Version 1.5.
    kann mir einer helfen oder hat einer das gleiche Problem ?
    Grüße Omat


  14. Bomberman82 03. 05 2017

    Habe erst kürzlich mal Zeit gefunden es zu testen die neueste Version und muss sagen Top. Volle Punktzahl und klare Empfehlung aufjedenfall. Einzig bei einem vollen Ballenwagen wie dem Brandtner den man über Modhub beziehen kann, kann es passieren das der Hinterteil manchmal wegdriftet. Aufjedenfall genial und ein muss auf der Sosnovkamap da es ja in den Ostblockstaaten ja eh etwas rauher und schwerer zugeht mit dem lehmartigen Boden. Wer es noch realistischer mag kann auch den Manual Attacher nutzen. Danke fürs teilen.


  15. Fortschritt 29. 04 2017

    Genialer Mod war mit einem Xerion 5000 unterwegs und bin im Schlamm (bei Regen) auf dem Feld stecken geblieben trotz Allrad und Vorder- und Hinterachssperre. Einfach fehlende Traction aber der Kirovets 9450 zieht sauber durch wobei er sich auch quält mit dem Lemken 800 Dolomit Tiefenlockerer, genail manchmal zählt doch das größere Eigengewicht und nicht die PS-Anzahl :D

    1 Antworten

  16. matze210788 18. 04 2017

    Hallo ihr könnt mir bestimmt helfen ist die v1.5 final mp fähig?

    1 Antworten

  17. Metalhead1999 15. 04 2017

    Servus, ich hatte die vorherige Version der 4Real Module 03 - Bodenbeschaffenheit von ModHub installiert und dort diese lua Datei eingefügt. Es funktionierte Einwandfrei. Als ich aber mit einem Freund MP spielen wollte, (er hatte die neue Version der 4Real Module 03 Bodenbeschaffenheit) habe ich die neue Version runtergeladen und die alte durch die neue Version ersetzt. Jetzt aber wird der Mod im Spiel nicht mehr angezeigt, obwohl ich ihn im Modsordner habe. Kann mir da jemand helfen? Danke im voraus

    1 Antworten

  18. bogi11 12. 04 2017

    Hallo rachederasen,

    Ich will mich auch bei Dir für deine geniale Arbeit bedanken.
    Du hast es echt drauf, da kann sich Giants eine Scheibe abschneiden, dein skript
    ist einfach nur der Hammer jetzt macht der LS richtig Spass.

    Vielen ,vielen Dank ,das du deine Arbeit mit uns teilst.
    Empfehlung und alle Sterne die es gibt gehören Dir.

    Lieben gruß aus München Bogi11

    1 Antworten

  19. Darukiri 11. 04 2017

    wie kann ich den die einsinktiefe beim pflügen erhöhen ?

    2 Antworten

  20. rachederasen 11. 04 2017

    Moin Sven90,

    also ich müsste wissen, welcher Schlepper dies ist.
    Normalerweise wenn du die Stuffandthings so eingestellt hast, wie in der Beschreibung, dann passt das gut.

    Doch weiß ich aus Erfahrung das es Mod Schlepper wie den Xerion 4000 z.B. gibt, die wenig Bodenfreiheit und eine zu niedrige Kolli haben, und sich tatsächlich mit dem Pflug oder Grubber festfahren.

    Ist aber schnell im GE angepasst, so habe ich auch den Radium 45 repariert.

    Gruß Andy

    1 Antworten


}