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
  • hundi KOmmt drauf an? Zahl oder Float? Also 100 oder 100.00


    Also:


    Wenn du ein enum nimmst wird dein Geld so geladen:


    SpielerInfo[playerid][pGeld] = mysql_GetInt("tabellenname(Bsp:accounts)","Spaltenname(Bsp:Geld)",Where1,Where2);


    Bei dem where gehts darum in welcher Zeile, bzw bei welchem Spieler er den Geldbetrag ausließt. Ohne das weiß er ja nur: Tabelle Accounts in Spalte "Geld" nachschaun aber da da wahrscheinlich mehrere Spieler gespeichert sind:


    Also suchst du anhand des Spielernamen in der Tabelle.
    Where1 - In Spalte "Name" gucken, einfach "name" reinschreiben oder wie bei dir die Spalte heißt wo der Name gespeichert wird.


    Damit er weiß wie der Name heißt wo der Server in der DB nachschaun muss:


    SpielerInfo[playerid][pName]; oder mit GetPlayerName arbeiten.


    Dann sollte er es laden. Oder statt SpielerInfo... oben einfach GivePlayerMoney(playerid,mysql_GetInt("tabellenname(Bsp:accounts)","Spaltenname(Bsp:Geld)",Where1,Where2); );


    - Tomsen

  • Eine Frage muss nicht die Health gegettet und gesettet werden?
    Ist das so richtig? Weil mache das erst seit einer Halben h mit MySQL
    Bei SavePlayer

    GetPlayerHealth(playerid,SpielerInfo[playerid][pHealth]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);


    Bei LoadPlayer

    SpielerInfo[playerid][pHealth] = mysql_GetInt("accounts", "Health", "Name", SpielerInfo[playerid][pName]);
    SetPlayerHealth(playerid,SpielerInfo[playerid][pHealth]);

  • Theoretisch brauchst du kein SpielerInfo[playerid][pHealth] weil das ja nur da ist um Sachen nicht immer aus der Datenbank auslesen zu müssen.


    Da du aber Health nur einmal, und zwar beim Login ausließt, und einmal beim Disconnecten speicherst brauchst du das nicht.


    Mach bei Saveplayer mal das:


    new Float:health; //neue Float "health" bestimmen
    GetPlayerHealth(playerid,health); //playerid seine Lebenspunkte abfragen und als "health" definieren.
    //Nun kannst du health benutzen um die mit GetPlayerHealth abgefragten Lebenspunkte zu speichern. Das selbe mit GetPlayerArmour


    Quelle: http://wiki.sa-mp.com/wiki/GetPlayerHealth</a>


    Also so speichern:


    mysql_SetFloat("accounts", "Health", health(oder Float:health, bin mir nicht sicher), "Name", SpielerInfo[playerid][pName]);


    Bei LoadPlayer:


    new Float:health; //neue Float "health" bestimmen
    health = mysql_GetFloat("accounts", "Health", "Name", SpielerInfo[playerid][pName]); //Nicht GetInt sondern GetFloat!, du speicherst ja auch eine
    SetPlayerHealth(playerid,health);
    Du kannst das mit dem SpielerInfo[playerid][..] nicht überall gleich machen. Bisschen nachdenken :)


    - Tomsen

  • Mein Fehler: (310) : error 017: undefined symbol "mysql_query"


    stock CheckAccount(playerid)
    {
    new query[128],count;
    mysql_real_escape_string(SpielerName(playerid), SpielerName(playerid));
    format(query, sizeof(query), "SELECT * FROM `accounts` WHERE `Name` = '%s'", SpielerName(playerid));
    mysql_query(query);
    mysql_store_result();
    count = mysql_num_rows();
    mysql_free_result();
    return count;
    }


    (Ich benutze die R5 wie im Tutorial)


    Sorry falls es hier schon steht aber ich hab keine 35 Seiten durch geguckt

  • Servus,
    find dein Tutorial wirklich gut bei mir klappt auch eigentlich alles,
    aber ich habe trotzdem denke ich irgendwo ein Fehler habe aber alles so wie du es hast,
    also wenn ich in meiner DB mein Adminlevel,Level,Geld oder anderes änder wird es Ingame nicht übernommen,
    aber wenn ich wieder in die Tabelle gehe ist es halt so wie ich es verändert habe....Das gleiche auch wenn ich ingame zumbeispiel durch Paydays Geld verdiene,wird es nicht in der Tabelle übernommen.
    Weiß nicht mehr weiter bitte helft mir...

  • Also irgendwas stimmt da bei dir nicht ^^


    Wenn ich zb das PW hallo123 habe (6zeichen)
    und dann 123456 eingebe (6zeichen) loggt deer mich ein ....

    Mit freundlichen Grüßen,



    Zurzeit befindet sich der Server leider noch in einer gewissen Aufbauphase,da das Script noch nicht

    ganz unseren Vorstellungen entspricht.