Datenbankfehler - 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
  • Hab jetzt mal enum neu aufgelistet, save & Load neu gemacht & die tabelle doch nun speichert es nichts mehr-.-'


    enum SpielerDaten
    {
    pName[MAX_PLAYER_NAME],
    pLevel,
    pGeld,
    pAlter,
    pBundesland,
    pAdmin,
    pKills,
    pTode,
    pHealth,
    pPerso,
    pCarLic,
    pBikeLic,
    pFlyLic,
    pWaffenLic,
    pTruckLic,
    pBan,
    pWarn,
    pLeader,
    pRang,
    pFraktion,
    pStory,
    pMember
    };
    new SpielerInfo[MAX_PLAYERS][SpielerDaten];


    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))//Wir fragen ab ob der angegebene Spieler auch Online ist, und kein NPC ist (nur zur sicherhheit)
    {
    new str[520];
    format(str,sizeof str,"SELECT * FROM `accounts` WHERE `Name` = '%s'",PlayerName(playerid));
    mysql_query(str);
    mysql_store_result();
    mysql_fetch_row(str);
    sscanf(str,"ddds[24]s[24]ddfds[11]ddddddds[12]s[12]s[13]ds[12]",SetPlayerScore(playerid,SpielerInfo[playerid][pLevel]),GivePlayerMoney(playerid,SpielerInfo[playerid][pGeld]),SpielerInfo[playerid][pAlter],SpielerInfo[playerid][pBundesland],SpielerInfo[playerid][pAdmin],SpielerInfo[playerid][pKills],SpielerInfo[playerid][pTode],SpielerInfo[playerid][pHealth],
    SpielerInfo[playerid][pPerso],SpielerInfo[playerid][pCarLic],SpielerInfo[playerid][pBikeLic],SpielerInfo[playerid][pFlyLic],SpielerInfo[playerid][pWaffenLic],SpielerInfo[playerid][pTruckLic],SpielerInfo[playerid][pBan],SpielerInfo[playerid][pWarn],
    SpielerInfo[playerid][pLeader],SpielerInfo[playerid][pRang],SpielerInfo[playerid][pFraktion],SpielerInfo[playerid][pStory],SpielerInfo[playerid][pMember]);
    mysql_free_result();
    }
    return 1;
    }
    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new query[500];
    format(query, sizeof(query), "UPDATE `accounts` SET `Level` = '%d',`Geld` = '%d',`Alter` = '%d',`Bundesland` = '%s',`Admin` = '%s',`Kills` = '%d',`Tode` = '%d', `Health` = '%f',`Perso` = '%d',`CarLic` = '%d',`BikeLic` = '%d',`FlyLic` = '%d', `WaffenLic` = '%d',`TruckLic` = '%d',`Ban` = '%d',`Warn` = '%d',`Leader` = '%s', `Rang` = '%s', `Fraktion` = '%s' `Story` = '%d',`Member` = '%s',WHERE `Name` = '%s'",
    SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pGeld],SpielerInfo[playerid][pAlter],SpielerInfo[playerid][pBundesland],SpielerInfo[playerid][pAdmin],SpielerInfo[playerid][pKills],SpielerInfo[playerid][pTode],SpielerInfo[playerid][pHealth],
    SpielerInfo[playerid][pPerso],SpielerInfo[playerid][pCarLic],SpielerInfo[playerid][pBikeLic],SpielerInfo[playerid][pFlyLic],SpielerInfo[playerid][pWaffenLic],SpielerInfo[playerid][pTruckLic],SpielerInfo[playerid][pBan],SpielerInfo[playerid][pWarn],
    SpielerInfo[playerid][pLeader],SpielerInfo[playerid][pRang],SpielerInfo[playerid][pFraktion],SpielerInfo[playerid][pStory],SpielerInfo[playerid][pMember],PlayerName(playerid));
    mysql_query(query);
    }
    }
    return 1;
    }


    Tabelle:


  • Natürlich kann es nicht speichern weil du wieder das scheiß komma drinnen hast
    und
    sscanf(str,"ddds[24]s[24]ddfds[11]ddddddds[12]s[12]s[13]ds[12]",SetPlayerScore(playerid,SpielerInfo[playerid][pLevel]),
    das soll wohl ein scherz sein ?

  • Mag sein , ich stelle mich Dumm an, aber ich habe leider 0 Ahnung von diesem System möchte es aber gerne Haben Stur eben :D, Wie macht man das genau mit dem SSCANF denn?


    Ich erklär dir das ganze mal
    enum SpielerDaten
    {
    pName[MAX_PLAYER_NAME],
    pLevel,
    pAlter,
    pGeld,
    pBundesland,
    pAdmin,
    pKills,
    pTode,
    Float:pHealth,
    pPerso,
    pCarLic,
    pBikeLic,
    pFlyLic,
    pWaffenLic,
    pTruckLic,
    pBan,
    pWarn,
    pLeader[11],
    pRang[28],
    pFraktion[24],
    pStory,
    pMember
    };
    sscanf("260|PuSchKiiNX|Test123|1|1|0|0|50|0|0|0|0|0|0|0|0|0||||1|88|0","p<|>e<{i}s["#MAX_PLAYER_NAME"]{s[128]}dddddddfdddddddds[11]s[28]s[24]dd>",SpielerInfo[playerid]);


    an dem code
    zum einen werden die ganzen buchstaben und zeichen in was gesplittet werden soll specifer genannt.
    p<|> bedeutet das der string gesplittet werden soll sobald dieses | zeichen vorhanden ist das geht auch mit kommas p<,>.
    so die standart specifer solltest du kennen
    i,d => Integer
    f => Float
    l => bool wert als true /false bei bool:bla;
    s[x] => string x steht für eine zahl die string länge ist das x hier also
    new string[10] würde so aussehen s[10] du kannst auch die länge des defines rein hauen sieh eoben.
    e<> bedeutet das es dem entsprechenden enum entlang gesplittet wird.
    daher muss die reihenfolge der specifer auch gleich dem des enums entsprechen haben wir oben.
    a<i>[x] gibt es auch ein array aus integer
    beispiel
    new array[5]; wäre a<i>[5]
    das gilt nicht für string hier da gibt es auch wieder ein bestimmtes specifer.
    so das wäre hier mal eine grobe erklärung weiter erklärungen findest du hier
    http://forum.sa-mp.com/showthread.php?t=120356
    ahja mit den Klammern { } wird dafür gesorgt das der wert übersprungen wird
    beispiel: 11,12,10 auf {ii}i soll an var1,var2,var3 übergeben werden durch das splitten
    jetzt 11 und 12 übersprungen und var1 hat den wert 10
    nun kann man mit -i- zum beispiel auch die reihenfolge des enums überspringen
    11,12,10 auf i-i-i an var1,var2,var3
    so hat var1 = 11 var2 = 0 wurde übersprungen var3 = 12 und 10 geht jetzt leer aus


    //edit
    wozu sscanf genutzt wird ist ganz einfach zum splitten von string es ist eine bessere alternative zu strok und den split funktionen wo mal geschrieben wurden
    explode mein ich