Object Editor (it doesnt load objects :/)
#1

I've made an object editor, you can add object but it doesnt load them, also Im not sure if I done the saving by icon click correct.

TOP
pawn Код:
#define MAX_OBIEKTOW 1000
forward LoadObiekty();
forward SaveObiekty();
enum ObiektInfo
{
    UID,
    OModelID,
    Float:fX2,
    Float:fY2,
    Float:fZ2,
    Float:fRotX2,
    Float:fRotY2,
    Float:fRotZ2,
};


new Obiekt[8][ObiektInfo];

new Obiekt2[MAX_OBIEKTOW];
GMI & GMX
pawn Код:
public OnGameModeInit()
{
LoadObiekty();
}

public GameModeExitFunc()
{
SaveObiekty();
}
SAVE & LOAD FUNCTION
pawn Код:
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 == 1)//CLICKED ON THE SAVE ICON
    {
        new idx;
        while (idx < sizeof(Obiekt))
        {
            GetObjectRot(SelectedO[playerid], fRotX, fRotY, fRotZ);
            GetObjectPos(SelectedO[playerid], fX, fY, fZ);
            Obiekt[idx][UID] = SelectedO[playerid];
            Obiekt[idx][OModelID] = Selected2[playerid];
            Obiekt[idx][fX2] = fX;
            Obiekt[idx][fY2] = fY;
            Obiekt[idx][fZ2] = fZ;
            Obiekt[idx][fRotX2] = fRotX;
            Obiekt[idx][fRotY2] = fRotY;
            Obiekt[idx][fRotZ2] = fRotZ;
        }
    }
}

public SaveObiekty()
{
    new idx;
    new File: file2;
    while (idx < sizeof(Obiekt))
    {
        new coordstring[256];
        format(coordstring,sizeof(coordstring),"%d,%d,%f,%f,%f,%f,%f,%f\r\n",Obiekt[idx][UID],Obiekt[idx][OModelID],Obiekt[idx][fX2],Obiekt[idx][fY2],Obiekt[idx][fZ2],Obiekt[idx][fRotX2],Obiekt[idx][fRotY2],Obiekt[idx][fRotZ2]);
        if(idx == 0)
        {
            file2 = fopen("/Ustawienia/obiekty.txt", io_write);
        }
        else
        {
            file2 = fopen("/Ustawienia/obiekty.txt", io_append);
        }
        fwrite(file2, coordstring);
        idx++;
        fclose(file2);
    }
    return 1;
}

public LoadObiekty()
{
    new arrCoords[8][64];
    new strFromFile2[256];
    new File: file = fopen("/Ustawienia/obiekty.txt", io_read);
    if (file)
    {
        new idx;
        while (idx < sizeof(Obiekt))
        {
            new uid2 = 0;
            uid2 ++;
            fread(file, strFromFile2);
            split(strFromFile2, arrCoords, ',');
            Obiekt[idx][UID] = strval(arrCoords[0]);
            Obiekt[idx][OModelID] = strval(arrCoords[1]);
            Obiekt[idx][fX2] = floatstr(arrCoords[2]);
            Obiekt[idx][fY2] = floatstr(arrCoords[3]);
            Obiekt[idx][fZ2] = floatstr(arrCoords[4]);
            Obiekt[idx][fRotX2] = floatstr(arrCoords[5]);
            Obiekt[idx][fRotY2] = floatstr(arrCoords[6]);
            Obiekt[idx][fRotZ2] = floatstr(arrCoords[7]);
            idx++;
            Obiekt2[uid2] = CreateObject(Obiekt[idx][OModelID],Obiekt[idx][fX2],Obiekt[idx][fY2],Obiekt[idx][fZ2],Obiekt[idx][fRotX2],Obiekt[idx][fRotY2],Obiekt[idx][fRotZ2]);
        }
        printf("Obiekty from file: %d",idx);
        fclose(file);
    }
    return 1;
}
Create Object COMMAND
pawn Код:
if(dialogid == OBIEKT2)
    {
        if(response)
        {

            new SettingsFile12[35];
            format(SettingsFile12,sizeof(SettingsFile12),"Ustawienia/settings.ini");
            new uid = dini_Int(SettingsFile12,"Obiektow");
            if(IsNumeric(inputtext) || strval(inputtext) > 0 || strval(inputtext) < 19470)
            {

                new Float:x,Float:y,Float:z,Float:rotX,Float:rotY,Float:rotZ,coordstring[128];
                uid ++;
                dini_IntSet(SettingsFile12,"Obiektow",uid);
                GetPlayerPos(playerid, x,y,z);
                Obiekt2[uid] = CreateObject(strval(inputtext), x+1, y+1, z+1, 0.0,0.0,0.0);
                SelectedO[playerid] = Obiekt2[uid];
                Selected2[playerid] = strval(inputtext);
                GetObjectRot(Obiekt2[uid], rotX, rotY, rotZ);
                GetObjectPos(Obiekt2[uid], x, y, z);
                EditObject(playerid, Obiekt2[uid]);
                new File:objects = fopen("/Ustawienia/obiekty.txt",io_append);
                format(coordstring,sizeof(coordstring),"%d,%d,%f,%f,%f,%f,%f,%f\r\n",uid,strval(inputtext),x,y,z,rotX,rotY,rotZ);
                fwrite(objects, coordstring);
                fclose(objects);
                return 1;
            }
        }
    }
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)