我如何在 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)
如何在 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)