[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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

  • public OnPlayerCheck(playerid)
    {
    if(cache_get_row_count() == 0)
    {
    ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, #SERVERNAME "- Registration", "Bitte registriere Dich:", "Ok", "Abbrechen");
    }
    else
    {
    cache_get_field_content(0, "password", pData[playerid][pPassword], handle, 65);
    cache_get_field_content(0, "salt", pData[playerid][pSalt], handle, 11);
    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, #SERVERNAME "- Anmeldung", "Bitte logge Dich ein:", "Ok", "Abbrechen");
    }
    return 1;
    }


    [13:38:14] [WARNING] CMySQLResult::GetRowDataByName - field not found ("password")
    [13:38:14] [WARNING] CMySQLResult::GetRowDataByName - field not found ("salt")
    [13:38:39] [WARNING] CMySQLConnection::Disconnect - no connection available


    In der MySQL Tabelle sind password und salt vorhanden.


    Grüße

  • ;)
    Das Query, welches OnPlayerCheck aufruft.

    Sorry :P mein Fehler....



    public OnPlayerRequestClass(playerid, classid)
    {
    if(!pData[playerid][isLoggedIn])
    {
    new query[128];
    mysql_format(handle, query, sizeof(query), "SELECT `id` FROM `accounts` WHERE `username` = '%e'", pData[playerid][pName]);
    mysql_pquery(handle, query, "OnPlayerCheck", "d", playerid);
    }
    return 1;
    }


    Muss ich im query auch salt und pw übergeben? Ich war der Meinung, dass das erst beim OnCheck kommt.

  • Muss ich im query auch salt und pw übergeben? Ich war der Meinung, dass das erst beim OnCheck kommt.

    Nur den Salt.
    Das Passwort kannst du aus OnPlayerCheck entfernen, das gibt der User ja ein (inputtext).


    Da du bei OnPlayerCheck den Salt aus dem Cache liest, muss er auch selektiert werden.
    Das kannst du anstatt der ID machen:
    mysql_format(handle, query, sizeof(query), "SELECT `salt` FROM `accounts` WHERE `username` = '%e'", pData[playerid][pName]);

  • Nur den Salt.Das Passwort kannst du aus OnPlayerCheck entfernen, das gibt der User ja ein (inputtext).


    Da du bei OnPlayerCheck den Salt aus dem Cache liest, muss er auch selektiert werden.
    Das kannst du anstatt der ID machen:
    mysql_format(handle, query, sizeof(query), "SELECT `salt` FROM `accounts` WHERE `username` = '%e'", pData[playerid][pName]);

    Jetzt kommt dafür das Problem mit OnPlayerRegister....

    public OnPlayerRegister(playerid)
    {
    pData[playerid][p_ID] = cache_insert_id();
    SendClientMessage(playerid, 0x00FF00FF, "[Konto] Registration erfolgreich.");
    return 1;
    }

    [14:00:51] [ERROR] CMySQLQuery::Execute[OnPlayerRegister] - (error #1467) Failed to read auto-increment value from storage engine


    Soll ich auch hier den Salt mit ID ersetzen oder kann ich bei m OnPlayerCheck Query id & salt einbauen ??

  • Nein, Auto Increment ist drinne, ich schicke dir mal alle meine public/stocks die mit dem Register/Login zu tun haben.


    http://pastebin.com/jc71YLi2


    Das mein Login/Register Script und da ist auch nur das genannte drinne, 300 Zeilen also keine Angst ^^ .
    Ich würde dich gerne bitten dir das einmal anzuschauen, ich bitte dich tiefgründig.

  • Das passt soweit eigentlich.


    Führe im SQL Eingabebereich deiner Datenbank mal dieses Query aus:

    SQL
    ALTER TABLE `accounts` AUTO_INCREMENT = 1;

    Oder setze es in den Einstellungen der Tabelle zu 1.

    [14:38:27] [ERROR] CMySQLQuery::Execute[OnPlayerRegister] - (error #1467) Failed to read auto-increment value from storage engine
    Ich denke das liegt daran das id nicht mehr bei OnPlayerCheck selected wird. Wenn ich `id` AND `salt` mache würde dies gehen?

  • Ich denke das liegt daran das id nicht mehr bei OnPlayerCheck selected wird. Wenn ich `id` AND `salt` mache würde dies gehen?

    Nein, das hat damit nichts zu tun, das sind zwei unabhängige Queries.


    Lösche bitte mal die accounts Tabelle und erstelle sie neu. Irgendwas ist an der Tabelle falsch, vielleicht repariert es sich so.
    Benenne sie eventuell testweise als "accounts2".



    EDIT:
    Rückmeldung kam per PN.
    Das Problem wurde durch das Neu-Erstellen der Tabelle gelöst.

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Ich habe ein kleines Problem.
    Leider schaffe ich es nicht den Fehler zu beheben :/


    Fehlercode:

    C
    error 001: expected token: "-string end-", but found "-identifier-"
    error 017: undefined symbol "FFFFFF"
    warning 217: loose indentation
    warning 215: expression has no effect
    warning 215: expression has no effect
    error 001: expected token: ";", but found ")"
    fatal error 107: too many error messages on one line

    Farben define:

    C
    #define SERVER_HTML_COLOR       {FFFFFF}


    Fehlerzeile:

    C
    format(str[1],sizeof(str[]),""SERVER_HTML_COLOR"%s",inputtext);


    Mit freundlichen Grüßen
    German_ScripterHD

  • Hi, kann mir jemand zeigen wie ich per Befehl jedem Spieler (offline) eine Variable setzen kann?


    Es handelt sich hierbei um die MySQL R37 Version.


    Die Variable schaut so aus:


      pData[playerid][P_RandomServerMSG] = true;


    So wird sie allgemein gespeichert:



    (RVMSG)


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Hmm was versteht man daran nicht :D ?
    Die Sache ist, die Variable wird wenn man sich registriert auf 1 gesetzt (gewollt) und bei bereits registrierten Usern ist die Variable auf 0. Dafür möchte ich jetzt nicht jedes mal die Variable auf 1 setzen, sondern einfach nur ein Befehl den ich einmal benutze, damit bei jedem die Variable auf 1 ist :D


    Mit freundlichen Grüßen
    JustMe.77 8)

  • Würde diese Funktion gehen?


    • Offizieller Beitrag

    sollte so gehen