我如何在discord.py中创建一个等级系统,或者只是任何合适的rpg等级系统



如何在discord.py中制作水准测量系统?我目前正在使用一个数据库来存储用户信息。然而,我想制作一个无尽/无限的水准测量系统。这意味着当他们通过第一级时,他们必须获得的xp点数才能达到下一级。例如:

一个新用户进来了。他们从1级开始,这是他们当前的xp级别。统计:1级,1/20经验点

一旦他们获得了20个xp点,我希望他们的等级达到2级,要达到3级,他们必须获得40个xp。因此,到达下一个级别的检查点/标记会相乘。新用户的当前状态:级别2,1/40 xp一旦他们达到3级,统计:3级,1/80 xp

然后我只想让它成为一个无休止的循环。只需不断更新他们的等级,并将他们的xp等级标记乘以2。

我使用的是mysql数据库。我已经有两个功能可以更新和显示它们的级别。我只需要知道如何循环。我对循环不是很熟悉。

我希望他们的水准测量系统基于消息事件。这意味着每发一条信息,他们都会获得一个经验点。

这是我当前的消息代码:

@client.event
async def on_message(message):
member = message.author
guild = message.guild
xp_update(1, member.id)
print(f"{member} from guild {guild} said>> '{message.content}'")
get_xp_stats(member.id)
get_lvl_stats(member.id)
if int(xp_results) == range(1, 49):
lvl_update(1, member.id)
await message.send(f"{member} has leveled up to {lvlresult}!")
elif int(xp_results) == range(50, 99):
lvl_update(1, member.id)
await message.send(f"{member} has leveled up to {lvlresult}!")
elif int(xp_results) == range(100, 199):
lvl_update(1, member.id)
await message.send(f"{member} has leveled up to {lvlresult}!")
await client.process_commands(message)

非常感谢stackoverflow,希望你能帮助我。

编辑:

感谢大家的努力和参与。我已经找到了答案。我只是需要修改一些东西。这是我的完整代码。老实说,这是简单的数学和代数。我应该接受更多的数学学费,哈哈

@client.event
async def on_message(message):
member = message.author
guild = message.guild
get_max_lvl_stats(member.id)
print(f"{member} from guild {guild} said>> '{message.content}'")
get_xp_stats(member.id)
get_lvl_stats(member.id)
if xp_results > maxlvlresult:
max_lvl_update(2, member.id)
lvl_update(1, member.id)
elif xp_results < maxlvlresult:
xp_update(1, member.id)
elif xp_results == 0:
pass
elif xp_results == maxlvlresult:
xp_update(1, member.id)
else:
print("An error occurred with on_message lvl updating.")
await client.process_commands(message)

相关内容

最新更新