78 lines
2.3 KiB
C++
78 lines
2.3 KiB
C++
|
|
/*
|
|
*
|
|
* This is the modules player resource area for getting things like Names,
|
|
*team, and etc.
|
|
*
|
|
*/
|
|
|
|
#include "../hacks/interfaces.hpp" // The games entitys
|
|
#include "classes.hpp" // Classnames
|
|
#include "netvars.hpp" // Netvar offsets
|
|
|
|
#include "playerresource.hpp"
|
|
|
|
namespace modules {
|
|
namespace csgo {
|
|
|
|
// Used to store our player resource ent. We dont use a entity pointer as that
|
|
// might become invalid
|
|
static int player_resource_ent = 0;
|
|
/*
|
|
// For finding our player resource if we dont have it.
|
|
static bool GetPlayerResource() {
|
|
|
|
// Try to get our current player resource entity
|
|
IClientEntity* raw_entity =
|
|
g_IEntityList->GetClientEntity(player_resource_ent);
|
|
|
|
// Check if we have a player resource
|
|
if (raw_entity && !raw_entity->IsDormant() &&
|
|
raw_entity->GetClientClass()->m_ClassID == classes::CPlayerResource) return
|
|
true;
|
|
|
|
// If we dont already have our player resource, we need to find it.
|
|
player_resource_ent = 0;
|
|
for (const auto& entity : g_CatEntitys) {
|
|
raw_entity = g_IEntityList->GetClientEntity(entity.IDX);
|
|
if (!raw_entity || raw_entity->GetClientClass()->m_ClassID !=
|
|
classes::CPlayerResource) continue; player_resource_ent = entity.IDX; return
|
|
true;
|
|
}
|
|
|
|
// We dont have our resource...
|
|
return false;
|
|
}
|
|
|
|
// This is tf2 only stuff
|
|
#if defined(CATHOOK_TF2)
|
|
int GetMaxHealth(const CatEntity& player) {
|
|
|
|
if (CE_BAD(player) || !GetPlayerResource()) return 0;
|
|
if (player.IDX >= 64 || player.IDX < 0) return 0;
|
|
|
|
IClientEntity* raw_player = g_IEntityList->GetClientEntity(player.IDX);
|
|
if (!raw_player || raw_player->IsDormant()) return 0;
|
|
|
|
return
|
|
*(int*)((uintptr_t)g_IEntityList->GetClientEntity(player_resource_ent) +
|
|
netvars::res_iMaxHealth + 4 * player.IDX);
|
|
}
|
|
|
|
int GetClass(const CatEntity& player) {
|
|
|
|
if (CE_BAD(player) || !GetPlayerResource()) return 0;
|
|
if (player.IDX >= 64 || player.IDX < 0) return 0;
|
|
|
|
IClientEntity* raw_player = g_IEntityList->GetClientEntity(player.IDX);
|
|
if (!raw_player || raw_player->IsDormant()) return 0;
|
|
|
|
return
|
|
*(int*)((uintptr_t)g_IEntityList->GetClientEntity(player_resource_ent) +
|
|
netvars::res_iPlayerClass + 4 * player.IDX);
|
|
}
|
|
#endif
|
|
*/
|
|
} // namespace csgo
|
|
} // namespace modules
|