Перейти к содержанию
Авторизация  
Iniar

Как передать значение из указателя в CEEdit?

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

Добрый день. Подскажите пожалуйста, как передать значение из скрипта автоассемблера в поле 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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
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

 

 

Решение нашёл сам. Вопрос снят.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 минут назад, Iniar сказал:

Решение нашёл сам. Вопрос снят.

Ты можешь поделиться решением в данной теме, чтобы другим, у кого будет такой же вопрос, было немного проще. Но если решишь поделиться, распиши всё максимально подробно, чтобы пользователи не бездумно копировали решение, а понимали, как оно работает.

Поделиться сообщением


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

Вот предыдущая функция, из неё убраны 

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 в человеческом десятичном виде.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
44 минуты назад, Xipho сказал:

Ты можешь поделиться решением в данной теме, чтобы другим, у кого будет такой же вопрос, было немного проще. Но если решишь поделиться, распиши всё максимально подробно, чтобы пользователи не бездумно копировали решение, а понимали, как оно работает.

Ещё в таком случае вопрос, как мне по кнопке Записать произвести запись введённого числа в указатель кол-ва предмета?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, Iniar сказал:

Ещё в таком случае вопрос, как мне по кнопке Записать произвести запись введённого числа в указатель кол-ва предмета?

Это уже вопрос для отдельной темы. И, кстати, подобное вроде уже обсуждалось на форуме, поищи по темам.

Поделиться сообщением


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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Предпросмотр
Авторизация  

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

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

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