Начинающий
- Статус
- Оффлайн
- Регистрация
- 27 Окт 2024
- Сообщения
- 57
- Реакции
- 2
nosmoke.cpp:
void Run() {
if (!Hooks::g_bNoSmokeEnabled.load()) return;
__try {
uintptr_t clientBase = Memory::GetModuleBase("client.dll");
if (!clientBase) return;
uintptr_t entityList = 0;
if (!Memory::SafeRead(clientBase + cs2_dumper::offsets::client_dll::dwEntityList, entityList) ||
!Memory::IsValidPtr(entityList)) return;
for (int i = Constants::EntityList::MAX_PLAYERS + 1; i < Constants::EntityList::MAX_ENTITIES; i++) {
uintptr_t listEntry = 0;
if (!Memory::SafeRead(entityList + Constants::EntityList::OFFSET_BASE +
sizeof(uintptr_t) * (i >> Constants::EntityList::ENTRY_SHIFT), listEntry) ||
!Memory::IsValidPtr(listEntry)) continue;
uintptr_t entity = 0;
if (!Memory::SafeRead(listEntry + Constants::EntityList::ENTRY_SIZE * (i & Constants::EntityList::INDEX_MASK),
entity) || !Memory::IsValidPtr(entity)) continue;
uintptr_t entityIdentity = 0;
if (!Memory::SafeRead(entity + Constants::Offsets::ENTITY_IDENTITY, entityIdentity) ||
!Memory::IsValidPtr(entityIdentity)) continue;
uintptr_t pDesignerName = 0;
if (!Memory::SafeRead(entityIdentity + Constants::Offsets::DESIGNER_NAME_PTR, pDesignerName) ||
!Memory::IsValidPtr(pDesignerName)) continue;
char name[64] = { 0 };
if (SafeReadString(pDesignerName, name, sizeof(name))) {
if (strstr(name, "smokegrenade") || strstr(name, "Smoke")) {
Memory::SafeWrite<float>(
entity + cs2_dumper::schemas::client_dll::C_SmokeGrenadeProjectile::m_nSmokeEffectTickBegin,
0.0f
);
}
}
}
} __except (EXCEPTION_EXECUTE_HANDLER) {
}
}