• Рубрика "Lua код сегодня" №6 (проверка по md5)

    Перенесена Статьи и видео md5 ce lua speak важно обучалка фишки
    1
    0 Голоса
    1 Сообщения
    229 Просмотры
    MasterGHM
    Получить md5 открытого процесса и записать его в MD5_CHEKING вручную \-- Функция для ручного вывода md5 ранее подключенного процесcа. Для установки MD5_CHEKING PrintMd5CurrentProcess() Пример проверки md5 function onOpenProcess(processid) reinitializeSymbolhandler() local md5Process = GetMd5Process(processid) PrintMd5Process(process, md5Process) local isSupportedVersion = CheckingMd5CurrentProcess(md5Process) local lineResult = isSupportedVersion and 'Is supported version.' or 'Is not supported version.' if not isSupportedVersion then speakEnglish(lineResult, false) messageDialog('Error', lineResult, mtError, mbClose) end end ce_md5.lua md5 - это алгоритм некоторой суммы байтов exe-шника. Позволит точно идентифицировать exe-шник, для которого будет сделана .CT таблица с указателями или сигнатурами. В случае несоответствия будет показан диалог сообщения и звуковое оповещение проговаривания текста ошибки. Будет необходимо проверять md5, чтобы смещения у структур точно не поменялись.
  • Поиск в региона памяти модуля

    Перенесена Статьи и видео фишки ce plugin обучалка
    5
    1
    0 Голоса
    5 Сообщения
    194 Просмотры
    PitronicP
    вот доказательство что старым версиям твой плагин нужен будет.
  • Рубрика "Lua код сегодня" №5 (активирующий скрипт)

    Прикреплена Перенесена Статьи и видео ce lua ce aa active rec ce memrec важно обучалка
    3
    3
    0 Голоса
    3 Сообщения
    150 Просмотры
    MasterGHM
    Update: Если скрипт не запускается, то вызывать reinitializeSymbolhandler(true) Пример здесь
  • Рубрика "Lua код сегодня" №4

    Перенесена Статьи и видео ce ccode ce aa ce memrec обучалка
    4
    0 Голоса
    4 Сообщения
    164 Просмотры
    MasterGHM
    Это C - язык программирования.
  • Рубрика "Lua код сегодня" №3

    Перенесена Статьи и видео ce memrec ce aa ce lua ce .ct обучалка
    1
    2
    0 Голоса
    1 Сообщения
    81 Просмотры
    MasterGHM
    Создать пустую запись чтобы пробовать вывод названия записи через lua {$lua} print(memrec.Description) [ENABLE] print('is on') [DISABLE] print('is off') Поля memrec многочисленны и описываются в документации. См. MemoryRecord Class: в ...\Cheat Engine 6.8.3\celua.txt
  • Рубрика "Lua код сегодня" №2

    Перенесена Статьи и видео ce lua обучалка
    1
    2
    0 Голоса
    1 Сообщения
    77 Просмотры
    MasterGHM
    local address = 0x0170A490 local x, y, z = 0, 100, 100 writeDouble(address, x) writeDouble(address + 8, y) writeDouble(address + 16, z) Данный код позволяет записать значение координат и переместить персонажа. Обычно, адреса координат идут последовательно x,y,z и имеют тип float или double. Чтобы переместить персонажа нужно узнать его адрес координат и выполнить код в Lua консоли И убедиться, что данные записались в память процесса Далее мы с вами будем очень много программировать короткими примерами в консоли управляя данными процесса и в том числе связывать это с базами данных. Например, такой-то пользователь, для такого-то персонажа создал таблицу телепортации с локациями и координатами. Этой таблицей можно будет очень удобно пользоваться. Также вы изучите принцип программирования, который используется при работе с СУБД.
  • Регулярки на Lua. Пронумеровать список строк

    Перенесена Статьи и видео ce lua обучалка regular
    1
    0 Голоса
    1 Сообщения
    55 Просмотры
    MasterGHM
    Пример задачи. Пронумеровать список string string.byte string.char string.dump string.find string.format string.gmatch string.gsub string.len string.lower string.match string.pack string.packsize string.rep string.reverse string.sub string.unpack string.upper local text = [[ string string.byte string.char string.dump string.find string.format string.gmatch string.gsub string.len string.lower string.match string.pack string.packsize string.rep string.reverse string.sub string.unpack string.upper ]] function EnumerateText(text) local count = 0 local rez = text:gsub('%C+', function (s) count = count + 1 return string.format('%s. %s', count, s) end) showMessage(rez) writeToClipboard(rez) end EnumerateText(text) И получил ответ. В следующий раз только вызывать "EnumerateText([[ текст со строками]])" 1. string 2. string.byte 3. string.char 4. string.dump 5. string.find 6. string.format 7. string.gmatch 8. string.gsub 9. string.len 10. string.lower 11. string.match 12. string.pack 13. string.packsize 14. string.rep 15. string.reverse 16. string.sub 17. string.unpack 18. string.upper Тут в буфер текст улетит и выведет в мессагу. После закрытия мессаги через CTRL+V вставит текст, куда хотим Пронумерованные функции — функции работы со строками последней версии Lua 5.3.x из документации На что стоит обратить внимание при регулярках: Работа с пробелами и не пробелами: "%s" и "%S" Работа с символами разделяющие строки и не разделяющими строки: "%с" и "%С" Захват строк "(.+)", "(.-)", "(.)", а также без захвата, т.е. пропуск других символов ".+",".-","." Узнать как и какая функция из выше перечисленных работает, какая используется с регуляторами. Хотим к примеру вывести слово, которое закончится на пробеле (пишу просто "на пробеле" без учета других символов). Это уже "(%w+)", а если хотим второе слово, то это "%W+%w+" (не выводить первое и вывести второе слово) или "%s(%w+)" (после пробела, но чтобы было без пробела, то захватить в круглые скобки), или "^.+%s(%w+)"(начинать с первого символа до пробела и захват до конца слова). Если писать на CE Lua, то регулярки знать не обязательно. Но, их желательно знать, чтобы читать чужой код и писать свой. Да и вообще это интересно. Очень короткие выражения позволяют решить некоторую задачу за быстрое время. Основные задачи: поиск текста и замена текста.
  • Сравнение времени выполнения двух функций

    Перенесена Статьи и видео обучалка ce lua optimization
    2
    0 Голоса
    2 Сообщения
    107 Просмотры
    MasterGHM
    С точностью до тысячной доли секунды можно посчитать задержку выполнения кода, что можно применить как счет производительности. 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 секунд, то это вероятно корневой цикл, а если менее, то это вложенный цикл. На корневом цикле можно остановить трейслог. Об этом может быть потом напишу.
  • Рубрика "Lua код сегодня" №1

    Перенесена Статьи и видео ce lua readmemory обучалка
    1
    1
    0 Голоса
    1 Сообщения
    75 Просмотры
    MasterGHM
    Каждый день мы выкладываем в рубрику, какой-нибудь небольшой Lua код и разбираем его. Lua код №1 local address = 0x015035C8 local int_value = readInteger(address) print ("Результат: "..int_value) > Результат: 98 В этом примере происходит чтение значения из некоторого адреса и его значение выводится в консоль. Для чего это нужно? Например, для того чтобы прочитать количество здоровья персонажа. Как протестировать? Открываем Cheat Engine Открываем туториал Находим адрес В Lua консоли вводим наш код и получаем резульат
  • Логические операторы

    Перенесена Статьи и видео ce lua логика обучалка
    1
    0 Голоса
    1 Сообщения
    678 Просмотры
    MasterGHM
    Существует три логических оператора: and, or, not. Те, кто уже знаком с языками программирования знают, как эти логические операторы работают. Например, A = true B = true if A and B then print('Условие "A and B" выполняется') end if A or B then print('Условие "A or B" выполняется') end B = false if not (B == A) then print('Условие "not (B == A)" выполняется') end Но, дальше интереснее. Все логические операторы считают false и nil ложными, а все остальное — истинными. Оператор "and" возвращает свой первый аргумент, если он ложен и в противном случае возвращается второй аргумент Оператор "or" возвращает свой первый аргумент, если он не равен false и в противном случае возвращается второй аргумент. Сходу можно запутаться, но с примерами станет понятнее print (4 and 5) --> "5". В этом примере '4" не ложный, а значит при операторе "and" вернется второй аргумент "5". print(0 and 13) --> "0". Аналогично print(false and 13) --> "false". В этом примере первый аргумент false(ложный), а значит при операторе and вернется "false". print(4 or 5) --> "4" В этом примере "4" не ложный, а значит при операторе "or" вернется уже первый аргумент "4". print(false or 5) --> "5" В этом примере "false" ложный, а значит при операторе "or" вернется уже первый аргумент "5". Если кто вспомнил, то в C# есть такой оператор "?" (условный) string result = 4 == 4 ? "равно" : "не равно"; // result будет равен true На Lua это эквивалентно local result = ( (4 == 5 and "равно") or "не равно") А если опустить все скобки, то local result = 4 < 5 and "равно" or "не равно". Скобки можно опустить, потому что "and" имеет выше приоритет чем "or." Или вот еще пример compactmenuitem.Caption = state and 'Compact View Mode' or 'Full View Mode' Вот такая интересная штука для ускоренного сравнения вместо конструкции if условие then -- код else -- код end Идем дальше. Полезной идиомой Lua является x = x or v что эквивалентно if not х then х = v end Т. е. x равен значению v, когда x ложное. Оператор "not" всегда возвращает true или false print(not nil) --> true print(not false) --> true print(not 0) --> false print(not not nil) --> false