Häuser erstellen

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,


    bei mir ist es so das man auf dem Server nur 5 Häuser spawnen kann. Wenn man nach einem restart auf den Server joint werden die 5 Häuser geladen und wenn man createhaus eingibt können weitere Häuser erstellt werden aber das möchte ich nicht. Es soll dann da stehen es sind schon auf dem Server 5 Häuser.


    Spoiler anzeigen
    public OnHausLoad(hausid)
    {
    new num_rows,num_fields,name[MAX_PLAYER_NAME];
    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",name);
    format(HausInfo[i][hBesitzer],24,"%s",name);
    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)
    {
    Create3DTextLabel("Das Haus ist vergeben",COLOR_GREEN,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
    {
    Create3DTextLabel("Das Haus ist Frei",COLOR_RED,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);
    }
    }
    printf("Häuser geladen %i/%i",num_rows,MAX_HAUSER);
    return 1;
    }
    stock CreateHaus(Float:X,Float:Y,Float:Z,Level,Preis)
    {
    for(new i = 0; i < sizeof(HausInfo); i++)
    {
    if(HausInfo[i][hCreated] != 0)continue;
    format(HausInfo[i][hBesitzer],32,"Niemand",HausInfo[i][hBesitzer]);
    HausInfo[i][hCreated] = 1;
    HausInfo[i][hEnterX] = X;
    HausInfo[i][hEnterY] = Y;
    HausInfo[i][hEnterZ] = Z;
    HausInfo[i][hLevel] = Level;
    HausInfo[i][hPreis] = Preis;
    HausInfo[i][hOwned] = 0;
    HausInfo[i][hPickup] = CreatePickup(1273,1,X,Y,Z);
    new string2[64];
    format(string2,sizeof(string2),"Haus zum Verkaufen:\nKosten:%i\nLevel:%i\nBesitzer:%s",HausInfo[i][hPreis],HausInfo[i][hLevel],HausInfo[i][hBesitzer]);
    Create3DTextLabel(string2,COLOR_RED,HausInfo[i][hEnterX],HausInfo[i][hEnterY],HausInfo[i][hEnterZ],20.0,0);
    SendAdminMessage(COLOR_RED,"Es wurde ein weiteres Haus erstellt.");
    SaveHausToDB(i);
    return 1;
    }
    return 1;
    }

  • Da würden jetzt viele Wege funktionieren. Einfach wäre es wie folgt:
    1) In der Funktion CreateHouse ein "0" returnen, sofern kein Haus erstellt wurde. Sprich, außerhalb der Schleife bzw Zeile 22.
    2) Wenn ein Haus erstellt werden soll, in einer if() Bedingung prüfen ob CreateHouse den Wert "0" zürck gibt. Gibt es 0 zurück, dann "--> es sind schon auf dem Server 5 Häuser.".
    if(CreateHouse(...) == 0 ) // Haus konnte nicht erstellt werden, sofern Punkt 1.