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

Рекомендуемые сообщения

Здравствуйте, ни как и ни где не найду исходник логгера текстур на C++ и вытекающий от туда WH на DirectX, который ещё кенг делал. На гите его уже нет, как мне быть??

Хочу сделать Chameleon для CoD: MW2 и не спрашивайте почему, потом всё видите как только закончу) Где мне взять исходник?

Ссылка на комментарий
Поделиться на другие сайты

Ок, это слишком сложно, тогда как отключить текстуры и оставить одни полигоны? Наверняка на c++ это делается.

Желательно с примером и объяснением (стиль "Как нарисовать сову" не принимается, так как все исходники, которые я беру не работют так как не определы идентификаторы функций а символы и directx я подрубил всё пашет)

И ещё прошу объяснить как оптимизировать под новые версии DirectX (11 например)?

Ссылка на комментарий
Поделиться на другие сайты

Чтобы текстуры не отрисовывались, необходимо отключить какую-то функцию (или же изменить алгоритм рисования в D3D приложении) из D3D. Я располагаю Visual Studio 2017 и 2015 у меня есть DirectX SDK (June 2010), в которой есть необходимые файлы, но проблемы начинаются в самом начале, ведь даже не дают сделать хук на отрисовку меню поверх окошка прогаммы.

Изменено пользователем Sergey99
Ссылка на комментарий
Поделиться на другие сайты

Такс пришёл домой, решил писать заново всё и попутно справляться с ошибками (до тех которые не смог решить пока не дошёл).

Итак вот часть моего творения с комментариями, поясните я правильно понял (комментирую) эту часть?

 

/**
	typedef для long HRESULT
	WINAPI *имя - это указатель на функцию с соглашением вызова WINAPI, которая принимает параметры опредедлённых типов данных и возвращает HRESULT
	WINAPI - это _stdcall (соглашение вызова)
*/
typedef HRESULT(WINAPI *tSetStreamSource)(LPDIRECT3DDEVICE9 pDevice, UINT StreamNumber, IDirect3DVertexBuffer9 *pStreamData, UINT OffsetInBytes, UINT Stride);
tSetStreamSource oSetStreamSource;	//Объявляем oSetStreamSource, это имя будет использоваться для вызова функции, указателем на которую является tSetStreamSource

typedef HRESULT(WINAPI *tEndScene)(LPDIRECT3DDEVICE9 pDevice);
tEndScene oEndScene;	//Объявляем oEndScene, это имя будет использоваться для вызова функции, указателем на которую является tEndScene

typedef HRESULT(WINAPI *tDrawIndexedPrimitive)(LPDIRECT3DDEVICE9 pDevice, D3DPRIMITIVETYPE PrimType, INT BaseVertexIndex, UINT MinVertexIndex, UINT NumVertices, UINT startIndex, UINT primCount);
tDrawIndexedPrimitive oDrawIndexedPrimitive;	//Объявляем oDrawIndexedPrimitive, это имя будет использоваться для вызова функции, указателем на которую является tDrawIndexedPrimitive

 

 

17 часов назад, Sergey99 сказал:

typedef для long HRESULT

Немножко не верно:

typedef для объявления имени HRESULT для типа данных long для описания ошибки или предупреждения

Вот так ок?

 

 

Как я почитал в месте: WINAPI *tSetStreamSource мы объявляем указатель на метод SetStreamSource из класса IDirect3DDevice9, которая принимает параметры и вызывается из _stdcall, но не ясно для чего тогда typedef и зачем потом oSetStreamSource?

 

Вот подробное описание этой конструкции:

1) Объявляем тип указателя на метод

2) tSetStreamSource - указатель на метод SetStreamSource, который принимает определённые параметры и возвращает HRESULT

3) Объявялем указатель, принадлежащий типу tSetStreamSource

 

Надеюсь всё ясно)

 

НА дворе 2 часа ночи а тем временем дошёл до этой строчки:

#define HOOK(func, addy) o##func = (t##func)DetourFunction((PBYTE)addy, (PBYTE)hk##func)

Первую часть я понял, мы с помощью директивы препроцессора определяем константу или макрос HOOK, который судя по всему принимает, аргументы а что дальше. Кто может объяснить, что делает эта строчка?

 

8 часов назад, Sergey99 сказал:

DetourFunction

Хотя пишут, что есть теперь DetourAttach, но в общем что вся строчка делает?

Изменено пользователем Sergey99
Ссылка на комментарий
Поделиться на другие сайты

17 часов назад, Sergey99 сказал:

Хотя пишут, что есть теперь DetourAttach, но в общем что вся строчка делает?

Вся строчка устанавливает псевдоним HOOK на функцию DetourFunction. Но я не думаю, что ты именно это хотел узнать. Что делает DetourFunction(DetourAttach), можно прочитать в официальной документации. Если кратко, она подменяет адрес вызова оригинальной функции на адрес хук функции, чтобы вместо оригинальной функции вызывалась хук функция.

Ссылка на комментарий
Поделиться на другие сайты

Исходя из документации выясняется, что DetourFunction - определяет адрес по которому наша DLL ищет функцию, но в новой версии есть DetourAttach. Как тогда переписать строчку для определения HOOK?

 

Короче  нашёл древний заголовок detours v1.5 думаю сейчас с ним попробую для начала, а то так не интересно, когда мелгомягкие придумывают новые название и структуры для функций)

Изменено пользователем Sergey99
Ссылка на комментарий
Поделиться на другие сайты

И так вот всё готовенько, сделал хук на D3D9 так как CoD: MW2 работает с ним.

Вот ссылка на гит хаб хука: https://github.com/Pirate1953/D3D9_HOOK,, по сути всё что делаю это рисую меню сверху слева в окне игры с возможностью управления клавишами на клавиатуре.

Теперь вопрос: как мне реализовать функцию, которая будет отключать текстуры, оставляя полигоны моделей (если такая вообще существует) или как отображать полигоны у всех моделей на карте (видны даже те, которые за стеной стоят)???

 

Вот само меню:

1.jpg

 

 

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

6 часов назад, Sergey99 сказал:

я что теперь ночной кодер?

Если ты "сова", то да,
Я "сова" и ночью голова у меня лучше соображает - в разы...

 

Ссылка на комментарий
Поделиться на другие сайты

В 19.03.2020 в 14:34, JustHack сказал:

Ты можешь показать здесь написанный тобой код, что у тебя не получается. В противном случае, если ты ничего не можешь написать сам, тебе скорее всего нужно будет глубже изучить матчасть. А после этого, уже вернуться к своей затее. Это может занять пару месяцев, а может быть и лет.

JustHack. Умоляю помоги, я увидел твою тему с WarFace софтом, делал все по инструкции, но на 64 бит, в итоге огромные проблемы с кодом, и никак не могу их решить... В дискорд заявку не могу отправить (Дс пишет что ты не принимаешь заявки и должен сам их отправлять). Прими пж Ванюшка#2141

Изменено пользователем SklayPay
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

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

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