Kilometerzähler will nicht

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo ich finde meinen Fehler nicht :/


    new string[50];
    new Float:distanz;
    new Float:x,Float:y,Float:z;
    GetPlayerPos(p,x,y,z);
    distanz=GetDistanceFromPointToPoint(xx[p],yy[p],zz[p],x,y,z);
    if(distanz>100) return 1;
    distance[p]=distance[p]+distanz;
    GetPlayerPos(p,xx[p],yy[p],zz[p]);
    if(distance[p]>100)
    {
    m[GetPlayerVehicleID(p)]++;
    distance[p]=distance[p]-100;
    if(m[p]==10)
    {
    km[GetPlayerVehicleID(p)]++;
    m[GetPlayerVehicleID(p)]=0;
    }
    }
    format(string,sizeof(string),"Kilometer: %i,%iKM",km[GetPlayerVehicleID(p)],m[GetPlayerVehicleID(p)]);
    TextDrawSetString(Kilometer[p],string);


    das ist der code aber wenn ich ingame fahre zählt er nichts der Kilometer stand bleibt auf 0,0 aber warum ?

  • Mit der oben genannten Formel, brauchst du deinen Code nicht mehr.


    KmH / 3,6 = Meter pro Sekunde.


    Diese Formel muss allerdings an den Intervall deines Timers angepasst werden. Für einen Intervall von 1 Sekunde bedarf es keiner Änderung.


    Das Ergebnis wird auf deiner Kilometer Variable addiert.


    Fertig!


    MfG Mika

  • km[GetPlayerVehicleID(p)]+= (deineKmHVariable/3,6); //Kilometer werden addiert.
    format(string,sizeof(string),"Kilometer: %i KM",km[GetPlayerVehicleID(p)]);// Formatiert
    TextDrawSetString(Kilometer[p],string); //Anzeugen/Aktualisieren


    Bei einem Timer von 1 Sekunde, welcher diese Funktion aufruft brauchst du nichts an der Formel zu ändern.
    Bei 0,5 Sekunden wird Bsp: km[GetPlayerVehicleID(p)]+= (deineKmHVariable/3,6)/2; gerechnet.

  • Eigentlich brauchst du nur noch eine Variable km. Die Variable m ist unnötig


    Wie du es definierst kommt ganz darauf an wie du es angezeigt bekommen möchtest und du es intern verarbeiten möchtest.


    Wenn du es als Integer definierst werden die Meter pro Sekunde einfach nur addiert, wie im richtigen Auto.


    Bsp: 100001 = 100Kilometer und 1 Meter.


    Wenn du daraus eine Komma Zahl machen möchtest solltest du es als float definieren.


    Bsp: 101,001 = 101Kilometer und 1 Meter.


    MfG Mika

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen

  • new str[64];
    km[GetPlayerVehicleID(i)]+= (GetVehicleSpeed(GetPlayerVehicleID(i))/3,6); //Kilometer werden addiert.
    format(str,sizeof(str),"Kilometer: %i,%iKM",km[GetPlayerVehicleID(i)]);
    TextDrawSetString(Kilometer[i],str);


    so ich habe einen Timer der alle sekunde geht und er zählt jetzt alle sekunde 6 Kilometer dazu egal wie schnell ich fahre

  • GetVehicleSpeed(vehicleid)
    {
    new Float:Vx, Float:Vy, Float:Vz;
    GetVehicleVelocity(vehicleid, Vx, Vy, Vz);
    new Float:rtn;
    rtn = floatsqroot(floatpower(Vx*200,2) + floatpower(Vy*200,2));
    rtn = floatsqroot(floatpower(rtn,2) + floatpower(Vz*200,2));
    return floatround(rtn);
    }