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

Как использовать отдельно, одни и те же клавиши для трех адресов?


Razi

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

 Если назначить одни и те же горячие клавиши для трех адресов, то можно использовать их отдельно для каждого адреса?

 Приведу пример: Есть три адреса по 2 байта. Назначаем на кнопку вверх добавление +8 к трем адресам, а  кнопку вниз вычитание -8 к трем адресам. Назначить на кнопку вправо и влево переход по адресам и в зависимости где мы находимся добавлять или отнимать 8 от одного из трех адресов.  Например: чтоб добавить 8 второму адресу нужно нажать вправо и потом вверх.

Вообще такое возможно сделать?

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

 Если назначить одни и те же горячие клавиши для трех адресов, то можно использовать их отдельно для каждого адреса?

По дефолтному назначению хоткеев в СЕ думаю - НИКАК. Т.е. при нажатии Горячей клавиши 8 будет прибавляться во все 3 адреса.

Программно думаю можно сделать, ну это уже к более продвинутым програмёрам.

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

Вообще такое возможно сделать?

Razi, посмотри на задачу под другим углом. По-моему та зацыклился на хоткеях и Dison, прав

 

Зачем я не понимаю такие сложности, к чему это?

 

Я примерно понял, что ты хочешь сделать.

 

1. имеем три адреса А, Б и С.

2. с ними работает одна инструкция (И1), соответственно они отличаются указателями на них, т.е. имеем три указателя Ра, Рб и Рс. Смещения у них одинаковые, ну например +04.

 

Вот из этой инфы можно перестроить твою задачу не много по другому.

Влево/вправо - это движение по поинтерам (указателям)Ра->Рб, Рс->Ра , а поинтеры  в коде игры загружаются, где-то выше И1 по коду. Если поставишь бряк на запись на любой А, Б или С и изменишь в игре значение в этих адресах, то ты как раз выйдешь на И2 - инструкцию подгружающую поинтер. 

Соответсвенно мы можем написать скрипт (С2), используя фильтры какой указатель загружен и изменить его на нужный нам.

Ну а на добавление/отнимание 8 в адреса напиши скрипт из И1 (Это будет С1).

 

И тогда уже задача для хоткеев будет разрешима:

1. Хоткей -> изменение указателя из С2

2. Хоткей -> увеличение значения на 8 в адресе из С1

3. Хоткей -> уменьшение значения на 8 в адресе из С1

 

Скрипт, подобный С1 мы уже с тобой писали в предыдущей теме.

Так что - дерзай.

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

Возможно такое сделать.

 

Я делал так:

1 В таблицу СЕ занес три нужных адреса, к которым по отдельности будет прибавляться или от которых будет отниматься число 8

2 Переименовал эти адреса.

FIRSTAdress

SECONDAdress

THIRDAdress

3 Создал АА скрипт который будет создавать специальный флаг

[ENABLE]alloc(SELECTOR,2048)label(BUTTONCHECK)registersymbol(BUTTONCHECK)SELECTOR:BUTTONCHECK:dd 0[DISABLE]unregistersymbol(BUTTONCHECK)dealloc(SELECTOR)
4 Добавил в таблицу новый адрес Add adrees manualy. В настройке этого адреса в поле adrees и description указал BUTTONCHECK. Теперь при активации скрипта этот адресс становиться активным и изначально имеет значение 0

5 Теперь таблица СЕ имеет 3 адреса для вычислений + 1 АА скрипт + 1 адрес "флаг"

6 Написал скрипты Lua. Обязанность этих скриптов состоит в том чтобы

6.1 Управлять при помощи хоткеев (стрелок вправо и влево) значение флага. И менять это значение от 0 до 2. Плюс предотвращение выхода значений флага за пределы от 0 до 2

6.2 Управление вычисление числа 8 при помощи хоткеев (стрелка вверх и вниз). Вычисляется тот или иной из трех адресов, завися от значения флага. 0 - первый адресс. 1 - второй адресс. 2 - третий адресс.

 

