Garik66 Опубликовано 1 февраля, 2016 Поделиться Опубликовано 1 февраля, 2016 (изменено) Добавил ещё скрипт, мне кажется он лучше, так как нет привязки к таблице, т.е. будет работать у всех. Скрытый текст [ENABLE] {$LUA} timer = createTimer(true) timer:setInterval(5) timer.OnTimer = function() FreezingConditions = readInteger('00A3F3E5') if (FreezingConditions == 2) then memoryrecord_freeze('00A444E8') -- заморозка end end {$ASM} [DISABLE] {$LUA} timer:setEnabled(false) Изменено 13 февраля, 2016 пользователем Garik66 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 1 февраля, 2016 Поделиться Опубликовано 1 февраля, 2016 Можно я тоже вставлю свое слово. И попытаюсь чем нибудь помочь. Но я правда ничего пока не понял, что нужно для чего нужно. Суть понял, но детали не увидел. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 1 февраля, 2016 Поделиться Опубликовано 1 февраля, 2016 Но я правда ничего пока не понял, что нужно для чего нужно.Задание разбросано по всей теме.Сейчас делаем:1. Имеются два адреса.2. Нужно, чтобы значение в одном заморозилось, если в другом значение равно 2, при любом другом значении - не замораживаем. Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 1 февраля, 2016 Автор Поделиться Опубликовано 1 февраля, 2016 (изменено) Главный и первый вопрос в том, чтоб при условии, что адрес 00A47010 равен 1 автоматически нажималась клавиша "home" один раз, а если этот адрес равен 0, то нажималась клавиша "end" один раз. Или вместо "home" нажималось ctrl плюс буква, а вместо "end" нажималось ctrl плюс другая буква. А мы сейчас рассматриваем второй вопрос :В скрипте если адрес 00A3F3E5 равен значению 2,то адрес 00A444E8 должен заморозиться,а если, адрес 00A3F3E5 не равен значению 2, то адрес 00A444E8 должен разморозиться. Изменено 1 февраля, 2016 пользователем Razi Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 1 февраля, 2016 Поделиться Опубликовано 1 февраля, 2016 (изменено) Спасибо, до меня порой так долго доходят даже самые простые вещи. А Можешь выложить сюда файл таблицу СЕ, с готовыми адресами, ну и со всем что нудно. Чтобы еще понятней было. 1 А что эти адреса ститичные, поинтеры?2 Они где, в таблице уже?3 А если адрес 00A47010 всегда равен 1, ну или долгое время. То есть чтобы клавиша нажалась только при его установке на 1, а потом уже не важно? Или чтобы когда он потом вдруд изменится с единицы на что другое, а потом опять (второй раз) станет 1, то и теперь надо сделать срабатывание клавиши, и также, один раз4 Что меняет его на 1 и на 0? Изменено 1 февраля, 2016 пользователем AntonVitalievich Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 1 февраля, 2016 Автор Поделиться Опубликовано 1 февраля, 2016 (изменено) 1. статичные, по 1 байту каждый2. в таблице3. да, Когда изменится адрес 00A47010 на 1 нажать "home" один раз, чтобы когда он потом вдруг изменится с единицы на число 0 то нажать "end" один раз, а потом опять (второй раз) станет 1, то и теперь надо сделать срабатывание клавиши "home" и также, один раз, и снова изменится на 0 то нажать "end" и также, один раз и так постоянно.4. Меняет на 1 только когда (начинается) происходит один прием в игре, на 0 когда этот прием не происходит (заканчивается). Garik66, инструкция на запись на адрес который нужно заморозить (было 2 инструкции, выбрал ту у которой больше срабатываний, и она правильнее действует)правда, я так и не понял почему не по тому адресу по которому происходит сравнение.{ Game : ePSXe ENG.exe Version: Date : 2016-02-01 Author : User This script does blah blah blah}[ENABLE]aobscan(INJECT,89 1C 08 81 E2 FC FF 1F 00) // should be uniquealloc(newmem,$1000)label(code)label(return)newmem:code: mov [eax+ecx],ebx and edx,001FFFFC jmp returnINJECT: jmp newmem nop nop nop nopreturn:registersymbol(INJECT)[DISABLE]INJECT: db 89 1C 08 81 E2 FC FF 1F 00unregistersymbol(INJECT)dealloc(newmem){// ORIGINAL CODE - INJECTION POINT: 030504340305040B: 81 FA 00 00 80 1F - cmp edx,1F80000003050411: 74 62 - je 0305047503050413: 8B 0D 84 0A 51 00 - mov ecx,["ePSXe ENG.exe"+110A84]03050419: F7 C1 00 00 01 00 - test ecx,100000305041F: 75 53 - jne 0305047403050421: 8B C8 - mov ecx,eax03050423: 89 C2 - mov edx,eax03050425: C1 E9 10 - shr ecx,1003050428: 25 FF FF 00 00 - and eax,0000FFFF0305042D: 8B 0C 8D 40 AF 82 00 - mov ecx,[ecx*4+"ePSXe ENG.exe"+42AF40]// ---------- INJECTING HERE ----------03050434: 89 1C 08 - mov [eax+ecx],ebx03050437: 81 E2 FC FF 1F 00 - and edx,001FFFFC// ---------- DONE INJECTING ----------0305043D: BB 20 00 26 03 - mov ebx,0326002003050442: 03 DA - add ebx,edx03050444: 8B 03 - mov eax,[ebx]03050446: 3D 40 00 05 03 - cmp eax,030500400305044B: 75 01 - jne 0305044E0305044D: C3 - ret 0305044E: B8 40 00 05 03 - mov eax,0305004003050453: 8B 0C 10 - mov ecx,[eax+edx]03050456: B8 20 00 4F 03 - mov eax,034F00200305045B: 8B 04 10 - mov eax,[eax+edx]} Изменено 1 февраля, 2016 пользователем Razi Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 1 февраля, 2016 Поделиться Опубликовано 1 февраля, 2016 (изменено) Попробуй:На всякий случайИ того окончательный скрипт по заморозке нужного адреса при определённых условиях, который устроил Razi:{ Game : ePSXe ENG.exe Version: Date : 2016-02-01 Author : User This script does blah blah blah}[ENABLE]aobscan(INJECT,89 1C 08 81 E2 FC FF 1F 00) // should be uniquealloc(newmem,$1000)label(code)label(return)newmem: cmp byte ptr [00A3F3E5],2 jne code // а дальше что? А дальше вот это: mov ebx,[eax+ecx] // замораживаем адрес на нужное значение - какое-то игровое // значение - ты сам его знаешь.code: mov [eax+ecx],ebx and edx,001FFFFC jmp returnINJECT: jmp newmem nop nop nop nopreturn:registersymbol(INJECT)[DISABLE]INJECT: db 89 1C 08 81 E2 FC FF 1F 00unregistersymbol(INJECT)dealloc(newmem){// ORIGINAL CODE - INJECTION POINT: 030504340305040B: 81 FA 00 00 80 1F - cmp edx,1F80000003050411: 74 62 - je 0305047503050413: 8B 0D 84 0A 51 00 - mov ecx,["ePSXe ENG.exe"+110A84]03050419: F7 C1 00 00 01 00 - test ecx,100000305041F: 75 53 - jne 0305047403050421: 8B C8 - mov ecx,eax03050423: 89 C2 - mov edx,eax03050425: C1 E9 10 - shr ecx,1003050428: 25 FF FF 00 00 - and eax,0000FFFF0305042D: 8B 0C 8D 40 AF 82 00 - mov ecx,[ecx*4+"ePSXe ENG.exe"+42AF40]// ---------- INJECTING HERE ----------03050434: 89 1C 08 - mov [eax+ecx],ebx03050437: 81 E2 FC FF 1F 00 - and edx,001FFFFC// ---------- DONE INJECTING ----------0305043D: BB 20 00 26 03 - mov ebx,0326002003050442: 03 DA - add ebx,edx03050444: 8B 03 - mov eax,[ebx]03050446: 3D 40 00 05 03 - cmp eax,030500400305044B: 75 01 - jne 0305044E0305044D: C3 - ret 0305044E: B8 40 00 05 03 - mov eax,0305004003050453: 8B 0C 10 - mov ecx,[eax+edx]03050456: B8 20 00 4F 03 - mov eax,034F00200305045B: 8B 04 10 - mov eax,[eax+edx]} { Game : ePSXe ENG.exe Version: Date : 2016-02-01 Author : User This script does blah blah blah}[ENABLE]aobscan(INJECT,89 1C 08 81 E2 FC FF 1F 00) // should be uniquealloc(newmem,$1000)label(code)label(return)newmem: cmp byte ptr [00A3F3E5],2 jne code push edx lea edx,[eax+ecx] cmp edx,00A444E8 pop edx jne code mov ebx,[eax+ecx]code: mov [eax+ecx],ebx and edx,001FFFFC jmp returnINJECT: jmp newmem nop nop nop nopreturn:registersymbol(INJECT)[DISABLE]INJECT: db 89 1C 08 81 E2 FC FF 1F 00unregistersymbol(INJECT)dealloc(newmem){// ORIGINAL CODE - INJECTION POINT: 030504340305040B: 81 FA 00 00 80 1F - cmp edx,1F80000003050411: 74 62 - je 0305047503050413: 8B 0D 84 0A 51 00 - mov ecx,["ePSXe ENG.exe"+110A84]03050419: F7 C1 00 00 01 00 - test ecx,100000305041F: 75 53 - jne 0305047403050421: 8B C8 - mov ecx,eax03050423: 89 C2 - mov edx,eax03050425: C1 E9 10 - shr ecx,1003050428: 25 FF FF 00 00 - and eax,0000FFFF0305042D: 8B 0C 8D 40 AF 82 00 - mov ecx,[ecx*4+"ePSXe ENG.exe"+42AF40]// ---------- INJECTING HERE ----------03050434: 89 1C 08 - mov [eax+ecx],ebx03050437: 81 E2 FC FF 1F 00 - and edx,001FFFFC// ---------- DONE INJECTING ----------0305043D: BB 20 00 26 03 - mov ebx,0326002003050442: 03 DA - add ebx,edx03050444: 8B 03 - mov eax,[ebx]03050446: 3D 40 00 05 03 - cmp eax,030500400305044B: 75 01 - jne 0305044E0305044D: C3 - ret0305044E: B8 40 00 05 03 - mov eax,0305004003050453: 8B 0C 10 - mov ecx,[eax+edx]03050456: B8 20 00 4F 03 - mov eax,034F00200305045B: 8B 04 10 - mov eax,[eax+edx]} { Game : ePSXe ENG.exe Version: Date : 2016-02-01 Author : User This script does blah blah blah}[ENABLE]aobscan(INJECT,89 1C 08 81 E2 FC FF 1F 00) // should be uniquealloc(newmem,$1000)label(code)label(code1)label(return)newmem: cmp byte ptr [00A3F3E5],2 jne code push edx lea edx,[eax+ecx] cmp edx,00A444E8 pop edx jne code cmp ebx,8 jne @f mov [eax+ecx],8 jmp code1@@: cmp ebx,#72 jne code1 mov [eax+ecx],#72code1: mov ebx,[eax+ecx]code: mov [eax+ecx],ebx and edx,001FFFFC jmp returnINJECT: jmp newmem nop nop nop nopreturn:registersymbol(INJECT)[DISABLE]INJECT: db 89 1C 08 81 E2 FC FF 1F 00unregistersymbol(INJECT)dealloc(newmem){// ORIGINAL CODE - INJECTION POINT: 030504340305040B: 81 FA 00 00 80 1F - cmp edx,1F80000003050411: 74 62 - je 0305047503050413: 8B 0D 84 0A 51 00 - mov ecx,["ePSXe ENG.exe"+110A84]03050419: F7 C1 00 00 01 00 - test ecx,100000305041F: 75 53 - jne 0305047403050421: 8B C8 - mov ecx,eax03050423: 89 C2 - mov edx,eax03050425: C1 E9 10 - shr ecx,1003050428: 25 FF FF 00 00 - and eax,0000FFFF0305042D: 8B 0C 8D 40 AF 82 00 - mov ecx,[ecx*4+"ePSXe ENG.exe"+42AF40]// ---------- INJECTING HERE ----------03050434: 89 1C 08 - mov [eax+ecx],ebx03050437: 81 E2 FC FF 1F 00 - and edx,001FFFFC// ---------- DONE INJECTING ----------0305043D: BB 20 00 26 03 - mov ebx,0326002003050442: 03 DA - add ebx,edx03050444: 8B 03 - mov eax,[ebx]03050446: 3D 40 00 05 03 - cmp eax,030500400305044B: 75 01 - jne 0305044E0305044D: C3 - ret0305044E: B8 40 00 05 03 - mov eax,0305004003050453: 8B 0C 10 - mov ecx,[eax+edx]03050456: B8 20 00 4F 03 - mov eax,034F00200305045B: 8B 04 10 - mov eax,[eax+edx]} Изменено 1 февраля, 2016 пользователем Garik66 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 2 февраля, 2016 Автор Поделиться Опубликовано 2 февраля, 2016 скрипт по заморозке нужного адреса при определённых условияхДа, кстати такой скрипт и нужен был. Да, твой скрипт пускает и на 72 и на 8, так и надо.Вчера 2 часа проверял твой скрипт, и хотел узнать когда в замораживаемом адресе значение = 8. И узнал еще одни нюансы, оказывается в этом адресе 00A444E8 нужно еще разрешить не только 72 и 8, но и 104 и 40. Но, я так понимаю это будет уже слишком сложно написать такой скрипт. Потому что я попробовал добавить попроще эти 104 и 40 в скрипт, но ничего не получилось. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 2 февраля, 2016 Поделиться Опубликовано 2 февраля, 2016 Но, я так понимаю это будет уже слишком сложно написать такой скрипт.Не сложно. Сейчас сделаю. Потому что я попробовал добавить попроще эти 104 и 40 в скрипт, но ничего не получилось.Не понимаю почему, ведь уже скрипт перед глазами.{ Game : ePSXe ENG.exe Version: Date : 2016-02-01 Author : User This script does blah blah blah}[ENABLE]aobscan(INJECT,89 1C 08 81 E2 FC FF 1F 00) // should be uniquealloc(newmem,$1000)label(code)label(code1)label(return)newmem: cmp byte ptr [00A3F3E5],2 jne code push edx lea edx,[eax+ecx] cmp edx,00A444E8 pop edx jne code cmp ebx,8 jne @f mov [eax+ecx],8 jmp code1@@: cmp ebx,#40 jne @f mov [eax+ecx],#40 jmp code1@@: cmp ebx,#72 jne @f mov [eax+ecx],#72 jmp code1@@: cmp ebx,#104 jne code1 mov [eax+ecx],#104code1: mov ebx,[eax+ecx]code: mov [eax+ecx],ebx and edx,001FFFFC jmp returnINJECT: jmp newmem nop nop nop nopreturn:registersymbol(INJECT)[DISABLE]INJECT: db 89 1C 08 81 E2 FC FF 1F 00unregistersymbol(INJECT)dealloc(newmem){// ORIGINAL CODE - INJECTION POINT: 030504340305040B: 81 FA 00 00 80 1F - cmp edx,1F80000003050411: 74 62 - je 0305047503050413: 8B 0D 84 0A 51 00 - mov ecx,["ePSXe ENG.exe"+110A84]03050419: F7 C1 00 00 01 00 - test ecx,100000305041F: 75 53 - jne 0305047403050421: 8B C8 - mov ecx,eax03050423: 89 C2 - mov edx,eax03050425: C1 E9 10 - shr ecx,1003050428: 25 FF FF 00 00 - and eax,0000FFFF0305042D: 8B 0C 8D 40 AF 82 00 - mov ecx,[ecx*4+"ePSXe ENG.exe"+42AF40]// ---------- INJECTING HERE ----------03050434: 89 1C 08 - mov [eax+ecx],ebx03050437: 81 E2 FC FF 1F 00 - and edx,001FFFFC// ---------- DONE INJECTING ----------0305043D: BB 20 00 26 03 - mov ebx,0326002003050442: 03 DA - add ebx,edx03050444: 8B 03 - mov eax,[ebx]03050446: 3D 40 00 05 03 - cmp eax,030500400305044B: 75 01 - jne 0305044E0305044D: C3 - ret0305044E: B8 40 00 05 03 - mov eax,0305004003050453: 8B 0C 10 - mov ecx,[eax+edx]03050456: B8 20 00 4F 03 - mov eax,034F00200305045B: 8B 04 10 - mov eax,[eax+edx]} 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 2 февраля, 2016 Автор Поделиться Опубликовано 2 февраля, 2016 Ну ты и быстрый. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 2 февраля, 2016 Поделиться Опубликовано 2 февраля, 2016 Ну ты и быстрый.Так скрипт уже написан, просто добавить два доп. условия. Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 2 февраля, 2016 Автор Поделиться Опубликовано 2 февраля, 2016 (изменено) Проверил, скрипт работает замечательно. ведь уже скрипт перед глазами.Я не вижу скрипт в целом. Я лишь вижу команды по кусочкам, но собрать целое из этой картины мне трудно, даже если понимаю большинство команд в скрипте. Я вставлял вот сюда:newmem: cmp byte ptr [00A3F3E5],2 jne code push edx lea edx,[eax+ecx] cmp edx,00A444E8 pop edx jne code cmp ebx,8 jne @f mov [eax+ecx],8 cmp ebx,#40 // вот так вставлял jne @f mov [eax+ecx],#40 cmp ebx,#104 // и вот так jne @f mov [eax+ecx],#104 jmp code1 Изменено 2 февраля, 2016 пользователем Razi Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 2 февраля, 2016 Поделиться Опубликовано 2 февраля, 2016 (изменено) Проверил, скрипт работает замечательно.Отлично. Я не вижу скрипт в целом.Я тебе писал уже совет - прокоментируй все строчки в скрипте, как я тебе делал в самом начале (совместной работы ) .По началу это очень помогает читать скрипт с листа и находить ошибки (если они есть). Изменено 2 февраля, 2016 пользователем Garik66 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 2 февраля, 2016 Автор Поделиться Опубликовано 2 февраля, 2016 (изменено) писал уже совет - прокоментируй все строчки в скрипте, как я тебе делал в самом началеВот это кстати, самая полезная вещь. Хотел как раз тебя попросить, описать строчки в скрипте хотя бы сокращенно. Потому что сам могу напутать кто куда прыгает в скрипте. Или я могу сам описать некоторые строчки, а ты можешь лишь дополнить, то что я не понял. Изменено 2 февраля, 2016 пользователем Razi Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 2 февраля, 2016 Поделиться Опубликовано 2 февраля, 2016 (изменено) Или я могу сам описать некоторые строчки, а ты лишь дополнишь, то что я не понял.Так будет лучше для твоего понимания. Пиши, выкладывай, если будет ошибка - поправлю со своими кометами. Изменено 2 февраля, 2016 пользователем Garik66 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 2 февраля, 2016 Поделиться Опубликовано 2 февраля, 2016 (изменено) У меня так получилось решить эти две задачи, кому будет интересно.example - это адрес созданный специально для удостоверения что клавиши автоматически нажимаются (на этот адрес стандартным путем установлены горячие клавиши Home и End, первая прибавляет 5 другая отнимает)Итак, выбираем любой процесс, (для тестирования сойдет любой), активируем луа скрипт, идем в таблицу, меняем значение Adr00A47010 на 1, видим что к example прибавилось 5 (хотя мы не нажимали Home. Теперь меняем его на 0, значение уменьшилось на 5, хотя мы не нажимали End.************************************FREZZERМеняем значение Adr00A3F3E5 на 2, значение адреса Adr00A444E8 замораживается. Меняем на что нибудь другое, размораживаетсяДля твоего случая, нужно* В таблице удалить example* Для Adr00A47010, Adr00A3F3E5, Adr00A444E8 - поменять адреса (в самой таблице). Так как сейчас как видно на картинке эти адреса 02130000, 02130020, 02130030. Для forkeys адрес не меняем.В скрипте удалить первые четыре строчки А вот скрипт для клавиш Control и буквы (такой же как и первый, но с другими клавишами. В нем также нужно удат\лить первые четыре строчки). Проект СЕ - Control + буква + Freezerhttp://rghost.ru/8GJw2ZMsYПроект СЕ - Home End + Freezerhttp://rghost.ru/727qBD45L Таймер на заморозку работает с частотой 400 милисекунд, когда же заметит что значение 2 и пора замораживать, переходит в режим "поехали" и морозит уже чаще, с частотой 10, потом, если значение меняется на НЕ 2, переходит на частоту 400.Частоту можно выбрать свою.autoAssemble([[globalalloc(Adr00A47010, 4)]])autoAssemble([[globalalloc(example, 4)]])autoAssemble([[globalalloc(Adr00A3F3E5, 4)]])autoAssemble([[globalalloc(Adr00A444E8, 4)]])autoAssemble([[globalalloc(forkeys, 4)]])al = getAddressList()Adr00A3F3E5 = al.getMemoryRecordByDescription("Adr00A3F3E5")Adr00A444E8 = al.getMemoryRecordByDescription("Adr00A444E8")Adr00A47010 = al.getMemoryRecordByDescription("Adr00A47010")forkeys = al.getMemoryRecordByDescription("forkeys")function freezeriftwo(timer)if Adr00A3F3E5.Value~="??" thenif Adr00A444E8.Value~="??" thenif Adr00A3F3E5.Value=="2" thenAdr00A444E8.Active=truetimer_setInterval(t, 10)elseAdr00A444E8.Active=falsetimer_setInterval(t, 400)endendendendt=createTimer(nil)timer_setInterval(t, 400)timer_onTimer(t, freezeriftwo)timer_setEnabled(t, true)function forsimu(timer)if Adr00A47010.Value~="??" thenif Adr00A47010.Value=="1" thenif forkeys.Value=="0" thenforkeys.Value="1"keyDown(VK_HOME)sleep(100)keyUp(VK_HOME)endelseif Adr00A47010.Value~="??" thenif Adr00A47010.Value=="0" thenif forkeys.Value=="1" thenforkeys.Value="0"keyDown(VK_END)sleep(100)keyUp(VK_END)endendendendendendt2=createTimer(nil)timer_setInterval(t2, 400)timer_onTimer(t2, forsimu)timer_setEnabled(t2, true)autoAssemble([[globalalloc(Adr00A47010, 4)]])autoAssemble([[globalalloc(example, 4)]])autoAssemble([[globalalloc(Adr00A3F3E5, 4)]])autoAssemble([[globalalloc(Adr00A444E8, 4)]])autoAssemble([[globalalloc(forkeys, 4)]])al = getAddressList()Adr00A3F3E5 = al.getMemoryRecordByDescription("Adr00A3F3E5")Adr00A444E8 = al.getMemoryRecordByDescription("Adr00A444E8")Adr00A47010 = al.getMemoryRecordByDescription("Adr00A47010")forkeys = al.getMemoryRecordByDescription("forkeys")function freezeriftwo(timer)if Adr00A3F3E5.Value~="??" thenif Adr00A444E8.Value~="??" thenif Adr00A3F3E5.Value=="2" thenAdr00A444E8.Active=truetimer_setInterval(t, 10)elseAdr00A444E8.Active=falsetimer_setInterval(t, 400)endendendendt=createTimer(nil)timer_setInterval(t, 100)timer_onTimer(t, freezeriftwo)timer_setEnabled(t, true)function forsimu(timer)if Adr00A47010.Value~="??" thenif Adr00A47010.Value=="1" thenif forkeys.Value=="0" thenforkeys.Value="1"keyDown(VK_CONTROL)keyDown(VK_I)sleep(100)keyUp(VK_I)keyUp(VK_CONTROL)endelseif Adr00A47010.Value~="??" thenif Adr00A47010.Value=="0" thenif forkeys.Value=="1" thenforkeys.Value="0"keyDown(VK_CONTROL)keyDown(VK_U)sleep(100)keyUp(VK_U)keyUp(VK_CONTROL)endendendendendendt2=createTimer(nil)timer_setInterval(t2, 400)timer_onTimer(t2, forsimu)timer_setEnabled(t2, true) Изменено 2 февраля, 2016 пользователем AntonVitalievich Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 2 февраля, 2016 Автор Поделиться Опубликовано 2 февраля, 2016 если значение меняется на НЕ 2, переходит на частоту 400А если не нужно замораживать, то можно поставить на раз в час 3600000 милисекунд?Мне нужно немного времени чтоб это все попробовать, не меньше часа. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 2 февраля, 2016 Поделиться Опубликовано 2 февраля, 2016 (изменено) А если не нужно замораживать, то можно поставить на раз в час 3600000 милисекунд?Мне нужно немного времени чтоб это все попробовать, не меньше часа.Ты не так понял, это не заморозка переходит на 400, а скрипт. Заморозка прекращается сразу как только Не 2.Скрипт работает то на 10 то на 400. А заморозка работает только на 10 милисекундах. А вообще я сейчас заметил ошибку в выложенном мною скрипте. Именно - 10 милисекунд, это не частота замораживания адреса, а частота с какой скрипт ставит адрес на заморозку. Хотя достаточно его же один раз заморозить. Зачем же активировать заморозку постоянно, да еще с частотой 10. Надо переделать Изменено 2 февраля, 2016 пользователем AntonVitalievich Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 2 февраля, 2016 Автор Поделиться Опубликовано 2 февраля, 2016 (изменено) Кстати да: скрипт где нажимаются кнопки home и end это должен быть один скрипт,а отдельный скрипт с заморозкой это должен быть другой скрипт. То есть у них отдельные разные задачи. Извиняюсь, если недостаточно проинформировал.И control + буква это отдельный один скрипт, а заморозка отдельный второй скрипт. Изменено 2 февраля, 2016 пользователем Razi Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 2 февраля, 2016 Поделиться Опубликовано 2 февраля, 2016 (изменено) Кстати да: скрипт где нажимаются кнопки home и end это должен быть один скрипт,а отдельный скрипт с заморозкой это должен быть другой скрипт. То есть у них отдельные разные задачи. Извиняюсь, если недостаточно проинфоримровал.Да, у меня как раз так сделано. Один скрипт на клавиши, другой на заморозку. Вот напримера этот кусок вставляется в самое начало в луа энджине и нужен как ты сам понимаешь для создания флагов, и для связи скрипта с тем что в таблицеautoAssemble([[globalalloc(Adr00A47010, 4)]])autoAssemble([[globalalloc(example, 4)]])autoAssemble([[globalalloc(Adr00A3F3E5, 4)]])autoAssemble([[globalalloc(Adr00A444E8, 4)]])autoAssemble([[globalalloc(forkeys, 4)]])al = getAddressList()Adr00A3F3E5 = al.getMemoryRecordByDescription("Adr00A3F3E5")Adr00A444E8 = al.getMemoryRecordByDescription("Adr00A444E8")Adr00A47010 = al.getMemoryRecordByDescription("Adr00A47010")forkeys = al.getMemoryRecordByDescription("forkeys")Но как я уже сказал, скрипт на заморозку нужно переделать. Так как он замораживает адрез один раз, а потом просто активирует заморозку каждые 10 милисекунд. А надо что бы само значение морозилось с такой частотой.function freezeriftwo(timer)if Adr00A3F3E5.Value~="??" thenif Adr00A444E8.Value~="??" thenif Adr00A3F3E5.Value=="2" thenAdr00A444E8.Active=truetimer_setInterval(t, 10)elseAdr00A444E8.Active=falsetimer_setInterval(t, 400)endendendendt=createTimer(nil)timer_setInterval(t, 100)timer_onTimer(t, freezeriftwo)timer_setEnabled(t, true)function forsimu(timer)if Adr00A47010.Value~="??" thenif Adr00A47010.Value=="1" thenif forkeys.Value=="0" thenforkeys.Value="1"keyDown(VK_CONTROL)keyDown(VK_I)sleep(100)keyUp(VK_I)keyUp(VK_CONTROL)endelseif Adr00A47010.Value~="??" thenif Adr00A47010.Value=="0" thenif forkeys.Value=="1" thenforkeys.Value="0"keyDown(VK_CONTROL)keyDown(VK_U)sleep(100)keyUp(VK_U)keyUp(VK_CONTROL)endendendendendendt2=createTimer(nil)timer_setInterval(t2, 400)timer_onTimer(t2, forsimu)timer_setEnabled(t2, true) Изменено 2 февраля, 2016 пользователем NullAlex Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 2 февраля, 2016 Автор Поделиться Опубликовано 2 февраля, 2016 AntonVitalievich, загляните в личные сообщения Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 2 февраля, 2016 Поделиться Опубликовано 2 февраля, 2016 Получилось. Скрипт на заморозку. Теперь пока не 2, значение с адреса 00A444E8 сохраняется в специально отведенном месте, как стало 2, то процесс сохранения прекращается, начинается процесс копирование сохраненного обратно, в адрес 00A444E8. Если снова НЕ 2, то снова начинается сохранение.Сохраняется с частотой 400. Записывается с 10. Можно изменить частоту. Скрипт на заморозкуfunction freezeriftwo(timer)if Adr00A3F3E5.Value~="??" thenif Adr00A444E8.Value~="??" thenif Adr00A3F3E5.Value=="2" thenAdr00A444E8.Value=savedvalue.Valuetimer_setInterval(t, 10)elsesavedvalue.Value=Adr00A444E8.Valuetimer_setInterval(t, 400)endendendendt=createTimer(nil)timer_setInterval(t, 400)timer_onTimer(t, freezeriftwo)timer_setEnabled(t, true) Второй скрипт без изменений. (скрипт на клавиши)function forsimu(timer)if Adr00A47010.Value~="??" thenif Adr00A47010.Value=="1" thenif forkeys.Value=="0" thenforkeys.Value="1"keyDown(VK_HOME)sleep(100)keyUp(VK_HOME)endelseif Adr00A47010.Value~="??" thenif Adr00A47010.Value=="0" thenif forkeys.Value=="1" thenforkeys.Value="0"keyDown(VK_END)sleep(100)keyUp(VK_END)endendendendendendt2=createTimer(nil)timer_setInterval(t2, 400)timer_onTimer(t2, forsimu)timer_setEnabled(t2, true) Скрипт ддя флагов и соединения луа с таблицкйautoAssemble([[globalalloc(Adr00A47010, 4)]])autoAssemble([[globalalloc(example, 4)]])autoAssemble([[globalalloc(Adr00A3F3E5, 4)]])autoAssemble([[globalalloc(Adr00A444E8, 4)]])autoAssemble([[globalalloc(forkeys, 4)]])autoAssemble([[globalalloc(savedvalue, 4)]])al = getAddressList()Adr00A3F3E5 = al.getMemoryRecordByDescription("Adr00A3F3E5")Adr00A444E8 = al.getMemoryRecordByDescription("Adr00A444E8")Adr00A47010 = al.getMemoryRecordByDescription("Adr00A47010")forkeys = al.getMemoryRecordByDescription("forkeys")savedvalue = al.getMemoryRecordByDescription("savedvalue") Проект Home End + Freezerhttp://rghost.ru/6YBSCRdXb Проек CONTRIOL + буква + Freezerhttp://rghost.ru/8GmQRJv4t Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 2 февраля, 2016 Автор Поделиться Опубликовано 2 февраля, 2016 (изменено) Первый скрипт который нажимает автоматичемки кнопки "home" и "end" работает после 25 минут проверки отлично.А что это за savedvalue? пускай будет в таблице? Изменено 2 февраля, 2016 пользователем Razi Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 2 февраля, 2016 Поделиться Опубликовано 2 февраля, 2016 (изменено) Первый скрипт который нажимает автоматичемки кнопки "home" и "end" работает после 25 минут проверки отлично.А что это за savedvalue? пускай будет в таблице?savedvalue нужен. Нужен для того чтобы работал скрипт для заморозки.Значение из 00A444E8 сохраняется в savedvalue пока в 0A3F3E5 не 2, но когда 00A3F3E5 = 2, тогда запись в savedvalue прекращается, и начинается запись в 00A444E8 из того самого savedvalue. Сначало туда пока не 2, потом обратно оттуда если 2. Изменено 2 февраля, 2016 пользователем AntonVitalievich Ссылка на комментарий Поделиться на другие сайты Поделиться
Razi Опубликовано 2 февраля, 2016 Автор Поделиться Опубликовано 2 февраля, 2016 Попробовал скрипт с control + кнопка работает также хорошо.А скрипт с заморозкой работает не совсем правильно:первая версия скрипта с заморозкой работала, но в 20% замораживало неверное значение. Замораживает адрес, но слишком быстро, не тогда когда нужно, когда значение становится 2 в адресе 00A3F3E5 для сравнения, то происходит заморозка того адреса 00A444E8 в котором должно быть 72, но он еще не успел переключиться на 72 и замораживается неверное значение. вторая версия скрипта с заморозкой работает неверно. Попытаюсь обьяснить систему.Когда в адресе 00A3F3E5 значение = 2, то в адресе 00A444E8 становится 72 и когда становится 72 нужна заморозка,а перед этим (перед 72) в адресе 00A444E8 было любое другое число ненужное нам,поэтому из savedvalue не нужно заносить значения потому что они будут не теми , что нужно.В этой сиситеме как в любом деле есть свои нюансы, и их трудно обьяснить. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения