Object editor - only saving last 7 objects :/
#1

Basically I want objects to save to file, and then load from file, but for some reason it only saves last 7 objects.

pawn Код:
if(strcmp(cmd, "/obiekt", true) == 0)
    {
        tmp = strtok (cmdtext,idx);
        if (!strlen(tmp))
        {
            SendClientMessage(playerid, COLOR_RED, "USAGE: /obiekt [ID]");
            return 1;
        }
        new CreateFile09[35];
        format(CreateFile09,sizeof(CreateFile09),"/Ustawienia/settings.ini");
        new Float:pX,Float:pY,Float:pZ;
        GetPlayerPos(playerid, pX,pY,pZ);
        for(new h = dini_Int(CreateFile09,"Obiektow"); h < sizeof(ObiektInfo); h++)
        {
            ObiektInfo[h][ModelID] = strval(tmp);
            ObiektInfo[h][oX] = pX;
            ObiektInfo[h][oY] = pY;
            ObiektInfo[h][oZ] = pZ;
            ObiektInfo[h][orX] = 0;
            ObiektInfo[h][orY] = 0;
            ObiektInfo[h][orZ] = 0;
            SelectedOneP[playerid] = dini_Int(CreateFile09,"Obiektow");
            ObiektCreator2[h] = CreateObject(strval(tmp),pX+1,pY+1,pZ,0,0,0);
            EditObject(playerid, ObiektCreator2[h]);
        }
        return 1;
    }
pawn Код:
public LoadObiekty()
{
    new arrCoords[29][64];
    new strFromFile2[256];
    new File: file = fopen("/Ustawienia/obiekty.cfg", io_read);
    if (file)
    {
        new idx;
        while (idx < sizeof(ObiektInfo))
        {
            fread(file, strFromFile2);
            split(strFromFile2, arrCoords, ',');
            ObiektInfo[idx][ModelID] = strval(arrCoords[0]);
            ObiektInfo[idx][oX] = floatstr(arrCoords[1]);
            ObiektInfo[idx][oY] = floatstr(arrCoords[2]);
            ObiektInfo[idx][oZ] = floatstr(arrCoords[3]);
            ObiektInfo[idx][orX] = floatstr(arrCoords[4]);
            ObiektInfo[idx][orY] = floatstr(arrCoords[5]);
            ObiektInfo[idx][orZ] = floatstr(arrCoords[6]);
            if(ObiektInfo[idx][oX] == 0 && ObiektInfo[idx][oY] == 0 && ObiektInfo[idx][oZ] == 0) { }
            else
            {
                ObiektCreator2[idx] = CreateObject(ObiektInfo[idx][ModelID],ObiektInfo[idx][oX],ObiektInfo[idx][oY],ObiektInfo[idx][oZ],ObiektInfo[idx][orX],ObiektInfo[idx][orY],ObiektInfo[idx][orZ]);
            }
            printf("Obiekt o ID:%d zostal zaladowany",ObiektInfo[idx][ModelID]);
            idx++;
        }
        printf("Zaladowano:%d obiektow",idx);
        fclose(file);
    }
    return 1;
}

public SaveObiekty()
{
    new idx;
    new File: file2;
    while (idx < sizeof(ObiektInfo))
    {
        new coordsstring[256];
        format(coordsstring, sizeof(coordsstring), "%d,%f,%f,%f,%f,%f,%d\n",
        ObiektInfo[idx][ModelID],
        ObiektInfo[idx][oX],
        ObiektInfo[idx][oY],
        ObiektInfo[idx][oZ],
        ObiektInfo[idx][orX],
        ObiektInfo[idx][orY],
        ObiektInfo[idx][orZ]);
        if(idx == 0)
        {
            file2 = fopen("/Ustawienia/obiekty.cfg", io_write);
        }
        else
        {
            file2 = fopen("/Ustawienia/obiekty.cfg", io_append);
        }
        fwrite(file2, coordsstring);
        idx++;
        fclose(file2);
    }
    return 1;
}

public OnPlayerEditObject(playerid, playerobject, objectid, response, Float:fX, Float:fY, Float:fZ, Float:fRotX, Float:fRotY, Float:fRotZ)
{
    if(!IsValidObject(objectid)) return;
    MoveObject(objectid, fX, fY, fZ, 10.0, fRotX, fRotY, fRotZ);
    if(response == 0) //esc
    {
        new CreateFile09[35];
        format(CreateFile09,sizeof(CreateFile09),"/Ustawienia/settings.ini");
        for(new h = SelectedOneP[playerid]; h < sizeof(ObiektInfo); h++)
        {
    //      new h = SelectedOneP[playerid];
            ObiektInfo[h][oX] = 0;
            ObiektInfo[h][oY] = 0;
            ObiektInfo[h][oZ] = 0;
            ObiektInfo[h][orX] = 0;
            ObiektInfo[h][orY] = 0;
            ObiektInfo[h][orZ] = 0;
            CancelEdit(playerid);
            DestroyObject(ObiektCreator2[h]);
            SaveObiekty();
        }
    }
    if(response == 1)//save
    {
        new CreateFile09[35];
        format(CreateFile09,sizeof(CreateFile09),"/Ustawienia/settings.ini");
        for(new h = SelectedOneP[playerid]; h < sizeof(ObiektInfo); h++)
        {
        //  new h = SelectedOneP[playerid];
            ObiektInfo[h][oX] = fX;
            ObiektInfo[h][oY] = fY;
            ObiektInfo[h][oZ] = fZ;
            ObiektInfo[h][orX] = fRotX;
            ObiektInfo[h][orY] = fRotY;
            ObiektInfo[h][orZ] = fRotZ;
            SaveObiekty();
        }
    }
}
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)