FS15_KroneSwadro1400Plus funktonen einbauen

lacky2010
Posts: 23
Joined: Sat Oct 08, 2011 9:51 pm

FS15_KroneSwadro1400Plus funktonen einbauen

Post by lacky2010 »

servus

ich versuche grad für den 4 fach schwader die funktion einzubauen
zusätzlich die kreisel einzel zu steuern
hoffe ihr könnt mir da vieleicht weiterhelfen
----ob sowas überhaupt funktioniert
----was ich wo falsch gemacht habe
----ob ich was vergessen hab und wenn ja was

mfg lacky :hi:

in der kroneSwadro1400Plus.xml datei hab ich folgende werte eingetragen
<animParts>
<animPart index="0>10" id="rightFrontInnerArm" showHelp="true" rotMin="170 -90 -180" rotMax="180 -90 -180" moveTime="1" />
<animPart index="0>11" id="rightBackInnerArm" showHelp="true" rotMin="-10 -90 0" rotMax="0 -90 0" moveTime="1" />
<animPart index="0>12" id="leftFrontInnerArm" showHelp="true" rotMin="170 90 -180" rotMax="180 90 -180" moveTime="1" />
<animPart index="0>13" id="leftBackInnerArm" showHelp="true" rotMin="-10 90 0" rotMax="0 90 0" moveTime="1" />
</animParts>
in der modDesc.xml folgendes eingetragen
<specializations>
<specialization name="doors" className="toggleAnimatedParts" filename="scripts/toggleAnimatedParts.lua"/>
</specializations>

<l10n>
<text name="description_MW"><de>Dieser Krone Swadro 1400 Plus ist zwar etwas teurer, als der gleich große Pöttinger Top 1252, aber er ist in der Wartung kostengünstiger.</de><en>This Krone Swadro 1400 Plus is a little more expensive than the same size Poettinger Top 1252, but his maintenance is more cost-effective.</en></text>

<text name="rightFrontInnerArm"><de>rechts vorne</de><en>rightFront</en></text>
<text name="rightBackInnerArm"><de>rechts hinten</de><en>rightBack</en></text>
<text name="leftFrontInnerArm"><de>links vorne</de><en>leftFront</en></text>
<text name="leftBackInnerArm"><de>links hinten</de><en>leftBack</en></text>
</l10n>

<inputBindings>
<input name="rightFrontInnerArm" key1="KEY_k" button="" />
<input name="rightBackInnerArm" key1="KEY_m" button="" />
<input name="leftFrontInnerArm" key1="KEY_j" button="" />
<input name="leftBackInnerArm" key1="KEY_n" button="" />

</inputBindings>

dateien
kroneSwadro1400Plus.xml
<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<vehicle type="windrower">
<annotation>Copyright (C) GIANTS Software GmbH, All Rights Reserved.</annotation>
<name>
<en>Krone Swadro 1400 Plus</en>
<de>Krone Swadro 1400 Plus</de>
</name>
<typeDesc>$l10n_TypeDesc_Windrower</typeDesc>
<filename>kroneSwadro1400Plus.i3d</filename>

<size width="4.5" length="12" />

<powerConsumer ptoRpm="500" neededPtoPower="30"/>
<speedLimit value="19" />

<wheels autoRotateBackSpeed="2.0">
<wheel restLoad="2.8" repr="0>0" radius="0.472" initialCompression="50" suspTravel="0.1" spring="50" damper="30" mass="0.075" maxLatStiffness="40" hasTyreTracks="true" tyreTrackAtlasIndex="1" />
<wheel restLoad="2.8" repr="0>1" radius="0.472" initialCompression="50" suspTravel="0.1" spring="50" damper="30" mass="0.075" maxLatStiffness="40" hasTyreTracks="true" tyreTrackAtlasIndex="1" />
</wheels>

<dynamicallyLoadedParts>
<dynamicallyLoadedPart node="2|0" linkNode="0>0" filename="$data/vehicles/wheels/trelleborg/trelleborgAW309_500_50_17.i3d" />
<dynamicallyLoadedPart node="2|1" linkNode="0>1" filename="$data/vehicles/wheels/trelleborg/trelleborgAW309_500_50_17.i3d" />
<dynamicallyLoadedPart node="0|1" linkNode="0>12|0|0|1|0|1" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />
<dynamicallyLoadedPart node="0|1" linkNode="0>12|0|0|1|0|2" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />
<dynamicallyLoadedPart node="0|0" linkNode="0>12|0|0|1|0|3|0" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />
<dynamicallyLoadedPart node="0|1" linkNode="0>12|0|0|1|0|3|1" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />
<dynamicallyLoadedPart node="0|0" linkNode="0>12|0|0|1|0|4|0" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />
<dynamicallyLoadedPart node="0|1" linkNode="0>12|0|0|1|0|4|1" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />

<dynamicallyLoadedPart node="0|1" linkNode="0>13|0|0|0|1" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />
<dynamicallyLoadedPart node="0|1" linkNode="0>13|0|0|0|2" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />
<dynamicallyLoadedPart node="0|0" linkNode="0>13|0|0|0|3|0" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />
<dynamicallyLoadedPart node="0|1" linkNode="0>13|0|0|0|3|1" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />
<dynamicallyLoadedPart node="0|0" linkNode="0>13|0|0|0|4|0" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />
<dynamicallyLoadedPart node="0|1" linkNode="0>13|0|0|0|4|1" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />

<dynamicallyLoadedPart node="0|0" linkNode="0>10|0|0|1|0|1" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />
<dynamicallyLoadedPart node="0|0" linkNode="0>10|0|0|1|0|2" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />
<dynamicallyLoadedPart node="0|0" linkNode="0>10|0|0|1|0|3|0" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />
<dynamicallyLoadedPart node="0|1" linkNode="0>10|0|0|1|0|3|1" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />
<dynamicallyLoadedPart node="0|0" linkNode="0>10|0|0|1|0|4|0" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />
<dynamicallyLoadedPart node="0|1" linkNode="0>10|0|0|1|0|4|1" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />

<dynamicallyLoadedPart node="0|0" linkNode="0>11|0|0|0|1" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />
<dynamicallyLoadedPart node="0|0" linkNode="0>11|0|0|0|2" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />
<dynamicallyLoadedPart node="0|0" linkNode="0>11|0|0|0|3|0" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />
<dynamicallyLoadedPart node="0|1" linkNode="0>11|0|0|0|3|1" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />
<dynamicallyLoadedPart node="0|0" linkNode="0>11|0|0|0|4|0" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />
<dynamicallyLoadedPart node="0|1" linkNode="0>11|0|0|0|4|1" filename="$data/vehicles/wheels/trelleborg/trelleborgT510_16X6_50_8.i3d" />
</dynamicallyLoadedParts>

<brakeForce>1</brakeForce>

<lightCoronas>
<lightCorona index="0>3" />
</lightCoronas>

<brakeLights>
<brakeLight index="0>4" />
</brakeLights>

<turnSignals>
<turnSignalLeft index="0>5|0" />
<turnSignalRight index="0>5|1" />
</turnSignals>

<workAreas>
<workArea startIndex="0>23|0" widthIndex="0>23|1" heightIndex="0>23|2" foldMinLimit="0" foldMaxLimit="0.1" refNodeIndex="0" type="windrower" dropAreaIndex="0" /> <!-- front right -->
<workArea startIndex="0>23|3" widthIndex="0>23|4" heightIndex="0>23|5" foldMinLimit="0" foldMaxLimit="0.1" refNodeIndex="1" type="windrower" dropAreaIndex="1" /> <!-- front left -->
<workArea startIndex="0>23|6" widthIndex="0>23|7" heightIndex="0>23|8" foldMinLimit="0" foldMaxLimit="0.1" refNodeIndex="2" type="windrower" dropAreaIndex="2" /> <!-- back right -->
<workArea startIndex="0>23|9" widthIndex="0>23|10" heightIndex="0>23|11" foldMinLimit="0" foldMaxLimit="0.1" refNodeIndex="3" type="windrower" dropAreaIndex="3" /> <!-- back left -->

<workArea startIndex="0>24|0" widthIndex="0>24|1" heightIndex="0>24|2" refNodeIndex="0" type="windrowerDrop" /> <!-- front right -->
<workArea startIndex="0>24|3" widthIndex="0>24|4" heightIndex="0>24|5" refNodeIndex="1" type="windrowerDrop" /> <!-- front left -->
<workArea startIndex="0>24|6" widthIndex="0>24|7" heightIndex="0>24|8" refNodeIndex="2" type="windrowerDrop" /> <!-- back right -> same place -->
<workArea startIndex="0>24|6" widthIndex="0>24|7" heightIndex="0>24|8" refNodeIndex="3" type="windrowerDrop" /> <!-- back left -> same place -->
</workAreas>

<groundReferenceNodes>
<groundReferenceNode index="0>10|0|0|1|0|5" threshold="0.4" />
<groundReferenceNode index="0>12|0|0|1|0|5" threshold="0.4" />
<groundReferenceNode index="0>11|0|0|0|5" threshold="0.4" />
<groundReferenceNode index="0>13|0|0|0|5" threshold="0.4" />
</groundReferenceNodes>

<windrowerParticleSystems>
<windrowerParticleSystem type="grass_windrow" node="0>10|0|0|1|0|6" psRootNode="0" position="0 0 0" rotation="0 0 0" file="$data/vehicles/particleAnimations/shared/windrow.i3d" workAreaIndex="0" />
<windrowerParticleSystem type="grass_windrow" node="0>12|0|0|1|0|6" psRootNode="0" position="0 0 0" rotation="0 0 0" file="$data/vehicles/particleAnimations/shared/windrow.i3d" workAreaIndex="1" />
<windrowerParticleSystem type="grass_windrow" node="0>13|0|0|0|7" psRootNode="0" position="0 0 0" rotation="0 0 0" file="$data/vehicles/particleAnimations/shared/windrow.i3d" workAreaIndex="2" />
<windrowerParticleSystem type="grass_windrow" node="0>11|0|0|0|7" psRootNode="0" position="0 0 0" rotation="0 0 0" file="$data/vehicles/particleAnimations/shared/windrow.i3d" workAreaIndex="3" />

<windrowerParticleSystem type="dryGrass_windrow" node="0>10|0|0|1|0|6" psRootNode="1" position="0 0 0" rotation="0 0 0" file="$data/vehicles/particleAnimations/shared/windrow.i3d" workAreaIndex="0" />
<windrowerParticleSystem type="dryGrass_windrow" node="0>12|0|0|1|0|6" psRootNode="1" position="0 0 0" rotation="0 0 0" file="$data/vehicles/particleAnimations/shared/windrow.i3d" workAreaIndex="1" />
<windrowerParticleSystem type="dryGrass_windrow" node="0>13|0|0|0|7" psRootNode="1" position="0 0 0" rotation="0 0 0" file="$data/vehicles/particleAnimations/shared/windrow.i3d" workAreaIndex="2" />
<windrowerParticleSystem type="dryGrass_windrow" node="0>11|0|0|0|7" psRootNode="1" position="0 0 0" rotation="0 0 0" file="$data/vehicles/particleAnimations/shared/windrow.i3d" workAreaIndex="3" />

<windrowerParticleSystem type="wheat_windrow" node="0>10|0|0|1|0|6" psRootNode="2" position="0 0 0" rotation="0 0 0" file="$data/vehicles/particleAnimations/shared/windrow.i3d" workAreaIndex="0" />
<windrowerParticleSystem type="wheat_windrow" node="0>12|0|0|1|0|6" psRootNode="2" position="0 0 0" rotation="0 0 0" file="$data/vehicles/particleAnimations/shared/windrow.i3d" workAreaIndex="1" />
<windrowerParticleSystem type="wheat_windrow" node="0>13|0|0|0|7" psRootNode="2" position="0 0 0" rotation="0 0 0" file="$data/vehicles/particleAnimations/shared/windrow.i3d" workAreaIndex="2" />
<windrowerParticleSystem type="wheat_windrow" node="0>11|0|0|0|7" psRootNode="2" position="0 0 0" rotation="0 0 0" file="$data/vehicles/particleAnimations/shared/windrow.i3d" workAreaIndex="3" />

<windrowerParticleSystem type="barley_windrow" node="0>10|0|0|1|0|6" psRootNode="2" position="0 0 0" rotation="0 0 0" file="$data/vehicles/particleAnimations/shared/windrow.i3d" workAreaIndex="0" />
<windrowerParticleSystem type="barley_windrow" node="0>12|0|0|1|0|6" psRootNode="2" position="0 0 0" rotation="0 0 0" file="$data/vehicles/particleAnimations/shared/windrow.i3d" workAreaIndex="1" />
<windrowerParticleSystem type="barley_windrow" node="0>13|0|0|0|7" psRootNode="2" position="0 0 0" rotation="0 0 0" file="$data/vehicles/particleAnimations/shared/windrow.i3d" workAreaIndex="2" />
<windrowerParticleSystem type="barley_windrow" node="0>11|0|0|0|7" psRootNode="2" position="0 0 0" rotation="0 0 0" file="$data/vehicles/particleAnimations/shared/windrow.i3d" workAreaIndex="3" />
</windrowerParticleSystems>

<windrowerSound file="$data/vehicles/tools/tedder.wav" pitchOffset="1" volume="1.4"/>

<inputAttacherJoints>
<inputAttacherJoint rootNode="1>" index="1>0" jointType="implement" rotLimitScale="1 0 1" transLimitScale="0.05 0.05 0.05" allowsJointTransLimitMovement="true" allowsJointRotLimitMovement="true" indexPTO="0>22|2" />
</inputAttacherJoints>

<isDefaultLowered value="true"/>
<needsLowering value="false" />
<allowsLowering value="false" />

<speedRotatingParts>
<!-- front right -->
<speedRotatingPart index="0>10|0|0|1|0|1" radius="0.1936" foldMinLimit="0" foldMaxLimit="0.05"/>
<speedRotatingPart index="0>10|0|0|1|0|2" radius="0.1936" foldMinLimit="0" foldMaxLimit="0.05"/>
<speedRotatingPart index="0>10|0|0|1|0|3" radius="0.1936" foldMinLimit="0" foldMaxLimit="0.05"/>
<speedRotatingPart index="0>10|0|0|1|0|4" radius="0.1936" foldMinLimit="0" foldMaxLimit="0.05"/>
<!-- back right -->
<speedRotatingPart index="0>11|0|0|0|1" radius="0.1936" foldMinLimit="0" foldMaxLimit="0.05"/>
<speedRotatingPart index="0>11|0|0|0|2" radius="0.1936" foldMinLimit="0" foldMaxLimit="0.05"/>
<speedRotatingPart index="0>11|0|0|0|3" radius="0.1936" foldMinLimit="0" foldMaxLimit="0.05"/>
<speedRotatingPart index="0>11|0|0|0|4" radius="0.1936" foldMinLimit="0" foldMaxLimit="0.05"/>
<!-- front left -->
<speedRotatingPart index="0>12|0|0|1|0|1" radius="0.1936" foldMinLimit="0" foldMaxLimit="0.05"/>
<speedRotatingPart index="0>12|0|0|1|0|2" radius="0.1936" foldMinLimit="0" foldMaxLimit="0.05"/>
<speedRotatingPart index="0>12|0|0|1|0|3" radius="0.1936" foldMinLimit="0" foldMaxLimit="0.05"/>
<speedRotatingPart index="0>12|0|0|1|0|4" radius="0.1936" foldMinLimit="0" foldMaxLimit="0.05"/>
<!-- back left -->
<speedRotatingPart index="0>13|0|0|0|1" radius="0.1936" foldMinLimit="0" foldMaxLimit="0.05"/>
<speedRotatingPart index="0>13|0|0|0|2" radius="0.1936" foldMinLimit="0" foldMaxLimit="0.05"/>
<speedRotatingPart index="0>13|0|0|0|3" radius="0.1936" foldMinLimit="0" foldMaxLimit="0.05"/>
<speedRotatingPart index="0>13|0|0|0|4" radius="0.1936" foldMinLimit="0" foldMaxLimit="0.05"/>
</speedRotatingParts>

<support animationName="moveSupport" />

<animation animationClip="windrowerClipSource" rootNode="0>10|0|0|1|0|0" speedScale="3.5" fadeTime="3.8" />

<movingTools>
<!-- front right -->
<movingTool index="0>6" componentJointIndex="1" anchorActor="0"/>
<!-- back right -->
<movingTool index="0>7" componentJointIndex="2" anchorActor="0"/>
<!-- front right -->
<movingTool index="0>8" componentJointIndex="3" anchorActor="0"/>
<!-- back right -->
<movingTool index="0>9" componentJointIndex="4" anchorActor="0"/>

<movingTool index="0>10|0">
<dependentPart index="0>10|0|0" />
</movingTool>
<movingTool index="0>12|0">
<dependentPart index="0>12|0|0" />
</movingTool>

<movingTool index="0>22|5">
<dependentPart index="0>22|5|0" />
</movingTool>
<movingTool index="0>22|7">
<dependentPart index="0>22|7|0" />
</movingTool>
</movingTools>

