Geschwindigkeit abfragen ?

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 Brot^^


    Wollte mal fragen wie man die Geschwindigkeit abfragt,
    aber nicht wie sie ist.
    Sondern abfragen ob er 80 km/h fährt oder so.
    Aber will so auf mein Tacho anpassen, also mein Script tacho.


    Ich poste einfach mal mein Tacho:


    public Speedometer(playerid)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new vehicleid,Float:speed_x,Float:speed_y,Float:speed_z,Float:final_speed,speed_string[256],final_speed_int, Float:chealth;
    vehicleid = GetPlayerVehicleID(playerid);
    GetVehicleVelocity(vehicleid,speed_x,speed_y,speed_z);
    final_speed = floatsqroot(((speed_x*speed_x)+(speed_y*speed_y))+(speed_z*speed_z))*150; // 136.666667 = kmph // 85.4166672= mph
    final_speed_int = floatround(final_speed,floatround_round);
    GetVehicleHealth(vehicleid, chealth);
    new LocationZone[MAX_ZONE_NAME];
    GetPlayer2DZone(playerid, LocationZone, MAX_ZONE_NAME);
    format(speed_string,200,"~w~Fahrzeug: ~w~%s~n~~g~Km/h: ~g~~h~%d km/h~n~~b~Schaden: ~b~~h~%d%%~n~~r~Benzin: ~r~~h~%d%%~n~~y~GPS: ~y~~h~%s",VehicleName[GetVehicleModel(vehicleid)-400], final_speed_int, floatround(chealth, floatround_round)/10, Gas[vehicleid], LocationZone);
    TextDrawSetString(Speedo[playerid], speed_string);
    }
    return 1;
    }
    oben sind noch timer und so ein schrott, also wann das gezeigt wird, aber das ist ja nicht wichtig.


    Also wie frage ich ab ob er 80 km/h fährt oder ob der schneller fährt und was dann passiert.


    Also etwa so:
    Also das soll die diesesn mit den Variablen sein:
    If(PlayerInfo[playerid][pGeschw] == 80) //=80
    If(PlayerInfo[playerid][pGeschw] >= 80) // über 80
    {
    Dann soll hier was passieren
    }


    Aber wie kann man das so etwa machen ?
    Wenn man macht: if(IsPlayerFasterThen(playerid,80)) dann fragt man nur ab, ob er 80 fährt oder schneller.


    Aber ich will abfragt mit dem hier: >= oder mit dem hier: ==


    Wie geht das ?


    Hoffe auf Hilfe^^


    MfG
    Atta(Oo);

  • Bei meinem Fahrschul-System möchte ich in den Checkpoints checken (OnPlayerEnterCheckpoint) ob er 80km/h oder schneller fährt.
    Und wenn ja, soll eine Warnung kommen, oben in der mitte ACHTUNG Du bist zu schnell.
    Und es soll bei den Fahrschulwarns ++ gemacht werden.


    und am letzten Checkpoint wird abgefragt, ob er 3 Warns oder mehr hat, also ob er 3x zu schnell war.
    Wenn ja = durchgefallen mit dem Grund, du warst zu schnell (Max. 80km/h!)
    Und deswegen will ich abfragen ob er 81 oder schneller fährt.


    MfG
    Atta(Oo);

  • Versuchs mal so (ist ungetestet)


    stock getVehicleSpeed()
    {
    new vehicleid,Float:speed_x,Float:speed_y,Float:speed_z,Float:final_speed,speed_string[256],final_speed_int, Float:chealth;
    vehicleid = GetPlayerVehicleID(playerid);
    GetVehicleVelocity(vehicleid,speed_x,speed_y,speed_z);
    final_speed = floatsqroot(((speed_x*speed_x)+(speed_y*speed_y))+(speed_z*speed_z))*150; // 136.666667 = kmph // 85.4166672= mph
    final_speed_int = floatround(final_speed,floatround_round);
    return final_speed_int;
    }

  • Das mit der Anzeige will ich garnicht^^ das mache ich schon selbst...



    Versteht das niemand^^ ?
    Also:


    Ich will bei der Fahrschulprüfung abfragen, ob der Player mit dem Car IN einem Checkpoint (OnPLayerEnterCheckpoint) Schneller als 81 km/h oder 81 km/h fährt.


    Jetzt verstanden^^ ??


    //EDIT Firefox, emm da frage ich die Geschwdigkeit ab, aber nicht ob der Player 81 oder schneller fährt!


    //EDIT2
    Habe was gefunden, aber so einfach kann das nicht sein oder^^ ?
    forward Warning(playerid);
    public Warning(playerid)
    {
    new Float:Geschwindigkeit;
    new Float:x,Float:y,Float:z;
    GetVehicleVelocity(GetPlayerVehicleID(playerid),x,y,z);
    Geschwindigkeit = floatsqroot(x+x*y+y*z+z);
    if(Geschwindigkeit>=500)
    {
    // Bla
    }
    }


    MfG
    Atta(Oo);

    Einmal editiert, zuletzt von AttachObject(Oo); ()

  • AUch BuzZ hat es nicht verstanden^^


    ICH WILL KEIN TACHO UND KEINEN TEXTDRAW.


    NUR EINE RHEINE ABFRAGE OB DER SPIELR 81 km/h ODER SCHNELLER FÄHRT, MEHR NICHT.


    man man man^^


    MfG
    Atta(Oo);

  • Nein du hast es nicht verstanden!
    Wenn du ein Tacho hast, hast du sicher eine Geschwindigkeitsabfrage.
    So, damit das Tacho auch es ausgeben kann, brauch es ja die Geschwindigkeit!
    Und DIE GESCHWINDIGKEIT VOM TACHO kannst du für die Abfrage nehmen...


  • stock GetPlayerSpeed(playerid)
    {
    new Float:x,Float:y,Float:z;
    if(IsPlayerInAnyVehicle(playerid))
    GetVehicleVelocity(GetPlayerVehicleID(playerid),x,y,z);
    else
    GetPlayerVelocity(playerid,x,y,z);
    return floatround(floatsqroot(x*x+y*y+z*z)*100.0*1.6);
    }

    if(GetPlayerSpeed(playerid) >= 80)
    {
    //DURCHGEFALLEN!
    }


    So ungefähr sollte es gehen

  • Sooo...
    Und wie Frage ich den Autoschaden ab ?


    Ob der Schaden unter 900 ist ?
    1000.0 = Auto Heile keine Kratzer


    900.0 = ein wenig kaputt


    alles was unter 900 ist = durchgefallen.
    Das mit geschwindigkeit habe ich abgefragt, war supii ;)


    Geht das mit:
    GetVehicleHealth(vehicleid,=>5000)
    oder so ?


    Nur hier das noch bitte^^


    //EDIT ICH HABS SELBER RAUS^^


    MfG
    Atta(Oo);

    Einmal editiert, zuletzt von AttachObject(Oo); ()

  • Naja die Grundkenntnisse zu können wäre ja nicht schlecht gewesen...
    Sry wenn das jetzt "arschig" klingt, aber man wird doch wohl ne simpple "größer als" Abfrage ausführen können, wenn man das stock schon geliefert bekommt