Страница 5 из 7
Добавлено: Ср июл 16, 2008 2:05 pm
Cooot
Отлично, одной проблемой меньше.
Еще вопрос. Что будет если послать пакет атаки на моба, например, когда расстояние между мобом и ботом 2 клетки, а дистанция атаки с которой бот может атаковать 1? Он пройдет одну клетку и атакует или ответит тем, что не может атаковать просто?
Добавлено: Ср июл 16, 2008 2:33 pm
kLabMouse
Cooot
если дистанция меньше определённой константы на сервере (обычно 2).
то моб как-бы прыгнет к нам по ближе.
но только если моб движется.
Если-же моб закончил движение то мы двинемся к мобу.
Добавлено: Ср июл 16, 2008 3:11 pm
Cooot
Пригодится данное объяснение просто при вводе поправки на дистанцию атаки.
Вот продолжение моих выкладок, далее после нахождения корней BD, надо выбрать положительный.

Добавлено: Чт июл 17, 2008 10:21 am
Cooot
Завершение нахождения точки пересечения.

Добавлено: Чт июл 17, 2008 10:29 am
kLabMouse
Cooot
Хм... А ты уверен что там прямые углы? Я нет.
Добавлено: Чт июл 17, 2008 10:39 am
Cooot
Точки М и N были достроены изначально по такому условию как вспомогательные, посмотри более общий чертеж, это лишь его часть крупнее.
Добавлено: Чт июл 17, 2008 10:42 am
kLabMouse
Cooot
Ясна. спасибо. Просто как-то напрягло слово "Завершение".
Как Я понял, здесь нужна высокая точность, чего штатными средствами перла не добиться. Но если всунуть в XSTools реализацию на Сях, будет то что нужно.
Добавлено: Чт июл 17, 2008 10:48 am
Cooot
Я для себя как найду время попробую простую программу написать на Delphi, похожую на выложенную уже тут в теме, но с графическим простым выводом движения точек в процессе, чтобы проверить свои расчеты и правильно ввести учет дистанции атаки. Позже выложу, если что получится.
Добавлено: Чт июл 17, 2008 10:52 am
kLabMouse
Cooot
и так. сразу скажу. что поле должно быть 30 на 30.
скорость даётся так: количество мс на клетку (вроде как).
Добавлено: Чт июл 17, 2008 11:01 am
Cooot
Про поле учту, а вот кол-во миллисекунд на клетку хочу уточнить, получается не важно напрямую через клетки или по диагонали идет движение? Т.к. расстояние чисто видимое, то разное.
Добавлено: хотя догадался вроде, кол-во мс на клетку задается при начале движения каждый раз разное в зависимости от "угла" пересечения клеток и вычисляется на стороне сервера, высылая нам готовое значение?
Добавлено: Чт июл 17, 2008 11:15 am
kLabMouse
Cooot
В общем. Для большего понимания сути дела, рекомендую включить в коре дебаг пакетов, и вывод инфы о пакетах (те, что внутри).
таким образом, тебе станет известно как оно щитается, так-же рекомендую заглянуть в функцию которая щитает в которой точке моб (движущийся) находится в данный момент (она проста до безобразия).
Добавлено: Чт июл 17, 2008 11:29 am
Cooot
Попробую, как приду домой, откуда уже смогу запустить ОК на дебаг. Спасибо за уточнения.
Добавлено: Пт июл 18, 2008 10:03 am
Cooot
Испытал вчера большие проблемы с домашним компьютером, поэтому пока лишь выложу продолжение расчетов с первым приблизительным учетом дистанции атаки упрощенным.
Зеленым отложена на отрезке AD дистанция атаки, собственно конец этого отрезка это и есть точка откуда можно пробовать атаковать.
Поэтому спрашиваю, что лучше рассчитать с учетом зеленой линии или более сложно с точным учетом того, что точка откуда атаковать будет немного иная, потому что красная линия > зеленая линия.
Может попробовать не усложнять, а при таких скоростях и небольшой коррекции после пакета отсылания атаки самим сервером не возникнет ошибок?

Добавлено: Пт июл 18, 2008 10:59 am
kLabMouse
Cooot
Моё мнение на щёт атаки. Просто подвинуть виртуально точку где мы стоим ближе к конечной точке моба на нужную дистанцию.
Добавлено: Пн июл 21, 2008 1:54 pm
Cooot
Через подобие треугольников, уже зная координату точки D и дистанцию атаки (на чертеже длина отрезка YZ) находим координаты, с которой можно атаковать (Xатк, Yатк).
Xатк = X - (X - X1)*AB/YZ
Yатк = Y - (Y - Y1)*AB/YZ
Осталось проверить формулы на деле, когда допишу программу (время найти пытаюсь на это) + уточню заодно в предыдущих расчетах выбор корня квадратного уравнения.