MrGrOGC

Co-Fondateur de Kerium.fr
10 Avril 2020
10
2
14
23
STRASBOURG
www.kerium.fr
Bonjour !

J'ai une question par rapport à Bungeecord : Nous avons 5 serveurs et je souhaiterais faire un menu "Statistique" pour les joueurs sur le HUB principal. Dans ce menu je voudrais afficher le temps total de connexion sur la totalité des serveurs en une seule ligne pour faire un cumul.

J'ai cherché pas mal de façon de faire ça, notamment avec PlaceHolders API et je pense que certains pourrait le faire cependant je les télécharges mais ils ne se chargent pas même après un reload du bungee.

Donc connaissez vous un moyen de récupérer cette information avec par exemple "%....%" ?
Pour ce qui est de l'affichage ça c'est bon je sais le faire.

En tout cas je vous remercie et j'espère être assez précis dans ma demande, sinon n'hésitez pas à me demander plus de détails et j'en donnerai bien évidemment autant que je puisse ! :)

Cordialement,
MrGrOGC.
 
Dernière édition:

Detobel36

Créateur de plugins (PhoenixRebirth)
Support
17 Août 2012
10 435
23
2 234
347
26
Bruxelles - Belgique
www.phoenix-rebirth.fr
Salut,

Bon, ça va être un peu technique...

Les statistiques d'un joueur (et notamment sont temps de jeu) est enregistré dans un fichier se trouvant dans le dossier "stats", lui même dans le dossier du monde. Donc si ton monde s'appel "world", test stats se trouvent dans le fichier: world/stats/4ac9cf39-baf9-4889-8f98-3d13f241ebcc.dat

Maintenant parlons du fait qu'il y ai deux types de plugins: des plugins spigot et des plugins bungeecord. Les premiers s'installent sur spigot et les seconds sur bungeecord (merci captain...). Les seconds ne peuvent cependant pas lire les fichiers se trouvant sur spigot. Ils peuvent seulement intercepter les packets des joueurs (donc les données envoyé entre le joueur et le serveur). C'est comme ça qu'un plugin bungeecord peut modifier le scoreboard ou envoyé un message dans le tchat. Ils envoie un packet (disant que le joueur à reçu un message) ou modifie un packet qui doit être envoyé (changer le scoreboard).

PlaceHolder API est un plugin spigot. Il va récupérer des informations se trouvant des les fichiers de statistiques.
Alors la, tu va me dire
C'est pas vrai, PlaceHolder API peut aussi afficher des informations lié à bungeecord, comme par exemple le nombre de joueur connectés
Tu as totalement raison. Sauf que pour faire ça, PlaceHolder API utilise la connexion d'un joueur. PlaceHolder envoie un packet via la connexion d'un joueur. Bungeecord (qui écoute tous les packets) intercepte ce packet (toujours via la connexion du joueur). Et répond à PlaceHolder API via la même connexion (à savoir la connexion du joueur).
Bungeecord "comprend" et intercepte un nombre défini de packet. C'est directement "codé" dans Bungeecord. Alors évidemment tu peux rajouter des plugins bungeecord qui pourront également intercepter des packets (et donc rallonger la liste des packets "compris" par bungeecord).

Pour moi, la seule solution pour solutionner ton problème est de passer par une base de données externe. Donc une base de donnée où tu va stocker le temps de jeux de tous les joueurs (sur chaque serveur ou tous les serveurs... ça c'est "aux choix" (en fonction de comment tu le fait)).
Et pour dans un deuxième temps, afficher cette information (en récupérant juste ce qu'il y a en base de données).

En tant que dev, je te dirais que le plus simple est de le faire soit même (comme ça on a exactement ce qu'on veut). Mais si tu n'as pas ces compétences... C'est plus compliqué.

Dans ce second cas, je te conseil de chercher un plugin qui permet de mettre les statistics en base de données.
Ensuite, je te conseil d'utiliser PlaceHolderAPI avec la section "MySQL": https://github.com/PlaceholderAPI/PlaceholderAPI/wiki/Placeholders#mysql


Cordialement,
Detobel36
 

MrGrOGC

Co-Fondateur de Kerium.fr
10 Avril 2020
10
2
14
23
STRASBOURG
www.kerium.fr
Salut,


Je pense avoir compris une bonne parti de ce que tu m'as dis, et notamment parce que tu as été très clair dans le cheminement (merci beaucoup !). En effet je ne suis pas développeur je ne m'occupe que de modifier les paramètres des config pour en faire quelque chose qui me convient.

Nous avons tout de même une BDD et je vais voir si je peux me renseigner dessus pour apprendre à utiliser correctement MySQL et pouvoir faire ce que tu me propose dans le second cas.
Mais je dispose donc d'une BDD déjà utilisé pour notamment un plugin d'auto-connexion et de report d'un plugin anti-cheat. Est-ce que je peux utiliser la même BDD dans un dossier différent ou est-ce qu'il vaut mieux allouer une nouvelle BDD pour n'avoir que ces packets de connexion player ?

Encore une fois je te remercie pour toutes ces précisions, je vais tenter de faire au mieux désormais pour arriver au bon résultat ! :)


Cordialement,
MrGrOGC.
 

Detobel36

Créateur de plugins (PhoenixRebirth)
Support
17 Août 2012
10 435
23
2 234
347
26
Bruxelles - Belgique
www.phoenix-rebirth.fr
Salut,

Mais je dispose donc d'une BDD déjà utilisé pour notamment un plugin d'auto-connexion et de report d'un plugin anti-cheat. Est-ce que je peux utiliser la même BDD dans un dossier différent ou est-ce qu'il vaut mieux allouer une nouvelle BDD pour n'avoir que ces packets de connexion player ?
Tu peux utiliser la même...

MySQL se décompose en plusieurs parties: une ou plusieurs base de données. Dans ces bases de données tu as des "tables"/"tableaux". Dans ces tableaux tu as les données (qui sont stockés sous forme de colonnes/lignes).
Quand tu récupères une donnée, tu lui donne au moins la base de données. Après avec la requête SQL, tu choisis quelle tableau tu veux et quels informations dans ce tableau. Donc par exemple:
Code:
SELECT * FROM superTableau
Récupère toutes les données de "superTableau".
Code:
SELECT uuid FROM player
La je récupère la colonne "uuid", dans le tableau "player"
Code:
SELECT uuid FROM player WHERE pseudo = "Detobel36"
La je récupère la colonne "uuid", dans le tableau "player" pour uniquement les lignes qui ont comme valeur "Detobel36 dans la colonne "pseudo".

Tout ça pour dire que les requêtes SQL ne vont pas "se marcher les unes sur les autres". Il faut explicitement préciser le tableau. Donc une base de données à 10 milles tableaux de 10 milles programmes différents. Ca posera pas de soucis ;)


Cordialement,
Detobel36
 

MrGrOGC

Co-Fondateur de Kerium.fr
10 Avril 2020
10
2
14
23
STRASBOURG
www.kerium.fr
Salut,


De nouveau merci pour ces réponses très explicites ! Je comprend déjà beaucoup mieux, ne serait-ce que les trois lignes de code sont un parfait exemple et démarrage pour moi !

Je vais du coup mettre ce topic en terminé (je crois que je peux) et chercher le reste des informations par moi-même !

Je me répète mais encore merci pour le temps que tu m'as accordé et fais économiser sur certaines recherches !


Cordialement,
MrGrOGC.
 
  • J'aime
Reactions: Detobel36