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

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

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

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

Итак начнем:
Добавляем в файл Vars.h этот код на 153 строчку:
struct
{
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;
}

И в этом же файле добавляем этот код после "ImGui_ImplDX9_NewFrame();"
if (Vars.Misc.Radar.Enabled && I::Engine->IsConnected())
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);

Добавляем в файл Misc.h этот код после "float Brightness() const"
ImU32 GetU32()
{
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);
}

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

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

Итог:
 
Последнее редактирование:
push me to the edge
Олдфаг
Статус
Оффлайн
Регистрация
22 Мар 2017
Сообщения
2,253
Реакции[?]
1,204
Поинты[?]
1K
Подпиши что это не только для имгуи, но ещё и для тгф
 
я выблядок
Забаненный
Статус
Оффлайн
Регистрация
15 Июн 2017
Сообщения
607
Реакции[?]
352
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Урок 1 - "Учимся вместе пастить из team gamerfood в team gayrefund"
 
Пользователь
Статус
Оффлайн
Регистрация
14 Май 2017
Сообщения
160
Реакции[?]
31
Поинты[?]
0
Честно говоря большой код и собственно нерациональный, можно сделать в разы короче, к примеру в моем софте тоже используется imgui-радар, но мне удалось реализовать его меньше) Однако, неплохо
 
Забаненный
Статус
Оффлайн
Регистрация
25 Янв 2018
Сообщения
44
Реакции[?]
15
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сверху Снизу