GUI now draws above everything including casual screen & loading fix #79
This commit is contained in:
parent
d4ab73c7d7
commit
1c724d96bf
@ -44,7 +44,6 @@ void PaintTraverse_hook(void* p, unsigned int vp, bool fr, bool ar) {
|
||||
g_ISurface->SetCursorAlwaysVisible(vis);
|
||||
}
|
||||
|
||||
|
||||
if (call_default) SAFE_CALL(((PaintTraverse_t*)hooks::hkPanel->GetMethod(hooks::offPaintTraverse))(p, vp, fr, ar));
|
||||
// To avoid threading problems.
|
||||
|
||||
@ -75,6 +74,7 @@ void PaintTraverse_hook(void* p, unsigned int vp, bool fr, bool ar) {
|
||||
ResetStrings();
|
||||
|
||||
if (vp != panel_focus) return;
|
||||
g_IPanel->SetTopmostPopup(panel_focus, true);
|
||||
if (!draw_flag) return;
|
||||
draw_flag = false;
|
||||
|
||||
|
@ -22,10 +22,10 @@ void NetVars::Init() {
|
||||
this->movetype = gNetvars.get_offset("DT_BaseEntity", "movetype");
|
||||
this->m_Collision = gNetvars.get_offset("DT_BaseEntity", "m_Collision");
|
||||
if (TF2) {
|
||||
res_m_iTeam = gNetvars.get_offset("DT_TFPlayerResource", "baseclass", "m_iTeam");
|
||||
res_iTeam = gNetvars.get_offset("DT_TFPlayerResource", "baseclass", "m_iTeam");
|
||||
this->res_iMaxBuffedHealth = gNetvars.get_offset("DT_TFPlayerResource", "m_iMaxBuffedHealth");
|
||||
m_angEyeAngles = gNetvars.get_offset("DT_TFPlayer", "tfnonlocaldata", "m_angEyeAngles[0]");
|
||||
this->bGlowEnabled = gNetvars.get_offset("DT_TFPlayer", "m_bGlowEnabled");
|
||||
this->iMaxBuffedHealth = gNetvars.get_offset("DT_TFPlayerResource", "m_iMaxBuffedHealth");
|
||||
//this->iDecapitations = gNetvars.get_offset("DT_TFPlayer", "m_Shared", "m_iDecapitations");
|
||||
//this->flReloadPriorNextFire = gNetvars.get_offset("DT_TFWeaponBase", "LocalActiveTFWeaponData", "m_flReloadPriorNextFire");
|
||||
//this->flObservedCritChance = gNetvars.get_offset("DT_TFWeaponBase", "LocalActiveTFWeaponData", "m_flObservedCritChance");
|
||||
@ -38,6 +38,8 @@ void NetVars::Init() {
|
||||
this->m_flStealthNoAttackExpire = gNetvars.get_offset("DT_TFPlayer", "m_Shared", "tfsharedlocaldata", "m_flStealthNoAttackExpire");
|
||||
}
|
||||
if (TF2 || TF2C) {
|
||||
this->res_iMaxHealth = gNetvars.get_offset("DT_TFPlayerResource", "m_iMaxHealth");
|
||||
this->res_iPlayerClass = gNetvars.get_offset("DT_TFPlayerResource", "m_iPlayerClass");
|
||||
this->m_bReadyToBackstab = gNetvars.get_offset("DT_TFWeaponKnife", "m_bReadyToBackstab");
|
||||
this->m_bDucked = gNetvars.get_offset("DT_TFPlayer", "localdata", "m_Local", "m_bDucked");
|
||||
this->m_flDuckTimer = gNetvars.get_offset("DT_TFPlayer", "m_Shared", "m_flDuckTimer");
|
||||
@ -52,13 +54,11 @@ void NetVars::Init() {
|
||||
this->iBuildingHealth = gNetvars.get_offset("DT_BaseObject", "m_iHealth");
|
||||
this->iBuildingMaxHealth = gNetvars.get_offset("DT_BaseObject", "m_iMaxHealth");
|
||||
this->iReloadMode = gNetvars.get_offset("DT_TFWeaponBase", "m_iReloadMode");
|
||||
this->iMaxHealth = gNetvars.get_offset("DT_TFPlayerResource", "m_iMaxHealth");
|
||||
this->Rocket_iDeflected = gNetvars.get_offset("DT_TFBaseRocket", "m_iDeflected");
|
||||
this->Grenade_iDeflected = gNetvars.get_offset("DT_TFWeaponBaseGrenadeProj", "m_iDeflected");
|
||||
this->nForceTauntCam = gNetvars.get_offset("DT_TFPlayer", "m_nForceTauntCam");
|
||||
this->Rocket_bCritical = gNetvars.get_offset("DT_TFProjectile_Rocket", "m_bCritical");
|
||||
this->Grenade_bCritical = gNetvars.get_offset("DT_TFWeaponBaseGrenadeProj", "m_bCritical");
|
||||
this->iPlayerClass = gNetvars.get_offset("DT_TFPlayerResource", "m_iPlayerClass");
|
||||
this->angEyeAngles = gNetvars.get_offset("DT_TFPlayer", "tfnonlocaldata", "m_angEyeAngles[0]");
|
||||
this->iWeaponState = gNetvars.get_offset("DT_WeaponMinigun", "m_iWeaponState");
|
||||
this->flChargeLevel = gNetvars.get_offset("DT_WeaponMedigun", "NonLocalTFWeaponMedigunData", "m_flChargeLevel");
|
||||
|
@ -8,41 +8,47 @@
|
||||
#include "common.h"
|
||||
|
||||
void TFPlayerResource::Update() {
|
||||
m_pEntity = 0;
|
||||
entity = 0;
|
||||
for (int i = 0; i < HIGHEST_ENTITY; i++) {
|
||||
CachedEntity* ent = ENTITY(i);
|
||||
if (CE_GOOD(ent) && ent->m_iClassID == (TF ? g_pClassID->CTFPlayerResource : g_pClassID->CPlayerResource)) {
|
||||
m_pEntity = ent;
|
||||
IClientEntity* ent = g_IEntityList->GetClientEntity(i);
|
||||
if (ent && ent->GetClientClass()->m_ClassID == (TF ? g_pClassID->CTFPlayerResource : g_pClassID->CPlayerResource)) {
|
||||
entity = i;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int TFPlayerResource::GetMaxHealth(CachedEntity* player) {
|
||||
if (!m_pEntity) return 0;
|
||||
if (HL2DM) return 100;
|
||||
IClientEntity* ent = g_IEntityList->GetClientEntity(entity);
|
||||
if (!ent || ent->GetClientClass()->m_ClassID != (TF ? g_pClassID->CTFPlayerResource : g_pClassID->CPlayerResource)) return 0;
|
||||
int idx = player->m_IDX;
|
||||
if (idx >= 64 || idx < 0) return 0;
|
||||
return *(int*)((unsigned int)RAW_ENT(m_pEntity) + netvar.iMaxHealth + 4 * idx);
|
||||
return *(int*)((unsigned)ent + netvar.iMaxHealth + 4 * idx);
|
||||
}
|
||||
|
||||
int TFPlayerResource::GetMaxBuffedHealth(CachedEntity* player) {
|
||||
if (!TF2) return GetMaxHealth(player);
|
||||
if (!m_pEntity) return 0;
|
||||
IClientEntity* ent = g_IEntityList->GetClientEntity(entity);
|
||||
if (!ent || ent->GetClientClass()->m_ClassID != (TF ? g_pClassID->CTFPlayerResource : g_pClassID->CPlayerResource)) return 0;
|
||||
int idx = player->m_IDX;
|
||||
if (idx >= 64 || idx < 0) return 0;
|
||||
return *(int*)((unsigned int)RAW_ENT(m_pEntity) + netvar.iMaxBuffedHealth + 4 * idx);
|
||||
return *(int*)((unsigned)ent + netvar.iMaxBuffedHealth + 4 * idx);
|
||||
}
|
||||
|
||||
int TFPlayerResource::GetTeam(int idx) {
|
||||
if (idx >= 64 || idx < 0) return 0;
|
||||
return *(int*)((unsigned int)RAW_ENT(m_pEntity) + netvar.res_m_iTeam + 4 * idx);
|
||||
IClientEntity* ent = g_IEntityList->GetClientEntity(entity);
|
||||
if (!ent || ent->GetClientClass()->m_ClassID != (TF ? g_pClassID->CTFPlayerResource : g_pClassID->CPlayerResource)) return 0;
|
||||
return *(int*)((unsigned)ent + netvar.res_m_iTeam + 4 * idx);
|
||||
}
|
||||
|
||||
int TFPlayerResource::GetClass(CachedEntity* player) {
|
||||
if (CE_BAD(m_pEntity)) return 0;
|
||||
IClientEntity* ent = g_IEntityList->GetClientEntity(entity);
|
||||
if (!ent || ent->GetClientClass()->m_ClassID != (TF ? g_pClassID->CTFPlayerResource : g_pClassID->CPlayerResource)) return 0;
|
||||
int idx = player->m_IDX;
|
||||
if (idx >= 64 || idx < 0) return 0;
|
||||
return *(int*)((unsigned int)RAW_ENT(m_pEntity) + netvar.iPlayerClass + 4 * idx);
|
||||
return *(int*)((unsigned)ent + netvar.iPlayerClass + 4 * idx);
|
||||
}
|
||||
|
||||
|
||||
|
@ -18,7 +18,7 @@ public:
|
||||
int GetClass(CachedEntity* player);
|
||||
int GetTeam(int idx);
|
||||
|
||||
CachedEntity* m_pEntity;
|
||||
int entity;
|
||||
};
|
||||
|
||||
extern TFPlayerResource* g_pPlayerResource;
|
||||
|
Reference in New Issue
Block a user