Перейти к содержанию

MasterGH

Ветераны
  • Постов

    2 999
  • Зарегистрирован

  • Победитель дней

    129

Весь контент MasterGH

  1. MasterGH

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

    С какой-то версии CE стало не обязательным объявлять метки
  2. Новые директивы try/except в AA доступны Cheat Engine 6.8 Beta2 Задача try/except в AA обработать исключение, не допустить crash. Чтобы игра продолжалась, а чит в лучшем случае не закрыл бы процесс. В теории возможно определить, что был crash и что-то сделать. Например, отправить логи в свой или иной удаленный сервис аналитики, что такой-то чит не сработал... Пример от DarkByte для try/except с счетчиком crashes
  3. pcall() функция может вызывать функцию, которая может вызывать исключение. Возвращает статус в виде булевой о том, есть ли исключение или нет и возвращает текст исключения. Источник Как этим пользоваться? Если вдруг знаем, что может произойти ошибка, то можно её обработать и выполнить правильное действие не останавливая работу Lua скрипта. Или например если не выполняется условие, то можем сами создать ошибку с помощью функции error, что остановит скрипт.
  4. MasterGH

    Интересные программы

    1. WebSite-Watcher позволяет отслеживать изменения на веб-страницах в том числе по по регулярным выражениям. Можно отслеживать изменения на сайтах Cheat Engine и других. Форум отслеживать смысла особого нет. Проще подписаться на обновление и почтовый клиент поставить. 2. Программы тестирования и автоматизации под разные ОС: Sikuli — открытая кросс-платформенная визуальная среда создания сценариев-скриптов AirTest IDE — почти как Sikuli и более того, китайские разработчики были вдохновлены Sikili и решили взять из него многое и использоваться в QA тестировании. 3. Автоматический скрывать значков на рабочем столе AutoHideDesctopIcons 4. LightShot - быстро делаем скриншоты и заметки к ним. Можно еще использовать SnagIt, он еще и видео может снимать 5. f.lux — софтина регулирующее цветовую температуру компьютерного монитора 6. VerseQ — лучший на мой взгляд клавиатурный тренажер. Есть плагины тренировки на языки программирования 7. Scanner — показывает график в виде секторов о данных на жестком диске 8. ProcessExplorer, ProcessMonitor, WinScanner, API Monitor... все по системе 9. Возможно понравится XYplorer как замена или дополнение к файловому браузеру 10. NotePad ++ и sublime_text - на мой взгляд хорошие редакторы текста, может быть даже одни из лучших Как-то раз нужно было поставить пробелы между китайскими иероглифами в гугл таблице (все для игры на Unity), чтобы в игре разрядить текст и он не был мелким. На notepad++ это выгладило так
  5. MasterGH

    CE Lua. Ищем свойства userData.

    UserData в Lua это пользовательский тип. Точно не знаю, но я думаю в документации в CE Lua (celua.txt или здесь на офф. сайте) тип userData у всех классов или большинства классов. Например, проверим, что главная форма CE это userData тип local mainFormCE = getMainForm() print(type(mainFormCE)) > userdata (вывод из консоли) Выводим список свойств следующим образом через getmetatable функцию. Метатаблица — это особая таблица свойств Lua-переменной (подробнее здесь) local mainForm = getMainForm() local listUserData = createStringlist() for k,_ in pairs(getmetatable(mainForm)) do listUserData.add(k) end local allowCustomInput = false local id, name = showSelectionList("Title", "Caption", listUserData, allowCustomInput) print ('Index: '..id..", Name: "..name) listUserData.destroy() Результат в виде списка свойство переменной mainForm Чтобы наглядно было. Свойства эти похожи на свойства из Дельфи. Можно загуглить, они поддробно описываются. Берем например свойство цвет. Прочитаем оригинальное и запишем свое любое local mainFormCE = getMainForm() print(mainFormCE.getColor()) > 536870912 -- в hex-е это 0x20000000. Можно перевести в калькуляторе или через print(string.format("%08X", 536870912)) Случайное свое впишем ради наглядного примера mainFormCE.setColor(546484)
  6. Судя по коду игра может всегда возвращать FALSE. Других return не видно. Возможно еще стоит написать обработчик исключения и вывод информации. Можно прогнать под пошаговой отладкой в отладчике Коды ошибок при работе с файлами
  7. Довольно интересная функция, мне понравилась. 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) --> Примеры выполнения: --> Index: 55, Name: ShowHint --> Index: 10, Name: Top После исполнения Lua скрипта вот такой диалог появится. Можно искать свойство через ввод текста Список строк (Stringlist Class) используют: createStringlist(): Strings - постой список getAutoAttachList(): Strings - список имен процессов для автоподключения getPropertyList(class) : Strings - список свойств getCommonModuleList(): Strings - список пропускаемых при сканировании модулей getProcesslist(Strings) - список процессов getWindowlist(Strings) - список окон getThreadlist(Strings) - список потоков Database.Params: Strings - свойство базы данных SQL ListItem.SubItems: Strings - свойство подстрок в визуальном компоненте списка ComboBox.Items: Strings - комбобокс Memo.Lines: Strings - мемо компонент RadioGroup.Items: Strings - компонент RadioGroup ListBox.Items: Strings - компонент ListBox FileDialog.Files: Strings - выбранные файлы в диалоге
  8. Верно При сканировании А что с ним не так было? Работает фильтр на конечное условие и на поиск этого условия. На начальное условие не смотрел
  9. Изменения в Lua при сравнении файлов. Возможно позже напишу, что интересного можно делать в новой бета версии CE Карта сравнений (справа. на глаз изменений не более 20%)
  10. MasterGH

    Tool C# Regular Expression

    Если будет время, попробую разобраться
  11. MasterGH

    Взлом крафта в StarsOne

    В оригинале, если нет всех компонентов рецепта, то нельзя скрафтить вещь. Цель: скрафтить без компонетов по нажатию кнопки Игра на Unity и можно пробовать использовать в dnSpy модифицировать файл Assembly-CSharp.dll Открываем файлик и смотрим на классы связанные с крафтом Так находим кнопку, которая создаст указанное количество вещей крафта в CreateItem Задача скрафтить по имеющемуся рецепту любую вещь. Для этого я добавляю проверку количества вещей и удаляю лишний код. Под сполерами оригинальный и модифицированный код Визуальное сравнение Модифицированный код Оригинальный Изменяем весь класс или метов в этом окне Если выводит ошибки при компяляции, то скачиваем IlSpy и его код вставляем в код в dnSpy. Или качаем DnSpy 3.2.0 или ранее Изменения сохраняем в модуль, запускаем игру и крафтим. Получить все рецепты (не проверял правда, попробуйте если хотите) Вещи не ломаются. Убрать отнятие "здоровья" у вещи
  12. MasterGH

    Tool C# Regular Expression

    Regular Expression.rar Документация: Код через regex.Matches
  13. Если я правильно понял про positive lookahead, то такого в Lua нет Можно через gsub пытаться, но мне такой вариант не нравится
  14. MasterGH

    Unity набирает обороты

    В версии Unity 2018 довольно много интересного. 1. Это Unity Hub. Та штука, которая позволяет быть в курсе новых версий Unity. 2. PackageManager. Покажет пакаджи установленный в проекте. 3. Pro Builder. Довольно интересный инструмент, который позволяет моделить оркужение в Unity и творить простые локации, здания и создавать примитивы с наложением текстур... там очень много чего, я не не смотрел особо. Это альтернатива террейну. Фишка в том, что мы не являясь художниками (2д, 3д артистами), на Pro Buildere можем вполне сносное сделать окружение в нереалистичном стиле. И не очень мультяшный и не похожий на реалистичный стиль. В таком стиле в теории можно сделать быстро игру. Встроить туда рекламы и инаппов, ну и если все будет ок, то будет приносить прибыль на маркетах. Важнее продвинуть аппу вверх, на вид, чем сделать её; 4. У Unity развиваются мощные системы сервисов. Есть поддержка иннпов, рекламы, аналитики, багрепорты (альфа версия), стеки крашей и исключений с характеристиками устройств пользователей. Не все баги там можно увидеть. Google Play консоль ловит больше багов, крашей и ANR (диалоги с "подождите ваша программа что-то долго делает или не отвечает, или будет закрыта"). 5. Запомнился 2d аниматор с ригом. Т.е. риг это склет обычно на 3д модель, а теперь риг можно делать на 2д модели. 6. Пока больше не помню, что такого интересно... В 2017 версии появилась возможность скрипты связывать с отдельными dll сборками. В теории это позволит увеличить скорость компиляции. Например, у нас в проекте на младших версиях Unity на правку уходит 8 секунд компиляции на мощном компе,т.к. все скрипты в одной сборке dll. Пока не тестили эту фичу...
  15. Почти месяц ковыряюсь со сборкой апк, которая не запускается на инструментальном тестировании в Firebase Рис.1 Сборка апк на инструментальное тестирование TestLab от Firebase. Окно AirTest IDE Две апк-шки создается. 1. В Unity, с иvпортом Poco SDK 2. В Плагине как на рисунке Затем обе апк-шки отправляются на инструметальное тестирование в Firebase Запускаю тест. Шесть секунд видео со стандартной заставкой и конец теста. На данный момент тестирование проводим через GameLoop тест, а не через инструментальный тест от AirTest IDE. Продолжаю искать решение, пока не понятно. Также в AirTest IDE еще не закончили свою документацию и в Firebase ничего не сказано про этот инструмент. Однако, известно что этот замечательный инструмент тестирования будет участвовать в FireBase TestLab. В 2018 году китайские разработчики официально договорились с гуглом об участии их продукта в тестировании на удаленных устройствах сервиса TestLab
  16. Была задача получить два списка из документа, в котором было с пару десятков тысяч строк. На практике выяснилось, что искать текст после ключевого слова легче чем искать текст до ключевого слова. Об этом и будет дальше В утилите, которую я делал "Lua Regular Expressions (v. 1.0)" Текст во вкладке "gmatch" Game1 gameCompany DAU 53.21k -20% Game2 gameCompany DAU 20.35k -20% Поиск элемента после строки "DAU "DAU%c%c(.-)%c%c"" > 53.21k;20.35k; Поиск элемента до строки Вот такой паттерн со двигом скобок для поиска прыдыдущеей фразы "%c%c(.-)gameCompany%c%c" не прокатит для вывода списка игр над фразой gameCompany > ;53.21k > -20% > > Game2 > ; Очевидно, можно сделать поиск по похожим фрагментам, которые идут последовательно сверху вниз. Для просты сначала добавим первую пустую строку и видим повторяющиеся фрагменты %c%cGame1%c%cgameCompany%c%c пишем шаблон ".*%c%c(.-)%c%cgameCompany%c%c" и опять мимо > Game1;53.21k > -20% > > Game2; Потому что текст над Game2 пошел выше Game2. Тогда делаем захват, только первой фразы и дальше не идем "%c%c(%w-)%c%cgameCompany%c%c" > Game1;Game2; И тогда все ок. Но это еще не все. Осталась первая пустая строка, которую добавили, если её удалить, тогда "%c%c(%w-)%c%cgameCompany%c%c" > Game2; Не видит Game1. Значит мы можем убрать %c%c, "(%w-)%c%cgameCompany > Game1;Game2; Дальше название игры может быть таким "My Game: my Game". Здесь и пробел и двоеточие. В таком случае текст уже будет My Game1: my Game gameCompany DAU 53.21k -20% My Game2: my Game gameCompany DAU 20.35k -20% Пробуем (%w-)%c%cgameCompany > Game;Game; Что не верно, т.к. захват одним (%w-) Мы должны в скобках развернуть фразу имени игры. В ней могут быть пробелы, числа, текст и двоеточие ([%w%s]-)%c%cgameCompany > my Game; my Game; Затем ([:%w%s]-)%c%cgameCompany > My Game1: my Game; > > My Game2: my Game; Затем %c?%c?([:%w%s]-)%c%cgameCompany > My Game1: my Game; > My Game2: my Game; Вот и все. Если попариться один раз, то тексты уже парсить будет гораздо быстрее. Так я вывел столбы DAU и названий игр в таблицу, что было в районе 500 строк из пару десятков тысяч строк p.s. Текст в консоли Lua отличается %c%c, а %с p.s.p.s. Можно разсплитить текст по "/n/r" или "/n" в таблицу строк и по индексам данных находить предыдущую или последующую фразу. Но мне проще две строки ввести "%c?%c?([:%w%s]-)%c%cgameCompany" и "DAU%c%c(.-)%c%c"
  17. 1. Можно создать класс AutoScreenSize.cs через dnSpy внутри Assembly-CSharp.dll : 2. Можно вызывать метод AutoScreenSize.InitComponent() из существующего метода Start() из существующего компонента, который есть в игре . Если все правильно получилось сделать, то будет переход в оконный режим 1024x768, каждый раз, когда игра будет ставить полноэкранный режим. Еще вариант. В теории можно сделать для любой игры на Unity на основе скрипта Cheat Engine, который внедряет C# dll в моно движок. Это скрипт где-то на форуме. На Lua останется написать выбор процесса Unity или запуск процесса по пути exe игры.
  18. Как я помню. Вектор — класс, массив — структура. В первом случае будут поинтеры, во втором адреса данных. Может быть разные типы данных связаны с дополнительным блоком скобок. @srg91, если есть возможность, то мог бы в CE DessectData развернутую иерархию данных заскринить. Было бы интересно посмотреть на поинтеры
  19. Может так Предполагаю, что там где описание массива из векторов —там кажется что скобки лишние. Двойка в описании массива означает инициализацию двух элементов, которые можно заполнить в массиве после знака "=", что и происходит
  20. MasterGH

    Python ошибка

    Да, я давно уже должность поменял... ничего особого ) Это просто так новость, не нужно поздравлять) Но, все равно спасибо
  21. MasterGH

    Python ошибка

    Точно, с ней виден русский текст. Интересно, я не знал И в этом прав... Удалил эту строку #!/bin/sh и логи без ошибок прошли Я тренировался на Unity3D/unitydemo.air. Эта апк собрана на Юнити. Её переместил в папку с проектом air (хотя она там и есть, это я другую удалил). Потом вызываю Firbase сборку и переподписываю. Собирается без ошибок, но апк на локальном смартфоне скрывается. При повторном запуске показывает ошибку, а по идее должен запуститься тестовый скрипт unitydemo.py Идея то в том, что тестовые скрипты игр запускатся в firebase на удаленных физических устройствах в службе Test Lab и там в течении например 15 минут идет тестирование с графиками, видео, логами. Похоже на известную SikuliX p.s. сменил должность на рукводителя отдела тестирования Повысили ЗП, больше не разработчик игр. Руковожу немного, да ботов редко пишу. Пожалуй я рад этому. У меня много данных аналитики, куча сервисов... Общаюсь больше с людьми, по верхам отделов и с разработчиками. Много задач завожу по функциональным багам. По железу и багам всегда ко мне.... Бывает и нудная работа в виде даже ручного тестирования игр (когда наш человек в отпуске), отчетности... Общаюсь с тестировщиками ручного тестирования. Два удаленных, один наш... Меньше стал уставать, мозги отдыхают... Такие дела
  22. MasterGH

    Python ошибка

    Долго не могу решить проблему 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.decode("GB2312").encode("utf-8")) При билде апк в firebase через плагин в AirTest (QA-тестирование на Unity) Среда разработки от уважаемых китайских разработчиков Я думаю в связи с этим ошибки с кодировкой GB2312. Гуглил, искал... пока безтолку Исходники Билд
  23. Книга про взлом игр. Только английский вариант и ознакомительная версия. Содержание и обложка под спойлером Ознакомительная версия
  24. 1. Сравнить структуры 2. Найти адрес id модели, хотя это если повезет. Может вообще не быть. Если нет id, то сам адрес структуры 3. На адрес id или на адрес структуры ставится брейкпоинт. Находим инструкцию, которая работает со всеми id или адресами структур и выводим их куда надо и как надо. Либо через АА скрипты, либо через Lua скрипты. Через последние проще. Нет гарантии, что все id-моделей сейчас на игровой сцене...
  25. MasterGH

    [Cheat Engine] Dissect Data Scaner 1.0.1 beta

    Скорее всего, обновление будет на этой неделе. 1) Опкоды с перезаписываемыми регистрами типа mov eax.[eax] будут пока просто пропускаться (в следующих версиях плагина не будут) и соответственно будут пропускаться смещения, на которых опкоды только с перезаписываемыми регистрами; 2) Будет такая штука, как выбор лучшего опкода из всех, что проскочили на точке останова. Например, float приоритетный тип вместо dword, т.е. когда есть опкоды двух типов вернет flost, т.е. vtSingle. Также и из-за пункта1 здесь же исключаются опкоды с перезаписываемыми регистрами типа mov eax.[eax] ; 3) ну и наконец, самое и самое важное это получить правильное определение смещения в структуре. Из-за этого бетта версия не может вылезти в релиз.
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.