Also, ich möchte die Fahrzeug Umdrehungen Pro Minuten, also die des Motors berechnen.
Es funktioniert soweit schon ganz gut, aber es tauchen bei höheren Geschwindigkeiten Negative Zahlen auf.
Hier mein Ansatz(Clientseitig natürlich):
Lua
function getVehicleRPM(vehicle)
if not vehicle then return "0" end
if getVehicleEngineState(vehicle) == false then return "0" end
local speedx, speedy, speedz = getElementVelocity(vehicle)
local actualspeed = (speedx^2 + speedy^2 + speedz^2)^(0.5)
local kmh = actualspeed * 180
local gear = getVehicleCurrentGear(vehicle)
local handling = getVehicleHandling(vehicle)
local acceleration = handling["engineAcceleration"]
local maxSpeed = handling["maxVelocity"]
local gears = handling["numberOfGears"]
--local inertia = handling["engineInertia"]
--local mass = handling["mass"]
local gearSpeed = maxSpeed/gears
local currentGearSpeed = kmh/gear
local gearDiff = gearSpeed - currentGearSpeed
if currentGearSpeed > gearSpeed then gearDiff = 1 end
local RPM = math.ceil( (maxSpeed/gearDiff)*100)*3
return RPM.." KMH: "..kmh
end
addEventHandler("onClientRender", getRootElement(), function()
local text = dxDrawText("RPM: "..getVehicleRPM(getPedOccupiedVehicle(getLocalPlayer())),0, 0, 200, 200)
end)
Alles anzeigen
Also es funktioniert schon und sieht auch realistisch aus. Wenn das Fahrzeug einen Gang hochschaltet gehen die RPM kurz runter und steigen dann wieder an.
Was haltet ihr von dem Ansatz ? Kann man das noch verbessern ?