我的“问题”更多是我想添加的功能,我使用了本指南: https ://anidiots.guide/coding-guides/sqlite-based-points-system 我稍微更改了代码以主要给你一个随机数量的 XP,我正在寻找编辑需要多少 XP 才能升级。
现在它是一个静态数量,升级需要 5000。我试图让它每次升级时额外增加 5000 升级所需的数量。
目前,它是这样工作的:
1 到 2 级 = 总共需要 5000 XP
2 到 3 级 = 总共需要 10000 经验
目前,每个级别之间升级所需的金额始终为 5000。
这就是我希望它工作的方式:
1 到 2 级 = 总共需要 5000 XP
2 到 3 级 = 总共需要 15000 XP
这将是 5000 到 2 级,然后 10000 到 3 级等等(每次升级所需的数量增加 5000)
我花了 2 小时的大部分时间尝试不同的事情,主要是查看完全超出我理解范围的代码。我相信做这样的事情会奏效,但我不知道这是否正确
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 级获得相同数量的 XP
原文由 Ragnar Lothbrok 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一个应该可以解决问题的小公式(如果我正确理解您的问题):
这给出了以下升级的 xp 要求: