Beiträge von sag_ich_nicht

    Genau das ist ja das Problem, was viele haben. Jeder hat seine eigene Logik, da ist es oft schwierig, sich da rein zu finden. Kenne ich zur genüge, hat aber auch Vorteile.



    Mir fällt aber auch auf, das die Zeilen in der vollständigen LUA jetzt auch Nummerrierungstechnisch nicht stimmt. Da ist Zeile 34 plötzlich Zeile 30.


    Ich danke dir trotzdem für die Hilfe, bringt mich im verstehen weiter. Habe völlig vergessen das fehlende Variablen ja nicht automatisch 0 sind. Von daher macht dein Vorschlag ja auch Sinn. Allerdings hängt er beim Verkauf dann trotzdem wieder an der Zeile, die schon von Anfang an die Probleme bereitet.


    Mal schauen, vll. fällt ja noch jemandem etwas dazu ein. Danke dir.

    Hallo modelleicher,


    habe es probiert, ändert aber leider nichts. Vom Verständnis her sollte es auch fast egal sein, ob ich die Variable jetzt auf ungleich Null oder größer Null vergleiche. Nichts anderes mache ich doch eigentlich mit beiden Befehlen hintereinander. Oder denke ich da falsch?



    Ich hänge einfach noch mal die komplette lua an, das hilft dann sicher mehr.
    (Ist die originale ohne deine Änderung)


    Wobei mir da auffällt, vll bringt es etwas im Aufruf der Funktion diesen Vergleich anzubringen (Also zwischen Zeile 8 und 15 der unten geposteten lua). Das werde ich noch einmal probieren.



    [hide][[lua]
    ShowFillLevel = {};
    ShowFillLevel.vehicles = {}
    function ShowFillLevel.prerequisitesPresent(specializations)
    return true
    end;


    function ShowFillLevel:load(xmlFile)
    if not self.name then
    self.name = Utils.getNoNil(getXMLString(xmlFile, "vehicle.name."..g_languageShort), "no Name");
    end
    if self.grainTankCapacity then
    table.insert(ShowFillLevel.vehicles,self.rootNode)
    end
    end;


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


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


    function ShowFillLevel:update(dt)
    if table.getn(ShowFillLevel.vehicles) > 0 and ShowFillLevel.vehicles[1] == self.rootNode then
    local fillLevels = {}
    local names = {}
    local fruit = {}
    local fastNum = {}
    for i=1,table.getn(ShowFillLevel.vehicles) do
    local veh = g_currentMission.nodeToVehicle[ShowFillLevel.vehicles[i]]
    if veh.grainTankFillLevel > 0 then
    local Level = veh.grainTankFillLevel*100/veh.grainTankCapacity
    table.insert(fillLevels,Level)
    table.insert(names,veh.name)
    local fruitType = FruitUtil.fruitIndexToDesc[veh.currentGrainTankFruitType].name
    if g_i18n:hasText(fruitType) then
    fruitType = g_i18n:getText(fruitType)
    end
    table.insert(fruit,fruitType)
    for k,v in pairs(g_currentMission.steerables) do
    if v.rootNode == ShowFillLevel.vehicles[i] then
    table.insert(fastNum,k)
    end
    end
    end
    end
    for i=1,table.getn(names) do
    setTextAlignment(2)
    local posY = 0.85
    local posX = 0.98
    renderText(posX, posY - (i-1)*0.05, 0.021,names[i]..": ("..fastNum[i]..")");
    if fillLevels[i] > 80 then setTextColor(1, 0, 0, 1); end
    renderText(posX, posY - 0.021 - (i-1)*0.05, 0.02,""..string.format("(%d%%) %s",fillLevels[i],fruit[i]).."");
    setTextColor(1, 1, 1, 1)
    setTextAlignment(0)
    end
    end
    end;


    function ShowFillLevel:draw()
    end;


    function ShowFillLevel:delete()
    end;
    [/lua][/hide]

    Hallo erstmal, ich hätte gerne mal ein Problem...



    Ich habe mir, wie so manch anderer den showfilllevel aus LS09 umgeschrieben. Leider scheint der ursprüngliche Autor nicht mehr in dieser Richtung aktiv zu sein, weshalb es wohl keine aktuelle Version gibt. Aber zum Problem. Das Script an sich arbeitet fehlerfrei, Probleme entstehen erst, wenn ich einen Drescher, der mit dem Script ausgestattet ist, verkaufe. Dann gibt es folgenden Fehler in der LOG:


    showFillLevel.lua(34) : attempt to index local 'veh' (a nil value)


    In Zeile 34 der .lua wird diese Variable ausgewertet: "if veh.grainTankFillLevel > 0 then"


    veh ist diese Variable: "local veh = g_currentMission.nodeToVehicle[ShowFillLevel.vehicles]"


    Natürlich stimmt diese Bedingung damit nicht mehr. Wie sage ich dem Script also jetzt, das er den Drescher vergessen soll. Wäre es möglich, mit ner else - Bedingung dieses zu realisieren, in der ich dem Script sage, ignoriere alle Drescher mit Tankinhalt = 0? Allerdings überprüft das Script ja dann trotzdem, ob der Drescher vorhanden ist, und schmeißt ihn nicht aus der Updateschleife. Warum er die Funktion allerdings nicht beendet, da die Bedingung ja eigentlich nicht mehr vorhanden ist (nil) verstehe ich nicht wirklich.


    Ja, ich gebe zu, so viel habe ich mich noch nicht mit dem Scripten versucht, komme auch nicht wirklich aus dieser Richtung. Allerdings will ich versuchen, so mehr zu verstehen. Ich habe auch nicht vor, irgendwelche Scripte zusammenzuklauen, ich will das nur für mich realisieren.


    Ich hoffe daher auf Hilfe. Den Hauptteil der Funktion habe ich angehangen, das ist aber nicht die komplette lua. Will ja keine fremden Scripte hier veröffendlichen. Wenn Fragen zum Problemstellungsverständnis sind, versuche ich die gerne zu beantworten.


    [hide][lua]function ShowFillLevel:update(dt)
    if table.getn(ShowFillLevel.vehicles) > 0 and ShowFillLevel.vehicles[1] == self.rootNode then
    local fillLevels = {}
    local names = {}
    local fruit = {}
    local fastNum = {}
    for i=1,table.getn(ShowFillLevel.vehicles) do
    local veh = g_currentMission.nodeToVehicle[ShowFillLevel.vehicles[i]]
    if veh.grainTankFillLevel > 0 then
    local Level = veh.grainTankFillLevel*100/veh.grainTankCapacity
    table.insert(fillLevels,Level)
    table.insert(names,veh.name)
    local fruitType = FruitUtil.fruitIndexToDesc[veh.currentGrainTankFruitType].name
    if g_i18n:hasText(fruitType) then
    fruitType = g_i18n:getText(fruitType)
    end
    table.insert(fruit,fruitType)
    for k,v in pairs(g_currentMission.steerables) do
    if v.rootNode == ShowFillLevel.vehicles[i] then
    table.insert(fastNum,k)
    end
    end
    end
    end
    for i=1,table.getn(names) do
    setTextAlignment(2)
    local posY = 0.85
    local posX = 0.98
    renderText(posX, posY - (i-1)*0.05, 0.021,names[i]..": ("..fastNum[i]..")");
    if fillLevels[i] > 80 then setTextColor(1, 0, 0, 1); end
    renderText(posX, posY - 0.021 - (i-1)*0.05, 0.02,""..string.format("(%d%%) %s",fillLevels[i],fruit[i]).."");
    setTextColor(1, 1, 1, 1)
    setTextAlignment(0)
    end
    end
    end;[/lua][/hide]

    Hey pAre, erstmal danke für diese vorzügliche Map. Ich spiele sie seit Anfang an, und sie begeistert mich immer aufs neue. Auch wenn ich jetzt auch den Kuhweidenfehler feststellen musste :( Egal, Kühe verkauft und gut.


    Aber mal ne Frage. In der ersten Version der Karte konnte ich an den manySilos ja alle Fruchtarten incl. Silage und Gras wieder aufladen. Hast du das wissentlich wieder entfernt, oder ist das durch die Umstellung auf die BGA gekommen? Ich lege keinen Wert darauf, darum geht es mir nicht.


    Wenn das nämlich gewollt ist, baue ich für mich dann die beiden Trigger auf SuperSilo um, dort ist dann die Auswahl schöner, analog zu der bekannten Wahl aus LS09 (X als Saatwahl und Space zum Ladebeginn) Dieser Trigger soll angeblich auch MP-fähig sein, habe allerdings keine Möglichkeit, dies zu testen.