Перейти к содержанию

Сохранение из карты CE всех значений(Value) в txt.


Валерий

Рекомендуемые сообщения

Добрый день, друзья!
В Cheat Engine создана карта. Есть ли возможность сохранить значения полученных значений с карты куда-либо, например в txt?


CE позволяет выделить одну или несколько строк на карте, нажать ПКМ -> Копировать и руками вставить в txt. В таком случае, информация сохранится в виде xml структуры с многими полями, за исключением самого главного - значения.

[img=https://ibb.co/kXqZ8RX]

Если посмотреть окно CE, а именно то дочернее окно, в котором отображается карта, то Spy++ определяет его как большой объект List, отдельно значение вытащить не получается.
[
img=https://ibb.co/2MvYXsk]

Есть вариант держать все время открытым окно CE во время игры и распознавать "циферки" прям с экрана в режиме реального времени (распознавание объектов с экрана). Максимально компактно свернуть окно CE, отправить его, для примера, в правый край экрана, висит там и никому не мешает, с него происходит считывание значений. Способ более чем рабочий, но неудобный (игру не развернуть на весь экран).
[
img=https://ibb.co/R3bPCch]

Отсюда возникает вопрос, возможно ли какими-то инструментами Cheat Engine делать периодическую выгрузку значений с карты куда-нибудь в файл?
Может быть можно написать какой-то скрипт, который будет обращаться к карте, забирать оттуда значения и складывать в файл.
Может быть у разработчиков есть какой-то API, чтобы можно было обращаться к CE извне и получать в ответе необходимую информацию (которую обрабатывает подкапотная магия CE и "выплёвывает" в виде значений).
Может быть с помощью CE считывать память самого CE и вытягивать значения напрямую из памяти)))))

Любые идеи, критика, предложения приветствуются. 


 

Ссылка на комментарий
Поделиться на другие сайты

В СЕ есть LUA движок, который позволяет очень многое. В том числе, разные манипуляции с найдеными адресами, значениями в таблице и тому подобным. Всё, что тебе требуется, можно сделать с его помощью.

Ссылка на комментарий
Поделиться на другие сайты

Благодарю! 
LUA будет работать только внутри CE, но в состоянии ли он "выбросить" какие-то значения за пределы CE(сохранить в файл к примеру)?

Ссылка на комментарий
Поделиться на другие сайты

 

Спойлер
define(basaPlayer,GameAssembly.dll+4D55B7)
alloc(newmem,$1000)
registersymbol(basaPuzzlePlayer)
label(basaPuzzlePlayer)
label(code)
label(return)

newmem:
  mov [basaPuzzlePlayer],edi
code:
  mov edx,[edi+40]
  mov ebx,[edi+54]
  jmp return

basaPuzzlePlayer:
  db 0

basaPlayer:
  jmp newmem
  nop
return:
registersymbol(basaPlayer)

//LUA-скрипт
{$lua}
path = 'C://file.txt'
file = io.open(path, "a") 
file:write("Строка\n") 
file:close() 
[DISABLE]

basaPlayer:
  db 8B 57 40 8B 5F 54

unregistersymbol(basaPlayer)
unregistersymbol(basaPuzzlePlayer)
dealloc(newmem)

 


В строке
file:write("Какой-то текст\n") в файл записывается "Какой-то текст".
Как записать вместо текста значение адреса [basaPuzzlePlayer]? 
Далее планируется записать, для примера,  [basaPuzzlePlayer]+40 и сложнее [[basaPuzzlePlayer]+10] + 4C

Ссылка на комментарий
Поделиться на другие сайты

В 04.02.2022 в 11:46 AM, Валерий сказал:

CE позволяет выделить одну или несколько строк на карте, нажать ПКМ -> Копировать и руками вставить в txt. В таком случае, информация сохранится в виде xml структуры с многими полями, за исключением самого главного - значения.

 

 

копируй по другому . не пкм мыши , а Ctrl+C и Ctrl+V .  тгда значение то же копирует .

 

mZpo6Ji.jpg

 

смотри если  это копировать пкм то получиться  верхняя часть текста  на картинкн , а если Ctrl+C то нижняя .

Спойлер

MK757kp.jpg

 

 

Ссылка на комментарий
Поделиться на другие сайты

31 минуту назад, Alex2411 сказал:

 

 

копируй по другому . не пкм мыши , а Ctrl+C и Ctrl+V .  тгда значение то же копирует .

 

mZpo6Ji.jpg

 

смотри если  это копировать пкм то получиться  верхняя часть текста  на картинкн , а если Ctrl+C то нижняя .

MK757kp.jpg

 

Да, так работает, причем даже если выделить всю таблицу (Ctrl+A), затем скопировать в буфер обмена (Ctrl+C), и вставить (Ctrl+V). Все значения будут в теге LastState в параметре Value.
Если пойти данным путем, то вырисовываются две проблемы:
1. Обратиться к окну CE, пройти по дереву элементов на форме, добраться до дочернего элемента List (где лежит таблица), отправить в нее Message Click, затем сделать копипаст в буфер и вставить в файл.
Получится ли провернуть такое при свернутом CE?)
2. Распарсить структуру и вытащить все нужные Value.
 

Ссылка на комментарий
Поделиться на другие сайты

Записывать надо после того как будет получено значение, можно делать это в цикле в другом скрипте, или ещё как то. Что бы понять как записать посмотри CELua
Там тебе понадобятся getAddress что бы прочитать адрес метки, потом readPointer и прочие, там всё есть на страничке с описанием, можешь изучать и пробовать

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.