MySQL Problem... (3 Warnings + Login/register System geht nicht mehr)

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 Leute!


    Ich habe wiedermal ein Problem >_> ... Und zwar: Seid dem ich und ein Freund von mir ein Nitrado Server gemitet haben, geht das Login/register System nicht mehr richtig... auch auf dem Testserver geht es nicht mehr richtig.


    Hier mein Problem: Wenn der Server Restartet wurde, dann kann sich maximal eine Person sich Regestrieten oder Einloggen. Und andere können es nicht mehr. Und auch wenn der jenige User sich Regestriert hat oder eingeloggt, wird zwar alles ausgelesen und so, aber wenn der Spieler dann reloggt , kann er sich auch nicht mehr Einloggen/Registrieren bzw. die Textdraws werden nicht angezeigt.


    Hier der Warning in der MySQL_Log:

    PHP
    [19:40:54] [WARNING] cache_get_row_count - no active cache
    [19:41:49] [WARNING] cache_get_row_count - no active cache


    Und hier bestimmte stellen aus dem Register/login system:




    //Hier einmal die GANZEN stocks//Publics:
    public OnPlayerRegister(playerid)
    {
    SpielerInfo[playerid][db_id] = cache_insert_id(dbhandle);
    return 1;
    }


    public OnPlayerSkinTextdraw(playerid)
    {
    if(cache_num_rows() != 0) SpielerInfo[playerid][Skin] = cache_get_field_content_int(0,"Skin",dbhandle);
    else SpielerInfo[playerid][Skin] = 0;
    PlayerTextDrawSetPreviewModel(playerid,Textdraw7[playerid], SpielerInfo[playerid][Skin]);
    return 1;
    }


    public OnPlayerDataLoaded2(playerid)
    {
    if(cache_num_rows() != 0)
    {
    SendClientMessage(playerid, Rot,"[FEHLER] {FFFFFF}Dieser Account ist Regestriert! Um hier spielen zu können, musst du dich Einloggen!");
    return 1;
    }
    else
    {
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Registrierung","Herzlichen Willkommen auf Incredible German Reallife!\nBitte gib nun dein Password ein, um auf dem Server Spielen zu können!","Register","Abbrechen");
    return 1;
    }
    }


    public OnPlayerDataLoaded(playerid)
    {
    if(cache_num_rows() == 0)
    {
    SendClientMessage(playerid, Rot,"[FEHLER] {FFFFFF}Dieser Account ist nicht Regestriert! Um hier spielen zu können, musst du dich Regestrieren!");
    return 1;
    }
    else //Falls doch
    {
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD,"Login Vorgang","Herzlichen Willkommen zurück auf Incredible German Reallife!\nBitte gib nun dein Password ein!","Login","Abbrechen");
    return 1;
    }
    }


    public OnPasswordResponse(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    //passwort richtig
    new aname[MAX_PLAYER_NAME],string[128];
    SpawnPlayer(playerid);
    SpielerInfo[playerid][eingeloggt] = 1;
    SpielerInfo[playerid][Level] = cache_get_field_content_int(0,"Level",dbhandle);//So liest man etwas aus der Datenbank!
    SetPlayerScore(playerid,SpielerInfo[playerid][Level]);
    SpielerInfo[playerid][db_id] = cache_get_field_content_int(0,"id",dbhandle);
    SpielerInfo[playerid][Alevel] = cache_get_field_content_int(0,"Alevel",dbhandle);
    SetPlayerMoney(playerid, cache_get_field_content_int(0,"Geldaufhand",dbhandle));
    SpielerInfo[playerid][Skin] = cache_get_field_content_int(0,"Skin",dbhandle);
    SetPlayerSkin(playerid, SpielerInfo[playerid][Skin]);
    SpielerInfo[playerid][Fraktion] = cache_get_field_content_int(0,"Fraktion",dbhandle);
    SpielerInfo[playerid][Kills] = cache_get_field_content_int(0,"Kills",dbhandle);
    SpielerInfo[playerid][Tode] = cache_get_field_content_int(0,"Tode",dbhandle);
    SpielerInfo[playerid][p_x] = cache_get_field_content_float(0,"p_x",dbhandle);
    SpielerInfo[playerid][p_y] = cache_get_field_content_float(0,"p_y",dbhandle);
    SpielerInfo[playerid][p_z] = cache_get_field_content_float(0,"p_z",dbhandle);

    loadPlayerCars(playerid);

    GetPlayerName(playerid, aname, sizeof(aname));
    if(SpielerInfo[playerid][Alevel] >= 1)
    {
    format(string, sizeof(string), "[A-INFO]{FF9D00} %s {FFFFFF}hat sich erfolgreich als {FF9D00}%s {FFFFFF}eingeloggt!", aname, GetPlayerAdminRank(playerid));
    SendAdminMessage(Rot,string);
    return 1;
    }
    }
    else
    {
    //passwort Falsch
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das war das Falsche Passwort.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
    }
    return 1;
    }


    SavePlayer(playerid)
    {
    if(SpielerInfo[playerid][eingeloggt] == 0)return 1;
    new query[128];
    format(query,sizeof(query),"UPDATE user SET Level='%i',Geldaufhand='%i',Fraktion='%i',Kills='%i',Tode='%i',Alevel='%i',Skin='%i',Health='%f' WHERE id='%i'",SpielerInfo[playerid][Level],GetPlayerMoney(playerid),SpielerInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,false,"","");
    return 1;
    }


    resetPlayer(playerid)
    {
    for(new i=0; i<sizeof(SpielerInfo[]); i++)
    {
    SpielerInfo[playerid][SpielerDaten:i]=0;
    }
    return 1;
    }


    //Hier mein OnPlayerClickTextDraw:
    public OnPlayerClickTextDraw(playerid, Text:clickedid)
    {
    if(_:clickedid != INVALID_TEXT_DRAW) //Sagt das wenn der Player ein falsches TD anklickt nichts passieren soll.
    {
    if(clickedid == Textdraw2) //Textdraw2 = Register
    {
    if(GetPVarInt(playerid,"eingeloggt") == 0)
    {
    new name[MAX_PLAYER_NAME],query[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"SELECT * FROM user WHERE username='%s'",name);
    mysql_function_query(dbhandle,query,true,"OnPlayerDataLoaded2","i",playerid);
    }
    }
    else if(clickedid == Textdraw3)
    {
    if(GetPVarInt(playerid,"eingeloggt") == 0)
    {
    new name[MAX_PLAYER_NAME],query[128];
    GetPlayerName(playerid,name,sizeof(name));
    format(query,sizeof(query),"SELECT * FROM user WHERE username='%s'",name);
    mysql_function_query(dbhandle,query,true,"OnPlayerDataLoaded","i",playerid);
    }
    }
    }
    return 1;
    }


    //und hier die Dialogs:
    if(dialogid==DIALOG_LOGIN)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[128],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>0)
    {
    mysql_escape_string(inputtext,passwort,dbhandle);//Fragt ab ob das Passwort richtig ist
    format(query,sizeof(query),"SELECT * FROM user WHERE username='%s' AND passwort=MD5('%s')",name,passwort);
    mysql_function_query(dbhandle,query,true,"OnPasswordResponse","i",playerid);
    //SpawnPlayer(playerid);

    }
    else
    {
    //keine Eingabe
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Das Angegebene Passwort war Falsch.\nBitte log dich jetzt mit dem richtigen Passwort ein:","Login","Abbrechen");
    }
    }
    else
    {
    return 1;
    }
    return 1;
    }
    if(dialogid==DIALOG_REGISTER)
    {
    if(response)
    {
    new name[MAX_PLAYER_NAME],query[128],passwort[35];
    GetPlayerName(playerid,name,sizeof(name));
    if(strlen(inputtext)>=3)
    {
    //Registerfunktion
    mysql_escape_string(inputtext,passwort,dbhandle);
    format(query,sizeof(query),"INSERT INTO user (username,passwort) VALUES ('%s',MD5('%s')) ",name,passwort);
    mysql_function_query(dbhandle,query,false,"OnPlayerRegister","i",playerid);
    SpawnPlayer(playerid);
    }
    else
    {
    //Kleiner als 4 Zeichen
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD,"Registrierung","Das angegebende Passwort war zu kurz! Bitte versuchs nochmal:","Register","Abbrechen");
    }


    }
    else
    {
    return 1;
    }
    return 1;
    }


    und zum Zweiten Problem:
    Wie mache ich dass wenn jetzt ein neuer User sich regestriet hat und an einer Bestimmten Stelle spawn soll(ich habe ein Spawnsystem also wenn man sich ausslogt, soll man da gespawnt werden.) Hier ist mein Code unter OnPlayerSpawn:



    if(cache_num_rows() != 0)
    {
    SetPlayerPos(playerid, SpielerInfo[playerid][p_x],SpielerInfo[playerid][p_y],SpielerInfo[playerid][p_z]);
    }
    else
    {
    SetPlayerPos(playerid,1386.0745,-1897.0491,13.8029);
    }


    Ich wäre über eure Hilfe sehr verbunden!

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

    Einmal editiert, zuletzt von [GeD]Max ()