В этой статье, мы с вами отключим назойливую рекламу и персональные предложения в игре. Поиск всех необходимых смещений для этого вы уже знаете, поэтому, я не буду останавливаться на этом подробно. Остановимся только на ключевых моментах.
Добавим в наш код новые смещения
#define ICVAR_OFFS_ADVERTISING 0x90 #define ICVAR_OFFS_PERSONAL_OFFER 0xB4
В итоге, мы имеем такой набор смещений
#define ICVAR_ADDR 0x1420DD458 #define IGAMEFRAMEWORK_ADDR 0x1420DE108 #define IGAMEFRAMEWORK_GETCLIENTACTOR 0x470 #define ICVAR_OFFS_IDLECHECK 0x168 #define ICVAR_OFFS_LOBBYAFK 0x7B0 #define ICVAR_OFFS_INGAMEAFK 0x5D0 #define ICVAR_OFFS_ADVERTISING 0x90 #define ICVAR_OFFS_PERSONAL_OFFER 0xB4 #define ICVAR_OFFS_GAMETYPE 0x600
Добавим в перечисление CvarOffsets новые значения
E_ADVERTISING_OFF = ICVAR_OFFS_ADVERTISING, E_PERSONAL_OFFER = ICVAR_OFFS_PERSONAL_OFFER,
Теперь наше перечисление со смещениями, выглядит так
enum eCvarOffsets : DWORD64 { E_IDLECHECK = ICVAR_OFFS_IDLECHECK, E_LOBBYAFK = ICVAR_OFFS_LOBBYAFK, E_INGAMEAFK = ICVAR_OFFS_INGAMEAFK, E_ADVERTISING_OFF = ICVAR_OFFS_ADVERTISING, E_PERSONAL_OFFER = ICVAR_OFFS_PERSONAL_OFFER, E_GAMETYPE = ICVAR_OFFS_GAMETYPE, };
Наш класс IGameFramework
class IGameFramework { public: bool GetClientActor(IActor** pActor) { return VirtualF<bool(__thiscall*)(PVOID, IActor**)>(this, IGAMEFRAMEWORK_GETCLIENTACTOR)(this, pActor); } static IGameFramework* Base() { return *(IGameFramework**)IGAMEFRAMEWORK_ADDR; } };
Наш класс ICvar
class ICvar { public: template <class T> inline void SetValue(DWORD64 Offset, T Value){*(T*)((DWORD64)this + Offset) = Value;} template <class T> inline T GetValue(DWORD64 Offset) { return *(T*)((DWORD64)this + Offset); } static ICvar* Base() { return *(ICvar**)ICVAR_ADDR; } };
Пишем функцию, для отключения рекламы и персональных предложений
void NoAdvertisingAndOffers() { IGameFramework* pGameFramework = IGameFramework::Base(); if (!pGameFramework) return; ICvar* pCvar = ICvar::Base(); if (!pCvar) return; IActor* pActor = nullptr; if (pGameFramework->GetClientActor(&pActor)) { pCvar->SetValue(eCvarOffsets::E_ADVERTISING_OFF, FALSE); pCvar->SetValue(eCvarOffsets::E_PERSONAL_OFFER, FALSE); } }
Если вам что-то не понятно, не стесняйтесь задавать свои вопросы в ЛС Discord или ниже в комментариях.
-
2
0 Комментариев
Рекомендуемые комментарии
Комментариев нет