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

[Cheat Engine] Как лучше сделать трейнер на считку/запись из адреса?


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

1 час назад, Garik66 сказал:

Но мы сейчас не будет с тобой писать полностью трейнер.

А помнишь когда-то давно говорил, если что покажешь как разные мелочи в трейнерах делать :)

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

4 минуты назад, Razi сказал:

А помнишь когда-то давно говорил, если что покажешь как разные мелочи в трейнерах делать :)

Эх а я как дурак сам все искал, читал и пробовал :( 

 

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

6 часов назад, Razi сказал:

А помнишь когда-то давно говорил, если что покажешь как разные мелочи в трейнерах делать :)

Я такого не писал - не мог, так как я не знаю LUA (как и других ЯП :wacko:. Вот об этом я тебе точно писал и в ЛС и в топиках) и трейнеров не пишу (пишу таблицы), но я помогал некоторым ребятам, лазая по Гуглу и нашему форуму, когда у меня было время. Так что можешь тоже самое сделать - информации предостаточно. Я мог только написать,  что нужно собрать все необходимые скрипты в одном топике - вот это мог. Я пытался такое сделать - собирал опции трейнера для таблицы СЕ на примере табличка для Ведьмака 3.

 

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

20 часов назад, Razi сказал:

1) Запись происходит при событии OnChange. Не будет ли происходить запись дополнительно, когда в игре изменится значение в этом адресе, потому что тогда по идее сработает наше событие OnChange в CEEdit1?

2) Вообще в идеале хотелось бы сделать считку/запись также как в Artmoney. Там запись как-то реализована при выходе из поля ввода и после этого происходит сразу считывание. Смотрел в Artmoney: При входе в поле ввода (по второму клику) - считывание останавливается. При выходе происходит запись в адрес и после записи сразу считывание.  Непонятно как они это реализовали и как сделать также в текстбоксе CEEdit1?

3) И выходит если таких текстбоксов CEEdit1 нужно 150 штук, тогда для каждого нужно будет писать такой код? Подсказали, нужно делать через цикл считывание? А для записи в адрес, тогда нужно отдельно писать код для каждого Editbox получается.

 

Если Cheat Engine не важен, можно быстрее сделать такие таблицы в готовой среде разработки.

Такие штуки можно сначала на Дельфи7 (или бесплатном Lazarus) сделать, потом на CE Lua переходить.

А если на Дельфи понравится, то на нем можно делать трейнеры. Между прочим там есть готовые компоненты таблицы.

Скрытый текст

lazarus_undocked.png

 

1. В окне Lua можно ставить брейкпоинты. Провести отладку и узнать как и что работает не так.

Т.е. окно Lua консоли, которое  вызывается из окна отладчика CE. Там CE код можно написать, поставить бряки и выполнить. Также можно через print() логать любые участки кода.

2. Событие выхода из поля Edit есть. Его можно использовать для записи. Потом в функции тика таймера ждешь, пока значение не запишется (1 секунды к примеру), потом там же в функции таймера читаешь из памяти в визуальный компонент.

3. Если бы я делал эту задачу я бы попробовал все способы начиная от 150-ти эдитов выставленных программно, или 150 label-ов и 1-го Edita- который подставлять в место label,  до радикального способа —рисования таблицы Lua скриптами.

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

1 час назад, MasterGH сказал:

2. Событие выхода из поля Edit есть. Его можно использовать для записи. Потом в функции тика таймера ждешь, пока значение не запишется (1 секунды к примеру), потом там же в функции таймера читаешь из памяти в визуальный компонент.

Оно есть но я вот не пойму ведь фокус не теряет до тех пор пока бы не войдет в другой объект ( не возьмет в фокус ). В гугле поискал но что-то не нашел как убрать фокус.
Будем пытаться понимать T_T. 
SetFocus() - установит фокус

