-
Sujet
-
Bonjour, voilà mon problème
Je n’arrive pas à configurer mon système de level-up
Voici mes fichiers :
systemLevel.jsconst { EmbedBuilder } = require('discord.'); const sqlite = require('sqlite3').verbose(); const path = require('path'); const { getUserXpAndLevel } = require('./checkLevelUp'); // Initialisation de la base de données SQLite const db = new sqlite.Database(path.resolve(__dirname, '..', 'data', 'database.db')); // Calcul de l'XP pour un niveau donné function calculateXpForLevel(level) { return level * level * 20; // Exemple de calcul pour XP nécessaire pour un niveau } // Fonction pour calculer la progression d'XP d'un utilisateur function calculateProgression(userXp, userLevel) { const xpForCurrentLevel = calculateXpForLevel(userLevel - 1); // XP nécessaire pour le niveau précédent const xpForNextLevel = calculateXpForLevel(userLevel); // XP nécessaire pour le niveau suivant // Calcul de la progression en pourcentage const progressPercentage = ((userXp - xpForCurrentLevel) / (xpForNextLevel - xpForCurrentLevel)) * 100; // Retourne la progression en pourcentage, entre 0 et 100 return Math.min(Math.max(progressPercentage, 0), 100); } // Fonction pour vérifier et effectuer une mise à niveau function checkLevelUp(client, guildId, userId, currentXp) { getUserXpAndLevel(guildId, userId, (err, data) => { if (err) return; let currentLevel = data.level; const newLevel = Math.floor(0.1 * Math.sqrt(currentXp)); // Nouveau niveau basé sur l'XP if (newLevel > currentLevel) { // Mise à jour du niveau dans la BDD db.run( `UPDATE xp_data SET level = ?, xp = ? WHERE guild_id = ? AND user_id = ?`, [newLevel, currentXp, guildId, userId], (err) => { if (err) { console.error("Erreur lors de la mise à jour du niveau dans la BDD :", err); } } ); const channel = client.channels.cache.get(process.env.XP_CHANNEL); if (channel) { const embed = new EmbedBuilder() .setTitle('Niveau Atteint !') .setDescription(`Prévient tous tes amis, , car tu es level ${newLevel} !`) .setColor('#00FF00') .setThumbnail(client.users.cache.get(userId).displayAvatarURL()) .setTimestamp(); channel.send({ content: ``, embeds: }); } } const xpForNextLevel = calculateXpForLevel(newLevel + 1); const xpForCurrentLevel = calculateXpForLevel(newLevel); // Empêche currentXp de dépasser l'XP pour le prochain niveau if (currentXp > xpForNextLevel) { currentXp = xpForNextLevel; } // Calcul robuste de la progression const xpProgress = Math.min( Math.max( ((currentXp - xpForCurrentLevel) / (xpForNextLevel - xpForCurrentLevel)) * 100, 0 ), 100 ); return xpProgress; }); } // Exportation des fonctions module.exports = { calculateXpForLevel, checkLevelUp, calculateProgression };
——————–
seikam – Envoyé depuis le Discord : Culte du code
Vous lisez 8 fils de discussion
Vous lisez 8 fils de discussion
- Vous devez être connecté pour répondre à ce sujet.