al = getAddressList()BUTTONCHECK = al.getMemoryRecordByDescription("BUTTONCHECK")FIRSTAdress = al.getMemoryRecordByDescription("FIRSTAdress")function buttondown()if BUTTONCHECK.Value~="??" thenif FIRSTAdress.Value~="??" thenif BUTTONCHECK.Value=="2" thenBUTTONCHECK.Value="1"elseif BUTTONCHECK.Value~="??" thenif FIRSTAdress.Value~="??" thenif BUTTONCHECK.Value=="1" thenBUTTONCHECK.Value="0"elseif BUTTONCHECK.Value~="??" thenif FIRSTAdress.Value~="??" thenif BUTTONCHECK.Value=="0" thenBUTTONCHECK.Value="0"endendendendendendendendendendfunction buttonup()if BUTTONCHECK.Value~="??" thenif FIRSTAdress.Value~="??" thenif BUTTONCHECK.Value=="0" thenBUTTONCHECK.Value="1"elseif BUTTONCHECK.Value~="??" thenif FIRSTAdress.Value~="??" thenif BUTTONCHECK.Value=="1" thenBUTTONCHECK.Value="2"elseif BUTTONCHECK.Value~="??" thenif FIRSTAdress.Value~="??" thenif BUTTONCHECK.Value=="2" thenBUTTONCHECK.Value="2"endendendendendendendendendendcreateHotkey("buttondown", VK_LEFT);createHotkey("buttonup", VK_RIGHT);al = getAddressList()BUTTONCHECK = al.getMemoryRecordByDescription("BUTTONCHECK")FIRSTAdress = al.getMemoryRecordByDescription("FIRSTAdress")SECONDAdress = al.getMemoryRecordByDescription("SECONDAdress")THIRDAdress = al.getMemoryRecordByDescription("THIRDAdress")function forupper()if BUTTONCHECK.Value~="??" thenif FIRSTAdress.Value~="??" thenif BUTTONCHECK.Value=="0" thenFIRSTAdress.Value=FIRSTAdress.Value+8elseif BUTTONCHECK.Value~="??" thenif FIRSTAdress.Value~="??" thenif BUTTONCHECK.Value=="1" thenSECONDAdress.Value=SECONDAdress.Value+8elseif BUTTONCHECK.Value~="??" thenif FIRSTAdress.Value~="??" thenif BUTTONCHECK.Value=="2" thenTHIRDAdress.Value=THIRDAdress.Value+8endendendendendendendendendendfunction fordownder()if BUTTONCHECK.Value~="??" thenif FIRSTAdress.Value~="??" thenif BUTTONCHECK.Value=="0" thenFIRSTAdress.Value=FIRSTAdress.Value-8elseif BUTTONCHECK.Value~="??" thenif FIRSTAdress.Value~="??" thenif BUTTONCHECK.Value=="1" thenSECONDAdress.Value=SECONDAdress.Value-8elseif BUTTONCHECK.Value~="??" thenif FIRSTAdress.Value~="??" thenif BUTTONCHECK.Value=="2" thenTHIRDAdress.Value=THIRDAdress.Value-8endendendendendendendendendendcreateHotkey("forupper", VK_UP);createHotkey("fordownder", VK_DOWN);
Изменено пользователем NullAlex
Ссылка на комментарий
Поделиться на другие сайты

Кстати догадался до такого. Создать три скрипта с флагами с увеличением и уменьшением одинаковых горячих клавиш (каждый скрипт на каждый адрес), но ведь скрипт если не включен, то на нем не работают горячие клавиши. Для этого подходит только твой вчерашний скрипт с флагом, проверял. Но пока думаю как перемещаться по скриптам с помощью только вправо и влево. То есть, при нажатии вправо включался первый скрипт, а второй и третий выключались. Еще раз вправо, включался второй скрипт, а первый и третий выключались и т.д. В общем при нажатии вправо включались скрипты 1, 2, 3, а при нажатии влево включались скрипты 3, 2, 1.

Есть команда в скриптах которая включает и выключает скрипты?

Просмотрю и твой враиант, но для него нужно время.

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

Есть команда в скриптах которая включает и выключает скрипты?

Есть - люди отключают, я не делал ни разу. Нужно включать логическую проверку на активность скрипта.

Погугли: Например "Как из одного скрипта включить/выключить другой скрипт на ассемблер (на LUA)".

Или создай новую тему с этим вопросом.

Ещё можно посмотреть на форуме СЕ, тебе нужный варианты скриптов, с активирующим скриптом. 

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

Поправка
В СЕ 6.5 используется новая версия Lua по сравнению с 6.4
В версии СЕ 6.4 можно было использовать указанный способ записи кода

FIRSTAdress.Value=FIRSTAdress.Value+8

В версии СЕ 6.5 только

FIRSTAdress.Value = math.floor(FIRSTAdress.Value-8)

Пособие от mgr.inz.Player (CheatEngine.org)

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

Активация и деактивация

 

function SetStateRecord(description, state)         local addressList = getAddressList()         local memoryRecord = addressList.getMemoryRecordByDescription(description)         memoryRecord.Active = stateend

-- ВключитьSetStateRecord('No description', true)
-- Выключить--SetStateRecord('No description', false)
Где

description - название чита в главной таблице

state - состояние заморозки или активации

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

Если назначить одни и те же горячие клавиши для трех адресов

Razi, кажется понял как сделать это в одном скрипте.

мне нужно от тебя:

1. Уточни 8 прибавлять/отнимать от адресов или значений в адресах.

2. Мне нужен АА скрипт с аобсканом из инструкции работающий с этими адресами.

3. Если адреса динамические, то нужен фильтр, который ты используешь, если статичные (как в предыдущем скрипте), то не нужен. 

PS: забыл, тогда ещё пункт 4.

4. Сами адреса.

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

Извиняюсь, что раньше не ответил.

AntonVitalievich,  Круто. Работает скрипт. Но, пока разобрался прошло немного времени и еще проверял некоторое время. Незнал как правильно внедрять Lua скрипт в таблицу, думал надо что-то дописывать, оказалось скрипт уже в готовом сосотоянии. После, снова допустил ошибку поставив значения в адресах в Hex, из-за чего появлялось окно указывающее на ошибку. Пришлось немного повозиться из-за своих ошибок, но все работает хорошо. В общем большое спасибо, сам бы такого не сделал. Добавил плюс к репутации.

 

Зачем я не понимаю такие сложности, к чему это?

А что лучше простой чит, где ставят себе 1,000,000 денег и игра становится через 30 минут не интересной и скучной, потому что уже (в основном) нету цели и не к чему стремиться. То что делаю я, это уже для гурманов. Если вылить в тарелку супа банку меда, то суп будет чересчур приторным, а если добавить щепотку специй для вкуса(так как я хочу), то игра будет вкуснее.

Garik66,  Счас скажу, через пару минут.


1. Уточни 8 прибавлять/отнимать от адресов или значений в адресах. 2. Мне нужен АА скрипт с аобсканом из инструкции работающий с этими адресами. 3. Если адреса динамические, то нужен фильтр, который ты используешь, если статичные (как в предыдущем скрипте), то не нужен. PS: забыл, тогда ещё пункт 4. 4. Сами адреса.

1. Прибавлять/отнимать 8 от значений в адресах.

2. АА скрипт с аобсканом из инструкции работающий с этими адресами, так правильно?

