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

Как на LUA записать в двухбайтовые адреса значения из формы TextBox


Submarina

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

Здравствуйте КАК МЕНЕ ЗДЕСЬ ЗАПИСАТЬ в место Integer, 2 байта или 1 Байт я пробовал по разному записывать. в (Lua TextBox)
но при активации выдавало ошибку, работает только когда записано именно так, write Integer если записать так write Byte или write Word то скрипт при активации, выдают ошибку.
у меня в игре значения 2 Байта а write Integer записывает как 4 Байта точней если хочешь записать число 6 записывает как 65740 если менять значения напрямую в таблице, то всё нормально. 
но когда записываешь через (Lua TextBox) то записывается не правильно.

Скрытый текст

TextBox = component_findComponentByName(CETrainer,'CEEdit1')
GameName = 'Fallout4.exe'
if(getProcessIDFromProcessName(GameName) == nil) then

end

Value = control_getCaption(TextBox)
writeInteger('[Money88]+20',Value) КАК МЕНЕ ЗДЕСЬ ЗАПИСАТЬ в место Integer, 2 байта или 1 Байт я пробовал по разному записывать. в (Lua TextBox)
но при активации выдавало ошибку, работает только когда записано именно так, write Integer если записать так write Byte или write Word то скрипт при активации, выдают ошибку.
у меня в игре значения 2 Байта а write Integer записывает как 4 Байта точней если хочешь записать число 6 записывает как 65740 если менять значения напрямую в таблице, то всё нормально. 
но когда записываешь через (Lua TextBox) то записывается не правильно.
 
end

 

 

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

Проще всего сделать можно так:

1 Добавить адрес в СЕ таблицу

2 Дать ему имя, например "TWOBYTESinTable"

3 Дать ему тип - 2 байта

2 Написать Lua код

Скрытый текст

al = getAddressList()
TWOBYTESinTable = al.getMemoryRecordByDescription("TWOBYTESinTable")

function CEButton1Click(sender)
if TWOBYTESinTable.Value~="??" then
if UDF1.CEEdit1.Text~="" then
TWOBYTESinTable.Value=UDF1.CEEdit1.Text
end end end


function CEEdit1KeyPress(sender, key) -- // Возможность вписать в editbox только цифры + BACKSPACE для стирания
local keynr=string.byte(key)
if (keynr~=8)  and ((keynr<48) or (keynr>57)) then
key=nil
end
return key
end

 

 

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

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

вот это мене понятно. 

1 Добавить адрес в СЕ таблицу --Это понятно

2 Дать ему имя, например "TWOBYTESinTable--Это понятно

3 Дать ему тип - 2 байта --Это понятно

После в ставить твой код в Lua А ДАЛЬШЕ ЧТО ЧТО ТО ЕЩЁ НУЖНО ДЕЛАТЬ

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

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

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

18 minutes ago, Baracuda said:

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

Показывай, пожалуйста, что ты делал и как, а так же - что за ошибка.

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

вот назвал адрес TWOBYTESinTable в таблице, 

создал кнопку на CETRainer, создал поле для ввода, и

при воде цифры для изменения, нажимаю кнопку а там ошибка.

Скрытый текст

al = getAddressList()
TWOBYTESinTable = al.getMemoryRecordByDescription("TWOBYTESinTable")

function CEButton2Click(sender)
if TWOBYTESinTable.Value~="TWOBYTESinTable" then
if UDF1.CEEdit2.Text~="" then
TWOBYTESinTable.Value=UDF1.CEEdit2.Text
end end end

function CEEdit2KeyPress(sender, key) -- // Возможность вписать в editbox только цифры + BACKSPACE для стирания
local keynr=string.byte(key)
if (keynr~=8)  and ((keynr<48) or (keynr>57)) then
key=nil
end
return key
end

 

Ошибка:attempt to call a nil value
Ошибка:[string "function CEButton1Click(sender) ..."]:18: attempt to index a nil value (global 'UDF1')
Ошибка:[string "function CEButton1Click(sender) ..."]:18: attempt to index a nil value (global 'UDF1')

 

что не так сделал.

 

Мене было бы проще, если бы мене с этой проблемой помогли, если это возможно.

Скрытый текст

TextBox = component_findComponentByName(CETrainer,'CEEdit1')
GameName = 'Fallout4.exe'
if(getProcessIDFromProcessName(GameName) == nil) then

end