Конечно можно просто перекидывать фокус на другой компонент но что-то не очень :(

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

На форуму перекинуть с edit-a не получилось через SetFocus() .

Если пустая форма и Edit на ней, то у меня вышло убрать фокус так.

Скрыть и показать Edit, что практически не заметно глазу.

Убрать выделение текста

 

Скрытый текст

-- Событие на едит
function CEEdit1Exit(sender)
  print("Вышел")
end
// Событие на внешнюю область
function FormClick(sender)
  UDF1.CEEdit1.Visible = false
  UDF1.CEEdit1.Visible = true
  UDF1.CEEdit1.SelLength = 0
end

 

 

16 минут назад, ReWanet сказал:

Конечно можно просто перекидывать фокус на другой компонент но что-то не очень :(

Можно искать пути решения и выбрать подходящий. В самом крайнем случае это ассемблерные правки в самом CE, когда Lua код не работает как надо.  В этот момент у многих может быть желание отказаться от Cheat Engine.

 

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

1 минуту назад, MasterGH сказал:

На форуму перекинуть с edit-a не получилось через SetFocus() .

Я просто фокус на панель ставил ( TPanel ).

 

2 минуты назад, MasterGH сказал:

Скрыть и показать Edit, что практически не заметно глазу.

Убрать выделение текста

Ну это понятно и самое первое что в голову приходит )

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

В 14.02.2018 в 04:56, Garik66 сказал:

трейнеров не пишу (пишу таблицы), но я помогал некоторым ребятам, лазая по Гуглу и нашему форуму, когда у меня было время. Так что можешь тоже самое сделать - информации предостаточно.

Вообще-то я пошутил. Тогда речь шла о том, что нужно было в трейнерах сделать кликабельную ссылку на gamehacklab, а тогда я говорил что ни разу не пробовал создавать трейнер, а ты сказал, что если что, поможешь с этим или научишь, не помню точно слово. А вообще по поводу трейнеров, тебе ничего не надо делать, потому что достаточно ссылки на одно из твоих видео, потому что в видео многое рассказываешь и показываешь. В общем хочу сказать, что часто гуглю или спрашиваю и если не нахожу ответов, тогда при необходимости создаю тему.

 

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

Может знаете как менять цвет элемента PageControl? Он только белого цвета и не меняется. Даже если на него положить панель у нее тоже белый цвет и меняться не хочет. На скриншоте элемент выделен.

Спойлер

2Cx2k.jpg

 

В 14.02.2018 в 14:31, MasterGH сказал:

Если бы я делал эту задачу я бы попробовал все способы начиная от 150-ти эдитов выставленных программно, или 150 label-ов и 1-го Edita- который подставлять в место label,

Попробуем пока в конструкторе элементов CE поместить эти 150 editbox'ов на форму.

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

41 минуту назад, Razi сказал:

Может знаете как менять цвет элемента PageControl?

Он вроде не меняется, но можно изменять цвет CE панели при активации той или иной вкладки.

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

34 минуты назад, kiwipapayamongoose сказал:

можно изменять цвет CE панели при активации той или иной вкладки.

Общей панели? Или панель(и)  которая(ые) находится внутри  вкладок? если мы их туда предварительно положим конечно. Но, если положить панель внутри вкладки, тогда их цвет должен меняться, но не хочет.

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

13 часов назад, Razi сказал:

Общей панели?

Общей, я не смог туда засунуть отдельные панели для каждой вкладки, может какая хитрость есть.

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

Можно на TabSheet1 положить CEPanel1, растянув её по всей площади TabSheet1, а на CEPanel1 положить CEPanel2, растянув её по всей площади CEPanel1, затем изменить цвет CEPanel2.

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

12 минут назад, Antonshka сказал:

Можно на TabSheet1 положить CEPanel1, растянув её по всей площади TabSheet1, а на CEPanel1 положить CEPanel2, растянув её по всей площади CEPanel1, затем изменить цвет CEPanel2.

Зачем добавлять в панель еще одну панель когда можно у первой панели сменить цвет?

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

17 часов назад, Razi сказал:

Может знаете как менять цвет элемента PageControl?

 

Пожалуй, это сделать не просто. Скорее всего, через ассемблерные инструкции в процессе самого CE и создание потока, чтобы выполнить их. Можно дизассемблировать этот пример с Дельфи7 и посмотреть как API вызывается в отладочном коде и попытаться сделать тоже самое ассемблерными вставками. Можно поискать примеры на Лазаре, на нем написан последний CE. Можно поискать пример просто по WinAPI.

 

Если очень нужен визуальный стиль, то всегда есть последний вариант, о котором я писал — рисовать свою таблицу через "Canvas Class", Brush, Pen, Font, line, lineTo, rect, fillRect, textOut... Все как в стандартном рисовании на Дельфи, или Лазаре. Можно будет сделать практически любую таблицу. У меня есть пример рисования в репозитории (искать строки с "Canvas")

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

1 час назад, ReWanet сказал:

Зачем добавлять в панель еще одну панель когда можно у первой панели сменить цвет?

Такова особенность CE, при работе с TabSheet.

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

Цвет вкладок менять можно: добавив в середину вкладки панель, изменив ее цвет, и нажав ctrl+C и ctrl+V. Но менять цвет панели уже нельзя будет. И самое главное лейблы помещаемые на эту панель станут невидимыми.

ReWanet  Если панель положить не в середину вкладки, а снаружи вкладки, тогда цвет панели меняется, но панель будет находится поверх вкладок и при переключении вкладок,эта панель будет перекрывать собой все вкладки.

21 час назад, MasterGH сказал:

Пожалуй, это сделать не просто. Скорее всего, через ассемблерные инструкции в процессе самого CE и создание потока, чтобы выполнить их. Можно дизассемблировать этот пример с Дельфи7 и посмотреть как API вызывается в отладочном коде и попытаться сделать тоже самое ассемблерными вставками.

 

Это уже слишком много хлопот для того чтоб изменить только цвет. Хотя белый фон на вкладках, совсем не подходит.

 

 

В 14.02.2018 в 14:31, MasterGH сказал:

Если Cheat Engine не важен, можно быстрее сделать такие таблицы в готовой среде разработки.

Такие штуки можно сначала на Дельфи7 (или бесплатном Lazarus) сделать, потом на CE Lua переходить.

А если на Дельфи понравится, то на нем можно делать трейнеры. Между прочим там есть готовые компоненты таблицы.

21 час назад, MasterGH сказал:

есть последний вариант, о котором я писал — рисовать свою таблицу через "Canvas Class", Brush, Pen, Font, line, lineTo, rect, fillRect, textOut... Все как в стандартном рисовании на Дельфи, или Лазаре. Можно будет сделать практически любую таблицу.

сначала на Дельфи7 (или бесплатном Lazarus) сделать, потом на CE Lua переходить.

 

Имеется в виду, что таблица делается в Дельфи7 (или Lazarus) , а после ее можно перенести в конструктор Cheat Engine и работать с этой таблицей? Или делать все на Дельфи7 или Lazarus?

 

Скорей всего придется работать с PageControl так как есть, с белым фоном на весь трейнер. Пока что простого способа не видно, чтоб изменить цвет фона вкладок.

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

13 минут назад, Razi сказал:

Имеется в виду, что таблица делается в Дельфи7 (или Lazarus) , а после ее можно перенести в конструктор Cheat Engine и работать с этой таблицей? Или делать все на Дельфи7 или Lazarus?

 

Не знаю, не пробовал переносить из Лазаря в CE. Вообще я имел ввиду, что много уроков есть по рисованию на Дальфи и  Лазаре. Тогда на CE Lua можно понять какие функции вызывать :)

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

