Daten werden nicht in MySQL eingetragen

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
  • Guten Abend Zusammen,


    wahrscheinlich ist dies der tausendste Thread, aber ich konnte selbst in den anderen Threads keine potenzielle Lösung finden.
    Unzwar trägt das Script die Daten nicht in MySQL ein und diese werden auch nicht gespeichert, ausgenommen vom Namen, vom Passwort und vom Leben.
    Ich benutze das MySQL Plugin von Strickenkid. ;)
    Anbei die Codes:


    Spoiler anzeigen
    enum SpielerDaten
    {
    pName[MAX_PLAYER_NAME],
    pLevel,
    pGeld,
    pToetungen,
    pTode,
    pAlter,
    pGeschlecht,
    pHerkunft,
    pAdmin,
    Float:pHealth
    }
    new SpielerInfo[MAX_PLAYERS][SpielerDaten];

    Spoiler anzeigen
    Beispiele für einen Eintrag:

    Spoiler anzeigen
    SpielerInfo[playerid][pGeschlecht] = 1;
    SpielerInfo[playerid][pAlter] = check;
    SpielerInfo[playerid][pHerkunft] = 5;

    Spoiler anzeigen
    stock SpielerSpeichern(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"logged") == 1)
    {
    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", "Toetungen", SpielerInfo[playerid][pToetungen], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Alter", SpielerInfo[playerid][pAlter], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geschlecht", SpielerInfo[playerid][pGeschlecht], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Herkunft", SpielerInfo[playerid][pHerkunft], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    }
    }
    return 1;
    }

    Spoiler anzeigen
    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pToetungen] = mysql_GetInt("accounts", "Toetungen", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pAlter] = mysql_GetInt("accounts", "Alter", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pGeschlecht] = mysql_GetInt("accounts", "Geschlecht", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pHerkunft] = mysql_GetInt("accounts", "Herkunft", "Name", SpielerInfo[playerid][pName]);
    }
    return 1;
    }


    Danke im Voraus!


    EDIT: Push 1

    mit freundlichem Gruß,
    MrJokazMan | Robin K.


    Einmal editiert, zuletzt von MrJokazMan ()

  • Zitat von Deine Signatur(Kenntnisse)


    • PAWN (enum, PVar, MySQL, Befehle etc. - erweiterte Skriptkenntnisse)



    stock SpielerSpeichern(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"logged") == 1)
    {
    new string[500];
    format(string,sizeof(string),"UPDATE `accounts` SET `Level` = %d, `Geld` = %d, `Toetungen` = %d, `Tode` = %d, `Alter` = %d, `Geschlecht` = %d, `Herkunft` = %d, `Health` = %f WHERE `Name` = '%s'",
    SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pGeld],SpielerInfo[playerid][pToetungen],SpielerInfo[playerid][pTode],SpielerInfo[playerid][pAlter],
    SpielerInfo[playerid][pGeschlecht],SpielerInfo[playerid][pHerkunft],SpielerInfo[playerid][pHealth],SpielerInfo[playerid][pName]);
    mysql_query(string);
    }
    }
    return 1;
    }


    Probiers das mal.

  • Also du hast meine Version schon ausprobiert und es wurde wieder nur Name, Passwort und Leben eingetragen?
    Gib doch mal per printf beim Speichern den Wert von SpielerInfo[playerid][pGeld] aus.
    Vielleicht ist im Array nur die ganze Zeit nichts eingetragen worden.



    stock SpielerSpeichern(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"logged") == 1)
    {
    new string[500];
    format(string,sizeof(string),"UPDATE `accounts` SET `Level` = %d, `Geld` = %d, `Toetungen` = %d, `Tode` = %d, `Alter` = %d, `Geschlecht` = %d, `Herkunft` = %d, `Health` = %f WHERE `Name` = '%s'",
    SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pGeld],SpielerInfo[playerid][pToetungen],SpielerInfo[playerid][pTode],SpielerInfo[playerid][pAlter],
    SpielerInfo[playerid][pGeschlecht],SpielerInfo[playerid][pHerkunft],SpielerInfo[playerid][pHealth],SpielerInfo[playerid][pName]);
    mysql_query(string);
    printf("Geld: %d",SpielerInfo[playerid][pGeld]);
    }
    }
    return 1;
    }


  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Dementsprechend gibt er mir "0" aus, aber im Wert vom Geld wurde nichts eingetragen.
    Beim Alter, beim Geschlecht oder bei der Herkunft ist es dasselbe, nur dass ich ein Wert zugewiesen habe, aber dieser nicht gespeichert wird.

    mit freundlichem Gruß,
    MrJokazMan | Robin K.


  • Nein, so war das jetzt nicht gemeint. ;)
    Den Daten wird ja ein Wert bzw. ein Integer zugewiesen, sofern der Spieler dann die Aktion auswählt.
    Wenn er bspw. männlich ist, wird der Wert auf eins gesetzt: SpielerInfo[playerid][pGeschlecht] = 1;

    mit freundlichem Gruß,
    MrJokazMan | Robin K.


  • Teste mal ob das Geld gespeichert wird.

    stock SpielerSpeichern(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"logged") == 1)
    {
    SpielerInfo[playerid][pGeld] = 8774;
    new string[500];
    format(string,sizeof(string),"UPDATE `accounts` SET `Level` = %d, `Geld` = %d, `Toetungen` = %d, `Tode` = %d, `Alter` = %d, `Geschlecht` = %d, `Herkunft` = %d, `Health` = %f WHERE `Name` = '%s'",
    SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pGeld],SpielerInfo[playerid][pToetungen],SpielerInfo[playerid][pTode],SpielerInfo[playerid][pAlter],
    SpielerInfo[playerid][pGeschlecht],SpielerInfo[playerid][pHerkunft],SpielerInfo[playerid][pHealth],SpielerInfo[playerid][pName]);
    mysql_query(string);
    printf("Geld: %d",SpielerInfo[playerid][pGeld]);
    }
    }
    return 1;
    }

  • Wenn die jetzt auch gespeichert werden, haben wir das Problem ja gefunden.



    stock SpielerSpeichern(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"logged") == 1)
    {
    SpielerInfo[playerid][pGeld] = 8774;
    SpielerInfo[playerid][pGeschlecht] = 1;
    SpielerInfo[playerid][pHerkunft] = 2;
    new string[500];
    format(string,sizeof(string),"UPDATE `accounts` SET `Level` = %d, `Geld` = %d, `Toetungen` = %d, `Tode` = %d, `Alter` = %d, `Geschlecht` = %d, `Herkunft` = %d, `Health` = %f WHERE `Name` = '%s'",
    SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pGeld],SpielerInfo[playerid][pToetungen],SpielerInfo[playerid][pTode],SpielerInfo[playerid][pAlter],
    SpielerInfo[playerid][pGeschlecht],SpielerInfo[playerid][pHerkunft],SpielerInfo[playerid][pHealth],SpielerInfo[playerid][pName]);
    mysql_query(string);
    printf("Geld: %d",SpielerInfo[playerid][pGeld]);
    }
    }
    return 1;
    }

  • Wenn der Spieler bspw. sein Geschlecht auswählt, speichert er diese Daten so:


    if(dialogid == DIALOG_GESCHLECHT)
    {
    if(response == 1)
    {
    SpielerInfo[playerid][pGeschlecht] = 1;
    SendClientMessage(playerid, weiss, "Du hast angegeben, dass du dem männlichen Geschlecht angehörst.");
    ShowPlayerDialog(playerid, DIALOG_ALTER, DIALOG_STYLE_INPUT, "Alter", "Wann wurdest du geboren? Angabe in TT.MM.JJJJ", "Bestätigen", "Zurück");
    }
    if(response == 0)
    {
    SpielerInfo[playerid][pGeschlecht] = 2;
    SendClientMessage(playerid, weiss, "Du hast angegeben, dass du dem weiblichen Geschlecht angehörst.");
    ShowPlayerDialog(playerid, DIALOG_ALTER, DIALOG_STYLE_INPUT, "Alter", "Wann wurdest du geboren? Angabe in TT.MM.JJJJ", "Bestätigen", "Zurück");
    }
    return 1;
    }

    mit freundlichem Gruß,
    MrJokazMan | Robin K.


  • Ah okay, mit speichern meinst du, dass er sie in das Array eingetragen hat.
    Und die Frage für dich war, wieso sie vor dem Speichern wieder auf 0 geändert wurden.


    Also der Dialog wird vermutlich nur bei der Registrierung aufgerufen.
    Das heißt, wenn du dich jetzt neu registrierst und dich nach der Registrierung ausloggst, sollte, sofern der Speicherstock unter OnPlayerDisconnect aufgerufen wird, alles in der Datenbank gespeichert werden.


    Beachte: Indem du ausloggst, nicht den Server neustartest.