Zima
Новичок
Пишу алгоритм работы ботов. Нужна помощь.
Пишу ботов для онлайн игры.
Нужна помощь в создание алгоритма.
Итак...
Есть боты. Их много. У каждого бота может быть много заданий(квесты).
Квесты созданы в виде дерева. Тоесть всегда имеется начальный квест с parent_id=0. Квест продолжение имеет другой бот и у него в parent_id прописан квест родительский.
Пользователь при обращение к боту может получить квест в нескольких случаях:
1.Пользователь ранее не получал у этого бота квесты с parent_id=0. Тогда он получает первый квест с parent_id=0 и все. Тут все ясно как бы.
2.Пользователь получал ранее у этого бота квест с parent_id=0 и он его уже выполнил. Тогда пользователь получает слудующий квест у этого бота с parenr_id=0. Тут тоже как бы все ясно.
3.Пользователь получал ранее у другого бота квест с parenr_id=0 и у этого бота есть продолжение... тоесть parenr_id= id выданного ранее квеста. Вот тут уже сложнее. Полученных квестов у других ботов с parenr_id=0 может быть много. Можно пройтись по ним и посмотреть имеется ли продолжение у данного бота. Но уже получается слишком много запросов.
Усложняем еще... допустим мы решили 3 пункт и квесты выдаются. Тогда у пользователя будет иметься уже ветки этого дерева.
Что бы определить имеется ли у бота продолжение мы должны достать квесты с parenr_id=0, найти квесты продолжения выданные разными ботами. И посмотреть нет ли у бота к которому мы обращаемся в данный момент продолжения к последнему выданному квесту. И так по всем веткам.
Важно то, что бот может иметь задания(квесты), для нескольких веток.
Вижу что все очень сложно... подозреваю, что возможно существует способ упростить все это дело... Кто что может посоветовать?
Незнаю понятно ли написал... но вот как смог
Пишу ботов для онлайн игры.
Нужна помощь в создание алгоритма.
Итак...
Есть боты. Их много. У каждого бота может быть много заданий(квесты).
Квесты созданы в виде дерева. Тоесть всегда имеется начальный квест с parent_id=0. Квест продолжение имеет другой бот и у него в parent_id прописан квест родительский.
Пользователь при обращение к боту может получить квест в нескольких случаях:
1.Пользователь ранее не получал у этого бота квесты с parent_id=0. Тогда он получает первый квест с parent_id=0 и все. Тут все ясно как бы.
2.Пользователь получал ранее у этого бота квест с parent_id=0 и он его уже выполнил. Тогда пользователь получает слудующий квест у этого бота с parenr_id=0. Тут тоже как бы все ясно.
3.Пользователь получал ранее у другого бота квест с parenr_id=0 и у этого бота есть продолжение... тоесть parenr_id= id выданного ранее квеста. Вот тут уже сложнее. Полученных квестов у других ботов с parenr_id=0 может быть много. Можно пройтись по ним и посмотреть имеется ли продолжение у данного бота. Но уже получается слишком много запросов.
Усложняем еще... допустим мы решили 3 пункт и квесты выдаются. Тогда у пользователя будет иметься уже ветки этого дерева.
Что бы определить имеется ли у бота продолжение мы должны достать квесты с parenr_id=0, найти квесты продолжения выданные разными ботами. И посмотреть нет ли у бота к которому мы обращаемся в данный момент продолжения к последнему выданному квесту. И так по всем веткам.
Важно то, что бот может иметь задания(квесты), для нескольких веток.
Вижу что все очень сложно... подозреваю, что возможно существует способ упростить все это дело... Кто что может посоветовать?
Незнаю понятно ли написал... но вот как смог
