Dynamisches Haussystem

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,


    ich bin momentan an der arbeit eines Haussystems aber leider habe ich probleme und zwar wenn ich ein Häuser erstelle wird aber immer nur 1 Haus erstellt.
    Wenn einer ein Haus kauft wird er nicht in die Datenbank eingetragen


    ocmd:ch(playerid,params[])
    {
    for(new i = 1; i < MAX_HAUSER; i++)
    {
    if(Hauser[i][pCreated] == 0)
    {
    new query[256];
    format(query, sizeof(query), "INSERT INTO `haus` (id) VALUES ('%d')", i);
    mysql_query(query);
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    CreateHaus(i,X,Y,Z,1,0);
    new string[128];
    format(string,sizeof(string),"ID: %d\nDas Haus ist zum Verkaufen\nPreis: %d\nLevel: %d",i,Hauser[i][pPrice],Hauser[i][pLevel]);
    Create3DTextLabel(string, 0x008080FF, X, Y, Z, 40.0, 0, 0);
    SaveHaus(i);
    return 1;
    }
    }
    return 1;
    }
    ocmd:bh(playerid,params[])
    {
    for(new i = 0; i < MAX_HAUSER; i++)
    {
    if(Hauser[i][pCreated] == 1)
    {
    if(IsPlayerInRangeOfPoint(playerid,5.0,Hauser[i][pEnterX],Hauser[i][pEnterY],Hauser[i][pEnterZ]))
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,24);
    strmid(Hauser[i][pOwner],name, 0, strlen(name), 255);
    new query[128];
    format(query,sizeof(query), "UPDATE `haus` SET `Besitzer` = '%s', WHERE `id` = '%d'", Hauser[i][pOwner],i);
    mysql_query(query);
    SaveHaus(i);
    return 1;
    }
    }
    }
    return 1;
    }


    stock CreateHaus(hausid,Float:X,Float:Y,Float:Z,level,price)
    {
    strmid(Hauser[hausid][pOwner],"Niemand",0,strlen("Niemand"),24);
    Hauser[hausid][pPrice] = price;
    Hauser[hausid][pEnterX] = 0;
    Hauser[hausid][pEnterY] = 0;
    Hauser[hausid][pEnterZ] = 0;
    Hauser[hausid][pExitX] = X;
    Hauser[hausid][pExitY] = Y;
    Hauser[hausid][pExitZ] = Z;
    Hauser[hausid][pLevel] = level;
    Hauser[hausid][plock] = 1;
    Hauser[hausid][pInt] = 0;
    Hauser[hausid][pMieter] = 0;
    Hauser[hausid][pMiete] = 0;
    Hauser[hausid][pRentable] = 0;
    return 1;
    }


    stock SaveHaus(haus)
    {
    if(Hauser[haus][pCreated] == 1)
    {
    new query[256];
    format(query,sizeof(query),"UPDATE `haus` SET `Besitzer` = '%s' WHERE `id` = '%d'",Hauser[haus][pOwner],haus);
    mysql_query(query);
    printf("Es wurden %d Häuser gespeichert",haus);
    }
    return 1;
    }

    Einmal editiert, zuletzt von Master147 ()

  • probiers so

    ocmd:ch(playerid,params[])
    {
    for(new i = 1; i < MAX_HAUSER; i++)
    {
    if(Hauser[i][pCreated] == 1)continue;
    new query[256];
    format(query, sizeof(query), "INSERT INTO `haus` (id) VALUES ('%d')", i);
    mysql_query(query);
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    CreateHaus(i,X,Y,Z,1,0);
    new string[128];
    format(string,sizeof(string),"ID: %d\nDas Haus ist zum Verkaufen\nPreis: %d\nLevel: %d",i,Hauser[i][pPrice],Hauser[i][pLevel]);
    Create3DTextLabel(string, 0x008080FF, X, Y, Z, 40.0, 0, 0);
    SaveHaus(i);
    return 1;
    }
    return 1;
    }

  • Es wird immer noch nur 1 Haus erstellt


    so müsste es aber dann gehen, sonst weiß ich auch nich weiter..

    ocmd:ch(playerid,params[])
    {
    for(new i = 1; i < MAX_HAUSER; i++)
    {
    if(Hauser[i][pCreated] == 1)continue;
    new query[256];
    format(query, sizeof(query), "INSERT INTO `haus` (id) VALUES ('%d')", i);
    mysql_query(query);
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    CreateHaus(i,X,Y,Z,1,0);
    new string[128];
    format(string,sizeof(string),"ID: %d\nDas Haus ist zum Verkaufen\nPreis: %d\nLevel: %d",i,Hauser[i][pPrice],Hauser[i][pLevel]);
    Create3DTextLabel(string, 0x008080FF, X, Y, Z, 40.0, 0, 0);
    Hauser[i][pCreated] = 1;
    SaveHaus(i);
    return 1;
    }
    return 1;
    }


  • hier hast was von meinem haussystem
    du bkannst die posy mit nem stock abfragen, ist eig einfacher.

    stock IsHaus(playerid)
    {
    new i=0;
    while(i != MAX_HAUS)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, HausInfo[i][X], HausInfo[i][Y], HausInfo[i][Z]))
    {
    return i;
    }
    i++;
    }
    return -1;
    }//musst nur noch umändern

    dann kannst du es so in einem befehl anwenden

    ocmd:bh(playerid,params[])
    {
    new id = IsHaus(playerid);
    if(id != -1)
    {
    if(Hauser[i][pCreated] == 1)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,24);
    strmid(Hauser[i][pOwner],name, 0, strlen(name), 255);
    new query[128];
    format(query,sizeof(query), "UPDATE `haus` SET `Besitzer` = '%s', WHERE `id` = '%d'", Hauser[id][pOwner],id);
    mysql_query(query);
    SaveHaus(i);
    return 1;
    }
    }
    return 1;
    }

    probiers mal aus


    //e noch eben was verändert

  • okay dann probiere es mal mit dem namen so:
    sonst weiß ich nicht weiter



    ocmd:bh(playerid,params[])
    {
    new id = IsHaus(playerid);
    if(id != -1)
    {
    if(Hauser[i][pCreated] == 1)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,24);
    Hauser[id][pOwner] = name;
    new query[128];
    format(query,sizeof(query), "UPDATE `haus` SET `Besitzer` = '%s', WHERE `id` = '%d'", Hauser[id][pOwner],id);
    mysql_query(query);
    SaveHaus(id);
    return 1;
    }
    }
    return 1;
    }