LoadObject & SaveObjects problem
#1

I have a problem with the objects
I made a mapper system in-game
the problem is when i load the objects it won't load
its save but it won't load ingame

I add LoadObjects OnGameModeInit
And I add CheckFiles also on gamemodeinit

I am using the latest version of streamer & sscanf.

Here is the code
pawn Код:
stock LoadObjects()
{
    new dinfo[15][128];
    new string[256];
    new File:file = fopen("objects.cfg", io_read);
    if(file)
    {
        new idx = 1;
        while(idx < MAX_OBJ)
        {
            fread(file, string);
            split(string, dinfo, '|');
            ObjInfo[idx][oModel] = strval(dinfo[0]);
            ObjInfo[idx][oX] = floatstr(dinfo[1]);
            ObjInfo[idx][oY] = floatstr(dinfo[2]);
            ObjInfo[idx][oZ] = floatstr(dinfo[3]);
            ObjInfo[idx][oRX] = floatstr(dinfo[4]);
            ObjInfo[idx][oRY] = floatstr(dinfo[5]);
            ObjInfo[idx][oRZ] = floatstr(dinfo[6]);
            if(ObjInfo[idx][oModel]) // If gate exists
            {
                ObjInfo[idx][obj] = CreateDynamicObject(ObjInfo[idx][oModel], ObjInfo[idx][oX], ObjInfo[idx][oY], ObjInfo[idx][oZ], ObjInfo[idx][oRX], ObjInfo[idx][oRY], ObjInfo[idx][oRZ]);
                format(string, sizeof(string), "Object ID: %d (Model ID: %d)", idx, ObjInfo[idx][oModel]);
                ObjInfo[idx][oText] = CreateDynamic3DTextLabel(string, COLOR_WHITE, ObjInfo[idx][oX], ObjInfo[idx][oY], ObjInfo[idx][oZ], 10);
            }
            idx++;
        }
    }
    print("Objects loaded successfully.");
    return 1;
}
stock CheckFiles()
{
    if(!dini_Exists("objects.cfg")) dini_Create("objects.cfg");
    return 1;
}
Reply
#2

Anyone help
Reply
#3

Quote:
Originally Posted by Barnwell
Посмотреть сообщение
Anyone help
Try to use sql lite.

This is an example of saving the object(not my work):
Код:
EDITOR_OBJECT[id][OBJ_MODEL] = strval(inputtext);
        EDITOR_OBJECT[id][OBJ_X] = editor[0]+1;
        EDITOR_OBJECT[id][OBJ_Y] = editor[1]+1;
        EDITOR_OBJECT[id][OBJ_Z] = editor[2];
        EDITOR_OBJECT[id][OBJ_RX] = 0.0;
        EDITOR_OBJECT[id][OBJ_RY] = 0.0;
        EDITOR_OBJECT[id][OBJ_RZ] = 0.0;
        EDITOR_OBJECT[id][OBJ_VW] = -1;
        EDITOR_OBJECT[id][OBJ_INTERIOR] = -1;
        EDITOR_OBJECT[id][OBJ_STREAM_DISTANCE] = 100.0;
        EDIT_OBJECT_ID[playerid] = id;
        EditDynamicObject(playerid, id);
        
        new EDITOR_QUERY[256];
        format(EDITOR_QUERY, sizeof(EDITOR_QUERY), "INSERT INTO `OBJECTS` (`MODEL`, `X`, `Y`, `Z`, `INT`) VALUES (%d,'%f','%f','%f',%d)",
		EDITOR_OBJECT[id][OBJ_MODEL],
		EDITOR_OBJECT[id][OBJ_X],
		EDITOR_OBJECT[id][OBJ_Y],
		EDITOR_OBJECT[id][OBJ_Z],
		id+1000);
		db_free_result(db_query(EDITOR_DATABASE, EDITOR_QUERY));
	 	new DBResult:EDITOR_RESULT;
        format(EDITOR_QUERY,sizeof(EDITOR_QUERY),"SELECT `ID` FROM `OBJECTS` WHERE `INT`=%d",id+1000);
        EDITOR_RESULT = db_query(EDITOR_DATABASE,EDITOR_QUERY);
        if(db_num_rows(EDITOR_RESULT) == 1)
        {
            new temp[16];
            db_get_field(EDITOR_RESULT,0,temp,16);
		 	EDITOR_OBJECT[id][OBJ_DB_ID] = strval(temp);
		 	SendClientMessage(playerid,DEF_COL_WHITE,"Object ID received.");
        }
        db_free_result(EDITOR_RESULT);
		format(EDITOR_QUERY, sizeof(EDITOR_QUERY), "UPDATE `OBJECTS` SET `INT`=-1 WHERE `ID`=%d",EDITOR_OBJECT[id][OBJ_DB_ID]);
		db_free_result(db_query(EDITOR_DATABASE, EDITOR_QUERY));
And loading.
Код:
new DBResult:EDITOR_RESULT,IDX;
	EDITOR_RESULT = db_query(EDITOR_DATABASE,  "SELECT * FROM `OBJECTS`");
	if(db_num_rows(EDITOR_RESULT) > 0) // Logged In
	{
	    new EDITOR_VALEU[26][11],id;
        for (new x=0; x<db_num_rows(EDITOR_RESULT); x++)
		{
			IDX = 0;
		    db_get_field_assoc(EDITOR_RESULT, "ID", EDITOR_VALEU[IDX], 26),IDX++;
		    db_get_field_assoc(EDITOR_RESULT, "MODEL", EDITOR_VALEU[IDX], 26),IDX++;
		    db_get_field_assoc(EDITOR_RESULT, "X", EDITOR_VALEU[IDX],26),IDX++;
		    db_get_field_assoc(EDITOR_RESULT, "Y", EDITOR_VALEU[IDX],26),IDX++;
		    db_get_field_assoc(EDITOR_RESULT, "Z", EDITOR_VALEU[IDX],26),IDX++;
		    db_get_field_assoc(EDITOR_RESULT, "RX", EDITOR_VALEU[IDX],26),IDX++;
		    db_get_field_assoc(EDITOR_RESULT, "RY", EDITOR_VALEU[IDX],26),IDX++;
		    db_get_field_assoc(EDITOR_RESULT, "RZ", EDITOR_VALEU[IDX],26),IDX++;
		    db_get_field_assoc(EDITOR_RESULT, "VW", EDITOR_VALEU[IDX],26),IDX++;
		    db_get_field_assoc(EDITOR_RESULT, "INT", EDITOR_VALEU[IDX],26),IDX++;
		    db_get_field_assoc(EDITOR_RESULT, "DISTANCE", EDITOR_VALEU[IDX],26);

		    id = CreateDynamicObject(strval(EDITOR_VALEU[1]), floatstr( EDITOR_VALEU[2]),floatstr(EDITOR_VALEU[3]),floatstr(EDITOR_VALEU[4]), floatstr( EDITOR_VALEU[5]),floatstr(EDITOR_VALEU[6]),floatstr(EDITOR_VALEU[7]), strval(EDITOR_VALEU[8]), strval(EDITOR_VALEU[9]),-1, floatstr(EDITOR_VALEU[10]));

			
			EDITOR_OBJECT[id][OBJ_DB_ID] = strval(EDITOR_VALEU[0]);
            EDITOR_OBJECT[id][OBJ_MODEL] = strval(EDITOR_VALEU[1]);
            EDITOR_OBJECT[id][OBJ_X] = floatstr(EDITOR_VALEU[2]);
            EDITOR_OBJECT[id][OBJ_Y] = floatstr(EDITOR_VALEU[3]);
            EDITOR_OBJECT[id][OBJ_Z] = floatstr(EDITOR_VALEU[4]);
            EDITOR_OBJECT[id][OBJ_RX] = floatstr(EDITOR_VALEU[5]);
            EDITOR_OBJECT[id][OBJ_RY] = floatstr(EDITOR_VALEU[6]);
            EDITOR_OBJECT[id][OBJ_RZ] = floatstr(EDITOR_VALEU[7]);
            EDITOR_OBJECT[id][OBJ_VW] = strval(EDITOR_VALEU[8]);
            EDITOR_OBJECT[id][OBJ_INTERIOR] = strval(EDITOR_VALEU[9]);
            EDITOR_OBJECT[id][OBJ_STREAM_DISTANCE] = floatstr(EDITOR_VALEU[10]);
			db_next_row(EDITOR_RESULT);
	    }
	}
	new string[128];
	format(string,sizeof(string),"%d objects have been loaded.",db_num_rows(EDITOR_RESULT));
	SendClientMessageToAll(DEF_COL_WHITE,string);
	db_free_result(EDITOR_RESULT);
	return 1;
}
I hope this helped you
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)