Valentin3526 Posted February 13, 2015 Share Posted February 13, 2015 (edited) Bonjour, me revoilà, en ce moment je créer un login panel, seul problème, je voudrais utiliser la base de donnée "registry.db" qui se trouve à la "racine" du serveur. Seul problème, j'ai vraimant du mal avec le Wiki MTA sur ce point, et c'est donc ici que je demande votre aide. Ce que je voudrais faire, c'est de faire un sorte que lorsque l'on s'enregistre sur le serveur, mon script enrigistre les identifients sur la base, et que lorsque l'on se connecte, mon script vérifie si le "mot de passe" correspond bien au "pseudo" enregistré dans la BDD. J'ai déjà fait toute l'interface graphique, et le système, il ne me manque plus qu'à faire un sorte d'enregistrer sur la BDD. PS: Si il est plus simple de recréer une BDD directement sur ma ressource, alors expliquez-moi comment faire, mais je préfère tout de même l'enregistrer aussi sur ce fameux "registry.db" au cas où ou je change de ressource, et que par erreur je supprime celle que j'ai créer. PS2: Je ne donne pas de code, car justement c'est cela que je veut apprendre. Sur ceux, merci d'avoir tout lu, et j'éspère que l'on me répondras, et que cela m'aideras. Edited February 14, 2015 by Guest Link to comment
Moderators Citizen Posted February 14, 2015 Moderators Share Posted February 14, 2015 Pour ton cas, il est peut être plus simple d'utiliser internal.db. Wiki: https://wiki.multitheftauto.com/wiki/Database There are two main database files for storing data:internal.db: il contient les les 'account datas' des joueurs (pseudos, mot de passes et les 'account data' sauvegardées en utilisant les fonctions setAccountData et getAccountData . registry.db: c'est la BDD principale, toutes les fonctions executeSQLXXX utilisent ce fichier. Voici un exemple pour le register et le login: Register: function registerThePlayer ( thePlayer, pseudo, password ) -- On essaye de créer un nouveau compte via local accountAdded = addAccount( pseudo, password ) if ( accountAdded ) then -- La création à fonctionné, il est enregistré outputChatBox ( "Thank you " .. getPlayerName(thePlayer) .. ", you're now registed, you can login.", thePlayer ) else -- Il y a eu une erreur lors de la création outputChatBox ( "Error creating account, contact the server admin", thePlayer ) end end Login: function loginThePlayer( thePlayer, pseudo, password ) local account = getAccount ( pseudo, password ) -- Retourne le compte qui correspond au pseudo et password if account ~= false then -- S'il y a bien un compte qui correspond au pseudo et password logIn ( thePlayer, account, password ) -- On le login. outputChatBox ( "You have been successfully logged in !", thePlayer, 0, 200, 0 ) else outputChatBox ( "Wrong username or password !", thePlayer, 200, 0, 0 ) end end Link to comment
Valentin3526 Posted February 14, 2015 Author Share Posted February 14, 2015 Merci, je vais voir pour changer le script et utiliser le "internal.db", je reviendrais avec quelques feedbacks. Link to comment
Valentin3526 Posted February 14, 2015 Author Share Posted February 14, 2015 le serveur ne reconnaît pas "getAccount" ERROR: Login\client.lua:66: attempt to call global 'getAccount' (a nil value) est-ce normal, je me suis relu des dizaines de fois, et ne voit pas d'erreur sur "getAccount", j'ai même copié/collé le "getAccount" du wiki pour être sûre de na pas avoir fait de fautes de frappes... EDIT: J'ai mal lu le wiki, c'est seulement une fonction "server", comment puis-je faire pour l'adapter à mon GUI ? Link to comment
Valentin3526 Posted February 14, 2015 Author Share Posted February 14, 2015 (edited) Bon je me suis décidé de m'aider sur un autre srcipt, et ce coup-ci j'obtient WARNING: Login\server.lua:16: Access denied @ 'addAccount' WARNING: Login\server.lua:17: Bad argument @ 'LogIn' [Expected account at argument 2, got nil] Une solution possible ? Ceci ce passe sur l'enregistrement. Voici le code: function registerHandler(player, username, password) local account = getAccount(username, password) if (account ~=false) then triggerClientEvent(player, "registerTaken", getRootElement()) else account = addAccount(username, password) if (logIn(player, account, password) == true then outputChatBox("Si vous voulez changer de mot de passe, utilisez ''/changerpass''.",) triggerClientEvent(player, "hideLoginWindow", getRootElement()) end end end Merci, pour l'aide, et j'éspère que cela peut être réparé facilement. Edited February 14, 2015 by Guest Link to comment
Moderators Citizen Posted February 14, 2015 Moderators Share Posted February 14, 2015 Ouaip c'est des fonctions serveurs car ça agit sur la bdd qui n'est accessible que via le serveur. Donc ouai il fallait faire un triggerServerEvent depuis le client pour ensuite exécuter une fonction côté serveur qui elle utilisera les fonctions d'enregistrements etc. Mais pour que ta ressource soit autorisée à utiliser ces fonctions, il te faut la mettre dans le groupe Admin de l'ACL. 1 - Coupe le serveur 2 - Ouvre acl.xml qui se trouve dans "...\MTA San Andreas 1.x\server\mods\deathmatch" avec notepad++/Sublime text (évite de l'ouvrir avec wordpad, notepad ou même word). 3 - Rajoute ta ressource dans le groupe "Admin": <acl> [...] <group name="Admin"> <acl name="Moderator"></acl> <acl name="SuperModerator"></acl> [...] <object name="resource.nomDeTaRessource"></object> </group> [...] </acl> 4 - Sauvegardes et relances ton serveur avec ta ressource. Cordialement, Citizen Link to comment
Valentin3526 Posted February 14, 2015 Author Share Posted February 14, 2015 Merci, jédit ce post pour te dire si tout vas bien ou pas. Eh bien merci, tu m'a encore une fois aidé, et mon Login Panel marche parfaitement, je n'ai plus qu'à lui faire un relooking et il seras parfait pour mon serveur PS: j'ai fait le magnifique fail d'utiliser une balise "code" à la place d'une balise "lua", ce qui m'a fait mettre toutes le couleurs manuellement (en m'aidant de Notepad++ pour les couleurs en plus ), je referais peut-être un nouveau topic à propos d'un autre script, si je trouve pas la solution sur le wiki. Link to comment
Moderators Citizen Posted February 14, 2015 Moderators Share Posted February 14, 2015 Pas de soucis et bien joué pour les trigger client -> server et server -> client . PS: j'ai fait le magnifique fail d'utiliser une balise "code" à la place d'une balise "lua", ce qui m'a fait mettre toutes le couleurs manuellement (en m'aidant de Notepad++ pour les couleurs en plus ) Pourquoi tu n'as pas édité ton message pour virer [/b] et remettre [b][lua ][ /lua][/b] proprement ? Aussi tu peux faire [b][code= ][ /code][/b] genre:[b][code=lua ][ /code][/b] qui est pareil à [b][lua ][ /lua][/b][b][code=xml ][ /code][/b](en virant les espaces que j'ai du rajouté pour éviter qu'ils fonctionnent dans ce post) Link to comment
Valentin3526 Posted February 14, 2015 Author Share Posted February 14, 2015 Bon aller, je vais le faire pour les suivants, qui viendront voir ce topic (ainsi que l'ancien), et sinon tu vient de m'apprende quelquechose à propos des Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now