Mysql Probleme wollen nicht aufhören..

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 hier schon zum ziemlich 5 mal einen Thread gemacht :/ .. Weil einfach NICHTS klappt bei Mysql..


    Ich habe die R31 Version.
    Beim Register wird der Name und das Passwort richtig in die Datenbank gespeichert, heißt die Verbindung funktioniert, bei OnGameModeInit wird die Verbindung auch hergestellt..
    Aber beim Login kann ich jedes Passwort eingeben das ich will und ich kann mich einloggen..
    Außerdem wird mein Spieler weder gespeichert noch geladen :( ... Ich würde so gerne mein Script machen.. Aber ich brauch erstmal dieses Register/Login System..


    Ich habe für euch das gesammte Script hochgeladen, nur die Infos der Datenbank raus genommen..
    Ich hoffe jemand findet das Problem und weiß wie ich es lösen kann .. Und erklärt es mir bitte auch!


    http://pastebin.com/gXBsiqAf

  • Du kannst Strings nicht in einer If-Abfrage mit == vergleichen. Dazu benutzt man strcmp.
    http://wiki.sa-mp.com/wiki/Strcmp


    Ich habe dir das ganze umgeschrieben, und sollte funktionieren.
    if(dialogid == DIALOG_LOGIN){
    if(!response)return SCM(playerid,frot,"[FEHLER]: Du hast den Login bei MVS Abgebrochen!"),KickPlayer(playerid);
    new name[MAX_PLAYER_NAME],passwort[35];GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    if(!strlen(inputtext))return SCM(playerid,bblau,"[INFO]: Gib dein Passwort ein!"),ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login auf MVS ","Bitte Logge dich mit deinem Passwort ein. ","Login","Abbrechen");
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,128,"SELECT * FROM accounts WHERE NAME='%s' AND PASSWORT='%s'",PalyerName(playerid),passwort);
    return mysql_function_query(dbhandle,query,true,"_PasswortCheck","d",playerid);
    }


    forward _PasswortCheck(playerid);
    public _PasswortCheck(playerid){
    new Num[2];cache_get_data(Num[0],Num[1],dbhandle);
    if(!Num[0])return SCM(playerid,frot,"[FEHLER]: Dein Passwort stimmt nicht!"),ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login auf MVS","{FF0000}Dein eingegebes Passwort war Falsch!\n{FFFFFF}Gib unten dein passwort ein!","Login","Abbrechen");
    return SCM(playerid,bblau,"[INFO]: Du hast dich erfolgreich eingeloggt!"),LoadPlayer(playerid);
    }


    stock LoadPlayer(playerid){
    new query[128];
    format(query,128,"SELECT * FROM accounts WHERE `NAME`='%s'",PlayerName(playerid));
    return mysql_function_query(dbhandle,query,true,"OnUserLoad","d",playerid);
    }


    forward OnUserLoad(playerid);
    public OnUserLoad(playerid){
    new Num[2];cache_get_data(Num[0],Num[1],dbhandle);
    if(!Num[0])return 1;
    PlayerInfo[playerid][db_id]=cache_get_field_content_int(0,"ID",dbhandle);
    PlayerInfo[playerid][pLevel]=cache_get_field_content_int(0,"LEVEL",dbhandle),SetPlayerScore(playerid,PlayerInfo[playerid][pLevel]);
    PlayerInfo[playerid][pAdmin]=cache_get_field_content_int(0,"ALEVEL",dbhandle);
    PlayerInfo[playerid][pGeld]=cache_get_field_content_int(0,"BARGELD",dbhandle),GivePlayerMoney(playerid,PlayerInfo[playerid][pGeld]);
    PlayerInfo[playerid][pBank]=cache_get_field_content_int(0,"BANKGELD",dbhandle);
    PlayerInfo[playerid][pSkin]=cache_get_field_content_int(0,"SKIN",dbhandle),SetPlayerSkin(playerid,PlayerInfo[playerid][pSkin]);
    SpawnPlayer(playerid);
    return 1;
    }


    stock SavePlayer(playerid){
    new query[500];
    format(query,sizeof query,"UPDATE `accounts` SET NAME='%s',LEVEL=%d,ALEVEL=%d,BARGELD=%d,BANKGELD=%d,SKIN=%d WHERE NAME='%s",
    PlayerInfo[playerid][pName],GetPlayerScore(playerid),PlayerInfo[playerid][pAdmin],GetPlayerMoney(playerid),PlayerInfo[playerid][pBank],PlayerInfo[playerid][pSkin],PlayerName(playerid));
    return mysql_function_query(dbhandle,query,false,"","");
    }


    EDIT: Du hättest dir das mit LoadPlayer auch sparen können, und direkt unter _PasswortCheck einbauen können.