nixware.cc
-
Автор темы
- #1
Всем привет дада гайд для индиго
Значит вставляем перед HRESULT WINAPI Hook_Present это дерьмо
//Не обращайте внимания на лишний код, мне лень было вырезать.
Упс, забыли аккураси:
Значит вставляем перед HRESULT WINAPI Hook_Present это дерьмо
//Не обращайте внимания на лишний код, мне лень было вырезать.
Код:
struct CUSTOMVERTEX {
FLOAT x, y, z;
FLOAT rhw;
DWORD color;
// FLOAT tu, tv;
};
void CircleFilledDualColor(float x, float y, float rad, float rotate, int type, int resolution, DWORD color, DWORD color2, IDirect3DDevice9* m_device)
{
LPDIRECT3DVERTEXBUFFER9 g_pVB2;
std::vector<CUSTOMVERTEX> circle(resolution + 2);
float angle = rotate * D3DX_PI / 180, pi = D3DX_PI;
if (type == 1)
pi = D3DX_PI; // Full circle
if (type == 2)
pi = D3DX_PI / 2; // 1/2 circle
if (type == 3)
pi = D3DX_PI / 4; // 1/4 circle
pi = D3DX_PI / type; // 1/4 circle
circle[0].x = x;
circle[0].y = y;
circle[0].z = 0;
circle[0].rhw = 1;
circle[0].color = color2;
for (int i = 1; i < resolution + 2; i++)
{
circle[i].x = (float)(x - rad * cos(pi*((i - 1) / (resolution / 2.0f))));
circle[i].y = (float)(y - rad * sin(pi*((i - 1) / (resolution / 2.0f))));
circle[i].z = 0;
circle[i].rhw = 1;
circle[i].color = color;
}
// Rotate matrix
int _res = resolution + 2;
for (int i = 0; i < _res; i++)
{
circle[i].x = x + cos(angle)*(circle[i].x - x) - sin(angle)*(circle[i].y - y);
circle[i].y = y + sin(angle)*(circle[i].x - x) + cos(angle)*(circle[i].y - y);
}
m_device->CreateVertexBuffer((resolution + 2) * sizeof(CUSTOMVERTEX), D3DUSAGE_WRITEONLY, D3DFVF_XYZRHW | D3DFVF_DIFFUSE, D3DPOOL_DEFAULT, &g_pVB2, NULL);
VOID* pVertices;
g_pVB2->Lock(0, (resolution + 2) * sizeof(CUSTOMVERTEX), (void**)&pVertices, 0);
memcpy(pVertices, &circle[0], (resolution + 2) * sizeof(CUSTOMVERTEX));
g_pVB2->Unlock();
m_device->SetTexture(0, NULL);
m_device->SetPixelShader(NULL);
m_device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
m_device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
m_device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
m_device->SetStreamSource(0, g_pVB2, 0, sizeof(CUSTOMVERTEX));
m_device->SetFVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE);
m_device->DrawPrimitive(D3DPT_TRIANGLEFAN, 0, resolution);
if (g_pVB2 != NULL)
g_pVB2->Release();
}
void CircleFilledRainbowColor(float x, float y, float rad, float rotate, int type, int resolution, IDirect3DDevice9* m_device)
{
LPDIRECT3DVERTEXBUFFER9 g_pVB2;
std::vector<CUSTOMVERTEX> circle(resolution + 2);
float angle = rotate * D3DX_PI / 180, pi = D3DX_PI;
if (type == 1)
pi = D3DX_PI; // Full circle
if (type == 2)
pi = D3DX_PI / 2; // 1/2 circle
if (type == 3)
pi = D3DX_PI / 4; // 1/4 circle
pi = D3DX_PI / type; // 1/4 circle
circle[0].x = x;
circle[0].y = y;
circle[0].z = 0;
circle[0].rhw = 1;
circle[0].color = D3DCOLOR_RGBA(0, 0, 0, 0);
float hue = 0.f;
for (int i = 1; i < resolution + 2; i++)
{
circle[i].x = (float)(x - rad * cos(pi*((i - 1) / (resolution / 2.0f))));
circle[i].y = (float)(y - rad * sin(pi*((i - 1) / (resolution / 2.0f))));
circle[i].z = 0;
circle[i].rhw = 1;
auto clr = Color::FromHSB(hue, 1.f, 1.f);
circle[i].color = D3DCOLOR_RGBA(clr.r(), clr.g(), clr.b(), clr.a());
hue += 0.02;
}
// Rotate matrix
int _res = resolution + 2;
for (int i = 0; i < _res; i++)
{
float Vx1 = x + (cosf(angle) * (circle[i].x - x) - sinf(angle) * (circle[i].y - y));
float Vy1 = y + (sinf(angle) * (circle[i].x - x) + cosf(angle) * (circle[i].y - y));
circle[i].x = Vx1;
circle[i].y = Vy1;
}
m_device->CreateVertexBuffer((resolution + 2) * sizeof(CUSTOMVERTEX), D3DUSAGE_WRITEONLY, D3DFVF_XYZRHW | D3DFVF_DIFFUSE, D3DPOOL_DEFAULT, &g_pVB2, NULL);
VOID* pVertices;
g_pVB2->Lock(0, (resolution + 2) * sizeof(CUSTOMVERTEX), (void**)&pVertices, 0);
memcpy(pVertices, &circle[0], (resolution + 2) * sizeof(CUSTOMVERTEX));
g_pVB2->Unlock();
m_device->SetTexture(0, NULL);
m_device->SetPixelShader(NULL);
m_device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
m_device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
m_device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
m_device->SetStreamSource(0, g_pVB2, 0, sizeof(CUSTOMVERTEX));
m_device->SetFVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE);
m_device->DrawPrimitive(D3DPT_TRIANGLEFAN, 0, resolution);
if (g_pVB2 != NULL)
g_pVB2->Release();
}
DWORD color = D3DCOLOR_RGBA((int)(0 *255.0f), (int)(0 *255.0f), (int)(0 *255.0f), (int)(1 *255.0f));
DWORD color2 = D3DCOLOR_RGBA((int)(0 * 255.0f), (int)(0 * 255.0f), (int)(0 * 255.0f), (int)(0 * 255.0f));
void Crosshair(IDirect3DDevice9* pDevice)
{
CBaseEntity* local = (CBaseEntity*)Interfaces::EntityList()->GetClientEntity(Interfaces::Engine()->GetLocalPlayer());
Color AwpAimColor = Color(int(Settings::Misc::misc_AwpAimColor[0] * 255.f),
int(Settings::Misc::misc_AwpAimColor[1] * 255.f),
int(Settings::Misc::misc_AwpAimColor[2] * 255.f));
if (Settings::Misc::ShowSpread == 2)
{
int width, height;
Interfaces::Engine()->GetScreenSize(width, height);
if (local && IsLocalAlive())
{
static Vector ViewAngles;
Interfaces::Engine()->GetViewAngles(ViewAngles);
ViewAngles += (local->GetAimPunchAngle()) * 2.f;
static Vector fowardVec;
AngleVectors(ViewAngles, fowardVec);
fowardVec *= 10000;
// Get ray start / end
Vector start = local->GetOrigin() + local->GetViewOffset();
Vector end = start + fowardVec, endScreen;
CBaseWeapon* weaponbase = local->GetBaseWeapon();
if (weaponbase->IsGun())
{
float cone = weaponbase->GetInaccuracy();
if (cone > 0.0f)
{
float size;
Vector screen;
if (cone < 0.01f) cone = 0.01f;
float size1337 = (cone * height) * 0.7f;
if (WorldToScreen(end, endScreen))
{
/*Вот это значит рейнбов круг*/
CircleFilledRainbowColor(Client::iScreenWidth / 2, Client::iScreenHeight / 2, size1337, 0, 1, 50/*, color, color2*/, pDevice);
/*А это двухцветный круг прямо как в ав*/
CircleFilledDualColor(Client::iScreenWidth / 2, Client::iScreenHeight / 2, size1337, 0, 1, 50, color, color2, pDevice);
}
}
}
}
}
}
Код:
float CBaseWeapon::GetInaccuracy()
{
return GetMethod<float(__thiscall*)(void*)>(this, 468)(this);
}
Ну а потом в самом презенте вызываем вот так:
После данных манипуляций мы получим такой результат:
После данных манипуляций мы получим такой результат:
Пожалуйста, авторизуйтесь для просмотра ссылки.
(соре за второй моник)
Если будете пастить на другие борды, будьте добры, оставляйте кредиты.
Спасибо.
Спасибо.