Abfrage durcheinander?

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 Leute,


    ich habe ein Problem mit dieser Abfrage in einem 1-sekündigem Timer (der sich jederzeit wiederholt):


    if(AutoPruf[i] == 1 || BikePruf[i] == 1 || LKWPruf[i] == 1)
    {
    if(IsPlayerInAnyVehicle(i))
    {
    new fahrzeug = GetPlayerVehicleID(i);
    new geschwindigkeit = GetPlayerSpeed(i);
    if(geschwindigkeit > 85)
    {
    if(PrufFehler[i] == 4)
    {
    SCM(i,ROT,"Du hast 5 Fehler gemacht und bist somit durch die Prüfung gefallen!");
    SCM(i,ROT,"Versuche das nächste mal langsamer zu fahren!");
    AutoPruf[i] = 0;
    BikePruf[i] = 0;
    LKWPruf[i] = 0;
    PrufFehler[i] = 0;
    s_SetVehicleToRespawn(fahrzeug,-1);
    PlaySound(i,5201);
    s_SetPlayerPos(i,2433.8877,-2132.1987,13.5469);
    return 1;
    }
    else
    {
    PrufFehler[i] ++;
    PlaySound(i,5201);
    SCM(i,F_O,"Fehler! Halte dich an die Geschwindigkeit von 80km/h!");
    SendClientMessagef(i,F_O,"Fehler insgesamt: %i von 5.",PrufFehler[i]);
    }
    }
    }
    }


    Speed Stock:



    stock GetPlayerSpeed(playerid)
    {
    new Float:ST[4];
    if(IsPlayerInAnyVehicle(playerid))
    GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]);
    else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]);
    ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 179.28625;
    return floatround(ST[3]);
    }



    Undzwar wird jede Sekunde ein Fehlerpunkt addiert...
    Also ich glaube er hat dann ein Problem mit der Abfrage (GetPlayerSpeed) !

    Meine Werke

  • Das, was du als 85 verstehst, muss nicht unbedingt bei der Funktion als 85 raus kommen, das kommt immer auf die Formel an.
    Füge vor:
    if(geschwindigkeit > 85)
    mal das ein:
    printf("geschwindigkeit (%d): %d", i, geschwindigkeit);


    Dann weißt du was da stehen muss (im if), wenn du wirklich zu schnell fährst.


    Woran erkennst du eigentlich, dass er 85 fährt? Ggf. kannst du ja einfach die Berechnung von dort verwenden.

  • Null kann nicht sein, dann würde ja diese Abfrage gar nicht passiert werden
    if(geschwindigkeit > 85)
    Sprich du kannst auch keinen Fehler bekommen.


    Achte auf die playerid in Klammern, stimmt die? Hast du es von der Reihenfolge her richtig im Code?