Plugin [TUTO] Plugin PermissionsEx

Liberateur

Graphicraft !
23 Juillet 2011
196
13
13
www.graphicraft.fr
Bonjour,

J'ai trouvé que de plus en plus de personnes parlaient du plugin PermissionsEx, j'ai donc décidé de faire un tutoriel en poussant la partie SQL.

Jeune-Ignorant : "Mais c'est complétement stupide de faire un tutoriel sur un plugin de permissions ! Bukkit a développé le siens et il est installé de base en plus d'être génial !"
Liberateurs : "Ah mais oui, mais non ! Je t'arrête tout de suite, la particularité du plugin PermissionsEx est le SQL ! "
Jeune-Ignorant : "Késaco ?"
Liberateurs : "Et bien grâce a celui-ci tu peux faire une interface web pour les membres de ton staff et faire un tas d'interaction toute plus géniale les une que les autres."

J'ai mis du temps à comprendre la logique dans la bd, car aucun post sur internet même anglais ne le présente.

<---- Tutoriel : PermissionsEx ----> a dit:
Réalisé le 21/12/2011, version 1.17

Installation

Pour télécharger la dernière version stable de PermissionsEx, rendez-vous sur la page bukkit. Une fois téléchargé, dézippez l'archive téléchargée, vous obtenez plusieurs fichiers : "PermissionsEx.jar", "PermissionsEx.jar", "ChatManager.jar", "Modifyworld.jar".

- Il est obligatoire d'utiliser "PermissionsEx.jar" et "Permissions.jar".

- Pour obtenir plus de possibilitées, il est vivement recommandé d'installer "Modifyworld.jar".

- "ChatManager.jar" est un simple plugin de Chat donc facultatif.

Pour l'installation, il vous suffit de glisser les JAR que vous souhaitez dans le dossier "plugins" de votre serveur puis de le relancer.

Configuration

Une fois que vous avez bien installé le plugin, un dossier "PermissionsEx" est créer avec les fichiers "config.yml" et "permissions.yml". Ouvrez le fichier "config.yml" et changer la configuration comme le stockage qui vous concerne (le SQLITE est disponible, mais je pense que peu de gens l'utilise, ci-besoin demandez moi).

- Par fichiers : Laissez la configuration actuel.

- Par MySQL : Vous devez posséder une base de donnée (bd) sur la même adresse que votre serveur sinon ce n'est pas possible. Ensuite remplacer la configuration comme ci-dessous en changeant "NOMDEVOTREBASE", "NOMDUTILISATEUR" et "MOTDEPASSE".

Code:
permissions:
    backends:
        sql:
            driver: mysql
            uri: mysql://localhost/NOMDEVOTREBASE
            user: NOMDUTILISATEUR
            password: MOTDEPASSE
    backend: sql
    superperms:
        parent-nodes: true
        enable: true
        strict-mode: false
    createUserRecords: true
    allowOps: false
    debug: false
    basedir: plugins/PermissionsEx

Les Permissions

Nous allons maintenant créer les différents groupes d'utilisateurs, pour ce faire vous pouvez utiliser les commande ci-dessous ou éditer votre fichier "permissions.yml". Pour voir les permissions associés aux commande ainsi que la liste complète rendez-vous ici (en anglais).
  • /pex groups list : Affiche la liste des groupes.
  • /pex group NOMDUGROUPE create : Créer un groupe.
  • /pex group NOMDUGROUPE create NOMDUPARENT : Créer un groupe qui aura déjà toutes les permissions du groupe parent.
  • /pex group NOMDUGROUPE delete : Supprime le groupe.
  • /pex default group NOMDUGROUPE : Attribut le groupe par défaut.
  • /pex group NOMDUGROUPE rank VALEURE : Rajoute un rang au groupe, il permet d'utiliser la commande "/pex promote" et "/pex demote" (pour les VALEURS : 0 = admin et 1000 ou plus = visiteur).
  • /pex group NOMDUGROUPE prefix PREFIX : Rajoute un nouveau préfixe au groupe (avant le pseudo).
  • /pex group NOMDUGROUPE suffix SUFFIX : Rajoute un nouveau suffix au groupe (après le pseudo).
  • /pex group NOMDUGROUPE add PERMISSION : Ajoute la permission à un groupe.
  • /pex group NOMDUGROUPE remove PERMISSION : Supprime la permission à un groupe.
  • /pex group NOMDUGROUPE timed add PERMISSION DURÉE : Aucune idée, mais surement très intéressant !
  • /pex group NOMDUGROUPE timed remove PERMISSION : Aucune idée, mais surement très intéressant !
Pour rajouter, éditer ou supprimer un joueurs d'un groupe, vous pouvez utiliser les commandes ci-dessous.
  • /pex user PSEUDO prefix PREFIX : Ajoute un préfixe au joueur.
  • /pex user PSEUDO prefix PREFIX : Ajoute un suffixe au joueur.
  • /pex user PSEUDO delete : Supprime le joueur de la liste.
  • /pex user PSEUDO add PERMISSION : Rajoute un permission à un joueur.
  • /pex user PSEUDO remove PERMISSION : Retire la permission d'un joueur.
  • /pex user PSEUDO timed add PERMISSION : Aucune idée, mais surement très intéressant !
  • /pex user PSEUDO timed remove PERMISSION : Aucune idée, mais surement très intéressant !
  • /pex user PSEUDO group add GROUP : Ajoute un groupe supplémentaire au joueur.
  • /pex user PSEUDO group set GROUP : Ajoute le joueur au groupe.
  • /pex user PSEUDO group remove GROUP : Retire le joueur du groupe
  • /pex promote PSEUDO : Dégrade à un joueur, je dis des choses horrible x), Rétrograde un joueur.
  • /pex demote PSEUDO : Promote un joueur
