MYSQL Float-Speichern

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
  • Hey, ich weiß nicht wie ich es anstellen soll meine Koordinaten in MYSQL Speichern zu lassen, alle Tutorials sind anderster damit kann ich als anfänger nichts anfangen also hab ich jetzt irgendwie rumgebastelt und wie erwartet Error/Warning bekommen :D


    Also ich habe das MYSQL Speicherungssystem von RFT und habe unter "OnPlayerDisconnect" folgendes stehen


    mysql_SetFloat("spieler","PosX", mysql_GetFloat("spieler", "PosX", "Name", PlayerName[playerid]));//Zeile 95
    mysql_SetFloat("spieler","PosY", mysql_GetFloat("spieler", "PosX", "Name", PlayerName[playerid]));//Zeile 96
    mysql_SetFloat("spieler","PosZ", mysql_GetFloat("spieler", "PosX", "Name", PlayerName[playerid]));//Zeile 97


    C:\Users\Nico\Desktop\samp03z_svr_R1_win32\gamemodes\RLHD.pwn(95) : warning 202: number of arguments does not match definition
    C:\Users\Nico\Desktop\samp03z_svr_R1_win32\gamemodes\RLHD.pwn(95) : warning 202: number of arguments does not match definition
    C:\Users\Nico\Desktop\samp03z_svr_R1_win32\gamemodes\RLHD.pwn(96) : warning 202: number of arguments does not match definition
    C:\Users\Nico\Desktop\samp03z_svr_R1_win32\gamemodes\RLHD.pwn(96) : warning 202: number of arguments does not match definition
    C:\Users\Nico\Desktop\samp03z_svr_R1_win32\gamemodes\RLHD.pwn(97) : warning 202: number of arguments does not match definition
    C:\Users\Nico\Desktop\samp03z_svr_R1_win32\gamemodes\RLHD.pwn(97) : warning 202: number of arguments does not match definition


    und dann habe ich bei "OnDialogResponse"


    SetPVarInt(playerid, "PosX", mysql_GetFloat("spieler", "PosX", "Name", PlayerName[playerid]));//154
    SetPVarInt(playerid, "PosY", mysql_GetFloat("spieler", "PosX", "Name", PlayerName[playerid]));//155
    SetPVarInt(playerid, "PosZ", mysql_GetFloat("spieler", "PosX", "Name", PlayerName[playerid]));//156


    C:\Users\Nico\Desktop\samp03z_svr_R1_win32\gamemodes\RLHD.pwn(154) : warning 213: tag mismatch
    C:\Users\Nico\Desktop\samp03z_svr_R1_win32\gamemodes\RLHD.pwn(155) : warning 213: tag mismatch
    C:\Users\Nico\Desktop\samp03z_svr_R1_win32\gamemodes\RLHD.pwn(156) : warning 213: tag mismatch


    MYSQL GetFLOAT /SetFLOAT


    stock Float:mysql_GetFloat(Table[], Field[], Where[], Where2[])
    {
    new query[128], Get[128];
    format(query, 128, "SELECT %s FROM %s WHERE %s = '%s'", Field, Table, Where, Where2);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    return floatstr(Get);
    }


    stock mysql_SetFloat(Table[], Field[], Float:To, Where[], Where2[])
    {
    new query[128];
    format(query, 128, "UPDATE %s SET %s = '%f' WHERE %s = '%s'", Table, Field, To, Where, Where2);
    mysql_query(query);
    return true;
    }


    Please Help me ! :D



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Du musst es schon so verwenden wie es auch von RFT erstellt wurde.
    stock mysql_SetFloat(Table[], Field[], Float:To, Where[], Where2[])
    mysql_SetFloat("spieler","PosX", /* Hier deine Variable des Floats */, "Name", PlayerName[playerid]);
    So wie du es hattest, liest er den Wert aus der Datenbank und speichert den Wert in die Datenbank. = Kein Sinn.
    Außerdem hattest du einen Wert nämlich die Spielernamen vergessen

    Einmal editiert, zuletzt von H4rd_B4se ()

  • Du solltest dir das mal angucken: [ SCRIPTING ] Mysql - Ressourcenschonendes Login/Register System + Automatic Table|| R5 BlueG
    So wie du deine Querys ausließt / abspeicherst ist nicht gerade effizient.


    Dort wird auch alles andere erklärt.
    L.G.


    Ist doch seine Sache, wie er das macht. Das ist hier doch garnicht die Frage .. :wacko:


    B2T:
    Sollte das nicht eigentlich so?
    mysql_SetFloat("spieler","PosX", mysql_GetFloat("spieler", "PosX", "Name", PlayerName[playerid]), "Name", PlayerName[playerid]);


    Weil die "Where"-Parameter solltest du doch schon angeben ^^


    Jedoch ist es merkwürdig, dass du den Wert in der Tabelle setzen möchtest, der ohnehin schon drin steht.

  • mysql_SetFloat("spieler","PosX", mysql_GetFloat("spieler", "PosX", "Name", PlayerName[playerid]), "Name", PlayerName[playerid]);


    Sollte eig so sein:
    mysql_SetFloat("spieler","PosX",/*z.B.*/LastPosX[playerid], "Name", PlayerName[playerid]);