#python #mysql #python-3.x #discord.py #discord.py-rewrite
#python #mysql #python-3.x #discord.py
Вопрос:
Как мне создать систему уровней в discord.py ? В настоящее время я использую базу данных для хранения информации о пользователях. Тем не менее, я хочу создать бесконечную систему прокачки. Это означает, что когда они проходят первый уровень, количество очков опыта, которое они должны набрать, чтобы достичь следующего уровня, увеличивается. Например:
Приходит новый пользователь. Они начинают с уровня 1, это их текущий уровень xp. Статистика: Уровень 1, 1/20 очков опыта
Как только они наберут более 20 очков опыта, я хочу, чтобы их уровень был 2-м, а чтобы добраться до третьего уровня, они должны получить 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, надеюсь, вы сможете мне помочь.
Комментарии:
1. Можете ли вы обновить свой вопрос, включив в него код, который у вас есть на данный момент? Не могли бы вы также повысить уровень в
on_message
, поскольку люди могут получать опыт только путем отправки сообщений?2. @Benjin Я включил некоторый код, который должен объяснить ваш вопрос. Я приношу извинения за неудобства
3. Вам нужно предоставить еще немного кода, функции, используемые в предоставленном вами коде, были бы хороши, также я предполагаю, что у вас есть правильные вкладки? Этого здесь нет.
Ответ №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)