Load vehicle sqlite problem -
=WoR=Varth - 19.06.2011
pawn Код:
LoadVehicle()
{
new query[2048];
Result = db_query(USERDB,"SELECT * FROM `Vehicles`");
for(new a;a<db_num_rows(Result);a++)
{
db_get_field_assoc(Result,"Model",query,sizeof(query));
V_Data[a][Model]=strval(query);
db_get_field_assoc(Result,"Plate",query,sizeof(query));
V_Data[a][Plate]=strval(query);
db_get_field_assoc(Result,"PosX",query,sizeof(query));
V_Data[a][vPosX]=strval(query);
db_get_field_assoc(Result,"PosY",query,sizeof(query));
V_Data[a][vPosY]=strval(query);
db_get_field_assoc(Result,"PosZ",query,sizeof(query));
V_Data[a][vPosZ]=strval(query);
db_get_field_assoc(Result,"Rot",query,sizeof(query));
V_Data[a][vRot]=strval(query);
V_Data[a][ID] = AddStaticVehicleEx(V_Data[a][Model],V_Data[a][vPosX],V_Data[a][vPosY],V_Data[a][vPosZ],V_Data[a][vRot],1,1,-1);
SetVehicleNumberPlate(V_Data[a][ID],V_Data[a][Plate]);
db_next_row(Result);
}
return 1;
}
The only one that loaded correctly just "V_Data[a][Model]". "V_Data[a][vPosX]" return "1283.000000" instead "1283.733276" (Same as "V_Data[a][vPosY]" "V_Data[a][vPosZ]" "V_Data[a][vRot]"). It won't load numbers after dot(.)
Also it won't load the plate.
Re: Load vehicle sqlite problem -
Lorenc_ - 19.06.2011
pawn Код:
format(Query, sizeof(Query), "SELECT * FROM `VEHICLES` WHERE `CARID` = '%d'", cID);
Result = db_query(Database,Query);
if(db_num_rows(Result))
{
new Field[20];
db_get_field_assoc(Result, "CARID", Field, 30);
gVehicleData[cID][E_CARID] = strval(Field);
}
I usally do it like this, I have never used your way of loading before though mine works perfectly
Re: Load vehicle sqlite problem -
=WoR=Varth - 19.06.2011
What's the different between yours and mine?
Re: Load vehicle sqlite problem -
Benjo - 19.06.2011
The reason it is not saving the information after the dot(.) is because you are using the strval function to retrieve floats. strval saves the string as an integer. Try using the function floatstr for your floats instead. That should read the string and save them as floats. You can see an example of it in action in the wiki here:
https://sampwiki.blast.hk/wiki/Floatstr
Also, if the value you are retrieving from the database is to be stored as a string (which it looks like your Plate should be), you can store it into a string variable using the format function.
With these changes, your code should look something like this:
pawn Код:
LoadVehicle()
{
new query[2048];
Result = db_query(USERDB,"SELECT * FROM `Vehicles`");
for(new a;a<db_num_rows(Result);a++)
{
db_get_field_assoc(Result,"Model",query,sizeof(query));
V_Data[a][Model]=strval(query);
db_get_field_assoc(Result,"Plate",query,sizeof(query));
format(V_Data[a][Plate], sizeof(V_Data[a][Plate]), "%s", query);
db_get_field_assoc(Result,"PosX",query,sizeof(query));
V_Data[a][vPosX]=floatstr(query);
db_get_field_assoc(Result,"PosY",query,sizeof(query));
V_Data[a][vPosY]=floatstr(query);
db_get_field_assoc(Result,"PosZ",query,sizeof(query));
V_Data[a][vPosZ]=floatstr(query);
db_get_field_assoc(Result,"Rot",query,sizeof(query));
V_Data[a][vRot]=floatstr(query);
V_Data[a][ID] = AddStaticVehicleEx(V_Data[a][Model],V_Data[a][vPosX],V_Data[a][vPosY],V_Data[a][vPosZ],V_Data[a][vRot],1,1,-1);
SetVehicleNumberPlate(V_Data[a][ID],V_Data[a][Plate]);
db_next_row(Result);
}
return 1;
}
Give that a go and see if you get it any closer to working. Good luck!
Re: Load vehicle sqlite problem -
=WoR=Varth - 22.06.2011
Bump for more problem. (I hate make another thread)
I have this
pawn Код:
db_get_field_assoc(Result,"MDCname",query,sizeof(query));
format(V_Data[a][MDCname],MAX_PLAYER_NAME,"%s",query);
But why it's only load the first letter. Example: Jayden Horse. it's only load "J".
NVM, wiki lead my way.