Accounts erstellen - Accounts.xml

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Accounts erstellen - Accounts.xml

      Serverseitiges Tutorial

      Moinsen zusammen,

      in diesem Tutorial erkläre ich euch wie man in Multi Theft Auto mit der Accounts.xml zusammenarbeitet und wie eure
      Daten abgerufen werden können.

      Als allererstes möcht ich erwähnen das die Stylesheet Account Verwaltung derzeit keine besonders gute Weise ist, Accounts abzuspeichern
      da sich die Accounts beim Einfügen vom Strings auflösen kann aber nicht muss.

      Ein Stylesheet im Wurzelbaumformat sieht wie folgt aus...

      Quellcode

      1. <accounts>
      2. <autologin>0</autologin>
      3. @@dc835cbb867984426a561d65ebd49a4e0e2bdeeb@@
      4. @@aa7a00382dd264b60a80c1f93d41c020a2039b9d@@
      5. </accounts>


      Als allererstes folgt die Mta-Console und nun der erste angelegte Account der durch eine
      sha1 Verschlüsselung sicher vor Eingriffen dritter ist.

      Wie leg ich mir neue Accounts an ?

      Dafür gibt es gute Beispiele auf der Mta Wikipedia Seite hier ein passendes...

      Quellcode

      1. function Registrierung( spieler, commandName, Spielerpass)
      2. if ( Spielerpass~= "" and Spielerpass~= nil ) then
      3. local stylesheetcheck = addAccount( getPlayerName(spieler), Spielerpass) -- Erstellt den Account
      4. if ( stylesheetcheck) then
      5. outputChatBox ( "Vielen Dank" .. getPlayerName(spieler) .. ", du bist nun registriert und kannst dich mit /login einlogen", spieler)
      6. else
      7. outputChatBox ( "Fehler während der Accounterstellung bitte an den Systemadministrator werden", spieler)
      8. end
      9. else
      10. outputChatBox ( "Fehlerhafte Syntax verwendet /register <password>", spieler)
      11. end
      12. end
      13. addCommandHandler ( "register", Registrierung)
      Alles anzeigen


      Wer bisher keine Erfahrung mit Lua hat, kann sich auf der Deutschen Wikipedia Seite Informationen dazu holen.



      Wie frage ich die Daten ab ?

      Quellcode

      1. local spielerdaten = {} -- Eine Tabelle anlegen
      2. spieleraccount = getPlayerAccount("Bob der Baumeister")
      3. spielerdaten [1] = getAccountData ( spieleraccount, "Geld")
      4. spielerdaten [2] = getAccountData ( spieleraccount, "Level")


      Am besten verwendet ihr einen Timer oder eines der zahlreichen Events (zb. OnClientRender) um die
      Daten regelmässig abzufragen ohne jedesmal die Funktion von neuen ausführen zu müssen.
      Ich würde euch dabei empfehlen eine Serverseitige Function zu bauen.
      Clientseitige Funktionen können von Spielern die sich auf dem Server befinden/befunden haben eingesehen werden,
      deshalb Achtung! Deshalb ist es ratsam diese Funktionen zu triggern und so wenig wie möglich Informationen zu hinterlassen

      Wie benutze ich diese Funktionen ?

      Eine Abfrage in einem Event sieht wie folgt aus...

      Quellcode

      1. function ServerVerlassen( )
      2. local spieleraccount= getPlayerAccount ( source )
      3. if ( spieleraccount) then
      4. local spielergeld = getPlayerMoney ( source )
      5. setAccountData ( spieleraccount, "Geld", spielergeld )
      6. end
      7. end
      8. function ServerBetretten( )
      9. local spieleraccount= getPlayerAccount ( source )
      10. if ( spieleraccount) then
      11. local spielergeld = getAccountData ( spieleraccount, "Geld" )
      12. if ( spielergeld ) then
      13. setPlayerMoney ( source, spielergeld )
      14. end
      15. end
      16. end
      17. addEventHandler ( "onPlayerQuit", getRootElement ( ), ServerVerlassen)
      18. addEventHandler ( "onPlayerJoin", getRootElement ( ), ServerBetretten)
      Alles anzeigen


      Hier wird beim Betretten und Verlassen des Servers jeweils einmal die Account Datei abgefragt nach dem derzeitigen Stand des Spielergeldes, während beim Verlassen
      das gesamte Geld erfasst wird und ich die Datei/Stylesheet eintragen wird.

      Weitere hilfreiche Account Funktionen...

      * addAccount
      * copyAccountData
      * getAccount
      * getAccountData
      * getAccountName
      * getAccounts
      * isGuestAccount
      * logIn
      * logOut
      * removeAccount
      * setAccountData
      * setAccountPassword
      * getAccountPlayer

      Link zum Mta-Wiki


      Die beste Art Accounts abzuspeichern ist es nicht, aber die konfortabelste, da Multi Theft Auto bereits viele vorgefertigte Funktionen mitliefert
      wie BanAccount usw. Wer einen großen Server aufbauen möchte der sollte auf MySQL umsteigen.
      Zusätzlich gibt es noch die Möglichkeit die Accounts in SQLLite Datenbanken zu sichern, die Datenbank liegt dann direkt im Resourcen Ordner, kann aber auf dem Root
      nicht geöffnet werden, da bedarf es einen Datenbank Explorer. Leider sind auch die Funktionen noch nicht ganz ausgereift, die Mta im übernächsten Update aber beheben sollte.
      Mta 1.0.5

      Acl.xml

      In diesem Stylesheet, der Access Control List, müsst ihr anschließend eure Account Funktionen bestätigen.
      Die Acl.xml dient zur sicheren Überwachung jedes Mta-Servers und limitiert den Zugriff auf den Server.
      Das ist natürlich nicht alles, weitaus beteunder sind die Funktionen des HTTP Panel/Interfaces, aber das ist ein anderes Thema.

      Quellcode

      1. <right name="command.addaccount" access="false"/>

      Die access, zu deutsch Berechtigung auf den Command müsst ihr euch erteilen indem ihr sie auf true setzt.

      Wer statt einem /Register Befehl ein GUI Interface möchte, findet alles benötigte hierzu hier

      Mta Script Editor - Work in Progress

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Jason_Gregory ()

    • kurz und simpel finde ich gut du solltest jedoch vllt als ergänzung sdazu schreiben wenn jemand einen eigenen GM machen will d.h. eine komplett neue resource erstellt muss er der resource erst mal die zugehörigen rechte in der ACL.xml geben ;)
      da er sonst funktionen wie getAccount, etc. NICHT ausführen darf/kann.
      mfg SenZe


    • Zusätzlich zum SHA256-Hash sollte man das Passwort noch mit einem generierten Salt-Hash versehen.

      Quellcode

      1. function generateSalt(length)
      2. local text = ""
      3. for i = 1, length do
      4. text = text..""..string.char(math.random(48,57), math.random(65,90), math.random(97,122))
      5. end
      6. return text
      7. end
      8. function registerNewPlayer(pass)
      9. pass = sha256(pass)
      10. local salt = generateSalt(6)
      11. pass = salt..pass
      12. end
      Alles anzeigen