Beiträge von Jeffry

    Hast du im scriptfiles Ordner den Ordner "Häuser" erstellt?
    Übrigens ist es immer eine schlechte Idee Umlaute (ä, ö, ü) zu verwenden, das kannst du vielleicht im Code gleich ändern.

    http://www11.pic-upload.de/30.04.15/6zx9tboiir7r.png
    Das ist das Bild welches du zuvor gepostet hast. Die Idee, mal die Feldlänge von "passwort" in der Tabelle zu prüfen kam mir beim Essen. Jetzt ist mir klar warum bei dir nichts geklappt hat, da muss man aber auch erst mal drauf kommen.
    Dein "passwort" Feld in der Datenbank ist zu klein. Du hast da nur 25 Zeichen drin, ein MD5 ist aber 32 Zeichen lang. Deshalb geht das nicht.


    Wenn du das hochsetzt, dann müsste es auch ganz normal mit dem MD5('%e') im Query klappen.
    Das erklärt auch, warum es ohne den Hash ging, weil dein Passwort weniger als 25 Zeichen hat.

    Wie heißt denn eigentlich die Spalte in der Tabelle?
    password oder passwort? Ich habe hier jetzt nämlich beide Varianten gesehen, wenn das nicht passt, dann würde es natürlich alle Fehler erklären. Prüfe das mal.

    Das darfst du nicht ins query schreiben.
    mysql_format(Handle, query, sizeof(query), "SELECT * FROM user WHERE username='%e' AND passwort='%e'", Spielername(playerid), MD5_Hash(inputtext));


    So natürlich auch beim registrieren.

    Wie sieht das Query aus, mit dem du OnPasswordResponse aufrufst?


    EDIT:
    Ich sehe grade, das steht ja in einer anderen Tabelle. Ich bin mir ziemlich sicher, dass du keinen INNER JOIN durchführst, daher musst du noch ein zweites Query ausführen, welches die Daten aus der prisoneduser Tabelle ausliest.

    Ich habe selbst auch noch nie damit gearbeitet, aber laut der Doku müsste es so klappen:
    new query[256], md5[33];
    md5(inputtext, md5);
    mysql_format(Handle, query, sizeof(query), "SELECT * FROM user WHERE username='%e' AND passwort='%e'", Spielername(playerid), md5);
    printf("query: %s", query);
    mysql_tquery(Handle, query, "OnPasswordResponse", "i", playerid);


    Gleiches Prinzip natürlich beim Registrieren, bzw...kannst es ja erst mal dort noch mit dem MD5 im Query lassen, vielleicht reicht das schon so.

    Das ist schon interessant, dass es dann geht. Na gut, du kannst das MD5 mit einem Plugin wie diesem generieren lassen:
    http://forum.sa-mp.com/showthread.php?t=152682


    Dann kannst du es damit in die Datenbank schreiben, bzw. den Select ausführen lassen, musst halt vorher das Passwort umwandeln lassen, anstatt im Query.



    (!!Achtung!! Bei solidfiles: Nutze den "Direct download link" und nicht den grünen Download-Button, da bekommst du eine .exe!)

    Sorry für die späte Antwort, war beschäftigt meine Treiber auf Windows 10 zu aktualisieren.
    Bin grade dabei Microsoft Edge zu testen.


    Debugge den Code mit diesen Prints:
    if(dialogid == DIALOG_LOGIN)
    {
    if(!response)
    {
    return Kick(playerid);
    }
    new query[256];
    mysql_format(Handle, query, sizeof(query), "SELECT * FROM user WHERE username='%e' AND passwort=MD5('%e')", Spielername(playerid), inputtext);
    printf("query: %s", query);
    mysql_tquery(Handle, query, "OnPasswordResponse", "i", playerid);
    }


    forward OnPasswordResponse(playerid);
    public OnPasswordResponse(playerid)
    {
    new num_fields, num_rows;
    cache_get_data(num_rows, num_fields);
    printf("rows: %d", num_rows);
    if(num_rows == 0)
    {
    printf("Passwort falsch");
    //Passwort falsch..
    /* Kamerafahrt */
    InterpolateCameraPos(playerid, 410.214721, -1902.890136, 1.724467, 702.832702, -1904.377319, 3.244797, 100000);
    InterpolateCameraLookAt(playerid, 410.543914, -1897.903930, 1.554080, 699.028930, -1901.132202, 3.214741, 100000);
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung - Passwort falsch", "Dein Passwort ist nicht richtig\nsolltest du es vergessen haben\nmelde dich im Forum.", "Anmelden", "Abbrechen");
    SetSpawnInfo(playerid,0,0,0,0,0,0,0,0,0,0,0,0);
    SpawnPlayer(playerid);
    }
    else
    {
    printf("Login");
    //Passwort richtig..
    SendClientMessage(playerid,gelb, "Erfolgreich eingeloggt.");
    pInfo[playerid][pEingeloggt] = 1;
    LoadAccount(playerid);
    SpawnPlayer(playerid);
    }
    return 1;
    }


    Poste dann, was im Server Log steht.
    Poste außerdem einen Screenshot von der user-Tabelle aus der Datenbank, wo man die Daten sieht.

    Hm, das passt alles. Das einzigste was mir da spontan auffällt, wäre dass mysql_format vielleicht nicht mit dem %e in MD5 klar kommt.
    Ändere mal:
    mysql_format(Handle, query, sizeof(query), "SELECT * FROM user WHERE username='%e' AND passwort=MD5('%e')", Spielername(playerid), inputtext);
    zu:
    format(query, sizeof(query), "SELECT * FROM user WHERE username='%s' AND passwort=MD5('%s')", Spielername(playerid), inputtext);


    Klappt es dann? (Das mit dem escapen ist für den Test erst mal egal, du injectest deine eigene Datenbank ja nicht, da ändern wir dann, falls es geht.)