ModifyWorld

ModifyWorld vous permet de mettre des permissions très intéressantes : par exemple les joueurs au grade visiteurs sur mon serveur ne pourront pas prendre d'objet en main, ouvrir des coffres ou mourir, mais ils pourront utiliser un minecart. La liste des permissions possible grâce a ce petit plugin est disponible par ici!

Partie SQL

Si vous avez déjà toutes vos permissions ou l'envie de les faire plus rapidement que taper une à une les commandes au-dessus, je vous recommande de lire cette dernière partie attentivement :).

Connectez-vous à phpmyadmin ou une interface où vous pourrez taper des requêtes SQL et allez dans la db où se trouve les tables "Structure permissions", "Structure permissions_entity" et "Structure permissions_inheritance" créées par PermissionsEX lors de son premier lancement.

Dans un premier temps on créer tous les groupes, copier le bloc "code" dans un fichier texte et éditez-le en remplaçant NOMDUGROUPE, PREFIX et SUFFIX. Rajouter autant de ('NOMDUGROUP','0','PREFIX','SUFFIX','0') séparé par une virgule, pour le groupe par défaut rajouter la ligne ('NOMDUGROUP','0','PREFIX','SUFFIX','1') à la place (juste changer le 0 en 1).
Code:
INSERT INTO 'permissions_entity'('name', 'type', 'prefix', 'suffix', 'default') VALUES ('NOMDUGROUP','0','PREFIX','SUFFIX','0'),('NOMDUGROUP','0','PREFIX','SUFFIX','0'),('NOMDUGROUP','0','PREFIX','SUFFIX','0'),('NOMDUGROUP','0','PREFIX','SUFFIX','0'),('NOMDUGROUP','0','PREFIX','SUFFIX','0'),('NOMDUGROUP','0','PREFIX','SUFFIX','0'),('NOMDUGROUP','0','PREFIX','SUFFIX','0'),('NOMDUGROUP','0','PREFIX','SUFFIX','0')

Ensuite on attribut les rangs de ces groupes, remplacez NOMDUGROUPE et VALEURE. Rappel, plus le rang à une valeurs importante, plus il est insignifiant, le rang admin sera donc 10 par exemple et celui de visiteur 1000.
Code:
INSERT INTO 'permissions'('name', 'type', 'permission', 'value') VALUES ('NOMDUGROUP','0','rank','VALEURE'),('NOMDUGROUP','0','rank','VALEURE'),('NOMDUGROUP','0','rank','VALEURE'),('NOMDUGROUP','0','rank','VALEURE'),('NOMDUGROUP','0','rank','VALEURE'),('NOMDUGROUP','0','rank','VALEURE'),('NOMDUGROUP','0','rank','VALEURE'),('NOMDUGROUP','0','rank','VALEURE')

Après, si vous avez des "groupes parents" par exemple le grade "VIP" a aussi les permissions de votre grade "Citoyens" en plus de ces propres permissions (Citoyens est le Parent du grade VIP). Remplacez NOMDUGROUPE et NOMDUPARENT.
Code:
INSERT INTO 'permissions_inheritance'('child', 'parent', 'type') VALUES ('NOMDUGROUP','NOMDUPARENT','0'),('NOMDUGROUP','NOMDUPARENT','0'),('NOMDUGROUP','NOMDUPARENT','0'),('NOMDUGROUP','NOMDUPARENT','0'),('NOMDUGROUP','NOMDUPARENT','0'),('NOMDUGROUP','NOMDUPARENT','0'),('NOMDUGROUP','NOMDUPARENT','0'),('NOMDUGROUP','NOMDUPARENT','0')

