У меня бывают такие случаи, когда увидишь простой пример кода после которого захочется заняться разработкой какой-нибудь игры.
Вот один из таких примеров о том, как сделать подъем и опускание предмета и затем его вращение. Это 5 строчек "таких" и 5 строчек "таких", вот подъем и вращение
На видео код можно применять для левитации предметов и вражеских персонажей, которых можем поднимать, удерживать и бросать.
В версии Unity 2018 довольно много интересного.
1. Это Unity Hub. Та штука, которая позволяет быть в курсе новых версий Unity.
2. PackageManager. Покажет пакаджи установленный в проекте.
3. Pro Builder. Довольно интересный инструмент, который позволяет моделить оркужение в Unity и творить простые локации, здания и создавать примитивы с наложением текстур... там очень много чего, я не не смотрел особо. Это альтернатива террейну. Фишка в том, что мы не являясь художниками (2
Unity — среда для тренировки искусственного интеллекта. Ниже пример обучения ИИ для игры в гонки.
В новой версии Unity много изменений, если кому интересно на официальном сайте много информации по обновлениям
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" может попадать некоторая другая функция с аргументом найденного слова (тогда будет вызов этой другой функции при каждом захвате символа или
Установка:
1. Файл GHL_ClassSettings.lua закинуть в autorun (нужен для сохранения и загрузки данных формы)
2. Двойной клик на Lua Regular expression.CETRAINER вызовет это окно
Описание:
- Для тренировки и проверки написания регулярных выражений
- Выбор извлечения строк в виде одной или в виде последовательности
- При нажатии на кнопку или при вводе текста в memo вычисляется выражение
Lua Regular expression.CETRAINER
GHL_ClassSettings.lua
Вполне читерская программа Sikulix
Помощник для нахождения отличий
Исходник:
Картинки для тренировки
Игра
Sikulix
Документация
Туториалы
Sikulix умеет:
ждать появления или исчезновения элемента, просто ждать, периодически просматривать область в background (например игрового чата);
читать (и писать) текст в(/из) поля ввода, "нажимать на клавиатуру", подсвечивать области, кликать по элементам, удерживат
Долго не могу решить проблему
Traceback (most recent call last):
File "C:\air test\plugins\firebase\build.py", line 124, in run
self.SIGNAL_INSERT_LOGVIEW.emit(_str.decode("GB2312").encode("utf-8"))
UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 11-12: illegal multibyte sequence
QObject::~QObject: Timers cannot be stopped from another thread
Если кто шарит на питоне просьба помочь. Питон 2.7
Основная строка
self.SIGNAL_INSERT_LOGVIEW.emit(_str.deco
Можно в редакторе сделать автозавершение инструкци для CE Lua и даже для CE Autoassembler.
Накидал пример, может быть, кому интересно будет для других языков.
Установка. Поместить файл в директорию на скриншоте
lua.xml
Настройки
Пример1. Узнать во сколько раз string.match() медленее string.find()
Пример2. Создание лишней локальной переменной
Ответы: 1.38, 1.04.
Если значение меньше единицы, то оптимизированный код хуже.
Если значение больше единицы, то стоит использовать более оптимизированный вариант.
Для простого поиска лучше использовать string.find чем string.match.
Еще несколько примеров
Для чего может пригодиться. Может пр
С точностью до тысячной доли секунды можно посчитать задержку выполнения кода, что можно применить как счет производительности.
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 Regular Expressions (v. 1.0)"
Текст во вкладке "gmatch"
Game1
gameCompany
DAU
53.21k
-20%
Game2
gameCompany
DAU
20.35k
-20%
Поиск элемента после строки
"DAU "DAU%
Нет времени, пока напишу заметки.
1. Можно сделать плагин с визуализацией счетчиков обращений к видимым данным в MemoryView с подключенным DBVM.
2. По аналогии в Dessect Data Scanner сделать выбор DBVM режима.
DBVM позволяет обойти ограничение в 4 аппаратных брейкопинта и в реальном времени визуализировать данные, которые обращаются к памяти на чтение, запись. Показывать счетчик обращения и даже показывать спискок инструкций при наведении курсором на байт или иные да
Обновление плагина
Установка с репозитория: ссылка
Кратко
1. Добавил сохранение/загрузку параметров. Хранение в текстовом файле в папке autoruns
2. Добавил настройки графического интерфейса (слайдеры, пункт меню)
Подбронее
FINCSTP
Похожа на FSTP, также вращает стек регистров FPU (я кстати не знал, увидел при тестах в CE), но только не перемещает значение по адресу.
FSTP [здесь указывается адрес или регистр]
FINCSTP
Если нужно вытолкнуть значение из ST(0), а адрес куда его выталкивать не нуже
Довольно интересная функция, мне понравилась.
showSelectionList() позволяет просмотреть список класса Strings и выбрать свойство через список.
Как пример посмотрим список свойств главной формы и выберем любое свойство
local mainForm = getMainForm()
local listProperties = getPropertyList(mainForm)
local allowCustomInput = false
local id, name = showSelectionList("Title", "Caption", listProperties, allowCustomInput)
print ('Index: '..id..", Name: "..name)
--> Примеры выполне
Решил попробовать написать CE Lua скрипт, который прочесывает структуру и в Dissect data/structures окне создавал бы структуру только со смещениями, с которыми код работает, т.е. читает или пишет.
Например, мой персонаж прогуливается по городу, а каждые 200 мс ставится брейкпоинт на смещение +1 до гипотетической N границы структуры (например до 4096).
Я не успел сделать определение типа, но смещения внутри структуры получить я успел.
Итак, находим начало стру
Наконец-то дошли руки до третий части.
Речь пойдет о создании структур программно. Пример, что будет в конце записи
Сразу к делу. Нужен поинтер и процесс.
Запустим туториал из Cheat Engine из меню Health->Cheat Engine Tutorial.
Прохождение туториала подробно описано здесь
Подключаемся к процессу идем на 8-мой шаг. В руководстве есть поинтер
[[[["Tutorial-i386.exe"+XXXXXX]+C]+14]+0]+18
Вместо XXXXXX может быть любое
Как контролировать включение и выключение скриптов в таблице
AA или "Autoassembler code" код похожий на язык программирования ассемблера.
Обычный АА-скрипт состоит из двух директив и добавляется в таблицу CE как запись
// Код срабатывающий как при активации, так и при деактивации
[ENABLE]
// Код активации
[DISABLE]
// Код деактивации
Чтобы код активировался, нужно включить галку напротив записи в таблице и наоборот выключить.
Есть такие директивы как {
Где писать Lua код?
Lua Engine окно, которое вызывается из главного окна CE.
Lua Console окно, которое вызывается из окна отладки CE.
Окно Autoassembler скрипта с вставки {$lua}, {$asm}
Lua Engine окно и Autoassembler-ные скрипты могут сохраняться в файлах Cheat Engine *.CT. *.CETRAINER, *.EXE
Lua Console для пошаговой отладки Lua кода и просмотров результатов ошибок и функции print()
Моя первая программа
Сначала узнаем версию для CE 6.7 и это
UserData в Lua это пользовательский тип. Точно не знаю, но я думаю в документации в CE Lua (celua.txt или здесь на офф. сайте) тип userData у всех классов или большинства классов. Например, проверим, что главная форма CE это userData тип
local mainFormCE = getMainForm()
print(type(mainFormCE))
> userdata (вывод из консоли)
Выводим список свойств следующим образом через getmetatable функцию. Метатаблица — это особая таблица свойств Lua-переменной (подробнее здесь)
local mainF