Razi Опубликовано 31 января, 2016 Поделиться Опубликовано 31 января, 2016 Как через скрипты в Cheat Engine произвести автоматическое нажатие клавиш?Нужно чтоб при условии (то есть "cmp") , что адрес 00A47010 равен 1 автоматически нажималась клавиша "home" один раз, а если этот адрес равен 0, то нажималась клавиша "end" один раз. Или вместо "home" нажималось ctrl плюс буква, а вместо "end" нажималось ctrl плюс другая буква. Есть ли такие команды в скриптах?И еще интересует как через скрипт, автоматически (т.е. при таком-то условии) заморозить такой-то адрес находящийся в таблице Cheat Engine? Знаю, что было включение скриптов по имени. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 31 января, 2016 Поделиться Опубликовано 31 января, 2016 Для того чтобы заморозить какой-то адрес в таблице или активировать, или деактивировать достаточно в CE назначить комбинацию горячих клавиш. Бывает случай, когда нужен скрипт, в котором несколько условий. Например, одно из них "cmp [адрес метки1], 1", где метка1 зарегистрирована и видна во всех скриптах. Тогда в другом скрипте надо написать запись в эту метку 1 или 0 по горячим клавишам. Эти два приема достаточны для большинства читов в играх. Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 31 января, 2016 Автор Поделиться Опубликовано 31 января, 2016 (изменено) чтобы заморозить адрес в таблице достаточно в CE назначить комбинацию горячих клавиш.Ну это понятно. "cmp [адрес метки1], 1", где метка1 зарегистрирована и видна во всех скриптах. Тогда в другом скрипте надо написать запись в эту метку 1 или 0 по горячим клавишам.И тогда в данном условии клавиши будут нажиматься сами? Изменено 31 января, 2016 пользователем Razi Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 31 января, 2016 Поделиться Опубликовано 31 января, 2016 (изменено) И еще интересует как через скрипт, автоматически (т.е. при таком-то условии) заморозить такой-то адрес находящийся в таблице Cheat Engine?Razi, пока отвечу только на этот вопрос - вариант по названию адреса (в моём скрипте адрес называется Address1) в таблице, условие можешь добавить сам:Лучше использовать ID записи в таблице.Тогда скрипт будет выглядеть так:Как узнать ID -> прочитай это сообщение MasterGH. 1. По индексу - Index2. По имени - description3. По ID - ID[ENABLE]{$LUA}addresslist = getAddressList()description1= [[Address1]]memoryrec1 = addresslist_getMemoryRecordByDescription(addresslist, description1)memoryrecord_freeze(memoryrec1) -- заморозка{$ASM}[DISABLE]{$LUA}memoryrecord_unfreeze(memoryrec1) -- разморозка [ENABLE]{$LUA}addresslist = getAddressList()memoryrec1 = addresslist_getMemoryRecordByID(addresslist,71) -- ID Address1 равно 71 memoryrecord_freeze(memoryrec1) -- заморозка{$ASM}[DISABLE]{$LUA}memoryrecord_unfreeze(memoryrec1) -- разморозка Изменено 31 января, 2016 пользователем Garik66 Ссылка на комментарий Поделиться на другие сайты Поделиться
krocki Опубликовано 31 января, 2016 Поделиться Опубликовано 31 января, 2016 (изменено) Типа того что то вроде я так делал на игры проверку нажатия клавиш в игре. Искал адрес в самой игре нажатия клавиши.К примеру игру которою щас взламывают RE4 на RapidFire. К примеру когда герой встаёт в стойку для атаки из оружия.Ищу адрес для этой стойки и сравниваю значение по cmp, если равно например 1 в стойке адреса или в регистре, 0 - не стоит в стойке. Ну и записываю в инструкция значение нужное для рапида если равно 1. Скажу сразу это мне нужно было для скрипта ассмемблерного чит-мода к примеру, если не кляпаешь трейнер, а вшиваешь сам скрипт в игру модуль EXE или DLL. Изменено 31 января, 2016 пользователем krocki 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 31 января, 2016 Поделиться Опубликовано 31 января, 2016 К скрипту выше тоже самое, но покороче{$LUA}memoryrecord1 = getAddressList().getMemoryRecordByDescription('No description')[ENABLE]memoryrecord1.Active = true[DISABLE]memoryrecord1.Active = falseЯ вообще не понимаю, зачем нужно симулировать нажатие клавиш изнутри скриптов или изнутри игры. Всегда обходились без этого Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 31 января, 2016 Поделиться Опубликовано 31 января, 2016 Razi, по первому вопросу в main LUA, есть что-тоdoKeyPress(key) : simulates a key press // имитирует нажатие клавишиНужно это теперь в скрипт добавить. На ассемблере тоже можно сделать, но нужно порыться (гуглить). 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 31 января, 2016 Автор Поделиться Опубликовано 31 января, 2016 (изменено) krocki, Благодаря твоей статье узнал, что значения на дисках PS1 в перевернутом виде, и впоследствии хакнул ту игру, сделав ее сложнее. зачем нужно симулировать нажатие клавиш изнутри скриптов или изнутри игры. Всегда обходились без этогоКстати это не чит код, а улучшение игры. Так я и обходился всегда без этого пройдя игру много раз. Почти не пользовался этим потому что, в игре эта штука очень не удобна. Но, если будут нажиматься кнопки сами, то пользоваться этой штукой в игре будет в сто раз удобнее. Таким образом, мы подключим ту часть игры которой раньше почти не пользовались из-за того что разработчики сделали ее не удобной. Кстати автоматическое нажатие клавиш при разных условиях, раскрывает большие возможности во всех играх. Даже например найдешь байт который активируется при использовании текста в игре, а чтобы его пропустить надо нажать кнопку, а если текста в игре очень много, то кнопку надо нажать 500-7000! раз за игру, что бы этого не делать ставиш скрипт на автонажатие кнопок при условии. Это всего лишь пример. Изменено 31 января, 2016 пользователем Razi Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 1 февраля, 2016 Автор Поделиться Опубликовано 1 февраля, 2016 (изменено) условие можешь добавить самА куда это условие добавлять-то, в какой скрипт? Нужно создать новый скрипт и указать условие? Ну условие я указать могу, а после условия как указать чтобы адрес был заморожен?[ENABLE]aobscan(INJECT,88 1C 08 81 E2 FC FF 1F 00) // should be uniquealloc(newmem,$1000)label(code)label(return)newmem:cmp byte ptr [00A3F3E5],2jne code // а дальше что?code: mov [eax+ecx],bl and edx,001FFFFC jmp returnINJECT: jmp newmem nop nop nop nopreturn:registersymbol(INJECT)[DISABLE]INJECT: db 88 1C 08 81 E2 FC FF 1F 00unregistersymbol(INJECT)dealloc(newmem) Изменено 1 февраля, 2016 пользователем Razi Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 1 февраля, 2016 Поделиться Опубликовано 1 февраля, 2016 А куда это условие добавлять-то, в какой скрипт?Razi, можно всё сделать в одном скрипте, можно в разных, можно на LUA, но на ассемблер будет гораздо проще.На ассемблер заморозка это просто операнд MOV. Вот здесь я собирал для пользователя 7 вариантов решения заморозки адреса. Можно сделать ещё больше, но проще сделать на ассемблер.А добавить условие - мы уже с тобой делали в предыдущих скриптах.Если у самого не получается, кинь мне инфу, о которой писал в ЛС, я напишу скрипт с пояснениями - разберёшься. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 1 февраля, 2016 Автор Поделиться Опубликовано 1 февраля, 2016 (изменено) Условие я уже сделал в скрипте, в предыдущем сообщении. А, еще забыл сделать условие на разморозку, в этом же скрипте. Щас перепишу, только надо глянуть в игру, когда лучше размороживать. А как прописать условие, если значение в адресе не равно 2, то разморозить адрес? Пример:cmp byte ptr [00A3F3E5], jne // эта функция и так изначально находится при сравнении если адрес равен 2 Изменено 1 февраля, 2016 пользователем Razi Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 1 февраля, 2016 Поделиться Опубликовано 1 февраля, 2016 cmp byte ptr [00A3F3E5],2jne code // а дальше что? Ты же не на все вопросы ответил.На самый главный - Что должно замораживаться? ответь Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 1 февраля, 2016 Автор Поделиться Опубликовано 1 февраля, 2016 (изменено) На самый главный - Что должно замораживаться?Да, точно, адрес для заморозки: 00A444E8, и заморозить если адрес 00A3F3E5 равен 2, и после нужно разморозить, если адрес 00A3F3E5 не равен 2. Я и сам хочу написать скрипт, но у меня будет куча вопросов. Изменено 1 февраля, 2016 пользователем Razi Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 1 февраля, 2016 Поделиться Опубликовано 1 февраля, 2016 (изменено) Да, точно, адрес для заморозки: 00A444E8Не указал на какое значение его морозить, ладно поставлю #100.если адрес 00A3F3E5 не равен 2.то ещё проще:[ENABLE]aobscan(INJECT,88 1C 08 81 E2 FC FF 1F 00) // should be uniquealloc(newmem,$1000)label(code)label(return)newmem:cmp byte ptr [00A3F3E5],2jne @f // а дальше что? А дальше вот это:mov [00A444E8],#100 // замораживаем адрес на нужное значениеjmp code // и выполняем код игры.@@:cmp byte ptr [00A3F3E5],1 // допустим ты мне дал условие разморозки.jne code // просто выполняем код игры. Строчку можно не писать, написал // чтобы было понятнее. code: mov [eax+ecx],bl and edx,001FFFFC jmp returnINJECT: jmp newmem nop nop nop nopreturn:registersymbol(INJECT)[DISABLE]INJECT: db 88 1C 08 81 E2 FC FF 1F 00unregistersymbol(INJECT)dealloc(newmem) [ENABLE]aobscan(INJECT,88 1C 08 81 E2 FC FF 1F 00) // should be uniquealloc(newmem,$1000)label(code)label(return)newmem:cmp byte ptr [00A3F3E5],2jne соde // а дальше что? А дальше вот это:mov [00A444E8],#100 // замораживаем адрес на нужное значениеcode: mov [eax+ecx],bl and edx,001FFFFC jmp returnINJECT: jmp newmem nop nop nop nopreturn:registersymbol(INJECT)[DISABLE]INJECT: db 88 1C 08 81 E2 FC FF 1F 00unregistersymbol(INJECT)dealloc(newmem) Изменено 3 февраля, 2016 пользователем Garik66 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 1 февраля, 2016 Автор Поделиться Опубликовано 1 февраля, 2016 (изменено) В данном скрипте адрес 00A444E8 должен заморозиться, если адрес 00A3F3E5 равен 2, а еслиадрес 00A3F3E5 не равен 2, то адрес 00A444E8 должен разморозиться? Нужно, чтоб после заморозки адрес 00A444E8 еще и разморозился.А если нужно, чтоб адрес просто заморозился без указания значения #100 (это в десятичной системе?), то его просто надо убрать из скрипта? Изменено 1 февраля, 2016 пользователем Razi Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 1 февраля, 2016 Поделиться Опубликовано 1 февраля, 2016 Если ты сделал АА скрипт из инструкции работающей с адресом [00A444E8], и [eax+ecx] это и есть адрес [00A444E8], то скрипт будет другим - тебе нужно отключить запись в [eax+ecx].[ENABLE]aobscan(INJECT,88 1C 08 81 E2 FC FF 1F 00) // should be uniquealloc(newmem,$1000)label(code)label(return)newmem:cmp byte ptr [00A3F3E5],2jne соde // а дальше что? А дальше вот это:jmp @f // замораживаем адрес на нужное значение - какое-то игровое // значение - ты сам его знаешь.code: mov [eax+ecx],bl // Если в [00A3F3E5] 2, то перепрыгиваем запись.@@: and edx,001FFFFC jmp returnINJECT: jmp newmem nop nop nop nopreturn:registersymbol(INJECT)[DISABLE]INJECT: db 88 1C 08 81 E2 FC FF 1F 00unregistersymbol(INJECT)dealloc(newmem) Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 1 февраля, 2016 Автор Поделиться Опубликовано 1 февраля, 2016 Если ты сделал АА скрипт из инструкции работающей с адресом [00A444E8]Не не я сделал АА скрипт из инструкции работающей с адресом 00A3F3E5 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 1 февраля, 2016 Поделиться Опубликовано 1 февраля, 2016 Тогда попробуем на LUA, но как я писал тебе LUA я не знаю, поэтому за правильность написания скрипта не ручаюсь.[ENABLE]{$LUA}FreezingConditions = readInteger('[00A3F3E5]')if (FreezingConditions == 2) thenmemoryrecord_freeze('[00A444E8]') -- заморозкаend{$ASM}[DISABLE]{$LUA} Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 1 февраля, 2016 Автор Поделиться Опубликовано 1 февраля, 2016 Твой АА скрипт работает. Но это, немного не то, я хотел чтоб он не замораживал значение в 100, а чтоб заморозил, то значение какое там на данный момент(без прописывания вместо 100 на другое). И хотел чтоб появлялась галочка указывающая что адрес заморожен. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 1 февраля, 2016 Поделиться Опубликовано 1 февраля, 2016 (изменено) Ты про какой скрипт сейчас говоришь, он оба АА.Ладно сделал тебе табличку (табличка удалена - не работает), проверь. И хотел чтоб появлялась галочка указывающая что адрес заморожен.Так уже давал примеры (по ID, по названию). Короче закачай куда-нибудь свою табличку, чтобы я качнул - сделаю тебе то, что нужно. Изменено 1 февраля, 2016 пользователем Garik66 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 1 февраля, 2016 Автор Поделиться Опубликовано 1 февраля, 2016 Этот работает, но это, немного не то, я хотел чтоб он не замораживал значение в 100, а чтоб заморозил, то значение какое там на данный момент(без прописывания вместо 100 на другое). И хотел чтоб появлялась галочка указывающая что адрес заморожен.[ENABLE]aobscan(INJECT,88 1C 08 81 E2 FC FF 1F 00) // should be uniquealloc(newmem,$1000)label(code)label(return)newmem:cmp byte ptr [00A3F3E5],2jne соde // а дальше что? А дальше вот это:mov [00A444E8],#100 // замораживаем адрес на нужное значениеcode: mov [eax+ecx],bl and edx,001FFFFC jmp returnINJECT: jmp newmem nop nop nop nopreturn:registersymbol(INJECT)[DISABLE]INJECT: db 88 1C 08 81 E2 FC FF 1F 00unregistersymbol(INJECT)dealloc(newmem) Последний Lua скрипт 18 сообщении не работает.Тот по названию твой скрипт в 4 сообщении пробовал и он замораживает адрес, но условие как к нему прилепить я не знаю. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 1 февраля, 2016 Поделиться Опубликовано 1 февраля, 2016 (изменено) Razi, чёй-то ты сегодня притормаживаешь.Ответь:1. Ты хочешь скрипт на LUA или на ассемблер.2. Если на LUA, то дай мне ID адреса (как посмотреть ID я писал уже здесь., либо дай какое-нибудь уникальное название адресу (на английском) и дай мне. тогда напишу скрипт по названию.3. Если на ассемблер, то сделай АА скрипт из инструкции на чтение на адрес, который нужно заморозить. Последний Lua скрипт 18 сообщении не работает.Как ты его проверял, куда вставлял скрипт?Лучше качни табличку, выложенную выше и проверь. Изменено 1 февраля, 2016 пользователем Garik66 Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 1 февраля, 2016 Автор Поделиться Опубликовано 1 февраля, 2016 (изменено) 1) Та на любой2) По ID щас узнаю3) Инструкция на чтение на адрес, который нужно заморозить (выбрал ту у которой максимальное количество обращений) Изменено 1 февраля, 2016 пользователем Razi Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 1 февраля, 2016 Поделиться Опубликовано 1 февраля, 2016 Не та инструкция, я уже тоже торможу, нужна именно инструкция на запись. (когда происходит запись в адрес).А табличку проверил?Если не сработает,, то без таймера не обойтись, так как проверять чему равно значение в [00A3F3E5] нужно постоянно. [ENABLE]{$LUA}addresslist = getAddressList()memoryrec1 = addresslist_getMemoryRecordByID(addresslist,71) -- ID Address1 равно 71 (сюда подставь своё ID)FreezingConditions = readInteger('[00A3F3E5]')if (FreezingConditions == 2) thenmemoryrecord_freeze(memoryrec1) -- заморозкаend{$ASM}[DISABLE]{$LUA} Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 1 февраля, 2016 Автор Поделиться Опубликовано 1 февраля, 2016 (изменено) Нет, твоя табличка не работает. Все делал у себя также, как у тебя. Изменено 1 февраля, 2016 пользователем Razi Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения