[HLRTeam] Программирование под HL1 на C++. Урок 2-ой. ESP Box + ESP Dot

1xbet melbet

Mr.Bean

Администратор
Сообщения
280
Реакции
154
Программирование под HL1 на C++. Урок 2-ой. ESP Box + ESP Dot

Решил выложить урок наэтот форум так как тот засрали мамоебы, а я это не очень люблю.

Ну не суть. Предполагалось две части, но потом я решил просто объединить их воедино.

esp.h:


Код:
static void DrawBox(int iIndex);


esp.cpp:




Код:
void esp_s:[IMG]https://pvpru.com/board/images/smilies/biggrin.gif[/IMG]rawBox(int iIndex)
{
if(cvar.esp_dm->value==0&&g_PlayerTeam[iIndex]==g_Local.iTeam)return;


int r=255, g=0, b=255;

if(g_Player[iIndex].bVisible){g = 0;}
if(!g_Player[iIndex].bVisible){g = 255;}


if(g_PlayerTeam[iIndex] == 1) { r = 255, b = 0; }
if(g_PlayerTeam[iIndex] == 2) { r = 0, b = 255; }




float flDrawPos[2];
if(bCalcScreen(g_Player[iIndex].vOrigin,flDrawPos))
{
int x = (int)flDrawPos[0], y = (int)flDrawPos[1];


float uppt[]={g_Player[iIndex].vOrigin.x-g_Local.vViewOrg.x,g_Player[iIndex].vOrigin.y-g_Local.vViewOrg.y,g_Player[iIndex].vOrigin.z-g_Local.vViewOrg.z};
float l=sqrt(VectorLengthSquared(uppt));
l=max(100,l);
const float pw=16.0f;
const float ph=36.0f;
int bw=(30.0f*pw)/l*15;
int bh=(30.0f*ph)/l*15;
int bx=x-bw;
int by=y-((30.0f*(ph+10))/l*15);
g_Drawing.DrawBox(bx,by,bw*2,bh*2,2,r,g,b,255);
}
}


HUD_Redraw:


Код:
if(cvar.esp->value != 0 && g_Aimbot.bIsValidEnt(iIndex))
{
if(cvar.esp_dot->value != 0) DrawDot(iIndex);
if(cvar.esp_box->value != 0) DrawBox(iIndex);
}




locals.h -> local_s : Vector vViewOrg;


Client.cpp:

Код:
V_CalcRefdef: VectorCopy(pparams->vieworg,g_Local.vViewOrg);

ESP Dot

Код:
class esp_s //создаем класс под названием esp_s
{
public: //эти элементы класса можно будет изменять
static bool bCalcScreen(float *pflOrigin,float *pflVecScreen); //Считаем положение на экране и проверяем находится ли враг в видимости


static void DrawDot(int iIndex); //Будем рисовать точку на врагах
static void HUD_Redraw(int iIndex); //Тут мы будем вызывать все ESP(виды) , которые мы сделаем
};
extern esp_s g_Esp;


Код:
esp.cpp:


#include "esp.h"
#include "cVars\cvars.h"
#include "settings.h"
#include "locals.h"
#include "aimbot.h"
#include "drawing.h"


esp_s g_Esp;


bool esp_s::bCalcScreen(float *pflOrigin,float *pflVecScreen) //world to screen function
{
int iResult = g_Engine.pTriAPI->WorldToScreen( pflOrigin, pflVecScreen );


if( pflVecScreen[0] < 1 && pflVecScreen[1] < 1 && pflVecScreen[0] > -1 && pflVecScreen[1] > -1 && !iResult )
{
pflVecScreen[0] = pflVecScreen[0] * ( g_Screen.iWidth / 2 ) + ( g_Screen.iWidth / 2 );
pflVecScreen[1] = -pflVecScreen[1] * ( g_Screen.iHeight / 2 ) + ( g_Screen.iHeight / 2 );
return true;
}
return false;
}


void esp_s:[IMG]https://pvpru.com/board/images/smilies/biggrin.gif[/IMG]rawDot(int iIndex)//рисуем точку
{
if(cvar.esp_dm->value==0&&g_PlayerTeam[iIndex]==g_Local.iTeam)return; //проверка на комманду


int r=255, g=0, b=255;


if(g_Player[iIndex].bVisible){g = 0;} //если мы видим врага , то зеленый цвет = 0
if(!g_Player[iIndex].bVisible){g = 255;} //если же не видим , то зеленый цвет = 255


if(g_PlayerTeam[iIndex] == 1) { r = 255, b = 0; } //Террористы красные
if(g_PlayerTeam[iIndex] == 2) { r = 0, b = 255; } //Контр-террористы синие

float flDrawPos[2];
if(bCalcScreen(g_Player[iIndex].vBone[(int)cvar.esp_dot_spot->value],flDrawPos))//высчитываем точку на экране с помощью Bone (место отрисоввки
{
int x = (int)flDrawPos[0], y = (int)flDrawPos[1];

g_Drawing.FillArea(x-1,y+1,2,2,r,g,b,255);//вот и точка , где цифры 2 - можно заменить на свое
}
}


void esp_s::HUD_Redraw(int iIndex)
{
if(cvar.esp->value != 0 && g_Aimbot.bIsValidEnt(iIndex)) //включен ли есп и валидный ли игрок
{
if(cvar.esp_dot->value != 0) DrawDot(iIndex);//если esp_dot включен - рисуем точку
}
}


Создаем и регестрируем квары самостоятельно. В client.cpp где-то сверху:


Код:
#include "esp.h"




В HUD_Redraw в цикле с игроками где-то ниже всего (но в цикле):


Код:
g_Esp.HUD_Redraw(i);
 
kaspersky keys
Верх