Вопрос GetBaseEntity(), GetEntityIndex(), CGameEntitySystem "EntityList"?

Начинающий
Статус
Оффлайн
Регистрация
3 Фев 2020
Сообщения
24
Реакции[?]
0
Поинты[?]
0
Всем привет, я смог получить entitySystem = gameServiceClient->pGameEntitySystem; но не знаю как получить доступ к методам GetBaseEntity, GetEntityIndex, для последующей итерации по "EntityList"у, могу ли я найти эти функции в vmt CGameEntitySystem? Или как то по другому?
 
Начинающий
Статус
Оффлайн
Регистрация
2 Сен 2023
Сообщения
26
Реакции[?]
3
Поинты[?]
3K
C++:
class CGameEntitySystem
{
public:
    /// GetClientEntity
    template <typename T = C_BaseEntity>
    T* Get(int nIndex)
    {
        return reinterpret_cast<T*>(this->GetEntityByIndex(nIndex));
    }

    /// GetClientEntityFromHandle
    template <typename T = C_BaseEntity>
    T* Get(const CBaseHandle hHandle)
    {
        if (!hHandle.IsValid())
            return nullptr;

        return reinterpret_cast<T*>(this->GetEntityByIndex(hHandle.GetEntryIndex()));
    }

    int GetHighestEntityIndex()
    {
        return *reinterpret_cast<int*>(reinterpret_cast<std ::uintptr_t>(this) + 0x1520);
    }

private:
    void* GetEntityByIndex(int nIndex)
    {
        //@ida: #STR: "(missing),", "(missing)", "Ent %3d: %s class %s name %s\n" | or find "cl_showents" cvar -> look for callback
        //    do { pEntity = GetBaseEntityByIndex(g_pGameEntitySystem, nCurrentIndex); ... }
        using fnGetBaseEntity = void*(CS_THISCALL*)(void*, int);
        static auto GetBaseEntity = reinterpret_cast<fnGetBaseEntity>(MEM::FindPattern(CLIENT_DLL, CS_XOR("81 FA ? ? ? ? 77 ? 8B C2 C1 F8 ? 83 F8 ? 77 ? 48 98 48 8B 4C C1 ? 48 85 C9 74 ? 8B C2 25 ? ? ? ? 48 6B C0 ? 48 03 C8 74 ? 8B 41 ? 25 ? ? ? ? 3B C2 75 ? 48 8B 01")));
        return GetBaseEntity(this, nIndex);
    }
 
Сверху Снизу