Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Волновой алгоритм поиска пути. Долго ишет путь...

Страниц (2): [1] 2 »
 

1. Nexur - 03 Февраля, 2014 - 09:34:49 - перейти к сообщению
Написал функцию поиска пути от точна А к точке Б игрока для игры Warspear. Поле[28][28] при тесте очень долго ищет этот путь. Писал в C# там работает все точно ищет доли секунды. В чем проблема?
CODE:
function MoveTrue(int t1, int t2)
{
Kx = t1; Ky = t2; //Конечная точка пути
int i, j, x, y;
int findZ; // метка нашли путь или нет
Nh = 1; // Номер хода
i31:
i =0; i30: if (i<28)
{
j = 0; j30: if (j<28)
{
V[i][j] = Pole[i][j] * -1; // Переносим в временный массив основное поле
j++; goto j30;
}
i++; goto i30;
}
V[Xr][Yr] = 1; //позиция игрока на карте
move10:
findZ = 0;
x =0; x10: if (x<28)
{
y = 0; y10:
if (y<28)
{
if (V[x][y] == Nh)
{
i =0; i40: if (i<4)
{
if ((x + dx[i] < 0) || (x + dx[i] == 28)) { i++; goto i40; }
if ((y + dy[i] < 0) || (y + dy[i] == 28)) { i++; goto i40; }

if (V[x + dx[i]][y + dy[i]] == 0 )
{
findZ = 1;
V[x + dx[i]][y + dy[i]] = Nh + 1;
if ((x + dx[i]) == Kx)
{
if ((y + dy[i]) == Ky)
{
// messagebox("Find Move");
return 1;
}
}
}

i++; goto i40;
}
}
y++; goto y10;
}
x++; goto x10;
}

Nh++;
if (findZ == 1) goto move10;
//messagebox("MoveTrue 000");
return 0;
}
2. Kibor - 03 Февраля, 2014 - 09:55:19 - перейти к сообщению
В том что в С Вы создавали готовый исполняемый файл в котором находятся команды процессору.
Кибор работает совсем по другому. Его быстродействие нельзя сравнивать с компилируемыми программами. На высокое быстродействие могут претендовать только встроенные функции из которых как из кирпичей строятся необходимые алгоритмы.
Я постоянно расширяю возможности программы такими модулями и добавлю поиск кратчайшего пути к ним.

Сори за фтопик Зачем в варспе поиск пути? Сама игра же отвечает за это
3. Nexur - 03 Февраля, 2014 - 10:02:27 - перейти к сообщению
Хочеться чтобы перс сам выбирал куда ему бежать. В магазин продавать лут или к мобам которых надо убивать. Убили 20 мобов 1 типа побежали в другую локацию к другим и тд... Улыбка Сама игра находит путь только на экране. Буду выходить из положения запуская из консоли испольняющий файл написанный в с и записывать путь в файл а в кибере уже из него считывать куда бежать.
4. Kibor - 03 Февраля, 2014 - 10:10:04 - перейти к сообщению
Если уж пишете для варспы бот, то можете работать с памятью игры. В Кибор есть возможность. И сама игра легкая для написания такого бота.
Я начал писать бота для нее в Кибор через память, фармил мобов и боссов с первым агром. Плюс читерские штучки. Работал только через процесс.
Только никак не мог закончить все что то отвлекало.
5. Nexur - 03 Февраля, 2014 - 12:22:24 - перейти к сообщению
Изучал работу с памятью Cheat Engine. Нашел хп, ник. Дальше непойму как искать мобов положение в локе. Кто разбирался в этом? Подскажите как да что) Если есть наработки по варспе могу приобрести Улыбка
6. Kibor - 03 Февраля, 2014 - 12:46:59 - перейти к сообщению
Данные о мобе возле ника его
Ищите ник.
Он так записан в варспе, после каждой буквы стоит 0.
(Добавление)
Или ошибаюсь.. Может не 0. Не помню

Можете найти с помощью такого кода. findmemorymask

CODE:
char poisk[5];
char poiskmask[5];
int adr[99999];
poisk[0]='n'; poisk[2]='i'; poisk[4]='k';
poiskmask[0]=formatic(1); poiskmask[1]=formatic(0); poiskmask[2]=formatic(1); poiskmask[3]=formatic(0); poiskmask[4]=formatic(1);

win w=window ("Warspear Online", "Warspear", -1);
int prc=openprocess(w);

int k=findmemorymask (-1, #poisk[0], 5, #adr[0], 0, #poiskmask[0], 100, prc);

int n=0;
s: if (n<k)
{
messagebox (adr[n]);
n++;
goto s;
}
7. obm - 04 Февраля, 2014 - 13:44:49 - перейти к сообщению
Какое-то высокоуровневое программирование)
Можно подобные методы использовать в написании бота для аукциона архейджа))? Все руки не доходят добить то что делал.
8. Kibor - 04 Февраля, 2014 - 13:52:25 - перейти к сообщению
 obm пишет:
Можно подобные методы использовать в написании бота для аукциона архейджа

Не... Тут надо изучать игру с помощью Cheat Engine. Потом исходя из полученных данных уже получать данные с памяти с помощью специальных в Кибор функций.
9. obm - 05 Февраля, 2014 - 05:45:43 - перейти к сообщению
 Kibor пишет:
Не... Тут надо изучать игру с помощью Cheat Engine. Потом исходя из полученных данных уже получать данные с памяти с помощью специальных в Кибор функций.
хм, то есть теоретически, я могу попробовать "выкусить" инфу о таймере прямо из памяти, если она, конечно, там есть? сегодня качну этот чит энжн

и еще вопрос по поиску пути - в архейдже нужно провести чара на боте с одной локи в другую и сдать груз, путь большой, мин 20-30 вручную. Я думал, как можно ориентироваться по графике - никаких идей, даже с открытой картой. Ваше мнение, возможно ли в киборе реализовать подобный алгоритм перемещения и ориентировки персонажа?
10. Nexur - 05 Февраля, 2014 - 09:44:49 - перейти к сообщению
Где можно найти хоть какой учебник по Cheat Engine на русском? Все что нашел в гугле это увеличение денег да хп и тп и тд. По работе с персом и окружающими предметами ненашел Недовольство, огорчение. Сам так и не понял толком. findmemorymask с кодом выше выдает ошибку. Мож надо начинать изучать не Cheat Engine а работу программ с памятью? Не понял
(Добавление)
 Цитата:
Я думал, как можно ориентироваться по графике - никаких идей, даже с открытой картой.
Мож по пути искать ориентиры в ландшафте которые не меняются? С игрой не знаком. И контролировать путь по значку персонажа на карте?

Powered by ExBB FM 1.0 Final