Value = control_getCaption(TextBox)
writeInteger('[Money88]+20',Value) КАК МЕНЕ ЗДЕСЬ ЗАПИСАТЬ в место Integer, 2 байта или 1 Байт я пробовал по разному записывать. в (Lua TextBox)
но при активации выдавало ошибку, работает только когда записано именно так, write Integer если записать так write Byte или write Word то скрипт при активации, выдают ошибку.
у меня в игре значения 2 Байта а write Integer записывает как 4 Байта точней если хочешь записать число 6 записывает как 65740 если менять значения напрямую в таблице, то всё нормально. 
но когда записываешь через (Lua TextBox) то записывается не правильно.
 
end

 


 

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

http://rgho.st/79kwNkgnh что не так, я сделал.

 

Ориентировался по этому Lua скрипту

Скрытый текст

al = getAddressList()
topspeed = al.getMemoryRecordByDescription("topspeed")
function checkKeys(timer)
if AntonVitalievich.CEToggleBox1.Caption=="Деактивировать" then
if topspeed.Value~="??" then
topspeed.Value="100"
end
end
end
t=createTimer(nil)
timer_setInterval(t, 100)
timer_onTimer(t, checkKeys)
timer_setEnabled(t, true)

 

 

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

1.

Не помню чтобы я делал такой скрипт. :).

 

2.

Неверно

Скрытый текст

al = getAddressList()
TWOBYTESinTable = al.getMemoryRecordByDescription("TWOBYTESinTable")

function CEButton1Click(sender) -----//////Вот первая кнопка
if TWOBYTESinTable.Value~="??" then
if UDF1.CEEdit1.Text~="" then
TWOBYTESinTable.Value=UDF1.CEEdit1.Text
end end end

function CEEdit1Click(sender) ----////Вот в тороя кнопка
function CEEdit1KeyPress(sender, key) -- // Возможность вписать в editbox только цифры + BACKSPACE для стирания
local keynr=string.byte(key)
if (keynr~=8)  and ((keynr<48) or (keynr>57)) then
key=nil
end
return key
end
end

 

Верно

Скрытый текст

al = getAddressList()
TWOBYTESinTable = al.getMemoryRecordByDescription("TWOBYTESinTable")

function CEButton1Click(sender) -----//////Вот первая кнопка
if TWOBYTESinTable.Value~="??" then
if UDF1.CEEdit1.Text~="" then
TWOBYTESinTable.Value=UDF1.CEEdit1.Text
end end end


function CEEdit1KeyPress(sender, key) -- // Возможность вписать в editbox только цифры + BACKSPACE для стирания
local keynr=string.byte(key)
if (keynr~=8)  and ((keynr<48) or (keynr>57)) then
key=nil
end
return key
end
end

 

 

3. Форму нужно назвать - UDF1 (либо в скрипте изменить UDF1 на CETrainer)

4. Эдитбокс должен работать посредствам - Editbox / event / onKeyPress / CEEdit1KeyPress

 

При таких обстоятельствах работа трейнера будет производится по следующей схеме.

1 В эдитбокс вписывается значение

2 Нажимается кнопка один раз (значение копируется из эдитбокса в TWOBYTESinTable)

 

 

 

 

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

Не помню чтобы я делал такой скрипт. Этот скрипт мене Garik66 делал

AntonVit Спасибо тебе ещё раз. 

 

 

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

у меня к тебе ещё вопрос, а можно сделать чтобы не нужно было назвать форму 3. Форму нужно назвать - UDF1 (либо в скрипте изменить UDF1 на CETrainer)

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

GameName = 'Fallout4.exe'
Изменено пользователем Baracuda
Ссылка на комментарий
Поделиться на другие сайты

43 минуты назад, Baracuda сказал:

не нужно было назвать форму

Форму по любому придётся назвать, иначе не найдёт где у тебя находится CEEdit1.

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

47 минуты назад, Baracuda сказал:

от например как я выложил в самом верху. Lua скрипт

У тебя в верхнем скрипте форма называется - CETrainer.

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

я имею веду, он говорит назвать саму форму CETrainer, я так понял.

Вот без названия скрипт не работает

GameName = 'Fallout4.exe'
Изменено пользователем Baracuda
Ссылка на комментарий
Поделиться на другие сайты

8 минут назад, Baracuda сказал:

я имею веду, он говорит назвать саму форму CETrainer, я так понял.

Да назови её как хочешь. Главное что и кнопка и Edit лежат на этой форме. Назови Baracuda. :) И тогда строчки в скрипте AntonVit будут выглядеть так:

if Baracuda.CEEdit1.Text~="" then
TWOBYTESinTable.Value=Baracuda.CEEdit1.Text

 

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

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

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

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