mehrere Früchte in XML abfragen

  • hi..


    Ich hab ne Frage. Ich habe vor, meine Strohhäcksel-Spezi umzubauen, dass man in der XML die indexe so angibt:

    XML
    <strawAndPipeAnimations>
    <chopper>
    <fruit type="wheat" index="66|0" index2="66|0|0"/>
    <fruit type="barley" index="66|0" index2="66|0|0"/>
    <fruit type="rape" index="66|1" index2="66|1|0"/>
    </chopper>
    </strawAndPipeAnimations>


    Man soll also zuerst die Fruchtart angeben, dann index und index2.


    Frage: Wie geht das? Ich hab es versucht - vergeblich. Es werden nie alle (hier 3, man soll aber auch andere Früchte wie z.B. Karotten (also eine Multifruit-Frucht) angeben können) Fruchtarten geladen.
    Und sagt mir bitte noch wie man das dann im Update-Teil aufruft :)



    Voraus schonmal danke!


    MfG RivalBomb

  • Hi,


    Also wenn du mal in die Cutter vom Deutz guckst, da hast du z.B die fruitExtraObjects Einträge, dann kannst du mit der Skript Docu und der Cutter.lua sehen wie diese ausgelesen werden:
    http://www.ls-mods.de/scriptDo…es/specializations/Cutter Ab Zeile 95.


    In deinem Beispiel könnte man das fast 1:1 übernehmen, wenn du dazu gleich noch das Chopper entfernst und es direkt in die fruitType Zeile schreibst:


    XML
    <strawAndPipeAnimations>
    <chopper fruitType="wheat" index="66|0" index2="66|0|0"/>
    <chopper fruitType="barley" index="66|0" index2="66|0|0"/>
    <chopper fruitType="rape" index="66|1" index2="66|1|0"/>
    </strawAndPipeAnimations>


    Dann würde das auslesen in der lua so aussehen:


    [lua] self.strawAndPipeAnimations = {};
    local i = 0;
    while true do
    local key = string.format("vehicle.strawAndPipeAnimations.chopper(%d)", i);
    local t = getXMLString(xmlFile, key.. "#fruitType");
    local index = getXMLString(xmlFile, key.. "#index");
    local index2 = getXMLString(xmlFile, key.. "#index2");
    if t==nil or index==nil or index2==nil then
    break;
    end;


    local node = Utils.indexToObject(self.components, index);
    local node2 = Utils.indexToObject(self.components, index2);
    if node ~= nil then
    --if self.currentExtraObject == nil then
    --self.currentExtraObject = node;
    --setVisibility(node, true);
    --else
    --setVisibility(node, false);
    --end;
    --self.strawAndPipeAnimations[t] = node;
    end;
    if node2 ~= nil then
    --if self.currentExtraObject == nil then
    --self.currentExtraObject = node2;
    --setVisibility(node2, true);
    --else
    --setVisibility(node2, false);
    --end;
    --self.strawAndPipeAnimations[t] = node2;
    end;
    i = i +1;
    end;[/lua]


    Ich habe hie gleich einen Teil ausgeklammert dieser ist in der orginalen lua dazu da um die extrsFruitObjects zu Upadaten, siehe dazu in der cutter.lua in Zeile 462.
    Bzw im updateTick() in Zeile 337,
    dort wird der upateExtraObjects() aufgerufen:
    [lua] if self.currentInputFruitType ~= oldInputFruitType then
    Cutter.updateExtraObjects(self);
    end;[/lua]
    Eventuell kannst du das gleich für dein Skript nutzen.


    Wenn du es über eine extra Fuction regelst, dann musst du diese auch im load() erst registrieren:
    [lua] self.updateStrawAndPipeAnimations = SpecializationUtil.callSpecializationsFunction("updateStrawAndPipeAnimations");
    [/lua]
    die Fucction sieht dann so aus:
    [lua]function DeinName.updateStrawAndPipeAnimations(self)
    end;
    [/lua]


    Hoffe das hat dir etwas geholfen.



    EDIT: Achtung in Zeile 7 meines Codes, ist am Ende ein ; hinter "index2" was da nicht hingehört, in meinem kopierten Code ist es auch nicht zu sehen, es taucht nur auf wenn ich die Antwort absende... keine Ahnung wer das da immer hinsetzt... :D

  • Danke, hat funktioniert... ich habe auch schon eine Pipe animation hinzugefügt. allerdings kommt jetzt immer ein Log Error wenn der Korntank leer ist, da ja keine Frucht mehr da ist...


    Code
    Error: LUA running function 'update'
    C:/Users/Lukas/Documents/My Games/FarmingSimulator2013/mods/ClaasLexion540/strawAndPipeAnimations.lua(238) : attempt to index local 'chopperMesh' (a nil value)


    Dieser Fehler kommt und das Spiel hängt sich auf, ich kann nichts mehr machen.

Jetzt mitmachen!

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