Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - graveman

Страницы: 1 2 [3] 4
31
Код: ASM
  1. .text:005BD7AC 0E0 81 3D 74 5F 9B 00 FC 01 00 00                 cmp     ds:dword_9B5F74, 1FCh
  2. .text:005BD7B6 0E0 7C 57                                         jl      short loc_5BD80F

Вот тут идет процесс сравнения этой переменной с не маленьким значением.
508 - это немного, походу общий буфер для каких-то мелких объектов. На выходных надо разобраться с "immediate mode" RW, чтобы лучше понять.

32
У меня подозрения, что она используется за слежением наполненности какого-то глобального массива вершин. То есть на определенном этапе рендера счетчик обнуляется и в массив набиваются вершины каких-то объектов, они рендерятся и счетчик снова обнуляется. То, что я выводил его в лог по таймеру, похоже происходило вне этих функций. Не знаю, в документации к RW упоминается о каком-то кэшировании геометрии. Походу это типа кэша. Сегодня попробую вывести логи.

33
Я это делаю для изучения переменных и не найденных еще функций. Не для мода. Та переменная засветилась во многих функциях рендера и связана с количеством каких-то вершин.

34
Вот скрин, походу у меня в кэше. Кстати как картинки постить?

36
Пытался выводить в лог значения некоторых переменных через SetTimer(...Update) в теле Update(). Похоже, что идет вызов из определенного места кода, так как переменные должны быть явно больше нуля (при выводе большое отрицательное число), так как из использования их в качестве аргумента в функции RW ясно, что это счетчики вершин.
Вопрос - нельзя ли как-то применить gta_log или вызвать свой Log в теле экзешника?
Я пробовал обрывать цикл в одной из функций обнулением счетчика в for{} - в игре при этом становились полупрозрачными некоторые стены и детали автомобилей (лонжероны, капот).


Такой вопрос. Правильно ли я начал менять код. Есть проверка переменной на нуль через cmp. Я смотрю там 7 байт. В то время как test eax, eax занимает всего 2 байта. При том эта переменная потом все равно заносится в eax. Что если заменить cmp на засылку переменной в eax с последующим test eax, eax,  jz      short loc_5C2935 переписать на адрес сразу за test eax, eax. Останется 5 свободных байт, достаточных для вызова call или jump near. Вообщем, картинка для пояснения:

Можно ли на освободившиеся 5 байт прописать call для своей функции из dll?
Короче дома попробую.


Sector, я кстати нашел ответ на вопрос:
Я вот про инжект не понял, зачем записывается "function - (address + 5)", а не просто "function" и что означает "5"?


Источник: http://habrahabr.ru/post/90377/
Цитата из него:
Цитировать
Итак, теперь мы разобрались, как происходит вызов функции и готовы к ее перехвату. Осталась одна деталь – а как же собственно сделать перехват?

Для этого, все что нам нужно – это поставить в начало функции инструкцию jmp с адресом, который будет указывать на начало нашей функции. Однако, не все так просто. Дело в том, что инструкция jmp, которая бы принимала абсолютный адрес нашей функции, размером 5 байт просто не существует. Единственный jump, который работает с абсолютными адресами – это jump far, который занимает 6 байт.

Поэтому, мы будем использовать jump near, который принимает относительный адрес (то есть разность между адресом точки назначения и следующей за jump near инструкцией). По факту, для вычисления параметра операции jump near, надо из адреса точки назначения вычесть адрес исходной точки и прибавить 5 байт (именно столько эта инструкция занимает).


PS: можно статью по замене функций как бы дополнить этим.

37
Идеи / Re: Зеркало заднего вида
« : Ноябрь 27, 2013, 07:04:07 am »
Да, это очень полезная функция была бы. Когда едешь на встречу грузовику, а сзади копы. Перед самым столкновением быстро сворачиваешь и копы сталкиваются с тем грузовиком. А так постоянно менять вид клавишами геморно. Поддерживаю идею.

38
Видимо не поняли. Я имел ввиду, что камера должна быть из глаз Томми, когда он как пассажир сидит в автомобиле. Чтобы можно было вращаться внутри, например, повернуться назад и стрелять через заднее окно (предварительно его разбив-расстреляв) в едущих сзади копов. Еще круто сделать удушение водителя. Сидишь сзади, а потом как в Хитмане накидываешь на него удавку. Также хорошо бы смотрелась такая фича: садимся в машину и в салоне меняем товар на деньги с каким-нибудь дельцом. Я как-то играл уже в мод, когда был вид из салона во время управления транспортом.

39
Идеи / Re: Пора сделать нормальный танк
« : Ноябрь 26, 2013, 05:10:06 pm »
Смотря какие гусеницы - просто анимированные или как физические объекты. Если физический движок игры способен обрабатывать гибко сцепленные объекты, хотя я не уверен в этом. В GTA VC, по-моему, даже рэгдолл-смерти педов нет. Например, когда педа сбивает автомобиль, то мертвый пед как-будто лежит на плоскости, а должен по идее распластаться по капоту. По-ходу для гусениц придется дописывать физику.

