Тема: Как вычислить адрес переменной в процессе?
Собственно САБЖ. Есть urpa, мне нужно выполнять действие, пока определенная переменная не примет заданное значение. Помогите советом или ссылочками.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Собственно САБЖ. Есть urpa, мне нужно выполнять действие, пока определенная переменная не примет заданное значение. Помогите советом или ссылочками.
Собственно, не сочтите за придирку, но какое отношение вопрос имеет к autohotkey? То, что вы желаете чтоб задача была решена с использованием autohotkey — не считается. Вы уже начали писать скрипт с требуемой функциональностью на autohotkey? Приведите код, отражающий текущее состояние работы. Не начали? Совет — используйте CE
Для определения адреса используйте программу ArtMoney, она под это заточена. Если сумеете адрес найти, тогда и можно будет говорить о выполнении действия.
Для определения адреса используйте программу ArtMoney, она под это заточена. Если сумеете адрес найти, тогда и можно будет говорить о выполнении действия.
Art Money как вариант я рассматривал, но на сколько я разобрался с её функциями, она заменят переменную ножной цифрой или может её заморозить в нужном значении. А мне нужно просто кликать в одно место, пока цифра не примет нужное значение. Конечно можно привязаться к изображению, но я не умелый пользователь ахк. Вот и прошу ссылки на похожие темы, и я не просил готовых решений.
ArtMoney я вам посоветовал для определения адреса. Вы это уже сделали? Адрес определили? Мы же за вас не сможем его определить. А без адреса что и где вы будете смотреть?
Конечно можно привязаться к изображению
Приведите хотя-бы изображение.
Конечно можно привязаться к изображению
Приведите хотя-бы изображение.
Куда? Копипаст на форум? о чем речь?
Это будет скриншот из urpы, он сейчас ничего не даст. Игра ММО, так что просто подменить значение в клиенте ничего не даст, а если даст то, скорее всего, только бан. Я не хочу взламывать клиент и что то в нем править, а что я хочу писал выше.
А мне нужно просто кликать в одно место, пока цифра не примет нужное значение.
ImageSearch
а что я хочу писал выше
Отличная формулировка «я всё сказал, теперь ваш черёд».
Примеры использования ReadProcessMemory
Нужно знать адрес откуда читать данные.
Как осуществляется поиск в памяти конкретного процесса, демонстрирует artmoney и cheat engine. Cомневаюсь, что имеет смысл повторять их функциональность скриптом на autohotkey.
а что я хочу писал выше
Отличная формулировка «я всё сказал, теперь ваш черёд».
Примеры использования ReadProcessMemory
Нужно знать адрес откуда читать данные.Как осуществляется поиск в памяти конкретного процесса, демонстрирует artmoney и cheat engine. Cомневаюсь, что имеет смысл повторять их функциональность скриптом на autohotkey.
ты всё по делу сказал, но вот заняться все чем вы сказали я могу только сейчас, до этого был на работе.
Собственно САБЖ. Есть игра, мне нужно выполнять действие, пока определенная переменная не примет заданное значение. Помогите советом или ссылочками.
Ещё раз говорю, что форум не посвящён urpaм. Тематических форумов хватает. Хотя бы уберите слово "urpa" в названии темы и сообщениях.
Вычислить адрес нужной ячейки памяти невозможно, он не подчиняется формулам. Можно найти его при помощи логики и метода тыка. Но это уже совсем другая история, читайте документацию к Аrтмonеу.
По существу: вопрос неоднократно поднимался, был успешно решён. Вам достаточно было провести поиск в разделах "AutoHotkey - разработка" и "AutoHotkey - коллекция" по слову "память":
http://forum.script-coding.com/viewtopic.php?id=5966
http://forum.script-coding.com/viewtopic.php?id=2734
Я конечно все понимаю, но я человек начинающий с ахк. Ну вот откуда мне взять нужную крупицу из всех тон информации? гуглил как мог, может я да же вопрос не правильно поставил. Есть ситуация, которую я хотел бы, разобравшись, решить с помощью АХК. Так если это urpa, то всё? Табу? На этом форуме с такими делами не помогают?
Я конечно все понимаю, но я человек начинающий с ахк.
В каком смысле?
гуглил как мог, может я да же вопрос не правильно поставил.
Есть ситуация, которую я хотел бы, разобравшись, решить с помощью АХК.
Так это... Поставьте для начала вопрос правильно. А там, глядишь, и AutoHotkey не понадобится.
Так если это игра, то всё? Табу? На этом форуме с такими делами не помогают?
Это частный случай. Но форум посвящён скриптовым языкам, не следует превращать его в "конференцию 4uтеpoB".
Но форум посвящён скриптовым языкам, не следует превращать его в "конференцию 4uтеpoB".
По-моему, вы перебарщиваете в этой антиигровой политике. Вопросы по играм время от времени появляются уже давно, но форум в эту самую конференцию так и не превратился. Почему вдруг теперь должен превратиться?
Тема популярна. Стараюсь сдерживать поток вопросов по играм, но они появляются всё чаще, кто-то даже предлагал создать специальный раздел. Эта тема - живой пример: что-то потребовалось для игры --> зашёл на script-coding.com --> задал вопрос и жду помощи. В этой цепочке просматривается прочная ассоциация между "хитростями в играх" и AutoHotkey среди геймеров.
А может у меня что-то с головой? Могу прекратить гонения и посмотрим, что будет с форумом через год.
Ладно, если теме быть - я продолжу, а нет - удаляйте. Не поможете, то и смысла пользоваться АХК для меня нет, всяко мне неоткуда помощи ждать. На форуме тогда не появлюсь, но думаю здесь и без меня всё будет хорово.
Буду говорить туманно, что бы не обвинили еще и в рекламе.
И так скачав СЕ попробовал на внутренней валюте, адрес перенес, всё отображается четко. Но не валюта моя цель.
Цель - некий предмет который, с шансом 50/50, можно улучшить на +1 или сбросить текущее значение на 0.
Шанс сделать с нуля:
+1=100/2^1
+2=100/2^2
+3=100/2^3
и т.д.
Если предмет не улучшен, то на его иконке не отображается цифр, а если улучшен то начиная с единицы ему присваивается цифра. Так вот не нашел я эту цифру в процессе, искал разными способами, в общем я в тупике.
не нашел я эту цифру в процессе
Возможно, отображаемые на иконке цифры — лишь текстуры, а в памяти факт привязки к предмету некого «уровня улучшения» хранится в неявном виде. Как наиболее эффективно искать подобные значения я, увы, подсказать не могу.
И так, я всё же нашел адрес нужной переменной, но она оказалась суммой двух других. х)
Я не силен в синтаксисе, но попробую.
#NoEnv
ProcessName = urpa.exe ; Имя процесса. <----- тут мне понятно
ReadAddress = 2ECD0254 ; Адрес, откуда читать. <-----адрес моей переменной
ReadSize = 4 ; Сколько байт читать.
VarSetCapacity(Buf, ReadSize, 0) ; Буфер, куда считывать.<------ вот тут мне не понятно
Если мне правильно ясна логика:
1. весь скрипт нужно привязать на клавишу, допустим Numpad0
2. указать имя процесса, адрес переменной
3. присвоить переменной символ, допустим X
4. кликать мышкой в определенные координаты, если X<10(допустим)
Я верно мыслю?
processName := "имя процесса"
readAddress := 0x2ECD0254
Numpad0::
if ProcessReadMemory(readAddress, processName) < 10
Click 123 234
return
ProcessReadMemory(address, processIDorName, type := "Int", numBytes := 4) {
VarSetCapacity(buf, numBytes, 0)
Process Exist, %processIDorName%
if !processID := ErrorLevel
throw Exception("Invalid process name or process ID:`n`n""" . processIDorName . """")
if !processHandle := DllCall("OpenProcess", "Int", 24, "UInt", 0, "UInt", processID, "Ptr")
throw Exception("Failed to open process.`n`nError code:`t" . A_LastError)
result := DllCall("ReadProcessMemory", "Ptr", processHandle, "Ptr", address, "Ptr", &buf, "Ptr", numBytes, "PtrP", numBytesRead, "UInt")
if !DllCall("CloseHandle", "Ptr", processHandle, "UInt") && !result
throw Exception("Failed to close process handle.`n`nError code:`t" . A_LastError)
if !result
throw Exception("Failed to read process memory.`n`nError code:`t" . A_LastError)
if !numBytesRead
throw Exception("Read 0 bytes from the`n`nprocess:`t" . processIDorName . "`naddress:`t" . address)
return (type = "Str")
? StrGet(&buf, numBytes)
: NumGet(buf, type)
}
ypppu
Стараюсь сдерживать поток вопросов по играм, но они появляются всё чаще
У меня нет такого ощущения. Всё как всегда было. Если не ошибаюсь, я тут с 2006 года. Вопросы про игры были всегда, но люди с такими вопросами на форуме не задерживаются. Появился, спросил и исчез.
Могу прекратить гонения и посмотрим, что будет с форумом через год.
Поддерживаю. Критерий истины — практика.
YMP
ypppu
ypppu пишет:Могу прекратить гонения и посмотрим, что будет с форумом через год.
Поддерживаю. Критерий истины — практика.
Эксперимент объявляю начатым.
processName := "имя процесса" readAddress := 0x2ECD0254 Numpad0:: if ProcessReadMemory(readAddress, processName) < 10 Click 123 234 return ProcessReadMemory(address, processIDorName, type := "Int", numBytes := 4) { VarSetCapacity(buf, numBytes, 0) Process Exist, %processIDorName% if !processID := ErrorLevel throw Exception("Invalid process name or process ID:`n`n""" . processIDorName . """") if !processHandle := DllCall("OpenProcess", "Int", 24, "UInt", 0, "UInt", processID, "Ptr") throw Exception("Failed to open process.`n`nError code:`t" . A_LastError) result := DllCall("ReadProcessMemory", "Ptr", processHandle, "Ptr", address, "Ptr", &buf, "Ptr", numBytes, "PtrP", numBytesRead, "UInt") if !DllCall("CloseHandle", "Ptr", processHandle, "UInt") && !result throw Exception("Failed to close process handle.`n`nError code:`t" . A_LastError) if !result throw Exception("Failed to read process memory.`n`nError code:`t" . A_LastError) if !numBytesRead throw Exception("Read 0 bytes from the`n`nprocess:`t" . processIDorName . "`naddress:`t" . address) return (type = "Str") ? StrGet(&buf, numBytes) : NumGet(buf, type) }
попробовал... никакой реакции... бида
OFF:
Вопросы про игры были всегда, но люди с такими вопросами на форуме не задерживаются. Появился, спросил и исчез.
Интересный момент за время наблюдений. Сегодня начато три новых темы в ветке AutoHotkey, посвящённых играм.
Ну, мало ли какие моменты бывают. Засилия игроманов вроде нет.
YMP
+ открыть спойлерYMP пишет:ypppu
ypppu пишет:Могу прекратить гонения и посмотрим, что будет с форумом через год.
Поддерживаю. Критерий истины — практика.
Эксперимент объявляю начатым.
Off: Помоему года ждать ненужно. Все и так очевидно...
А эксперимент только игроманов касается?
Количество тем, напрямую связанных с играми, плавно нарастало до конца лета. В сентябре резкий спад (из чего следует, что большая часть авторов - школьники), в октябре зафиксирован пик активности. Примерно после этого момента игры упоминались не столь явно.
OFF: Картинки, приаттаченные к форуму, обычно грузятся очень медленно, лучше пользоваться сторонними ресурсами.
+ Итоги эксперимента...
Описанный процесс абсолютно не помешал мне пользоваться форумом, не вызвал негативных эмоций и вообще не был мной замечен, в отличие от некоторых других форумных явлений, которые и помешали и вызвали и в глаза бросились.
Допускаю, что реакция тех, кто по любопытству, принципиальности или другим причинам читает ВСЕ, может быть кардинально иной. Но тут уж симптом по диагнозу и вылезет независимо от преобладающей тематики.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться