MySQL - LoadAccountVariables

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
  • Nabend,
    ich versuche gerade mit MySQL klarzukommen, und jetzt bin ich in einem Script über folgendes gestoßen:


    stock LoadAccountVariables(playerid)
    {
    new EscapedName[MAX_PLAYER_NAME];
    if(GetPVarInt(playerid, "Authentication") == 1)
    {
    mysql_real_escape_string(GetName(playerid), EscapedName);
    format(Query, sizeof(Query), "SELECT * FROM `Accounts` WHERE `Username` = '%s'", EscapedName);
    mysql_query(Query);
    mysql_store_result();


    mysql_fetch_row_format(Query, "|");
    sscanf(Query, "e<p<|>s[24]s[129]s[64]s[129]s[17]ddddfffffddddds[128]s[128]s[128]>", PlayerInfo[playerid]);
    }
    else print("[MySQL ERROR] LoadAccountVariables() was called, but to a non-connected ID.");
    mysql_free_result();
    }


    Beim Einloggen wird dieser stock aufgerufen. Aber was genau macht er würde ich gerne einfach mal wissen, um es auch zu verstehen. ^^
    Das "e<p<|>s[24]s[129]s[64]s[129]s[17]ddddfffffddddds[128]s[128]s[128]>" verstehe ich überhaupt nicht.


    Danke

  • Mit dem Code den du gepostet hast wird die Zeile die aus der Datenbank geladen wurde dierekt in das enum gespeichert.
    e< .... >
    das sagt, das alles zwischen den beiden klammern ( < & > ) ist in das Enum gespeichert werden soll. Das e am anfang steht also für Enum^^
    mit
    p< .... >
    gibst du ein trennzeichen an. Wenn du eine Komplette zeile aus der MySQL Datenbank ausliest, werden die einzelnen felder per | getrennt. Also z.b Name|Passwort|Level usw... . Und durch das p<|> giebst du an das die vorhanden | trennzeichen sind. Sonst würde er sie eventuell als string o.ä annehmen.


    s[...] Steht für string. in den eckigen klammern muss (bei der plugin version) die länge des string angegeben werden.
    d steht für Integer also eine Zahl
    und f steht für Float also eine Zahl mit nachkommastellen.


    Die zeile die du da gepostet hast giebt also alles was vorher per mysql_query aus der datenbank abgerufen wurde an das enum weiter.
    Ein bisschen ausführlicher giebts das auch nochmal hier zu sehn: sscanf 2.0



    Mfg.

    The fact is, I am right. And if you think I'm wrong, you are wrong.