pachela Опубликовано 21 апреля, 2017 Поделиться Опубликовано 21 апреля, 2017 Задача следующая: Нужно оживить поле Edit. (Ранее я с ним не работал. Посему если ссылку на уже готовую тему дадите, то буду благодарен.) Введенное в поле значение нужно перевести с dec в hex. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 21 апреля, 2017 Поделиться Опубликовано 21 апреля, 2017 (изменено) Попробуй использовать tonumber() Edit твой Editbox или как он называется. Документация Скрытый текст tonumber (e [, base]) Попытка преобразования параметра в число. Если параметр уже является числом или строкой, конвертируемой в число, то tonumber возвращает это число; иначе, возвращает nil. Необязательный параметр указывает основание системы счисления для интерпретации числа. Основание может быть любым целым числом в диапазоне от 2 до 36, включительно. Если основание больше 10, то символ 'A' (как в верхнем, так и в нижнем регистре) представляет 10, 'B' представляет 11, и так далее, символ 'Z' представляет 35. При основании 10 (по умолчанию), число может быть представлено в экспоненциальной форме (см. §2.1). Для других оснований можно указывать только беззнаковые целые числа. tostring(e) Принимает параметр любого типа и конвертирует его в строку в подходящем формате. Если требуется специальное форматирование, используйте функцию string.format. Если метатаблица для e имеет поле "__tostring", tostring вызывает его значение с параметром e, и возвращает результат этого вызова Example: print(tonumber(Edit,10)) //DEC print(tonumber(Edit,16)) //HEX А если из всего этого строка нужна, то tosting() Изменено 21 апреля, 2017 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 21 апреля, 2017 Автор Поделиться Опубликовано 21 апреля, 2017 41 минуты назад, partoftheworlD сказал: Попробуй использовать tonumber() Edit твой Editbox или как он называется. Example: print(tonumer(Edit,10)) //DEC print(tonumer(Edit,16)) //HEX А если из всего этого строка нужна, то tosting() Ты меня извини, я тут туплю. Можно немного рассосать для начального уровня? Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 22 апреля, 2017 Поделиться Опубликовано 22 апреля, 2017 (изменено) 5 часов назад, pachela сказал: Можно немного рассосать для начального уровня? Я не знаю как в CE, но для примера Visual Basic, чтобы получить/передать текст используют Editbox1.text или Editbox1.value, в СЕ мне кажется так же сработает, но это не точно т.к не проверял. a = tonumer(Editbox1.text,16) //перевод в HEX текста который ты взял их Editbox Label1.text = tosring(a) //передача конвертированного значения лейблу Кто трейнеры собирает под СЕ должен знать как получить доступ к элементам CE, чтобы использовать их в Lua. А мой ответ был только на счет того как конвертировать значения в луа. Изменено 22 апреля, 2017 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
Vlad2 Опубликовано 22 апреля, 2017 Поделиться Опубликовано 22 апреля, 2017 UDF1.CEEdit1.Text = string.format('0%X', UDF1.CEEdit1.Text) Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 22 апреля, 2017 Поделиться Опубликовано 22 апреля, 2017 Скрытый текст -- Это число? function CheckDigits(line) return string.find(line,'%d') ~= nil and string.find(line,'%D') == nil end -- Это Hex число? function CheckHexadecimalDigits(line) return string.find(line,'%x') ~= nil and string.find(line,'%X') == nil end -- Конвертация function DecToHex(stringValue) return string.format('%08X', stringValue) end function HexToDec(stringValue) return tonumber(stringValue, 16) end function OnChangeEdit1(sender, key) if CheckDigits(edit1.Text) then edit2.OnChange = nil edit2.Text = DecToHex(edit1.Text) edit2.OnChange = OnChangeEdit2 end end function OnChangeEdit2(sender, key) if CheckHexadecimalDigits(edit2.Text) then edit1.OnChange = nil edit1.Text = HexToDec(edit2.Text) edit1.OnChange = OnChangeEdit1 end end form = createForm() edit1 = createEdit(form) edit2 = createEdit(form) edit1.Text = '0' edit2.Text = '0' edit1.OnChange = OnChangeEdit1 edit2.OnChange = OnChangeEdit2 edit2.Top = edit1.Height Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 22 апреля, 2017 Поделиться Опубликовано 22 апреля, 2017 47 минуты назад, MasterGH сказал: -- Это число? MasterGH, добавил в скрипт для наглядности: Скрытый текст -- Это число? function CheckDigits(line) return string.find(line,'%d') ~= nil and string.find(line,'%D') == nil end -- Это Hex число? function CheckHexadecimalDigits(line) return string.find(line,'%x') ~= nil and string.find(line,'%X') == nil end -- Конвертация function DecToHex(stringValue) return string.format('%08X', stringValue) end function HexToDec(stringValue) return tonumber(stringValue, 16) end function OnChangeEdit1(sender, key) if CheckDigits(edit1.Text) then edit2.OnChange = nil edit2.Text = DecToHex(edit1.Text) edit2.OnChange = OnChangeEdit2 end end function OnChangeEdit2(sender, key) if CheckHexadecimalDigits(edit2.Text) then edit1.OnChange = nil edit1.Text = HexToDec(edit2.Text) edit1.OnChange = OnChangeEdit1 end end form = createForm() label1 = createLabel(form) edit1 = createEdit(form) label2 = createLabel(form) edit2 = createEdit(form) form.Caption = 'Example for pachela' label1.Caption = 'Ваше значение в DEC:' edit1.Text = '0' label2.Caption = 'Ваше значение в HEX:' edit2.Text = '0' edit1.OnChange = OnChangeEdit1 edit2.OnChange = OnChangeEdit2 edit1.Top = label1.Height label2.Top = edit1.Top + edit1.Height edit2.Top = label2.Top + label2.Height 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 22 апреля, 2017 Автор Поделиться Опубликовано 22 апреля, 2017 Для себя пока что выбрал следующий вариант function CEEdit1Change(sender) exte = string.format('0%X', UDF1.CEEdit1.Text) end function CEButton1Click(sender) showMessage(exte) end Минус тут следующий, когда отчищаю поле ввода, выводит ошибку, типа "плохая идея, тут же стринг идет". Но это терпимо, не терпимо следующее, получившийся Hex у нас задом на перед, т.е. отличительный от того, что используется в СЕ. Как сделать так, что бы значение было корректно? Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 22 апреля, 2017 Автор Поделиться Опубликовано 22 апреля, 2017 Наверно мне нужно объяснить заранее для чего это мне нужно: У меня есть 3 значения, которые идут одно за другим. И взяв 3 таких (4байтовых) значения можно получить уникальную сигнатуру. Моя задумка, сделать 3 таких вот окна ввода. По нажатию на кнопку, берется 3 значения переведенных в хекс и образуется массив байт. Этот массив мы используем в AOBscan и находим адреса по которым записаны нужные нам значения. Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 22 апреля, 2017 Автор Поделиться Опубликовано 22 апреля, 2017 Порылся немного по просторам гугла и узнал, что такое Grouped scan в СЕ. Раньше и не знал, что подобное есть. Теперь вот пытаюсь разобраться как в Луа использовать найденное. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 22 апреля, 2017 Поделиться Опубликовано 22 апреля, 2017 16 минуту назад, pachela сказал: Grouped scan в СЕ. Для большинства игр это бесполезна штука, лично мне ни разу не помогла что-либо найти.. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 22 апреля, 2017 Автор Поделиться Опубликовано 22 апреля, 2017 Только что, partoftheworlD сказал: Для большинства игр это бесполезна штука, лично мне ни разу не помогла что-либо найти.. Я попробовал на своей игруле, 3 значения постоянно находятся рядом и в одной и той же последовательности. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 22 апреля, 2017 Поделиться Опубликовано 22 апреля, 2017 5 минут назад, pachela сказал: Я попробовал на своей игруле, 3 значения постоянно находятся рядом Повезло 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 22 апреля, 2017 Поделиться Опубликовано 22 апреля, 2017 37 минуты назад, partoftheworlD сказал: Для большинства игр это бесполезна штука, лично мне ни разу не помогла что-либо найти.. Ну почему же, если врубаться как использовать эту опцию, то очень даже помогает. Помогало и ранее, когда ещё и в помине не знал о существовании СЕ и ассемблера, на Артмани и сейчас на СЕ. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 22 апреля, 2017 Поделиться Опубликовано 22 апреля, 2017 4 часа назад, pachela сказал: Моя задумка, сделать 3 таких вот окна ввода. По нажатию на кнопку, берется 3 значения переведенных в хекс и образуется массив байт. Этот массив мы используем в AOBscan и находим адреса по которым записаны нужные нам значения. Ручных операций не так много и думаю, их не надо делать очень часто и в большом объеме. Думаю, ты можешь вручную это сделать или пользоваться групповым поиском. В чем смысл автоматизации поиска адреса на Lua? Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 23 апреля, 2017 Автор Поделиться Опубликовано 23 апреля, 2017 13 часа назад, MasterGH сказал: Ручных операций не так много и думаю, их не надо делать очень часто и в большом объеме. Думаю, ты можешь вручную это сделать или пользоваться групповым поиском. В чем смысл автоматизации поиска адреса на Lua? Создание трейнера, который я могу передать другому? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 23 апреля, 2017 Поделиться Опубликовано 23 апреля, 2017 22 минуты назад, pachela сказал: Создание трейнера, который я могу передать другому Все равно не понятно. Ладно. Закрываю тему. Решение заголовка темы уже написали. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения