Hallo,
nachdem ich mich jetzt etwas mit Materie auseinandergesetzt habe, ist auch klar was schief läuft. Problem ist, dass zuerst der Füllstand über die Funktion in der Fillable.lua gesetzt wird. Diese begrenzt den Wert in self.fillLevel auf den Wert der in self.capacity steht. Da die Kapazität des Wagens aber erst später entsprechend des Aufbaus angepasst wird und der eigentliche Wert im Savegame nicht noch mal geladen wird, bleibt die fillLevel auf dem Wert der der in der Fillable.lua gesetzt wurde. Abhilfe habe ich jetzt geschaffen in dem ich in der VariableBody.lua die Funktion VariableBody:loadFromAttributesAndNodes etwas verändert habe:
[lua]function VariableBody:loadFromAttributesAndNodes(xmlFile, key, resetVehicles)
if not resetVehicles then
local fillLevel = getXMLFloat(xmlFile, key.."#fillLevel");
local idx = Utils.getNoNil(getXMLInt(xmlFile,key.."#varBody.activeIdx"),1);
if idx > table.getn(self.varBody.nodes) then
idx = 1;
end;
local idx2 = Utils.getNoNil(getXMLInt(xmlFile,key.."#varBody.activeSubIdx"),1);
if idx2 > table.getn(self.varBody.nodes[idx].parts) then
idx2 = 1;
end;
self:changeVariableBody(idx, idx2, true);
self:setFillLevel(fillLevel, self.currentFillType);
end;
return BaseMission.VEHICLE_LOAD_OK;
end;[/lua]
Dadurch wird der aktuelle Wert noch mal aus dem Savegame geladen und entsprechend gesetzt.
Vielleicht kann sich ja mal einer der Skriptexperten dazu äußern ob diese Vorgehensweise eher oder eher ist !
Gruß
Andreas