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

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

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

Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Еще насчет "а как это делает клиент". Клиент это делает хреново! Когда я играл руками, я всегда вручную наводился на цель, на глазок вычисляя упреждение, т.к. клиент ничего такого не делал.
(Единственное что клиент(?) делает отменно, это то, что он(?) умеет обходить препятствия. Вот это - круто.)
угол В прямой?
Конечно же нет!
1) Представь себе, что моб лишь чуть-чуть медленнее тебя, и вы стартуете из двух точек рядышком, в примерно одном направлении. В таком случае угол B будет очень острым.
2) Представь себе, что твое местонахождение почти совпадает с точкой, в которую идет моб. Тогда угол B, напротив, будет очень тупым.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Maksimilianoo
Энтузиаст
Сообщения: 100
Зарегистрирован: Вс фев 25, 2007 4:04 pm
Откуда: Сыктывкар

Сообщение Maksimilianoo »

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

Сообщение kLabMouse »

MFBeaST
На рисунке Я уже указал синусы каких углов есть. Самое главное, ето найти точку В (можно и просто длинну отрезка БВ) таким образом проведя прямую к точке В и преобразовав её в вектор, применив длинну АВ-Дистанция атаки мы получим реальную точку где мы уже сможем атаковать противника.
MFBeaST
Новичок
Сообщения: 9
Зарегистрирован: Ср май 16, 2007 11:48 am

Сообщение MFBeaST »

kLabMouse
ну, кхм, я уже излогал геом. соображения, но могу и по подробнее:
теорема синусов гласит:
sin A / len БВ = sin Б / len АВ = sin В / len АБ (как-то непривычно точки русскими буквами обозначать, ну да ладно)
у нас есть: sinA, sinБ, lenАБ
делаем следущее:
sinВ = sin ( 180 - arcsin(sinA) - arcsin(sinБ) );
lenАВ = lenАБ * sinБ / sinВ;
lenБВ = lenАБ * sinA / sinВ;
определили длины, дальше ж с координатами:
есть: xA, yA, xБ, yБ, xД, yД (Д - неотмеченная точка на твоём рисунке - куда движется моб), attackDist
пишем:
lenБД = sqrt ( sqr(xБ-xД) + sqr (yБ-yД) ); - определяем длинну БД если ещё нету
xВ = xБ + (xД-xБ)*(lenБВ)/(lenБД);
yВ = yБ + (yД-yБ)*(lenБВ)/(lenБД);
.. это на основании теоремы о пропорциональности отрезков образованных пересечением паралельными прямыми ..
ну и осталось найти координаты точки атаки (обозначим её т.Е):
lenАЕ = lenАВ - attackDist;
и аналогично:
xЕ = xА + (xВ-xА)*(lenАЕ)/(lenАВ);
yЕ = yА + (yВ-yА)*(lenАЕ)/(lenАВ);

вот, xЕ, yЕ - координаты точки атаки.

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

Сообщение kLabMouse »

MFBeaST
sinА = sinБ (speed_моба/speed_наш)
MFBeaST
Новичок
Сообщения: 9
Зарегистрирован: Ср май 16, 2007 11:48 am

Сообщение MFBeaST »

kLabMouse
интересный ход, теперь всё ясно =)
LofaK
Начинающий
Сообщения: 31
Зарегистрирован: Вт фев 27, 2007 6:19 am

Сообщение LofaK »

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

Сообщение kLabMouse »

LofaK
Хреновая. Из розряда ЗДЕЛАЙ САМ.
Ибо не все монстры агресоры. На разных серваках некотороые монстры превращаются с агресоров в неагресоры и наоборот.

Лучше всё-таки хорошенько напрячь свой мозг. И впомнить тригонометрию и геометрию + физику за 10-11 клас.
Asacura
Грамотный
Сообщения: 403
Зарегистрирован: Сб фев 03, 2007 11:07 pm
Откуда: Эстония;)
Контактная информация:

Сообщение Asacura »

А куда Route.pm ,в плагины?
Изображение
Нет добра и зла,есть разные мнения, разные противостоящие стороны. :)
Аватара пользователя
Kissa2k
Профессионал
Сообщения: 1304
Зарегистрирован: Пн дек 04, 2006 8:33 pm

Сообщение Kissa2k »

kLabMouse писал(а):Лучше всё-таки хорошенько напрячь свой мозг. И впомнить тригонометрию и геометрию + физику за 10-11 клас.
Фигасе, значит кодеры ОК еще не доросли до 10 класса или прогуливали школу, чтобы сделать это? :lol:
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Имхо оно там нафиг не надо. Пишу в 10й раз. Для поля 30х30 (зона видимости) никакой тригонометрии не нужно! Это не та точность.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
excellent
Энтузиаст
Сообщения: 66
Зарегистрирован: Ср янв 03, 2007 4:20 am

Сообщение excellent »

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

Сообщение kLabMouse »

excellent
Дык. Ты видимо замечал, что когда щёлкнул бить моба, то чар не будет именно в том месте, где ты щёлкнул на моба.
ТЕ, Клиент вычисляет самое правильное место для встречи.
Ещё может замечал, что бывает чар уходит за мобом сам, если тот продолжает движение.
IDDQD
Энтузиаст
Сообщения: 95
Зарегистрирован: Пн дек 24, 2007 2:33 am

Сообщение IDDQD »

kLabMouse писал(а):Клиент вычисляет самое правильное место для встречи.
И двигается как по рельсам.
Почему бы просто не отключать пьяную походку при расстоянии до цели меньше значения N, а при расстоянии больше N имитировать погоню за мобом (вот здесь и понадобится n-миллисекундная задержка, которую предлагал pJ)
Asacura
Грамотный
Сообщения: 403
Зарегистрирован: Сб фев 03, 2007 11:07 pm
Откуда: Эстония;)
Контактная информация:

Сообщение Asacura »

гг,куда это,в папку плагинс как плагин сохранять,или в src/Task/Route.pm добавлять?
Изображение
Нет добра и зла,есть разные мнения, разные противостоящие стороны. :)
Ответить