MySQL haus system (Kauf FEHLER)

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 liebe com, ich habe einen Fehler irgendwo gemacht aber finde ihn einfach nicht könnt ihr mir villt helfen? Jedesmal wenn ich ein haus kaufen will kann ich nur das erste haus aus der db kaufen und bei den anderen steht du bist nicht in der nähe eines hauses.


    hatPlayerHaus(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(!hInfo[i][h_id])continue;
    if(!strcmp(name, hInfo[i][h_besitzer],true))return i;
    }
    return 0;
    }


    getPlayerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }


    SaveHaus(uid)
    {
    new query[164];
    format(query,sizeof(query),"UPDATE houses SET besitzer='%s', preis='%i' WHERE id='%i'",hInfo[uid][h_besitzer],hInfo[uid][h_preis],hInfo[uid][h_db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }


    //Commands
    ocmd:buyhaus(playerid,params[])
    {
    if(hatPlayerHaus(playerid))return SendClientMessage(playerid,rot,"Du hast berreits ein Haus!");
    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(!hInfo[i][h_id])continue;
    if(IsPlayerInRangeOfPoint(playerid,2,hInfo[i][h_x],hInfo[i][h_y],hInfo[i][h_z]))
    {
    if(!strlen(hInfo[i][h_besitzer]))
    {
    if(GetPlayerMoney(playerid)<hInfo[i][h_preis])return SendClientMessage(playerid,rot,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid,-hInfo[i][h_preis]);
    strmid(hInfo[i][h_besitzer], getPlayerName(playerid),0, MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    updatehaus(i);
    SaveHaus(i);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,rot,"Dieses Haus steht nicht zum Verkauf!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,rot,"Du bist nicht in der nähe eines Hauses!");
    return 1;
    }
    }
    return 1;
    }


    ocmd:sellhaus(playerid,params[])
    {
    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(!hInfo[i][h_id])continue;
    if(IsPlayerInRangeOfPoint(playerid,5,hInfo[i][h_x],hInfo[i][h_y],hInfo[i][h_z]))
    {
    if(!strlen(hInfo[i][h_besitzer]))continue;
    if(!strcmp(hInfo[i][h_besitzer],getPlayerName(playerid),true))
    {
    GivePlayerMoney(playerid,hInfo[i][h_preis]/2);
    strmid(hInfo[i][h_besitzer], "",0, 0,0);
    updatehaus(i);
    SaveHaus(i);
    new string[164];
    format(string,sizeof(string),"Haus Verkauft! Du hast die Hälfte des Kaufpreises wieder beckommen (%i$)",hInfo[i][h_preis]/2);
    SendClientMessage(playerid,gelb,string);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,rot,"Das Haus gehört nicht dir!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,rot,"Du bist nicht in der nähe eines Hauses!");
    return 1;
    }
    }
    return 1;
    }

  • ocmd:buyhaus(playerid,params[])
    {
    if(hatPlayerHaus(playerid))return SendClientMessage(playerid,rot,"Du hast berreits ein Haus!");
    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(!hInfo[i][h_id])continue;
    if(IsPlayerInRangeOfPoint(playerid,2,hInfo[i][h_x],hInfo[i][h_y],hInfo[i][h_z]))
    {
    if(!strlen(hInfo[i][h_besitzer]))
    {
    if(GetPlayerMoney(playerid)<hInfo[i][h_preis])return SendClientMessage(playerid,rot,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid,-hInfo[i][h_preis]);
    strmid(hInfo[i][h_besitzer], getPlayerName(playerid),0, MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    updatehaus(i);
    SaveHaus(i);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,rot,"Dieses Haus steht nicht zum Verkauf!");
    return 1;
    }
    }
    }
    return SendClientMessage(playerid,rot,"Du bist nicht in der nähe eines Hauses!");
    }


    ocmd:sellhaus(playerid,params[])
    {
    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(!hInfo[i][h_id])continue;
    if(IsPlayerInRangeOfPoint(playerid,5,hInfo[i][h_x],hInfo[i][h_y],hInfo[i][h_z]))
    {
    if(!strlen(hInfo[i][h_besitzer]))continue;
    if(!strcmp(hInfo[i][h_besitzer],getPlayerName(playerid),true))
    {
    GivePlayerMoney(playerid,hInfo[i][h_preis]/2);
    strmid(hInfo[i][h_besitzer], "",0, 0,0);
    updatehaus(i);
    SaveHaus(i);
    new string[164];
    format(string,sizeof(string),"Haus Verkauft! Du hast die Hälfte des Kaufpreises wieder beckommen (%i$)",hInfo[i][h_preis]/2);
    SendClientMessage(playerid,gelb,string);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,rot,"Das Haus gehört nicht dir!");
    return 1;
    }
    }
    }
    return SendClientMessage(playerid,rot,"Du bist nicht in der nähe eines Hauses!");
    }


    Das lag an der Schleife, weil du dort nach dem ersten Haus gleich ein return drinnen hattest.