Jump to content
  • 0

problema object


InceMan

Question

Salut, am o problema de scurt timp am facut un system de mapper direct din samp el ruleaza ok doar ce nu imi merge mie bine este atunci cand salvez objectele

stock SaveObjects()
{
    new idx;
    new File: file2;
    while (idx < sizeof(ObjectInfo))
    {
        new coordsstring[256];
        format(coordsstring, sizeof(coordsstring), "CreateDynamicObject(%d, %f, %f, %f, %f, %f, %f, %d)\n",
           ObjectIDTaken[idx],
        ObjectInfo[idx][objModel],
        ObjectInfo[idx][objY],
        ObjectInfo[idx][objZ],
        ObjectInfo[idx][objRX],
        ObjectInfo[idx][objRY],
        ObjectInfo[idx][objRZ],
        ObjectInfo[idx][objSaved],
        ObjectInfo[idx][objVW]);
        if(idx == 0)
        {
            file2 = fopen("objects.txt", io_write);
        }
        else
        {
            file2 = fopen("objects.txt", io_append);
        }
        fwrite(file2, coordsstring);
        idx++;
        fclose(file2);
        
    }
    return 1;
}

asa imi arata in objects.txt

CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(1, 0.000000, 2579.666015, 63.570312, 0.000000, 0.000000, 247.253494, 1)
CreateDynamicObject(1, 0.000000, 2557.383544, 77.644691, 0.000000, 0.000000, 265.301696, 1)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
CreateDynamicObject(0, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0)
 

deci nu imi arata cordonatele corecte 

Edited by Geani

FiveGame  Lands

Pawno Developer, Mapping , Scripter

Since 2016

Link to comment
Share on other sites

22 answers to this question

Recommended Posts

  • 0

Nu garantez ca functioneaza:

stock SaveObjects()
{
    new File:file2, file[256];
    set(file, "objects.txt");
    file2 = fopen(file, io_write);
    for(new i=0;i<ObjectInfo;i++)
    {
        new coordsstring[256];
        format(coordsstring, sizeof(coordsstring), "CreateDynamicObject(%d, %f, %f, %f, %f, %f, %f, %d)\n",
        ObjectIDTaken[i],
        ObjectInfo[i][objModel],
        ObjectInfo[i][objY],
        ObjectInfo[i][objZ],
        ObjectInfo[i][objRX],
        ObjectInfo[i][objRY],
        ObjectInfo[i][objRZ],
        ObjectInfo[i][objSaved],
        ObjectInfo[i][objVW]);
		fwrite(file2, coordsstring);
        fclose(file2);
    }
    return ( true ) ;
}

 

Link to comment
Share on other sites

  • 0
  • 0
Acum 1 minut, WiDuAlK a spus:

Nu v-a functiona nici odata. Variabilele mereu vor fi setate pe 0.

Daca vrei sa iti mearga, trb sa alegi alta abordare. Eu sugerez ceva de genu:


SaveObjects(arg1, arg2, arg3, ..., argN)

apoi


format(coordsstring, sizeof(coordsstring), "CreateDynamicObject(%d, %f, %f, %f, %f, %f, %f, %d)\n",
        arg1,
        arg2,
        arg3,
        ...
       	argN);

si apelezi functia de cate ori creezi un nou obiect

De ce sa fie setate pe 0?

Sinner.png

Link to comment
Share on other sites

  • 0
  • 0
Acum 1 minut, WiDuAlK a spus:

Un simplu debugging v-a arata exact cea ce am spus.

Eu te-am intrebat de ce o sa fie mereu pe 0 daca el stocheaza in variabila aia un float, si mai tarziu o acceseaza aici.

Off: se scrie "va" pentru ca e viitor.

Edited by SoNNy.sys

Sinner.png

Link to comment
Share on other sites

  • 0
Chiar acum, SoNNy.sys a spus:

Eu te-am intrebat de ce o sa fie mereu pe 0 daca el stocheaza in variabila aia un float?

Off: se scrie "va" pentru ca e viitor.

Cum spui tu, simplu, ca sa faci sa mearga trb sa tii evidenta tuturor obiectelor de la bun inceput. E limpede ca codul a fost copiat de undeva, dar nu a fost interpretat corect, mai ales partea de creare. Poate creeaza obiectul pe moment si il afiseaza, dar modul cum isi face stocarea variabilelor e gresit, iar cea mai simpla metoda de a salva eficient obiectele in fisierul .txt este cum i-am aratat eu, deoarece, daca apeleaza functia in momentul cand se inchide serverul, risca sa piarda din date.

Link to comment
Share on other sites

  • 0
Chiar acum, WiDuAlK a spus:

Cum spui tu, simplu, ca sa faci sa mearga trb sa tii evidenta tuturor obiectelor de la bun inceput. E limpede ca codul a fost copiat de undeva, dar nu a fost interpretat corect, mai ales partea de creare. Poate creeaza obiectul pe moment si il afiseaza, dar modul cum isi face stocarea variabilelor e gresit, iar cea mai simpla metoda de a salva eficient obiectele in fisierul .txt este cum i-am aratat eu, deoarece, daca apeleaza functia in momentul cand se inchide serverul, risca sa piarda din date.

Frate atata timp cat el stocheaza de exemplu ObjectInfo[objY] nu are motiv pentru care sa i se reseteze cand vrea sa-i verifice valoarea mai tarziu, de aia i-am cerut codul unde creeaza el obiectele :) Si repet, de ce sa fie setate pe 0?

Sinner.png

Link to comment
Share on other sites

  • 0

 

Acum 19 minute, SoNNy.sys a spus:

Arata putin partea cand setezi valoarea unei variabile.

CMD:createobject(playerid, params[])

    {
        if(PlayerInfo[playerid][pAdmin] >= 3 || PlayerInfo[playerid][pMapper] >= 1)
        {
              new id = GetAvailableID(TYPE_OBJECT), Float:x, Float:y, Float:z, Float:a;
              if (id == -1) return SendClientMessage(playerid, GREY, "    Objects are at their maximum. Cannot continue.");
            GetPlayerPos(playerid, x, y, z); GetPlayerFacingAngle(playerid, a);
            if(ObjectIDTaken[id]) return SendClientMessage(playerid, GREY, "ID is taken, choose another.");
            new tmp[420];
            new idx, string[256];
            tmp = strtok(params, idx);
            if(!strlen(tmp))
            {
            SendClientMessage(playerid, COLOR_GRAD1, "{33ccff}Utilizeaza:{FFFFFF} /createobject [objectid] ");
            return 1;
            }
            new modelid = strval(tmp);
            if(!IsValidModel(modelid)) return SendClientMessage(playerid, GREY, "Invalid object ID.");
            ObjectIDTaken[id] = 1;
            ObjectInfo[id][objModel] = modelid;
            ObjectInfo[id][objX] = x;
            ObjectInfo[id][objY] = y;
            ObjectInfo[id][objZ] = z;
            ObjectInfo[id][objRX] = 0;
            ObjectInfo[id][objRY] = 0;
            ObjectInfo[id][objRZ] = a;
            ObjectInfo[id][objID] = CreateDynamicObject(modelid, x, y, z, 0, 0, a, GetPlayerVirtualWorld(playerid));
            ObjectInfo[id][objSaved] = 1;
            ObjectInfo[id][objVW] = GetPlayerVirtualWorld(playerid);
            objects++;
            SendClientMessage(playerid, LIGHTBLUE, "Object created, now use /editobject [id] to edit it.");
            format(string, sizeof(string), "The object ID is: %d (you can use this id to /editobject with it).", id);
            SendClientMessage(playerid, LIGHTBLUE, string);
            return 1;
           }
        else
        {
            SendClientMessage(playerid, GREY, "    You are not authorized to use that command.");
        }
        return 1;
    }