40
mike43842, ИИ думаю нужно писать как asi-плагин с использованием конечных автоматов, а попадание в обзор педа придется сделать ассемблерными вставками для скорости расчетов.

41
Лучше все-таки кроме обсуждения здесь сделать еще накопительную страницу, где бы все систематизировать,
Я так-то думал, что будут выкладывать в виде архивов rar или zip с небольшим описанием. Сектору спасибо за выкладки.
Выкладывайте в виде архивов, пожалуйста, если информации много.
Сам копаю рендер пока. Пока выяснил, что сначала выводятся облака, прозрачные поверхности, постепенно исчезающие (fading) объекты, потом дороги, затем тачки.

42
Думаю, общими усилиями, здесь присутствующие программеры могли бы быстрее разобрать экзешник игры, чтобы делать полноценные моды на плагинах, а не ограничиваться только скриптами. Предлагаю выкладывать сюда свои базы адресов, описания классов и функций движка игры.

Добавлено мной.
Просьба выкладывать наработки в виде .rar или .zip архивов с небольшим пояснением., чтобы легче было ориентироваться.

43
Свободное общение / Re: О Себе.
« : Ноябрь 26, 2013, 03:08:07 pm »
Мне 31 год. Женат лет 5 уже. Программированием стал увлекаться в 2004 году. Возможно, что  скорее всего из-за gtavc, в которую я играл в 2004 или 2003, вообщем на последнем курсе института, кажется. Взял комп на время у дяди для написания дипломной работы. Сестра и двоюродный брат нашли там GTA Vice City и вовсю играли. Я тоже начал втягиваться - по сути первая игра, в которую я играл на PC. Поначалу она мне показалась чудовищно сложной. Но я быстро влез в шкуру геймера. В ноябре 2004 купил б/у комп со 128 Мб оперативы и 16 Мб интегрированной видеопамяти. Там стоял уже Q3 Arena. Еще когда я играл на компе дяди в GTA VC, мне пришла в голову идея, что, разработчики игр, должно быть не плохо зарабатывают и при том занимаются интересным делом. А как делают игры? Для начала программируют. И в декабре 2004 я начал читать статьи с купленного диска "Программирование для чайников" или что-то в этом роде. Потом читал про C++. Я вообще не понимал ее. Далее, я купил толстенную книгу по архитектуре ЭВМ и взял из библиотеки на работе книгу по DOS - программированию. В январе у меня сложилось неплохое понимание ассемблера и работы процессора. Дальше могу сказать, что я сильно тупил и неорганизованно пытался делать игры. Потому что надо было освоить оконные приложения, работу с файлами и курить исходники quake2. Все это я делал не структурно. Работал на заводе, а вечером - за компом. Пробовал разные движки вроде Dark Basic. В 2005 пытался делать скрипт для GTA VC про наркодилеров. Менял рожи копов в игре. Собирал данные, сидя в интернет кафе, а потом дома. Пробовал моделить, мапить. Сделал убогую игру на флеше, даже не игру а демо. Пытался писать физический движок, потом понял, что не стоит, ибо есть Bullet Physics. В марте 2013 я решил конкретно заняться написанием графического движка. Понял, что рулят глобальное освещение и начал вкуривать матан, матричный анализ и функциональный анализ. Еще немного и начну писать шейдер глобального освещения. Остальное - не так сложно. Также курю программирование WinAPI. В планах до НГ написать графический движок (который начат давно) и инструментарий (тоже начал). Времени маловато, конечно.

GTA Vice City меня заинтересовал из-за атмосферы и возможностей в самой игре (большие локации, симуляция независимых от игрока педестрианов). В планах разработать не мод, а отдельную игру про мафию Майами 80-х, но с более продвинутым ИИ жителей и вообще логической подсистемы игры в целом. Не как миссии, в которые надо заходить по чекпоинтам, а чтобы игрок определенными действиями, поведением завязывал связи с разными игровыми персонажами сам. Даже из библиотеки книги брал про историю мафии. Еще круто сюжет завернут у Д.Х.Чейза.


44
Да, приведу код, если не удастся решить, просто исходник дома.
Цитировать
Если говорить о разных размерах, то обычными правками не обойтись. Для этого уже нужно переписывать саму функцию и затем заменять, путем как инжектом.
Я вот про инжект не понял, зачем записывается "function - (address + 5)", а не просто "function" и что означает "5"?
Цитировать
На данный момент я приболел
Выздоравливай.

45
Давно хотелось залезть в качестве пассажира в тачку и стрелять с видом из тачки через окна.
Еще клево было бы, если бы копы и прочие педы не видели сквозь стены и не пытались проходить сквозь них.

Страницы: 1 2 [3] 4