【问题标题】:How do I make a level system in discord.py, or just any proper rpg level system?如何在 discord.py 中制作关卡系统,或者任何适当的 rpg 关卡系统?
【发布时间】:2020-12-26 00:15:30
【问题描述】:

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

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

一旦他们超过 20 经验值,我希望他们的等级达到 2 级,而要达到 3 级,他们必须获得 40 经验值。因此,进入下一个级别的检查点/标记会成倍增加。新用户的当前统计数据: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)

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

【问题讨论】:

  • 您能否更新您的问题以包含您目前拥有的代码?你不能在on_message 中处理升级,因为人们只能通过发送消息来获得经验值吗?
  • @Benjin 我已经包含了一些可以解释您的问题的代码。对于给您带来的不便,我深表歉意
  • 您需要提供更多代码,您提供的代码中使用的函数会很好,我还假设您已正确标记它?它不在这里。

标签: python mysql python-3.x discord.py discord.py-rewrite


【解决方案1】:

编辑:

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

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

【讨论】:

    猜你喜欢
    • 2020-10-10
    • 1970-01-01
    • 2011-11-10
    • 2019-10-13
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 2023-02-16
    • 2019-09-15
    相关资源
    最近更新 更多