как изменить формулы?
| |
kotiklinok | Дата: Суббота, 30 Марта 2024, 12:28 | Сообщение # 1 |
уже был
Сейчас нет на сайте
| комьюнити игры Rucoy Online методом проб и ошибок вывели формулы, которым следует игра. Формулы очень точны и выполняют свои задачи. С использованием этих формул уже создано несколько ботов, сайт и еще много чего, но лично мне чего-то не хватает. дело в том, что почти везде используется защита мобов, но чтобы найти нужного моба для взятия его защиты необходимо перебрать всех мобов и сначала найти нужного. я хотел бы узнать можно ли как-то из формул убрать защиту мобов. это поможет написать мне бота для дискорда.
real_stat = stat + buffs
min_raw_damage = (real_stat * weapon_atk) / 20 + lvl / 4 max_raw_damage = (real_stat * weapon_atk) / 10 + lvl / 4 max_raw_crit_damage = max_raw_damage * 1.05
min_damage = max(min_raw_damage - mob_defense, 0) max_damage = max(max_raw_damage - mob_defense, 0) max_crit_damage max_damage * 1.05
accuracy = (max((max_damage / (max_raw_damage - min_raw_damage)), 0) * 0.99) + (min(1.00, (max_crit_damage / (max_raw_crit_damage - max_raw_damage))) * 0.01) tickrate = int(3600 * (1.0 - (1.0 - accuracy) ** 10)) какой у игрока тикрейт можно узнать с помощью команды в самой игре
average_damage = accuracy * (0.99 * ((max_damage + min_damage) / 2)) + 0.01 * ((max_crit_damage + max_damage) / 2) time_to_kill = mob_health / average_damage
на данный момент я пишу команду для бота для поиска самого эффективного трена. если accuracy выше 0.1749, то тренировку на этом мобе можно считать эффективной, но из-за того, что в расчетах с самого начала используется защита, приходится перебирать каждую группу мобов, чтобы найти необходимого. Я не надеюсь что здесь мне помогут, но все же не спросить будет хуже, чем спросить и не получить ответа
все имена переменных взяты у первого бота, что использовал формулы. Если есть идеи как их лучше всего назвать - пишите. если я написал не в том разделе - не пишите это. Лучше скажите где мне написать со своей проблемой.
|
|
| |
Oscillograph | Дата: Суббота, 30 Марта 2024, 18:00 | Сообщение # 2 |
был не раз
Сейчас нет на сайте
| Цитата kotiklinok ( ) если accuracy выше 0.1749, то тренировку на этом мобе можно считать эффективной, но из-за того, что в расчетах с самого начала используется защита, приходится перебирать каждую группу мобов, чтобы найти необходимого Не уверен, что понял, в чём заключается проблема.
Поскольку accuracy считается и по защите моба, и по характеристикам персонажа игрока, то её придётся вычислять каждый раз, когда что-то меняется либо у игрока (влияющее на урон), либо у моба (влияющее на защиту), то есть уйти от учёта защиты моба никак не получится. И если нужно понять, для каких мобов accuracy выше значения X, то нужно пройтись по всей коллекции мобов и посчитать accuracy для каждого встреченного моба -- таким образом и узнаем, для каких из мобов accuracy выше значения X. Не считая, не посчитать.
Если проблема в том, что accuracy пересчитывается чаще, чем обновляются характеристики мобов или персонажа, то можно поступить так: - для каждого персонажа хранить свою коллекцию пар {"идентификатор моба", accuracy}; - один раз посчитать accuracy для каждого моба; - отсортировать коллекцию пар по accuracy;
Тогда, если потребуется выбрать мобов, для которых accuracy выше значения X, то просто взять и выбрать их, ведь коллекция пар же отсортирована. Если характеристики мобов не обновляются, то accuracy достаточно пересчитывать только тогда, когда обновляются характеристики персонажа.
Сообщение отредактировал Oscillograph - Суббота, 30 Марта 2024, 18:04 |
|
| |
kotiklinok | Дата: Суббота, 30 Марта 2024, 22:39 | Сообщение # 3 |
уже был
Сейчас нет на сайте
| Цитата Oscillograph ( ) Не уверен, что понял, в чём заключается проблема. не совсем проблема. я просто ищу возможность уйти от использования защиты в расчетах или отодвинуть её на более позднее время.
у мобов ничего никогда не меняется. у игрока тоже ничего не меняется(после того, как отправили команду в дискорде), но, как вы и сказали, Цитата Oscillograph ( ) нужно пройтись по всей коллекции мобов и посчитать accuracy для каждого встреченного моба , из-за чего я и написал в надежде что можно что-то придумать. просто если все исходные данные игрока в наличии, данные мобов не меняются, то можно что-то придумать, чтобы не вести такие расчеты для каждой группы.
я просто подумал что эти формулы могут использоваться и разработчиками игры и, если это так, то можно поискать откуда они взяли формулу и, возможно, выработать свою, что не затрагивает защиту до самого последнего момента
|
|
| |
|