GUI now draws above everything including casual screen & loading fix #79

This commit is contained in:
nullifiedcat 2017-04-28 15:37:58 +03:00
parent d4ab73c7d7
commit 1c724d96bf
4 changed files with 23 additions and 17 deletions

View File

@ -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;

View File

@ -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");

View File

@ -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);
}

View File

@ -18,7 +18,7 @@ public:
int GetClass(CachedEntity* player);
int GetTeam(int idx);
CachedEntity* m_pEntity;
int entity;
};
extern TFPlayerResource* g_pPlayerResource;