Tacho zeigt über 8000 km/h an :O

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
  • hey liebe Com.


    Ich hab da ein Problem und zwar arbeite ich mit einem LOH edit und habe das alte loh tacho satt :)


    Jetzt habe ich ein neues erstellt das nicht mit einem gametext erscheint sondern ein Textdraw


    So weit so gut
    Jetzt wie in der Überschrift erwähnt steht da aber nicht 10 km/h 0 km/h und so sondern Speed: 8116 km/h und sowas


    hier der Code



    public VehStateCheck()
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER && !IsANoTachoVehicle(GetPlayerVehicleID(i)))
    {
    if(M_Bot[i][PAFK] == 0)
    {
    new string[128];
    new Float:value,Float:distance,Float:x,Float:y,Float:z;
    GetPlayerPos(i, x, y, z);
    distance = floatsqroot(floatpower(floatabs(floatsub(x,PCarPos[i][PCarX])),2)+floatpower(floatabs(floatsub(y,PCarPos[i][PCarY])),2)+floatpower(floatabs(floatsub(z,PCarPos[i][PCarZ])),2));
    value = floatround(distance * 5000);
    //new kmh = GetPlayerSpeed(i, true);
    if(floatround(value/1700) >= 0 && floatround(value/1700) <= 80)
    {
    format(string, 64, "~w~Speed: ~g~~h~%d ~w~KM/h.", floatround(value/1700));
    }
    else if(floatround(value/1700) >= 81 && floatround(value/1700) <= 120)
    {
    format(string, 64, "~w~Speed: ~y~~h~%d ~w~KM/h.", floatround(value/1700));
    }
    else if(floatround(value/1700) >= 121)
    {
    format(string, 64, "~w~Speed: ~r~~h~%d ~w~KM/h.", floatround(value/1700));
    }
    TextDrawSetString(Speedo, string);
    }
    }
    }
    return 1;}

    ik bin der vito c:

  • public VehStateCheck() { for(new i=0;i<MAX_PLAYERS;i++) { if(IsPlayerConnected(i) && GetPlayerState(i) == PLAYER_STATE_DRIVER && !IsANoTachoVehicle(GetPlayerVehicleID(i))) { if(M_Bot[i][PAFK] == 0) { new string[128]; new Float:value,Float:distance,Float:x,Float:y,Float:z; GetPlayerPos(i, x, y, z); distance = floatsqroot(floatpower(floatabs(floatsub(x,PCarPos[i][PCarX])),2)+floatpower(floatabs(floatsub(y,PCarPos[i][PCarY])),2)+floatpower(floatabs(floatsub(z,PCarPos[i][PCarZ])),2)); value = floatround(distance * 5000); //new kmh = GetPlayerSpeed(i, true); if(floatround(value/1300) >= 0 && floatround(value/1300) <= 80) { format(string, 64, "~w~Speed: ~g~~h~%d ~w~KM/h.", floatround(value/1300)); } else if(floatround(value/1300) >= 81 && floatround(value/1300) <= 120) { format(string, 64, "~w~Speed: ~y~~h~%d ~w~KM/h.", floatround(value/1300)); } else if(floatround(value/1300) >= 121) { format(string, 64, "~w~Speed: ~r~~h~%d ~w~KM/h.", floatround(value/1300)); } TextDrawSetString(Speedo, string); } } } return 1;}

    Probier es mal so du musst das:
    floatround(value/1300)
    Meines wissens verkleiner/vergrößern wenn eine höhere/langsamere Geschwindigkeit angezeigt werden soll.
    mfg


    Bewerte mich und meine Transaktionen als Mittelsmann

  • Ich habe keine Ahnung auf jeden fall habe ich das nicht mit absicht gemacht.
    Also einfach das:
    floatround(value/1700)

    veringern also z.B. wie in meinem Beispiel zuvor 1300 du musst es selber herausfinden.
    mfg


    Bewerte mich und meine Transaktionen als Mittelsmann

  • Funktioniert nicht...


    habe jetzt value/1300


    es startet bei so 7960 dann fahre ich los geht es so nach 7980 und wenn ich dann stehen bleibe bleibt es bei 7975 stehen oder sowas und immer so weiter und höher :/


    //EDIT


    Ich hatte mal versucht mit
    new kmh = GetPlayerSpeed(i, true);



    aber dann habe ich, wenn ich ausgestiegen bin manchmal das Tacho von anderen Usern gesehen Oo aber die Schnelligkeit stimmte

    ik bin der vito c:

    Einmal editiert, zuletzt von VitoHusky ()

  • GetPlayerSpeed ist meines wissens keine wirkliche Funktion von SA:MP sie muss definiert werden aber wie habe ich keine Ahnung.
    SChau dir deine Berechnung für die Geschwindigkeit genau an du hast da irgendwo nen Fehler aber davon habe ich keine Ahnung.
    mfg


    Bewerte mich und meine Transaktionen als Mittelsmann

  • hab ich ja als funktion


    das ging ja soweit die schnelligkeit war ok


    aber das Problem war halt das ich manchmal wenn ich ausgestiegen bin blieb das tacho und ich hab die Geschwindigkeit von einem anderen Spieler auf meinem Server gesehen :(

    ik bin der vito c:

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Wenn du die Geschwindigkeit via Distanz ausrechnen moechtest brauchst du auch noch eine Zeitangabe von dem letzten Update von PCarPos und eine Zeitangabe von nun. Das Ergebnis noch mit einer Konstanten multiplizieren um eine ungefaehre Geschwindigkeit in km/h zu erhalten.


    GetPlayerPos(i, x, y, z);
    distance = floatsqroot(floatpower(floatabs(floatsub(x,PCarPos[i][PCarX])),2)+floatpower(floatabs(floatsub(y,PCarPos[i][PCarY])),2)+floatpower(floatabs(floatsub(z,PCarPos[i][PCarZ])),2));
    value = distance / (tickcount() - tickcount_old[i]);
    tickcount_old[i] = tickcount();
    PCarPos[i][PCarY] = y;
    /.../
    value *= 3;


    Wenn du das mit GetVehicleVelocity ausrechen moechtest musst du die einzelnen Ergebnisse von x,y,z zusammen rechnen und mit einer Konstanten multiplizieren. (Werte zwischen 160 und 170 werden dazu von vielen Server benutzt.)