[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
  • Guten tag,ich habe folgenes problem mit mein script.

    Ich habe auch vorhier gegooglet aber nix gefunden was geht. ist version R5 und

    SA-MP MySQL plugin R5

    Copyright (c) 2008-2010, G-sTyLeZzZ das ist in der inc drinne.




    inc:

    Server:log


  • [07:43:34] Loading plugin: mysql

    1. [07:43:34] Failed.


    lädt nicht mein Lieber.

  • Guten Abend,


    ich möchte in mein Script das Registrierungsdatum einbauen und in MySQL speichern, jedoch immer wenn ich mich einlogge aktualisiert es sich. Ich hab nirgends ein MySQL Update für das Registerdatum


    Das hier wird im Register Dialog aufgerufen.

    Was mache ich hier falsch?


    Danke im Voraus


    MfG


    Allrounder18

  • du setzt es doch immer wieder bei OnPasswordHashed auf die aktuelle Zeit, wenn ich esgrade richtig sehe

    Oh ja, das stimmt.

    Ich habs jetzt mal bei Accountlogin probiert aber da stimmt was net.


    Was genau müsst ich hier einfügen bzw anders machen damit es funktioniert?


    Edit: wenn ich es richtig sehe würde es doch bei OnPaasswordHashed reingehören, diese Funktion wird kein zweites mal aufgerufen. Aber wieso updatet sich der Wert immer?


    Edit2: wenn ich mysql_format(handle, query, sizeof(query), "UPDATE `accounts` SET `LastLogin` = '%e' WHERE `ID` = '%d'",AccountInfo[playerid][account_LastLogin],AccountInfo[playerid][account_ID]); in OnPasswordHashed Lasse kann ich mich nicht registrieren, wenn ich es aber ausklammere wird der Register Wert nicht angezeigt.

  • in Zeile 10 hast du 2 Parameter, gibt aber nur einen an

    Danke, wenn ich zwei Parameter angeben sagt er mir [21:14:18 - 14.03.2020] [ERROR] error #1364 while executing query "INSERT INTO `accounts` (`Register`,`LastLogin`) VALUES ('14.03.2020 | 21:14:18 ','')": Field 'Name' doesn't have a default value.

    Sieht dann so aus:

    mysql_format(handle, string, sizeof(string), "INSERT INTO `accounts` (`Register`,`LastLogin`) VALUES ('%e','%e')",AccountInfo[playerid][account_Register],AccountInfo[playerid][account_LastLogin]);    mysql_tquery(handle, string);

    .

    Nun wird zwar beim Registrieren der Register Wert angezeigt aber beim nächsten Login nicht mehr.


    Edit: Beim Registrieren wird der Registerwert angezeigt aber der Loginwert nicht, beim Login is es genau andersrum.


    Edit2: In die Datenbank wird alles richtig eingetragen, nur in den Stats wirds falsch angezeigt.

    Der Registerprint spuckt nichts aus und der Loginprint das Richtige.

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

    [21:14:18 - 14.03.2020] [ERROR] error #1364 while executing query "INSERT INTO `accounts` (`Register`,`LastLogin`) VALUES ('14.03.2020 | 21:14:18 ','')": Field 'Name' doesn't have a default value

    Das scheint mir eine andere Query zu sein, irgendwo hast du ein MYSQL Befehl, in dem du den "Name" setzten willst, er jedoch nichts einträgt (Vielleicht eine leere Variable) und kein Standartwert in der DB festgelegt ist.

    Der Registerprint spuckt nichts aus und der Loginprint das Richtige.

    Das ist ja ein Wert, der beim ersten Mal registieren festgelegt wird und nie wieder verändert wird. Ließt du den Wert dann auch aus? Also wird die Variable beim Login per SQL Befehl Abgefragt und in die Variable gespeichert?

  • Wie sieht der Wert in der Datenbank aus, nach dem Registrieren?

    Wie sieht dein enum zu AccountInfo aus?

    Wie sieht deine Login Funktion aus?


    Werte in der DB (links die Registrierung, rechts der Login)

    regwert.PNG


    AccountInfoEnum

    Login Funktion


    Das scheint mir eine andere Query zu sein, irgendwo hast du ein MYSQL Befehl, in dem du den "Name" setzten willst, er jedoch nichts einträgt (Vielleicht eine leere Variable) und kein Standartwert in der DB festgelegt ist.

    Der Fehler is bereits wieder weg.


    Das ist ja ein Wert, der beim ersten Mal registieren festgelegt wird und nie wieder verändert wird. Ließt du den Wert dann auch aus? Also wird die Variable beim Login per SQL Befehl Abgefragt und in die Variable gespeichert?

    Siehe Login Funktion

  • Nochmal die Frage:

    "Das ist ja ein Wert, der beim ersten Mal registrieren festgelegt wird und nie wieder verändert wird. Ließt du den Wert dann auch aus? Also wird die Variable beim Login per SQL Befehl Abgefragt und in die Variable gespeichert?"

    Heiß speicherst du das in deinem ShowCharacter in die Variable?

    mysql_format(handle, string, sizeof(string), "SELECT Register FROM `accounts` WHERE `ID` = '%d'", AccountInfo[playerid][account_ID]);

    so hätte ich versucht es auszulesen beim Login.

    Ich speicher es nicht in Showcharacter.


    Bei OnPasswordHashed lese ich den Wert in die DB ein.

    Code
     format(AccountInfo[playerid][account_Register], 50, "%02d.%02d.%d | %02d:%02d:%02d ",day,month,year,hour,minute,second);
        mysql_format(handle, query, sizeof(query), "INSERT INTO `accounts` (`Name`, `Passwort`,`Register`,`LastLogin`) VALUES ('%e', '%e','%e','%e')", AccountInfo[playerid][account_Name], hash,AccountInfo[playerid][account_Register],AccountInfo[playerid][account_LastLogin]);


    Edit:

            format(AccountInfo[playerid][account_Register], 50, "%02d.%02d.%d | %02d:%02d:%02d ",tag,monat,jahr,stunde,minuten,sekunde); das hab ich bei AccountLogin und bei OnPasswordHashed stehen. Nur bei OnPasswordHashed mache ich gettime und getdate für diese Werte. jetzt spuckt mir der Print die Standardwerte 00.00.0 | 00:00:00 aus die ich eingestellt habe beim Login , beim Registrieren kommt die normale Uhrzeit wann ich mich registriert habe.


    Edit2: Interessanterweise sind das nichtmal die Standardwerte vom Account sondern vom Character.

  • Du liest den Wert von Register (und LastLogin) nicht bei AccountLogin aus dem Cache, daher bleibt die Variable auch leer, was Register angeht (LastLogin setzt du ja im Code wieder).

    Du meinst

    Code
    cache_get_value_name(0, "Register", AccountInfo[playerid][account_Register],50);
            cache_get_value_name(0, "LastLogin", AccountInfo[playerid][account_LastLogin],50);

    bei AccountLogin? Das bringt mir irgendwie nix.

  • Mit welchem Query rufst du AccountLogin auf?

    Nur hier wird AccountLogin aufgerufen. Oder wie meinst du das?