MasterGH

Администраторы
  • Публикации

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

  • Посещение

  • Days Won

    61

MasterGH last won the day on January 2

MasterGH had the most liked content!

Репутация

287 Codecaver

О MasterGH

  • Звание
    Сооснователь
  • День рождения 31.12.1986

Информация

  • Пол
    Мужчина
  • Город
    Новосибирск\Москва

Посетители профиля

59 101 просмотр профиля
  1. Ты можешь создать тему в заказах и ждать решения https://gamehacklab.ru/forum/38-запросы-без-оплаты-труда/ Устное предупреждение за флуд (уже во второй теме).
  2. Биохимия — тоже программирование

    Надо будет понюхать. Спасибо
  3. Биохимия — тоже программирование

    Это замечательная книжка входит в бизнес литературу по коммуникации. В начале глав описывается некоторая социальная ситуация, в конце глав — как сделать лучше после понимания работы нашего головного мозга. Чем дальше читать книжку тем она показалась мне интереснее. Если образно провести аналогии, то это как изучить синтаксис нового языка программирования, только биохимии. Здесь нужно запомнить названия веществ (их не так много) ,которые создают эмоции в связи с событиями и намерениями других людей. Тогда мы управляем выбросом гормонов в своем мозге и можем принимать эффективное решение с выгодой для себя и команды. Сможете управлять своим состоянием — сможете быть успешным руководителем сплачивая команду. Вероятно многим известно, что в голове сплошная биохимия (в книге 2017 года издания опираются на современные исследования) Окситоцин — гормон счастья, впрыскивается при социальном общении с людьми. Дофамин — гормон кайфа, впрыскивается при сбывшихся ожиданиях. А вот кортизол — гормон несправедливости и стресса Мыслительная деятельность наиболее эффективная, когда содержание двух важных нейромедиавторов — норэпинефрина (близкий к адренолину) и дофамина, отвечающих за внимание и интерес — находятся на среднем уровне между расслабленностью и максимальным стрессом. Отдельно хочется отметить, что эмоции, которые у нас возникают сами по себе часто мы не можем объяснить. Нам не говорят об этом в школе, не учат родители. Зато об этом очень подробно изложено в книге. Там расскажут как повысить дофамин и окситоцин (без приема лсд), что не делать чтобы не создавался кортизол у других и у себя. Вы узнаете о провокации (создании несправедливости, угрозы общественному статусу ) и что в этом случае делать... Все главы прямо или косвенно посвящены коммуникации людей и процессам происходящих в нашем головном мозге. Так что это очень интересная книга У нас на работе есть собственная библиотека. Там есть книги по областям, которые нам важны. Это не только психология, но 3д, 2д, программирование и прочее. Прочитать эту книжку первым делом советовали всем. Я взял эту книгу перед новогодними праздниками и потом понял, надо книжку покупать. Хочу! Купил электронный вариант. А там нет ссылок на термины как в печатном варианте в конце книги. Я нашел в Новосибирске магазин, помчался туда и купил печатный экземпляр. Доволен... В этом году сделал много подарков близким, купил себе классный парфюм
  4. [dnSpy + Unity ] Пошаговая отладка

    Пошаговая отладка в 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 файла игры и определяем по нему версию Unity. Например, "Версия продукта 5.5.0.3120186" или версия "файла 5.50.39994" может указывать на версию Unity 5.5. 4. Определяем разрядность приложения через Process Explorer 5. Т.к. версия Unity 5.5 и приложение 32 разрядное, то открываем Unity-debugging-win32.zip ищем там версию Unity и заменяем mono.dll в директории игры 6. Запускаем игру и dnSpy x86 (игра 32 разрядная поэтому x86). Открываем файл "\...\Managed\Assembly-CSharp.dll" Запускаем отладку нажав F5 или кноgку Play 7. Настраиваем соединение и жмем ок 8. Ставим брейкпоинты, смотрим перемененные, перемещаемся по коду, пишем свой код и так далее 9. После изменения кода, нужно перезаписать модуль предварительно сохранив его О других способах подключения пошаговой отладки есть на английском руководство. ---------------------- Как работать в пошаговой отладке Работать можно почти также как и в Cheat Engine в пошаговой отладке или в среде разработки программ. Начать стоит с обзора названия пространств имен, названия классов, методов и полей, Названия могут подсказать логическую связь с читом, который хотим сделать. Стоит обратить внимание на такие названия как "IsPlayer, Player, Character, CharacterController, MainCharacter, Health, Inventory, Craft" и другие. Чтобы не искать вручную можно задействовать поиск сборкам. Поиск стандартного тега "Player" в виде в строки кода (в Unity выше версии 5.0) или свойства "IsPlayer" может помочь найти игрока или отличить от чужих. Важно представлять иерархию игровых объектов, которую мы не видим в dnSpy. Программист работая в Unity видит это окошко много лет и эту иерархию всегда представляет смотря на скрипты в dnSpy Скрипты наследники от MonoBehavior могут находиться на игровом объекте и могут работать как с ним так и с другими объектами. Получается такая штука, что игровой объект всегда имеет Transform компонент с полями позиций, углами и scale. Классы Transform и GameObject самые основные. Методами этих классов можно разместить объект в мире, создать или удалить его. В идеале удалив объект со сцены не должно быть никаких ошибок связанных с пустыми ссылками, потерей объекта. Также и клонировав объект, тоже не должно быть ошибок. Но не всегда так просто отспавнить игровой объект. Если это сделать методами UnityEngine, то другие классы ничего не будут знать о появлении игрового объекта. Нужно ставить брейкпоинт в функции Start или Awake в классе и трейсить по Shift+11 чтобы выйти на функцию разработчиков спавна этого GameObject. Функции Start или Awake (в классе наследника от MonoBehavior) срабатывают один раз при включении скрипта и инициализации. По ним можно выйти на строку кода, которая создает объекты в мире. Отдельно стоит сказать про количество скриптов. Практически в любой игре, которая мне попадалась в dnSpy много скриптов или очень много. Иногда и не будет понятных названий у типов (из-за обфускации). В любом случае при пошаговой отладке можно найти требующиеся участки кода для создания чита и использовать их по другой логике. Основные приемы В Update можно обновлять параметры только своего игрока. Например, в Character классе сделать сравнения в Update по IsPlayer свойству (если оно там есть) и у тебя за каждый кадр рендеринга будет максимум характеристик. В Update с классом Input можно считывать хоткеи. В Start и Awake можно подгружать свои ассеты с внутриигровым user interface. Код скриптов перед загрузкой ассетов должен быть внедрен через dnSpy Иерархию игровых объектов и инспектор, если очень нужно, то можно отрисовать в user interface. Обычно не требуется. (поищите по форуму в игрострое) В заключении Пока нет времени делать трейнер или таблицу на CE для включения опций в играх Unity. Для меня пока подходит способ через перезапись модуля в dnSpy вручную. Вместо трейнера можно сделать программу патчер, который будет проверять версию игры и перезаписывать модуль с возможностью вернуть оригинальный модуль
  5. [The Escapists 2 + Unity + dnSpy] Спавн итемов.

    Спавн итемов удалось сделать через dnSpy. При клике на любой предмет на меню крафта он создается в инвентаре, а если там занято, то выкидывается на карту. Я переписал метод клика на рецепт, вот он оригинальный На этот Для спавна заменить Assembly-CSharp.dll из архива, сделав копию предварительно Assembly-CSharp.rar
  6. CE Lua чистка памяти от утечек

    Я тоже не говорю, что стоит отказываться от Lua в CE. Тоже могу сказать, что достаточно полезный. Хотя ничего не писал месяца 4. Размер свободной ОЗУ уменьшался в плагинах на событии движения мышки по окну Lua-шного дизассемблера. Больше гигабайта за минут 30 и дальше - больше. Вариант выше эту проблему исправил. Потом вышел fix и это дело поправили.
  7. CE Lua чистка памяти от утечек

    ИМХО отказываться от 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.format('Lua memory usage %.1f MiB',collectgarbage('count')/1024)) end end end -- Собирать каждую 1 минуту и показать результат startCollectgarbageProcess(60000, true)
  8. Cheat Engine скрипт с интервалом

    CE Lua может сделать много утечек памяти. Я бы написал одну функцию и попробовал бы использовать во всех CE Lua скриптах или некоторых
  9. Поиск сигнатуры происходит по следующим правам +X-C-W. Одна из строчек Т.е. Если будет другое правило, то не найдет. Можешь попробовать в плагине везде поставить "*X*C*W", т.е. это Может быть тогда заработает
  10. Немного информации как добавить inGameMenu. Подробнее пока некогда писать Вот что получилось Как делал 1. Сначала сделал меню и ассет в Unity последней версии с официального сайта 2. Сделал ассет меню как здесь на видео (в пакадже все есть) 3. В dnspy добавил два класса из пакаджа. Это CheatMenu и ShowMenu. Нужно добавлять, т.к. код с ассетами не цепляется, а только названия классов 4. Там же в dnspy изменил код в LateUpdate 5. Перезаписал модуль сохранив изменения Assembly-CSharp.dll 6. Потестил, читы работают. Что можно сделать лучше 1. Путь до ассета нужен другой внутри папки с игрой или же можно путь удаленный сделать
  11. Отладки не было. Была небольшая работа с поиском по сборке. Был поиск условия "фильтра". Обычно это слова "IsPlyaer" или что-то с "Player". Подошел класс Character В Сharacter можно писать в существующий LateUpdate, но надо убедиться, что класс наследуется от MonoBehavior, иначе LateUpdate не будет вызываться. Да и кроме LateUpdate() можно работать с Update(), Start() и другими (ссылку приводил выше)) Ниже убедились, что T17NetworkBehaviour наследник от MonoBehaviour Раз убедились, то можно добавить код, полагая, что класс CharacterStats находится по соседству на том же GameObject. Получаем его через GetComponent и обращаемся к IncreasedMoney() или другим методам Для бОльшей уверенности не хватает видеть в рантайм всю иерархию игровых объектов с их названиями, со связанными названиями классов на игровых объектах. Тут можно представить что компоненты CharacterStats и Character находятся рядом В общем если полазить по сборке, то очевидно что можно сделать по названиям классов, методов и переменных. Можно обойтись без отладки.
  12. The Escapists 2 игра сделанная на игровом движке Unity. Об этом говорит наличие папки TheEscapists2_Data, в которой есть файлик Assembly-CSharp.dll dnsSpy умеет сохранять новый код в том же модуле. Как вариант на Cheat Engine ищем значения и названия переменных. Об этом было очень подробно на стриме Есть еще сложный способ через вывод иерархии игровых объектов и названий классов на них в рантайме, и по ним ориентироваться. На форуме я писал об этом в разделе Игрострой. Открываем Assembly-CSharp.dll в dnsSpy. Если там нет обфускации, то повезло. 1. Шифрование и расшифровывание параметров при записи и чтении через xor на C# 2. Взлом денег на скорую руку. Добавили код Character класс явно будет на каждом игроке в игре. CharacterStats будет явно рядом, на том же GameObject-е. Проверяется уже потом, когда деньги добавим Пишем новый код в Update или LateUpdate (вызываются по наследованию из MonoBehavior), Добавляем деньги через любой хот-кей проверяя свой ли это игрок новым кодом Идем в игру, в характеристики. Нажимаем на наш хот-кей "O" и получаем 999 денег. По аналогии можно сделать другие характеристики. Что можно сделать лучше: 1. Делать постоянную проверку о не хватке параметра и добавлять сколько нужно. 2. Сделать InGame меню с чекбоксами опираясь на руководство на официально сайте. p.s. Вдохновил на написание этой статьи стрим
  13. Я плохо разбираюсь в паттернах, но как я представляю. View - отделить UI от кода. Визуальные компоненты. Controller - связь кода и представления, интерфейс ввода/вывода. Связь между кодом и UI. Model - логика. Что делает код. Как я представляю, по этой абстрактной модели MVC можно делать много скинов независимо от логики. Можно менять и логику, она не будет зависеть от остального. Ну, а Controller похоже нет смысла менять. Это как интерфейс между представлением и логикой. Я не стал выделять классы, поскольку не могу помочь в этом
  14. Да. Есть какие-то shadow брейкпоинты, у меня их было довольно много из-за первого способа (если не ошибаюсь больше 15 на Сталкере Зов Припяти), когда трейсил на адресе патронов. Когда я стал использовать способ2, shadow бряки не включались. Было на мой взгляд быстрее. В общем надо все проверять, замерять и прочее.
  15. Есть два варианта пошаговой трассеровки 1. debug_continueFromBreakpoint(continueMethod) -- описание в справке 2. Самому рассчитывать каким должен быть следующий адрес и на него ставить брейкпоинт. Этот способ показался мне быстрее, но уже не помню на сколько. Код в репозитории. Что-то есть, надо разбираться. Я один и тот же поток отслеживал через второй способ.