<movingParts>
<!-- frontArmRight -->
<movingPart index="0>10" referencePoint="2>0" referenceFrame="2>0" isActiveDirty="true" useLocalOffset="true" limitedAxis="3" playSound="false">
<!-- rower -->
<dependentPart index="0>10|0|0|1" />
<dependentPart index="0>10|0|0|1|0" />
<!-- lift cylinder -->
<dependentPart index="0>14" />
<dependentPart index="0>15" />
</movingPart>
<movingPart index="0>10|0|0|1" referenceFrame="2>0" limitedAxis="1" playSound="false"/>
<movingPart index="0>10|0|0|1|0" referenceFrame="2>0" playSound="false"/>
<movingPart index="0>14" referencePoint="0>10|3" referenceFrame="0>10|3" playSound="false">
<translatingPart index="0>14|0" />
</movingPart>
<movingPart index="0>15" referencePoint="0>10|3" referenceFrame="0>10|3" playSound="false">
<translatingPart index="0>15|0" />
</movingPart>
<movingPart index="0>10|0|0" localReferencePoint="0>10|0|0|0" referencePoint="0>10|2" referenceFrame="0>10|2" >
<dependentPart index="0>10|0|0|0" />
<dependentPart index="0>10|1" />
</movingPart>
<movingPart index="0>10|0|0|0" referencePoint="0>10|2" referenceFrame="0>10|4" />
<movingPart index="0>10|1" referencePoint="0>10|0|1" referenceFrame="0>10" >
<translatingPart index="0>10|1|0" />
</movingPart>

<!-- backArmRight -->
<movingPart index="0>11" referencePoint="3>0" referenceFrame="3>0" isActiveDirty="true" useLocalOffset="true" limitedAxis="3" playSound="false">
<!-- rower -->
<dependentPart index="0>11|0|0" />
<dependentPart index="0>11|0|0|0" />
<!-- lift cylinder -->
<dependentPart index="0>16" />
<dependentPart index="0>17" />
<!-- width control -->
<dependentPart index="0>11|1" />
<!-- pto -->
<dependentPart index="0>26|0" />
</movingPart>
<movingPart index="0>11|0|0" referenceFrame="3>0" playSound="false"/>
<movingPart index="0>11|0|0|0" referenceFrame="3>0" limitedAxis="1" playSound="false"/>
<movingPart index="0>16" referencePoint="0>11|3" referenceFrame="0>11|3" playSound="false">
<translatingPart index="0>16|0" />
</movingPart>
<movingPart index="0>17" referencePoint="0>11|2" referenceFrame="0>11|2" playSound="false">
<dependentPart index="0>17|0" />
</movingPart>
<movingPart index="0>17|0" referencePoint="0>11|2" referenceFrame="0>11|2" scaleZ="true" playSound="false"/>
<!-- width control -->
<movingPart index="0>11|1" localReferencePoint="0>11|1|0" referencePoint="0>22|3" referenceFrame="0>11|4" playSound="false">
<dependentPart index="0>11|1|0" />
<dependentPart index="0>11|1|1" />
</movingPart>
<movingPart index="0>11|1|0" referencePoint="0>22|3" referenceFrame="0>11|4" playSound="false" />
<movingPart index="0>11|1|1" referencePoint="0>11|0|1" referenceFrame="0>11" playSound="false" >
<translatingPart index="0>11|1|1|0" />
</movingPart>
<movingPart index="0>26|0" referencePoint="0>11|0|0|0|6" referenceFrame="0>11|0|0|0|6" scaleZ="true" playSound="false"/>


<!-- frontArmLeft -->
<movingPart index="0>12" referencePoint="4>0" referenceFrame="4>0" isActiveDirty="true" useLocalOffset="true" limitedAxis="3">
<!-- rower -->
<dependentPart index="0>12|0|0|1" />
<dependentPart index="0>12|0|0|1|0" />
<!-- lift cylinder -->
<dependentPart index="0>18" />
<dependentPart index="0>19" />
</movingPart>
<movingPart index="0>12|0|0|1" referenceFrame="4>0" limitedAxis="1" playSound="false" />
<movingPart index="0>12|0|0|1|0" referenceFrame="4>0" playSound="false" />
<movingPart index="0>18" referencePoint="0>12|3" referenceFrame="0>12|3" playSound="false">
<translatingPart index="0>18|0" />
</movingPart>
<movingPart index="0>19" referencePoint="0>12|3" referenceFrame="0>12|3" playSound="false">
<translatingPart index="0>19|0" />
</movingPart>
<movingPart index="0>12|0|0" localReferencePoint="0>12|0|0|0" referencePoint="0>12|2" referenceFrame="0>12|2" >
<dependentPart index="0>12|0|0|0" />
<dependentPart index="0>12|1" />
</movingPart>
<movingPart index="0>12|0|0|0" referencePoint="0>12|2" referenceFrame="0>12|4" />
<movingPart index="0>12|1" referencePoint="0>12|0|1" referenceFrame="0>12" >
<translatingPart index="0>12|1|0" />
</movingPart>

<!-- backArmLeft -->
<movingPart index="0>13" referencePoint="5>0" referenceFrame="5>0" isActiveDirty="true" useLocalOffset="true" limitedAxis="3">
<!-- rower -->
<dependentPart index="0>13|0|0" />
<dependentPart index="0>13|0|0|0" />
<!-- lift cylinder -->
<dependentPart index="0>20" />
<dependentPart index="0>21" />
<!-- width control -->
<dependentPart index="0>13|1" />
<!-- pto -->
<dependentPart index="0>25|0" />
</movingPart>
<movingPart index="0>13|0|0" referenceFrame="5>0" playSound="false" />
<movingPart index="0>13|0|0|0" referenceFrame="5>0" playSound="false" />
<movingPart index="0>20" referencePoint="0>13|3" referenceFrame="0>13|3" playSound="false">
<translatingPart index="0>20|0" />
</movingPart>
<movingPart index="0>21" referencePoint="0>13|2" referenceFrame="0>13|2" playSound="false">
<dependentPart index="0>21|0" />
</movingPart>
<movingPart index="0>21|0" referencePoint="0>13|2" referenceFrame="0>13|2" scaleZ="true" playSound="false" />
<!-- width control -->
<movingPart index="0>13|1" localReferencePoint="0>13|1|0" referencePoint="0>22|4" referenceFrame="0>13|4" playSound="false" >
<dependentPart index="0>13|1|0" />
<dependentPart index="0>13|1|1" />
</movingPart>
<movingPart index="0>13|1|0" referencePoint="0>22|4" referenceFrame="0>13|4" playSound="false" />
<movingPart index="0>13|1|1" referencePoint="0>13|0|1" referenceFrame="0>13" playSound="false" >
<translatingPart index="0>13|1|1|0" />
</movingPart>
<movingPart index="0>25|0" referencePoint="0>13|0|0|0|6" referenceFrame="0>13|0|0|0|6" scaleZ="true" playSound="false" />

<!-- locks -->
<movingPart index="0>22|5|0" referencePoint="0>22|6|0" referenceFrame="0>">
<translatingPart index="0>22|5|0|0" />
</movingPart>
<movingPart index="0>22|7|0" referencePoint="0>22|8|0" referenceFrame="0>">
<translatingPart index="0>22|7|0|0" />
</movingPart>

<!-- attacher -->
<movingPart index="0>22|0" referencePoint="1>" referenceFrame="0>" isActiveDirty="true" limitedAxis="2" playSound="false" />
</movingParts>

<animations>
<!-- move support wheel down/up -->
<animation name="moveSupport">
<part node="0>22|1|0" startTime="0" duration="0.3" startRot="90 0 0" endRot="0 0 0" />
<part node="0>22|1|1" startTime="0" duration="0.3" startTrans="0 -0.21642 0" endTrans="0 -0.85079 0" />
<part componentJointIndex="0" startTime="0" duration="0.3" startRotLimit="0 90 10" endRotLimit="0 0 0" />
</animation>

<animParts>
<animPart index="0>10" id="rightFrontInnerArm" showHelp="true" rotMin="170 -90 -180" rotMax="180 -90 -180" moveTime="1" />
<animPart index="0>11" id="rightBackInnerArm" showHelp="true" rotMin="-10 -90 0" rotMax="0 -90 0" moveTime="1" />
<animPart index="0>12" id="leftFrontInnerArm" showHelp="true" rotMin="170 90 -180" rotMax="180 90 -180" moveTime="1" />
<animPart index="0>13" id="leftBackInnerArm" showHelp="true" rotMin="-10 90 0" rotMax="0 90 0" moveTime="1" />
</animParts>


<animation name="folding">
<!-- left back rotor -->
<!-- locks -->
<part node="0>22|5" startTime="10" endTime="10.5" startRot="0 0 7" endRot="0 0 0"/>
<part node="0>22|6" startTime="10" endTime="10.5" startRot="0 0 -7" endRot="0 0 0"/>
<part node="0>22|7" startTime="10" endTime="10.5" startRot="0 0 11" endRot="0 0 0"/>
<part node="0>22|8" startTime="10" endTime="10.5" startRot="0 0 -11" endRot="0 0 0"/>

<!-- right front -->
<!-- folding -->
<part node="0>10|0" startTime="2" endTime="9" startRot="0 85 0" endRot="0 220 0"/>
<part node="0>6|0" startTime="2" endTime="9" startTrans="-3.94085 -0.12187 0" endTrans="-0.99855 -0.12187 0"/>
<part node="0>6" startTime="2" endTime="10" startRot="0 0 -10" endRot="0 0 -90"/>
<!-- lowering -->
<part node="0>6" direction="1" startTime="0" endTime="1" startRot="0 0 0" endRot="0 0 -10"/>
<part componentJointIndex="1" direction="1" startTime="0" endTime="1" startRotLimit="9 0 9" endRotLimit="0 0 0" startTransLimit="0 0.4 0" endTransLimit="0 0 0" />
<!-- lifting -->
<part node="0>6" direction="-1" startTime="1" endTime="1.8" startRot="0 0 0" endRot="0 0 -10"/>
<part componentJointIndex="1" direction="-1" startTime="1" endTime="1.8" startRotLimit="9 0 9" endRotLimit="0 0 0" startTransLimit="0 0.4 0" endTransLimit="0 0 0" />
<!-- left front -->
<!-- folding -->
<part node="0>12|0" startTime="2" endTime="9" startRot="0 -85 0" endRot="0 -220 0"/>
<part node="0>8|0" startTime="2" endTime="9" startTrans="3.94085 -0.12187 0" endTrans="0.99855 -0.12187 0"/>
<part node="0>8" startTime="2" endTime="10" startRot="0 0 10" endRot="0 0 90"/>
<!-- lowering -->
<part node="0>8" direction="1" startTime="0" endTime="1" startRot="0 0 0" endRot="0 0 10"/>
<part componentJointIndex="3" direction="1" startTime="0" endTime="1" startRotLimit="9 0 9" endRotLimit="0 0 0" startTransLimit="0 0.4 0" endTransLimit="0 0 0" />
<!-- lifting -->
<part node="0>8" direction="-1" startTime="1" endTime="1.8" startRot="0 0 0" endRot="0 0 10"/>
<part componentJointIndex="3" direction="-1" startTime="1" endTime="1.8" startRotLimit="9 0 9" endRotLimit="0 0 0" startTransLimit="0 0.4 0" endTransLimit="0 0 0" />

