Problem mit 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
  • Hey leute, ich möchte ein Haussystem erstellen aber da klappt irgendwas nicht, Ich möchte die häuser mit nummern speichern aber da steht immer du nur Zahl "0"


    hier das script:


    new Hausordner[64], a;
    format(Hausordner,sizeof(Hausordner),"/House/%i.ini",a);
    if(dini_Exists(Hausordner))
    {
    a++;
    }
    if(a > MAX_HOUSE)
    {
    SendClientMessage(playerid,0xFFFFFFFF,"Maximale Anzahl Häuser erreicht.");
    return 1;
    }

  • ich hab es geändert jetzt geht es nur in allen 3 dateien werden immer die selben coordinaten gespeichert:



    ocmd:hauserstellen(playerid,params[])
    {
    new Price;
    if(sscanf(params,"i",Price)){return SendClientMessage(playerid,0xFF3C00FF,"Benutze: /hauserstellen [Preis]");}
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid,X,Y,Z);
    new Hausordner[64];
    for(new a = 1; a < MAX_HOUSE; a++)
    {
    format(Hausordner,sizeof(Hausordner),"/House/%d.ini",a);
    if(!dini_Exists(Hausordner))
    {
    dini_Create(Hausordner);
    dini_FloatSet(Hausordner,"PosX",X);
    dini_FloatSet(Hausordner,"PosY",Y);
    dini_FloatSet(Hausordner,"PosZ",Z);
    }
    }





    return 1;
    }

  • ich denke das wird daran liegen dass du in der schleife kein return verwendest.
    er erstellt alle inis auf einmal.
    er soll ja die schleife beenden wenn ein haus erstellt worden ist oder?

    for(new a = 1; a < MAX_HOUSE; a++)
    {
    format(Hausordner,sizeof(Hausordner),"/House/%d.ini",a);
    if(!dini_Exists(Hausordner))
    {
    dini_Create(Hausordner);
    dini_FloatSet(Hausordner,"PosX",X);
    dini_FloatSet(Hausordner,"PosY",Y);
    dini_FloatSet(Hausordner,"PosZ",Z);
    return 1;
    }
    }

  • Nein ich lasse ihn nirgends wieder löschen. Hier der Code:


    stock CreateHouse(Float:x,Float:y,Float:z,preis,level,besitzer[64])
    {
    new Hausordner[64];
    for(new a = 0; a < MAX_HOUSE; a++)
    {
    format(Hausordner,sizeof(Hausordner),"/House/%d.ini",a);
    if(!dini_Exists(Hausordner))
    {
    dini_Create(Hausordner);
    dini_Set(Hausordner,"Besitzer",besitzer);
    dini_FloatSet(Hausordner,"PosX",x);
    dini_FloatSet(Hausordner,"PosY",y);
    dini_FloatSet(Hausordner,"PosZ",z);
    dini_IntSet(Hausordner,"Preis",preis);
    dini_IntSet(Hausordner,"Level",level);
    LoadHouse(a);
    return 1;
    }
    }
    return 1;
    }
    stock LoadHouse(hid)
    {
    new Hausordner[64],string12[128];
    format(Hausordner,sizeof(Hausordner),"/House/%d.ini",hid);
    if(!fexist(Hausordner))return 0;
    format(HouseInfo[hid][Besitzer],64,"%s",dini_Get(Hausordner,"Besitzer"));
    HouseInfo[hid][PosX] = dini_Float(Hausordner,"PosX");
    HouseInfo[hid][PosY] = dini_Float(Hausordner,"PosY");
    HouseInfo[hid][PosZ] = dini_Float(Hausordner,"PosZ");
    HouseInfo[hid][Preis] = dini_Int(Hausordner,"Preis");
    HouseInfo[hid][Level] = dini_Int(Hausordner,"Level");
    HouseInfo[hid][hPickup] = CreatePickup(1273 ,1,HouseInfo[hid][PosX],HouseInfo[hid][PosY],HouseInfo[hid][PosZ],-1);
    if(strcmp(HouseInfo[hid][Besitzer],"Keiner",false))
    {
    format(string12,sizeof(string12),"Haus von %s",HouseInfo[hid][Besitzer]);
    }
    else
    {
    format(string12,sizeof(string12),"Dieses Haus steht zum Verkauf:\nPreis: %d\nLevel: %d",HouseInfo[hid][Preis],HouseInfo[hid][Level]);
    }
    Create3DTextLabel(string12,0x00F5FFFF,HouseInfo[hid][PosX],HouseInfo[hid][PosY],HouseInfo[hid][PosZ],20,-1,0);
    return printf("Haus %d wurde erfolgreich geladen.",hid);
    }