-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
struct hud_weapons_t {
std::int32_t* get_weapon_count() {
return reinterpret_cast<std::int32_t*>(std::uintptr_t(this) + 0x80);
}
};
template<class T>
static T* FindHudElement(const char* name)
{
static auto pThis = *reinterpret_cast<DWORD**>(FindPattern("client_panorama.dll","B9 ? ? ? ? E8 ? ? ? ? 8B 5D 08" /*"B9 ? ? ? ? E8 ? ? ? ? 85 C0 0F 84 ? ? ? ? 8D 58"*/) + 1);
static auto find_hud_element = reinterpret_cast<DWORD(__thiscall*)(void*, const char*)>(FindPattern("client_panorama.dll", "55 8B EC 53 8B 5D 08 56 57 8B F9 33 F6 39 77 28"));
return (T*)find_hud_element(pThis, name);
}
void FullUpdate()
{
static auto dwrd = FindPattern("client_panorama.dll", "55 8B EC 51 53 56 8B 75 08 8B D9 57 6B FE 2C 89 5D FC");
static auto dw_FullUpdate = FindPattern("engine.dll", "A1 ? ? ? ? B9 ? ? ? ? 56 FF 50 14 8B 34 85");
if (dw_FullUpdate) {
static auto clearHudWeaponIcon = dwrd;
if (clearHudWeaponIcon) {
static auto clear_hud_weapon_icon_fn =
reinterpret_cast<std::int32_t(__thiscall*)(void*, std::int32_t)>(clearHudWeaponIcon);
auto element = FindHudElement<std::uintptr_t*>(("CCSGO_HudWeaponSelection"));
if (element && clear_hud_weapon_icon_fn) {
auto hud_weapons = reinterpret_cast<hud_weapons_t*>(std::uintptr_t(element) - 0xA0/*0x9c*/);
if (hud_weapons == nullptr)
return;
if (!*hud_weapons->get_weapon_count())
return;
for (std::int32_t i = 0; i < *hud_weapons->get_weapon_count(); i++)
i = clear_hud_weapon_icon_fn(hud_weapons, i);
typedef void(*CL_FullUpdate_t) (void);
CL_FullUpdate_t cl_fullupdate = (CL_FullUpdate_t)(dw_FullUpdate);
cl_fullupdate();
}
}
}
}