Vehicle & Player Speed | Rechnung

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
  • Ich habe die Funktion früher nutzen können und habe sie auch aus meinem alten Skript, aber irgendwie wird mir immer 0 ausgegeben, zu Fus und im Fahrzeug, beide Werte betragen 0.
    Die 2 Funktion habe ich aus dem Santos Skript genommen weil ich dachte, dass mit meiner irgendwas nicht mehr passte in dieser Version..leider gibt die auch 0 aus.


    Meine Funktion

    stock GetPlayerSpeed(playerid)
    {
    new Float:pPos[4];
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)GetVehicleVelocity(GetPlayerVehicleID(playerid), pPos[0], pPos[1], pPos[2]);
    else if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)GetPlayerVelocity(playerid, pPos[0], pPos[1], pPos[2]);
    pPos[3] = floatsqroot(pPos[0] * pPos[0] + pPos[1] * pPos[1]);
    return floatround(pPos[3] * 100 * 1.61);
    }



    //Gucci/Jonny

    stock GetVehicleSpeed(vehicleid)
    {
    new Float:SpeedVel[3],Float:Speeddistance,Speed;
    if(!IsValidVehicle(vehicleid))return true;
    GetVehicleVelocity(vehicleid,SpeedVel[0],SpeedVel[1],SpeedVel[2]);
    Speeddistance = floatsqroot(((SpeedVel[0]*SpeedVel[0])+(SpeedVel[1]*SpeedVel[1]))+(SpeedVel[2]*SpeedVel[2]))*144;
    Speed = floatround(Speeddistance,floatround_round);
    return Speed;
    }

  • VectorSize ist schneller:

    C
    stock GetVehicleSpeed(vehicleid)
    {
        new Float:x,Float:y,Float:z;
        GetVehicleVelocity(vehicleid,x,y,z);
        return floatround(floatmul(VectorSize(x,y,z),200.0));
    }


    Anyway das Problem ist wohl, dass du diese falsch nutzt.


    Kannst du uns zeigen, wie du die Funktionen aufrufst und das prüfst? :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Klar, so nutze ich das ganze.

    • Du nutzt dort vehicleid, in deinen Funktionen wird aber nach der playerid verlangt.
    • %0.0f macht nicht soviel Sinn, da du ja einen Integer hast und keinen Float. Ergo nutze %d.
    • Printe eventuell was PlayerVehicle zurückgibt? Ist das ein Makro..oder wieso nicht einfach GetPlayerVehicleID?

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • PlayerVehicle ist ein Makro für GetPlayerVehicleID, richtig, das kürzt es einfach ein bisschen ab.
    Ich hatte gar nicht daran gedacht, das die Funktion, den Wert einen Integer abrundet, jetzt funktioniert das Super!
    Vorher hatte ich ganz normal playerid verwendet, zu mindestens bei "meiner" Funktion.

  • Strenggenommen sind beide Bespiele falsch.
    Was ist "velocity":

    Zitat

    The returned values are expressed in GTA units per 1/50th of a second[1]. A GTA Unit is equal to one metre[2].

    Also um km/h zu bekommen muss der Betrag des Vektors mal 180 genommen werden.