Voserv Posté(e) le 23 août 2015 Posté(e) le 23 août 2015 Bonjour Après de TRÈS NOMBREUSES demandes, je fais enfin un petit tutoriel très complet pour vous apprendre à mettre en place une base de donnée et comment ça marche. I/C'est quoi une Base de Donnée ? (BDD): Une BDD c'est là où vous pouvez commniquer des variables d'un serveur à un autre. Par exemple, vous pouvez transférer des variables d'un serveur à un autre, ce qui fera que vos serveurs seront reliés. En quoi c'est utile ?, imaginons vous faites un Minigames eh bien vous pouvez faire qu'on achète des kits au hub et qu'ils se débloquent sur les autres serveurs. Après les possibilités sont infinies c'est juste un exemple ! II/Requis pour une BDD: Pour avoir une BDD, il vous faudra déja: Une machine dédiée BungeeCord Skript (évidemment) Une base de donnée (MySQL par exemple) SQLibrary (Un plugin nécéssaire) Les deux premiers points sont évident mais je les précise quand même. Si vous avez déja vos serveurs prêt avec BungeeCord tant mieux, sinon je vous invite à mettre en place votre BungeeCord avant de continuer ce tutoriel. Si vous avez tout ce qu'il faut, nous pouvons passer à l'étape 3. III/Mettre en place une BDD: D'abord il vous faudra installer le plugin SQLibrary disponible ici: dev.bukkit.org/bukkit-plugins/sqlibrary/ Il faut que ce plugin soit installé sur tous les serveurs que vous voulez relier à votre base de donnée. Après avoir installé ce plugin, rendez vous dans le dossier de votre plugin Skript (dans plugins). Vous verrez un fichier nommé config.sk, nous allons le regarder de plus près. Vous devrez vous rendre plus bas, vous verrez une section nommée "database": databases: # Databases to store variables in. These can either be used as a simple one-server-storage # where variables are written constantly but only read at server start, # or as a connection between multiple servers by monitoring the database(s) for changes. # # You can define as many databases as you want, just make sure to choose a distinct name for each one, and don't forget to set all options correctly. # # To be able to use a database you'll need to download the plugin 'SQLibrary' from http://dev.bukkit.org/server-mods/sqlibrary/files/ # and install it in your server's plugin directory like other plugins. # # Please note that '/skript reload' will not reload this section, i.e. you'll have to restart Skript for changes to take effect. # Each database definition must be in a separate section. You can choose any name for the sections, as long as it's not already used. database 1: # an example database to describe all possible options. type: MySQL # The type of this database. Allowed values are 'CSV', 'SQLite', 'MySQL' and 'disabled'. # CSV uses a text file to store the variables, while SQLite and MySQL use databases, and 'disabled' makes Skript ignore the database as if it wasn't defined at all. pattern: db.* # Defines which variables to save in this database. # This pattern uses Regex syntax, e.g. use 'db_.*' (without the quotes) to store all variables prefixed with 'db_' in this database, # or use '.*' (the default value) to store all variables here (recommended for the last database in this list, as otherwise some variables might not be saved). # Please note that variables are only stored in one database, and databases are checked from top to bottom, # e.g. if a variable matches the topmost database's pattern it will be saved there and nowhere else. # BTW: Patterns are checked in a separate thread, i.e. your server likely won't run slower when using complicated patterns. monitor changes: true monitor interval: 20 seconds # If 'monitor changes' is set to true, variables will repeatedly be checked for updates in the database (in intervals set in 'monitor interval'). # ! Please note that you should set 'pattern', 'monitor changes' and 'monitor interval' to the same values on all servers that access the same database! # == MySQL configuration == host: localhost # Where the database server is located at, e.g. 'example.com', 'localhost', or '192.168.1.100' port: 3306 # 3306 is MySQL's default port, i.e. you likely won't need to change this value user: 10 password: test123 database: 10 # The database to use. Skript will automatically create a table 'variables21' in this database if it doesn't exist # (If the table exists but is defined differently that how Skript expects it to be you'll get errors and no variables will be saved and/or loaded) Et là vous voyez en dessous de database la section database 1. C'est là que nous allons configurer. Je vais déja vous expliquer chaque configuration: Type: C'est la première ligne. Là vous devrez mettre le type de votre base de donnée, par exemple type: MySQL Pattern: Là vous devrez mettre un préfix. Dans notre exemple c'est db.*. En gros, toutes les variables commençant par db. seront sauvgardées, par exemple: {db.%player%.money} sera sauvgardé car la variable commence par db. Par contre si ma variable est écrite comme cela: {money.%player%} elle ne sera pas sauvgardée. Vous pouvez dans "pattern" changer en ce que vous voulez, par exemple pattern: test.*. TRES IMPORTANT: Il est très important que "*" soit indiqué comme dans db.* sinon cela ne marchera pas. Montiro Changes: Mettez de préférence en "true". Cela va servir à activer que les serveurs s'actualisent. Monitor Interval: Là, vous devez mettre un délai (pas trop court pour ne pas faire laguer). Par exemple 20 seconds. Là si je met 20 secondes, la base de donnée va actualiser les serveurs toutes les 20 secondes. Ensuite vous devrez configurer votre MySQL juste en dessous: # == MySQL configuration == host: localhost # Where the database server is located at, e.g. 'example.com', 'localhost', or '192.168.1.100' port: 3306 # 3306 is MySQL's default port, i.e. you likely won't need to change this value user: 7 password: test123 database: 7 # The database to use. Skript will automatically create a table 'variables21' in this database if it doesn't exist # (If the table exists but is defined differently that how Skript expects it to be you'll get errors and no variables will be saved and/or loaded) Je vais alors vous présenter chaque point: host: Vous devrez mettre l'ip de votre serveur par exemple 5.120.230.11. Notez que si vous êtes sur Multicraft, vous devez laisser localhost. port: Vous devrez indiquer le port. Mais si vous êtes sur MySQL, inutile de changer le port. user: Vous devez rentrer l'identifiant de votre base de donnée. password: Là aussi, vous rentrez le mot de passe de votre base de donnée MySQL database: Connectez-vous sur votre base de donnée (sous PhpMyAdmin), et normalement à votre gauche vous verrez des "tables", et bien rentrez le nom (le chiffre). La plupart du temps (je ne suis pas sûr si c'est pour tout le monde), le nom de la table est le même que l'utilisateur. Par exemple, dans mon exemple, user et database sont "7". Après avoir tout configuré, faites un reload. Je vous invite aussi à regarder votre console en même temps qui vous indiquera si il y a des problèmes de connection. Si vous n'avez aucun message d'erreure dans la console, cela veut dire que tout fonctionne. Pour vérifier, rendez vous dans votre BDD, et normalement si tout fonctionne comme prévu, vous verrez à votre gauche une table nommée "variable21". Ensuite vous copiez/collez votre config.sk sur tous les serveurs pour que cela fonctionne, reloadez et ce sera fini ! Pour que vos variables soient sauvgardées dans votre base de donnée il vous suffira juste de les nommer comme votre pattern:. Par exemple si dans pattern, vous avez laissé db.*, alors toutes les variables commençant par db., comme {db.test} seront sauvgardées ! Cordialement, MCVoserv 1
Whaxion Posté(e) le 23 août 2015 Posté(e) le 23 août 2015 Merci pour ce tuto très bien expliqué ! Mais j'aimerais savoir si il y a moyen que quand on se connecte il vérifie automatiquement (ex: sur un serveur tu as gagné 100 coins (mini-jeux) puis ca te TP au lobby mais la base de donnée n'es pas refresh... Il y a moyen qu'on refresh juste une variable {db.money.%player%} ?)
Voserv Posté(e) le 23 août 2015 Auteur Posté(e) le 23 août 2015 Non ce n'est pas possible à ma connaissance de refresh une variable spécifique. Après tu peux toujours mettre un temps plus petit, par exemple 5 secondes.
Voserv Posté(e) le 23 août 2015 Auteur Posté(e) le 23 août 2015 Derien NelGossem_. Sinon 5 secondes, non cela ne fera pas laguer si tu a une machine assez bonne. 5 secondes c'est pas quelque chose qui peux faire laguer à mort.
Whaxion Posté(e) le 23 août 2015 Posté(e) le 23 août 2015 Ok pour la money c'est pas grave un petit delay mais par exemple pou un mini-jeux c'est quand même plus pratique de savoir combien il y a de joueurs dedans instantanément...
Izychiel Posté(e) le 24 août 2015 Posté(e) le 24 août 2015 Je propose a ceux que cela interesse d'associer une base de donnee (pour des grosses variables lentes) avec un envoie de commande (petite variables rapides) que j'ai fait en tuto. Cela permettre d'actualiser selon les desirs :D Je te reprends direct, j'ai meme pas encore lu xD, Bungeecord n'est pas du tout obligatoire :D
Izychiel Posté(e) le 24 août 2015 Posté(e) le 24 août 2015 La vie lavie lavie lavi ! Bref. Je viens de decouvrir un truc :o Je ne savais pas que c'etait possible aussi simplement en fait, je suis debile... Moi je pensais surtout au tuto SkQuery, http://www.skunity.com/search?search=sql Bon deux manieres distinctes qui auront leurs avantages je suppose :p Merci d'avoir pris le temps d'ecrire cela :D <3
Voserv Posté(e) le 24 août 2015 Auteur Posté(e) le 24 août 2015 Bonjour, J'ai peut-être fait une erreur par rapport à BungeeCord, car à mon avis il est nécéssaire (logiquement...). Et derien cela me fait plaisir de faire des tutoriels complets.
Izychiel Posté(e) le 25 août 2015 Posté(e) le 25 août 2015 J'ai peut-être fait une erreur par rapport à BungeeCord, car à mon avis il est nécéssaire (logiquement...). Et derien cela me fait plaisir de faire des tutoriels complets. BAh nan :o Apres si tu creer une BDD pour partager entre serveurs avec Bungee Bah oui ile te faut Bungee mais c'est pas obligatoire, la BDD peut te servir de stockage.
ShaDoWZ_ Posté(e) le 25 août 2015 Posté(e) le 25 août 2015 Très bon tutoriel, merci Je connaissais un peu cette possibilité de Skript mais genre si je mets: set {db.money.%player} to 10 Est-ce que la monnaie changera sur tout les serveurs reliés? Aussi, ce serait bien que tu nous montre un peu des exemples dans Skript :)
Izychiel Posté(e) le 25 août 2015 Posté(e) le 25 août 2015 Est-ce que la monnaie changera sur tout les serveurs reliés? Elle changera lors de l'actualisation de la base de donnees :D C'est comme une variable, mais universelle sur tout ce qui utilise la BDD :D 1
ShaDoWZ_ Posté(e) le 25 août 2015 Posté(e) le 25 août 2015 J'ai trouvé l'effet SQL Update de skQuery, c'est très utile mais juste, dans %text% faut mettre le nom de la base de la config de Skript? Et aussi, ça Update toutes les variables? update %text%
Izychiel Posté(e) le 25 août 2015 Posté(e) le 25 août 2015 J'ai trouvé l'effet SQL Update de skQuery, c'est très utile mais juste, dans %text% faut mettre le nom de la base de la config de Skript? Et aussi, ça Update toutes les variables? Non cela n'es pas pour la meme chose, ce que tu regardes c'est pour du SQL TOTALEMENT avec SkQuery, je vais essayer de l'utiliser et je ferais un tuto. 1
RoRo29 Posté(e) le 27 août 2015 Posté(e) le 27 août 2015 Est ce que tu pourais faire un exemple pour ajouter une variables a une BDD ?
Voserv Posté(e) le 27 août 2015 Auteur Posté(e) le 27 août 2015 Cela le fait automatiquement dès que tu fait par exemple une cmd qui fait "add 1 to {db.test}"
Kwizzy Posté(e) le 28 août 2015 Posté(e) le 28 août 2015 Pourquoi ne pas simplement utiliser le SQL avec SkQuery ?
RoRo29 Posté(e) le 28 août 2015 Posté(e) le 28 août 2015 Cela le fait automatiquement dès que tu fait par exemple une cmd qui fait "add 1 to {db.test}" Ducoup si j'ai bien compris, il faut mettre dn dans la variables c'est sa ?
Izychiel Posté(e) le 28 août 2015 Posté(e) le 28 août 2015 Pourquoi ne pas simplement utiliser le SQL avec SkQuery ? Ce serait bien mieux mais faudrait faire un tuto :o Parce que la c'est juste des variables :/
speacraft Posté(e) le 1 janvier 2016 Posté(e) le 1 janvier 2016 @Izychiel ? Tu as fait le tuto avec SkQuery ?
Izychiel Posté(e) le 1 janvier 2016 Posté(e) le 1 janvier 2016 @Izychiel ? Tu as fait le tuto avec SkQuery ? Je devrais en faire un mais un peu la flemme :'( Pour les bases de données hmmm balance tes questions en MP
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant