Du hast was vergessen [;]
new vid = carkey[playerid];
Autos laden nicht
- timm462f
- 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
-
-
Nein ist da
-
new carKey[MAX_PLAYERS];
new carKeyIdx[MAX_PLAYERS]; -
und wie mache ich das das ausgewählte fahrzeug auf der Karte makiert wird?
ocmd:findcar(playerid,params[])
{
new query[128], data[356];
format(query,sizeof(query),"SELECT * FROM autos WHERE besitzer='%i'",PlayerInfo[playerid][pMySQLID]);
mysql_query(query);
printf("query = %s", query);
mysql_store_result();
new num_rows = mysql_num_rows();
printf("%i num rows",num_rows);
if(num_rows > 0)
{
while(mysql_fetch_row(data))
{
new i=getFreeCarID();
new vid = carKey[playerid];
mysql_fetch_field("x",data); cInfo[i][c_x] = floatstr(data);
mysql_fetch_field("y",data); cInfo[i][c_y] = floatstr(data);
mysql_fetch_field("z",data); cInfo[i][c_z] = floatstr(data);
mysql_fetch_field("r",data); cInfo[i][c_r] = floatstr(data);
vid = SetPlayerCheckpoint(playerid,cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z],8.0);
SendClientMessage(playerid,COLOR_YELLOW,"Dein Fahrzeug wurde dir auf der Karte makiert");
}
}
mysql_free_result();
return 1;
} -
Du musst zu dieser Strecke gehn dann /Save --> den Code fügst du dann in Script, bei ocmd:findcar
-
Du musst zu dieser Strecke gehn dann /save dann den Code in Script einfügen
Die User können mit dem Befehl /parken ihre Fahrzeuge umparken und somit stehen sie dann an einer anderen stelle deswegen wäre es sinnvoll direkt die Pos aus der DB zu lesen
-
@timm462f
Dein "/findcar" Befehl solltest du am besten umschreiben. Du brauchst ja nicht bei jedem Aufruf von "/findcar" die Positionen aus der Datenbank lesen, das reicht ja beim connecten vom Spieler. Danach kannst du es ja immer in die Variablen überschreiben, sodass du dann den Aufruf zur Datenbank bei "/findcar" dir sparen kannst.Wenn du meinen "Tipp" oben befolgst, dann kannst du deinen Befehl so schreiben, der ist um einiges kürzer.
-
Ja aber das umpacken wird direkt in die DB geschrieben
-
Macht ja nichts. Dann fügst du halt die Variablen da noch mit in den Befehl mit ein, dann passt das. Falls du nicht weißt was ich meine, dann schick mal den Parken-Befehl.
-
ocmd:parken(playerid,params[])
{
new query[333];
if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)return SendClientMessage(playerid,COLOR_RED,"Du bist nicht der Fahrer eines Fahrzeugs.");
for(new i=0; i<sizeof(cInfo); i++)
{
if(cInfo[i][id_x]==0)continue;
if(cInfo[i][besitzer]!=PlayerInfo[playerid][pMySQLID])continue;
GetVehiclePos(cInfo[i][id_x],cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z]);
GetVehicleZAngle(cInfo[i][id_x],cInfo[i][c_r]);
format(query,sizeof(query),"UPDATE autos SET x='%f',y='%f',z='%f',r='%f' WHERE id='%i'",cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z],cInfo[i][c_r],cInfo[i][db_id]);
mysql_query(query);
}
SendClientMessage(playerid,COLOR_YELLOW,"Du hast dein Fahrzeug erfolgreich umgeparkt.");
return 1;
} -
Du willst bestimmt das so haben, das man nur das Fahrzeug parken kann, wofür man auch gerade den Schlüssel ausgewählt hat, oder?
Dann so:C
Alles anzeigenocmd:parken(playerid,params[]) { if(!IsPlayerInVehicle(playerid,carKey[playerid]))return SendClientMessage(playerid,COLOR_RED,"Du bist nicht in deinem Fahrzeug mit dem ausgewählten Schlüssel!"); new i = carKeyIdx[playerid]; new query[333]; GetVehiclePos(cInfo[i][id_x],cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z]); GetVehicleZAngle(cInfo[i][id_x],cInfo[i][c_r]); format(query,sizeof(query),"UPDATE autos SET x='%f',y='%f',z='%f',r='%f' WHERE id='%i'",cInfo[i][c_x],cInfo[i][c_y],cInfo[i][c_z],cInfo[i][c_r],cInfo[i][db_id]); mysql_query(query); SendClientMessage(playerid,COLOR_YELLOW,"Du hast dein Fahrzeug erfolgreich umgeparkt."); return 1; }
-
breadfish.de
Hat das Thema geschlossen.