Hi Leute!
Ich habe mir den Kaweco Güllezubringer so umgeschrieben, dass der Überladevorgang automatisch beginnt, sobald man mit einem Fass daneben fährt.
Das funktioniert auch soweit. Einziger Schönheitsfehler ist, dass man den Überladesound auf der ganzen Map hört, wenn sich z.B. ein Courseplay-Gesteuertes Fass auflädt.
Wie begrenzt man einen Sound auf die Umgebung des Geräts, ich aber nicht drin sitze?
Hier der aktuelle Code:
[lua]function manureTrailer:updateTick(dt)
local nearestDistance = 10.0;
local px, py, pz = getWorldTranslation(self.chargefillNode);
for i=1, table.getn(g_currentMission.attachables) do
local vx, vy, vz = getWorldTranslation(g_currentMission.attachables[i].rootNode);
local distance = Utils.vector3Length(px-vx, py-vy, pz-vz);
if distance < nearestDistance then
self.inRange = true;
local attachable = g_currentMission.attachables[i];
if attachable.fillTypes ~= nil then
for fruitType,v in pairs(attachable.fillTypes) do
if fruitType == self.currentFillType and attachable.rootNode ~= self.rootNode and attachable.setFillLevel ~= nil then
if attachable.fillLevel < attachable.capacity and self.fillLevel > 0 then
if not self.workSoundEnabled then
playSample(self.workSound, 0, 1, 0);
self.workSoundEnabled = true;
end;
local deltaLevel = self.literPerSecond*dt/1000.0;
deltaLevel = math.min(deltaLevel, attachable.capacity - attachable.fillLevel);
self.fillLevel = self.fillLevel-deltaLevel;
self:setFillLevel(self.fillLevel, self.currentFillType);
attachable:setFillLevel(attachable.fillLevel + deltaLevel, self.currentFillType);
else
if self.workSoundEnabled then
stopSample(self.workSound);
self.workSoundEnabled = false;
end;
end;
end;
end;
end;
else
self.inRange = false;
end;
end;
if not self.inRange and self.workSoundEnabled then
stopSample(self.workSound);
self.workSoundEnabled = false;
end;
end;[/lua]