{ Game   : ePSXe ENG.exe  Version:   Date   : 2016-01-22  Author : User  This script does blah blah blah}[ENABLE]//code from here to '[DISABLE]' will be used to enable the cheat  aobscan(INJECT,66 89 1C 01 81 E2 FC FF 1F 00) // should be uniquealloc(newmem,$1000)label(code)label(return)newmem:code:  mov [ecx+eax],bx  and edx,001FFFFC  jmp returnINJECT:  jmp newmem  nop  nop  nop  nop  nopreturn:registersymbol(INJECT)[DISABLE]//code from here till the end of the code will be used to disable the cheatINJECT:  db 66 89 1C 01 81 E2 FC FF 1F 00unregistersymbol(INJECT)dealloc(newmem){// ORIGINAL CODE - INJECTION POINT: 03F9037403F9034B: 81 FA 00 00 80 1F     -  cmp edx,1F80000003F90351: 74 63                 -  je 03F903B603F90353: 8B 0D 84 0A 51 00     -  mov ecx,["ePSXe ENG.exe"+110A84]03F90359: F7 C1 00 00 01 00     -  test ecx,1000003F9035F: 75 54                 -  jne 03F903B503F90361: 8B C8                 -  mov ecx,eax03F90363: 89 C2                 -  mov edx,eax03F90365: C1 E9 10              -  shr ecx,1003F90368: 25 FF FF 00 00        -  and eax,0000FFFF03F9036D: 8B 0C 8D 40 AF 82 00  -  mov ecx,[ecx*4+"ePSXe ENG.exe"+42AF40]// ---------- INJECTING HERE ----------03F90374: 66 89 1C 01           -  mov [ecx+eax],bx03F90378: 81 E2 FC FF 1F 00     -  and edx,001FFFFC// ---------- DONE INJECTING  ----------03F9037E: BB 20 00 1A 04        -  mov ebx,041A002003F90383: 03 DA                 -  add ebx,edx03F90385: 8B 03                 -  mov eax,[ebx]03F90387: 3D 40 00 F9 03        -  cmp eax,03F9004003F9038C: 75 01                 -  jne 03F9038F03F9038E: C3                    -  ret 03F9038F: B8 40 00 F9 03        -  mov eax,03F9004003F90394: 8B 0C 10              -  mov ecx,[eax+edx]03F90397: B8 20 00 43 04        -  mov eax,0443002003F9039C: 8B 04 10              -  mov eax,[eax+edx]}

3. По идее статичные.

4. Адреса по очередности 1-ый, 2-ой, 3-ий, двухбайтные, но могут быть и однобайтными, если что

00A3F3C0 00A3F3C2 00A3F3C4

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

Garik66,  Счас скажу, через пару минут.

Razi, попробуй скрипт, без игры отладка к сожалению не возможна, так что проверка работоспособности скрипта за тобой.

Табличку залил, в ней уже назначены Горячие клавиши:

влево, вправо, вверх и вниз. 

 

Проверишь, отпишись пжлста - мне очень интересно сработает как надо скрипт или нет. 

ForRazi.CT

{ Game   : ePSXe ENG.exe  Version:  Date   : 2016-01-22  Author : User  This script does blah blah blah}[ENABLE]//code from here to '[DISABLE]' will be used to enable the cheataobscan(INJECT,66 89 1C 01 81 E2 FC FF 1F 00) // should be uniquealloc(newmem,$1000)label(code)label(code1)label(code2)label(return)label(flagA)registersymbol(flagA)label(flagB)registersymbol(flagB)label(address)label(address2)label(address3)label(Plus8)label(Minus8)registersymbol(INJECT)newmem:  cmp byte ptr [flagA],1  // Защита от лишних нажатий на стрелочки  jb code1  cmp byte ptr [flagA],3  // Защита от лишних нажатий на стрелочки  ja code2  cmp byte ptr [flagA],1  // Если первый адрес  jne address2  mov [address],00A3F3C0  cmp byte ptr [flagB],1  // + 8 - стрелочка вверх  jne @f  call Plus8  jmp code@@:  cmp byte ptr [flagB],2  // - 8 - стрелочка вниз  jne code  call Minus8  jmp codeaddress2:  cmp byte ptr [flagA],2  // Если второй адрес  jne address3  mov [address],00A3F3C2  cmp byte ptr [flagB],1  // + 8 - стрелочка вверх  jne @f  call Plus8  jmp code@@:  cmp byte ptr [flagB],2  // - 8 - стрелочка вниз  jne code  call Minus8  jmp codeaddress3:  cmp byte ptr [flagA],3  // Если третий адрес  jne code  mov [address],00A3F3C4  cmp byte ptr [flagB],1  // + 8 - стрелочка вверх  jne @f  call Plus8  jmp code@@:  cmp byte ptr [flagB],2  // - 8 - стрелочка вниз  jne code  call Minus8  jmp codecode1:  mov byte ptr [flagA],1  jmp codecode2:  mov byte ptr [flagA],3  jmp codecode:  mov [ecx+eax],bx  and edx,001FFFFC  jmp returnPlus8:  mov byte ptr [flagB],0    push ebx  mov ebx,[address]  add [ebx],8  pop ebx  retMinus8:  mov byte ptr [flagB],0    push ebx  mov ebx,[address]  sub [ebx],8  pop ebx  retflagA: // выбор адреса - стрелочки влево/вправоdb 1flagB: // выбор операции - +/- 8db 0address:dd 0INJECT:  jmp newmem  db 90 90 90 90 90return:[DISABLE]//code from here till the end of the code will be used to disable the cheatINJECT:  db 66 89 1C 01 81 E2 FC FF 1F 00unregistersymbol(flagA)unregistersymbol(flagB)unregistersymbol(INJECT)dealloc(newmem){// ORIGINAL CODE - INJECTION POINT: 03F9037403F9034B: 81 FA 00 00 80 1F     -  cmp edx,1F80000003F90351: 74 63                 -  je 03F903B603F90353: 8B 0D 84 0A 51 00     -  mov ecx,["ePSXe ENG.exe"+110A84]03F90359: F7 C1 00 00 01 00     -  test ecx,1000003F9035F: 75 54                 -  jne 03F903B503F90361: 8B C8                 -  mov ecx,eax03F90363: 89 C2                 -  mov edx,eax03F90365: C1 E9 10              -  shr ecx,1003F90368: 25 FF FF 00 00        -  and eax,0000FFFF03F9036D: 8B 0C 8D 40 AF 82 00  -  mov ecx,[ecx*4+"ePSXe ENG.exe"+42AF40]// ---------- INJECTING HERE ----------03F90374: 66 89 1C 01           -  mov [ecx+eax],bx03F90378: 81 E2 FC FF 1F 00     -  and edx,001FFFFC// ---------- DONE INJECTING  ----------03F9037E: BB 20 00 1A 04        -  mov ebx,041A002003F90383: 03 DA                 -  add ebx,edx03F90385: 8B 03                 -  mov eax,[ebx]03F90387: 3D 40 00 F9 03        -  cmp eax,03F9004003F9038C: 75 01                 -  jne 03F9038F03F9038E: C3                    -  ret03F9038F: B8 40 00 F9 03        -  mov eax,03F9004003F90394: 8B 0C 10              -  mov ecx,[eax+edx]03F90397: B8 20 00 43 04        -  mov eax,0443002003F9039C: 8B 04 10              -  mov eax,[eax+edx]} 
Изменено пользователем Garik66
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

Успел скачать старую версию таблички.

Ждём тестирование новой  :-D .

 

Я пробежался взглядом мой скрипт и AntonVitalievich, у на с обоих нет защиты от лишних (случайных) нажатий на стрелки вверх/вниз. 

На стрелки влево/вправо есть защита.

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

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

Старая версия таблички не работала, думал может я что-то не так делаю. В ней, где сейчас от 1 до 3 (Выбор адреса) значение ходило свободно и на 4 и 5; и 255 и 254. И не работали кнопки вверх и вниз, то есть не было +8 и -8 к значению в адресе, а при нажатии на стрелки вверх вниз "Выбор операции +/- 8" значение становилось на секунду при нажатии кнопки вверх 255, при вниз 254. А в новом скрипте 1 и 2.

Новый скрипт работает так как нужно, всего пару минут потестил, но видно что должен работать правильно. Значения обычно идут вперед, они двухбайтовые, должны дойти до 65535 и потом снова с 0, по идее. Но это не важно. Спасибо.

Почитал некоторые туториалы от MasterGH, и даже не смотрел еще его скрипт, тоже думаю проверить тот скрипт. Так понимаю нужно написать три таких скрипта, на активацию деактивациию и добавить три скрипта на +/- 8 ?

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

Новый скрипт работает так как нужно,

Отлично!!! 

Посмотри сколько способов реализации тебе предоставили. И это здорово.

Так понимаю нужно написать три таких скрипта, на активацию деактивациию и добавить три скрипта на +/- 8 ?

Я скрипт MasterGH смотрел бегло, он предоставил тебе скрипт на отключение другого скрипта. Т.е. это только сырец, его ещё нужно приспособить.

Думаю в твоём способе.

Нужен один скрипт от MasterGH. Но продумать, как отключать твоих три скрипта (на +/- по 3 адресам) и переписать скрипт MasterGH под твои нужды. 

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

А, да точно, там же нужно вправо как-то прикрутить на включение первого адреса и отключение двух других, и снова при нажатии вправо включить второй адрес а 1-ый и 3-ий должны быть оключены, это реализовать не так легко. По идее метод должен быть такой же, как в ваших двух скриптах. 

local addressList = getAddressList()  // интересно, что значит эта команда? И что должно быть в скобках? номер адреса?

Быстрый поиск в интернете пока что, ничего не дал.

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

Тебе нужны названия скриптов:

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

Попробуй сам, не получается выкладывай что сделал  -> ребята поправят, ребят знающих LUA на форуме много. 


PS: Я не прав MasterGH дал пояснение же:

 

Где description - название чита в главной таблице state - состояние заморозки или активации

Так что в тех скобках скорее всего ничего не должно быть. 

local addressList = getAddressList()

 Получает данные со всей твоей таблицы.

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

Функцию SetStateRecord трогать не надо и в скобках в getAddressList() ничего не должно быть.

Имя чита вписать свое уникальное и состояние false(выключить) или true(включить)

SetStateRecord('No description', true) 
Ссылка на комментарий
Поделиться на другие сайты

Lua скрипт с защитой от выхода значений адресов за пределы 0 и 100

Благодарность mgr.inz.Player (CheatEngine.org)

 

al = getAddressList()BUTTONCHECK = al.getMemoryRecordByDescription("BUTTONCHECK")FIRSTAdress = al.getMemoryRecordByDescription("FIRSTAdress")SECONDAdress = al.getMemoryRecordByDescription("SECONDAdress")THIRDAdress = al.getMemoryRecordByDescription("THIRDAdress")function buttondown()if BUTTONCHECK.Value~="??" thenif FIRSTAdress.Value~="??" thenif BUTTONCHECK.Value<"3" thenif BUTTONCHECK.Value>"0" thenBUTTONCHECK.Value=math.floor(BUTTONCHECK.Value-1)endendendendendcreateHotkey("buttondown", VK_LEFT);function buttonup()if BUTTONCHECK.Value~="??" thenif FIRSTAdress.Value~="??" thenif BUTTONCHECK.Value<"2" thenif BUTTONCHECK.Value>"-1" thenBUTTONCHECK.Value=math.floor(BUTTONCHECK.Value+1)endendendendendcreateHotkey("buttonup", VK_RIGHT);function forupperFIRSTAdress()if tonumber(FIRSTAdress.Value) < 92 thenif BUTTONCHECK.Value~="??" thenif FIRSTAdress.Value~="??" thenif BUTTONCHECK.Value=="0" thenFIRSTAdress.Value=math.floor(FIRSTAdress.Value+8)endendendendendcreateHotkey("forupperFIRSTAdress", VK_UP);function forupperSECONDAdress()if tonumber(SECONDAdress.Value) < 92 thenif BUTTONCHECK.Value~="??" thenif FIRSTAdress.Value~="??" thenif BUTTONCHECK.Value=="1" thenSECONDAdress.Value=math.floor(SECONDAdress.Value+8)endendendendendcreateHotkey("forupperSECONDAdress", VK_UP);function forupperTHIRDAdress()if tonumber(THIRDAdress.Value) < 92 thenif BUTTONCHECK.Value~="??" thenif FIRSTAdress.Value~="??" thenif BUTTONCHECK.Value=="2" thenTHIRDAdress.Value=math.floor(THIRDAdress.Value+8)endendendendendcreateHotkey("forupperTHIRDAdress", VK_UP);function fordownderFIRSTAdress()if tonumber(FIRSTAdress.Value) > 8 thenif BUTTONCHECK.Value~="??" thenif FIRSTAdress.Value~="??" thenif BUTTONCHECK.Value=="0" thenFIRSTAdress.Value=math.floor(FIRSTAdress.Value-8)endendendendendcreateHotkey("fordownderFIRSTAdress", VK_DOWN)function fordownderSECONDAdress()if tonumber(SECONDAdress.Value) > 8 thenif BUTTONCHECK.Value~="??" thenif FIRSTAdress.Value~="??" thenif BUTTONCHECK.Value=="1" thenSECONDAdress.Value=math.floor(SECONDAdress.Value-8)endendendendendcreateHotkey("fordownderSECONDAdress", VK_DOWN)function fordownderTHIRDAdress()if tonumber(THIRDAdress.Value) > 8 thenif BUTTONCHECK.Value~="??" thenif FIRSTAdress.Value~="??" thenif BUTTONCHECK.Value=="2" thenTHIRDAdress.Value=math.floor(THIRDAdress.Value-8)endendendendendcreateHotkey("fordownderTHIRDAdress", VK_DOWN)

Один из вариантов как клавишами вправо и влево отключать один скрипт и включать другой

1 В таблице СЕ имеется три скрипта AA + 1 скрипт AA для создания флага + Сам адресс флага:

 

три скрипта AA

SCRIPTONE

SCRIPTTWO

SCRIPTTHREE

 

1 скрипт AA для создания флага

SCRIPTFLAG (нигде не значится в Lua скрипте и активируется вручную

 

Сам адресс флага

BUTTONCHECK

 

2 Остается активировать скрипты Lua

Один из них управляет значением флага

Другой управляет активацией\деактивацией трех скриптов

Иной отключает все три скрипта (клавиша Numpad 0 )

 

al = getAddressList()BUTTONCHECK = al.getMemoryRecordByDescription("BUTTONCHECK")SCRIPTONE = al.getMemoryRecordByDescription("SCRIPTONE")SCRIPTTWO = al.getMemoryRecordByDescription("SCRIPTTWO")SCRIPTTHREE = al.getMemoryRecordByDescription("SCRIPTTHREE")function buttondown()if BUTTONCHECK.Value~="??" thenif BUTTONCHECK.Value<"3" thenif BUTTONCHECK.Value>"0" thenBUTTONCHECK.Value=math.floor(BUTTONCHECK.Value-1)endendendendcreateHotkey("buttondown", VK_LEFT);function buttonup()if BUTTONCHECK.Value~="??" thenif BUTTONCHECK.Value<"2" thenif BUTTONCHECK.Value>"-1" thenBUTTONCHECK.Value=math.floor(BUTTONCHECK.Value+1)endendendendcreateHotkey("buttonup", VK_RIGHT);function scriptchangerone()if BUTTONCHECK.Value~="??" thenif BUTTONCHECK.Value=="0" thenSCRIPTONE.Active = trueSCRIPTTWO.Active = falseSCRIPTTHREE.Active = falseelseif BUTTONCHECK.Value~="??" thenif BUTTONCHECK.Value=="1" thenSCRIPTONE.Active = falseSCRIPTTWO.Active = trueSCRIPTTHREE.Active = falseendendendendendcreateHotkey("scriptchangerone", VK_LEFT)function scriptchangertwo()if BUTTONCHECK.Value~="??" thenif BUTTONCHECK.Value=="1" thenSCRIPTONE.Active = falseSCRIPTTWO.Active = trueSCRIPTTHREE.Active = falseelseif BUTTONCHECK.Value~="??" thenif BUTTONCHECK.Value=="2" thenSCRIPTONE.Active = falseSCRIPTTWO.Active = falseSCRIPTTHREE.Active = trueendendendendendcreateHotkey("scriptchangertwo", VK_RIGHT)function scriptoff()SCRIPTONE.Active = falseSCRIPTTWO.Active = falseSCRIPTTHREE.Active = falseendcreateHotkey("scriptoff", VK_NUMPAD0)

 

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

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

Остается активировать скрипты Lua

Как лучше актривировать Lua скрипты? ведь есть три способа:

1) Table->Show Cheat Table Lua Script; 2) В окне Memory Viewer->Tools->Lua Engine

3) Memory Viewer->Tools->Auto Assemble и в этом окне создать скрипт (и добавить {$lua} и т.д. что бы приняло скрипт) и потом Assign to current cheat table.

 

Пока что, скрипт работает не совсем правильно:

при нажатии вправо, находясь на SCRIPTONE, включается 2-ой, но SCRIPTONE  т.е. 1-ый скрипт остается влюченным тоже. (BUTTONCHECK при этом с 0 становится 1, так как и должен насколько понял.)

при нажатии еще раз вправо, при включенных 1-ом и 2-ом скрипте, включаются 2-ой и 3-ий скрипт

при нажатии еще раз вправо, при включенных 2-ом и 3-ом скрипте, включается только 3-ий скрипт

(имена у скриптов английские SCRIPTONE, SCRIPTTWO, SCRIPTTHREE)

 

При нажатии влево, как раз скрипты переключаются правильно, так как надо. Переход с 3 на 2 на 1.

Клавиша Numpad 0 - не отключает три скрипта. Отключает один из скриптов тогда, когда включен лишний скрипт. Но она мне и не нужна.

 

Опишу свои действия включения, может быть ошибка у меня. Чтобы включить Lua скрипт нажимаю Table дальше Show Cheat Table Lua Script дальше Execute script и включаю (ставлю галочку на) SCRIPTFLAG.


Хотя, возможно дело в Cheat Engine, ведь программа не любит когда включают одновременно два скрипта. То есть при нажатии вправо находясь на 1-ом скрипте, включается второй, а после этого выключается 1-ый, но программа не выключает его, потому что были включены два скрипта одновременно. То есть нужно чтобы при нажатии вправо находясь на 1-ом скрипте, сначала выключался 1-ый скрипт, а 2-ой включался.

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

Я обычно использую горячие клавишы Ctrl+Alt+L для Lua. И Ctrl+Alt+A для AA-скрипта

При нажатии Ctrl+Alt+L открывается главное окно Lua Engine, которое также можно открыть через Table - Show cheat table

В нем и активирую скрипт. P.S. Если нажать клавишу активации дважды, то скрипт "удвоится", поэтому если после первой активации появляется желание внести коррективы, в скрипт, то в таком случае лучше перезапустить СЕ, и повторно в Lua активировать новый скрипт.

У меня все работает. Я активирую Lua, затем АА скрипт для флага, далее нажимаю клавиши влево или вправо (перед тем как я еще не нажал их, 3 скрипта остаются еще не активированными, и самому активировать их не нужно).

Я не знаю как прикрепить файл проекта СЕ, так мы подсобил.

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

RAZI

Значит скрипт так написан. Вообще в последнее время вы новички ахринели. Почему? Я объясню. Вы не знаете простейшего. А уже в lua писать хотите. Сначало тотуриал пройди и выучи наизусть. Чтобы не задавать лишних вопросов. Это вопервых а во вторых нечего ты никогда не будешь знать если сам не поймешь тонкости всего этого. А вам проще спросил за тебя все решили, скрипты написали и вауля все готово. Таким даже помогать не хочется. Тебе запилили скрипт а ты и ща не доволен то там у тя не робит то там не так вот возьми и допили его, доведи до ума тебе уже все разжевали здесь.

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

offtopic.gif

 

RAZI

Dison, ты чего наехал, не стой ноги встал что ли.

Razi, просто хочет попробовать все предложенные варианты и это правильно и пока есть возможность, задаёт вопросы авторам предложенных проектов.

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

http://rghost.ru/8T4nDZ2Vw

Проект CE

Версия CE 6.5. Для работы проекта нужно открыть Lua (Ctrl+Alt+L) и нажать кнопку активации (скрипт уже находиться в Lua Engine. Затем вручную активировать AA скрипт флага. Далее можно нажимать клавиши вправо-влево.

 

Три АА скрипта пустые (только лишь имеют Enable/DIsable) но для теста подойдет. Нужно присоединиться к какому нибудь процессу, для возможности активации АА скрипта для флага

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

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

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

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