Return-Wert kommt nicht an?!

  • Hallo Leute!
    Ich steh´ glaube ich gerade etwas auf dem Schlauch. Beim Umbau der Sprayer-Specialization für Sämaschinen mit Düngefunktion hängt es nur noch am Auffüllen beim Düngertrigger.


    Und zwar wird in updateTick(dt) folgendes ausgeführt:
    [lua]if self.isServer and self.isSprayerFilling then
    local delta = 0;
    if self.sprayerFillTrigger ~= nil then
    delta = self.sprayFillLitersPerSecond*dt*0.001;
    delta = self:fillUpSprayer(delta);
    end;
    if delta <= 0 then
    self:setIsSprayerFilling(false);
    end;
    end;[/lua]


    Knackpunkt ist nun die aufgerufene Funktion self:fillUpSprayer(delta):
    [lua]function UrfSeeder:fillUpSprayer(deltax)


    local oldFillLevel = self.sprayFillLevel;
    if self.sprayerFillTrigger.isSiloTrigger then
    local silo = g_currentMission:getSiloAmount(self.sprayerFillTrigger.fillType);
    deltax = math.min(deltax, silo);
    if deltax > 0 then
    self:setSprayFillLevel(oldFillLevel + deltax);
    deltax = self.sprayFillLevel - oldFillLevel;
    g_currentMission:setSiloAmount(self.sprayerFillTrigger.fillType, silo - deltax);
    end;
    else
    self:setSprayFillLevel(oldFillLevel + deltax);
    deltax = self.sprayFillLevel - oldFillLevel;


    local fillTypeDesc = Fillable.fillTypeIndexToDesc[self.sprayerFillTrigger.fillType];

    if fillTypeDesc ~= nil then
    local price = deltax*fillTypeDesc.pricePerLiter;
    g_currentMission.missionStats.expensesTotal = g_currentMission.missionStats.expensesTotal + price;
    g_currentMission.missionStats.expensesSession = g_currentMission.missionStats.expensesSession + price;
    g_currentMission:addSharedMoney(-price, "other");
    end;
    end;
    print("URF453 Return von deltax "..deltax);
    return deltax;
    end;[/lua]


    Hier soll ja eigentlich deltax zurück an die Variable delta übergeben werden. Mein eingebautes print sagt mir auch, dass hier ein Wert vorhanden ist.
    In der Log erscheint aber folgendes:

    Code
    attempt to compare nil with number

    und zwar in der Zeile, wo delta <= 0 abgefragt wird.



    Wo bleibt der Rückgabewert hängen ?(

  • Anbei ein kurzes Zitat von Stegei aus dem offiziellen Forum :



    mit callSpecializationsFunction() kann man anscheinend eine Funktion für alle Specializations bereitstellen, während die andere Methode nur innerhalb der eigenen Specialization funktioniert ?


    Da habe ich mir ehrlich gesagt kaum Gedanken zu gemacht :D

Jetzt mitmachen!

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