|
АИМ Source - Разработка ПО для Point Blank - Бюро разработчиков Zhyk.Ru: создание чит-программ и прочего ПО для Point Blank |
27.12.2012, 19:06
|
#1
|
|
|
|
Фельдмаршал
|
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
|
АИМ Source
Сливаю исхордный код АИМа. Связано это с массовым сливом. Каждый второй удтверждает, что он его сам написал.
И так начнём:
Структура Создаём файл MainClass.h, подключаем его к проэкту
Код:
#include <Windows.h>
#include <d3d9.h>
#include <d3dx9.h>
#pragma comment (lib, "d3dx9.lib")
#pragma comment (lib, "d3d9.lib")
class CPlayer;
class CChara;
class CRenderData;
class CRenderContext;
class CVisible;
class CGameBase;
class CBonesContext;
class CBone;
class CPlayer
{
public:
BYTE IsLife;
char Unk[79];
D3DXVECTOR2 Cross;
D3DXVECTOR3 Pos;
};
class CChara
{
public:
BYTE Number;
};
class CRenderData
{
public:
CRenderContext* RenderData;
};
class CRenderContext
{
public:
char Unk[2000];
D3DXMATRIX ViewMatrix;
D3DXMATRIX ProjectMatrix;
D3DXMATRIX WorldMatrix;
};
class CVisible
{
public:
char Unk[0x628];
bool Visible;
};
class CGameBase
{
public:
char Unk[0x268];
CBonesContext* Bones;
};
class CBonesContext
{
public:
char Unk[0xB8];
CBone* BoneData;
};
class CBone
{
public:
D3DXMATRIX BoneMatrix;
};
Тоже очень нужное Теперь переходим в главный файл.
Код:
bool WorldToScreen(D3DXVECTOR3 inpos, D3DXVECTOR3 &outpos, LPDIRECT3DDEVICE9 pDevice)
{
DWORD dwRenderData = (DWORD)GetModuleHandleA("i3GfxDx.dll") + 0x18B0D4;
CRenderData* RenderData = (CRenderData*)(dwRenderData);
D3DXMATRIX identity;
D3DXVECTOR3 vScreen;
D3DVIEWPORT9 g_ViewPort;
pDevice->GetViewport(&g_ViewPort);
g_ViewPort.X = g_ViewPort.Y = 0;
g_ViewPort.MinZ = 0;
g_ViewPort.MaxZ = 1;
D3DXVec3Project(&vScreen, &inpos, &g_ViewPort,
&RenderData->RenderData->ProjectMatrix,
&RenderData->RenderData->ViewMatrix,
&RenderData->RenderData->WorldMatrix);
if (vScren.z < 1.0f && vScren.x > 0.0f && vScren.y > 0.0f && vScren.x < g_ViewPort.Width && vScren.y < g_ViewPort.Height)
{
outpos.x = vScren.x;
outpos.y = vScren.y;
outpos.z = vScren.z;
return true;
}
return false;
}
int GetCharaIndex( )
{
DWORD dwGameContext = *(DWORD*)0x00AA39C8;
CChara* User = (CChara*)(dwGameContext + 0x4E18);
return User->Number;
}
bool GetUserLife( int Idx )
{
DWORD dwGameContext = *(DWORD*)0x00AA39C8;
CPlayer* User = (CPlayer*)((dwGameContext + 0x6120) + 0x11B4 * Idx);
return User->IsLife;
}
D3DXVECTOR3 GetUserVector( int Idx )
{
DWORD dwGameContext = *(DWORD*)0x00AA39C8;
CPlayer* User = (CPlayer*)((dwGameContext + 0x6120) + 0x11B4 * Idx);
return User->Pos;
}
bool GetVisible( int Idx )
{
DWORD dwGameBase = *(DWORD*)0x00AA3994;
if ( dwGameBase )
{
CVisible* VisibleCheck = (CVisible*)( *(DWORD*)(dwGameBase + 0x68 + ( 0x4 * Idx ) ) );
return VisibleCheck->Visible;
}
return false;
}
bool GetUserBone( D3DXVECTOR3 &Out, int Idx, int BoneIdx )
{
DWORD dwGameBase = *(DWORD*)0x00AA3994;
if ( dwGameBase )
{
CGameBase* GameBase = (CGameBase*)( *(DWORD*)(dwGameBase + 0x68 + ( 0x4 * Idx ) ) );
if ( GameBase && GameBase->Bones )
{
Out.x = GameBase->Bones->BoneData[ BoneIdx ].BoneMatrix._41;
Out.y = GameBase->Bones->BoneData[ BoneIdx ].BoneMatrix._42;
Out.z = GameBase->Bones->BoneData[ BoneIdx ].BoneMatrix._43;
return true;
}
}
return false;
}
DWORD dwEnd = 0x0062FF0D;
DWORD dwReturnEnd = dwEnd + 7;
float fX = 10.0f, fY = 10.0f, fZ = 10.0f;
DWORD dwTempEcx, dwTempEbx;
bool EndEnable;
_declspec( naked ) void End( )
{
if ( EndEnable )
{
_asm
{
mov [dwTempEcx], ecx;
mov [dwTempEbx], ebx;
mov ecx, [ebp+0x0C];
mov ebx, [fX];
mov [ecx], ebx;
mov ebx, [fY];
mov [ecx+0x08], ebx;
mov ebx, [fZ];
mov [ecx+0x08], ebx;
mov ecx, [dwTempEcx];
mov ebx, [dwTempEbx];
}
}
_asm
{
mov eax, [ebp+0x08];
push eax;
mov ecx, [ebp-0x1C];
jmp dwReturnEnd;
}
}
float CalcDistance( D3DXVECTOR3 VecA, D3DXVECTOR3 VecB )
{
return sqrt( ( ( VecA.x - VecB.x ) * ( VecA.x - VecB.x ) ) +
( ( VecA.y - VecB.y ) * ( VecA.y - VecB.y ) ) +
( ( VecA.z - VecB.z ) * ( VecA.z - VecB.z ) ) );
}
int GetPriorityTarget( )
{
int Result = -1;
float fMaxDistance = 1000.0f;
for ( int a = 0; a < 16; a++ )
{
if ( !GetUserLife( a ) && GetCharaIndex( ) != a )
{
D3DXVECTOR3 Head;
if ( GetCharaIndex( ) %2 != a % 2 && GetUserBone( Head, a, 7 ) )
{
if ( CalcDistance( GetUserVector( GetCharaIndex( ) ), GetUserVector( a ) ) < fMaxDistance )
{
fMaxDistance = CalcDistance( GetUserVector( GetCharaIndex( ) ), GetUserVector( a ) ) < fMaxDistance;
Result = a;
}
}
}
}
return Result;
}
Функция В EndScene вставляем
Код:
int Priority = GetPriorityTarget( );
if ( название функции )//Тут мы рисуем кости
{
for ( int n = 0; n < 16; n++ )
{
for ( int y = 0; y < 16; y++ )
{
D3DXVECTOR3 OnScreen, OnWorld;
if ( GetUserBone( OnWorld, n, y ) )
{
if ( WorldToScreen( OnWorld, OnScreen, pDevice ) )
{
DrawBox( (int)OnScreen.x-3, (int)OnScreen.y-3, 5, 5, цвет костей, pDevice );
}
}
}
}
}
if(название функции)//Тут наводим на голову
{
if ( Priority != -1 )
{
D3DXVECTOR3 OnScreen, OnWorld;
if ( DxESP->GetUserBone( OnWorld, Priority, 7 ) )
{
fX = OnWorld.x;
fY = OnWorld.y;
fZ = OnWorld.z;
if ( DxESP->WorldToScreen( OnWorld, OnScreen, pDevice ) )
{
DrawBox( OnScreen.x-3, OnScreen.y-3, 5, 5, GREEN, pDevice );
}
}
}
}
if(GetAsyncKeyState(VK_CONTROL))// При зажатии какой кнопки будет захват цели.
{EndEnable = true;}else{EndEnable = false;}
}
DetourCreate((PBYTE)dwEnd, (PBYTE)End, 7);//AIM
Вот сообственно и всё.
З.Ы. Тут есть небольшие ошибки.
|
|
|
8 пользователя(ей) сказали cпасибо:
|
|
27.12.2012, 19:13
|
#2
|
|
|
|
Старший сержант
|
Регистрация: 18.02.2011
Сообщений: 232
Популярность: 8824
Сказал(а) спасибо: 43
Поблагодарили 801 раз(а) в 240 сообщениях
|
Re: АИМ Source
Виииииии
пожалуй единственное полезное что я тут увидел это
Код:
class CVisible
{
public:
char Unk[0x628];
bool Visible;
};
хотя конечно это бред использовать для аима, приведу пример в 5 точку попасть можно, а в голову нет, а тут бац и аим считает что игрок виден стрелок в стены мастер (годится только для есп)
лучше так:
Код:
float CalcDistance( D3DXVECTOR3& VecA, D3DXVECTOR3& VecB )
{
return sqrt( ( ( VecA.x - VecB.x ) * ( VecA.x - VecB.x ) ) +
( ( VecA.y - VecB.y ) * ( VecA.y - VecB.y ) ) +
( ( VecA.z - VecB.z ) * ( VecA.z - VecB.z ) ) );
}
очень полезный класс
Код:
class CChara
{
public:
BYTE Number;
};
в функции w2s
Код:
DWORD dwRenderData = (DWORD)GetModuleHandleA("i3GfxDx.dll") + 0x18B0D4;
CRenderData* RenderData = (CRenderData*)(dwRenderData);
вы серьезно?
так ну и вообще по коду повторяется фигня на уровне:
(Класс*)((dwGameContext + 0x53464324) + 0x131231 бла бла бла);
вроде как классы и есть, а вроде как и не до конца
Последний раз редактировалось slava-zis; 27.12.2012 в 19:32.
|
|
|
27.12.2012, 19:54
|
#3
|
|
|
|
Пехотинец
|
Регистрация: 04.02.2012
Сообщений: 71
Популярность: 2775
Сказал(а) спасибо: 77
Поблагодарили 153 раз(а) в 60 сообщениях
|
Re: АИМ Source
|
|
|
27.12.2012, 20:00
|
#4
|
|
|
|
Разведчик
|
Регистрация: 27.12.2012
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: АИМ Source
Теперь переходим в главный файл.
что за главный файл??
|
|
|
27.12.2012, 20:09
|
#5
|
|
|
|
Старший сержант
|
Регистрация: 18.02.2011
Сообщений: 232
Популярность: 8824
Сказал(а) спасибо: 43
Поблагодарили 801 раз(а) в 240 сообщениях
|
Re: АИМ Source
|
|
|
27.12.2012, 20:15
|
#6
|
|
|
|
Старший сержант
|
Регистрация: 18.02.2011
Сообщений: 232
Популярность: 8824
Сказал(а) спасибо: 43
Поблагодарили 801 раз(а) в 240 сообщениях
|
Re: АИМ Source
ладно объясняю сию тупость
fMaxDistance - переменная типа флоат
а результатом выражения CalcDistance( GetUserVector( GetCharaIndex( ) ), GetUserVector( a ) ) < fMaxDistance будет 0 или 1
|
|
|
28.12.2012, 12:42
|
#7
|
|
|
|
Пехотинец
|
Регистрация: 26.05.2010
Сообщений: 89
Популярность: 3087
Сказал(а) спасибо: 3
Поблагодарили 666 раз(а) в 268 сообщениях
|
Re: АИМ Source
|
|
|
Пользователь сказал cпасибо:
|
|
28.12.2012, 18:16
|
#8
|
|
|
|
Фельдмаршал
|
Регистрация: 22.02.2011
Сообщений: 949
Популярность: 34698
Сказал(а) спасибо: 939
Поблагодарили 2,534 раз(а) в 911 сообщениях
|
Re: АИМ Source
|
|
|
28.12.2012, 20:26
|
#9
|
|
|
|
Разведчик
|
Регистрация: 22.02.2012
Сообщений: 49
Популярность: 2418
Сказал(а) спасибо: 123
Поблагодарили 79 раз(а) в 56 сообщениях
|
Re: АИМ Source
________________
Украина не победима...
Кто имел дело с ring0 пишите в лс...
|
|
|
Пользователь сказал cпасибо:
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 14:18.
|
|