(MySQL R39 LoginRegister)Kriege erst nach Relogg Geld und Score

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
  • Moin Leute,


    ich habe folgendes Problem, mein Script habe ich per Pastebin beigelegt (Ist nicht groß keine Sorge).
    Wenn ich mich registriere startet er das Tutorial und gibt noch kein Geld oder setzt das Level zum Score. Das ist noch richtig. Wenn er nun das Tutorial beendet soll er das Geld bekommen und das Level als Score gesetzt werden. Dies tut er aber nicht. In der Tabelle ist aber das Geld und Level usw. alles richtig gespeichert. Wenn ich mich dann auslogge und wieder einlogge spawne ich ganz normal und bekomme das Geld und den Score gesetzt. Ich hoffe jemand kann mir hierbei eventuell helfen und mal rüberschauen.


    Mit freundlichem Gruß,
    SebMcpepp


    Anhang: http://pastebin.com/6ps8ABPA

  • Alternativ zu der Erklärung hier ( [jTuT] MySQL R39-3 (Installation, XAMPP, Verwendung, Bedienung & Registrations-System) ) kannst du es nach dem Code so machen:


    if(dialogid == DIALOG_REGISTER)
    {
    //Spieler hat Abbrechen gewählt
    if(!response) return Kick(playerid);


    //Wenn der Spieler kein, oder ein zu kurzes, Passwort eingegeben hat
    if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registrierung", "Bitte registrieren Sie sich:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen");


    //Wenn alles passt wird der Spieler in der Datenbank angelegt
    //Als Verschlüsselung für das Passwort wird MD5 verwendet
    new query[256];
    mysql_format(handle, query, sizeof(query), "INSERT INTO users (name, password, level, money) VALUES ('%e', MD5('%e'),1,2500)", PlayerInfo[playerid][pName], inputtext);


    //Das Query wird abgesendet und die playerid an OnUserRegister übergeben
    mysql_pquery(handle, query, "OnUserRegister", "d", playerid);
    pFirstLog[playerid] = true;
    PlayerInfo[playerid][pMoney] = 2500;
    PlayerInfo[playerid][pLevel] = 1;
    return 1;
    }



    public OnPlayerSpawn(playerid)
    {
    SetPlayerPos(playerid, 329.0244,-1513.3033,36.0391);
    SetPlayerCameraPos(playerid, 329.0244,-1513.3033,36.0391);
    SetPlayerCameraLookAt(playerid, 329.0244,-1513.3033,36.0391);
    SetPlayerFacingAngle(playerid,49.4261);
    if(pFirstLog[playerid] == true)//Erster Login
    {
    SetPlayerPos(playerid,0.0,0.0,0.0); // Tutorial Position
    TogglePlayerControllable(playerid,false);
    TutTime[playerid] = 1;
    TutTimer[playerid] = SetTimerEx("Tutorial",1000,1,"i",playerid);
    }
    else if(pFirstLog[playerid] == false)//Nicht erster Login
    {
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid,PlayerInfo[playerid][pMoney]);
    SetPlayerScore(playerid,PlayerInfo[playerid][pLevel]);
    }
    return 1;
    }


    Dann wird das Geld beim Spawn jedes mal wieder korrekt gesetzt, zu dem was in der Variable steht.



    Außerdem musst du
    else if(TutTime[playerid] == 50) // hier wird abgefragt wieviel Sekunden seit dem Start des Tutorials verstrichen sind
    {
    KillTimer(TutTimer[playerid]); // der Tutorial Timer wird beendigt
    TutTime[playerid] = -1; // die Tutorial Zeit auf INVALID gsetzt - nach Goldkiller :)
    SpawnPlayer(playerid); // der Spawn, wo er nach dem Tutorial hinsoll
    TogglePlayerControllable(playerid,true); // hier wird die Fähigkeit sich zu bewegen wieder auf "wahr" gesetzt
    GameTextForPlayer(playerid,"~g~Willkommen, ~r~ auf -",6000,1); // GameText am Ende des Tutorials
    pFirstLog[playerid] = false;
    }
    zu
    else if(TutTime[playerid] == 50) // hier wird abgefragt wieviel Sekunden seit dem Start des Tutorials verstrichen sind
    {
    pFirstLog[playerid] = false;
    KillTimer(TutTimer[playerid]); // der Tutorial Timer wird beendigt
    TutTime[playerid] = -1; // die Tutorial Zeit auf INVALID gsetzt - nach Goldkiller :)
    SpawnPlayer(playerid); // der Spawn, wo er nach dem Tutorial hinsoll
    TogglePlayerControllable(playerid,true); // hier wird die Fähigkeit sich zu bewegen wieder auf "wahr" gesetzt
    GameTextForPlayer(playerid,"~g~Willkommen, ~r~ auf -",6000,1); // GameText am Ende des Tutorials
    }
    ändern, sonst startet das Tutorial ein zweites Mal.