CT таблица для составления регулярных выражений 4-х функций
string.match (s, pattern [, init])
string.gmatch (s, pattern)
string.gsub (s, pattern, repl [, n])
string.find (s, pattern [, init [, plain]])
Функция string.gsub может принимать в аргумент функции "repl" таблицу (тогда будет замена по ключам значений из таблицы ) или в аргумент "repl" может попадать некоторая другая функция с аргументом найденного слова (тогда будет вызов этой другой функции при каждом захвате символа или
Кому интересно как c помощью инструмента Fuse сделать модель вроде той, что я набросал на скриншоте выше и заставить её бегать, я предлагаю посмотреть в этом видео, незнакомого автора.
Пример1. Узнать во сколько раз string.match() медленее string.find()
Пример2. Создание лишней локальной переменной
Ответы: 1.38, 1.04.
Если значение меньше единицы, то оптимизированный код хуже.
Если значение больше единицы, то стоит использовать более оптимизированный вариант.
Для простого поиска лучше использовать string.find чем string.match.
Еще несколько примеров
Для чего может пригодиться. Может пр
В общем хорошо взялся за регулярки на Lua! Всё подряд прогоняю через них, что под руку попадется, любые задачи.
Случайный пример задачи. Пронумеровать список
Тут же написал
И получил ответ. В следующий раз только вызывать "EnumerateText([[ текст со строками]])"
Тут в буфер текст улетит и выведет в мессагу. После закрытия мессаги через CTRL+V вставит текст, куда хотим
Пронумерованные функции — функции работы со строками последней
Установка:
1. Файл GHL_ClassSettings.lua закинуть в autorun (нужен для сохранения и загрузки данных формы)
2. Двойной клик на Lua Regular expression.CETRAINER вызовет это окно
Описание:
- Для тренировки и проверки написания регулярных выражений
- Выбор извлечения строк в виде одной или в виде последовательности
- При нажатии на кнопку или при вводе текста в memo вычисляется выражение
Lua Regular expression.CETRAINER
GHL_ClassSettings.lua
С точностью до тысячной доли секунды можно посчитать задержку выполнения кода, что можно применить как счет производительности.
local x = os.clock()
local s = 0
for i=1,100000 do s = s + i end
print(string.format("elapsed time: %.3f\n", os.clock() - x))
После выполнения, показывает 2 тысячных секунды или 2 мс
elapsed time: 0.002
Можно посчитать прошедшее время для другой цели. Например, если цикл в отладке выполняется более 3 секунд, то это вероятно корневой цикл, а если менее, то
Legacy of Kain: Defiance
Это старая PC игра выпущена в районе 2003-2004 годах, когда я еще учился в школе в классе 11-ом.
В самом конце игры была сложная миссия сражения с боссом, никак не получалось её пройти.
Кстати из этой игры есть персонаж на аватаре у пользователя с форума Cheat Engine
Не мог пройти, как не пытался. То ли руки не из того места, пройти очень хотелось. Было у меня немного журналов игровых и там я много раз видел программу MTC. Ка
FINCSTP
Похожа на FSTP, также вращает стек регистров FPU (я кстати не знал, увидел при тестах в CE), но только не перемещает значение по адресу.
FSTP [здесь указывается адрес или регистр]
FINCSTP
Если нужно вытолкнуть значение из ST(0), а адрес куда его выталкивать не нуже
Особенности
1) переход на следующий адрес по инструкциям ветвления вычисляется Lua кодом по ret, jmp, jmp condition до исполнения кода
2) определение опкодов ветвления по readmem без дизассемблериования
3) по тестам последний брейкпоинт снимается на ближайшем цикле
Пример лога до близжайшего цикла, когда поднимается из рутины вверх
Если нужно найти начало и конец подстроки. Пример
Попробуем найти слово lab в троке gamehacklab.ru
print(string.find('gamehacklab.ru', 'lab'))
>9 11
Если не найдена подстрока, то вернет nil.
С помощью string.match можем выводить не индексы, а строку
print(string.match('gamehacklab.ru', 'lab'))
&
Есть такой плагин "AA Maker" и там довольно интересные регулярные выражения на Lua. Разберем некоторые выражения
Выражение ''%[(.*)%]' - захват всего, что в квадратных скобках
Пример
local s = 'mov eax, [ecx + 4]'
print(string.match(s, '%[(.*)%]'))
--> ecx + 4
Символ "%" нужно всегда ставить перед специальными символами такими как ^
Функция loadstring позволяет исполнять текст как код. Попробуем генерировать числа, сравнения чисел и логику И, ИЛИ.
Цель: просто пример.
Создать пары случайных чисел А и Б.
Случайно сравнить попарно.
Создать случайно логику "И, ИЛИ" и сравнить результаты сравнения до тех пор, пока не будут истинны
Можно в редакторе сделать автозавершение инструкци для CE Lua и даже для CE Autoassembler.
Накидал пример, может быть, кому интересно будет для других языков.
Установка. Поместить файл в директорию на скриншоте
lua.xml
Настройки
В архиве два файла. Функции
1. Контекстное меню. Компактное/ не компактное окно CE
2. Сохранение и загрузка положения и размера формы CE
3. Сохранение и загрузка компактного состояния формы или не компактного
Сделано на энтузиазме после написания класса сохранения и загрузки параметров.
После запуска, CE будет там, где её (CE) закрыли с по
На скриншоте 22 ветви трассеровки от адреса патронов не входя в call-ы до корневого цикла. Корневой цикл определяется, когда поиск происходит более трех секунд и не находит ничего. Вполне хватает этого времени. Буду еще повторно тестить и проверять доходит ли он цикла или надо еще что-то придумывать.
Желтым выделяется точка, вертикальная полоса ветви и связи с такими же узлами. Узел это адрес выхода из ret
На видео показано рисование через поток и рисование без потока
Когда происходит рисование без потока, то окно нельзя подвинуть, не работает кнопка и даже не возможно работать с Cheat Engine
Код:
&
Репозиторий
1. На адрес устанавливается брейкпоинт.
2. Идем в игру делаем или не делаем что-то
3. Начинают срабатывать инструкции на брейкпоинте
4. От каждой инструкции начинается трейслог, подобный тому, который есть
Открываем Lua консоль из дизассемблера
Пишем Lua скрипт
Дальше по шагам как на картинке
Сколько я не пользовался CE я никогда не знал об этом отладчике. Когда я случайно узнал, то был приятно удивлен.
Если мы пишем какую-то функцию и она дает сбой, то её можно отладить как на скриншоте. Это может быть и не функция.
Опубликованная в веб формате книга на официальном сайте.
Язык английский
Перейти
Оглавление книги
Книга о приемах программирования больших проектов, в которых огромное количество строк кода. Основная проблема, когда ты уже что-то написал и надо добавить в уже существующий проект внушительный функцио
В этой записи блога не будет чего-то, что показало бы "вау, это что-то новое и есть результат". Все сырое и результат пока мне только снится — быстрый поиск условий и включение, и выключение ветвей по этим условиям. Мыслю я не инструкциями, не группой инструкций, а ветвлениями кода и условиями, которые их запускают. Проще 20 ветвлений по 5 окон, чем тонна инструкций... Жаль пока теория, практики с результатом нет.
Рисунок. На нем слева п
Обновление плагина
Установка с репозитория: ссылка
Кратко
1. Добавил сохранение/загрузку параметров. Хранение в текстовом файле в папке autoruns
2. Добавил настройки графического интерфейса (слайдеры, пункт меню)
Подбронее
1. Нашел адрес патронов
2. Поставил брейкпоинт
3. Выкинул из рук Калаш с этими патронами
4. Увидел инструкцию, которая срабатывает когда что-то выкидываешь.
Решил зацепиться за эту инструкцию.
Либо спавн до инструкции, либо после.
Сделал трейслог из рутины на этой инструкции и
Связь точек линиями и связь через метод описанный в статье
Пример1. Слева линии, справа работа алгоритма
Пример2. Скриншот из pdf документа с разным значением коэфициента
Пример3. С альфа и без альфа канала