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

Гайд Update hud with skinchanger

Забаненный
Забаненный
Статус
Оффлайн
Регистрация
18 Ноя 2017
Сообщения
193
Реакции
123
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
update hud with skinchanger
так как нигде вроде гайдов нету, есть на uc, но там хуй найдешь
Все вставляем в меню(где у вас идет вызов форсе апдеит)

Код:
Expand Collapse Copy
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**>(UTILS::FindSignature("client_panorama.dll", "B9 ? ? ? ? E8 ? ? ? ? 85 C0 0F 84 ? ? ? ? 8D 58") + 1);
static auto find_hud_element = reinterpret_cast<DWORD(__thiscall*)(void*, const char*)>(UTILS::FindSignature("client_panorama.dll", "55 8B EC 53 8B 5D 08 56 57 8B F9 33 F6 39"));
return (T*)find_hud_element(pThis, name);
}
void KnifeApplyCallbk()
{
static auto clear_hud_weapon_icon_fn =
reinterpret_cast<std::int32_t(__thiscall*)(void*, std::int32_t)>(
UTILS::FindSignature("client_panorama.dll", "55 8B EC 51 53 56 8B 75 08 8B D9 57 6B FE 2C"));
auto element = FindHudElement<std::uintptr_t*>("CCSGO_HudWeaponSelection");
auto hud_weapons = reinterpret_cast<hud_weapons_t*>(std::uintptr_t(element) - 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(*ForceUpdate) (void);
ForceUpdate FullUpdate = (ForceUpdate)UTILS::FindSignaturenew("engine.dll", "FullUpdate", "A1 ? ? ? ? B9 ? ? ? ? 56 FF 50 14 8B 34 85");
FullUpdate();
}

FindSignaturenew:
Код:
Expand Collapse Copy
DWORD FindSig(DWORD dwAddress, DWORD dwLength, const char* szPattern)
{
if (!dwAddress || !dwLength || !szPattern)
return 0;
const char* pat = szPattern;
DWORD firstMatch = NULL;
for (DWORD pCur = dwAddress; pCur < dwLength; pCur++)
{
if (!*pat)
return firstMatch;
if (*(PBYTE)pat == '\?' || *(BYTE*)pCur == getByte(pat))
{
if (!firstMatch)
firstMatch = pCur;
if (!pat[2])
return firstMatch;
if (*(PWORD)pat == '\?\?' || *(PBYTE)pat != '\?')
pat += 3;
else pat += 2;
}
else
{
pat = szPattern;
firstMatch = 0;
}
}
return 0;
}
DWORD FindSignaturenew(const char* szModuleName, const char* PatternName, char* szPattern)
{
HMODULE hModule = GetModuleHandleA(szModuleName);
PIMAGE_DOS_HEADER pDOSHeader = (PIMAGE_DOS_HEADER)hModule;
PIMAGE_NT_HEADERS pNTHeaders = (PIMAGE_NT_HEADERS)(((DWORD)hModule) + pDOSHeader->e_lfanew);
DWORD ret = FindSig(((DWORD)hModule) + pNTHeaders->OptionalHeader.BaseOfCode, ((DWORD)hModule) + pNTHeaders->OptionalHeader.SizeOfCode, szPattern);;
return ret;
}
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
добавил код также для FindSignaturenew
мб кому-то будет нужно...
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
No, just no, pasters
 
Назад
Сверху Снизу