Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Гайд Добавляем RadarHack (ImGUI)

Забаненный
Забаненный
Статус
Оффлайн
Регистрация
25 Янв 2018
Сообщения
50
Реакции
14
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Привет юзеры!

Данный гайд основан под новичков так что всех профессиАнальных юзеров прошу закрыть тему либо не кидаться говном.

Для примера я возьму сурс TGF при желании можно вставить в другом сурс но по скольку гайд для новичков вряд ли кто-то будет это делать

Итак начнем:
Добавляем в файл Vars.h этот код на 153 строчку:
struct
{
bool Enabled;
bool OnlyEnemy;
float Range;
bool Nicks;
} Radar;
54710068f054.png

Добавляем в файл 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;
}
d784e4148f6a.png

И в этом же файле добавляем этот код после "ImGui_ImplDX9_NewFrame();"
if (Vars.Misc.Radar.Enabled && I::Engine->IsConnected())
DrawRadar();
97c902d31b35.png

Ну и тут же добавляем кнопки код вставляем где-то на 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);
3f319a5377bc.png

Добавляем в файл Misc.h этот код после "float Brightness() const"
ImU32 GetU32()
{
return ((_color[3] & 0xff) << 24) + ((_color[2] & 0xff) << 16) + ((_color[1] & 0xff) << 8)
+ (_color[0] & 0xff);
}
2c9c6252344d.png

Добавляем в файл Entity.cpp этот код после "std::string CBaseEntity::GetLastPlace()"
DWORD CBaseEntity::GetObserverTargetHandle()
{
return *(DWORD*)((DWORD)this + offsets.m_hObserverTarget);
}
71462bf56555.png

Добавляем в файл Entity.h этот код после "std::string GetLastPlace();"
DWORD GetObserverTargetHandle();
000a33fbb737.png

Добавляем в файл Offsets.cpp этот код после "offsets.m_bReloadVisuallyComplete"
offsets.m_hObserverTarget = U::NetVars->GetOffset(charenc("DT_BasePlayer"), charenc("m_hObserverTarget"));
1a2a4d6466bd.png

Добавляем в файл Offsets.h этот код после "DWORD m_bReloadVisuallyComplete;"
DWORD m_hObserverTarget;
5611dc7cb500.png

Добавляем в файл 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;
}
7ef2e3deae51.png

Добавляем в файл Draw.h этот код после "extern void DrawCircle"
extern RECT GetTextSize(HFont font, const char* text);
e29422030478.png

Итог:
0db438e7b0e6.png
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Урок 1 - "Учимся вместе пастить из team gamerfood в team gayrefund"
 
Честно говоря большой код и собственно нерациональный, можно сделать в разы короче, к примеру в моем софте тоже используется imgui-радар, но мне удалось реализовать его меньше) Однако, неплохо
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Назад
Сверху Снизу