CMD:saveobjects(playerid, params[])    
    {
        if(PlayerInfo[playerid][pAdmin] >= 3 || IsAMapper(playerid))
        {
            SendClientMessage(playerid, LIGHTBLUE, "* All objects saved.");
            SendClientMessage(playerid, COLOR_YELLOW,"All Objects have been saved to objects.txt");
            SaveObjects();
            return 1;
        }
        else
        {
              SendClientMessage(playerid, GREY, "    You are not authorized to use that command.");
          }
        return 1;
    }

 

daca este nevoie dau si stock LoadObjects()

Edited by Geani

FiveGame  Lands

Pawno Developer, Mapping , Scripter

Since 2016

Link to comment
Share on other sites

  • 0
  • 0
1 oră în urmă, Geani a spus:

Salut, am o problema de scurt timp am facut un system de mapper direct din samp el ruleaza ok doar ce nu imi merge mie bine este atunci cand salvez objectele

 

Ce tot spui ma omule?

Toata ziua ceri ajutor, ma indoiesc ca tu stii sa faci un sistem.

                        

 

 

Link to comment
Share on other sites

  • 0
Acum 5 minute, [RW]Robi a spus:

Ce tot spui ma omule?

Toata ziua ceri ajutor, ma indoiesc ca tu stii sa faci un sistem.

Salut omule, daca cer ajutorul cui-va asta nu inseamna ca nu am abar sunt inca sa zicem asa zis incepator si vreau sa aflu cate mai multe nautati daca se poate

FiveGame  Lands

Pawno Developer, Mapping , Scripter

Since 2016

Link to comment
Share on other sites

  • 0
Acum 32 minute, WiDuAlK a spus:

Nu v-a functiona nici odata. Variabilele mereu vor fi setate pe 0.

Daca vrei sa iti mearga, trb sa alegi alta abordare. Eu sugerez ceva de genu:


SaveObjects(arg1, arg2, arg3, ..., argN)

apoi


format(coordsstring, sizeof(coordsstring), "CreateDynamicObject(%d, %f, %f, %f, %f, %f, %f, %d)\n",
        arg1,
        arg2,
        arg3,
        ...
       	argN);

si apelezi functia de cate ori creezi un nou obiect

uite am facut un edit la saveobject e bine cum am facut?

stock SaveObjects()
{
    new idx = 1, File:file2;
    new string[256];
    while (idx < sizeof(ObjectInfo))
    {
        format(string, sizeof(string), "   CreateDynamicObject(%d,%f,%f,%f,%f,%f,%f);\r\n",
        ObjectInfo[idx][oModel],
        ObjectInfo[idx][oX],
        ObjectInfo[idx][oY],
        ObjectInfo[idx][oZ],
        ObjectInfo[idx][oRX],
        ObjectInfo[idx][oRY],
        ObjectInfo[idx][oRZ]);
        if(idx == 1)
        {
            file2 = fopen("objects.txt", io_write);
        }
        else
        {
            file2 = fopen("objects.txt", io_append);
        }
        fwrite(file2, string);
        fclose(file2);
        idx++;
    }
    print("Objects saved successfully.");
    return 1;
}

Edited by Geani

FiveGame  Lands

Pawno Developer, Mapping , Scripter

Since 2016

Link to comment
Share on other sites

  • 0
Acum 1 minut, Geani a spus:

Salut omule, daca cer ajutorul cui-va asta nu inseamna ca nu am abar sunt inca sa zicem asa zis incepator si vreau sa aflu cate mai multe nautati daca se poate

Atunci cand folosesti comanda stocheaza doar id-urile obiectelor gen obiect[ 0 ] = CreateDynamicObject(..); etc iar cand vrei sa le salvezi folosesti GetDynamicObjectPos(obiect[ 0 ], Float:x, Float:y, Float:z)
GetDynamicObjectRot(
obiect[ 0 ], Float:rx, Float:ry, Float:rz).

Nu uita sa folosesti corect si callback-ul atunci cand editezi obiectul si faci ceva de genul:

public OnPlayerEditDynamicObject( playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
{
	switch( response )
	{
		case EDIT_RESPONSE_FINAL:
		{
			for(new i=0; i < TotalObiecte; i++)
            {
				if( objectid == obiect[ i ] )
				{
					SetDynamicObjectPos( obiect[ i ], Float:x, Float:y, Float:z );
					SetDynamicObjectRot( obiect[ i ], Float:rx, Float:ry, Float:rz );
					SendClientMessage( playerid, ~1, "Ai plasat obiectul cu succes la noua pozitie!" );
				}
			}
		}
		case EDIT_RESPONSE_CANCEL: SendClientMessage( playerid, ~1, "Ai anulat editarea obiectului curent!" );
	}
}

 

Sinner.png

Link to comment
Share on other sites

  • 0
Acum 14 minute, SoNNy.sys a spus:

Atunci cand folosesti comanda stocheaza doar id-urile obiectelor gen obiect[ 0 ] = CreateDynamicObject(..); etc iar cand vrei sa le salvezi folosesti GetDynamicObjectPos(obiect[ 0 ], Float:x, Float:y, Float:z)
GetDynamicObjectRot(
obiect[ 0 ], Float:rx, Float:ry, Float:rz).

Nu uita sa folosesti corect si callback-ul atunci cand editezi obiectul si faci ceva de genul:


public OnPlayerEditDynamicObject( playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
{
	switch( response )
	{
		case EDIT_RESPONSE_FINAL:
		{
			for(new i=0; i < TotalObiecte; i++)
            {
				if( objectid == obiect[ i ] )
				{
					SetDynamicObjectPos( obiect[ i ], Float:x, Float:y, Float:z );
					SetDynamicObjectRot( obiect[ i ], Float:rx, Float:ry, Float:rz );
					SendClientMessage( playerid, ~1, "Ai plasat obiectul cu succes la noua pozitie!" );
				}
			}
		}
		case EDIT_RESPONSE_CANCEL: SendClientMessage( playerid, ~1, "Ai anulat editarea obiectului curent!" );
	}
}

 

ok am sa tin cont multumesc !

FiveGame  Lands

Pawno Developer, Mapping , Scripter

Since 2016

Link to comment
Share on other sites

  • 0
1 oră în urmă, andy47 a spus:

Acel stock SaveObjects l-am vazut ceva timp in urma pe sa-mp.com, daca nu ma indoiesc este identic. Tipul avea aceeasi problema. De ce sa folosesti file? cand ca pe mysql e mult mai usor.

acum imi salveaza toate cele 3 poziti dar nu imi arata objectul creat dupa restart    

CreateDynamicObject(13749, -243.924240, 2580.670410, 63.570312, 0.000000, 0.000000, 309.251892);
   CreateDynamicObject(19608, -242.535751, 2557.325195, 77.544624, 0.000000, 0.000000, 265.635528);

FiveGame  Lands

Pawno Developer, Mapping , Scripter

Since 2016

Link to comment
Share on other sites

  • 0
On 03.02.2017 at 0:03 AM, Geani said:

acum imi salveaza toate cele 3 poziti dar nu imi arata objectul creat dupa restart    

CreateDynamicObject(13749, -243.924240, 2580.670410, 63.570312, 0.000000, 0.000000, 309.251892);
   CreateDynamicObject(19608, -242.535751, 2557.325195, 77.544624, 0.000000, 0.000000, 265.635528);

Deschide un alt subiect pe tema asta si marcheaza raspunsul care te-a ajutat.

Link to comment
Share on other sites

  • 0
Acum 14 minute, WopsS a spus:

Deschide un alt subiect pe tema asta si marcheaza raspunsul care te-a ajutat.

pai tot asa imi merge nu am mai facut nimic cand le copi din fisier si le adaug pe server nu se pun

FiveGame  Lands

Pawno Developer, Mapping , Scripter

Since 2016

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.