Probleme beim 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
  • Hallo,
    ich habe ein Problem mit dem Speichern von Useraccounts in meinem Script. Ich verwende MySQL zur Speicherung, was auch gut beim Laden der Accounts usw. funktioniert. Beim Compilen werden keine Fehler angezeigt und das Public zum Speichern wird aufgerufen nur irgendwie nicht ausgeführt/beendet bzw. ist es falsch geschrieben. Kann mir jemand helfen wo der Fehler in den Zeilen liegt? Hier mal das Public, was beim Gamemodeexit, bei OnPlayerDisconnect und bei einem Speichertimer aufgerufen wird:
    public SaveUser(playerid)
    {
    if(PlayerInfo[playerid][Logged] == 1 && !IsPlayerNPC(playerid))
    {
    GetPlayerPos(playerid,PlayerInfo[playerid][PosX],PlayerInfo[playerid][PosY],PlayerInfo[playerid][PosZ]);
    GetPlayerFacingAngle(playerid,PlayerInfo[playerid][Angle]);

    new accFormat1[1024];
    format(accFormat1,sizeof(accFormat1),"UPDATE `user` SET `firstlogin` = '%e',`skin` = '%e',`hanf` = '%e',`invite` = '%e',`age` = '%e',`muted` = '%e',`crimes` = '%e',`wanted` = '%e',`sex` = '%e' WHERE `id` = '%e'",\
    PlayerInfo[playerid][FirstLogin],PlayerInfo[playerid][Skin],PlayerInfo[playerid][Hanf],PlayerInfo[playerid][Invite],PlayerInfo[playerid][Age],PlayerInfo[playerid][Muted],PlayerInfo[playerid][Crimes],\
    PlayerInfo[playerid][Wanted],PlayerInfo[playerid][Sex],PlayerInfo[playerid][ID]);
    mysql_function_query(dbhandle,accFormat1,false,"","");

    new accFormat2[1024];
    format(accFormat2,sizeof(accFormat2),"UPDATE `user` SET `kokain` = '%e',`leader` = '%e',`job` = '%e',`member` = '%e',`jailed` = '%e',`dead` = '%e',`perso` = '%e',`admin` = '%e',`deaths` = '%e' WHERE `id` = '%e'",\
    PlayerInfo[playerid][Kokain],PlayerInfo[playerid][Leader],PlayerInfo[playerid][Job],PlayerInfo[playerid][Member],PlayerInfo[playerid][Jailed],PlayerInfo[playerid][Dead],PlayerInfo[playerid][Perso],PlayerInfo[playerid][Admin],\
    PlayerInfo[playerid][Deaths],PlayerInfo[playerid][ID]);
    mysql_function_query(dbhandle,accFormat2,false,"","");

    new accFormat3[1024];
    format(accFormat3,sizeof(accFormat3),"UPDATE `user` SET `kills` = '%e',`bank` = '%e',`number` = '%e' WHERE `id` = '%e'",PlayerInfo[playerid][Kills],PlayerInfo[playerid][Bank],PlayerInfo[playerid][Number],PlayerInfo[playerid][ID]);
    mysql_function_query(dbhandle,accFormat3,false,"","");

    new accFormat4[1024];
    format(accFormat4,sizeof(accFormat4),"UPDATE `user` SET `money` = '%e',`rank` = '%e',`level` = '%e',`banned` = '%e',`exp` = '%e',`posx` = '%f',`posy` = '%f',`posz` = '%f',`angle` = '%f' WHERE `id` = '%e'",\
    PlayerInfo[playerid][Money],PlayerInfo[playerid][Rank],PlayerInfo[playerid][Level],PlayerInfo[playerid][Banned],\
    PlayerInfo[playerid][EXP],PlayerInfo[playerid][PosX],PlayerInfo[playerid][PosY],PlayerInfo[playerid][PosZ],PlayerInfo[playerid][Angle],PlayerInfo[playerid][ID]);
    mysql_function_query(dbhandle,accFormat4,false,"","");
    }
    new player[MAX_PLAYER_NAME];
    GetPlayerName(playerid, player, sizeof(player));
    printf("AUTO-SAVE: Der Spieler %s wurde automatisch in der MySQL Tabelle 'user' abgespeichert!",player);
    return 1;
    }



    Sieht irgendwer, warum die Accounts nicht gespeichert werden?


    Freue mich über Hilfe.


    LG MacTavish

  • Soweit ich weiß wird mit %e theoritisch %s ausgegeben, und du benutzt es bei jeden Integer.
    Du kannst es ja einfach mal printen oder einfach direkt ändern.
    Übrigens brauchst du kein public zum Speichern, eine Funktion wird ausreichen.
    Was du noch machst, accFormat1-4, du machst jedes mal eine neue Variable mit der gleichen größe.
    Es reicht wenn du eine Variable machst und diese Formatierst, wenn du in eine neue Zeile möchtest das machst du mit \


    beispiel:
    blablablabla\
    blablablabla

  • %e funktioniert nur in mysql_format und bei Strings.
    Außerdem reicht ein Query, du musst keine 4 senden.
    Versuche es so:
    public SaveUser(playerid)
    {
    if(PlayerInfo[playerid][Logged] == 1 && !IsPlayerNPC(playerid))
    {
    GetPlayerPos(playerid,PlayerInfo[playerid][PosX],PlayerInfo[playerid][PosY],PlayerInfo[playerid][PosZ]);
    GetPlayerFacingAngle(playerid,PlayerInfo[playerid][Angle]);

    new query[1024];

    format(query,sizeof(query),"UPDATE `user` SET `firstlogin` = '%d',`skin` = '%d',`hanf` = '%d',`invite` = '%d',`age` = '%d',`muted` = '%d',`crimes` = '%d',`wanted` = '%d',`sex` = '%d',",
    PlayerInfo[playerid][FirstLogin],PlayerInfo[playerid][Skin],PlayerInfo[playerid][Hanf],PlayerInfo[playerid][Invite],PlayerInfo[playerid][Age],PlayerInfo[playerid][Muted],PlayerInfo[playerid][Crimes],
    PlayerInfo[playerid][Wanted],PlayerInfo[playerid][Sex]);

    format(query,sizeof(query),"%s`kokain` = '%d',`leader` = '%d',`job` = '%d',`member` = '%d',`jailed` = '%d',`dead` = '%d',`perso` = '%d',`admin` = '%d',`deaths` = '%d',",
    query,PlayerInfo[playerid][Kokain],PlayerInfo[playerid][Leader],PlayerInfo[playerid][Job],PlayerInfo[playerid][Member],PlayerInfo[playerid][Jailed],PlayerInfo[playerid][Dead],PlayerInfo[playerid][Perso],PlayerInfo[playerid][Admin],
    PlayerInfo[playerid][Deaths]);

    format(query,sizeof(query),"%s`kills` = '%d',`bank` = '%d',`number` = '%d',",
    query,PlayerInfo[playerid][Kills],PlayerInfo[playerid][Bank],PlayerInfo[playerid][Number]);

    format(query,sizeof(query),"%s`money` = '%d',`rank` = '%d',`level` = '%d',`banned` = '%d',`exp` = '%d',`posx` = '%f',`posy` = '%f',`posz` = '%f',`angle` = '%f' WHERE `id` = '%d'",
    query,PlayerInfo[playerid][Money],PlayerInfo[playerid][Rank],PlayerInfo[playerid][Level],PlayerInfo[playerid][Banned],
    PlayerInfo[playerid][EXP],PlayerInfo[playerid][PosX],PlayerInfo[playerid][PosY],PlayerInfo[playerid][PosZ],PlayerInfo[playerid][Angle],PlayerInfo[playerid][ID]);

    mysql_function_query(dbhandle,query,false,"","");
    }
    new player[MAX_PLAYER_NAME];
    GetPlayerName(playerid, player, sizeof(player));
    printf("AUTO-SAVE: Der Spieler %s wurde automatisch in der MySQL Tabelle 'user' abgespeichert!",player);
    return 1;
    }