Bedingung wird falsch berechnet

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
  • Das Problem ist, dass folgende Bedingung irgendwie immer als true eingestempelt wird:

    Zitat

    if(z <= lowz[playerid]+4.0)


    Wobei

    Zitat

    format(output,sizeof(output),"fin: z:%f , lowz: %f",z,lowz[playerid]);


    gleich

    Zitat

    fin: z:68.429588 , lowz: 3.117187

    (Beispiel)
    ist....


    Aber wie wir alle sehen können, ist z um einiges höher als lowz.... ?(


    P.S.: Wer keine Ahnung hat, schreibt hier auch bitte nichts... ;)

    2 Mal editiert, zuletzt von Trooper[Y] ()

  • Ach, ich meinte -4 :pinch:
    Aber hastes nit bemerkt ?


    Gesehen? ;)

  • Ja, du siehst, dass die Bedingung eigentlich falsch sein müsste !
    Aber der Code von if wird ja ausgeführt !
    Das ist das Problem !
    Z ist eindeutig größer, und die if abfrage soll nur ausgelöst werden, wenns größer ist, aber so ist es ja leider nicht :\

  • Du sagst :

    Zitat

    Z ist eindeutig größer, und die if abfrage soll nur ausgelöst werden, wenns größer ist, aber so ist es ja leider nicht :\


    if(z <= lowz[playerid]+4.0)
    {


    }


    Aber in dem fall fragst du ab ob z kleiner ist als lowz und nich ob z Größer ist als lowz


    sonst müsste es:


    if(z => lowz[playerid]+4.0)


    heißen


    Du möchtest du das er die if abfrage ausführt sobald z Größer ist aber warum fragst du ab ob z kleiner ist, ich versteh grad nicht was du genau meinst

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Also ich hab jez die Grundfrage nicht kapiert.... :whistling: Aber ich das so gemacht:
    Command:

    Spoiler anzeigen
     
    if(strcmp(cmd, "/trooper", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new Float:z = 68.429588;
    new Float:lowz = 3.117187;
    new Float:Var = 4.000000;
    new Float:NEWlowz = 3.117187+Var;
    if(z <= lowz+Var)
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Z ist KLEINER als lowz !");
    format(string, sizeof(string), "Werte: z = %f lowz = %f(%f)", z,lowz,NEWlowz);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    return 1;
    }
    else if(z >= lowz+Var)
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Z ist GRÖßER als lowz !");
    format(string, sizeof(string), "Werte: z = %f lowz = %f(%f)", z,lowz,NEWlowz);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    return 1;
    }
    }
    return 1;
    }


    Ergebniss:



    Fazit:
    Keine Ahnung ob du damit was anfangen kannst :D Aber lowz wird nicht gesetzt,er vergleicht nur obs größer wäre wenn sie denn addiert würden...
    Naja kein Plan :P