Autos laden nicht

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
  • Geht trotzdem nicht


    //Edit


    Code
    error 028: invalid subscript (not an array or too many subscripts): "carKey"
    warning 215: expression has no effect
    error 001: expected token: ";", but found "]"
    error 029: invalid expression, assumed zero
    fatal error 107: too many error messages on one line

    Du hast was vergessen [;]
    new vid = carkey[playerid];

  • 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;
    }

  • @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.


    C
    ocmd:findcar(playerid,params[])
    {
    	new i = carKeyIdx[playerid];
    	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 markiert!");
    	return 1;
    }
  • 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: