Вторник, 23 Апреля 2024, 21:29

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Скриптовые языки программирования » как изменить формулы? (можно ли как-то из формул убрать защиту мобов?)
как изменить формулы?
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 для каждого встреченного моба
, из-за чего я и написал в надежде что можно что-то придумать.
просто если все исходные данные игрока в наличии, данные мобов не меняются, то можно что-то придумать, чтобы не вести такие расчеты для каждой группы.

я просто подумал что эти формулы могут использоваться и разработчиками игры и, если это так, то можно поискать откуда они взяли формулу и, возможно, выработать свою, что не затрагивает защиту до самого последнего момента
Форум игроделов » Программирование » Скриптовые языки программирования » как изменить формулы? (можно ли как-то из формул убрать защиту мобов?)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг