Easterdie Posted September 8, 2013 Share Posted September 8, 2013 (edited) Сделал я себе спидометр, начал проверять его в действии, как обнаружил, что максимальная отображаемая скорость не соответствует данным из handling. Как решить данную проблему и сделать так, чтобы SuperGT, максимальная скорость которой 230 была в действительности 230, а не так как сейчас в мта всего 179? local xv, yv, zv = getElementVelocity(vehicle) local speed = 180*(xv^2 + yv^2 + zv^2) Edited September 9, 2013 by Guest Link to comment
TheNormalnij Posted September 8, 2013 Share Posted September 8, 2013 Вы корень забыли. Link to comment
Easterdie Posted September 8, 2013 Author Share Posted September 8, 2013 тогда почему часть авто с таким счётчиком едет строго в указанных рамках хедлинга, например премьер - 200 км, буллет - 230 км, а избранные авто едут на скорости ниже заданной? Link to comment
TheNormalnij Posted September 8, 2013 Share Posted September 8, 2013 Как я понял, у тебя спидометр развернут на 180 град( Pi рад). тебе надо сделать так: спидометр - окружность. Предположим, что точка с минимальным значением - 0, а максимальное Pi, тогда координата точки по оси X: x = math.cos( 180*(xv^2 + yv^2 + zv^2)^(0.5) ) / MAX_SPEEDOMETR_SPEED * math.pi() + OFFSET ) и по У... y = math.sin( 180*(xv^2 + yv^2 + zv^2)^(0.5) ) / MAX_SPEEDOMETR_SPEED * math.pi() + OFFSET ) Вам это надо оптимизировать под себя и найти нужное для вас значение OFFSET в рад., которое обозначает отклонение угла окружности. Link to comment
Easterdie Posted September 8, 2013 Author Share Posted September 8, 2013 не, мне надо правильную цифру скорости для каждой машины, а не смещения и прочее. Link to comment
Kernell Posted September 8, 2013 Share Posted September 8, 2013 Никогда автомобиль не будет точно соответствовать прописанным handling. Даже установка одинакового handling на разные модели - будет иметь разный эффект. Как вариант решения проблемы, можно установить handling флаг - USE_MAXSP_LIMIT, тогда машина будет пытаться достичь этой скорости (если хватит мощности). Хотя на сколько я помню, если автомобилю хватало мощности, то даже без этого флага скорость не выходила за пределы. Скорость зависит от многих параметров, пробуйте fMass, fTurnMass, fDragMult, fEngineAcceleration, fEngineInertia Link to comment
Easterdie Posted September 9, 2013 Author Share Posted September 9, 2013 проблема решена: Client function onClientPreRender(frame) ---- Спидометр -------------------------------------------------------------- local vehicle = getPedOccupiedVehicle(localPlayer) if (vehicle) then local xv, yv, zv = getElementVelocity(vehicle) local speed = 180*math.sqrt(xv^2 + yv^2 + zv^2) dxDrawText(string.format('%.0f',speed).. "km/h",sw*430,sh*300,sw*620,sh*437,tocolor(255,255,255,255),dsize*1.7,"clear","left","top") Server function resourceStarter() for m = 400,611 do local handling = getOriginalHandling(m) -- решение проблемы handling.handlingFlags = bitOr(handling.handlingFlags,0x1000000) setModelHandling(m,"handlingFlags",handling.handlingFlags) setModelHandling(m,"dragCoeff",0) end end addEventHandler("onResourceStart",getRootElement(),resourceStarter) Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now