Есть инструкции, которые добавляют мусора больше чем другие.
Показываем объем памяти мусора
print(string.format('Lua memory usage %.1f MiB',collectgarbage('count')/1024))
Ниже код того как попробовать узнать сколько мусора добавил код при парсинге ассемблерной строки двумя способами
Пример результатов могут отличаться. Фиг его знает почему. Возможно работает сборщик мусора в разные моменты времени
Lua memory usage 1.8 MiB
Lua memory usage 1.8 MiB
Lua memory us
Появилась такая опция асинхронного выполнения скриптов
Если эту опцию поставить на скрипты, то появляются вот такие часики
АА-шные скрипты могут искать в этот момент сигнатуру.
Lua скрипты потестить было интересно, узнать действительно ли асинхронно выполняется. Например, один скрипт выполняет счет, второй выполняет счет. По выполнении выводится результат.
Во время выполнения включаем первую галку. Тут CE подвисает. Затем успеваем нажат
Я задался вопросом, что такое pointermap. Вообще о нем не слышал и речь пойдет о нем. Я узнал о нём и прикинул, что возможно круто, а возможно и не круто иметь готовую цепочку указателей перед тем, как что-то делать в отладке. Цепочки можно раскрыть в окне структур и прикинуть, что там в них и "около" каких адресов будет происходить отладка. Во время отладки можно смотреть на окна структур. Может быть, а может быть и нет что-то интересное связать в отладке и с данными об указателях...
Много лет назад подсел я на читы. Читы я не только делаю, но и пользуюсь ими. Все игры прохожу с читами (кроме MMO, в которые очень редко играю). Не помню какую игру прошёл без читов последней. Даже в ГЭГ вешал очки тетриса и силу удара рогаткой по мышам в канализации. Хотя нет, помню - INSIDE прошёл без читов. А чего там вешать-то? В общем, зараза похлеще герыча Скажете, с читами неинтересно играть, весь интерес к игре пропадает? Не скажите. Вот когда тебя убивают в 100-ый раз, вот тогда дейст
Пошаговая отладка в dnSpy позволяет ставить брейкпоинты на C# код во время работы игры, перемещаться по коду, просматривать значения переменных.
Сэкономит кучу времени при поиске и отладке игрового кода,
1. Страница загрузки dnSpy
2. Скачиваем dnSpy и все архивы с mono.dll файлами
Unity-debugging-4.x-win32.zip
Unity-debugging-4.x-win64.zip
Unity-debugging-win32.zip
Unity-debugging-win64.zip
3. Смотрим свойства exe файла игры и определяем по нему вер
Спавн итемов удалось сделать через dnSpy.
При клике на любой предмет на меню крафта он создается в инвентаре, а если там занято, то выкидывается на карту.
Я переписал метод клика на рецепт, вот он оригинальный
На этот
Для спавна заменить Assembly-CSharp.dll из архива, сделав копию предварительно
Assembly-CSharp.rar
ИМХО отказываться от CE Lua скриптов из-за утечек памяти не стоит.
Можно чистить память следующим образом
function startCollectgarbageProcess(interval, showStatus)
local timer1 = createTimer(true)
timer1.Interval = interval
timer1.onTimer = function ()
if (showStatus) then
print(string.format('Lua memory usage %.1f MiB',collectgarbage('count')/1024))
end
collectgarbage("restart")
collectgarbage("collect")
if (showStatus) then
print(string
Игра с рандомом. Есть счет.
Запускается через таблицу в аттаче.
Здесь мог быть AI на Lua, возвращающий номер клетки от 1 до 9.
function InputAI()
-- рандом
return math.random (1, 9)
end
Извиняюсь, лучше рандома пока не могу предложить.
Крестики и нолики.CT
Поиск по модулям
Исходник
Поместить ModuleListRegioScan.lua в autorun.
Что интересно, Дарк Байт решил написать на Lua. Эта функция жестко в CE не впиливается. Можно выбирать, хочу это расширение поставить или нет. Посмотрел, если понравится, то оставил. Cheat Engine перекомплировать не нужно и не нужно в нем делать опции скрывать или показывать функционал.
Источник
Источник
Как вступление. Мне нравится Lua, потому что в нем можно писать код в виде строковых данных (и Lua строки, и ассемблерные строки), а затем выполнять эти строки как код. В теории код может по фидбеку делать другой код в автоматическом режиме. Это на мой взгляд неисчерпаемые потенциальные возможности AI ограничивающиеся железом.
В CE 6.7 функция autoAssemble вызываемая в Lua скриптах позволяет включать и теперь выключать скрипт со "своим" dealoc-ом.
При
Напишем функцию, которая в 3.2 раз быстрее кода ниже
splitDisassembledString(disassemble(address))
Сравнивая скорости получаем оптимизацию в ~3.20 раза быстрее.
Пример использования
function GetDebugString2(address)
local clearString = string.gsub(disassemble(address), '%s','')
return string.match(clearString, '^(.-)%-(.-)%-(.-)$')
end
local address, bytes, opcode = GetDebugString2(0x0045464A)
print(address)
print(bytes)
print(opcode)
gsub очищает пробелы
Инфа по совместной работе с гитом. Может быть пригодится кому, а может и нет. Такую систему я использую на работе недавно.
Можно совместно работать над одним большим проектом через git-flow. Возможно, кто-то из форумчан тоже использует git flow на работе.
Кратко. Модель контроля версии построена на 4 ветках
master - релизы
develop - разработка
feature - фичи
hotfix - исравления
С develop начинается разработка через копирования в ветк
Дорогие читатели!
Мне продолжать этот бложек в текстово-картиночном формате (возможно - с гифками!) или же перейти обратно на формат видеолекций? А может, текстовые статьи дополнять видеопояснениями? Я никак не могу определиться, потому что мне очень странно на камеру объяснять и писать текст (код). Помогите мне определиться, пжлст (в комментариях).
Нажали checkbox — заполнились данные по базовому адресу
Отжали checkbox — удалились данные
Если проще руками забить и поставить опцию раскрытия, то можно и без скрипта.
Привет, читатель!
Ты сейчас читаешь это, потому что в тебе есть интерес ко взлому игр и низкоуровневому программированию, ибо этот мини-блог будет посвящен как раз этой тематике. Если конкретнее, то я постараюсь показать и рассказать о том, как пишутся движки для трейнеров. Если ты вдруг не в курсе, то трейнер - это программа, позволяющая всячески изменять поведение компьютерной игры. Например, сделать ГГ (главного героя) бессмертным или же выдать ему миллион игровых очков. В общем,
Был вопрос на форуме о том, как узнать, а куда смотрит игрок и как нарисовать линию в экранных координатах.
Я не нарисую отрезки в окне игры в экранных координатах, но могу отобразить точки одного отрезка для одного глаза 2д-панельками в экранных координатах (хотя визуально, у Unity экранные координаты связаны с 3д координатами по масштабу пикселя на метр на сцене). Для наглядности все же в окнах сцены будут отрезки в 3д-координатах.
Чтобы посмотреть
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