Моя «проблема» - это скорее функция, которую я хочу добавить, я использовал это руководство:
https://anidiots.guide/coding-guides/sqlite-based-points-system
Я немного изменил код, чтобы в основном дать вам случайное количество XP, я хочу отредактировать, сколько XP требуется для повышения уровня.
Прямо сейчас это статическая сумма, составляющая 5000, необходимая для повышения уровня. Я пытаюсь заставить его увеличивать количество, необходимое для повышения на дополнительные 5000 каждый раз, когда вы повышаете уровень.
В настоящее время это работает так:
Уровень от 1 до 2 = 5000 всего необходимого опыта
Уровень от 2 до 3 = 10000 всего необходимого опыта
В настоящее время количество, необходимое для повышения уровня, всегда составляет 5000 между каждым уровнем.
Вот как я хочу, чтобы это работало:
Уровень от 1 до 2 = 5000 всего необходимого опыта
Уровень от 2 до 3 = 15000 всего необходимого опыта
То есть от 5000 до уровня 2, затем от 10000 до уровня 3 и т. Д. (Увеличивая необходимое количество на 5000 при каждом повышении уровня)
Я потратил большую часть двух часов, пробуя разные вещи, и в основном смотрел на то, что код полностью ушел в мою глубину.
Я верил, что что-то подобное будет работать, но я понятия не имею, правильно ли это
if (score.level == '1') {
nextLevel = 5000
}
if (score.level == '2' {
nextLevel = 10000
}
Я очень сомневаюсь, что это правильно, иначе мое сообщение будет очень длинным, так как я планирую иметь 100 уровней
Код полностью:
let score;
if (message.guild) {
score = bot.getScore.get(message.author.id, message.guild.id);
if (!score) {
score = {
id: `${message.guild.id}-${message.author.id}`,
user: message.author.id,
guild: message.guild.id,
points: 0,
level: 1,
};
}
const xpAdd = Math.floor(Math.random() * 10) + 50;
const curxp = score.points;
const curlvl = score.level;
const nxtLvl = score.level * 5000;
score.points = curxp + xpAdd;
if (nxtLvl <= score.points) {
score.level = curlvl + 1;
const lvlup = new MessageEmbed()
.setAuthor(
`Congrats ${message.author.username}`,
message.author.displayAvatarURL()
)
.setTitle('You have leveled up!')
.setThumbnail('https://i.imgur.com/lXeBiMs.png')
.setColor(color)
.addField('New Level', curlvl + 1);
message.channel.send(lvlup).then(msg => {
msg.delete({
timeout: 10000,
});
});
}
bot.setScore.run(score);
}
Код «как есть» работает нормально и, как и ожидалось, но «как есть» не очень хорош, поскольку награда за переход с уровня 30-31 отсутствует, так как это то же количество опыта, которое необходимо для получения уровня 1-2