Aller au contenu
Voserv

Les Bases de donnée

Messages recommandés

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

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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%} ?)

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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...

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci beaucoup :)

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites
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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :)

Partager ce message


Lien à poster
Partager sur d’autres sites
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

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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%

Partager ce message


Lien à poster
Partager sur d’autres sites
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.

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Est ce que tu pourais faire un exemple pour ajouter une variables a une BDD ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Cela le fait automatiquement dès que tu fait par exemple une cmd qui fait "add 1 to {db.test}"

Partager ce message


Lien à poster
Partager sur d’autres sites
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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites
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 :/

Partager ce message


Lien à poster
Partager sur d’autres sites
@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

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité
Vous postez un commentaire en tant qu’invité. Si vous avez un compte, merci de vous connecter.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.


×

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.