Da kommt irgendwie gar nichts
Problem mit createfcar
- JOK3R
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Poste bitte das Query mit dem du LoadFracVehicles_Data aufrufst.
-
das ?
LoadFracVehicles()
{
new vehicleid, query[128];
format(query,sizeof(query),"SELECT * FROM frakautos ORDER BY ID ASC");
mysql_function_query(dbhandle,query,true,"LoadFracVehicles_Data","i",vehicleid);
return 1;
} -
Mach das mal zu:
mysql_function_query(dbhandle,query,true,"LoadFracVehicles_Data","");
bzw:
mysql_pquery(dbhandle,query,"LoadFracVehicles_Data",""); -
-
Sorry, hab die Anzahl vergessen.
Mache es so:
public LoadFracVehicles_Data()
{
printf("LoadFracVehicles_Data aufgerufen.");
new rows, id, createdVehs;
new num_fields,num_rows;
cache_get_data(num_rows,num_fields,dbhandle);
printf("%d Fahrzeuge gefunden.", num_rows);
for(new i=0; i<rows; i++)
{
id = cache_get_field_content_int(i, "ID");
printf("id: %d", id);
if(id < 0 || id >= MAX_FRAC_VEHICLES) continue;
fcInfo[id][e_modelID] = cache_get_field_content_int(i, "ModelID");
fcInfo[id][e_x] = cache_get_field_content_float(i, "PosX");
fcInfo[id][e_y] = cache_get_field_content_float(i, "PosY");
fcInfo[id][e_z] = cache_get_field_content_float(i, "PosZ");
fcInfo[id][e_a] = cache_get_field_content_float(i, "PosA");
fcInfo[id][e_color1] = cache_get_field_content_int(i, "Color1");
fcInfo[id][e_color2] = cache_get_field_content_int(i, "Color2");
fcInfo[id][e_fracID] = cache_get_field_content_int(i, "FracID");
if(fcInfo[id][e_modelID] >= 400 && fcInfo[id][e_modelID] <= 611)
{
printf("%d %f %f %f %f %d %d", fcInfo[id][e_modelID], fcInfo[id][e_x], fcInfo[id][e_y], fcInfo[id][e_z], fcInfo[id][e_a], fcInfo[id][e_color1], fcInfo[id][e_color2]);
fcInfo[id][e_vID] = CreateVehicle(fcInfo[id][e_modelID], fcInfo[id][e_x], fcInfo[id][e_y], fcInfo[id][e_z], fcInfo[id][e_a], fcInfo[id][e_color1], fcInfo[id][e_color2], -1);
printf("Erstellt: %d", fcInfo[id][e_vID]);
}
else
{
printf("[ERROR] Model-ID %d existiert nicht (ID: %d).", fcInfo[id][e_modelID], id);
}
if(GetVehicleModel(MAX_VEHICLES-1) != 0) return print("Es können keine weiteren Fahrzeuge geladen werden, Limit (MAX_VEHICLES) erreicht.");
createdVehs++;
if(createdVehs == MAX_FRAC_VEHICLES) return print("Es können keine weiteren Fahrzeuge geladen werden, Limit (MAX_FRAC_VEHICLES) erreicht.");
}
return 1;
}Dem Log kann man aber wohl entnehmen, dass die Anzahl 0 ist.
Heißt deine Tabelle auch wirklich frakautos?
-
Ja Hier
http://prntscr.com/7p2gxr//edit
Trotzdem keine ingame gespawnt
//edit
und irgendwie ist das mit dem Color2 und FracID vertauscht anstatt da bei Color 86 steht steht da jetzt die Frac id also 7 und bei Fracid steht da halt 86
war vorher nicht so wo ich es vorhin noch getestet habe
http://prntscr.com/7p2jm3 -
Ahh, ich seh's:
for(new i=0; i<rows; i++)
zu:
for(new i=0; i<num_rows; i++)Zwecks dem Vertauschen: Schau mal beim Speichern, ob du da nicht etwas vertauscht hast.
-
Also entweder bin ich Blind oder blöd
public SaveAllFracVehs()
{
new query[256];
for(new i=0; i<MAX_FRAC_VEHICLES; i++)
{
if(fcInfo[i][e_modelID] >= 400 && fcInfo[i][e_modelID] <= 611)
{
GetVehiclePos(fcInfo[i][e_vID], fcInfo[i][e_x], fcInfo[i][e_y], fcInfo[i][e_z]);
GetVehicleZAngle(fcInfo[i][e_vID], fcInfo[i][e_a]);
format(query, sizeof(query), "UPDATE frakautos SET ModelID = '%d', PosX = '%f', PosY = '%f', PosZ = '%f', PosA = '%f', Color1 = '%d', Color2 = '%d', FracID = '%d' WHERE ID = '%d'",
fcInfo[i][e_modelID], fcInfo[i][e_x], fcInfo[i][e_y], fcInfo[i][e_z], fcInfo[i][e_a], fcInfo[i][e_color1], fcInfo[i][e_color2], fcInfo[i][e_fracID], i);
mysql_function_query(dbhandle, query, false, "", "");
}
}
return 1;
}stock SaveFracVehCheck(vehicleid)
{
new query[256];
for(new i=0; i<MAX_FRAC_VEHICLES; i++)
{
if(fcInfo[i][e_vID] == vehicleid)
{
GetVehiclePos(fcInfo[i][e_vID], fcInfo[i][e_x], fcInfo[i][e_y], fcInfo[i][e_z]);
GetVehicleZAngle(fcInfo[i][e_vID], fcInfo[i][e_a]);
format(query, sizeof(query), "UPDATE frakautos SET ModelID = '%d', PosX = '%f', PosY = '%f', PosZ = '%f', PosA = '%f', Color1 = '%d', Color2 = '%d', FracID = '%d' WHERE ID = '%d'",
fcInfo[i][e_modelID], fcInfo[i][e_x], fcInfo[i][e_y], fcInfo[i][e_z], fcInfo[i][e_a], fcInfo[i][e_color1], fcInfo[i][e_color2], fcInfo[i][e_fracID], i);
mysql_function_query(dbhandle, query, false, "", "");
return 1;
}
}
return 0;}
-
Hm, das sieht alles gut aus.
Du kannst ja nochmal alle Fahrzeuge löschen und neu erstellen. Davor fügst du bei jedem Query von den Fahrzeugen einen print hinzu, und schaust, ab wann es die beiden vertauscht. An sich sind die beiden Codes aber korrekt. -
hmm anscheint hat nur die Tabelle rum gebuggt sollte jetzt alles klappen danke Jeffry
und gz für 10k Beiträge :pEhm jetzt habe ich noch eine frage zu dem command
ocmd:deletefcar(playerid, params[])
{
new vid;
if(!IsNumeric(params) || !strlen(params)) return SendClientMessage(playerid, COLOR_GREY, "INFO: {FF9600}/deletefcar {B3B3B3}[Vehicle ID]");
vid = strval(params);
if(vid <= 0) return SendClientMessage(playerid, COLOR_DRED, "Error: Vehicle-ID ist kein Fraktions-Fahrzeug.");
for(new i=0; i<MAX_FRAC_VEHICLES; i++)
{
if(fcInfo[i][e_vID] == vid)
{
fcInfo[i][e_modelID] = 0;
fcInfo[i][e_x] = 0.0;
fcInfo[i][e_y] = 0.0;
fcInfo[i][e_z] = 0.0;
fcInfo[i][e_a] = 0.0;
fcInfo[i][e_color1] = 0;
fcInfo[i][e_color2] = 0;
fcInfo[i][e_fracID] = -1;
new query[128];
format(query, sizeof(query), "DELETE FROM FracVehicles WHERE ID = '%d'", i);
mysql_function_query(dbhandle,query,false,"","");
DestroyVehicle(fcInfo[i][e_vID]);
fcInfo[i][e_vID] = 0;
return SendClientMessage(playerid, COLOR_DGREEN, "** Das Fahrzeug wurde Erfolgreich gelöscht. **");
}
}
return SendClientMessage(playerid, COLOR_DRED, "Error: Vehicle-ID ist kein Fraktions-Fahrzeug.");
}Sobald ich den Command eingebe steht da Error: Vehicle-ID ist kein Fraktions-Fahrzeug
-
Was wird dir so im Server Log ausgegeben?
ocmd:deletefcar(playerid, params[])
{
new vid;
if(!IsNumeric(params) || !strlen(params)) return SendClientMessage(playerid, COLOR_GREY, "INFO: {FF9600}/deletefcar {B3B3B3}[Vehicle ID]");
vid = strval(params);
printf("params: %s / vid: %d", params, vid);
if(vid <= 0) return SendClientMessage(playerid, COLOR_DRED, "Error: Vehicle-ID ist kein Fraktions-Fahrzeug.");
for(new i=0; i<MAX_FRAC_VEHICLES; i++)
{
printf("i: %d / e_vID: %d / vid: %d", i, fcInfo[i][e_vID], vid);
if(fcInfo[i][e_vID] == vid)
{
printf("Lösche.");
fcInfo[i][e_modelID] = 0;
fcInfo[i][e_x] = 0.0;
fcInfo[i][e_y] = 0.0;
fcInfo[i][e_z] = 0.0;
fcInfo[i][e_a] = 0.0;
fcInfo[i][e_color1] = 0;
fcInfo[i][e_color2] = 0;
fcInfo[i][e_fracID] = -1;
new query[128];
format(query, sizeof(query), "DELETE FROM FracVehicles WHERE ID = '%d'", i);
mysql_function_query(dbhandle,query,false,"","");
DestroyVehicle(fcInfo[i][e_vID]);
fcInfo[i][e_vID] = 0;
return SendClientMessage(playerid, COLOR_DGREEN, "** Das Fahrzeug wurde Erfolgreich gelöscht. **");
}
}
printf("Keins gefunden.");
return SendClientMessage(playerid, COLOR_DRED, "Error: Vehicle-ID ist kein Fraktions-Fahrzeug.");
}PS: Danke
-
Da kommt dann das hier
[18:08:36] params: 567 / vid: 567
[18:08:36] i: 0 / e_vID: 0 / vid: 567
[18:08:36] i: 1 / e_vID: 0 / vid: 567
[18:08:36] i: 2 / e_vID: 0 / vid: 567
[18:08:36] i: 3 / e_vID: 0 / vid: 567
[18:08:36] i: 4 / e_vID: 0 / vid: 567
[18:08:36] i: 5 / e_vID: 0 / vid: 567
[18:08:36] i: 6 / e_vID: 0 / vid: 567
[18:08:36] i: 7 / e_vID: 0 / vid: 567
[18:08:36] i: 8 / e_vID: 0 / vid: 567
[18:08:36] i: 9 / e_vID: 41 / vid: 567
[18:08:36] Keins gefunden. -
Du musst die vehicleid eingeben, nicht die modelid.
Sprich, du musst 41 eingeben. -
ohhh das wusste ich nicht
Okay war mein Fehler hahaDanke Jeffry für deine zeit und Geduld
-
breadfish.de
Hat das Thema geschlossen.