PDA

Просмотр полной версии : Алгоритм.


goodvin1709
03.10.2012, 23:55
Приветствую дорогие кодеры хотел спросить каким алгоритмом можно обойти препятствия(камень ,стены ,деревья) в своем пакетном боте.
1.Бот берет таргет.
2.И бежит к нему и начинает его бить но если между ними стоит (стенка ,дерево ,камень) он к нему подходит в притык и стоит.
Я видел красиво волкер обходит препятствия но каким алгоритмом в волкере сделано не знаю,подскажите пожалуйста.
:confused::confused::confused:

Zergatul
04.10.2012, 02:38
Первое что пришло в голову:
1. Если уперся в преграду, то
2. Отходим на некоторое расстояние назад.
3. По перпендикуляру отходим в любую из сторон на какое-то расстояние.
4. Если отошли и не уперлись опять в преграду, бежим дальше к таргету.
5. Если отошли и уперлись в другую преграду, хм, попробовать в другую сторогу, попробовать отойти назад на растояние побольше.

Noise
04.10.2012, 04:00
На самом деле реально обходить ботом ничего и не надо, на сервере есть pathnode который и создает путь персонажу до конечной точки.
Тут главный косяк в том, что если просто бежать к цели через action чар не будет искать себе путь, он будет просто долбить головой камни.
А по сему MoveToLocation тебе по помощь :)

Имхо самый оптимальный вариант это:

Ищем моба
Запоминаем моба
Бежим по координатном моба (MoveToLocation) попутно проверяем расстояние до него же
Как только расстояние подходит к минимальному только тогда шлем action


Данный вариант не оградит тебя полностью от застревания, но существенно понизит его шанс.

P.S. Walker 95% использует для поиска модифицированный A*, но имхо для скриптов лучше использовать что то попроще, типа того что я описал.

alexteam
04.10.2012, 04:10
в валкере есть поиск пути ? 0_0

Noise
04.10.2012, 04:17
давно им не пользовался, но на сколько я помню, что то похожее есть :)

mikser
04.10.2012, 15:34
В валкере нету обхода препятсвий

wimax
07.10.2012, 11:22
есть варьянт с загрузкой гео даты и поиском препятствии

goodvin1709
07.10.2012, 11:37
да думаю сделать через геодату с загрузкой вершин после их сунуть в матрицу и ее транспортировать так что бы мои координаты были А11 а конечная точка Аmn и после по волновому алгоритму искать путь.

wimax
08.10.2012, 03:43
ток смотри чтоб комп сильно не нагружало) делай подгрузку по частям то есть разбей гео на части ну как она и идет в принципе в клиенте

goodvin1709
08.10.2012, 10:13
это самое тежолое найти нужный кусок гео зная свои кординаты

Yegor
08.10.2012, 10:19
goodvin1709, береш исходники l2 java сервера и передираешь реализацию.

goodvin1709
08.10.2012, 10:44
подскажы какой именно кусок кода и как вобще считать саму гео там же нужно писать декодер формата

wimax
08.10.2012, 18:50
неа)) подсказка смотри гео ява серверов или самого клиента она разбита вся по квадратам
чтоб проверить какой клиент что обозначает зайди в клиенте в дев мод и поставь нужный тебе квадрат допустим начни с 1-го 15_20.unr и т.д они все идут по очереди если не ошибаюсь

supernewbie
08.10.2012, 19:27
goodvin1709, gameserver/geodata/GeoEngine.java

goodvin1709
08.10.2012, 20:35
ну я понял что есть world.max.x, world.max.y,world.min.x,world.min.y, и она розбита на блоки методом проверки или деления можно определить свой квадрат,а потом брать максимальные и минимальные кординаты своего блока и себя в нем находить.

wimax
09.10.2012, 01:27
вообще если тебе z не надо то можно по пробовать карту волкера использовать допусти все стены в черный цвет координаты твои допустим
x=100; y=-100; идти нам надо в x=140; y=-100; далее анализируем полосу препятствий в данном примере это просто x от 100 до 140 берем картинку(карту) в данных координатах ищем черный цвет не нашли все тип топ нашли то начинаем поиск путей обхода тут уже по трудней т.к надо смотреть кудой будет ближе идти либо лево либо право ну тут можно применить технику которая там во 2 посте или в 3 )
вот только хз как быстро это дело обрабатывается ) а да чуть не забыл вся гео разбита разбита по оси z а потом по оси x и y думаю облегчит задачу)

Добавлено через 6 минут
l2-community.com/showthread.php?t=1661
посмотри что там J-Fobos намалякал)

Pinko
10.10.2012, 14:13
есть тупые а я еще тупее
скажите а можно с карты какая в клиенте
взять информацию для скрипта

goodvin1709
10.10.2012, 19:33
Пойми Клиент(API) скрипт для пх(на основе пакетов) т.е тебе нужно работать с API клиента