Hallo Leute
Ich hab ein kleines Problem wobei ihr mir bestimmt helfen könnt
ich setze mich grad ein bissel mit sqlite auseinander speichern und laden klappt auch schon ganz gut
allerdings wenn ich jetzt zb. 8 Fahrzeuge gespeichert habe und ich lösche ingame Fahrzeug 5
dann wird in der Tabelle natürlich id 5 gelöscht iss auch richtig so
danach wird aber das letzte Fahrzeug nicht mehr gespeichert da ja eine id mittendrinn fehlt
wie kann man das umsetzen das sich die nr. der restlichen Fahrzeuge anpassen
weiß da jemand rat?
hier das laden und speichern, villeicht haut da ja irgentwas nicht hin
/////////////////////
//erstellen
//Der Teil des dialogs vom erstellen
new str[512];
for(new i=1;i<MAX_FRACTION_CARS;i++)
{
new Float:fX,Float:fY,Float:fZ,Float:fA;
GetPlayerPos(playerid,fX,fY,fZ),GetPlayerFacingAngle(playerid,fA);
if(FractionCars[i][erstellt]==true)continue;
FractionCars[i][erstellt] = true;
FractionCars[i][fVehid] = GetPVarInt(playerid,"fVehid");
FractionCars[i][fPos][0] = fX,
FractionCars[i][fPos][1] = fY,
FractionCars[i][fPos][2] = fZ,
FractionCars[i][fPos][3] = fA,
FractionCars[i][fCol][0] = GetPVarInt(playerid,"fCol1");
FractionCars[i][fCol][1] = GetPVarInt(playerid,"fCol2");
FractionCars[i][fFraction] = GetPVarInt(playerid,"fFraction1");
FractionCars[i][fHealth] = 1000;
format(str,sizeof(str),"INSERT INTO `ffcars1` (`ID`,`fPos0`,`fPos1`, `fPos2`,`fPos3`,`fVehid`,`fCol0`,`fCol1`,`fFraction`, `fHealth`, `fBenzin`) VALUES ('%i','%f','%f','%f','%f','%d','%d','%d','%d','%f','100')",
i,fX,fY,fZ,fA,FractionCars[i][fVehid],FractionCars[i][fCol][0],FractionCars[i][fCol][1],FractionCars[i][fFraction],FractionCars[i][fHealth]);
db_query(Serverdaten,str);
FractionCars[i][fCarid] = CreateVehicle(FractionCars[i][fVehid],FractionCars[i][fPos][0],FractionCars[i][fPos][1],FractionCars[i][fPos][2],FractionCars[i][fPos][3],FractionCars[i][fCol][0],FractionCars[i][fCol][1],-255);
FractionCars[i][fLock] = true;
return 1;
}
///////////////////////
//Laden
forward LoadFractionCars();
public LoadFractionCars()
{
new DBResult:Result,query[256] ,str[256], rows,i=1;
for(;i<MAX_FRACTION_CARS;i++)
{
format(str,sizeof(str),"SELECT * FROM `ffcars1` WHERE `ID` = '%i'",i);
Result = db_query(Serverdaten,str);
rows = db_num_rows(Result);
if(rows != 0)
{
db_get_field_assoc(Result,"fVehid",query,sizeof(query)); FractionCars[i][fVehid]=strval(query);
db_get_field_assoc(Result,"fPos0",query,sizeof(query)); FractionCars[i][fPos][0]=floatstr(query);
db_get_field_assoc(Result,"fPos1",query,sizeof(query)); FractionCars[i][fPos][1]=floatstr(query);
db_get_field_assoc(Result,"fPos2",query,sizeof(query)); FractionCars[i][fPos][2]=floatstr(query);
db_get_field_assoc(Result,"fPos3",query,sizeof(query)); FractionCars[i][fPos][3]=floatstr(query);
///////////////////////////////////
///Hier die Tuning sachen und der rest
FractionCars[i][fCarid] = CreateVehicle(FractionCars[i][fVehid],FractionCars[i][fPos][0],FractionCars[i][fPos][1],FractionCars[i][fPos][2],FractionCars[i][fPos][3],FractionCars[i][fCol][0],FractionCars[i][fCol][1],-255);
FractionCars[i][erstellt] = true;
FractionCars[i][fLock] = true;
SetVehicleHealth(FractionCars[i][fCarid],FractionCars[i][fHealth]);
UpdateVehicleDamageStatus(FractionCars[i][fCarid],FractionCars[i][fDmgPanels],FractionCars[i][fDmgDoors],FractionCars[i][fDmgLights],FractionCars[i][fDmgTires]);
fraks++;
}
db_free_result(Result);
}printf(" Es wurden %d Fraktions Cars erfolgreich Geladen",fraks);
fraks=0;
i=1;
}
////////////////////////////////////////
//Speichern
stock UpdateFractionCars()
{
new query[256],query1[256];
new i;while(i<MAX_FRACTION_CARS)
{
if(FractionCars[i][fVehid] >= 400 && FractionCars[i][fVehid] <= 611)
{
new Float:health;
GetVehicleHealth(i, health);
GetVehicleDamageStatus(i,panels,doors,lights,tires);
format(query,sizeof(query),"UPDATE `ffcars1` SET `fDmgPanels`='%d',`fDmgDoors`='%d',`fDmgLights`='%d',`fDmgTires`='%d',`fHealth`='%f',`fBenzin`='%d' WHERE `ID`='%i'",
panels,doors,lights,tires,health,FractionCars[i][fBenzin],i);
//
// hier werden dann noch die tuning sachen geladen
//
db_query(Serverdaten,query);
}i++;
}
}
edit: Überschrift geändert