Mr.Bean
Администратор
- Сообщения
- 280
- Реакции
- 154
Программирование под HL1 на C++. Урок 2-ой. ESP Box + ESP Dot
Решил выложить урок наэтот форум так как тот засрали мамоебы, а я это не очень люблю.
Ну не суть. Предполагалось две части, но потом я решил просто объединить их воедино.
esp.h:
esp.cpp:
HUD_Redraw:
Client.cpp:
ESP Dot
Создаем и регестрируем квары самостоятельно. В client.cpp где-то сверху:
В HUD_Redraw в цикле с игроками где-то ниже всего (но в цикле):
Решил выложить урок наэтот форум так как тот засрали мамоебы, а я это не очень люблю.
Ну не суть. Предполагалось две части, но потом я решил просто объединить их воедино.
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);