[MySQL/sscanf] Fahrzeug(e) laden

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 Community,
    ich habe folgendes Problem:
    Ich will bei OnPlayerConnect die Fahrzeuge laden und das klappt auch ganz gut, bis auf die Positionen (Float).
    Ich bin echt am verzweifeln, weil ich schon 3 Tage dran sitze und ich anscheinend zu dumm dafür bin.
    Das Script läuft unter Linux (Debian) und das MySQL-Plugin ist von Strickenkid.



    enum auto_daten
    {
    model,
    col1,
    col2,
    key[24],
    id,
    Float:x,
    Float:y,
    Float:z,
    Float:a
    }


    new Auto[5][auto_daten],
    daten1[128],
    daten2[128];


    mysql_init();
    mysql_connect("localhost", "***", "***", "***");
    new query[100];
    format(query, sizeof query, "SELECT Count(*) FROM test WHERE `key` = '%s' ", SpielerName(playerid));
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(daten1);
    mysql_free_result();
    for(new i = 1; i<strval(daten1)+1; i++)
    {
    format(query, sizeof query, "SELECT * FROM test WHERE `key` = '%s' LIMIT %d,1", SpielerName(playerid), i-1);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(daten2);
    mysql_free_result();
    sscanf(daten2, "e<p<|>iiis[24]iffff>", Auto[i]);
    printf("Auto erstellt! Name:%s | Model:%d | Farben:%d/%d | X:%f Y:%f Z:%f A:%f", Auto[i][key], Auto[i][model], Auto[i][col1], Auto[i][col2], Auto[i][x], Auto[i][y], Auto[i][z], Auto[i][a]);
    }


    Ich habe eine "Debug-Ausgabe" erstellt (printf).
    Diese sagt mir nicht die Koordinate 0.0 aus (So, wie sie in der Datenbank steht), sondern "-1.812719" und die anderen Koordinaten sind alle um 1 nach hinten gerutscht.
    Wer das nicht kapiert / vorstellen kann, hier die Ausgabe, die ich bekomme:
    Auto erstellt! Name:[Irgendein Name] | Model:596 | Farben:1/2 | X:-1.812719 Y:0.000000 Z:0.000000 A:5.000000
    So sollte es eigentlich sein:
    Auto erstellt! Name:[Irgendein Name] | Model:596 | Farben:1/2 | X:0.000000 Y:0.000000 Z:5.000000 A:0.000000
    Ich weiß echt nicht mehr weiter und hoffe, jemand weiß, wie ich das Problem lösen kann.


    Freundliche Grüße
    Duck_Sauce

    Einmal editiert, zuletzt von duck_sauce ()

  • sicher das dein enum der DB übereinstimmt

  • format(query, sizeof(query),"SELECT * FROM Autos");
    mysql_query(query);
    mysql_store_result();
    new rows = mysql_num_rows();
    mysql_free_result();
    new result;


    for(new i=0; i<rows+1; i++)
    {
    mysql_free_result();
    format(query, sizeof query, "SELECT * FROM test WHERE `key` = '%s'", SpielerName(playerid));
    mysql_query(query);
    mysql_store_result();
    new resultline[1024];
    new Data[128];
    while(mysql_retrieve_row())
    {
    //strings
    mysql_get_field("FieldnamederDB",Data);Auto[i][key]=Data;
    //float
    mysql_get_field("FieldnamederDB",Data);Auto[i][x]= floatstr(Data);
    //int
    mysql_get_field("cposy",Data);Auto[i][model]= strval(Data);
    }
    }



    versuchs mal so