Sziasztok!
Egy kis kérésem lenne azokhoz, akik értenek az ilyesmihez. Itt fórumon régebb publikálva volt egy analog kilométeróra, amit én szeretnék picit továbbfejleszteni.
Az óra a sebességet így számítja ki:
GetVehicleVelocity(GetPlayerVehicleID(playerid), fPos[0], fPos[1], fPos[2]);
fSpeed = floatsqroot(floatpower(fPos[0], 2) + floatpower(fPos[1], 2) + floatpower(fPos[2], 2)) * 200;
new Float:alpha = 320 - fSpeed;
if(alpha < 60)
alpha = 60;
Én azt szeretném, hogy a GetVehicleSpeed() függvényem is ugyanazt a sebességet adja vissza, amit az óra számít.
GetVehicleSpeed(vehicleid)
{
new Float:Vx, Float:Vy, Float:Vz;
GetVehicleVelocity(vehicleid, Vx, Vy, Vz);
new Float:rtn;
rtn = floatsqroot(floatpower(Vx*200,1) + floatpower(Vy*200,1));
rtn = floatsqroot(floatpower(rtn,2) + floatpower(Vz*200,1));
return floatround(rtn);
}
Remélem valaki lesz olyan elvetemült, és segít benne. Köszönöm :)
Mivel a analóg óra nem arányos a mért sebességgel elég érdekes a helyzet. Gondolom az a célod, hogy kiírod \"digitális\" számokkal. Csináltam egy próbát, így megoldható, ha annak nevezhető, finomítani lehet rajta.
OnPlayerUpdate-nél tudod használni ezt a függvényt és ott kis is tudod írtani TD-al. Visszatér egy egész számmal ami a sebesség.
stock GetSpeed(Float:fSpeed)
{
new speed,Float:ertek;
if(fSpeed < 20.0) ertek = fSpeed * 0.80;
if(fSpeed >= 20.0 && fSpeed < 39.9) ertek = fSpeed * 0.76;
if(fSpeed >= 40.0 && fSpeed < 59.9) ertek = fSpeed * 0.76;
if(fSpeed >= 60.0 && fSpeed < 79.9) ertek = fSpeed * 0.76;
if(fSpeed >= 80.0 && fSpeed < 99.9) ertek = fSpeed * 0.74;
if(fSpeed >= 100.0 && fSpeed < 119.9) ertek = fSpeed * 0.68;
if(fSpeed >= 120.0 && fSpeed < 139.9) ertek = fSpeed * 0.63;
if(fSpeed >= 140.0 && fSpeed < 159.9) ertek = fSpeed * 0.60;
if(fSpeed >= 160.0) ertek = fSpeed * 0.58;
speed = floatround(ertek, floatround_round);
return speed;
}
Itt a 200-at írd át 220-ra, ez szerintem mérföld/órára lett kitalálva. Vagy nagyobbra is lehet, csak akkor finomítani kell a függvényen, mert ott már lehetnek eltérések.
fSpeed = floatsqroot(floatpower(fPos[0], 2) + floatpower(fPos[1], 2) +
floatpower(fPos[2], 2)) * 200;
[gmod]Javítottam helyetted a
taget
tagre![/gmod]