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

Вывод значения из памяти на трейнер


Arimor

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

4 часа назад, Arimor сказал:

Как добавить на трейнер отображение значений найденных в памяти игры по найденным адресам?

У меня вот так получилось

function CETrainer_CEButton1Click(sender)
openProcess("ac_client.exe")
CETrainer.CEButton1.Caption = readInteger("50F500")
end

Показывает количество игроков.

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

16 часов назад, NubZilla сказал:

У меня вот так получилось


function CETrainer_CEButton1Click(sender)
openProcess("ac_client.exe")
CETrainer.CEButton1.Caption = readInteger("50F500")
end

Показывает количество игроков.

А как сделать чтобы это значение автоматически обновлялось на актуальное число?

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

14 минут назад, Arimor сказал:

А как сделать чтобы это значение автоматически обновлялось на актуальное число?

добавить таймер или поток

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

7 минут назад, Senpai сказал:

добавить таймер или поток

Можно поподробнее? Как внедрить это в код что выше?

 

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

openProcess("ac_client.exe")

Почему именно в процессе этого файла нужно искать данные? 

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

while true do
function CETrainer_CEButton1Click(sender)
openProcess("ac_client.exe")
CETrainer.CEButton1.Caption = readInteger("50F500")
end

end

Делал так но почему-то CE зависает после такого, делал цикл и внутри функции тоже подвисает. Почему?

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

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

Делал так но почему-то CE зависает после такого, делал цикл и внутри функции тоже подвисает. Почему?

 

Потому что ты делаешь неправильно. Почитай основы использования LUA в СЕ и вообще основы в целом

 

16 часов назад, Arimor сказал:

Почему именно в процессе этого файла нужно искать данные? 

 

Если у тебя другая игра, то и процесс будет другой.

Похоже, ты вообще основ не знаешь абсолютно. Рекомендую их изучить, иначе так и будут сыпаться вопросы, а понимания не будет.

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

8 часов назад, Xipho сказал:

Потому что ты делаешь неправильно. Почитай основы использования LUA в СЕ и вообще основы в целом

Весь день читал, тестировал. Код абсолютно правильный. Тут нету ошибок. 

9 часов назад, Xipho сказал:

а понимания не будет

function CETrainer_CEButton1Click(sender) -- Cоздаем функцию которая сработет по нажатию на кнопку
while true do -- создаем бесконечный цикл
openProcess("ac_client.exe") -- открываем процесс
CETrainer.CEButton1.Caption = readInteger("50F500") -- выводим на кнопку то что причитали из памяти.
end -- место где закончить цикл
end -- конец функции

Выводит но не обновляет.  Через ретурн тоже не обновляет. 

 

8 часов назад, Xipho сказал:

Похоже, ты вообще основ не знаешь абсолютно.

Дело в том, что я изначально вставлял свой процесс игры, но решил протестировать и с тем, что предоставили в коде.  Меня удивило, что код работает и решил на всякий случай задать вопрос, может я что то не понимаю. Вы так боитесь показать себя с глупой стороны?  Да я указал цикл за пределами функциями, да очень глупо, но в сообщении я указал, что внутри функции. Просто не разобрался как копипаст на форуме работает,  такая мелочь сути вопроса не меняет, но вы всё же за неё зацепились,  проигнорировав вопрос.

 

8 часов назад, Xipho сказал:

Рекомендую их изучить, иначе так и будут сыпаться вопросы, а понимания не будет.

Я уже понял, что лишние вопросы у вас задавать не принято.  Какие основы изучить? Я спокойно пишу трейнеры в СЕ, нахожу сигнатуры, да я многое не знаю, но для этого же и существуют форумы чтобы спросить у тех кто уже больше времени посветил этому и разбирается куда больше? Обмен опытом позволяет всем нам двигаться быстрее.  Тем более гугл не смог мне помочь в этом вопросе. Все методы циклов, что там есть не помогают, в потоке тоже не работает. Может это вообще невозможно сделать?  Вот вы пишите, что я делаю не правильно, хотя бы на ошибки укажите. Но вы не укажите, потому что их там нету. Возможно нужен другой подход. Решение которые мне дали не подходит для вывода информации из памяти и её обновления.  Сейчас с таймерами буду разбираться, изучать. Потому, что ребята подсказали куда двигаться за что им благодарен, они ради меня чтобы помочь, потратили своё время я ценю это.

Вы же лучше бы просто мимо прошли. Что это за помощь иди основы читай?  Что за абстракция, какая польза от этого совета? "Прочитайте всю войну и мир, чтобы сказать, что было сказано в последнем предложении"  

 

Рано или поздно я с этим разберусь, но тогда вопрос, зачем форум? 

 

 

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

В 30.01.2021 в 14:23, Arimor сказал:

Спасибо, как будет возможность поставить лайк, сделаю :))

Привет я очень рад помочь)))

CETrainer.CEButton1.Caption = readInteger("50F500")

