Что нового

[Drakensang-Online] Бот для игры

Vlc

Новичок
Сообщения
2
Репутация
0
Как обычно, самым стандартным образом.
Дело в том, что у меня не высвечиваются адреса с искомыми значениями, не могу понять что делаю не правильно, в строке поиска CE указываю значение, но адресов нет, пробовал искать хп и очки опыта. Проблем с типом данных быть не должно, когда не находил по предполагаемому типу, пробовал все возможные. Где-то прочитал про возможное наличие защиты на игре, но мне до сих пор кажется, что проблема в моих неверных действиях.
 

eralex

Знающий
Сообщения
63
Репутация
5
Дело в том, что у меня не высвечиваются адреса с искомыми значениями, не могу понять что делаю не правильно, в строке поиска CE указываю значение, но адресов нет, пробовал искать хп и очки опыта. Проблем с типом данных быть не должно, когда не находил по предполагаемому типу, пробовал все возможные. Где-то прочитал про возможное наличие защиты на игре, но мне до сих пор кажется, что проблема в моих неверных действиях.
Никакой проблемы в нахождении нет - стандартный алгоритм в СЕ как и в других играх. И у игры нет никакой защиты.
 
Автор
sebun

sebun

Знающий
Сообщения
81
Репутация
5
А как производили поиск нужных адресов? Работая с CE у меня не вышло найти необходимые значения, я так понял они хранятся на сервере.
Вообще хотелось бы уточнить такой момент: во первых, вся работа игры DS online проводится на сервере, и именно там хранятся все значения. Они подгружаются с сервера в клиент исключительно для корректного отображения игрового процесса. Поэтому просто взять и поменять их, как в обычных PC-играх, не получиться. Точнее поменять то можно, но на сервере значения останутся прежними. Во вторых, есть различные средства защиты данных в памяти. Некоторые простые, и позволяют найти значение по указателю, некоторые сложные, с шифрованием. Я не знаю, используется ли сейчас там какая то защита, но предполагаю, что нет - у них с момента запуска игры мало что поменялось. Если вопрос задан в целях разработки бота, то это правильный путь - найти нужные значения в памяти, а не читать их с экрана.
Сообщение автоматически объединено:

Доброго времени суток! Несколько лет не занимался программированием на AutoIT, и вот ностальгия вернула обратно в игру. Захотелось реализовать сбор ресурсов вокруг персонажа. Поскольку все ранние наработки были утеряны, начал писать с нуля и столкнулся с неожиданной проблемой, которую не наблюдал в Windows 7. В Windows 10 как то странно задаются координаты окна и разрешение. На англоязычном форуме эта проблема наглядно описана. Суть ее в следующем: если я выполняю код
Код:
WinMove($hWnd,'',10,10,740,550)
и потом запрашиваю координаты и положение рабочей области, получаю неверные значения. Я по прежнему придерживаюсь мнения, что бот не должен извлекать данные из памяти, т.к. с каждым обновлением есть вероятность изменения адресов. Однако недавнее обновление всего графического интерфейса показало, что и машинное зрение в любой момент может потребоваться адаптировать. Сейчас я пытаюсь написать универсальную функцию, которая на любой версии Windows сможет дать мне корректные координаты рабочей области. К примеру, на приложенном скрине видно, что размер окна 740х550, в то время как по факту оно 907х641 (измерял в фотошопе). Так же неправильные значения я получаю от ControlGetPos и WinGetPos. Возможно, положение окна зависит от выбранной темы оформления. Буду благодарен, если поясните ситуацию или дадите ссылку на готового бота со схожим функционалом, где реализовано точное определение положения рабочей области.
 

Вложения

  • Screenshot_1.png
    Screenshot_1.png
    104.3 КБ · Просмотры: 10
Последнее редактирование:

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
В Windows 10 как то странно задаются координаты окна и разрешение
Подозреваю, масштабирование экрана виновато. Установите масштабирование в 100% или добавьте в начало скрипта
Код:
DllCall("User32.dll", "bool", "SetProcessDPIAware")


На англоязычном форуме эта проблема наглядно описана
Это другая "проблема". На Win10 у окна тоже есть рамка. Только она полностью прозрачная. Поэтому и видна полоска рабочего стола при координатах окна 0,0.
 
Автор
sebun

sebun

Знающий
Сообщения
81
Репутация
5
Подозреваю, масштабирование экрана виновато. Установите масштабирование в 100% или добавьте в начало скрипта
Вставил строчку, теперь значения более-менее близки к реальным, но не те. Не знаю, что вы имели ввиду под масштабированием. Я запускаю игру и скрипт на ноутбуке разрешением 1920 на 1080 точек, делаю скрин и рассматриваю его в фотошопе. Мне нужно точно позиционировать мышь и задавать размеры областей для FastFind. Координаты задаются относительно окна, но я хочу знать его точный размер. WinGetPos показывает 908х550, ControlGetPos показывает 890х503, а фотошопом померил - 890х503...Гм... А задано было
Код:
WinMove($hWnd,'',10,10,740,550)
 
Верх