Da sammeln sich wieder neue Probleme.
Diesmal gibt er mir beim Createcar die Fehlermeldung "Limit für Fraktionsfahrzeuge erreicht!"
Zweitens, bei meinem Speicher Public wird es so gemacht:
Ist ein Auto gekauft, spawnt es an seinem letzten Punkt, die Koordinaten werden also gespeichert.
Ist es nicht gekauft spawnt es da wo der Admin /Carpark gemacht hat.
Dazu hab ich den Save so gemacht:
forward SaveAllCars();
public SaveAllCars()
{
new query[512];
for(new i=0; i<MAX_AUTOS; i++)
{
if(CarInfo[i][modelID] >= 400 && CarInfo[i][modelID] <= 611)
{
if(CarInfo[i][c_Gekauft] == 0)
{
GetVehiclePos(CarInfo[i][c_vID], CarInfo[i][c_x], CarInfo[i][c_y], CarInfo[i][c_z]);
GetVehicleZAngle(CarInfo[i][c_vID], CarInfo[i][c_a]);
format(query, sizeof(query), "UPDATE Cars SET Besitzer = '%s',ModelID = '%d', PosX = '%f', PosY = '%f', PosZ = '%f', PosA = '%f', Color1 = '%d', Color2 = '%d',Preis = '%d',Gekauft = '%d' WHERE ID = '%d'",
CarInfo[i][Besitzer],CarInfo[i][modelID], CarInfo[i][c_x], CarInfo[i][c_y], CarInfo[i][c_z], CarInfo[i][c_a], CarInfo[i][c_color1], CarInfo[i][c_color2],CarInfo[i][c_Preis],CarInfo[i][c_Gekauft], i);
mysql_tquery(handle, query);
SendClientMessageToAll(info, "Nicht gekauft Autos wurden gespeichert!");
}
else if(CarInfo[i][c_Gekauft] == 1)
{
new Float:VehPos[4];
GetVehiclePos(CarInfo[i][c_vID],VehPos[0],VehPos[1],VehPos[2]);
GetVehicleZAngle(CarInfo[i][c_vID], VehPos[3]);
format(query, sizeof(query), "UPDATE Cars SET Besitzer = '%s',ModelID = '%d', PosX = '%f', PosY = '%f', PosZ = '%f', PosA = '%f', Color1 = '%d', Color2 = '%d',Preis = '%d',Gekauft = '%d' WHERE ID = '%d'",
CarInfo[i][Besitzer],CarInfo[i][modelID], VehPos[0], VehPos[1], VehPos[2], VehPos[3], CarInfo[i][c_color1], CarInfo[i][c_color2],CarInfo[i][c_Preis],CarInfo[i][c_Gekauft], i);
mysql_tquery(handle, query);
SendClientMessageToAll(info, "Gekaufte Autos wurden gespeichert!");
}
printf("query: %s", query);
/*format(query, sizeof(query), "UPDATE Cars SET Besitzer = '%s',ModelID = '%d', PosX = '%f', PosY = '%f', PosZ = '%f', PosA = '%f', Color1 = '%d', Color2 = '%d',Preis = '%d',Gekauft = '%d' WHERE ID = '%d'",
CarInfo[i][Besitzer],CarInfo[i][modelID], CarInfo[i][c_x], CarInfo[i][c_y], CarInfo[i][c_z], CarInfo[i][c_a], CarInfo[i][c_color1], CarInfo[i][c_color2],CarInfo[i][c_Preis],CarInfo[i][c_Gekauft], i);
*/
}
}
SendClientMessageToAll(info, "Alle Fahrzeuge wurden gespeichert!");
return 1;
}
Jedoch wird es nur so gespeichert wenn ich bsp ein neues Auto erstelle und das dann Parke.
Dann bekomme ich die Nachrichten (Jenachdem ob ich es gekauft habe oder nicht)
falls gekauft: SendClientMessageToAll(info, "Gekaufte Autos wurden gespeichert!");
falls nicht; SendClientMessageToAll(info, "Nicht gekauft Autos wurden gespeichert!");
+ SendClientMessageToAll(info, "Alle Fahrzeuge wurden gespeichert!");
Hab ich mehrere Fahrzeuge(jetzt nicht mehr möglich da die Fehlermeldung oben kommt) gekauft kommen dann halt beide + Alle fahrzeuge gespeichert.
Das soll ja nicht so sein, es sollen immer alle gespeichert werden muss ich dann das else weg lassen?
Weil wenn ich eins gekauft habe und eins nicht, wird entweder nur das nicht gekaufte gespeichert, das gekaufte oder "Alle fahrzeuge gespeichert" aber es wird im endeffekt nichts gesavet.
Sorry wenn ich schlecht erkläre.
Noch dazu:
Nach einem GMX kann ich keine Fahrzeuge mehr löschen / Parken oder sonstiges da kommt immer die Meldung
if(vid <= 0) return SendClientMessage(playerid, error, "Vehicle-ID ist kein kaufbares Auto.");
oder
SendClientMessage(playerid, error, "Dieses Fahrzeug kann nicht geparkt werden.");
ocmd:deletecar(playerid, params[])
{
new vid = GetPlayerVehicleID(playerid);
//if(sscanf(params,"d",vid)) return SendClientMessage(playerid, error, "Nutze: /ffloeschen [Vehicle ID]");
if(vid <= 0) return SendClientMessage(playerid, error, "Vehicle-ID ist kein kaufbares Auto.");
for(new i=0; i<MAX_AUTOS; i++)
{
if(CarInfo[i][c_vID] == vid)
{
format(CarInfo[i][Besitzer], 34, "");
CarInfo[i][modelID] = 0;
CarInfo[i][c_x] = 0.0;
CarInfo[i][c_y] = 0.0;
CarInfo[i][c_z] = 0.0;
CarInfo[i][c_a] = 0.0;
CarInfo[i][c_color1] = 0;
CarInfo[i][c_color2] = 0;
CarInfo[i][c_Preis] = -1;
CarInfo[i][c_Gekauft] = -1;
new query[128];
format(query, sizeof(query), "DELETE FROM Cars WHERE ID = '%d'", i);
mysql_tquery(handle, query);
DestroyVehicle(CarInfo[i][c_vID]);
CarInfo[i][c_vID] = 0;
return SendClientMessage(playerid, info, "Fahrzeug gelöscht.");
}
}
return SendClientMessage(playerid, error, "Vehicle-ID ist kein Fraktions-Fahrzeug.");
}
ocmd:carpark(playerid)
{
if(SpielerInfo[playerid][pAdmin] < 5) return SendClientMessage(playerid, error, "Du bist kein Admin!");
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, error, "Du bist in keinem Fahrzeug.");
new vehicleid = GetPlayerVehicleID(playerid);
if(SaveCarCheck(vehicleid)) return SendClientMessage(playerid, erfolg, "Fahrzeug geparkt.");
else return SendClientMessage(playerid, error, "Dieses Fahrzeug kann nicht geparkt werden.");
}
Und das ist ziemlich komisch.
Jeffry:
Jetzt bist du gefragt, diesmal hab ich mich sehr stark an deinem Tutorial orientiert
Mit freundlichen Grüßen