Это означает прочитать 32-битный int(readInteger) и присвоить его названию кнопке. Если бы надо прочитать строку то нужно readString.

0x50F500 это просто статический адресс где хранится количество игроков в матче.

 

В 30.01.2021 в 16:08, Arimor сказал:

Можно поподробнее? Как внедрить это в код что выше?


openProcess("ac_client.exe")

Почему именно в процессе этого файла нужно искать данные? 

Потому что мы сначала открываем нужный нам процесс, а потом читаем память этого процесса.

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

19 минут назад, NubZilla сказал:

Потому что мы сначала открываем нужный нам процесс, а потом читаем память этого процесса.

Попробовал его закомментировать,  без этого процесса всё равно считывает из памяти нужное число.   Получается процесс берется тот, что открыт в СЕ.  Спасибо разобрался :) Осталось понять почему циклы не работают.  

 

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

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

Осталось понять почему циклы не работают.  

Используй не цикл, а таймер, раз уж такой знаток. Цикл работает, но у тебя форма не обновляется, потому что цикл запускается в основном потоке формы. Ты вроде так эмоционально говорил, что основы знаешь, но я вижу, что нет, не знаешь, раз не понимаешь, как делается обработка нажатий клавиш в СЕ LUA.

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

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

Ты вроде так эмоционально говорил, что основы знаешь,

 

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

Какие основы изучить? Я спокойно пишу трейнеры в СЕ, нахожу сигнатуры, да я многое не знаю

Я говорил про конкретику, для меня основы это 5 лет зубрить учебники и не факт, что постигну всех основ. Поэтому и уточнил какие именно основы изучать?

 

Я написал, что я понимаю и как.  Никах основ я не знаю, статьи по Lua и CE уже два дня пока есть свободное время изучаю. А эмоционально потому-что был офф топ не по теме, к чему говорить, что я нечего не знаю иди читай, так под любой темой можно написать. Это флуд из за которого последовала ответная порция флуда, путь в никуда.  Если бы я знал, зачем бы я задавал вопрос. 

 

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

Используй не цикл, а таймер

Спасибо, прекращаю эксперименты с циклами.  

 

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

как делается обработка нажатий клавиш в СЕ LUA.

Для чего мне в данном случае обработка нажатия клавиш?

function UDF1_CELabel1Click(sender)
openProcess("ac_client.exe")
UDF1.CELabel1.Caption = readInteger("00F0C668")
end

Я же могу и на лейбл вывести. Мне не нужно нажимать клавиши, а только выводить актуальное значение из памяти. 
 

 

 

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

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

Я же могу и на лейбл вывести. Мне не нужно нажимать клавиши, а только выводить актуальное значение из памяти. 

значит используй таймер/многопоток/что-то ещё похожее. Бесконечным циклом в основном потоке ты попросту вешаешь программу(она будет только то и делать, что считывать это твоё значение).
Ещё вариант - посмотри список возможных евентов(или хз как оно там называется) в конструкторе форм CE(ты ведь его используешь?). Мб можно добавить вызов функции для чтения памяти и обновления надписи в момент обновления формы или чего-то ещё такого, самый быстрый вариант, наверное.

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

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

значит используй таймер/многопоток/что-то ещё похожее.

Изучаю вопрос, пока решения с библиотеками находил но это не то. 

 

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

посмотри список возможных евентов

Все евенты перебрал, остановился на срабатывании функции при запуске.  Как форму обновлять ещё незнаю. 

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

45 минут назад, Arimor сказал:

Изучаю вопрос, пока решения с библиотеками находил но это не то. 

 

гляди, что мне гугл подсказал - https://wiki.cheatengine.org/index.php?title=createTimer ?

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

5 часов назад, youneuoy сказал:

Бесконечным циклом в основном потоке ты попросту вешаешь программу(она будет только то и делать, что считывать это твоё значение).

 

Я про это выше упомянул, но был не понят )))

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

В 30.01.2021 в 16:08, Arimor сказал:

Можно поподробнее? Как внедрить это в код что выше?

Например Таймер:

Спойлер

image.thumb.png.8db9387fd146e86b70fe831026cbae3c.png


local function timer_tick(timer)
  CETrainer.CELabel1.Caption = readInteger('["Tutorial-i386.exe"+002015D0]+480')
  if DoneState == true then
    timer.destroy()
  end
end
local someTimer = createTimer()
someTimer.Interval = 100
someTimer.OnTimer = timer_tick

 

 

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

10 часов назад, youneuoy сказал:

гляди, что мне гугл подсказал - https://wiki.cheatengine.org/index.php?title=createTimer ?

Спасибо, то что надо.  Похоже как то не так гуглил. 

 

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

Например Таймер:

Благодарю за готовое решение.  

 

 

5 часов назад, Xipho сказал:

 

Я про это выше упомянул, но был не понят )))

 

13 часов назад, Arimor сказал:
16 часов назад, Xipho сказал:

Используй не цикл, а таймер

Спасибо, прекращаю эксперименты с циклами.  

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

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

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...

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

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