Problem bei der IF Abfrage

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
  • Moin Leute, ich habe ein Problem mit meinem Haussystem, woran ich momentan arbeite.


    Also, ich frage bei dem Laden der Häuser ab ob jemand das Haus besitzt, oder nicht wenn nicht soll ein Pickup mit der ID 1273 erstellt werden, und wenn ja eins mit der ID 1272 jedoch funktioniert es nicht, und alle Häuser bekommen die ID 1272....


    Hier ist der Ausschnitt des Teils.



    stock LoadHaeuser()
    {
    new string[4];
    for(new i; i<MAX_HAEUSER; i++)
    {
    valstr(string, i);
    HausInfo[i][pTitel] = mysql_GetString("haus", "titel", "id", string);
    HausInfo[i][pBesitzer] = mysql_GetString("haus", "besitzer", "id", string);
    HausInfo[i][pPreis] = mysql_GetInt("haus", "preis", "id", string);

    HausInfo[i][XEnter] = mysql_GetFloat("haus", "xeingang", "id", string);
    HausInfo[i][YEnter] = mysql_GetFloat("haus", "yeingang", "id", string);
    HausInfo[i][ZEnter] = mysql_GetFloat("haus", "zeingang", "id", string);
    if(HausInfo[i][pBesitzer] == 0)
    {
    AddStaticPickup(1273, 23, HausInfo[i][XEnter],HausInfo[i][YEnter],HausInfo[i][ZEnter],-1);
    }
    else
    {
    AddStaticPickup(1272, 23, HausInfo[i][XEnter],HausInfo[i][YEnter],HausInfo[i][ZEnter],-1);
    }
    }
    return 1;
    }

  • Lass dir doch einfach mal ..


    HouseInfo[i][pBesitzer]
    .. ausgeben und schaue nach, ob überhaupt etwas geladen wird. Wenn ja, dann wird es wohl an deiner Bedingung liegen, dann wäre es sinnvoll strcmp() und IsNull() zu verwenden.

  • danke, die Idee war garnicht so schlecht. So sieht die Ausgabe aus :


    [01.07.2012 11:37:26] 0
    [01.07.2012 11:37:26] Xivo
    [01.07.2012 11:37:26] 0
    [01.07.2012 11:37:26] 0
    [01.07.2012 11:37:26] 0
    [01.07.2012 11:37:26] 0
    [01.07.2012 11:37:26] (null)
    [01.07.2012 11:37:26] (null)
    [01.07.2012 11:37:26] (null)
    [01.07.2012 11:37:26] (null)
    [01.07.2012 11:37:26] (null)
    [01.07.2012 11:37:27] (null)
    [01.07.2012 11:37:27] (null)
    [01.07.2012 11:37:27] (null)
    [01.07.2012 11:37:28] (null)
    [01.07.2012 11:37:28] (null)
    [01.07.2012 11:37:28] (null)
    [01.07.2012 11:37:28] (null)
    [01.07.2012 11:37:28] (null)
    [01.07.2012 11:37:28] (null)


    Obwohl ich nur 6 Häuser habe, sprich die 5x "0" und 1x "Xivo"


    Die Abfrage bzw. Ausgabe so :



    new ausgabe[128];
    format(ausgabe,sizeof(ausgabe),"%s",HausInfo[i][pBesitzer]);
    print(ausgabe);



    //Das liegt daran weil ich MAX_HAEUSER auf 20 hatte, und deshalb ^^ soviele (null) teste ebend ob das Problem behoben ist!

  • Dein for-Schleife ist auch keine Gute Idee.Mit der for-Schleife gehst du ja davon aus,dass es in der Datenbank auch MAX_HAEUSER Einträge vorhanden sind. Für sowas nimmt man lieber eine while-Schleife und benutzt Andere MySQL Funktionen um die Tabelle solange durchzugehen,bis es keine Zeilen mehr gibt.

  • Ja, ich schreibe das Script nachher sofort um "mysql_num_rows"?


    Leider funktioniert das ganze jedoch auch nicht, die Häuser die den Besitzer "0" haben, gelten als Verkauft, obwohl das nicht so sollte :/


    Sonst noch jemand eine Idee... ?

  • Du hast ja noch nicht mal gesagt wie du feststellst,ob das Haus nicht verkauft ist. Die Sache ist ja sowieso,dass folgendes nicht gleich ist:
    "0" != 0
    Du müsstestest dabei entweder strcmp benutzen, oder als Trick strlen benutzen und auf die Länge 1 prüfen.

  • Dankeschön, das wars :)


    Meine Abfrage sieht nun so aus, wer vielleicht ähnliche Probleme hat, und wem das Helfen kann darf sich das gerne anschauen :



    new stringLength = strlen(HausInfo[i][pBesitzer]);


    if(stringLength == 1)
    {
    format(string,sizeof(string),"====================Haus Informationen %d====================\n =Titel: %s\n =Preis: %d", i, HausInfo[i][pTitel], HausInfo[i][pPreis]);
    ShowPlayerDialog(playerid, DIALOG_HAUSKAUFEN, DIALOG_STYLE_MSGBOX, "Haus Informationen", string, "Kaufen", "Abbrechen");
    }
    else
    {
    format(string,sizeof(string),"====================Haus Informationen %d====================\n =Titel: %s\n =Preis: %d\n =Besitzer: %s", i, HausInfo[i][pTitel], HausInfo[i][pPreis], HausInfo[i][pBesitzer]);
    ShowPlayerDialog(playerid, DIALOG_HAUSINFO, DIALOG_STYLE_MSGBOX, "Haus Informationen", string, "Abbrechen", "Abbrechen");
    }