-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Привет юзеры!
Данный гайд основан под новичков так что всех профессиАнальных юзеров прошу закрыть тему либо не кидаться говном.
Для примера я возьму сурс TGF при желании можно вставить в другом сурс но по скольку гайд для новичков вряд ли кто-то будет это делать
Итак начнем:
Добавляем в файл Vars.h этот код на 153 строчку:
Добавляем в файл EndScene.cpp этот код после "EndSceneFn oEndScene;"
И в этом же файле добавляем этот код после "ImGui_ImplDX9_NewFrame();"
Ну и тут же добавляем кнопки код вставляем где-то на 359 строчку
Добавляем в файл Misc.h этот код после "float Brightness() const"
Добавляем в файл Entity.cpp этот код после "std::string CBaseEntity::GetLastPlace()"
Добавляем в файл Entity.h этот код после "std::string GetLastPlace();"
Добавляем в файл Offsets.cpp этот код после "offsets.m_bReloadVisuallyComplete"
Добавляем в файл Offsets.h этот код после "DWORD m_bReloadVisuallyComplete;"
Добавляем в файл Draw.cpp этот код после "void D::DrawCircle"
Добавляем в файл Draw.h этот код после "extern void DrawCircle"
Итог:
Данный гайд основан под новичков так что всех профессиАнальных юзеров прошу закрыть тему либо не кидаться говном.
Для примера я возьму сурс TGF при желании можно вставить в другом сурс но по скольку гайд для новичков вряд ли кто-то будет это делать
Итак начнем:
Добавляем в файл Vars.h этот код на 153 строчку:
struct
{
bool Enabled;
bool OnlyEnemy;
float Range;
bool Nicks;
} Radar;
{
bool Enabled;
bool OnlyEnemy;
float Range;
bool Nicks;
} Radar;
Добавляем в файл EndScene.cpp этот код после "EndSceneFn oEndScene;"
Vector2D RotatePoint(Vector EntityPos, Vector LocalPlayerPos, int posX, int posY, int sizeX, int sizeY, float angle, float zoom, bool* viewCheck, bool angleInRadians = false)
{
float r_1, r_2;
float x_1, y_1;
r_1 = -(EntityPos.y - LocalPlayerPos.y);
r_2 = EntityPos.x - LocalPlayerPos.x;
float Yaw = angle - 90.0f;
float yawToRadian = Yaw * (float)(M_PI / 180.0F);
x_1 = (float)(r_2 * (float)cos((double)(yawToRadian)) - r_1 * sin((double)(yawToRadian))) / 20;
y_1 = (float)(r_2 * (float)sin((double)(yawToRadian)) + r_1 * cos((double)(yawToRadian))) / 20;
*viewCheck = y_1 < 0;
x_1 *= zoom;
y_1 *= zoom;
int sizX = sizeX / 2;
int sizY = sizeY / 2;
x_1 += sizX;
y_1 += sizY;
if (x_1 < 5)
x_1 = 5;
if (x_1 > sizeX - 5)
x_1 = sizeX - 5;
if (y_1 < 5)
y_1 = 5;
if (y_1 > sizeY - 5)
y_1 = sizeY - 5;
x_1 += posX;
y_1 += posY;
return Vector2D(x_1, y_1);
}
bool EntityIsInvalid(CBaseEntity* Entity)
{
if (!Entity)
return true;
if (Entity->GetHealth() <= 0)
return true;
if (Entity->GetDormant())
return true;
return false;
}
void DrawRadar()
{
ImGuiStyle& style = ImGui::GetStyle();
ImVec2 oldPadding = style.WindowPadding;
float oldAlpha = style.Colors[ImGuiCol_WindowBg].w;
style.WindowPadding = ImVec2(0, 0);
style.Colors[ImGuiCol_WindowBg].w = 1.f;
if (ImGui::Begin(charenc("Radar"), &Vars.Misc.Radar.Enabled, ImVec2(200, 200), 0.4F, ImGuiWindowFlags_NoTitleBar |/*ImGuiWindowFlags_NoResize | */ImGuiWindowFlags_NoCollapse))
{
ImVec2 siz = ImGui::GetWindowSize();
ImVec2 pos = ImGui::GetWindowPos();
ImDrawList* DrawList = ImGui::GetWindowDrawList();
DrawList->AddRect(ImVec2(pos.x - 6, pos.y - 6), ImVec2(pos.x + siz.x + 6, pos.y + siz.y + 6), Color::Black().GetU32(), 0.0F, -1, 1.5f);
ImDrawList* windowDrawList = ImGui::GetWindowDrawList();
windowDrawList->AddLine(ImVec2(pos.x + (siz.x / 2), pos.y + 0), ImVec2(pos.x + (siz.x / 2), pos.y + siz.y), Color::Black().GetU32(), 1.5f);
windowDrawList->AddLine(ImVec2(pos.x + 0, pos.y + (siz.y / 2)), ImVec2(pos.x + siz.x, pos.y + (siz.y / 2)), Color::Black().GetU32(), 1.5f);
if (I::Engine->IsInGame() && I::Engine->IsConnected())
{
if (G::LocalPlayer)
{
Vector LocalPos = G::LocalPlayer->GetEyePosition();
QAngle ang;
I::Engine->GetViewAngles(ang);
for (int i = 0; i < I::Engine->GetMaxClients(); i++) {
CBaseEntity* pBaseEntity = I::ClientEntList->GetClientEntity(i);
player_info_t pInfo;
I::Engine->GetPlayerInfo(i, &pInfo);
if (EntityIsInvalid(pBaseEntity))
continue;
CBaseEntity* observerTarget = I::ClientEntList->GetClientEntityFromHandle(G::LocalPlayer->GetObserverTargetHandle());
bool bIsEnemy = (G::LocalPlayer->GetTeam() != pBaseEntity->GetTeam() || pBaseEntity == observerTarget || pBaseEntity == G::LocalPlayer) ? true : false;
if (Vars.Misc.Radar.OnlyEnemy && !bIsEnemy)
continue;
bool viewCheck = false;
Vector2D EntityPos = RotatePoint(pBaseEntity->GetOrigin(), LocalPos, pos.x, pos.y, siz.x, siz.y, ang.y, Vars.Misc.Radar.Range, &viewCheck);
//ImU32 clr = (bIsEnemy ? (isVisibled ? Color::LightGreen() : Color::Blue()) : Color::White()).GetU32();
ImU32 clr = (bIsEnemy ? Color::Red() : Color::LightBlue()).GetU32();
static bool drawname = true;
if (pBaseEntity == observerTarget || pBaseEntity == G::LocalPlayer)
{
clr = Color::White().GetU32();
drawname = false;
}
else
drawname = true;
int s = 2;
windowDrawList->AddRect(ImVec2(EntityPos.x - s, EntityPos.y - s),
ImVec2(EntityPos.x + s, EntityPos.y + s),
clr);
RECT TextSize = D::GetTextSize(F::ESP, pInfo.name);
if (drawname && Vars.Misc.Radar.Nicks)
windowDrawList->AddText(ImVec2(EntityPos.x - (TextSize.left / 2), EntityPos.y - s), Color::White().GetU32(), pInfo.name);
}
}
}
}
ImGui::End();
style.WindowPadding = oldPadding;
style.Colors[ImGuiCol_WindowBg].w = oldAlpha;
}
{
float r_1, r_2;
float x_1, y_1;
r_1 = -(EntityPos.y - LocalPlayerPos.y);
r_2 = EntityPos.x - LocalPlayerPos.x;
float Yaw = angle - 90.0f;
float yawToRadian = Yaw * (float)(M_PI / 180.0F);
x_1 = (float)(r_2 * (float)cos((double)(yawToRadian)) - r_1 * sin((double)(yawToRadian))) / 20;
y_1 = (float)(r_2 * (float)sin((double)(yawToRadian)) + r_1 * cos((double)(yawToRadian))) / 20;
*viewCheck = y_1 < 0;
x_1 *= zoom;
y_1 *= zoom;
int sizX = sizeX / 2;
int sizY = sizeY / 2;
x_1 += sizX;
y_1 += sizY;
if (x_1 < 5)
x_1 = 5;
if (x_1 > sizeX - 5)
x_1 = sizeX - 5;
if (y_1 < 5)
y_1 = 5;
if (y_1 > sizeY - 5)
y_1 = sizeY - 5;
x_1 += posX;
y_1 += posY;
return Vector2D(x_1, y_1);
}
bool EntityIsInvalid(CBaseEntity* Entity)
{
if (!Entity)
return true;
if (Entity->GetHealth() <= 0)
return true;
if (Entity->GetDormant())
return true;
return false;
}
void DrawRadar()
{
ImGuiStyle& style = ImGui::GetStyle();
ImVec2 oldPadding = style.WindowPadding;
float oldAlpha = style.Colors[ImGuiCol_WindowBg].w;
style.WindowPadding = ImVec2(0, 0);
style.Colors[ImGuiCol_WindowBg].w = 1.f;
if (ImGui::Begin(charenc("Radar"), &Vars.Misc.Radar.Enabled, ImVec2(200, 200), 0.4F, ImGuiWindowFlags_NoTitleBar |/*ImGuiWindowFlags_NoResize | */ImGuiWindowFlags_NoCollapse))
{
ImVec2 siz = ImGui::GetWindowSize();
ImVec2 pos = ImGui::GetWindowPos();
ImDrawList* DrawList = ImGui::GetWindowDrawList();
DrawList->AddRect(ImVec2(pos.x - 6, pos.y - 6), ImVec2(pos.x + siz.x + 6, pos.y + siz.y + 6), Color::Black().GetU32(), 0.0F, -1, 1.5f);
ImDrawList* windowDrawList = ImGui::GetWindowDrawList();
windowDrawList->AddLine(ImVec2(pos.x + (siz.x / 2), pos.y + 0), ImVec2(pos.x + (siz.x / 2), pos.y + siz.y), Color::Black().GetU32(), 1.5f);
windowDrawList->AddLine(ImVec2(pos.x + 0, pos.y + (siz.y / 2)), ImVec2(pos.x + siz.x, pos.y + (siz.y / 2)), Color::Black().GetU32(), 1.5f);
if (I::Engine->IsInGame() && I::Engine->IsConnected())
{
if (G::LocalPlayer)
{
Vector LocalPos = G::LocalPlayer->GetEyePosition();
QAngle ang;
I::Engine->GetViewAngles(ang);
for (int i = 0; i < I::Engine->GetMaxClients(); i++) {
CBaseEntity* pBaseEntity = I::ClientEntList->GetClientEntity(i);
player_info_t pInfo;
I::Engine->GetPlayerInfo(i, &pInfo);
if (EntityIsInvalid(pBaseEntity))
continue;
CBaseEntity* observerTarget = I::ClientEntList->GetClientEntityFromHandle(G::LocalPlayer->GetObserverTargetHandle());
bool bIsEnemy = (G::LocalPlayer->GetTeam() != pBaseEntity->GetTeam() || pBaseEntity == observerTarget || pBaseEntity == G::LocalPlayer) ? true : false;
if (Vars.Misc.Radar.OnlyEnemy && !bIsEnemy)
continue;
bool viewCheck = false;
Vector2D EntityPos = RotatePoint(pBaseEntity->GetOrigin(), LocalPos, pos.x, pos.y, siz.x, siz.y, ang.y, Vars.Misc.Radar.Range, &viewCheck);
//ImU32 clr = (bIsEnemy ? (isVisibled ? Color::LightGreen() : Color::Blue()) : Color::White()).GetU32();
ImU32 clr = (bIsEnemy ? Color::Red() : Color::LightBlue()).GetU32();
static bool drawname = true;
if (pBaseEntity == observerTarget || pBaseEntity == G::LocalPlayer)
{
clr = Color::White().GetU32();
drawname = false;
}
else
drawname = true;
int s = 2;
windowDrawList->AddRect(ImVec2(EntityPos.x - s, EntityPos.y - s),
ImVec2(EntityPos.x + s, EntityPos.y + s),
clr);
RECT TextSize = D::GetTextSize(F::ESP, pInfo.name);
if (drawname && Vars.Misc.Radar.Nicks)
windowDrawList->AddText(ImVec2(EntityPos.x - (TextSize.left / 2), EntityPos.y - s), Color::White().GetU32(), pInfo.name);
}
}
}
}
ImGui::End();
style.WindowPadding = oldPadding;
style.Colors[ImGuiCol_WindowBg].w = oldAlpha;
}
И в этом же файле добавляем этот код после "ImGui_ImplDX9_NewFrame();"
if (Vars.Misc.Radar.Enabled && I::Engine->IsConnected())
DrawRadar();
DrawRadar();
Ну и тут же добавляем кнопки код вставляем где-то на 359 строчку
ImGui::Separator();
ImGui::Text(charenc("Radar"));
ImGui::Separator();
ImGui::Checkbox(charenc("Enable Radar"), &Vars.Misc.Radar.Enabled);
ImGui::SliderFloat(charenc("Radar Range"), &Vars.Misc.Radar.Range, 1, 100);
ImGui::Checkbox(charenc("Only Enemy"), &Vars.Misc.Radar.OnlyEnemy);
ImGui::Checkbox(charenc("Show Nicks"), &Vars.Misc.Radar.Nicks);
ImGui::Text(charenc("Radar"));
ImGui::Separator();
ImGui::Checkbox(charenc("Enable Radar"), &Vars.Misc.Radar.Enabled);
ImGui::SliderFloat(charenc("Radar Range"), &Vars.Misc.Radar.Range, 1, 100);
ImGui::Checkbox(charenc("Only Enemy"), &Vars.Misc.Radar.OnlyEnemy);
ImGui::Checkbox(charenc("Show Nicks"), &Vars.Misc.Radar.Nicks);
Добавляем в файл Misc.h этот код после "float Brightness() const"
ImU32 GetU32()
{
return ((_color[3] & 0xff) << 24) + ((_color[2] & 0xff) << 16) + ((_color[1] & 0xff) << 8)
+ (_color[0] & 0xff);
}
{
return ((_color[3] & 0xff) << 24) + ((_color[2] & 0xff) << 16) + ((_color[1] & 0xff) << 8)
+ (_color[0] & 0xff);
}
Добавляем в файл Entity.cpp этот код после "std::string CBaseEntity::GetLastPlace()"
DWORD CBaseEntity::GetObserverTargetHandle()
{
return *(DWORD*)((DWORD)this + offsets.m_hObserverTarget);
}
{
return *(DWORD*)((DWORD)this + offsets.m_hObserverTarget);
}
Добавляем в файл Entity.h этот код после "std::string GetLastPlace();"
DWORD GetObserverTargetHandle();
Добавляем в файл Offsets.cpp этот код после "offsets.m_bReloadVisuallyComplete"
offsets.m_hObserverTarget = U::NetVars->GetOffset(charenc("DT_BasePlayer"), charenc("m_hObserverTarget"));
Добавляем в файл Offsets.h этот код после "DWORD m_bReloadVisuallyComplete;"
DWORD m_hObserverTarget;
Добавляем в файл Draw.cpp этот код после "void D::DrawCircle"
RECT D::GetTextSize(HFont font, const char* text)
{
size_t origsize = strlen(text) + 1;
const size_t newsize = 100;
size_t convertedChars = 0;
wchar_t wcstring[newsize];
mbstowcs_s(&convertedChars, wcstring, origsize, text, _TRUNCATE);
RECT rect; int x, y;
I::Surface->GetTextSize(font, wcstring, x, y);
rect.left = x; rect.bottom = y;
rect.right = x;
return rect;
}
{
size_t origsize = strlen(text) + 1;
const size_t newsize = 100;
size_t convertedChars = 0;
wchar_t wcstring[newsize];
mbstowcs_s(&convertedChars, wcstring, origsize, text, _TRUNCATE);
RECT rect; int x, y;
I::Surface->GetTextSize(font, wcstring, x, y);
rect.left = x; rect.bottom = y;
rect.right = x;
return rect;
}
Добавляем в файл Draw.h этот код после "extern void DrawCircle"
extern RECT GetTextSize(HFont font, const char* text);
Итог:
Последнее редактирование: