Hauskauf MYSQL kleines Problem

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
  • Hallo,


    wenn ich /hauskaufen wird in die Tabelle der Häuser der Hausbesitzer des Hauses nicht auf die KontoID vom User gesetzt und der Hauskäufer bekommt HausID 1 eingetragen ob wohl die ID des gekauften Hauses 0 ist. Hier mein Befehl:

    dcmd_hauskaufen(playerid,params[])
    {
    #pragma unused params
    new string[256];
    for(new i=0; i<MAX_PLAYER_HAUS; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,2,Hauser[i][H_X],Hauser[i][H_Y],Hauser[i][H_Z]))
    {//{FF0000} = ROT
    format(string,sizeof(string),"Hallo und vielen Dank für Ihr Interesse!\nDas Mindeslevel beläuft sich auf %d.\nDas Haus kostet %d€\nDrücken Sie Fortfahren um zur Auswahl der Zahlungsart zu kommen.\nDrücken Sie Abbrechen um abzubrechen.",Hauser[i][MinLevel],Hauser[i][Preis]);
    ShowPlayerDialog(playerid,DIALOG_HAUSKAUF,DIALOG_STYLE_MSGBOX,"Hauskauf",string,"Fortfahren","Abbrechen");
    }
    else
    {
    //SPAM
    }
    }
    return 1;
    }

    Dann werden ein paar Dialoge durchgenommen und nach dem letzten Dialog soll er dann die Aktionen ausführen:

    if(dialogid == DIALOG_HAUSKAUF_BARBESTAETIGEN)
    {
    if(response)
    {
    for(new i=0; i<MAX_PLAYER_HAUS; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,2,Hauser[i][H_X],Hauser[i][H_Y],Hauser[i][H_Z]))
    {
    if(PlayerInfo[playerid][pHausID] == -1)
    {
    new str[128];
    PlayerInfo[playerid][pMoney] -= Hauser[i][Preis];
    Hauser[i][Besitzer] = PlayerInfo[playerid][p_id];
    PlayerInfo[playerid][pHausID] = Hauser[i][Besitzer];
    Hauser[i][ID] = PlayerInfo[playerid][pHausID];
    PlayerPlaySound(playerid,1062,Hauser[i][H_X],Hauser[i][H_Y],Hauser[i][H_Z]);
    GameTextForPlayer(playerid,"~g~Glückwunsch!~w~Haus gekauft.",5,3);
    format(str,sizeof(str),"Ihnen wurden %d€ Bargeld abgezogen.",Hauser[i][Preis]);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,str);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Sie sind bereits Eigentümer eines Hauses.");
    }
    }
    }
    }
    else
    {
    //NIX
    }
    return 1;
    }


    Hoffe mir kann jemand helfen, mit freundlichem Gruß,
    SebMcpepp

  • und der Hauskäufer bekommt HausID 1 eingetragen

    Bitte sorgfältiger lesen.


    //edit:


    Habe mal etwas geändert, nun wird beim Spieler die HausID auf 19 gestellt anstatt auf 0. Ich habe nur ein Haus in meiner Tabelle deshalb müsste HausID ja 0 sein. Hier die Änderung


    //EDIT2:


    Habe noch etwas geändert, nun wird die ID vom Account richtig gespeichert in der Tabelle, aber die HausID wird nicht in der Spalte vom Spieler geändert:

    if(dialogid == DIALOG_HAUSKAUF_BARBESTAETIGEN)
    {
    if(response)
    {
    for(new i=0; i<MAX_PLAYER_HAUS; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid,2,Hauser[i][H_X],Hauser[i][H_Y],Hauser[i][H_Z]))
    {
    if(PlayerInfo[playerid][pHausID] == -1)
    {
    new str[128];
    new query[128],query2[128];
    format(query, sizeof(query), "UPDATE Hauser SET Besitzer = '%d' WHERE ID = '%d'",PlayerInfo[playerid][p_id],i);
    mysql_tquery(handle,query);
    format(query2, sizeof(query2), "UPDATE users SET hausid = '%d' WHERE id = '%d'",Hauser[i][ID],PlayerInfo[playerid][p_id]);
    mysql_tquery(handle,query2);
    PlayerPlaySound(playerid,1062,Hauser[i][H_X],Hauser[i][H_Y],Hauser[i][H_Z]);
    GameTextForPlayer(playerid,"~g~Glückwunsch!~w~Haus gekauft.",2000,3);
    format(str,sizeof(str),"Ihnen wurden %d€ Bargeld abgezogen.",Hauser[i][Preis]);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,str);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Sie sind bereits Eigentümer eines Hauses.");
    }
    }
    }
    }
    else
    {
    //NIX
    }
    return 1;
    }


    Mfg,
    SebMcpepp

    2 Mal editiert, zuletzt von SebMcpepp ()

  • Also ich weiß nicht aber bei meinen bisherigen sql arbeiten habe ich nicht "ID" einma groß einmal klein geschrieben.
    Noch dazu finde ich dein Define "MAX_PLAYER_HAUS" falsch definiert. Denn wenn das nur auf 5 stehen sollte geht deine for schleife nicht alle häuser durch. Würde ich zur verständnis umbennen.

  • Ehm, würde das auf 5 stehen würde das sehr wohl alle Häuser durchgehen da ich nur 2 erstellt habe. Warum sollte ich das umbennen? Das wird ganz normal oben im Script definiert, weiß nicht was du für ein Problem mit meiner Max-Häuserabfrage hast^^ Ich weiß auch nicht wo du siehst dass ich id einmal klein und einmal groß schreibe.


    Bitte kann mir jemand helfen


    hier sollen die Daten geschrieben werden.
    Häuser sind oben per '#define MAX_PLAYER_HAUS 50' definiert


    Hoffe irgendwer könnt mir noch nen Denkanstoß oder ähnliches geben.

  • In deinem Haus query hast du ID groß geschrieben und in deinem user query klein.
    Die Frage ist ob deine SQL Tabelle genauso ist. Wenn ja nehm ich mein verdacht zurück.


    Ansonsten kann ich keinen fehler feststellen.

  • In deinem Haus query hast du ID groß geschrieben und in deinem user query klein.

    ehm ist ja wohl klar warum ich das mache?:

    [list=1][*]enum pDataEnum[*]
    {[*] p_id,[*] bool:pLoggedIn,
    [*] pName[MAX_PLAYER_NAME],
    [*] pLevel,
    [*] pAdmin,
    [*] pMoney,
    [*] pBankmoney,
    [*] pKills,
    [*] pDeaths,
    [*] pTeam,
    [*] pFrak,
    [*] pMember,
    [*] pLeader,
    [*] pRang,
    [*] pSkin,
    [*] pHausID
    [*]}[*]
    [*]#define MAX_PLAYER_HAUS 50
    [*]enum Hausenum
    [*]{
    [*] ID,
    [*] IntID,
    [*] MinLevel,
    [*] Preis,
    [*] Besitzer,
    [*] Float:H_X,
    [*] Float:H_Y,
    [*] Float:H_Z,
    [*] Float:H_R,
    [*] Stadt,
    [*] Geld
    [*]}
    [/list]



    Du speicherst die id vom enum in der ersten query ab und nicht die hausid

    Ja ich will doch die HausID auch erst im query2 abspeichern?^^


    Nochjemand vielleicht ne Lösung?


    Mit freundlichem Gruß,
    SebMcpepp




    //PUSH

    2 Mal editiert, zuletzt von SebMcpepp () aus folgendem Grund: Push / Bitte helft mir :D