<!-- right back -->
<!-- folding -->
<part node="0>7|0" startTime="2" endTime="10" startTrans="-1.5 -0.0341 0" endTrans="-0.94855 -0.0341 0"/>
<part node="0>11|0" startTime="2" endTime="10" startTrans="0 0 1.56858" endTrans="0 0 0.95406"/>
<part node="0>7" startTime="2" endTime="10" startRot="0 0 -12" endRot="0 0 -88.5"/>
<!-- lowering -->
<part node="0>7" direction="-1" startTime="0" endTime="1" startRot="0 0 0" endRot="0 0 -12"/>
<part componentJointIndex="2" direction="-1" startTime="0" endTime="1" startRotLimit="9 0 9" endRotLimit="0 0 0" startTransLimit="0 0.4 0" endTransLimit="0 0 0" />
<!-- lifting -->
<part node="0>7" direction="1" startTime="1" endTime="2" startRot="0 0 0" endRot="0 0 -12"/>
<part componentJointIndex="2" direction="1" startTime="1" endTime="2" startRotLimit="9 0 9" endRotLimit="0 0 0" startTransLimit="0 0.4 0" endTransLimit="0 0 0" />
<!-- left back -->
<!-- folding -->
<part node="0>9|0" startTime="2" endTime="10" startTrans="1.5 -0.0341 0" endTrans="0.94855 -0.0341 0"/>
<part node="0>13|0" startTime="2" endTime="10" startTrans="0 0 1.56858" endTrans="0 0 0.95406"/>
<part node="0>9" startTime="2" endTime="10" startRot="0 0 12" endRot="0 0 88.5"/>
<!-- lowering -->
<part node="0>9" direction="-1" startTime="0" endTime="1" startRot="0 0 0" endRot="0 0 12"/>
<part componentJointIndex="4" direction="-1" startTime="0" endTime="1" startRotLimit="9 0 9" endRotLimit="0 0 0" startTransLimit="0 0.4 0" endTransLimit="0 0 0" />
<!-- lowering -->
<part node="0>9" direction="1" startTime="1" endTime="2" startRot="0 0 0" endRot="0 0 12"/>
<part componentJointIndex="4" direction="1" startTime="1" endTime="2" startRotLimit="9 0 9" endRotLimit="0 0 0" startTransLimit="0 0.4 0" endTransLimit="0 0 0" />
</animation>
</animations>

<foldingParts startMoveDirection="1" foldMiddleAnimTime="0.18" turnOnFoldMaxLimit="0.25" turnOnFoldMinLimit="0" turnOffOnFold="true" >
<foldingPart animationName="folding" speedScale="1.0" />
</foldingParts>

<washable dirtDuration="90" washDuration="1" workMultiplier="4" />

<driveGroundParticleSystems>
<driveGroundParticleSystem file="$data/vehicles/particleAnimations/shared/drivingParticleSystem.i3d" wheel="1" />
<driveGroundParticleSystem file="$data/vehicles/particleAnimations/shared/drivingParticleSystem.i3d" wheel="2" />
</driveGroundParticleSystems>

<components count="6">
<component1 centerOfMass="0 0.5 -1" solverIterationCount="10" />
<component2 centerOfMass="0 -0.15 0" solverIterationCount="10" />
<component3 centerOfMass="-0.14 -0.4 0.1" solverIterationCount="10" />
<component4 centerOfMass="-0.14 -0.4 0" solverIterationCount="10" />
<component5 centerOfMass="0.14 -0.4 0.1" solverIterationCount="10" />
<component6 centerOfMass="0.14 -0.4 0" solverIterationCount="10" />
<joint component1="0" component2="1" index="0>2" rotLimit="0 0 0" transLimit="0 0 0" /> <!-- attacher -->
<joint component1="0" component2="2" index="0>6|0" rotLimit="9 0 9" transLimit="0 0.4 0" /> <!-- right front -->
<joint component1="0" component2="3" index="0>7|0" rotLimit="9 0 9" transLimit="0 0.4 0" /> <!-- right back -->
<joint component1="0" component2="4" index="0>8|0" rotLimit="9 0 9" transLimit="0 0.4 0" /> <!-- left front -->
<joint component1="0" component2="5" index="0>9|0" rotLimit="9 0 9" transLimit="0 0.4 0" /> <!-- left back -->
<collisionPair component1="1" component2="2" enabled="false" />
<collisionPair component1="1" component2="3" enabled="false" />
<collisionPair component1="1" component2="4" enabled="false" />
<collisionPair component1="1" component2="5" enabled="false" />
<collisionPair component1="2" component2="3" enabled="false" />
<collisionPair component1="2" component2="4" enabled="false" />
<collisionPair component1="2" component2="5" enabled="false" />
<collisionPair component1="3" component2="4" enabled="false" />
<collisionPair component1="3" component2="5" enabled="false" />
<collisionPair component1="4" component2="5" enabled="false" />
</components>

<schemaOverlay file="$dataS2/menu/schemas/implementSchema.png" fileSelected="$dataS2/menu/schemas/implementSchemaSelected.png" fileTurnedOn="$dataS2/menu/schemas/implementSchemaTurnedOn.png" fileSelectedTurnedOn="$dataS2/menu/schemas/implementSchemaSelectedTurnedOn.png" width="0.5" height="0.5" attacherJointPosition="0 0"/>

</vehicle>
modDesc.xml
<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<modDesc descVersion="22">
<author>Ifko[nator] - http://www.modding-welt.com -</author>
<version>1.0</version>
<title>Krone Swadro 1400 Plus</title>
<description>Krone Swadro 1400 Plus</description>
<iconFilename>Store/store_kroneSwadro1400Plus.png</iconFilename>
<multiplayer supported="true"/>

<specializations>
<specialization name="doors" className="toggleAnimatedParts" filename="scripts/toggleAnimatedParts.lua"/>
</specializations>


<l10n>
<text name="description_MW"><de>Dieser Krone Swadro 1400 Plus ist zwar etwas teurer, als der gleich große Pöttinger Top 1252, aber er ist in der Wartung kostengünstiger.</de><en>This Krone Swadro 1400 Plus is a little more expensive than the same size Poettinger Top 1252, but his maintenance is more cost-effective.</en></text>

<text name="rightFrontInnerArm"><de>rechts vorne</de><en>rightFront</en></text>
<text name="rightBackInnerArm"><de>rechts hinten</de><en>rightBack</en></text>
<text name="leftFrontInnerArm"><de>links vorne</de><en>leftFront</en></text>
<text name="leftBackInnerArm"><de>links hinten</de><en>leftBack</en></text>
</l10n>


<inputBindings>
<input name="rightFrontInnerArm" key1="KEY_k" button="" />
<input name="rightBackInnerArm" key1="KEY_m" button="" />
<input name="leftFrontInnerArm" key1="KEY_j" button="" />
<input name="leftBackInnerArm" key1="KEY_n" button="" />

</inputBindings>







<storeItems>
<storeItem>
<name>Swadro 1400 Plus</name>
<specs>
<workingWidth>12.5</workingWidth>
<neededPower>90</neededPower>
</specs>
<functions>
<function>$l10n_function_windrower</function>
<function>$l10n_description_MW</function>
</functions>
<image active="Store/store_kroneSwadro1400Plus.png" brand="$data/vehicles/store/brand_krone.png"/>
<price>43000</price>
<dailyUpkeep>35</dailyUpkeep>
<xmlFilename>kroneSwadro1400Plus.xml</xmlFilename>
<rotation>0</rotation>
<brand>Krone</brand>
<category>windrowers</category>
</storeItem>
</storeItems>
</modDesc>
toggleAnimatedParts.lua
_=[[ toggleAnimParts.lua
--------------------------------------------------------------------------------------------------------------------
Author: Sven777b (ICQ#95176001)
Konzept & Betatests : Desperados93
Version 1.0 - 12.04.2010
Version 1.3 - 19.04.2010
Version 1.4 - 30.07.2011

frei verwendbar - keine erlaubnis nötig | free for use - no permission needed.
Modifikationen erst nach Rücksprache! | modifications only with my permission.

Hinweis: das Kopieren von Sourcecode ist strafbar nach UrhG §2.1
--------------------------------------------------------------------------------------------------------------------

Fahrzeug XML:

<animParts>
<animPart index="1" id="dachfenster" showHelp="true" rotMin="0 0 0" rotMax="15 0 0" moveTime="3" />
<animPart index="2" id="fenster_links" transMin="0 0 0" transMax="0 0.4 0" moveTime="3" />
<animPart index="3" id="fenster_rechts" scaleMin="1 0.5 1" scaleMax="1 1 1" moveTime="3" />
<animPart index="4" id="ventilator" permRotAxis="3" moveTime="0.1" />
<animPart index="5" id="rulDrehkoerper" permRotAxis="2" moveTime="0.1" listenTo="beaconLightsActive" />
</animParts>

=================================================================
id : frei vergebener Name - ist gleichzeitig Bezeichner für l10n Text und InputBinding
showHelp : true/false - Hilfetext anzeigen oder nicht
rotMin/rotMax : rotation auf 3 Achsen
transMin/transMax : bewegung auf 3 Achsen
scaleMin/scaleMax : skalierung auf 3 Achsen - alles kombinierbar
moveTime : Laufzeit in Sekunden in der die Bewegung abgeschlossen wird.
autoReturn : true/false - wenn true, dann kehrt die Animation zurück sobald der Knopf losgelassen wird.
permRotAxis : 1-3 - rotiert das Objekt permanent um die angegebene Achse. moveTime definiert dabei die Zeit für eine 360° Umdrehung.
listenTo : übergeht das InputBinding und reagiert stattdessen auf die angegebene Variable. So kann man eine Bewegung zum Beispiel ans Licht koppeln
=================================================================

moddesc:
Abschnitt <specializations> : <specialization name="Fenster" className="toggleAnimatedParts" filename="toggleAnimatedParts.lua"/>
Abschnitt <vehicleTypes> : <specialization name="Fenster"/>

(für jedes InputBinding sollte ein passender Text in l10n angelegt werden welcher auch als Hilfetext dient)
<l10n>
<text name="dachfenster">
<de>Dachfenster</de>
<en>roofwindow</en>
</text>
</l10n>

(die InputBindings müssen ebenfalls definiert werden)
<inputBindings>
<input name="dachfenster" key1="KEY_5" button="" />
<input name="fenster_links" key1="KEY_6" button="" />
<input name="fenster_rechts" key1="KEY_7" button="" />
</inputBindings>
]]

toggleAnimatedParts = {};

function toggleAnimatedParts.prerequisitesPresent(specializations)
return true;
end;

function toggleAnimatedParts:load(xmlFile)
self.toggle = SpecializationUtil.callSpecializationsFunction("toggle");
self.animParts = {};
local c = 0;
while true do
local baseString = string.format("vehicle.animParts.animPart(%d)#",c);
local index = getXMLString(xmlFile,baseString.."index");
local id = getXMLString(xmlFile,baseString.."id");
local listenTo = getXMLString(xmlFile,baseString.."listenTo");
if index == nil or id == nil or (InputBinding[id] == nil and listenTo == nil) then
break;
end;
local part = {};
part.index = Utils.indexToObject(self.components, index);
part.id = id;
part.listenTo = listenTo;

local rotMin = getXMLString(xmlFile,baseString.."rotMin");
local rotMax = getXMLString(xmlFile,baseString.."rotMax");
if rotMin ~= nil and rotMax ~= nil then
local x,y,z = Utils.getVectorFromString(rotMin);
part.rotMin = {math.rad(Utils.getNoNil(x,0)),math.rad(Utils.getNoNil(y,0)),math.rad(Utils.getNoNil(z,0))};
local x,y,z = Utils.getVectorFromString(rotMax);
part.rotMax = {math.rad(Utils.getNoNil(x,0)),math.rad(Utils.getNoNil(y,0)),math.rad(Utils.getNoNil(z,0))};
end;

local transMin = getXMLString(xmlFile,baseString.."transMin");
local transMax = getXMLString(xmlFile,baseString.."transMax");
if transMin ~= nil and transMax ~= nil then
local x,y,z = Utils.getVectorFromString(transMin);
part.transMin = {Utils.getNoNil(x,0),Utils.getNoNil(y,0),Utils.getNoNil(z,0)};
local x,y,z = Utils.getVectorFromString(transMax);
part.transMax = {Utils.getNoNil(x,0),Utils.getNoNil(y,0),Utils.getNoNil(z,0)};
end;

local scaleMin = getXMLString(xmlFile,baseString.."scaleMin");
local scaleMax = getXMLString(xmlFile,baseString.."scaleMax");
if scaleMin ~= nil and scaleMax ~= nil then
local x,y,z = Utils.getVectorFromString(scaleMin);
part.scaleMin = {Utils.getNoNil(x,1),Utils.getNoNil(y,1),Utils.getNoNil(z,1)};
local x,y,z = Utils.getVectorFromString(scaleMax);
part.scaleMax = {Utils.getNoNil(x,1),Utils.getNoNil(y,1),Utils.getNoNil(z,1)};
end;

local permRotAxis = getXMLInt(xmlFile,baseString.."permRotAxis");
if permRotAxis ~= nil then
if permRotAxis >= 1 and permRotAxis <= 3 then
part.permRotAxis = permRotAxis;
end;
end;

part.moveTime = Utils.getNoNil(getXMLFloat(xmlFile,baseString.."moveTime"),1)*1000;
part.helpText = Utils.getNoNil(getXMLBool(xmlFile, baseString.."showHelp"),false);
part.autoReturn = Utils.getNoNil(getXMLBool(xmlFile, baseString.."autoReturn"),false);
part.toMax = false;
part.move = false;
table.insert(self.animParts,part);
c=c+1;
end;
end;

function toggleAnimatedParts:delete()
end;

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

function toggleAnimatedParts:keyEvent(unicode, sym, modifier, isDown)
end;

function toggleAnimatedParts:update(dt)
if self:getIsActiveForInput() then
for nr,part in ipairs(self.animParts) do
if not part.autoReturn then
if InputBinding.hasEvent(InputBinding[part.id]) then
self:toggle(nr,not part.toMax);
end;
else
if InputBinding.isPressed(InputBinding[part.id]) then
if not part.toMax then
self:toggle(nr,true);
end;
else
if part.toMax then
self:toggle(nr,false);
end;
end;
end;
end;
end;
if self:getIsActive() then
for _,part in ipairs(self.animParts) do
if part.listenTo ~= nil then
if self[part.listenTo] then
part.toMax = true;
part.move = true;
else
part.toMax = false;
end;
end;

if part.move then
part.move = false;
if part.rotMin ~= nil then
local curRot = {getRotation(part.index)};
local newRot = Utils.getMovedLimitedValues(curRot, part.rotMax, part.rotMin, 3, part.moveTime, dt, not part.toMax);
setRotation(part.index, unpack(newRot));
for i=1,3 do
if math.abs(newRot-curRot) > 0.001 then
part.move = true;
end;
end;
end;
if part.transMin ~= nil then
local curTrans = {getTranslation(part.index)};
local newTrans = Utils.getMovedLimitedValues(curTrans, part.transMax, part.transMin, 3, part.moveTime, dt, not part.toMax);
setTranslation(part.index, unpack(newTrans));
for i=1,3 do
if math.abs(newTrans-curTrans) > 0.001 then
part.move = true;
end;
end;
end;
if part.scaleMin ~= nil then
local curScale = {getScale(part.index)};
local newScale = Utils.getMovedLimitedValues(curScale, part.scaleMax, part.scaleMin, 3, part.moveTime, dt, not part.toMax);
setScale(part.index, unpack(newScale));
for i=1,3 do
if math.abs(newScale-curScale) > 0.001 then
part.move = true;
end;
end;
end;
if part.permRotAxis ~= nil then
local spd = ((2*math.pi) / part.moveTime) * dt;
local newRot = {0,0,0};
newRot[part.permRotAxis] = spd;
rotate(part.index, unpack(newRot));
part.move = part.toMax;
end;
end;
end;
end;
end;

function toggleAnimatedParts:updateTick(dt)
end;

function toggleAnimatedParts:draw()
if self:getIsActiveForInput() then
for _,part in ipairs(self.animParts) do
if part.helpText then
g_currentMission:addHelpButtonText(g_i18n:getText(part.id), InputBinding[part.id]);
end;
end;
end;
end;

function toggleAnimatedParts:toggle(id,state,nes)
toggleAnimEvent.sendEvent(self,id,state,nes);
self.animParts[id].toMax = state;
self.animParts[id].move = true;
end;

function toggleAnimatedParts:readStream(streamId, connection)
for nr,part in ipairs(self.animParts) do
local state = streamReadBool(streamId);
self:toggle(nr,state,true);
end;
end;


function toggleAnimatedParts:writeStream(streamId, connection)
for nr,part in ipairs(self.animParts) do
streamWriteBool(streamId,part.toMax);
end;
end;

toggleAnimEvent = {};
toggleAnimEvent_mt = Class(toggleAnimEvent, Event);
InitEventClass(toggleAnimEvent, "toggleAnimEvent");

function toggleAnimEvent:emptyNew()
local self = Event:new(toggleAnimEvent_mt);
self.className="toggleAnimEvent";
return self;
end;

function toggleAnimEvent:new(object, id, state)
local self = toggleAnimEvent:emptyNew()
self.object = object;
self.id = id;
self.state = state;
return self;
end;

function toggleAnimEvent:readStream(streamId, connection)
self.object = networkGetObject(streamReadInt32(streamId));
self.id = streamReadInt8(streamId);
self.state = streamReadBool(streamId);
self:run(connection);
end;

function toggleAnimEvent:writeStream(streamId, connection)
streamWriteInt32(streamId, networkGetObjectId(self.object));
streamWriteInt8(streamId, self.id);
streamWriteBool(streamId, self.state);
end;

function toggleAnimEvent:run(connection)
self.object:toggle(self.id,self.state, true);
if not connection:getIsServer() then
g_server:broadcastEvent(toggleAnimEvent:new(self.object, self.id, self.state), nil, connection, self.object);
end;
end;

function toggleAnimEvent.sendEvent(vehicle, id, state, nes)
if nes == nil or nes == false then
if g_server ~= nil then
g_server:broadcastEvent(toggleAnimEvent:new(vehicle, id, state), nil, nil, vehicle);
else
g_client:getServerConnection():sendEvent(toggleAnimEvent:new(vehicle, id, state));
end;
end;
end;