Ja, da hast du die Variablen durcheinander gebracht, und mit dem falschen Index auf die Fraktions-Fahrzeuge zugegriffen.
Schreibe das enum so:
enum frakvehInfo{
db_id,
fid,
frank,
Float:fPosX,
Float:fPosY,
Float:fPosZ,
Float:fPosA,
fmodel,
fcolor1,
fcolor2,
e_vehID
};
new fvInfo[MAX_FRAKVEH][frakvehInfo];
Die Funktion sieht dann so aus:
stock CreateFrakVehicle(frakid, model, color1, color2, Float:posX, Float:posY, Float:posZ, Float:posA)
{
for(new i=0; i<MAX_FRAKVEH; i++)
{
if(fvInfo[i][e_vehID] == 0)
{
new vehid = CreateVehicle(model, posX, posY, posZ, posA, color1, color2, -1);
fvInfo[i][e_vehID]=vehid;
vInfo[vehid][besitzer]=-1;
vInfo[vehid][fveh] = 1;
vInfo[vehid][vehicleTank] = 100;
vInfo[vehid][carkey1] = -1;
vInfo[vehid][carkey2] = -1;
fvInfo[i][fPosX] = posX;
fvInfo[i][fPosY] = posY;
fvInfo[i][fPosZ] = posZ;
fvInfo[i][fPosA] = posA;
fvInfo[i][fcolor1] = color1;
fvInfo[i][fcolor2] = color2;
fvInfo[i][fmodel] = model;
fvInfo[i][fid] = frakid;
vInfo[vehid][vdamage] = 1000.0;
fvInfo[i][frank] = 1;
new query[256];
format(query, sizeof(query), "INSERT INTO fcars (fid, frank, fmodel, fcolor1, fcolor2, fvehicleTank, fPosX, fPosY, fPosZ, fPosA, fvdamage) VALUES ('%i', '%i', '%i', '%i', '%i', '%i', '%f', '%f', '%f', '%f', '%f')", frakid, 1, model, color1, color2, 100, posX, posY, posZ, posA, 1000.0);
mysql_function_query(dbhandle,query,true,"OnFrakVehicleCreate","i",i);
new string[128];
format(string, sizeof(string), ""cBlue"%s [%i]", fInfo[frakid][fshort], fvInfo[i][db_id]);
SetVehicleNumberPlate(vehid, string);
return vehid;
}
}
return -1;
}
Und das Callback sieht dann so aus:
public OnFrakVehicleCreate(idx)
{
fvInfo[idx][db_id] = cache_insert_id(dbhandle); //Hier sollte die db_id gesetzt werden, das ganze funktioniert nur leider nicht.
return 1;
}
Dann dürfte es klappen.
