Problem mit sscanf 2.0 speichern

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Problem mit sscanf 2.0 speichern

    Hey,da ich mich momentan mit mysql befasse,habe ich folgenden Stock geschrieben
    [pwn]stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    new str[512];new query[512];
    format(query,sizeof(query),"SELECT * FROM `accounts` WHERE `Name` = '%s'",SpielerInfo[playerid][pName]);
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row(str))
    {
    sscanf(str, "e<p<|>{i}s[16]iiiifiiiii>",SpielerInfo[playerid]);
    }
    mysql_free_result();
    }
    return 1;
    }[/pwn]
    Diese funktion dient zum laden des Accounts.Diese habe ich ,wie oben schon zu sehen, mit sscanf 2.0 etwas verbessert,(anstatt SpielerInfo[...] = mysql_Get...

    Nun habe ich aber Probleme mit dem Speichern des Accounts

    Momentan hab ich da noch
    [pwn]stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    //Nun speichern wir die Daten in der Datenbank.
    mysql_SetInt("accounts", "Kicks", SpielerInfo[playerid][pKicks], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Ban", SpielerInfo[playerid][pBan], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Adminlevel", SpielerInfo[playerid][pAdminlevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Warns", SpielerInfo[playerid][pWarn], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    }
    }
    return 1;
    }[/pwn]Wie kann ich das mit sscanf 2.0 realisieren?Ich habe momentan keine idee,wie ich das machen könnte
  • sscanf (-> auch als unformat verfügbar, was die Funktion besser beschreibt) dient dazu Daten aus Zeichenketten auszulesen und diese Daten in Variablen abzulegen - es "zerlegt" also eine Zeichenkette.
    Beim Speichern würde sscanf also keinen Sinn ergeben. Stattdessen brauchst du ja eine lange Zeichenkette mit der SQL-Abfrage, die auch deine Daten zum Speichern enthält.

    [pwn]new query[256];
    format(query, sizeof(query), "UPDATE accounts SET Level=%i, Geld=%i WHERE Name='%s'", SpielerInfo[playerid][pLevel], SpielerInfo[playerid][pGeld], SpielerInfo[playerid][pName]);
    mysql_query(query);[/pwn]
    Das Prinzip sollte nun klar sein.
  • klar,denn
    [pwn]format(query,sizeof(query),"SELECT * FROM `accounts` WHERE `Name` = '%s'",SpielerInfo[playerid][pName]);
    mysql_query(query);//Läd alles aus der Zeile des Spielers aus der Tabelle 'Accounts'
    mysql_store_result();
    while(mysql_fetch_row(str))//Übergibt das was vorher aus der Tabelle geladen wurde an einen string.
    {
    sscanf(str, "e<p<|>{i}s[16]iiiifiiiii>",SpielerInfo[playerid]);//teilt den string in seine bestandteile und gibt es an das enum weiter
    }
    mysql_free_result();[/pwn]

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Manniac ()