[Frage]: MySQL speichert bei der Registrierung Adminlevel = 1

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 zusammen,


    Habe da mal eine kleine Frage ...
    Ich bin dabei auf MySQL umzusteigen. Vorher nutzte ich DINI.
    Ich benutze dazu das Tutorial von: Maddin


    Mein Problem:´
    Wenn man sich neu registriert, dann ist das Adminlevel = 1
    Ich habe vom Tutorial das "Level" in "Adminlevel" geändert.



    Laden:
    SpielerInfo[playerid][pAdminlevel] = mysql_GetInt("accounts", "Adminlevel", "Name", SpielerInfo[playerid][sName]);
    Speichern:
    mysql_SetInt("accounts", "Adminlevel", SpielerInfo[playerid][pAdminlevel], "Name", SpielerInfo[playerid][sName]);


    Ich hatte unter "stock CreateAccount(playerid, pass[])" mal folgendes versucht gehabt: SetPlayerScore(playerid,SpielerInfo[playerid][pAdminlevel] = 0);. Doch dies brachte leider auch nix ...
    Aber alles andere wird mit einer 0 gespeichert! Wie z.B Tode = 0.
    Ich hoffe einer von euch hat ein kleinen tipp für mich ;).
    Ich wäre sehr dankbar 8)

  • Dann setz es doch bei der Registration ganz einfach auf 0?
    SpielerInfo[playerid][pAdminlevel] = 0;


    Danke für deine schnelle Hilfe Douq.
    Doch dies bringt leider auch nix. In der Datenbank wird dennoch eine 1 eingetragen ...
    Datenbank:
    Adminlevel Type:int Length:11 Decimals:0 Allow Null: deaktiviert

  • Denk daran das du bei OnPlayerConnect alles auf 0 setzt
    wenn du es nicht macht kommrt es immer wieder vor das andere spieler die daten von anderen haben!

  • Ist es denn nur in der Datenbank auf 1 oder direkt schon bei der Registration? Sollte es nicht direkt bei der Registration sein, so würde ich mal nach dem Standertwert in der MySQL Datenbank nachschauen ..

  • @ Douq
    Nach der Registration werden die Daten in die Datenbank geschrieben.
    Ich habe es so gemacht:

    CreateAccount(playerid, inputtext);
    SetPVarInt(playerid,"Eingeloggt",1);
    SpielerInfo[playerid][pAdminlevel] = 0;
    SavePlayer(playerid);
    LoadPlayer(playerid);


    Der Grund für das Speichern und wieder Laden ist der, dass wenn man sich Registriert. Und sich z.B 2x killt, dann Disconnected. So werden die Tode nicht abgespeichert. Es würde nur dann gehen, wenn man sich registriert -> dann disconnected -> und wieder einloggt. Erst dann werden die Tode in der Datenbank geschrieben. Und daher nutze ich das Speichern und das Laden wieder, da so die Tode ab dem ersten Connecten in die Datenbank geschrieben werden.


    @RedJoker
    Also unter "OnPlayerConnect" habe ich nix stehen was die Werte auf 0 setzen tut :huh:
    Aber ich werde gleich mal gucken wie ich dass am besten umsetzen könnte :D

  • Schreib das mal bei OnPlayerConnect rein



    for(new i;i!=_:SpielerDaten;i++) SpielerInfo[playerid][SpielerDaten:i] = 0;

  • das hatte ich letztens bei jemand anderen auch, da liegt daran, das bei der Regestrierung der Name des Spielers nicht in SpielerInfo[playerid][sName] gespeichert wird.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • So ... Der Fehler lag in der Datenbank!
    In der Reihe Adminlevel hatte ich als Default eine 1 stehen -.-. Ich weiß nicht wie die 1 dort hin kam 8|


    IntelligenT
    Ich habe in jeder Zeile denn Hacken deaktivert ... Da er alles andere auch mit einer 0 besetzt.
    Hierwurde auch kein Hacken gesetzt :D


    Ich bedanke mich an alle die mir geholfen haben 8)
    Und danke für denn Tipp RedJoker :thumbup: