format(query, sizeof(query), "UPDATE Autos SET x='%f',y='%f',z='%f',r='%f' WHERE db_id='%i' ",AutoInfo[i] [c_x],AutoInfo[i] [c_y],AutoInfo[i] [c_z],AutoInfo[i] [c_r],AutoInfo[i] [db_id]);
Es gibt nur ein WHERE bei dir im Command.
Bei deiner query.
format(query, sizeof(query), "UPDATE Autos SET x='%f',y='%f',z='%f',r='%f' WHERE db_id='%i' ",AutoInfo[i] [c_x],AutoInfo[i] [c_y],AutoInfo[i] [c_z],AutoInfo[i] [c_r],AutoInfo[i] [db_id]);
Es gibt nur ein WHERE bei dir im Command.
Bei deiner query.
die db_id ist von der db. ich habe es auch mit id versucht geht auch nicht. ich kann kein auto parken
naja ob du db_id oder id hinter dein WHERE schreibst, du musst ja wissen wie es bei dir in der Datenbank steht.
ob da id, db_id oder nummer steht da musst du in deine Datenbank schauhst.
[20:44:23] [DEBUG] cache_get_field_content_int - row: 0, field_name: "Besitzer", connection: 1
[20:44:23] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "Besitzer", data: "0"
[20:44:23] [DEBUG] cache_get_field_content_int - row: 0, field_name: "model", connection: 1
[20:44:23] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "model", data: "560"
[20:44:23] [DEBUG] cache_get_field_content_float - row: 0, field_name: "c_x", connection: 1
[20:44:23] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "c_x", data: "368.143"
[20:44:23] [DEBUG] cache_get_field_content_float - row: 0, field_name: "c_y", connection: 1
[20:44:23] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "c_y", data: "-2030.62"
[20:44:23] [DEBUG] cache_get_field_content_float - row: 0, field_name: "c_z", connection: 1
[20:44:23] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "c_z", data: "7.67188"
[20:44:23] [DEBUG] cache_get_field_content_float - row: 0, field_name: "c_r", connection: 1
[20:44:23] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "c_r", data: "340.635"
[20:44:23] [DEBUG] cache_get_field_content_int - row: 0, field_name: "id", connection: 1
[20:44:23] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "id", data: "81"
[20:44:23] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called
[20:44:26] [DEBUG] mysql_close - connection: 1
[20:44:26] [DEBUG] CMySQLConnection::Disconnect - connection was closed
[20:44:26] [DEBUG] CMySQLHandle::~CMySQLHandle - deconstructor called
Alles anzeigen
ich frage mich nur wieso der da ein fehler anzeigt
Wo wird dir denn welcher Fehler angezeigt?
auszug aus der MYSQL.log datei:
[20:44:23] [DEBUG] cache_get_field_content_int - row: 0, field_name: "Besitzer", connection: 1
[20:44:23] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "Besitzer", data: "0"
[20:44:23] [DEBUG] cache_get_field_content_int - row: 0, field_name: "model", connection: 1
[20:44:23] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "model", data: "560"
[20:44:23] [DEBUG] cache_get_field_content_float - row: 0, field_name: "c_x", connection: 1
[20:44:23] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "c_x", data: "368.143"
[20:44:23] [DEBUG] cache_get_field_content_float - row: 0, field_name: "c_y", connection: 1
[20:44:23] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "c_y", data: "-2030.62"
[20:44:23] [DEBUG] cache_get_field_content_float - row: 0, field_name: "c_z", connection: 1
[20:44:23] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "c_z", data: "7.67188"
[20:44:23] [DEBUG] cache_get_field_content_float - row: 0, field_name: "c_r", connection: 1
[20:44:23] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "c_r", data: "340.635"
[20:44:23] [DEBUG] cache_get_field_content_int - row: 0, field_name: "id", connection: 1
[20:44:23] [DEBUG] CMySQLResult::GetRowDataByName - row: '0', field: "id", data: "81"
[20:44:23] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called
[20:44:26] [DEBUG] mysql_close - connection: 1
[20:44:26] [DEBUG] CMySQLConnection::Disconnect - connection was closed
[20:44:26] [DEBUG] CMySQLHandle::~CMySQLHandle - deconstructor called
Alles anzeigen
und das stimmt nicht mit 368.143 der cordinate weil ich habe ja auto wo anders geparkt aber das wird nicht gemacht
Wie sieht der Code zum Parken aus?
ocmd:autoparken(playerid, params[])
{
new Float:x, Float:y, Float:z, Float:r;
for (new i = 0; i < sizeof(AutoInfo); i++)
{
if(!strcmp(AutoInfo[i] [Besitzer], SpielerName(playerid)))
{
//Er sucht ab, ob der spieler ein auto besitzt, wenn ja:
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, dunkelgrün, "Du bist in kein Auto!");
GetVehiclePos(AutoInfo[i][Fahrzeugid], AutoInfo[i][c_x],AutoInfo[i][c_y],AutoInfo[i][c_z]);
GetVehicleZAngle(AutoInfo[i] [Fahrzeugid],AutoInfo[i][c_r]);
new vID = GetPlayerVehicleID(playerid);
if(vID == AutoInfo[i] [Fahrzeugid])
{
new query[128];
AutoInfo[i][c_x] = x;
AutoInfo[i][c_y] = y;
AutoInfo[i][c_z] = z;
AutoInfo[i][c_r] = r;
format(query, sizeof(query), "UPDATE Autos SET x='%f',y='%f',z='%f',r='%f' WHERE id='%i' ",AutoInfo[i] [c_x],AutoInfo[i] [c_y],AutoInfo[i] [c_z],AutoInfo[i] [c_r],AutoInfo[i] [db_id]);
mysql_function_query(dbhandle,query,false," "," ");
SendClientMessage(playerid, dunkelgrün, "Du hast dein Auto geparkt.");
return 1;
}
return SendClientMessage(playerid, dunkelgrün, "Du sitzt nicht in deinem Auto!");
}
}
der will einfach das auto nicht parken
ocmd:autoparken(playerid, params[])
{
for (new i = 0; i < sizeof(AutoInfo); i++)
{
if(!strcmp(AutoInfo[i][Besitzer], SpielerName(playerid)))
{
//Er sucht ab, ob der spieler ein auto besitzt, wenn ja:
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, dunkelgrün, "Du bist in kein Auto!");
new vID = GetPlayerVehicleID(playerid);
if(vID == AutoInfo[i] [Fahrzeugid])
{
new query[128];
GetVehiclePos(vID, AutoInfo[i][c_x],AutoInfo[i][c_y],AutoInfo[i][c_z]);
GetVehicleZAngle(vID,AutoInfo[i][c_r]);
format(query, sizeof(query), "UPDATE Autos SET x='%f',y='%f',z='%f',r='%f' WHERE id='%i' ",AutoInfo[i] [c_x],AutoInfo[i] [c_y],AutoInfo[i] [c_z],AutoInfo[i] [c_r],AutoInfo[i] [db_id]);
printf("query: %s", query);
mysql_function_query(dbhandle,query,false," "," ");
SendClientMessage(playerid, dunkelgrün, "Du hast dein Auto geparkt.");
return 1;
}
return SendClientMessage(playerid, dunkelgrün, "Du sitzt nicht in deinem Auto!");
}
}
Falls es nicht klappt, poste was im Server Log steht wenn du den Befehl ausgeführt hast.
so geht es leider nicht bekomme nur errors
Was für Errors?
Hast du den gesamten Befehl ersetzt? Wenn ja, dann ist es klar, da ja unten eine Klammer fehlt. Ich habe diese mit Absicht weg gelassen, da ich nicht weiß ob da noch etwas folgt.
Falls nicht, so:
ocmd:autoparken(playerid, params[])
{
for (new i = 0; i < sizeof(AutoInfo); i++)
{
if(!strcmp(AutoInfo[i][Besitzer], SpielerName(playerid)))
{
//Er sucht ab, ob der spieler ein auto besitzt, wenn ja:
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, dunkelgrün, "Du bist in kein Auto!");
new vID = GetPlayerVehicleID(playerid);
if(vID == AutoInfo[i] [Fahrzeugid])
{
new query[128];
GetVehiclePos(vID, AutoInfo[i][c_x],AutoInfo[i][c_y],AutoInfo[i][c_z]);
GetVehicleZAngle(vID,AutoInfo[i][c_r]);
format(query, sizeof(query), "UPDATE Autos SET x='%f',y='%f',z='%f',r='%f' WHERE id='%i' ",AutoInfo[i] [c_x],AutoInfo[i] [c_y],AutoInfo[i] [c_z],AutoInfo[i] [c_r],AutoInfo[i] [db_id]);
printf("query: %s", query);
mysql_function_query(dbhandle,query,false," "," ");
SendClientMessage(playerid, dunkelgrün, "Du hast dein Auto geparkt.");
return 1;
}
return SendClientMessage(playerid, dunkelgrün, "Du sitzt nicht in deinem Auto!");
}
}
return 1;
}
Es kommt einfach kein Error Jeffry. Das Auto wird einfach nicht geparkt und somit funktoniert:
Autosparken:
cmd:autoparken(playerid, params[])
{
for (new i = 0; i < sizeof(AutoInfo); i++)
{
if(!strcmp(AutoInfo[i][Besitzer], SpielerName(playerid)))
{
//Er sucht ab, ob der spieler ein auto besitzt, wenn ja:
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, dunkelgrün, "Du bist in kein Auto!");
new vID = GetPlayerVehicleID(playerid);
if(vID == AutoInfo[i] [Fahrzeugid])
{
new query[128];
GetVehiclePos(vID, AutoInfo[i][c_x],AutoInfo[i][c_y],AutoInfo[i][c_z]);
GetVehicleZAngle(vID,AutoInfo[i][c_r]);
format(query, sizeof(query), "UPDATE Autos SET x='%f',y='%f',z='%f',r='%f' WHERE id='%i' ",AutoInfo[i] [c_x],AutoInfo[i] [c_y],AutoInfo[i] [c_z],AutoInfo[i] [c_r],AutoInfo[i] [db_id]);
printf("query: %s", query);
mysql_function_query(dbhandle,query,false," "," ");
SendClientMessage(playerid, dunkelgrün, "Du hast dein Auto geparkt.");
return 1;
}
return SendClientMessage(playerid, dunkelgrün, "Du sitzt nicht in deinem Auto!");
}
}
return 1;
}
Versuche es so:
cmd:autoparken(playerid, params[])
{
printf("InVeh: %d", IsPlayerInAnyVehicle(playerid));
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, dunkelgrün, "Du bist in kein Auto!");
new vID = GetPlayerVehicleID(playerid);
for(new i = 0; i < sizeof(AutoInfo); i++)
{
printf("i: %d / vID: %d / Fahrzeugid: %d", i, vID, AutoInfo[i][Fahrzeugid]);
if(vID == AutoInfo[i][Fahrzeugid])
{
printf("Besitzer: %s / Name: %s", AutoInfo[i][Besitzer], SpielerName(playerid));
//Er sucht ab, ob der spieler ein auto besitzt, wenn ja:
if(!strcmp(AutoInfo[i][Besitzer], SpielerName(playerid)))
{
new query[128];
GetVehiclePos(vID, AutoInfo[i][c_x],AutoInfo[i][c_y],AutoInfo[i][c_z]);
GetVehicleZAngle(vID,AutoInfo[i][c_r]);
format(query, sizeof(query), "UPDATE Autos SET x='%f',y='%f',z='%f',r='%f' WHERE id='%i'",AutoInfo[i][c_x],AutoInfo[i][c_y],AutoInfo[i][c_z],AutoInfo[i][c_r],AutoInfo[i][db_id]);
printf("query: %s", query);
mysql_function_query(dbhandle,query,false," "," ");
SendClientMessage(playerid, dunkelgrün, "Du hast dein Auto geparkt.");
printf("Auto %d wurde geparkt.", i);
return 1;
}
}
}
return SendClientMessage(playerid, dunkelgrün, "Du sitzt nicht in deinem Auto!");
}
Wenn es nicht geht, poste was im Server Log steht, wenn du den Befehl ausführst.
ocmd:autoparken(playerid, params[])
{
for (new i = 0; i < sizeof(AutoInfo); i++)
{
if(!strcmp(AutoInfo[i][Besitzer], SpielerName(playerid)))
{
//Er sucht ab, ob der spieler ein auto besitzt, wenn ja:
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, dunkelgrün, "Du bist in kein Auto!");
new vID = GetPlayerVehicleID(playerid);
if(vID == AutoInfo[i] [Fahrzeugid])
{
new query[128];
GetVehiclePos(vID, AutoInfo[i][c_x],AutoInfo[i][c_y],AutoInfo[i][c_z]);
GetVehicleZAngle(vID,AutoInfo[i][c_r]);
format(query, sizeof(query), "UPDATE Autos SET c_x='%f',c_y='%f',c_z='%f',c_r='%f' WHERE id='%i' ",AutoInfo[i] [c_x],AutoInfo[i] [c_y],AutoInfo[i] [c_z],AutoInfo[i] [c_r],AutoInfo[i] [db_id]);
mysql_function_query(dbhandle,query,false," "," ");
SendClientMessage(playerid, dunkelgrün, "Du hast dein Auto geparkt.");
return 1;
}
return SendClientMessage(playerid, dunkelgrün, "Du sitzt nicht in deinem Auto!");
}
}
return 1;
}
so geht mein befehl nun
Das solltest du aber aus Performance-Gründen so schreiben:
ocmd:autoparken(playerid, params[])
{
new vID = GetPlayerVehicleID(playerid);
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, dunkelgrün, "Du bist in kein Auto!");
for (new i = 0; i < sizeof(AutoInfo); i++)
{
if(vID == AutoInfo[i] [Fahrzeugid])
{
if(!strcmp(AutoInfo[i][Besitzer], SpielerName(playerid)))
{
new query[128];
GetVehiclePos(vID, AutoInfo[i][c_x],AutoInfo[i][c_y],AutoInfo[i][c_z]);
GetVehicleZAngle(vID,AutoInfo[i][c_r]);
format(query, sizeof(query), "UPDATE Autos SET c_x='%f',c_y='%f',c_z='%f',c_r='%f' WHERE id='%i' ",AutoInfo[i] [c_x],AutoInfo[i] [c_y],AutoInfo[i] [c_z],AutoInfo[i] [c_r],AutoInfo[i] [db_id]);
mysql_function_query(dbhandle,query,false," "," ");
SendClientMessage(playerid, dunkelgrün, "Du hast dein Auto geparkt.");
return 1;
}
break;
}
}
return SendClientMessage(playerid, dunkelgrün, "Du sitzt nicht in deinem Auto!");
}
Sonst machst du einige Abfragen mehrmals und das macht keinen Sinn.