2 часа назад, MasterGH сказал:

много уроков есть по рисованию на Дальфи и  Лазаре. Тогда на CE Lua можно понять какие функции вызывать

Это слишком долго, нужно быстрее это сделать.

Тогда можно и в Visual Studio попробовать такой трейнер сделать, хотя не знаю или на C# такое получится сделать. В принципе, написали с одним человеком программу (Код писал он, шаблоны и примеры он показал как делать, и всю рутинную работу делал я). Эта программа как раз считывает такие же данные, как нужны в трейнере, но она считывает с файла, а не из памяти.

Спойлер

2v85K.jpg

 

2v85G.jpg

 

Разобрался с тем как переключать цвет панели которые находятся в вкладках PageControl в Cheat engine. Надо использовать версию Cheat engine 6.7. Или в более старых версиях ReWanet  говорит: Надо просто форму обновить и цвет сменится.

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

В визуальном плане в конструкторе форм получается все довольно неплохо. Выглядит нормально. Думал будет намного хуже.

Есть вопрос по поводу трейнера. В конструкторе форм, кинул на форму таймер (срабатывает раз в 1 секунду) и написан код на считывание в 135 editbox, код ниже.

Спойлер

UDF1.CETimer1.Enabled = true

local addr = 0x009E8624
function CETimer1Timer(sender)
  for x = 1, 135 do
   if x < 16 then
    UDF1["CEEdit"..x].Text = readBytes(addr+x)
    elseif x < 15*2+1 then
    local addr = addr + 0x84
    UDF1["CEEdit"..x].Text = readBytes(addr+(x-15))
    elseif x < 15*3+1 then
    local addr = addr + 0x84*2
    UDF1["CEEdit"..x].Text = readBytes(addr+(x-15*2))
    elseif x < 15*4+1 then
    local addr = addr + 0x84*3
    UDF1["CEEdit"..x].Text = readBytes(addr+(x-15*3))
    elseif x < 15*5+1 then
    local addr = addr + 0x84*4
    UDF1["CEEdit"..x].Text = readBytes(addr+(x-15*4))
    elseif x < 15*6+1 then
    local addr = addr + 0x84*5
    UDF1["CEEdit"..x].Text = readBytes(addr+(x-15*5))
    elseif x < 15*7+1 then
    local addr = addr + 0x84*6
    UDF1["CEEdit"..x].Text = readBytes(addr+(x-15*6))
    elseif x < 15*8+1 then
    local addr = addr + 0x84*7
    UDF1["CEEdit"..x].Text = readBytes(addr+(x-15*7))
    else
    local addr = addr + 0x84*8
    UDF1["CEEdit"..x].Text = readBytes(addr+(x-15*8))
  end
end
end

 

 

Но есть одна проблема. Через час после включения трейнер жрет 700 мб памяти и загружает процессор до 50%. (И с каждой секундой поглощение памяти увеличивается на 3 мб). Может можно что-то сделать, как-то оптимизировать код? Код написан в версии CE 6.5, может в версии 6.7 такого уже нет? В общем посоветуйте, что можно сделать? Если конечно можно.

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

1 час назад, Razi сказал:

Но есть одна проблема.

Не замечал, чтобы в СЕ кушапась память при чтении/записи.

Приведи полностью свой код, уверен на 90 %, что ты используешь  OpenProcess в функции таймера.

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

2 часа назад, Garik66 сказал:

Не замечал, чтобы в СЕ кушапась память при чтении/записи.

Приведи полностью свой код, уверен на 90 %, что ты используешь  OpenProcess в функции таймера.

 

Выложу весь трейнер. В трейнере на форму брошен таймер, может лучше в коде создавать таймер? Скорей всего может ошибка где-то, потому что CE начинает зависать немного, при работе трейнера.

Спойлер

 

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

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

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

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