我如何在 discord.py 或任何合适的角色扮演游戏关卡系统中制作关卡系统?

How do I make a level system in discord.py, or just any proper rpg level system?

如何在 discord.py 中制作升级系统?我目前正在使用数据库来存储用户信息。不过,我想做一个endless/infinite练级系统。这意味着当他们通过第一级时,他们必须获得的 xp 点数才能达到下一级别。 例如:

一位新用户加入。他们从第 1 级开始,这是他们当前的 xp 级别。数据:1 级,1/20 xp 点数

一旦他们超过 20 点 xp,我希望他们的等级为 2 级,要达到 3 级,他们必须获得 40 xp。因此,进入下一个级别的 checkpoint/mark 倍增。新用户的当前统计数据:2 级,1/40 xp 一旦他们达到 3 级,统计数据:3 级,1/80 xp

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

我正在使用 mysql 数据库。我已经有 2 个函数来更新和显示它们的级别。我只需要找出如何循环的东西。我对循环不是很熟悉。

我希望他们的升级系统基于 on_message 事件。这意味着每条消息,他们都会获得一个经验值。

这是我当前的 on_message 代码:

    @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)

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

编辑:

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

@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)