MySQL (Installation, Zugriff, Einstellungen, Login & Register Beispiel)

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
  • Ist bereits drinne, aber bei Save fehlte das, jedoch ist das Problem immer noch nicht behoben...


    Hier so hab ich LoadPlayer drinne:
    }
    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))//Wir fragen ab ob der angegebene Spieler auch Online ist, und kein NPC ist (nur zur sicherhheit)
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME); //Wir Speichern den Namen des Spielers in der Variable [i]SpielerInfo[playerid][pName][/i]
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Level" eingetragen ist und Speichern ihn in unserer Variable.
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Geld" eingetragen ist und Speichern ihn in unserer Variable.
    SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Kills" eingetragen ist und Speichern ihn in unserer Variable.
    SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Tode" eingetragen ist und Speichern ihn in unserer Variable.
    SpielerInfo[playerid][pWanteds] = mysql_GetInt("accounts", "Wanteds", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pFraktion] = mysql_GetInt("accounts", "Fraktion", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "AdminLevel", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pSupporter] = mysql_GetInt("accounts", "SupporterLevel", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pPosX] = mysql_GetInt("accounts", "PositionX", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pPosY] = mysql_GetInt("accounts", "PositionY", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pPosZ] = mysql_GetInt("accounts", "PositionZ", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pPremium] = mysql_GetInt("accounts", "PremiumLevel", "Name", SpielerInfo[playerid][pName]);
    }
    return 1;
    }



    Problem nun gelöst, es lag daran das ich bei SavePlayer folgendes stehen hatte mysql_SetInt("accounts","PositionX" etc...
    aber das hätte mysql_SetFloat heißen müssen.


    Trozdem nochmal ein danke an alle die geholfen haben ;)

    Einmal editiert, zuletzt von Killer_Noob ()

  • Boor man ej es will nicht die letzt pos abrufen speichern geht ab abrufen nicht ich spawn an die 0.0 , 0.0 , 0.0 also hier farm


    public OnPlayerSpawn(playerid)
    {
    StopAudioStreamForPlayer(playerid);
    SetPlayerPos(playerid,PlayerInfo[playerid][pPos_x], PlayerInfo[playerid][pPos_y], PlayerInfo[playerid][pPos_z]);
    }


    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GetPlayerName(playerid, PlayerInfo[playerid][pName], MAX_PLAYER_NAME);
    PlayerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pGeschlecht] = mysql_GetInt("accounts", "Geschlecht", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pAlter] = mysql_GetInt("accounts", "Alter", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pTut] = mysql_GetInt("accounts", "TuT", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pInt] = mysql_GetInt("accounts", "Interior", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pHealth] = mysql_GetInt("accounts", "Health", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pPos_x] = mysql_GetInt("accounts", "Pos_x", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pPos_y] = mysql_GetInt("accounts", "Pos_y", "Name", PlayerInfo[playerid][pName]);
    PlayerInfo[playerid][pPos_z] = mysql_GetInt("accounts", "Pos_z", "Name", PlayerInfo[playerid][pName]);
    }
    return 1;
    }



    Also speichern geht aber abrufen nicht aber trotzden hier


    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    mysql_SetInt("accounts", "Level", PlayerInfo[playerid][pLevel], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geschlecht", PlayerInfo[playerid][pGeschlecht], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Alter", PlayerInfo[playerid][pAlter], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geld", PlayerInfo[playerid][pGeld], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "TuT", PlayerInfo[playerid][pTut], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Kills", PlayerInfo[playerid][pKills], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tode", PlayerInfo[playerid][pTode], "Name", PlayerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Interior", PlayerInfo[playerid][pInt], "Name", PlayerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Health", PlayerInfo[playerid][pHealth], "Name", PlayerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Pos_x", PlayerInfo[playerid][pPos_x], "Name", PlayerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Pos_y", PlayerInfo[playerid][pPos_y], "Name", PlayerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Pos_z", PlayerInfo[playerid][pPos_z], "Name", PlayerInfo[playerid][pName]);
    }
    }
    return 1;
    }

  • Bei mir speichert er den Skin nicht ;(



    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid)) //wir überprüfen ob der Spieler überhaupt noch Connected ist und ob er nicht ein NPC ist.
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1) //Und hier ob er noch eingeloggt ist.
    {
    //Nun speichern wir die Daten in der Datenbank.
    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", "Skin", GetPlayerSkin(playerid), "Name", SpielerInfo[playerid][pName]);
    }
    }
    return 1;
    }




    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))//Wir fragen ab ob der angegebene Spieler auch Online ist, und kein NPC ist (nur zur sicherhheit)
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME); //Wir Speichern den Namen des Spielers in der Variable [i]SpielerInfo[playerid][pName][/i]
    SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Level" eingetragen ist und Speichern ihn in unserer Variable.
    SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]); //Wir holen uns den wert der unter "Geld" eingetragen ist und Speichern ihn in unserer Variable.
    SetPlayerSkin(playerid, mysql_GetInt("accounts", "Skin", "Name", SpielerInfo[playerid][pName]));
    }
    return 1;
    }



    Kann jemand helfen?^^

  • Gutes Tutorial muss man schon sagen!


    Eine Sache ist allerdings ein klein wenig problematisch und daher auch meine Frage.
    Gibt es noch eine Altanative als das Passwort beim Login so zu überprüfen:
    if(!strcmp(inputtext, mysql_ReturnPasswort(SpielerName), true))
    Das Problem ist hier, dass er nicht zwischen Groß- und Kleinbuchstaben unterscheidet..

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Code
    #define SQL_HOST   "127.0.0.1"
    #define SQL_USER   "root"
    #define SQL_PASS   ""
    #define SQL_DATA   "datenbank"
    
    
    #define DIALOG_REGISTER 1
    #define DIALOG_LOGIN 2



    Code
    enum SpielerDaten
    {
        pName[MAX_PLAYER_NAME],
        pLevel,
        pGeld,
        pKills,
        pTode,
        Float:pHealth
    }
    new SpielerInfo[MAX_PLAYERS][SpielerDaten];



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