Hilfe beim Fahrzeug laden [MySQL]

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
  • Hallo,


    wieso werden die Fahrzeuge nicht geladen. Ich bekomme nur einen mysql error code:


    Code
    [20:38:44] [ERROR] "mysql_tquery" - invalid connection handle (ID = 0)
    [20:40:43] [ERROR] "mysql_tquery" - invalid connection handle (ID = 0)


    Hier der Pawn code:


    loadPlayerCars(playerid)
    {
    new query[128];
    format(query,sizeof(query),"SELECT * FROM user_privatfahrzeuge WHERE besitzer='%i'",sInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,true,"OnPlayerCarsLoad","i",playerid);
    return 1;
    }


    GetFreePlayerCarID()
    {
    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x] == 0)return i;
    }
    return 0;
    }


    public OnPlayerCarsLoad(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(!num_rows)return 1;
    for(new i=0; i<num_rows; i++)
    {
    new id=GetFreePlayerCarID();
    cInfo[id][model] = cache_get_field_content_int(i,"model",dbhandle);
    cInfo[id][besitzer] = cache_get_field_content_int(i,"besitzer",dbhandle);
    cInfo[id][c_x] = cache_get_field_content_float(i,"x",dbhandle);
    cInfo[id][c_y] = cache_get_field_content_float(i,"y",dbhandle);
    cInfo[id][c_z] = cache_get_field_content_float(i,"z",dbhandle);
    cInfo[id][c_r] = cache_get_field_content_float(i,"r",dbhandle);
    cInfo[id][db_id] = cache_get_field_content_int(i,"id",dbhandle);
    cInfo[id][id_x] = CreateVehicle(cInfo[id][model],cInfo[id][c_x],cInfo[id][c_y],cInfo[id][c_z],cInfo[id][c_r],-1,-1,-1);
    }
    return 1;
    }


    unter gamemode init:


    for(new i=0; i<sizeof(cInfo); i++)
    {
    loadPlayerCars(i);
    print("Fahrzeuge geladen");
    }


    damit alle Fahrzeuge auf einmal geladen werden. Die auf LoG :)





    bitte um Hilfe. Ich weiß nicht mehr weiter :)


    LG Exon

  • Scheint mir, als rufst du das Laden der Fahrzeuge auf, bevor du die Verbindung zum MySQL Server herstellst.

    alles Klar.


    Habe jetzt die mysql connection ganz oben ins gamemode init rein. Es kommen jetzt zwar keine error mehr, aber dei Fahrzeuge werden immernoch nicht geladen :(


    EDIT//:


    Laut der mysql log wird es geladen. Jedoch werden die autos nicht gespawnt.


    hier die mysql log:


    Einmal editiert, zuletzt von Exon ()

  • for(new i=0; i<sizeof(cInfo); i++){ loadPlayerCars(i); print("Fahrzeuge geladen");}


    zu:
    mysql_function_query(dbhandle,"SELECT * FROM user_privatfahrzeuge",true,"OnPlayerCarsLoad","i",-1);

    Vielen Dank es funktioniert.


    Jedoch kommt wieder ein neues Problem.


    Die Wenn ich mich auslogge sollten die autos gespeichert werden. Also die Position soll neu gespeichert werden. Wenn ich in mein Fahrzeug reinsteige, es wo anders hinstelle und dann ein server gmx mache dann steht des Fahrzeug wieder da wo ich es erstellt hab. Also sprich die Position vom auto wird nur dann gespeichert, wenn ich es des erste mal erstelle. Also die Fahrzeug Pos wird nicht geupdatet in die mysql datenbank.


    Hier bei onplayerdisconnect:


    for(new i=0; i<sizeof(cInfo); i++)
    {
    if(cInfo[i][id_x]!=0)continue;
    if(cInfo[i][besitzer]!=sInfo[playerid][db_id])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]);
    new query[128];
    format(query,sizeof(query),"UPDATE user_privatfahrzeuge 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_function_query(dbhandle,query,false,"","");
    }


    Was soll ich tun?

  • Gibt dir der MySQL Log etwas aus, wenn du dich ausloggst?

    Nur das: