ich kann mich nicht einloggen Da der dialog nicht kommt

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
  • meinst du das ?
    public OnPlayerRequestClass(playerid, classid)
    {
    if(IsPlayerNPC(playerid))
    {
    SpawnPlayer(playerid);
    return 1;
    }
    if(mysql_CheckAccount(playerid) == 1)
    {
    new logname[MAX_PLAYER_NAME];
    new logstr[250];
    format(logstr,sizeof(logstr),"{FEFEFE}Herzlich Willkommen zurück {FF8C00}%s{FEFEFE},\nWir die NoL Community, wünschen dir noch {FF8C00}viel Spaß\n{FEFEFE}Logge dich bitte ein!",logname);
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"NoL - Login",logstr,"Login","Abbrechen");
    }
    else if(mysql_CheckAccount(playerid) == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_REG,DIALOG_STYLE_PASSWORD,"NoL - Registrierung","{FF8C00}Herzlich Willkommen{FEFEFE},\n Es freut uns das du zu uns gefunden hast\nBitte {FF8C00}Registriere dich {FEFEFE}nun um hier Spielen zu können!","Register","Abbrechen");
    }
    PlayerPlaySound(playerid, 1176, 0.0, 0.0, 0.0);
    PlayerInfo[playerid][pModel] = Peds[classid][0];
    SetPlayerTeamFromClass(playerid,classid);
    SetupPlayerForClassSelection(playerid);
    return 1;
    }


    if(dialogid == DIALOG_LOGIN)
    {
    if(response && strlen(inputtext) > 0)
    {
    if(!strcmp(inputtext,mysql_ReturnPasswort(SpielerName(playerid)),true))
    {
    OnPlayerLogin(playerid);
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Das Passwort ist nicht korrekt");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Bitte versuche es erneut dich einzuloggen\nViel Spaß","Login","Abbrechen");
    }
    }
    else
    {
    Kick(playerid);
    }
    }
    if(dialogid == DIALOG_REG)
    {
    if(response)
    {
    ShowPlayerDialog(playerid,DIALOG_REG2,DIALOG_STYLE_INPUT,"Account erstellen","Gib das Passwort für deinen Account ein:","OK","Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_REG,DIALOG_STYLE_MSGBOX,"Account","Du benötigst einen Account, um auf diesem Server zu spielen!","Erstellen","Abbrechen");
    }
    }


    if(dialogid == DIALOG_REG2)
    {
    if(response && strlen(inputtext) > 0)
    {
    CreateAccount(playerid, inputtext);
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"Login","Bitte Logge dich nun ein um Spielen zu können\nViel Spaß !","Login","Abbrechen");
    }
    else
    {
    ShowPlayerDialog(playerid,DIALOG_REG2,DIALOG_STYLE_INPUT,"Account erstellen","Gib das Passwort für deinen Account ein:","OK","Abbrechen");
    }
    }

  • ist doch eig. alles ok


  • Ja, das sieht zwar gut aus aber das zeigt auch, dass
    if(mysql_CheckAccount(playerid) == 1)
    nicht aufgerufen wird.


    Mache dein OnPlayerRequestClass mal zu:
    public OnPlayerRequestClass(playerid, classid)
    {
    printf("OnPlayerRequestClass: %d", playerid);
    if(IsPlayerNPC(playerid))
    {
    SpawnPlayer(playerid);
    return 1;
    }
    printf("No NPC");
    printf("CheckAccount: %d", mysql_CheckAccount(playerid));
    if(mysql_CheckAccount(playerid) == 1)
    {
    printf("1");
    new logname[MAX_PLAYER_NAME];
    new logstr[250];
    printf("2");
    format(logstr,sizeof(logstr),"{FEFEFE}Herzlich Willkommen zurück {FF8C00}%s{FEFEFE},\nWir die NoL Community, wünschen dir noch {FF8C00}viel Spaß\n{FEFEFE}Logge dich bitte ein!",logname);
    printf("3");
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"NoL - Login",logstr,"Login","Abbrechen");
    }
    else if(mysql_CheckAccount(playerid) == 0)
    {
    printf("4");
    ShowPlayerDialog(playerid,DIALOG_REG,DIALOG_STYLE_PASSWORD,"NoL - Registrierung","{FF8C00}Herzlich Willkommen{FEFEFE},\n Es freut uns das du zu uns gefunden hast\nBitte {FF8C00}Registriere dich {FEFEFE}nun um hier Spielen zu können!","Register","Abbrechen");
    }
    printf("MySQL passed");
    PlayerPlaySound(playerid, 1176, 0.0, 0.0, 0.0);
    PlayerInfo[playerid][pModel] = Peds[classid][0];
    SetPlayerTeamFromClass(playerid,classid);
    SetupPlayerForClassSelection(playerid);
    printf("OnPlayerRequestClass - Done");
    return 1;
    }


    Was wird im server_log geprintet?

  • [12:39:28] Incoming connection: 85.177.108.252:51839
    [12:39:28] [join] TEST has joined the server (0:85.177.108.252)
    [12:39:31] OnPlayerRequestClass: 0
    [12:39:31] No NPC
    [12:39:31] CheckAccount: -1
    [12:39:31] MySQL passed
    [12:39:31] OnPlayerRequestClass - Done
    [12:41:04] [part] TEST has left the server (0:1)

  • So, das "mysql_CheckAccount" erklärt das auch, warum kein Dialog kommt, da du den nur anzeigen lässt, wenn es 0 oder 1 ist.
    Poste mal deine "mysql_CheckAccount"-Funktion, damit wir prüfen können ob es so gewollt ist, oder ob -1 als Fehler steht.

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

  • Ok, das ist komisch. Es kann nicht -1 Zeilen geben, das muss eine Fehlerrückgabe sein.
    Da das query ausgeführt wird, muss aber mehr im Log stehen, wenn du mysql_log auf LOG_ALL setzt. Schau mal danach, da muss wesentlich mehr stehen. Dann poste das was da steht.


  • das kommt wenn ich auf dem server joine
    aber oben ist der schon verbunden



  • soll ich alles auf mysql_query(2, Query); ändern



    wenn ja kommen diese fehler
    C:\Users\Admin\Desktop\NaMe oF LiFe\gamemodes\Nol.pwn(16284) : error 035: argument type mismatch (argument 1)
    C:\Users\Admin\Desktop\NaMe oF LiFe\gamemodes\Nol.pwn(16289) : error 035: argument type mismatch (argument 1)
    C:\Users\Admin\Desktop\NaMe oF LiFe\gamemodes\Nol.pwn(16294) : error 035: argument type mismatch (argument 1)
    C:\Users\Admin\Desktop\NaMe oF LiFe\gamemodes\Nol.pwn(16299) : error 035: argument type mismatch (argument 1)
    C:\Users\Admin\Desktop\NaMe oF LiFe\gamemodes\Nol.pwn(16304) : error 035: argument type mismatch (argument 1)
    C:\Users\Admin\Desktop\NaMe oF LiFe\gamemodes\Nol.pwn(16309) : error 035: argument type mismatch (argument 1)
    C:\Users\Admin\Desktop\NaMe oF LiFe\gamemodes\Nol.pwn(16314) : error 035: argument type mismatch (argument 1)
    C:\Users\Admin\Desktop\NaMe oF LiFe\gamemodes\Nol.pwn(16319) : error 035: argument type mismatch (argument 1)
    C:\Users\Admin\Desktop\NaMe oF LiFe\gamemodes\Nol.pwn(16324) : error 035: argument type mismatch (argument 1)
    C:\Users\Admin\Desktop\NaMe oF LiFe\gamemodes\Nol.pwn(16329) : error 035: argument type mismatch (argument 1)
    C:\Users\Admin\Desktop\NaMe oF LiFe\gamemodes\Nol.pwn(16334) : error 035: argument type mismatch (argument 1)
    C:\Users\Admin\Desktop\NaMe oF LiFe\gamemodes\Nol.pwn(16339) : error 035: argument type mismatch (argument 1)
    C:\Users\Admin\Desktop\NaMe oF LiFe\gamemodes\Nol.pwn(16343) : error 035: argument type mismatch (argument 1)
    C:\Users\Admin\Desktop\NaMe oF LiFe\gamemodes\Nol.pwn(50952) : error 035: argument type mismatch (argument 1)
    C:\Users\Admin\Desktop\NaMe oF LiFe\gamemodes\Nol.pwn(50966) : error 035: argument type mismatch (argument 1)
    C:\Users\Admin\Desktop\NaMe oF LiFe\gamemodes\Nol.pwn(50975) : error 035: argument type mismatch (argument 1)
    C:\Users\Admin\Desktop\NaMe oF LiFe\gamemodes\Nol.pwn(50989) : error 035: argument type mismatch (argument 1)
    C:\Users\Admin\Desktop\NaMe oF LiFe\gamemodes\Nol.pwn(51018) : error 035: argument type mismatch (argument 1)
    C:\Users\Admin\Desktop\NaMe oF LiFe\gamemodes\Nol.pwn(51032) : error 035: argument type mismatch (argument 1)
    C:\Users\Admin\Desktop\NaMe oF LiFe\gamemodes\Nol.pwn(51603) : error 035: argument type mismatch (argument 1)
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    21 Errors.

    2 Mal editiert, zuletzt von BigBozZxX ()

  • [16:04:28] >> mysql_real_escape_string( Connection handle: 1 )
    [16:04:28] CMySQLHandler::EscapeString() - You cannot call this function now. (Reason: Dead Connection)
    [16:04:28] >> mysql_query( Connection handle: 1 )
    [16:04:28] CMySQLHandler::Query() - You cannot call this function now. (Reason: Connection is dead)
    [16:04:28] >> mysql_store_result( Connection handle: 1 )
    [16:04:28] CMySQLHandler::StoreResult() - There is nothing to store (Reason: Connection is dead)
    [16:04:28] >> mysql_num_rows( Connection handle: 1 )
    [16:04:28] CMySQLHandler::NumRows() - You cannot call this function now. (Reason: Dead Connection)
    [16:04:28] >> mysql_retrieve_row( Connection handle: 1 )
    [16:04:28] CMySQLHandler::RetrieveRow() - You cannot call this function now. (Reason: Connection is dead)
    [16:04:28] >> mysql_fetch_field_row( Connection handle: 1 )
    [16:04:28] CMySQLHandler::FetchField(id) - You cannot call this function now. (Reason: Connection is dead)
    [16:04:28] >> mysql_free_result( Connection handle: 1 )
    [16:04:28] CMySQLHandler::FreeResult() - There is nothing to free (Reason: Connection is dead)


    jetzt kommt das von anfang an :(

  • Man müsste es für alle Funktionen des Plugins machen. Ob es den Aufwand wert ist bezweifle ich, ebenso ob es dann funktioniert, oder ob die zweite Verbindung auch irgendwann abbricht.


    Hast du schon ein anderes Plugin versucht? Es ist eigentlich nicht normal, dass die Verbindung abbricht bzw. tot ist. Das liegt nicht am Code, sondern eher am Plugin oder am MySQL Server selbst (in dem Fall solltest du bei deinem Host nachfragen).

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen