Для начала нам понадобится:
DirectX SDK: _http://microsoft.ru/
Логгер текстур: _http://depositfiles.com/files/w726s1one [Ссылки могут видеть только зарегистрированные пользователи. ]
Direct3D StarterKit v3.0b (by Azorbix): _http://depositfiles.com/files/sq8divdwg [Ссылки могут видеть только зарегистрированные пользователи. ]
Microsoft Visual Studio: _http://microsoft.ru/
Немного знаний C++, D3D - _Google_
Настройка D3D
Первым делом устанавливаем Microsoft Visual Studio и DirectX SDK
Запускаем программу и идём в Tools->Options->Projects and Solutions>VC++ Directories
Во вкладке Show directories for: Выбираем Include files и добавляем путь к нашему DirectX SD K к папке \Include
Делаем тоже самое для Library Files (..\Lib\x86), Executable files(..\)
Всё, теперь мы сможем откомпилить наш Direct3D StarterKit v3.0b
Настройка Injector'а:
В main.cpp нужно изменить только 1 строчку:
Код:
#define APP_EXE "target_application.exe"
Где target_application.exe прописываем название вашей игры
Например:
xrEngine.exe, crossfire.exe, pointblank.exe.
Важно!
Название .dll файла и инжектора должны быть одинаковыми.
Как сделать обычный валлхак
1. Ищем текстуры которые нам нужны используя логгер текстур.
2. Прописываем их в нашем Direct3D StarterKit v3.0b в d3d9dev.cpp в начале файла
Пример:
Код:
#define MyWallhack ((NumVertices == xx && primCount == xx) || (NumVertices == xx && primCount == xx))
bool bWallHack = false;
3. Теперь идём в DrawIndexedPrimitive
и добавляем:
Код:
if (bWallHack)
{
if (MyWallhack)
{
DWORD dwOldZEnable;
m_pD3Ddev->GetRenderState(D3DRS_ZENABLE,&dwOldZEnable);
m_pD3Ddev->SetRenderState(D3DRS_ZENABLE,D3DZB_FALSE);
m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex,MinVert exIndex,NumVertices,startIndex,primCount);
m_pD3Ddev->SetRenderState(D3DRS_ZENABLE,dwOldZEnable);
}
}
4. Идём в EndScene и ставим валлхак на кнопку включить\выключить:
Код:
Всё готово! При нажатии в игре на кнопку NUMPAD2, опция будет включатся и выключатся.
credits: _www.aden-territory.com and qwe
Теперь собственно то, что нужно сделать, что бы Wallhack работал желаемым образом:
В самом начале кода d3d9dev.cpp вставляем:
Код:
unsigned int m_Stride;
Далее, идем в SetStreamSource и прописываем там перед return m_pD3Ddev->SetStreamSource:
Код:
if(StreamNumber==0) m_Stride=Stride;
Теперь вместо строчки вначале кода #define MyWallhack ((NumVertices == xx && primCount == xx) || (NumVertices == xx && primCount == xx)) вставляем строчку:
Код:
#define MyWallhack ((m_Stride == 28))
Вот и всё! Вы будете видеть других игроков сквозь стены!
Теперь о том, как сделать из Wallhack'a Chams:
В начале d3d9dev.cpp прописываем:
Код:
Можно использовать и другие цвета, на ваш вкус, байты которых можно найти в гугле, в частности, они есть здесь:
[Ссылки могут видеть только зарегистрированные пользователи. ] … e=threaded
Идём в BeginScene() и вставляем такие строки перед return m_pD3Ddev->BeginScene(); :
Код:
if (a==1)
{
D3DXCreateTextureFromFileInMemory(m_pD3Ddev,(LPCVO ID)&bPink,58,&Pink);
D3DXCreateTextureFromFileInMemory(m_pD3Ddev,(LPCVO ID)&bBlue,60,&Blue);
a=0;
}
Теперь идем в DrawIndexedPrimitive, к нашему волхаку и после строчки m_pD3Ddev->SetRenderState(D3DRS_ZENABLE,D3DZB_FALSE); вставляем такую:
Код:
m_pD3Ddev->SetTexture(0,Pink);
А после m_pD3Ddev->SetRenderState(D3DRS_ZENABLE,dwOldZEnable2); такую:
Код:
m_pD3Ddev->SetTexture(0,Blue);
Вот собственно и всё! Chams готов! xrEngine.exe dll - это либа, которая компилится из D3D (TatniumD3D.vcproj) Инжектор - это прога, которая инжектит либу в игру(main.cpp/TatniumInjector.vcproj) В общем у вас должно быть откомпилино: 1 либа, которую называешь TatniumD3D.dll и 1 екзешник, который обзываешь TatniumD3D.exe, ложешь их рядом(в одну папку пофиг куда) и запускаешь TatniumD3D.exe, нажимаешь ОК, запускаешь игру, нажимаешь 1 на дополнительной(цифровой) клавиатуре, только не забудь включить NumLock.
Последний раз редактировалось жека); 08.09.2010 в 14:31.