buyhouse 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
  • Guten Tag Community,


    wenn ich ein Haus ingame kaufen und den Server restarte kann ich trotz ein weiteres Haus kaufen. Ich denke es liegt am Laden aber bin mir da halt noch nicht so sicher.


    Hier sind die 2 Codes:

    Spoiler anzeigen
    public OnHausLoad(hausid)
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,mysqlconnect);
    if(!num_rows)return 1;
    for(new i = 0; i < num_rows; i++)
    {
    new id = getFreeHausID();
    HausInfo[id][hID] = cache_get_field_content_int(i,"id",mysqlconnect);
    HausInfo[id][hBesitzer] = cache_get_field_content(i,"Besitzer",HausInfo[id][hBesitzer],mysqlconnect);
    HausInfo[id][hCreated] = cache_get_field_content_int(i,"Created",mysqlconnect);
    HausInfo[id][hEnterX] = cache_get_field_content_float(i,"EnterX",mysqlconnect);
    HausInfo[id][hEnterY] = cache_get_field_content_float(i,"EnterY",mysqlconnect);
    HausInfo[id][hEnterZ] = cache_get_field_content_float(i,"EnterZ",mysqlconnect);
    HausInfo[id][hLevel] = cache_get_field_content_int(i,"Level",mysqlconnect);
    HausInfo[id][hPreis] = cache_get_field_content_int(i,"Preis",mysqlconnect);
    HausInfo[id][hOwned] = cache_get_field_content_int(i,"Owned",mysqlconnect);
    if(HausInfo[id][hOwned] == 1)
    {
    new string2[256];
    format(string2,sizeof(string2),"HausInfo:\n"#HTML_ORANGE"Hausnummer: "#HTML_WHITE"%i\n"#HTML_ORANGE"Besitzer: "#HTML_WHITE"%s\n"#HTML_ORANGE"Level: "#HTML_WHITE"%i",HausInfo[id][hID],HausInfo[id][hBesitzer],HausInfo[id][hLevel]);
    HausInfo[id][hLabel] = Create3DTextLabel(string2,COLOR_WHITE,HausInfo[id][hEnterX],HausInfo[id][hEnterY],HausInfo[id][hEnterZ],20,0,1);
    HausInfo[id][hPickup] = CreatePickup(1239,1,HausInfo[id][hEnterX],HausInfo[id][hEnterY],HausInfo[id][hEnterZ],0);
    }
    else
    {
    new string[256];
    format(string,sizeof(string),"Haus zum Verkauf:\n"#HTML_ORANGE"Hausnummer: "#HTML_WHITE"%i\n"#HTML_ORANGE"Preis: "#HTML_WHITE"%i\n"#HTML_ORANGE"Level: "#HTML_WHITE"%i\nKaufen: /buyhouse ",HausInfo[id][hID],HausInfo[id][hPreis],HausInfo[id][hLevel]);
    HausInfo[id][hLabel] = Create3DTextLabel(string,COLOR_WHITE,HausInfo[id][hEnterX],HausInfo[id][hEnterY],HausInfo[id][hEnterZ],20,0,1);
    HausInfo[id][hPickup] = CreatePickup(1273,1,HausInfo[id][hEnterX],HausInfo[id][hEnterY],HausInfo[id][hEnterZ],0);
    }
    }
    return 1;
    }

    Spoiler anzeigen
    ocmd:buyhouse(playerid,params[])
    {
    #pragma unused params
    if(SpielerInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GREY,"Du bist nicht befugt");
    if(SpielerInfo[playerid][pTazer] == 1)return SendClientMessage(playerid,COLOR_GREY,"Du bist getazert.");
    for(new i = 0; i< sizeof(HausInfo); i++)
    {
    if(SpielerInfo[playerid][pHausKey] != 0 && strcmp(HausInfo[i][hBesitzer],SpielerName(playerid),true)==0)return SendClientMessage(playerid,COLOR_GREY,"Du besitzt schon ein Haus.");
    }
    new string[128];
    for(new i = 0; i < sizeof(HausInfo); i++)
    {
    if(HausInfo[i][hCreated] == 1)
    {
    if(IsPlayerInRangeOfPoint(playerid,2.0,HausInfo[i][hEnterX],HausInfo[i][hEnterY],HausInfo[i][hEnterZ]))
    {
    if(GetPlayerMoney(playerid) < HausInfo[i][hPreis])return SendClientMessage(playerid,COLOR_GREY,"Du hast nicht genung Geld auf der Hand");
    if(GetPlayerLevel(playerid) < HausInfo[i][hLevel])return SendClientMessage(playerid,COLOR_GREY,"Dein Level ist zu niedrig");
    if(HausInfo[i][hOwned] == 1)return SendClientMessage(playerid,COLOR_GREY,"Das Haus ist schon verkauft");
    if(SpielerInfo[playerid][pHausKey] !=0 && strcmp(HausInfo[i][hBesitzer],SpielerName(playerid),true)==0)return SendClientMessage(playerid,COLOR_GREY,"Du besitzt schon ein Haus");
    format(string,sizeof(string),"Du hast das Haus für %i$ gekauft!",HausInfo[i][hPreis]);
    SendClientMessage(playerid,COLOR_GREEN,string);
    GivePlayerMoney(playerid,-HausInfo[i][hPreis]);
    HausInfo[i][hOwned] = 1;
    SpielerInfo[playerid][pHausKey] = HausInfo[i][hID];
    format(HausInfo[i][hBesitzer],MAX_PLAYER_NAME,"%s",SpielerName(playerid));
    SaveHaus(i);
    return 1;
    }
    }
    }
    return SendClientMessage(playerid,COLOR_GREY,"Du bist an keinem Haus");
    }

  • Auf den ersten Blick würde ich sagen, dass es an deiner if-Abfrage liegt:

    if(SpielerInfo[playerid][pHausKey] !=0 && strcmp(HausInfo[i][hBesitzer],SpielerName(playerid),true)==0)return SendClientMessage(playerid,COLOR_GREY,"Du besitzt schon ein Haus");


    Versuch es mal so:

    if(SpielerInfo[playerid][pHausKey] !=0)return SendClientMessage(playerid,COLOR_GREY,"Du besitzt schon ein Haus");