Что нового

[Математика] Вопрос о расчете координат на игровых картах

ak40u

Знающий
Сообщения
33
Репутация
7
sampleXY.jpg
На картинке 5 обьектов.
Утки - мобы, до которых надо дойти и дать в клюв
Кленовый лист - непроходимый объект, который нужно обойти по соседним проходимым координатам вслучае если игрок в него упрется.
Квадрат - это игрок.

У нас есть игровой клиент с нестандартными контролами и абстрактный бот, взаимодействующий с игровым клиентом посредством эмуляции действий пользователя(send, mouseclick), тессеракта и nomadmemory.
Есть неплохой комп i5,4gb ddr3 озу.

Требуемая функциональность:
1. Игрок-квадрат бьет уток

Реализация:
1. Клиент от сервера получает координаты всех объектов в радиусе N от игрока
2. Мы считываем эти координаты
3. Обрабатываем координаты: есть 3 утки, для каждой утки мы считаем расстояние в до героя( точно не помню, но кажется формула вида (x1­ – x2) + (y1 – y2) )
4. Выбираем самую близкую утку и топаем на соседнюю точку от нее, пример: ближайшая утка на координатах 60,40, квадрат перемещается на 59,40.
5. Бьем утку
Во время выполнения скрипта постоянно чекается наличие Кленового листа рядом с квадратом, если Квадрат находится на соседней координате от листа, он перемещается на стартовую точку или в любое другое место.

Вопросы:
1. как считать координаты игрока, уток и кленового листа? Интересует вариант с nomadmemory. Если это возможно, то в каком виде координаты хранятся в памяти(на примере любой реальной игры)?
2. Из вариантов передвижения Игрока к утке вижу: 1. mouseclick по области экрана(плохой вариант). 2. Есть предположение что через память можно воздействовать на игровой клиент, пример: если в ячейку по адресу 332049CE записать 927311, то клиент получит команду переместить игрока (id92), на координаты 73,11. Что думаете об этой теории?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Да тут миллион раз это обсасывалось под различными соусами.
 

asa12

Новичок
Сообщения
66
Репутация
3
ak40u сказал(а):
Интересует вариант с nomadmemory. Если это возможно, то в каком виде координаты хранятся в памяти(на примере любой реальной игры)?
2. Из вариантов передвижения Игрока к утке вижу: 1. mouseclick по области экрана(плохой вариант). 2. Есть предположение что через память можно воздействовать на игровой клиент, пример: если в ячейку по адресу 332049CE записать 927311, то клиент получит команду переместить игрока (id92), на координаты 73,11. Что думаете об этой теории?
То, что выделено - делать не надо. (или скажем можно делать тем, кто знает чем это грозит)
Используй для команд, интерфейс игры.(mouseclick в твоём примере)
 

Tricker

Новичок
Сообщения
1
Репутация
0
Было Бы очень хорошо чтобы все разжевали в этой теме! Надеюсь найдутся люди!
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Изменение значения ячейки памяти не принесет никакой пользы если только клиент не прослушивает эту ячекйу на предмет команды к перемещению. А он так не делает.
 

asa12

Новичок
Сообщения
66
Репутация
3
Belfigor сказал(а):
Изменение значения ячейки памяти не принесет никакой пользы если только клиент не прослушивает эту ячекйу на предмет команды к перемещению. А он так не делает.
Это не делают онлайн игры, а устанавливаемые на комп для одного пользователя делают. (блин как описать не знаю)
Типа сервер установлен на твоём ПК. Есть целый сегмент программ накруток золота, существ и т.д.

не понимаю в чем проблема. Логика описана автором.
Код:
MouseClick("right", 47, 357) ;выделить в точке по правому клику
Sleep(800)
MouseClick("left",112+8, 360+8); по левому
или
$cvet_xy=PixelSearch(500, 30, 1280, 1024, 0xA9A907, 10)
If @error=0 Then ; значение цвета найдено
		
		MouseClick( "left", $cvet_xy[0], $cvet_xy[1], 1,11 ); кликаем по найденному цвету
		Sleep(291)
Endif

Ну и так далее. Почитай темы для новичков, например
http://autoit-script.ru/index.php/topic,116.0.html
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
asa12 сказал(а):
Belfigor сказал(а):
Изменение значения ячейки памяти не принесет никакой пользы если только клиент не прослушивает эту ячекйу на предмет команды к перемещению. А он так не делает.
Это не делают онлайн игры, а устанавливаемые на комп для одного пользователя делают. (блин как описать не знаю) Типа сервер установлен на твоём ПК. Есть целый сегмент программ накруток золота, существ и т.д. не понимаю в чем проблема.
Ну мы же как я понял про онлайн игры говорим с типом взаимодействия "клиент - сервер"
 
Автор
A

ak40u

Знающий
Сообщения
33
Репутация
7
asa12, взаимодействие с интерфейсом игры посредством mouseclick и send очень не стабильно, на него нельзя положиться. Меня интересует принцип работы таких ботов, как L2Walker ingame или l2net для Lineage2, которые не трогая протокол управляют клиентом, при этом физически ни клава ни мышь не используются ботом,т.е. можно свернуть клиент и нормально работать за компом. Вопрос интересует не для ботоводства, а для автоматизации тестирования игры, я так думаю что разницы с ботом будет не много, кроме как в тестах прибавится сравнение и анализ результата.


Добавлено:
Сообщение автоматически объединено:

Изменение значения ячейки памяти не принесет никакой пользы если только клиент не прослушивает эту ячекйу на предмет команды к перемещению. А он так не делает.

Разве не все команды ui сначала записываются в память, а потом считываются и выполняются?
 
Верх