Пьяная походка - Drunked walking / вычисление точки встречи

Разработка новых функций.

Модератор: 4epT

Аватара пользователя
Cooot
Грамотный
Сообщения: 306
Зарегистрирован: Пт апр 25, 2008 8:02 am

Сообщение Cooot »

Отлично, одной проблемой меньше.

Еще вопрос. Что будет если послать пакет атаки на моба, например, когда расстояние между мобом и ботом 2 клетки, а дистанция атаки с которой бот может атаковать 1? Он пройдет одну клетку и атакует или ответит тем, что не может атаковать просто?
Изображение
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

Cooot
если дистанция меньше определённой константы на сервере (обычно 2).
то моб как-бы прыгнет к нам по ближе.
но только если моб движется.
Если-же моб закончил движение то мы двинемся к мобу.
Аватара пользователя
Cooot
Грамотный
Сообщения: 306
Зарегистрирован: Пт апр 25, 2008 8:02 am

Сообщение Cooot »

Пригодится данное объяснение просто при вводе поправки на дистанцию атаки.

Вот продолжение моих выкладок, далее после нахождения корней BD, надо выбрать положительный.

Изображение
Изображение
Аватара пользователя
Cooot
Грамотный
Сообщения: 306
Зарегистрирован: Пт апр 25, 2008 8:02 am

Сообщение Cooot »

Завершение нахождения точки пересечения.

Изображение
Изображение
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

Cooot
Хм... А ты уверен что там прямые углы? Я нет.
Аватара пользователя
Cooot
Грамотный
Сообщения: 306
Зарегистрирован: Пт апр 25, 2008 8:02 am

Сообщение Cooot »

Точки М и N были достроены изначально по такому условию как вспомогательные, посмотри более общий чертеж, это лишь его часть крупнее.
Изображение
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

Cooot
Ясна. спасибо. Просто как-то напрягло слово "Завершение".
Как Я понял, здесь нужна высокая точность, чего штатными средствами перла не добиться. Но если всунуть в XSTools реализацию на Сях, будет то что нужно.
Аватара пользователя
Cooot
Грамотный
Сообщения: 306
Зарегистрирован: Пт апр 25, 2008 8:02 am

Сообщение Cooot »

Я для себя как найду время попробую простую программу написать на Delphi, похожую на выложенную уже тут в теме, но с графическим простым выводом движения точек в процессе, чтобы проверить свои расчеты и правильно ввести учет дистанции атаки. Позже выложу, если что получится.
Изображение
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

Cooot
и так. сразу скажу. что поле должно быть 30 на 30.
скорость даётся так: количество мс на клетку (вроде как).
Аватара пользователя
Cooot
Грамотный
Сообщения: 306
Зарегистрирован: Пт апр 25, 2008 8:02 am

Сообщение Cooot »

Про поле учту, а вот кол-во миллисекунд на клетку хочу уточнить, получается не важно напрямую через клетки или по диагонали идет движение? Т.к. расстояние чисто видимое, то разное.

Добавлено: хотя догадался вроде, кол-во мс на клетку задается при начале движения каждый раз разное в зависимости от "угла" пересечения клеток и вычисляется на стороне сервера, высылая нам готовое значение?
Изображение
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

Cooot
В общем. Для большего понимания сути дела, рекомендую включить в коре дебаг пакетов, и вывод инфы о пакетах (те, что внутри).
таким образом, тебе станет известно как оно щитается, так-же рекомендую заглянуть в функцию которая щитает в которой точке моб (движущийся) находится в данный момент (она проста до безобразия).
Аватара пользователя
Cooot
Грамотный
Сообщения: 306
Зарегистрирован: Пт апр 25, 2008 8:02 am

Сообщение Cooot »

Попробую, как приду домой, откуда уже смогу запустить ОК на дебаг. Спасибо за уточнения.
Изображение
Аватара пользователя
Cooot
Грамотный
Сообщения: 306
Зарегистрирован: Пт апр 25, 2008 8:02 am

Сообщение Cooot »

Испытал вчера большие проблемы с домашним компьютером, поэтому пока лишь выложу продолжение расчетов с первым приблизительным учетом дистанции атаки упрощенным.

Зеленым отложена на отрезке AD дистанция атаки, собственно конец этого отрезка это и есть точка откуда можно пробовать атаковать.

Поэтому спрашиваю, что лучше рассчитать с учетом зеленой линии или более сложно с точным учетом того, что точка откуда атаковать будет немного иная, потому что красная линия > зеленая линия.

Может попробовать не усложнять, а при таких скоростях и небольшой коррекции после пакета отсылания атаки самим сервером не возникнет ошибок?

Изображение
Изображение
Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse »

Cooot
Моё мнение на щёт атаки. Просто подвинуть виртуально точку где мы стоим ближе к конечной точке моба на нужную дистанцию.
Аватара пользователя
Cooot
Грамотный
Сообщения: 306
Зарегистрирован: Пт апр 25, 2008 8:02 am

Сообщение Cooot »

Через подобие треугольников, уже зная координату точки D и дистанцию атаки (на чертеже длина отрезка YZ) находим координаты, с которой можно атаковать (Xатк, Yатк).

Изображение

Xатк = X - (X - X1)*AB/YZ

Yатк = Y - (Y - Y1)*AB/YZ

Осталось проверить формулы на деле, когда допишу программу (время найти пытаюсь на это) + уточню заодно в предыдущих расчетах выбор корня квадратного уравнения.
Изображение
Ответить