Text wird zichmal wiederholt (ungewollt)

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
  • VarBesitzer ist ja keine Variable, erstell einfach ne Variable oben. die setzt du bei ocmd:kaufen auf 1 und dann statt beim abspeichern
    format(query, sizeof(query), "UPDATE `Houses` SET `VarBesitzer`='1' AND `Besitzer`='%s' WHERE `HausID` = '%d'",PlayerName[playerid],HausInfo[i][HausDB]);
    das zu machen, machst du das:
    format(query, sizeof(query), "UPDATE `Houses` SET `VarBesitzer`='%d' AND `Besitzer`='%s' WHERE `HausID` = '%d'",HausInfo[i][Verkauft],PlayerName[playerid],HausInfo[i][HausDB]);

  • So?



    #define MAX_HOUSES 50
    enum HausDaten
    {
    hBesitzer[MAX_PLAYER_NAME],
    hKaufpreis,
    hVarBesitzer,
    Float: hIconX,
    Float: hIconY,
    Float: hIconZ,
    hIconID,
    Float: hSpawnX,
    Float: hSpawnY,
    Float: hSpawnZ,
    hInteriorID,
    HausDB,
    Verkauft
    }
    new HausInfo[MAX_HOUSES][HausDaten];


    Muss da nochwas in die Tabelle (Struktur= ?

  • jop, und jetzt machst du bei ocmd:kaufen die variable auf 1 und ersetzt das halt wie in meinem vorherigen post.
    Dann haust du die abfrage unter if(!IsPlayerInRangeOfPoint...

    if(!HausInfo[i][Verkauft]) return SendClientMessage(playerid,COLOR_BLASSRED,"Das Haus ist schon verkauft.");

  • Seit du das mit der Variable meinst blick ich echt nicht mehr durch xD :D
    Habe nur oben bei dem enum das hinzugefügt... muss noch mehr irgendwo hin?


    Muss ich in der Tabelle "Verkauft" einfügen als Intenger?
    Und bei LoadHouses(); ?


    ?(

  • die Variable Verkauft, ist sozusagen VarBesitzer, nimm das hier:

    ocmd:kaufen(playerid,params[])
    {
    new query[1000], string[300], string2[500];
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,Float:X,Float:Y,Float:Z);
    for(new i=0;i<MAX_HOUSES;i++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,2,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ])) return SendClientMessage(playerid,COLOR_BLASSRED,"Hier kannst du kein Haus kaufen, du musst dich vor einem Haus stellen.");
    if(!HausInfo[i][Verkauft]) return SendClientMessage(playerid,COLOR_BLASSRED,"Das Haus ist schon verkauft.");
    if(GetPlayerMoney(playerid) <= HausInfo[i][hKaufpreis]) return SendClientMessage(playerid,COLOR_BLASSRED,"Du hast nicht genug Geld um dir dieses Haus zu kaufen.");
    if(GetPlayerScore(playerid) <= 3) return SendClientMessage(playerid,COLOR_BLASSRED,"Du benötigt mindestens Level 3 um dir ein eigenes Haus zu kaufen.");
    if(SpielerInfo[playerid][pHaus] != 1) return SendClientMessage(playerid,COLOR_BLASSRED,"Du besitzt schon ein eigenes Haus, bitte verkaufe es vorher. [Befehle: /befehle]");
    HausInfo[i][Verkauft] = 1;
    format(query, sizeof(query), "UPDATE `Houses` SET `VarBesitzer`='%d' AND `Besitzer`='%s' WHERE `HausID` = '%d'",HausInfo[i][Verkauft], PlayerName[playerid],HausInfo[i][HausDB]);
    mysql_query(query);
    format(query, sizeof(query), "UPDATE `Accounts` SET `Haus`='1' WHERE `Benutzername` = '%s'",PlayerName[playerid]);
    mysql_query(query);
    format(string,sizeof(string),"Du hast dir ein Haus für {FFCC00}$%d{FFFFFF} gekauft. Hausnummer |%d|",HausInfo[i][hKaufpreis],HausInfo[i][HausDB]);
    SendClientMessage(playerid,COLOR_WHITE,string);
    SendClientMessage(playerid,COLOR_WHITE,"Neue Befehle verfügbar [/befehle]");
    Delete3DTextLabel(HausLabel[i]);
    format(string2,sizeof(string2),"--== Verkauftes Haus ==--\nBesitzer: {FFCC00}%s{FFFFFF}",HausInfo[playerid][hBesitzer]);
    HausLabel[i] = Create3DTextLabel(string2,COLOR_WHITE,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ],15,0,1);
    Update3DTextLabelText(HausLabel[i],COLOR_WHITE,string2);
    GivePlayerMoney(playerid,-HausInfo[i][hKaufpreis]);
    return 1;
    }
    return 1;
    }

  • wenn du das haus erstellst die verkauft variable auf 0, wenn einer das haus kauft auf 1


    Hat das was mit der Tabelle zu tun?
    Kann das Haus immer und immer wieder kaufen.
    Dort steht Besitzer: Niemand normal müsste mein Name stehen.


    Mfg, Markus

  • Hab übersehen, das du die Variable hVarBesitzer hast :D jz müsste alles gehen, check mal und ersetz es :)



    #define MAX_HOUSES 50
    enum HausDaten
    {
    hBesitzer[MAX_PLAYER_NAME],
    hKaufpreis,
    hVarBesitzer,
    Float: hIconX,
    Float: hIconY,
    Float: hIconZ,
    hIconID,
    Float: hSpawnX,
    Float: hSpawnY,
    Float: hSpawnZ,
    hInteriorID,
    HausDB
    }
    new HausInfo[MAX_HOUSES][HausDaten];


    ocmd:kaufen(playerid,params[])
    {
    new query[1000], string[300], string2[500];
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,Float:X,Float:Y,Float:Z);
    for(new i=0;i<MAX_HOUSES;i++)
    {
    if(!IsPlayerInRangeOfPoint(playerid,2,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ])) return SendClientMessage(playerid,COLOR_BLASSRED,"Hier kannst du kein Haus kaufen, du musst dich vor einem Haus stellen.");
    if(HausInfo[i][hVarBesitzer] != 1) return SendClientMessage(playerid,COLOR_BLASSRED,"Das Haus ist schon verkauft.");
    if(GetPlayerMoney(playerid) <= HausInfo[i][hKaufpreis]) return SendClientMessage(playerid,COLOR_BLASSRED,"Du hast nicht genug Geld um dir dieses Haus zu kaufen.");
    if(GetPlayerScore(playerid) <= 3) return SendClientMessage(playerid,COLOR_BLASSRED,"Du benötigt mindestens Level 3 um dir ein eigenes Haus zu kaufen.");
    if(SpielerInfo[playerid][pHaus] != 1) return SendClientMessage(playerid,COLOR_BLASSRED,"Du besitzt schon ein eigenes Haus, bitte verkaufe es vorher. [Befehle: /befehle]");
    HausInfo[i][hVarBesitzer] = 1;
    HausInfo[i][hBesitzer] = PlayerName[playerid];
    format(query, sizeof(query), "UPDATE `Houses` SET `VarBesitzer`='%d' AND `Besitzer`='%s' WHERE `HausID` = '%d'",HausInfo[i][hVarBesitzer], PlayerName[playerid],HausInfo[i][HausDB]);
    mysql_query(query);
    format(query, sizeof(query), "UPDATE `Accounts` SET `Haus`='1' WHERE `Benutzername` = '%s'",PlayerName[playerid]);
    mysql_query(query);
    format(string,sizeof(string),"Du hast dir ein Haus für {FFCC00}$%d{FFFFFF} gekauft. Hausnummer |%d|",HausInfo[i][hKaufpreis],HausInfo[i][HausDB]);
    SendClientMessage(playerid,COLOR_WHITE,string);
    SendClientMessage(playerid,COLOR_WHITE,"Neue Befehle verfügbar [/befehle]");
    Delete3DTextLabel(HausLabel[i]);
    format(string2,sizeof(string2),"--== Verkauftes Haus ==--\nBesitzer: {FFCC00}%s{FFFFFF}",HausInfo[playerid][hBesitzer]);
    HausLabel[i] = Create3DTextLabel(string2,COLOR_WHITE,HausInfo[i][hIconX],HausInfo[i][hIconY],HausInfo[i][hIconZ],15,0,1);
    Update3DTextLabelText(HausLabel[i],COLOR_WHITE,string2);
    GivePlayerMoney(playerid,-HausInfo[i][hKaufpreis]);
    return 1;
    }
    return 1;
    }

  • Okay, ich teste es gerade.


    //E


    Ingame funktioniert nun alles nur wenn ich in die DB kucke steht bei Besitzer noch immer "Niemand" anstatt "Markus" und die VarBesitzer ist nicht auf 1 ...
    =(

  • Ich habs schon es funktioniert auch nur ich kann es nicht verkaufen.
    An dieser Zeile hagt es InGame
    if(HausInfo[i][hBesitzer] != playerid) return SendClientMessage(playerid,COLOR_BLASSRED,"Du bist nicht der Besitzer von diesem Haus.");

  • Wollte das so machen


    if(Haus.....[hBesitzer] != PlayerName[playerid]) return Send....


    Nur dann bekomme ich einen Fehler bei PlayerName...

  • Danke :)
    mit dem strcmp zeugs hatte ich auch direkt nie was zu tun ich benutze für Parameter ocmd aber strcmp naja... :D