Fronlader Anbauagerät verschieben

  • Moin
    Ich möchte gerne den Meijer_Rambo_SCM wenn er am Frontlader befestigt ist in Translate X hin und her verschieben. Das ganze soll so funktionieren wie bei einem Stapler in Real der die Gabel hin und her schiebt..


    Ich hätte folgendes Script verwendet:
    http://forum.landwirtschafts-s…ewtopic.php?f=431&t=33317


    Kann ich das verwenden?


    Den Meijer sollte es nur verschiebn wenn ich auf eine Taste drücke und halte und solte aufhören sobald ich die Taste loslase oder die Grenze erreicht ist. Funtzt das mit den Script oben?


    Reicht es wenn ich nur den Attacher verschieben lasse?


    Edit:
    Ich hab jetzt mal folgendes versucht.

    XML
    <animPart index="0" id="gabel" showHelp="true" rotMin="-0.5 0 0" rotMax="0.5 0 0" moveTime="0.2" />


    Geht nicht. Index 0 ist quase die koplete Zange.

  • 1. du müstest nicht rotMin und rotMax, sondern transMin und transMax verwenden um etwas zu verschieben
    2. nach meinen erfahrungen lassen sich damit keine colis und joints Verschieben
    3. man kann nur von einer endposition position auf die andere Fahren lassen


    vieleicht soltest du versuchen es mit der Maus zu Steuern, allerdings kann ich dir nicht sagen wie es funktioniert, da ich es selbst noch nicht geschaft habe

  • 1. :patsch: hab ich übersehen
    2. Ich hab da mal gelessen das einer ne leiter von nem Lexion rotieren hat lassen.
    3. allso punkt a nach b ohne anhalten.


    okay. vieleicht meldet sich noch jemand.
    Was mir gerade einfällt, könnte man nicht die LUA vom clas Vario schneidwerk nehmen. Die haspel fährt ja auch vor und zurück solange man auf der Taste ist.


    Edit:
    Allso ich habs soweit gebracht das sie quase des gestehl bewegt:

    XML
    <animParts>
    <animPart index="0>0" id="gabel" showHelp="true" autoReturn="false" transMin="-0.5 0 0" transMax="0.5 0 0" moveTime="0.2" />
    </animParts>


    Er fährt jetzt so wie er soll bis auf die ballen. aber das krieg ich auch noch hin. Bloss das der stuhr von punkt A nach B fährt stört mich allso ohne stehenbleiben.


    Hatt jemand ne Idee, das die ballen auch hin und her fahren??

  • genau das ist glaub ich das problem mit dem script, dass sich die Objekte nur Optisch bewegen lassen, aber nicht deren colision, oder irgentwelche joints, auch Attacherjoints


    bei den meisten animierten schneidewerken ist die Hapel über die Maus, bzw über j;k;... Steuerbar, also wie der Standart Frontlader oder Telelader
    auch meist bei Knickdeichsel bei Ladewagen oder Kippern
    z.B. beim Bergman Shuttle

    was aber was genau zu bedeuten hat, weiß ich im moment auch noch nicht so genau, da es bei mir im moment auch nicht funktioniert:S
    beim Frontlader müste eigentlich midestens eine achse frei bleiben, als ausfahren Telelader

    Zitat

    "<mouseControl iconFilename="$dataS2/menu/mouseControlsHelp/tool_dav_arm2.png" mouseButton="RIGHT" mouseAxis="Y" axis="AXIS_TELEHANDLER_INNER_ARM" />"

    es gibt auch irgentwo eine Stoll-Greifschaufel, die mit der Maus gesteuert wird :D


    mal was zum Lesen, fals du es noch nicht gefunden hast: Feedback toggleAnimatedParts , animation mit Maus

  • Den ersten link kenn ich den Zweite nicht. Aber richtig schlau werd ich da jetzt nicht.


    Allso soll ich die toggleAnimatedParts.lua komplet weglassen?


    Jo so würde es beim Telelader ausehn.


    Aber ob das funtz wenn ich nur die Indexe anpasse? Glaub ich nicht.


    Wenn ich das jetzt so mache wirds kaum funtzten.

    XML
    <mouseControls>
    <mouseControl iconFilename="dataS2/menu/mouseControlsHelp/tool_dav_arm2.png" mouseButton="RIGHT" mouseAxis="Y" axis="AXIS_TELEHANDLER_INNER_ARM" />
    </mouseControls>
    <movingTools>
    <movingTool index="19|0" componentJointIndex="1" anchorActor="0" transSpeed="1" transAcceleration="40" transMax="3.2" transMin="1.08" translationAxis="3" axis="AXIS_TELEHANDLER_INNER_ARM" invertAxis="false" mouseAxis="AXIS_TELEHANDLER_INNER_ARM" invertMouseAxis="true" speedFactor="0.3">
    <dependentPart index="0>19|0|2" />
    </movingTools>


    Ja die <movingParts> sind ja nicht zwingend erforderlich oder?


    werd das mal Testen.


    Edit:
    ICh hab mal rumprobiert und habs dan mit dem Eintrag bedingt zu laufen gebracht:

    XML
    <mouseControls>
    <mouseControl iconFilename="dataS2/menu/mouseControlsHelp/tool_dav_arm2.png" mouseButton="RIGHT" mouseAxis="Y" axis="AXIS_TELEHANDLER_INNER_ARM" />
    </mouseControls>
    <movingTools>
    <movingTool index="0" componentJointIndex="1" anchorActor="0" transSpeed="1" transAcceleration="20" transMax="0.8" transMin="-0.8" translationAxis="1" axis="AXIS_TELEHANDLER_INNER_ARM" invertAxis="false" mouseAxis="AXIS_TELEHANDLER_INNER_ARM" invertMouseAxis="true" speedFactor="0.5">
    <dependentPart index="0>0" />
    </movingTool>
    </movingTools>


    Die Zange beweg sich jetzt in x richtung aber nur wenn ich k oder m drücke.
    Ich hab noch was nachtragen müssen in der moddesc xml damit die mauscorntoll funtzt.

    XML
    <specialization name="animatedVehicle"/>
    <specialization name="cylindered"/>


    Leider gehen die collis usw nicht mit. warscheinlich ne index sache.


    Ich häng noch ein bild von der Zange ran.

  • moving parts gehört glaub ich zu den Hydraulikzylindern
    habe es mal mit der Stolschaufel verglichen
    movingTool index="....." =bewegtes objekt
    <dependentPart index="...." /> =Grundkörper(ohne Zylinder und Greifer)

    componentJointIndex="1", wird versucht im link zu erklären
    , möglicherweise must/kanst du ihn durch den ersetzen?
    attacherJointIndices="0"
    die zahl gibt an, an welcher stelle der jointComponent steht, also "0" für den ersten, "1" für den zweiten
    zumindest glaube ich das es so ist :S



    PS. den eintrag brauchst du auch noch, fals du ihn noch nicht hast: <specialization name="mouseControlsVehicle"/>
    EDIT: ich war anscheinend zu langsam;)
    EDIT2 : ich habe mit eben den mod angeschaut, habe den selben in game ;)
    Versuche es mal mit componentJointIndex="0" , du hast nämlich nur ein component

  • allso
    movingTool index="0"
    <dependentPart index="0>0" />


    werd das mal versuchen.


    Edit:
    Ist ja geil jetzt kann ich das mit der rechten Maustaste steuern. Aber auch mit m und k. wie krieg ich das wech?
    Und jetzt bewgt sich nur der ballen nicht wenn er atascht( ^^ ) ist.


    Achja und ich hab logfehler seit ich die spetzi eingebaut hab.
    [warnbox]Error: Can't load resource: C:/Users/..../Documents/My Games/FarmingSimulator2011/mods/Meijer_Rambo_SCM_3L/dataS2/menu/mouseControlsHelp/tool_dav_arm2.png
    Error: Can't load resource: C:/Users/..../Documents/My Games/FarmingSimulator2011/mods/Meijer_Rambo_SCM_3L/dataS2/menu/mouseControlsHelp/tool_dav_arm2.png
    Error: Can't load resource: C:/Users/..../Documents/My Games/FarmingSimulator2011/mods/Meijer_Rambo_SCM_3L/dataS2/menu/mouseControlsHelp/tool_dav_arm2.png
    Error: Can't load resource: C:/Users/..../Documents/My Games/FarmingSimulator2011/mods/Meijer_Rambo_SCM_3L/dataS2/menu/mouseControlsHelp/tool_dav_arm2.png[/warnbox]


    Edit:
    ICh hab jetzt die 2 Attacher in eine Gruppe zusammengeschlossen. Egal wie ich die Indexe lege, auf das objekt -> bewegt sich der ballen nicht. wenn ich den Index auf die Attachergruppe lege bewegt sich der ballen auch nicht.
    Allmälig glaub ich das die BaleAttacher.lua verantwortlich ist, das das nicht geht. Mann könnte ja die lua so umschreiben das das gehen würde oder? Wer hellfen mag hier die lua:
    [lua]BaleAttacher = {};


    function BaleAttacher.prerequisitesPresent(specializations)
    return SpecializationUtil.hasSpecialization(Attachable, specializations);
    end;


    function BaleAttacher:load(xmlFile)
    self.searchBales = BaleAttacher.searchBales;
    self.attachobjects = BaleAttacher.attachobjects;
    self.detachobjects = BaleAttacher.detachobjects;
    self.OrientJoint = BaleAttacher.OrientJoint;
    self.setWorkState= SpecializationUtil.callSpecializationsFunction("setWorkState");
    self.isBaleInRange = BaleAttacher.isBaleInRange;
    self.place = {};
    self.place.node1 = Utils.indexToObject(self.components, getXMLString(xmlFile,"vehicle.Baletrailer#castPoint1"));
    self.place.node2 = Utils.indexToObject(self.components, getXMLString(xmlFile,"vehicle.Baletrailer#castPoint2"));
    self.place.attacherNode = Utils.indexToObject(self.components, Utils.getNoNil(getXMLString(xmlFile,"vehicle.Baletrailer#attacherNode"),"0>"));
    self.place.highOffset = Utils.getNoNil(getXMLFloat(xmlFile,"vehicle.Baletrailer#highOffset"),4);
    self.Attachedobjects = {};
    self.attacherMod = 0;
    self.attacherModOld = 0;
    self.allowAttachment = true;
    self.balesAttached = false;
    self.attachBales = false;


    end;
    function BaleAttacher:readStream(streamId, connection)
    self:setWorkState(streamReadBool(streamId), true);
    end;


    function BaleAttacher:writeStream(streamId, connection)
    streamWriteBool(streamId, self.balesAttached);
    end;
    function BaleAttacher:update(dt)
    if self:getIsActiveForInput() then
    if InputBinding.hasEvent(InputBinding.IMPLEMENT_EXTRA2) then
    self:setWorkState(not self.attachBales);
    end;
    end;
    end;


    function BaleAttacher:updateTick(dt)
    end;


    function BaleAttacher:draw()
    if self.balesAttached then
    g_currentMission:addHelpButtonText(string.format(g_i18n:getText("DETACH_BALES"), self.typeDesc), InputBinding.IMPLEMENT_EXTRA2);
    else
    g_currentMission:addHelpButtonText(string.format(g_i18n:getText("ATTACH_BALES"), self.typeDesc), InputBinding.IMPLEMENT_EXTRA2);
    end;


    end;
    function BaleAttacher:isBaleInRange(node1,node2,Yoffset,Bale)
    local Xmax, Ymax, Zmax = getWorldTranslation(node1);
    Xmax, Ymax, Zmax = worldToLocal(self.place.attacherNode,Xmax, Ymax, Zmax);

    local Xmin, Ymin, Zmin = getWorldTranslation(node2);
    Xmin, Ymin, Zmin = worldToLocal(self.place.attacherNode,Xmin, Ymin, Zmin);

    local Xt, Yt, Zt = getWorldTranslation(Bale);
    Xt, Yt, Zt = worldToLocal(self.place.attacherNode,Xt, Yt, Zt);

    if (Xt < math.max(Xmax,Xmin) and Xt > math.min(Xmax,Xmin)) and (Zt < math.max(Zmax,Zmin) and Zt > math.min(Zmax,Zmin)) and (Yt<= ((Ymax+Ymin)/2)+Yoffset and Yt>= (Ymax+Ymin)/2) then
    return true;
    else
    return false;
    end;
    end;
    function BaleAttacher:searchBales()
    for index,item in pairs(g_currentMission.itemsToSave) do
    if item.item:isa(Bale) then


    if item.item.isAttached == nil then--and (getUserAttribute(item.item.nodeId, "isHaybale") == true or getUserAttribute(item.item.nodeId, "isStrawbale") == true or getUserAttribute(item.item.nodeId, "isRoundbale") == true) then


    local isInRange = self:isBaleInRange(self.place.node1,self.place.node2,self.place.highOffset,item.item.nodeId);


    local is1stAttached = false;
    if isInRange then
    is1stAttached = self:attachobjects(item.item.nodeId,item.item);
    end;
    if is1stAttached then
    self.balesAttached = true;
    end;
    end;
    end;
    end;
    for k,v in pairs(g_currentMission.vehicles) do
    if v ~= self and v ~= self.attacherVehicle then
    local is1stAttached = false;
    for index,components in pairs(v.components) do
    local isInRange = self:isBaleInRange(self.place.node1,self.place.node2,self.place.highOffset,components.node);
    if isInRange then
    is1stAttached = self:attachobjects(components.node);
    end;
    end;
    if is1stAttached then
    self.balesAttached = true;
    end;
    end;
    end;
    end;
    function BaleAttacher:setWorkState(isCoupling,noEventSend)
    WorkStateEvent.sendEvent(self, isCoupling, noEventSend);
    if isCoupling then
    self:detachobjects();
    self.attachBales = true;
    else
    self:searchBales();
    self.attachBales = false;
    end;


    end;
    function BaleAttacher:OrientJoint(Source, Target)
    local xw, yw, zw = getWorldTranslation(Source);
    local x,y,z = worldToLocal(getParent(Target), xw, yw, zw);
    setTranslation(Target, x,y,z);
    --JointRotation Anpassung an das Objekt
    local zX, zY, zZ = localDirectionToWorld(Source, 0,0,1);
    local zX, zY, zZ = worldDirectionToLocal(getParent(Target), zX, zY, zZ);
    local yX, yY, yZ = localDirectionToWorld(Source, 0,1,0);
    local yX, yY, yZ = worldDirectionToLocal(getParent(Target), yX, yY, yZ);
    setDirection(Target, zX, zY, zZ, yX, yY, yZ);
    return false;
    end;


    function BaleAttacher:attachobjects(object,baleT)
    local attachedobject = {};
    attachedobject.object = object;
    if self.isServer then
    attachedobject.AT = createTransformGroup("AT");
    link(self.place.attacherNode,attachedobject.AT);

    attachedobject.objectMass = getMass(object);
    setMass(object,attachedobject.objectMass*0.3);

    self:OrientJoint(object,attachedobject.AT);


    local constr = JointConstructor:new();
    constr:setActors(self.place.attacherNode, object);
    constr:setJointTransforms(attachedobject.AT, object);
    for i=1, 3 do
    constr:setTranslationLimit(i-1, true, 0, 0);
    constr:setRotationLimit(i-1,0,0);
    end;
    attachedobject.JointIndex = constr:finalize();

    if baleT ~= nil then
    attachedobject.baleT = baleT;
    baleT.isAttached = true;
    end;
    end;


    table.insert(self.Attachedobjects, attachedobject);
    return true;
    end;


    function BaleAttacher:detachobjects()
    if self.isServer then
    for k,v in pairs(self.Attachedobjects) do
    removeJoint(v.JointIndex);
    delete(v.AT);
    v.JointIndex = nil;
    setMass(v.object,v.objectMass);
    if v.baleT ~= nil then
    v.baleT.isAttached = nil;
    end;
    end;
    end;

    self.Attachedobjects = nil;
    self.Attachedobjects = {};
    self.balesAttached = false;
    end;




    function BaleAttacher:onAttach(attacherVehicle)
    if self.isServer then
    self:setWorkState(false);
    end;
    end;
    function BaleAttacher:onDetach()


    if self.isServer then
    self:setWorkState(true);
    end;
    end;
    function BaleAttacher:onActivate()
    --if self.isServer then
    --self:setWorkState(false);
    --end;
    end;
    function BaleAttacher:onDeactivate()
    --if self.isServer then
    --self:setWorkState(true);
    --end;
    end;
    function BaleAttacher:loadFromAttributesAndNodes(xmlFile, key, resetVehicles)
    if not resetVehicles then


    end;
    return BaseMission.VEHICLE_LOAD_OK;
    end;


    function BaleAttacher:getSaveAttributesAndNodes(nodeIdent)
    -- local attributes = ' side="'..tostring(self.currentSide)..'"';
    local attributes = nil;
    local node = nil;
    return attributes, node;
    end;
    function BaleAttacher:delete()


    end;


    function BaleAttacher:mouseEvent(posX, posY, isDown, isUp, button)
    end;


    function BaleAttacher:keyEvent(unicode, sym, modifier, isDown)
    end;
    [/lua]


    P.S. Kann erst Morgenabend wieder on kommen, allso, nacht.

  • Hy
    Ich hab jetzt das Prob anders gelöst. Ich verschiebe nicht die Zange sondern der Attächer vom Frontlader, in diesem Fall vom gta.


    Ich habe das jetzt mit vollgenden Eintrag versucht:

    XML
    <mouseControl iconFilename="$dataS2/menu/mouseControlsHelp/tool_dav_arm2.png" mouseButton="RIGHT" mouseAxis="X" axis="AXIS_TELEHANDLER_INNER_ARM" />


    und

    XML
    <movingTool index="0|1|2|0" componentJointIndex="0" anchorActor="0" transSpeed="1" transAcceleration="20" transMax="0.5" transMin="-0.5" translationAxis="1" axis="AXIS_TELEHANDLER_INNER_ARM" invertAxis="false" mouseAxis="AXIS_TELEHANDLER_INNER_ARM" invertMouseAxis="true" speedFactor="5">


    Doch leider verschiebts mir die Zange wenn ich m und k drücke, doch diese Tasten brauche ich unbedingt.


    Hat jemand ne idee wie ich das ändern kann?

Jetzt mitmachen!

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