Iniar Опубликовано 15 сентября, 2021 Поделиться Опубликовано 15 сентября, 2021 Добрый день. Подскажите пожалуйста, как передать значение из скрипта автоассемблера в поле CEEdit? Есть вот такая функция на кнопку. Идея в том, чтоб передать в поле CEEdit1 значение указателя [predm]+0, чтоб в тренере отображалось число предмета который я выбрал в игре. Строка формата - control_setCaption(CETrainer.CEEdit1, [predm]+0) выдаёт ошибку, что "[" нельзя использовать. Как передать значение указателя и скрипта автоассемблера в CEEdit? Спойлер function CEButton1Click(sender) if (gButtonOnPredm) then gButtonOnPredm=false --CETrainer.CEButton1.Caption = "Стоп"-- control_setCaption(CETrainer.CEButton1, "Выключить") control_setEnabled(CETrainer.CHEATPANEL,true) a=('[predm]+0') autoAssemble([[ aobscan(predmet,48 63 80 48 01 00 00 4C 89 85 C8 F3 FF FF 89 95 60 F3 FF FF 89 8D 58 F3 FF FF 89 85 50 F3 FF FF EB 3C 4C 8B 85 C8 F3 FF FF 48 63 95 60 F3 FF FF 48 63 8D 58 F3 FF FF 48 8B 85 90 F2 FF FF 48 63 80 E4 02 00 00 4C 89 85 C8 F3 FF FF 89 95 60 F3 FF FF 89 8D 58 F3 FF FF 89 85 50 F3 FF FF 48 8B 8D C8 F3 FF FF 48 63 95 60 F3 FF FF 4C 63 85 58 F3 FF FF 4C 63 8D 50 F3 FF FF 66 90) // should be unique alloc(newmem,$1000,692A44B2) label(code) label(return) label(predm) registersymbol(predm) registersymbol(predmet) newmem: lea rax,dword ptr [rax+00000148] //movsxd rax,dword ptr [rax+00000148] mov [predm],rax xor rax,rax jmp return predm: db 0 code: //movsxd rax,dword ptr [rax+00000148] //jmp return predmet: jmp newmem nop nop return: ]]) control_setCaption(CETrainer.CELabel1, "Вкл") control_setCaption(CETrainer.CEEdit1, a) else gButtonOnPredm=true --if CETrainer.CELabel1.Caprion == "Вкл" then-- --CETrainer.CEButton1.Caption = "Активный"-- control_setEnabled(CETrainer.CHEATPANEL,false) control_setCaption(CETrainer.CEButton1, "Включить") autoAssemble([[ predmet: db 48 63 80 48 01 00 00 unregistersymbol(predm) unregistersymbol(predmet) dealloc(newmem) ]]) control_setCaption(CETrainer.CELabel1, "Откл") end end Ссылка на комментарий Поделиться на другие сайты Поделиться
Iniar Опубликовано 16 сентября, 2021 Автор Поделиться Опубликовано 16 сентября, 2021 21 час назад, Iniar сказал: Добрый день. Подскажите пожалуйста, как передать значение из скрипта автоассемблера в поле CEEdit? Есть вот такая функция на кнопку. Идея в том, чтоб передать в поле CEEdit1 значение указателя [predm]+0, чтоб в тренере отображалось число предмета который я выбрал в игре. Строка формата - control_setCaption(CETrainer.CEEdit1, [predm]+0) выдаёт ошибку, что "[" нельзя использовать. Как передать значение указателя и скрипта автоассемблера в CEEdit? Показать контент function CEButton1Click(sender) if (gButtonOnPredm) then gButtonOnPredm=false --CETrainer.CEButton1.Caption = "Стоп"-- control_setCaption(CETrainer.CEButton1, "Выключить") control_setEnabled(CETrainer.CHEATPANEL,true) a=('[predm]+0') autoAssemble([[ aobscan(predmet,48 63 80 48 01 00 00 4C 89 85 C8 F3 FF FF 89 95 60 F3 FF FF 89 8D 58 F3 FF FF 89 85 50 F3 FF FF EB 3C 4C 8B 85 C8 F3 FF FF 48 63 95 60 F3 FF FF 48 63 8D 58 F3 FF FF 48 8B 85 90 F2 FF FF 48 63 80 E4 02 00 00 4C 89 85 C8 F3 FF FF 89 95 60 F3 FF FF 89 8D 58 F3 FF FF 89 85 50 F3 FF FF 48 8B 8D C8 F3 FF FF 48 63 95 60 F3 FF FF 4C 63 85 58 F3 FF FF 4C 63 8D 50 F3 FF FF 66 90) // should be unique alloc(newmem,$1000,692A44B2) label(code) label(return) label(predm) registersymbol(predm) registersymbol(predmet) newmem: lea rax,dword ptr [rax+00000148] //movsxd rax,dword ptr [rax+00000148] mov [predm],rax xor rax,rax jmp return predm: db 0 code: //movsxd rax,dword ptr [rax+00000148] //jmp return predmet: jmp newmem nop nop return: ]]) control_setCaption(CETrainer.CELabel1, "Вкл") control_setCaption(CETrainer.CEEdit1, a) else gButtonOnPredm=true --if CETrainer.CELabel1.Caprion == "Вкл" then-- --CETrainer.CEButton1.Caption = "Активный"-- control_setEnabled(CETrainer.CHEATPANEL,false) control_setCaption(CETrainer.CEButton1, "Включить") autoAssemble([[ predmet: db 48 63 80 48 01 00 00 unregistersymbol(predm) unregistersymbol(predmet) dealloc(newmem) ]]) control_setCaption(CETrainer.CELabel1, "Откл") end end Решение нашёл сам. Вопрос снят. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 16 сентября, 2021 Поделиться Опубликовано 16 сентября, 2021 5 минут назад, Iniar сказал: Решение нашёл сам. Вопрос снят. Ты можешь поделиться решением в данной теме, чтобы другим, у кого будет такой же вопрос, было немного проще. Но если решишь поделиться, распиши всё максимально подробно, чтобы пользователи не бездумно копировали решение, а понимали, как оно работает. Ссылка на комментарий Поделиться на другие сайты Поделиться
Iniar Опубликовано 16 сентября, 2021 Автор Поделиться Опубликовано 16 сентября, 2021 Вот предыдущая функция, из неё убраны a=('[predm]+0') и control_setCaption(CETrainer.CEEdit1, a) : Спойлер function CEButton1Click(sender) if (gButtonOnPredm) then gButtonOnPredm=false --CETrainer.CEButton1.Caption = "Стоп"-- control_setCaption(CETrainer.CEButton1, "Выключить") control_setEnabled(CETrainer.CHEATPANEL,true) autoAssemble([[ aobscan(predmet,48 63 80 48 01 00 00 4C 89 85 C8 F3 FF FF 89 95 60 F3 FF FF 89 8D 58 F3 FF FF 89 85 50 F3 FF FF EB 3C 4C 8B 85 C8 F3 FF FF 48 63 95 60 F3 FF FF 48 63 8D 58 F3 FF FF 48 8B 85 90 F2 FF FF 48 63 80 E4 02 00 00 4C 89 85 C8 F3 FF FF 89 95 60 F3 FF FF 89 8D 58 F3 FF FF 89 85 50 F3 FF FF 48 8B 8D C8 F3 FF FF 48 63 95 60 F3 FF FF 4C 63 85 58 F3 FF FF 4C 63 8D 50 F3 FF FF 66 90) // should be unique alloc(newmem,$1000,692A44B2) label(code) label(return) label(predm) registersymbol(predm) registersymbol(predmet) newmem: lea rax,dword ptr [rax+00000148] //movsxd rax,dword ptr [rax+00000148] mov [predm],rax xor rax,rax jmp return predm: db 0 code: //movsxd rax,dword ptr [rax+00000148] //jmp return predmet: jmp newmem nop nop return: ]]) control_setCaption(CETrainer.CELabel1, "Вкл") else gButtonOnPredm=true --if CETrainer.CELabel1.Caprion == "Вкл" then-- --CETrainer.CEButton1.Caption = "Активный"-- control_setEnabled(CETrainer.CHEATPANEL,false) control_setCaption(CETrainer.CEButton1, "Включить") autoAssemble([[ predmet: db 48 63 80 48 01 00 00 unregistersymbol(predm) unregistersymbol(predmet) dealloc(newmem) ]]) control_setCaption(CETrainer.CELabel1, "Откл") end Далее я создал кнопку - Обновить И поместил в неё такой код: function CEButton3Click(sender) local a = getAddress("[predm]+0") local b = string.format('0%x',a) local stored = readInteger (b) control_setCaption(CETrainer.CEEdit1, stored) end Немного коряво и с точки зрения программирования есть лишний код, но это заработало и гнаться за краткостью кода у меня нет желания. Работает и хорошо. Таким образом когда запускаю тренер, у меня в поле CEEdit1 отображается текст по умолчанию, так как по смыслу скрипта необходимо сначала щёлкнуть в игре по конкретному предмету, тогда в переменной predm появится его адрес. Далее когда нажимаю кнопку Обновить, переменная predm заполняется адресом предмета, из этого адреса берётся указатель на значение кол-ва предмета в инвентаре на данный момент и это кол-во передаётся в CEEdit1 в человеческом десятичном виде. Ссылка на комментарий Поделиться на другие сайты Поделиться
Iniar Опубликовано 16 сентября, 2021 Автор Поделиться Опубликовано 16 сентября, 2021 44 минуты назад, Xipho сказал: Ты можешь поделиться решением в данной теме, чтобы другим, у кого будет такой же вопрос, было немного проще. Но если решишь поделиться, распиши всё максимально подробно, чтобы пользователи не бездумно копировали решение, а понимали, как оно работает. Ещё в таком случае вопрос, как мне по кнопке Записать произвести запись введённого числа в указатель кол-ва предмета? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 16 сентября, 2021 Поделиться Опубликовано 16 сентября, 2021 1 минуту назад, Iniar сказал: Ещё в таком случае вопрос, как мне по кнопке Записать произвести запись введённого числа в указатель кол-ва предмета? Это уже вопрос для отдельной темы. И, кстати, подобное вроде уже обсуждалось на форуме, поищи по темам. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения