Accountsystem (+inklusive Register/Login System)

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Hi,


    ich habe ein Accountsystem (Register/Login System mit dabei) gescriptet und möchte es veröffentlichen.
    Ich habe ca. 1 - 2 Stunden dran gesessen, kann sein dass das für manche zulange ist, aber ich ja noch ein Anfänger Scripter :)


    Was beinhaltet das?


    - Register / Login System
    - Accountsystem
    - Spieleraccount wird gespeichert (../scriptfiles/Accounts)
    - Spieleraccount wird gespeichert
    - Spieleraccount wird geladen
    - kleines Adminsystem (Adminabfrage)


    Ich hoffe das Accountsystem wird euch gefallen :) Bugs, Kritik oder Lobe einfach hier Antworten :)


    Link: http://pastebin.com/Q3RL0x47

  • Für einen Anfänger ist dieses Registrierungs-System gut, jedoch sehe ich keinen großen Unterschied zu den ganzen
    anderen, bereits erstellten und in der Scripting Base veröffentlichten Registrierungs-Systeme. Ich würde aber statt
    mit DINI als Anfänger, mich ein wenig informieren und direkt mit MySQL anfangen - was mein Fehler am Anfang war.


    5/10


    Mit freundlichen Grüßen.

  • Für einen Anfänger ist dieses Registrierungs-System gut, jedoch sehe ich keinen großen Unterschied zu den ganzen
    anderen, bereits erstellten und in der Scripting Base veröffentlichten Registrierungs-Systeme. Ich würde aber statt
    mit DINI als Anfänger, mich ein wenig informieren und direkt mit MySQL anfangen - was mein Fehler am Anfang war.


    5/10


    Mit freundlichen Grüßen.

    Danke für deine Antwort.


    Und ich habe mal versucht mit MySQL zu arbeiten, aber ich habe es nie geschafft, die Programme zum laufen zu bringen, damit ich auf den MySQL Server nachgucken kann ob alles funktioniert etc.
    Ich werde es aber bald versuchen :)

  • Hier mal meine Kritik dazu:


    Ich gehe hierbei das Script von oben nach unten durch und welche grauenhafte Include entdecke ich als erstes? Dini.
    Dafür erstmal direkt Punktabzug, sowas heute noch trotz allen Tutorials zu verwenden? Schwachsinn.
    Nutz MySQL, SQLite, die standard "file" Include zum speichern oder sonstige deutlich schnellere Includes (manchmal auch Plugins dabei) als "Dini".


    Als nächstes fällt mir direkt das auf.


    "

    • stock IstSpielerAdmin(playerid, level) //Adminabfrage
    • {
    • if(Spieler[playerid][Admin] >= level) return 1;
    • return 0;
    • }"


    Ich verstehe dies ebenfalls nicht. Man spart doch GARNICHTS die Abfrage ist letztendlich genauso lang nur anders aufgebaut. Jetzt hat jede Admin Abfrage einen Umweg bzw. wird über Umweg abgefragt und es ist NICHTS gewonnen, nein nur an Zeit verloren.


    Beim "Register" stock ist der Array beim string für den Dateipfad viel zu groß. Die 30 Buchstaben plus 33 wegen dem Namen (man kann ja ruhig großzügiger sein) sind für mich 65 (wie gesagt großzügiger) aber nicht nahezu das doppelte.



    Als nächstes fand ich das hier.



    • stock SName(playerid)
    • {
    • new GetName[MAX_PLAYER_NAME];
    • GetPlayerName(playerid,GetName,sizeof(GetName));
    • return GetName;
    • }



    Hier ein Appell an alle es bitte nicht so zu machen und hier direkt ein "Lösungsansatz".


    Globale Variable für Spielernamen PlayerName[MAX_PLAYERS][MAX_PLAYER_NAME];


    Beim connecten nutzt ihr GetPlayerName(playerid,PlayerName[playerid],MAX_PLAYER_NAME);


    Jetzt ist der Name in der Variable gespeichert und ihr könnt auf diese ganz einfach in Form von PlayerName[playerid] zugreifen um den Namen herauszufinden.


    Dann bei den Dialogen.


    Dort musst du nicht bei jeder blöden Abfrage "return 1;" eingeben. Das return 1; hast du bereits ganz am Ende des publics.


    Dann solltest du bei den dialogen mit else if arbeiten denn ich wüsste nicht dass man 2 Dialoge gleichzeitig öffnen kann.


    Dann fand ich deinen Beispielbefehl komisch. Mein spontaner Gedanke ist einfach mal du weißt nicht wie du die Parameter splitten sollst.


    Ansonsten war es erstmal soweit.


    Fazit:


    Für mich sehr überflüssig, hat viele "Fehler" bzw. Dinge die man so nicht umsetzen sollte, basiert auf Dini gab es 1000x, Anfänger hat nichts davon da nichts erklärt wird und wenn ich es mir anschaue erinnert es mich an das typische Video anschauen, pausieren, abschreiben, wieder anschauen etc.


    Punkte: 3/10