Accounts speicherung FEHLER

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
  • Also ich mein Kumpel hat sich ausgeloggt und bei ihm hat sich nix gespeichert und wo ich mit ausgeloggt habe, hat sich mein Spielstand gespeichert? ich verstehe nicht wieso, ich habe dauerhaft Probleme mit Mysql und den Accounts


    Code:


    //Saveplayer

    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 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", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Bann", SpielerInfo[playerid][pBann], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Adminlevell", SpielerInfo[playerid][pAdmin], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    }
    }
    return 1;
    }


    //OnPlayerConenct

    public OnPlayerConnect(playerid)
    {
    new text[264];
    Resetcount(playerid);
    ResetPlayer(playerid);
    SetPlayerColor(playerid, 0xFFFFFF00);
    if(GetPVarInt(playerid,"Eingeloggt") == 0)
    {
    if(mysql_CheckAccount(playerid) == 0)
    {
    format(text,sizeof(text),"{FFFFFF}Herzlich Willkommen auf Pure Deathmatch, {00B700}%s {FFFFFF}!\nEs wurde kein Account in der Datenbank mit deinem Namen gefunden.\nAccount legst du an, indem du ein Accountpasswort eingibst und auf Registrieren drückst.",PlayerName(playerid));
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Pure Deathmatch || Erstanmeldung",text,"Registrieren","Schliessen");
    }
    else if(mysql_CheckAccount(playerid) == 1)
    {
    format(text,sizeof(text),"{FFFFFF}Herzlich Willkommen zurück auf Pure Gaming, {00B700}%s {FFFFFF}!\nBitte gib unten in das Eingabefeld dein Accountpasswort ein,\num dich einzuloggen. Anschließend werden deine Accountdaten geladen.",PlayerName(playerid));
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Pure Gaming || Authenfifizierung",text,"Login","Schliesseen");
    }
    }
    return 1;
    }



    //Disconnect

    public OnPlayerDisconnect(playerid, reason)
    {
    SavePlayer(playerid);
    DeletePVar(playerid,"Eingeloggt");
    return 1;
    }



    ResetPlayer unter OnPlayerconnect

    stock ResetPlayer(playerid)
    {
    SpielerInfo[playerid][pGeld] = 0;
    SpielerInfo[playerid][pLevel] = 0;
    SpielerInfo[playerid][pKills] = 0;
    SpielerInfo[playerid][pTode] = 0;
    SpielerInfo[playerid][pAdmin] = 0;
    return 1;
    }


    //ResetCount


    stock Resetcount(playerid)
    {
    if(dm[0][playerid] ==1)
    {
    if(dmcount[0] >0)
    {
    dmcount[0] --;
    }
    }
    if(dm[1][playerid] ==1)
    {
    if(dmcount[1] >0)
    {
    dmcount[1] --;
    }
    }
    if(dm[2][playerid] ==1)
    {
    if(dmcount[2] >0)
    {
    dmcount[2] --;
    }
    }
    if(dm[3][playerid] ==1)
    {
    if(dmcount[3] >0)
    {
    dmcount[3] --;
    }
    }
    if(dm[4][playerid] ==1)
    {
    if(dmcount[4] >0)
    {
    dmcount[4] --;
    }
    }
    if(dm[5][playerid] ==1)
    {
    if(dmcount[5] >0)
    {
    dmcount[5] --;
    }
    }
    if(one[0][playerid] == 1)
    {
    if(onecount[0] >0)
    {
    onecount[0] --;
    }
    }
    if(one[1][playerid] == 1)
    {
    if(onecount[1] >0)
    {
    onecount[1] --;
    }
    }
    if(one[2][playerid] == 1)
    {
    if(onecount[2] >0)
    {
    onecount[2] --;
    }
    }
    if(one[3][playerid] == 1)
    {
    if(onecount[3] >0)
    {
    onecount[3] --;
    }
    }
    dm[0][playerid] = 0;
    dm[1][playerid] = 0;
    dm[2][playerid] = 0;
    dm[3][playerid] = 0;
    dm[4][playerid] = 0;
    dm[5][playerid] = 0;
    one[0][playerid] = 0;
    one[1][playerid] = 0;
    one[2][playerid] = 0;
    one[3][playerid] = 0;
    Killstreak[playerid] = 0;
    Map[playerid] = 0;
    return 1;
    }

  • aber beim Speichern fragst du folgendes ab:
    if(GetPVarInt(playerid,"Eingeloggt") == 1)


    Habe ich es überlesen oder setzt du "Eingeloggt" garnicht auf 1?

    Doch bei response

    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    new str[128];
    switch(dialogid)
    {
    case DIALOG_REGISTER:
    {
    if(response)
    {
    if(strlen(inputtext) == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register","Das angegebene Passwort war zu Kurtz...\nBitte Registrier dich jetzt mit einem Passwort:","Register","Abbrechen");
    return 1;
    }
    else
    {
    CreateAccount(playerid, inputtext);
    SetPVarInt(playerid,"Eingeloggt",1);
    SpawnPlayer(playerid);
    ClearChat(playerid);
    SendClientMessage(playerid,GELB,"Benutze /arenen um in eine Arena beizutreten!");
    SendClientMessage(playerid,GELB,"[NEW] Kennst du schon unsere /teamdm Arena oder das /1o1 System?");
    return 1;
    }
    }
    else
    {
    Kick(playerid);
    }
    }
    case DIALOG_LOGIN:
    {
    if(response)
    {
    if(strlen(inputtext) == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das Angegebene Passwort war Falsch.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
    return 1;
    }
    else
    {
    new SpielerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, SpielerName, MAX_PLAYER_NAME);
    if(!strcmp(inputtext, mysql_ReturnPasswort(SpielerName), true))
    {
    SetPVarInt(playerid,"Eingeloggt",1);
    LoadPlayer(playerid);
    SpawnPlayer(playerid);
    ClearChat(playerid);
    SendClientMessage(playerid,GELB,"Benutze /arenen um in eine Arena beizutreten!");
    SendClientMessage(playerid,GELB,"[NEW] Kennst du schon unsere /teamdm Arena oder das /1o1 System?");
    return 1;
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das war das Falsche Passwort.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
    return 1;
    }
    }
    }
    else
    {
    Kick(playerid);
    }
    }

  • Geht auch nur ich empfehle diese Funktion keinen, da das direkte getten deutlich schneller ist als eine extra funktion


    Würde das so gehen?

    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    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_SetInt("accounts", "Bann", SpielerInfo[playerid][pBann], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Adminlevell", SpielerInfo[playerid][pAdmin], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    }
    }
    return 1;
    }