Szerző Téma: Kilométeróra kalibrálás  (Megtekintve 868 alkalommal)

Nem elérhető BackUP

  • 908
    • Profil megtekintése
Kilométeróra kalibrálás
« Dátum: 2014. Október 26. - 23:22:07 »
0 Show voters
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 :)
« Utoljára szerkesztve: 2014. Október 26. - 23:30:47 írta Dfoglalo »

Nem elérhető nyomo

  • 159
    • Profil megtekintése
Kilométeróra kalibrálás
« Válasz #1 Dátum: 2014. Október 29. - 07:53:54 »
+1 Show voters
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]
« Utoljára szerkesztve: 2014. Október 29. - 14:45:59 írta Dfoglalo »

Nem elérhető BackUP

  • 908
    • Profil megtekintése
Kilométeróra kalibrálás
« Válasz #2 Dátum: 2014. Október 29. - 13:20:44 »
0 Show voters
Köszönöm szépen, este amikor lesz egy kis időm kipróbálom. :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal