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

MasterGH

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

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

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

    129

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

  1. Дело в том, что свою игру сделать довольно сложно и многое упирается во время. Хорошая игра обычно делается долго и не факт, что на неё будет спрос, который окупит трудозатраты. Laziz, можешь на досуге посмотреть сколько получает Unity3d программист в твоем городе. Если тебе понравится Unity3d, то очень советую найти работу с Unity3D. Я сейчас получаю 35К в Новосибирске + у меня есть гибкий график и можно работать дома или находясь в Москве. В Питере можно получать куда больше.
  2. Laziz, зачем тебе этот плеер? Вряд ли от него какая-то прибыль будет Если есть желание, то попробуй поставить Unity3d фришную и придумай себе игру на Андроид на Гугл Плей (или Yahoo), ну или под Windows (с возможность платежей sms через робокассу и вывод с пейпал). Писать будешь на любимом C#. Встраивай рекламу и . Может получится и прибыль будет.Особенно интересно многопользовательские игры (посмотри например на игру "Трагедия Белок", 2д игра, а донатят там постоянно). Логику удаленного сервера может выполнять сервис яхоо геймс. Есть тариф бесплатный на определенное количество пользователей Here's an overview: If your game has less than 5000 Daily Active Users: No charge. If your game is exclusive to the Yahoo Games Channel: 0% revenue share. If your game is on the Yahoo Games Channel but not exclusive: 5% revenue share If your game is not on the Yahoo Games Channel: 10% revenue share. Удачи
  3. HasEditBox может быть поставить в true. Если не получится, можешь попробовать задать вопрос на официальном форуме CE. Дарк Байт может дать точный ответ.
  4. Если Вы не знаете как написать низкоуровневый код, то его можно написать на языке высокого уровня. Например, это можно сделать используя Visual Studio C++. После того как код написан, то в среде разработки можно поставить брейкпоинт на выполнение инструкции подсмотреть дизассемблерный код. Пример: На скриншоте код не соответствует условию X<10000 AND Y<10000. Поэтому надо переписать, подсмотреть и переделать под инъекцию кода в процесс игры.
  5. У меня нет желания этим заниматься Альтернативой может быть генерация трейнеров на Cheat Engine (занимает несколько мегабайт), а еще удобнее (на мой взгляд) использование формата таблиц *.CETRAINER или *.CT (может занимать от сотен байт и выше). Для таблиц не требуется наличие компилятора и знания WinAPI, и не требуется знаний таких языков как masm, fasm, tasm, C, C++, Delphi и других. Таблицы можно модифицировать постоянно и размер их будет довольно мелким. Правда необходимо наличие установленной Cheat Engine.
  6. Насколько я помню в TSearch подразумевался всегда статичный специально найденный адрес Code Cave. Но это не очень хорошая идея, т.к. этот адрес может не подходить. Для бОльшей верности лучше выделенный адрес в памяти для code cave чем статичный. Поэтому делать в точности тот же EASYWRITE INTERPRETER наверно не стоит. Но если есть сильная нужда, то можно воспользоваться CE Lua Engine. Есть возможность ассемблировать и читать байты в памяти в режиме игры и выводить их в любом удобном текстовом формате. Встроенный Ассемблер CE уже должен поддерживать множество новых инструкций, которые не умеет читать TSerach. Следующая команда может переводить ассемблерные инструкции в некоторую выделенную память игры autoAssemble(text, targetself OPTIONAL) : runs the auto assembler with the given text. Returns true on success (if targetself is set it will assemble into Cheat Engine itself) Эти инструкции для чтения байт кода disassemble(address): Disassembles the given address and returns a string in the format of "address - bytes - opcode : extra" splitDisassembledString(disassembledstring): Returns 4 strings. The address, bytes, opcode and extra field getInstructionSize(address): Returns the size of an instruction (basically it disassembles the instruction and returns the number of bytes for you) Осталось сделать форму, контролы, обработку сообщений контролов... и может получиться точно такой же EASYWRITE INTERPRETER.... CE может генерировать текстовый код под нужный язык программирования и запускать компиляцию не отходя от кассы. Должен уже быть компилятор и известны параметры запуска его. Я думаю это даже более предпочтительнее чем EASYWRITE INTERPRETER - промежуточного звено с копи-пастел действием.
  7. Один из способов 1. Ищем цепочку указателей. Либо через сканер указателей, либо через отладку и сканер памяти. 2. Тестируем цепочку указателей переходя на на новые локации и перезапуская игру. Цепочка должна быть всегда верной после перезапуска. 3. Затем с помощью брейкпоинтов исследуем каждое звено этой цепи "из глубины вверх" на предмет того, какие инструкции работают с началами структур, какие адреса проскакивают. Главное добраться до структуры с характеристиками героев.
  8. Еще может быть такой вариант: [ENABLE] alloc(MyCheat,2048) label(exp1) label(exp2) registersymbol(exp1) registersymbol(exp2) MyCheat: push [exp1] push [exp2] pop [esi+20] // при условии, что здесь всегда регистр esi pop [esi+24] return exp1: dd (float)0.25 exp2: dd (float)2 "CryGame.dll"+173685: call MyCheat "CryGame.dll"+233685: call MyCheat [DISABLE] "CryGame.dll"+173685: movss [esi+20],xmm0// при условии, что здесь всегда регистр esi "CryGame.dll"+233685: movss [esi+24],xmm1// при условии, что здесь всегда регистр esi unregistersymbol(exp1) unregistersymbol(exp2) dealloc(MyCheat)
  9. Судя по описанию функций в main.lua должно работать. PlaySound(findTableFile('Activate.wav')) проиграть файл "Activate.wav" добавленный заранее в таблицу. Выдает ошибку Кажется, эта ошибка не была на ранних версиях CE. Пока я не знаю простого решения по wav - хотя бы дать Lua-команду проиграть файл из консоли CE. Есть сложные решения их можно поискать в Интернете на официальном форуме CE.
  10. Советую почитать инфу по сильным персонажам и тактике. Перед командной игрой раз 3-5 поиграть с ботами и затем столько же в команде живых игроков даже если с форума никого не будет в онлайне. Я могу быть в любой день вечером, там видно кто в онлайне. Если не нашел меня по имени MasterGH, то поищи Coder-а. В данный момент я знаю, что нас играет три человека с форума. Два игрока опытные, я еще пока плохо играю. Часто умираю и редко убиваю героев.
  11. Попробуй найти адрес текста таймера в игре. Поставить бряк на запись и исследовать вышестоящий код, который некоторое число преобразует в текст. Если повезет, то быстро найдешь рабочий адрес таймера и определишь его тип.
  12. Coder, я добавил тебя в друзья. Народ давайте еще 4 человека. Прикольно, поиграли ) Давайте народ подтягивайтесь )
  13. На CE Lua, скорее всего, не поддерживается, я не увидел. Обычно горячие клавиши можно ставить так на CE Lua: function OnCheckHotKey() print('test') end createHotkey(OnCheckHotKey, [VK_., VK...]) Но нет ни одного кей кода в defines.lua, который был бы связан с поворотом колеса мыши. Готового решения нет. Обходные пути
  14. MasterGH

    Поиграем в Dota 2 ?

    Есть желающие поиграть по глобальной сети командой в Доту2 против ботов сегодня с 19,00 до 21,00 по Москве ? Количество желающих любое. Хотя есть ограничение на 5 игроков в команде. Для установки игры нужен Steam и скаченный клиент Доты 2 (скачивание и установка может занять много времени). Игра бесплатная, покупки за реальные лове по желанию. Игра похожа на Варкрафт. Карта одна, но персонажей довольно много. Обычно по сторонам карты располагаются по два игрока и один в центре карты. Мясо бежит каждые 30 секунд к противнику. Задача убить героев противника, уничтожить его базу, уничтожить башни и мясо противника... Противоборство может длиться 40 минут. Все это время нужно играть, иначе команда будет играть не в полном составе на протяжении всей игры. И это основная проблема командной игры. Кто-то приходит и выходит, и пока игра не закончится, то невозможно начать новую.
  15. Вот что происходит, когда кто-то периодически апает заброшенные темы - рождаются новые идеи. В общем подумав я решил сделать так. Unity3d использует .net сборки для работы своих приложений на разных платформах. Поэтому можно пойти например тремя путями 1. Сделать инъекцию кода в сборку Assembly-CSharp.dll 2. Переписать Assembly-CSharp.dll 3. Отлаживать машинный код Варианты 1 и 3 делать долго. А вот вариант 2 очень даже простой. 1. Ищем Assembly-CSharp.dll 2. Декомпилируем через ILSpy 3. Находим класс Unit using System; using UnityEngine; public class Unit : MonoBehaviour { public float health = 1000000f; private string strHealth = "<b>Wall Health</b> 1000000"; private void OnGUI() { GUILayout.Label(this.strHealth, new GUILayoutOption[] { GUILayout.Width(220f), GUILayout.Height(30f) }); } private void OnDamage(float valueDamadge) { this.health -= valueDamadge; this.strHealth = "<b>Wall Health</b> " + this.health.ToString(); } } 4. В этот класс добавляем функцию, которая бы включала и выключала коллизию. Прочитав документацию по скриптингу на официальном сайте узнали, что это можно сделать в функции Update: private void Update() { //Cheat Disable Wall collision if(Input.GetKeyUp(KeyCode.H)){ collider.enabled = !collider.enabled; } } Сделать это можно декомпилировав Assembly-CSharp.dll и построив новую .net библиотеку Assembly-CSharp.dll в программе Sharp Develop (бесплатная среда разработки .net) 5.Компилируем проект в Sharp Develop и заменяем файл Assembly-CSharp.dll 6. Запускаем игру и при нажатии на кнопку H можем стрелять сквозь стену. Что собственно я и хотел сделать. ---- Вывод1. Теперь ни по одной стене попасть нельзя (хотя там одна стена). Стрельба происходит насквозь стены. Если бы это был игрок, а не стена, то игрок с классом Unit был бы бессмертным. К сожалению на .net игры тормозные и их под PC мало. Вывод2. Можно находиться мыслями на более высоком уровне "функций", а не на машинном коде. Иными словами зная функции движка (не только Unity3d, а например UDK) и аргументы функции, можно эти функции использовать для создания читов. Например изменять/читать характеристики коллизий, характеристики игрока... Хотя многие крутые игровые движки и документация SDK закрыты от обычного смертного, все равно можно ковырять и трейсить функции чтобы понять какая функция, что делает. Тогда например посмотрев на каком игровом движке написана игра можно смело использовать сигны функций на любой игре этого движка. Это уже что-то типа сигны на все игры этого движка, а не только на все версии определенной игры... Assembly-CSharp.rar
  16. Я думаю надо искать инструкцию, которая добавляет физическому телу вектор силы направленный вверх умноженный на модуль. Модуль надо найти и поменять. В движе на Unity3d это было бы так Ригидбоди - это компонент позволяющий сообщать физические силы. Unity3d работает с физическим движком PhysX. Если надо SDK PhysX можно сказать зарегившись на оф.сайте или с торрентов.
  17. Я предложил бы искать координаты камеры и героя. Камеры искать потому, что "её стены должны отталкивать" и приближать ближе к герою. Итого два адреса. Ставить брейкпоинт на запись на каждый. Должно быть как минимум по две инструкции. Одна пишет от ввода с клавиатуры, другая от соприкосновения со стенами (коллизии). На последней инструкции должно проскакивать множество адресов и камера, и сам персонаж. На ней можно попробовать поставить фильтр и должно получиться, что коллизия не будет отталкивать ни камеру, ни самого персонажа.
  18. Теоретически можно обойтись без активирующего скрипта разными способами. Наиболее удобный это найти инструкцию, которая работает только с одним адресом. Возьмем за пример оригинальный адрес со значением кристаллов и адрес-копию значения кристаллов. Код1 обычно циклично читает адрес-копию кристаллов и выводит на экран. Код2 при изменении оригинального значения кристаллов запишет в адрес-копию значение из оригинального адреса. На адрес-копию ставим бряк на запись. Идем в игру, изменяем значение кристаллов и возможно найдем инструкцию Кода2, которая индивидуально работает со значением кристаллов. Вот её и можно поправить одним скриптом без фильтра и посмотреть что получится. Если изменения вступят не сразу, то еще можно сделать инъекцию в код1, чтобы на экране данные обновились. Может быть мы хотим по горячей клавише записать определенное количество кристаллов один раз или хотим добавить N количество кристаллов. Это можно сделать несколькими способами. Можно изменить АА скрипт, чтобы он один раз по флагу записал определенное количество или добавил определенное количество...
  19. Вот что мне писал Дарк Байт Мне сложно перевести эту цитату, т.к. я не очень понял смысл её, кроме как не использовать хук в onOpenProcess, т.к. это рановато... используйте таймер. Если полазить по скриптам на форуме Cheat Engine, то там d3dhook_initializeHook не стоит в функции открытии процесса. aliast, можешь попробовать 1. d3dhook_initializeHook запустить при запуске скрипта вне функции открытия процесса 2. d3dhook_initializeHook запустить через некотрое время по таймеру (запускаемому в onOpenProcess) 3. поискать примеры по ключевому слову d3dhook_initializeHook
  20. У меня был случай. Хук не проходил в полноэкранном режиме, а в оконном работало. Два пути решения пытаться на Lua что-то придумывать или например делать на C++. Вообще интересно найти проблему почему на Lua на получается
  21. Какой-то код записывает или перезаписывает координаты по какому-то условию. Условие надо найти и изменить. Начинать можно с определения границ ветвей кода. Первая - ввод о клавиатуры. Вторая бряк на запись в адрес. Определить можно трассировкой в OllyDebuger (или Cheat Engine). Затем можно исследовать этот маршрут. Желательно в IDA + HexRays. Ну или если ты энтузиаст, можешь ковырять в одной программе OllyDebuger или CheatEngine. Еще можешь поискать телепорт в этой игре в Интернете. Возможно наковыряешь какую-нибудь инфу.
  22. Пример показывает сообщение на 2 секунды после нажатия на CTRL+1. Заменить " processName = '[Game.exe]' " Созать текстовый документ *.CETRAINER с кодировкой "utf-8" без BOM в программе Notepad++
  23. Да, это ошибка сделанной по невнимательности, в полудреме. С пятницы на субботу лег под три ночи. А с субботы по воскресение под 7 часов утра.
×
×
  • Создать...

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

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