Pour terminer, nous allons créer toutes les permissions. Il est conseillé de faire une requête par groupe pour éviter de s'embrouiller. Remplacez NOMDUGROUP et PERMISSION.
Code:
INSERT INTO 'permissions'('name', 'type', 'permission') VALUES ('NOMDUGROUP','PERMISSION','0'),('NOMDUGROUP','PERMISSION','0'),('NOMDUGROUP','PERMISSION','0'),('NOMDUGROUP','PERMISSION','0'),('NOMDUGROUP','PERMISSION','0'),('NOMDUGROUP','PERMISSION','0'),('NOMDUGROUP','PERMISSION','0'),('NOMDUGROUP','PERMISSION','0')

Comprendre la logique SQL de PermissionsEX

Sur ce dernier point, nous allons voir ensemble à quoi sert quoi et comment ça marche. Nous avons donc trois tables ci-dessous, créées lors du premier lancement du plugin. Pour chaque table, l'id est unique et ne doit pas être deux fois dans une même table. Le type est une valeurs par défaut, 0 pour un groupe et 1 pour un joueur.

  • permissions : c'est la table qui liste les permissions ainsi que le rang de chaque groupe ou joueur. La colonne name est le nom du groupe auquel appartient la permission, le world est le monde auquel appartient la permission (a laisser vide) et la value est pour une durée ou la valeure du rang.
  • permissions_entity : cette table liste tous les joueurs ainsi que les groupes. La colonne name est le nom du groupe ou du joueur, le prefix et le suffix permette de rajouter un préfixe ou un suffixe au groupe ou au joueur et default est utilisé pour savoir quel groupe est par défaut mis pour un nouveau joueur.
  • permissions_inheritance: celle-ci nous permettra de mettre les parents des groupes et des joueurs. Child correspond au nom du joueur ou du groupe qui obtient les permissions de son parent et world permet de l'activer uniquement dans l'un de vos monde (par défaut "null" correspond à tous vos mondes).

J'espère que j'aurais aidé des joueurs et que toutes mes fautes d’orthographes ne vous feront pas trop mal aux yeux. Si vous avez des questions n'hésitez pas à répondre sur ce post ou par mp, bonne continuation ! Un "J'aime" en bas à droite fais toujours plaisir, just for fun !
 

Liberateur

Graphicraft !
23 Juillet 2011
196
13
13
www.graphicraft.fr
Je vous prie de m'excuser pour la mise en forme de l'article, je n'avais pas vue que lors de mon copier/coller toutes mes balises BB code ont sautés, sa donnait un pâté illisible x). Voilà réparé !
 

Liberateur

Graphicraft !
23 Juillet 2011
196
13
13
www.graphicraft.fr
Suite à un MP, je rajoute des screens pour chaque tables pour une meilleure compréhension :

exemple1.jpg


exemple2.jpg


exemple3.jpg
 

Matspyder

Aventurier
20 Décembre 2011
13
0
1
34
le problème, c'est que la on ne peut pas donner un temps défini, or le but c'est d'automatiser.
 

Liberateur

Graphicraft !
23 Juillet 2011
196
13
13
www.graphicraft.fr
Un temps défini ? Désolé, mais je ne comprend pas se que tu veux dire. C'est a dire que tu souhaites pouvoir créer un grade ou un joueur dans la DB et qu'il se supprime après une durée ?

Le but d'avoir une DB dans laquelle on met toutes ces permissions, permet de faire une interface accessible aux admins/modos par exemple : une page avec un simple tableau, chaque ligne correspond à un joueur dans la DB suivi d'un bouton "+" et "-" qui permettent de promouvoir ou dégrader un joueur. Ceci est un exemple comme un autre, car le plugin possède bien plus de fonctionnalités que les autres plugins de permissions.
 

Cat121

Architecte en herbe
23 Janvier 2012
264
20
130
royalcraft.fr
Un temps défini pour le rang ? C'est faisable via une interface web comme dit au dessus ! L'aspect SQL est tellement pratique que tout devient automatique.

Exemple d'utilisation pour mon cas :

Le nouveau membre doit obtenir X% de voix positives parmi les joueurs pour intégrer le serveur. Dès que le joueur atteint les X% de voix et qu'il consulte son compte(très important) il est automatiquement ajouté au groupe qui va bien.

Tu veux qu'il ne le garde qu'un moment ? Aucun problème, mets en place des tâches CRON sur ton serveur et modifie la base de données de temps en temps.

Si c'est pas de l'automatisation ;)
 

Liberateur

Graphicraft !
23 Juillet 2011
196
13
13
www.graphicraft.fr
Pas forcement besoin de passer par des tâches CRON, le plugin permet de mettre des valeurs de temps. Je ne me suis pas penché dessus néanmoins, car je n'en ai pas l’utilité.