-
Постов
2 999 -
Зарегистрирован
-
Победитель дней
129
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент MasterGH
-
Тема закрыта по просьбе автора.
-
DenkA003, это никнейм судя по результатам поисковика с подпорченной репутацией. Делает хаки и в мультиплеерах, активно рекламирует и возможно их продаёт. Поэтому неудивительно, что его волнуют вопросы качества своих трейнеров и новые источники заработка из той же "низкой" области. На наш форум приходит наверно за славой, не знаю.
-
Из нового: 1) немного поправил кости торса. Привязку вершин к костям наверно потом настрою, сейчас не до этого. 2) установил все текстуры на все сетки Вескера. Подобрал материалы на глаз, которые не такие уж тёмные на сцене 3) написал скрипт на С# кнопка "смена обзора камеры на определенного чара", кнопка "повернуть камеру" 4) Модифицировал стандартный скрипт преследования камерой цели. теперь будет эффект вращения камеры вокруг цели, если некотрое время не нажимать кнопок. 5) Скомпилировал exe под Винду x86. Ссылка для скачивания exe-игры (26.51 МБ, действительная 3 месяца или более, если качают постоянно)
-
Прикрутил я кости Вескеру, но не настраивал вершины для каждой отдельной кости. А эта настройка очень важная чтобы модель не ломалась как у меня. Впрочем первый блин комом. Я никогда не занимался костями. Вескер теперь бегает и прыгает как другие, но с ломаными боками.
-
После работы с огромным усилием заставил себя 1) найти Вескера (к сожалению без костей) рипнутого из игры 2) найти пример модели с костями и вставить в проект (модель инженера из старого проекта в старом Unity3d ). Модель инженера была с другими клипами анимации и ничего общего с новой фичей анимации для Unity4.0. Задача была на практике сделать так чтобы инженер двигался как тот робот от сигналов с устройств ввода. В моём случае это клавиатура и геймпад. Получилось. Бегает Инженер так же как работ. Это прикольно. Это оказалось просто с моими годичными знаниями Unity3d по работе. Но вот в Блендере чтобы кости прицепить надо больше времени. Наверно завтра прицеплю. Обещаю показать результат в виде скомпилированного проекта. Можно будет выбрать одного из персонажей и бегать, прыгать, помахать рукой.
-
Для чего нужно "ускорять" работу функции debugger_onBreakpoint()? Если в ней функциия print(), то естественно будет тормозить. Ну допустим использование этой функции, даже пустой, нещадно тормозит игру. Если на одной инструкции куча вызовов и нужно профилировать какую-то информацию на этой инструкции, то ничего обычно не мешает сделать инъекцию кода с прыжком на новый написанный ассемблерный код анализирования данных регистров, стека и т.п. и когда что-то с чем-то совпадает не так часто, то можно сделать прыг на код с брейкпоинтом что приведёт к вызову debugger_onBreakpoint().
-
Дело в том, что надо ставить брейкпоинт на инструкции (выделить её и нажать F5). Когда брейкпоинт сработает, тогда сработает функция debugger_onBreakpoint()
-
Есть два пути как сделать подобную штучку-дрючку: через дизайн форм или всё Lua кодом. По первому способу, так как мне лень писать скриптом. 1) Создаём форуму в дизайнере 2) Кидаем компонент Label на форму 3) Меняем его свойства шрифта (цвет и ставим подчеркивание) 4) Идём во вкладку Events 5) Кликаем дважды в пустое поле напротив OnClick (или DblClick(двойной клик будет)). В нём тут же появляется название функции по умолчанию. Это функция, которая будет срабатывать при клике на Label. 7) Кликаем так же на соседний квадратик чтобы увидеть функцию в редакторе Lua. 6) В функции конечно надо что-то написать function CELabel1Click(sender) os.execute ([["rundll32 url.dll,FileProtocolHandler http://gamehacklab.ru/"]]) end
-
Эта тема, скорее для ознакомления. Наверняка, многим интересно как делают игры...
-
SnedS91, судя по описанию и скрину, то очень хорошо. Могу предложить сделать передышку в развитии плагина и заняться следующим, если будет, конечно, интерес и желание. Заняться такой важной вещью как название плагина и документированием. Чтобы все основания пользоваться этим Lua-плагином и его достоинства были понятны если не всем, то большому кругу пользователей. Чтобы можно было донести до Пользователя, что, вот мол, есть такой замечательный плагин, умеет делать-то и то, есть даже документация с примерами (может быть даже со скриншотами). Название плагина может быть и лучше, но я пока не думал над этим. Документацию можно оформить например в chm, pdf, rtf, html с такими пунктами. 1) Версия плагина, дата последнего обновления, ссылка тех. поддержки (на эту тему) 2) Краткое описание (для чего нужен, что умеет (кратко)) 3) Авторы плагина (можешь поставить себя на первое место, меня на второе , можно указать ссылки на профиль) 4) Авторы составления документации 5) Оглавление: 5.1) Как устанавливать плагин 5.2) Описание работы (каждой функции) 5.3) Примеры (можно и на некоторой игре) Если это формат html+javasript можно всю информацию сделать на одной странице использовать спойлеры для больших пунктов. Если chm, то можно не скупиться на разветвлённую структуру документа. Если pdf или rtf, то придётся подстраиваться под лист. Наверно, лучше chm. Можно взять за пример оформления документации в chm для любой программы. Например для CE, Olly Debugger или другой. Проделанную работу будет не грех разместить на главном сайте. Это был бы не просто плагин (пользоваться которым скорее всего умеют немногие), а плагин с документом (или справочной информацией). Ну, а позже можно сделать краткое описание на Инглише (наверно я этим займусь) и лично попрошу Дарк Байта (разработчика CE) добавить плагин как включение по умолчанию для последующий версий CE и на текущий момент для версии CE на его официальный сайт. Я думаю ему эта идея понравится и он согласится.
-
Желаем успехов, творческого неугасаемого вдохновения, материального благосостояния, времени, сил и здоровья. Поздравляем!
-
Я думаю тут можно поэкспериментировать в одном случае с pairs() и в другом с типами массива (числовой массив или строковый). В первом случае Попробуй через pairs() по аналогии с этим примером local array = {a="А", b="Б", c="В", d="Г", e="Д", f="Е"} for key, value in pairs(array) do print(key, value) end Во втором случае попробуй сделать чтобы адреса в массиве были только как number, т.е. числовые. Хотя адреса передаваемые в writedouble() могут быть в виде строки, тем не менее может быть и number-тип прокатит. Ещё есть класс Strings и метод strings_getString(list, index) для взятия строки из массива строк (например строк-адресов) Ещё есть вариант, что нет задержки между удержаниями горячих клавиш. Или не очень правильно составлен код проверки горячих клавиш (не оптимизирован).
-
Можно использовать tonumber. Пример: function CEButton1Click(sender) local a = tonumber(control_getCaption(UDF1_CEEdit1)) local b = 20 if a < b then print("a < b") end end
-
Вот пример из Интернета: var Form1: TForm1; WindowName : integer; ProcessId : integer; ThreadId : integer; HandleWindow : Integer; b:dword; // Всё по-прежнему, кроме этой переменной - сюда прочитаем адрес из поинтера. readwrite:cardinal; buf : dword; Const WindowTitle = 'SimCity 4'; Address = $B321E4; // Это адрес поинтера. NumberOfBytes = 4; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin WindowName := FindWindow(nil,WindowTitle); If WindowName = 0 then begin MessageDlg('Игра должна быть запущена до трейнера. Запустите ее, потом трейнер', mtwarning,[mbOK],0); end; ThreadId := GetWindowThreadProcessId(WindowName,@ProcessId); HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId); ReadProcessMemory(HandleWindow,ptr(address),@b,4,readwrite); // Прочитали в b значение из адреса поинтера. b:=b+40; // Смещение адреса денег относительно адреса, на который указывает поинтер равно 40. Прибавляем. buf:=$FFFFFFFF; // Денег должно быть много (**) WriteProcessMemory(HandleWindow, ptr(, @buf, 4, readwrite); // Наконец, запишем по адресу, // содержащемуся в b, новое значение денег. end; Хорошо бы тут ещё делать проверку существует ли адрес и с какими он правами пред записью в него. Бывает что адреса содержат null значение, а не другой адрес пока что-то не произойдёт. А бывает и так, что по адресу может располагаться постоянно не один, а несколько адресов по очереди в разное время... Да и значения в игре при заморозке на экране могут дёргаться. Всё это к тому, что лучше править код, если на нём нет крутой защиты типа СтарФорса. Специально для тех кто любит Дельфи советую обратить внимание на создание трейнера на WinAPI одного из товарищей уже не существующей команды. Автор: g-l-u-k
-
>>Можно ли убрать пункт Get signature? Да, конечно. Если посчитаешь что-то ненужным можешь поменять/удалить без вопросов.
-
Теперь можно брать планку гораздо выше - автоматическое создание АА-кода под newMem. У меня пока катастрофически не хватает сил довести это (очень много работы) Анализирование инструкции и предложение пользователю какие параметры можно передать в функцию function CreateAdvancedCheat(cheatName, address, patternAsmCode, patternInjectAsmCode, stateOriginalCode)
-
Автор ищи в поисковике "с++ xml tiny parser". Я думаю найдешь множество простых примеров.
-
Проект codeproject содержит огромное количество статей с примерами разных задач. По ссылке пример XML разметки и извлечения данных из документа xml на C++.
-
Я думаю программа будет более стабильная и в Интернете в будущем появится больше информации о её практическом удачном применении на играх разных жанров, а не только на minesweeper.
-
Версия 1.3 1) fix генерация АА-кода (авт. SnedS91) Plagin_MenuDisassembler_GenericAA.rar
-
Sned, могу предложить попытаться сделать для игры "Sniper: Ghost Warrior, обман кол-ва гранат". Долго игру проходить не надо. Идём на тренировочную миссию. Проходим до места, в котром во время игры гранаты появляются на столе, если их там мало. Я пытался сделать так, чтобы после броска гранаты в арсенале игрока создавалась новая. А точнее если кол-во гранат меньше максимального, то создать недостающие гранаты. Сделать это у меня не получилось, а потом всё руки не доходили продолжить. Т.к. гранаты появляются на столе автоматически это прекрасно. Мне не приходилось игру проходить и искать эти гранты в каких-то местах игры.
-
Пользователю SnedS91, респект и авации. Advanced пользователь
-
СООБЩЕНИЕ ВНУТРИ ИГРЫ Например, необходимо 1) сообщить пользователю об активации чита прямо внутри игры 2) нет времени писать на С++ 3) любим использовать формат *.CETRAINER или другие генерируемые Cheat Engine 4) хотим просто воспользоваться моим примером 5) хотим исследовать функциональность Cheat Egine Итак я покажу как вывести сообщение внутри игры при нажатии комбинации горячих клавиш. Это сообщение пропадёт через 2 секунды. Конечный результат. Это просто окно DirectX программы в которой клинтские части могут двигать звезду на серверной части... Короче это вместо окна любой игры на Windows (поддерживающая directx 9,10,11). рис.1 Техническая форма трейнера рис.2 Скачать .CETRAINER CenterMessageInGame.rar Как разобраться в моём скрипте. Сначала посмотрим на него целиком через редактор Notpad++
-
Спасибо, товарищу SnedS91. Версия плагина 1.2 1) Проверка результата GetScriptAOBSCAN (автр. SnedS91) 2) Добавлен Шаблон для nop-инъекции (автр. SnedS91) Plagin_MenuDisassembler_GenericAA.rar Желающие могут протестировать.
-
>>если работали с Dissect Struccture и сохранили в таблице CE разобранную структуру, то в последующие пересохранения таблицы эта структура дублируется-дублируется-дублируется.. Баг имеется. Более полное описание его следующее. 1) Создаём структуру. Сохраняем test1.CT (99 кб) 2) Копируем этот файл как test2.CT (99 кб) 3) Закрываем CE и открываем CE 4) Открываем первый файл 5) Открываем сразу второй файл и отказываемся от слияния 6) Сохраняем как test3.CT и в файлом браузере увидим уже 195 кб Я сообщил о баге разработчику CE.