• Обработка исключения в Cheat Engine Lua

    Перенесена Статьи и видео ce lua exception
    1
    0 Голоса
    1 Сообщения
    100 Просмотры
    MasterGHM
    pcall() функция может вызывать функцию, которая может вызывать исключение. Возвращает статус в виде булевой о том, есть ли исключение или нет и возвращает текст исключения. function ThrowException() -- раскоментировать чтобы зывать ошибку по условию некоторому -- error("string expected", 2) -- Пример вывода стека ошибки print('AAA ->> '..debug.traceback()) -- Исключение делаем temp[5] = 1 -- До этой строчки не дойдет, т.к. исключение выше будет из-за temp[5] = 1 print('BBB ->> '..debug.traceback()) end local status, err = pcall(ThrowException) -- Показать какие типы имеют статус и ошибка (это булевый и строка) print(type(status)) print(type(err)) if status then print('No Exception') else print('Exception: ' .. err) end Как этим пользоваться? Если вдруг знаем, что может произойти ошибка, то можно её обработать и выполнить правильное действие не останавливая работу Lua скрипта. Подробнее документация Или например если не выполняется условие, то можем сами создать ошибку с помощью функции error, что остановит скрипт.
  • Обработка исключения в Cheat Engine AA

    Перенесена Статьи и видео фишки ce aa exception
    1
    0 Голоса
    1 Сообщения
    65 Просмотры
    MasterGHM
    Новые директивы try/except в AA доступны Cheat Engine 6.8 Beta2 и выше Задача try/except в AA обработать исключение, не допустить crash. Чтобы игра продолжалась, а чит в лучшем случае не закрыл бы процесс. В теории возможно определить, что был crash и что-то сделать. Например, отправить логи в свой или иной удаленный сервис аналитики, что такой-то чит не сработал... Пример от DarkByte для try/exceptс счетчиком crashes [ENABLE] alloc(newmem,2048) alloc(crashcount,4) registersymbol(crashcount) label(returnhere) label(originalcode) label(exit) newmem: push eax {$try} mov eax,[esi+95c] cmp [eax+10],0 jmp ok {$except} pop eax add [crashcount],1 jmp originalcode ok: pop eax je aftersub //it is 0 originalcode: subss xmm0,xmm3 aftersub: movss [esi+00000164],xmm0 exit: jmp returnhere "HomeworldRM.exe"+22AEEA: jmp newmem nop nop nop nop nop nop nop returnhere: [DISABLE] dealloc(newmem) "HomeworldRM.exe"+22AEEA: subss xmm0,xmm3 movss [esi+00000164],xmm0 //Alt: db F3 0F 5C C3 F3 0F 11 86 64 01 00 00