diff --git a/Amalgam/src/Features/Aimbot/AimbotGlobal/AimbotGlobal.cpp b/Amalgam/src/Features/Aimbot/AimbotGlobal/AimbotGlobal.cpp index 62335d39..6e10a4e9 100644 --- a/Amalgam/src/Features/Aimbot/AimbotGlobal/AimbotGlobal.cpp +++ b/Amalgam/src/Features/Aimbot/AimbotGlobal/AimbotGlobal.cpp @@ -55,62 +55,27 @@ bool CAimbotGlobal::PlayerBoneInFOV(CTFPlayer* pTarget, Vec3 vLocalPos, Vec3 vLo bool CAimbotGlobal::IsHitboxValid(CBaseEntity* pEntity, int nHitbox, int iHitboxes) { - switch (H::Entities.GetModel(pEntity->entindex())) + switch (pEntity->GetHitboxToBase(nHitbox)) { - case FNV1A::Hash32Const("models/vsh/player/saxton_hale.mdl"): - case FNV1A::Hash32Const("models/vsh/player/hell_hale.mdl"): - case FNV1A::Hash32Const("models/vsh/player/santa_hale.mdl"): - { - switch (nHitbox) - { - case -1: return true; - case HITBOX_SAXTON_HEAD: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Head; - case HITBOX_SAXTON_BODY: - case HITBOX_SAXTON_THORAX: - case HITBOX_SAXTON_CHEST: - case HITBOX_SAXTON_UPPER_CHEST: - case HITBOX_SAXTON_NECK: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Body; - case HITBOX_SAXTON_PELVIS: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Pelvis; - case HITBOX_SAXTON_LEFT_UPPER_ARM: - case HITBOX_SAXTON_LEFT_FOREARM: - case HITBOX_SAXTON_LEFT_HAND: - case HITBOX_SAXTON_RIGHT_UPPER_ARM: - case HITBOX_SAXTON_RIGHT_FOREARM: - case HITBOX_SAXTON_RIGHT_HAND: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Arms; - case HITBOX_SAXTON_LEFT_THIGH: - case HITBOX_SAXTON_LEFT_CALF: - case HITBOX_SAXTON_LEFT_FOOT: - case HITBOX_SAXTON_RIGHT_THIGH: - case HITBOX_SAXTON_RIGHT_CALF: - case HITBOX_SAXTON_RIGHT_FOOT: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Legs; - } - break; - } - default: - { - switch (nHitbox) - { - case -1: return true; - case HITBOX_HEAD: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Head; - case HITBOX_BODY: - case HITBOX_THORAX: - case HITBOX_CHEST: - case HITBOX_UPPER_CHEST: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Body; - case HITBOX_PELVIS: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Pelvis; - case HITBOX_LEFT_UPPER_ARM: - case HITBOX_LEFT_FOREARM: - case HITBOX_LEFT_HAND: - case HITBOX_RIGHT_UPPER_ARM: - case HITBOX_RIGHT_FOREARM: - case HITBOX_RIGHT_HAND: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Arms; - case HITBOX_LEFT_THIGH: - case HITBOX_LEFT_CALF: - case HITBOX_LEFT_FOOT: - case HITBOX_RIGHT_THIGH: - case HITBOX_RIGHT_CALF: - case HITBOX_RIGHT_FOOT: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Legs; - } - } + case -1: return true; + case HITBOX_HEAD: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Head; + case HITBOX_SPINE0: + case HITBOX_SPINE1: + case HITBOX_SPINE2: + case HITBOX_SPINE3: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Body; + case HITBOX_PELVIS: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Pelvis; + case HITBOX_LEFT_UPPERARM: + case HITBOX_LEFT_FOREARM: + case HITBOX_LEFT_HAND: + case HITBOX_RIGHT_UPPERARM: + case HITBOX_RIGHT_FOREARM: + case HITBOX_RIGHT_HAND: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Arms; + case HITBOX_LEFT_THIGH: + case HITBOX_LEFT_CALF: + case HITBOX_LEFT_FOOT: + case HITBOX_RIGHT_THIGH: + case HITBOX_RIGHT_CALF: + case HITBOX_RIGHT_FOOT: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Legs; } return false; @@ -136,60 +101,26 @@ bool CAimbotGlobal::ShouldMultipoint(CBaseEntity* pEntity, int nHitbox, int iHit if (!iHitboxes) return true; - switch (H::Entities.GetModel(pEntity->entindex())) + switch (pEntity->GetHitboxToBase(nHitbox)) { - case FNV1A::Hash32Const("models/vsh/player/saxton_hale.mdl"): - case FNV1A::Hash32Const("models/vsh/player/hell_hale.mdl"): - case FNV1A::Hash32Const("models/vsh/player/santa_hale.mdl"): - { - switch (nHitbox) - { - case HITBOX_SAXTON_HEAD: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Head; - case HITBOX_SAXTON_BODY: - case HITBOX_SAXTON_THORAX: - case HITBOX_SAXTON_CHEST: - case HITBOX_SAXTON_UPPER_CHEST: - case HITBOX_SAXTON_NECK: - case HITBOX_SAXTON_PELVIS: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Body; - case HITBOX_SAXTON_LEFT_UPPER_ARM: - case HITBOX_SAXTON_LEFT_FOREARM: - case HITBOX_SAXTON_LEFT_HAND: - case HITBOX_SAXTON_RIGHT_UPPER_ARM: - case HITBOX_SAXTON_RIGHT_FOREARM: - case HITBOX_SAXTON_RIGHT_HAND: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Arms; - case HITBOX_SAXTON_LEFT_THIGH: - case HITBOX_SAXTON_LEFT_CALF: - case HITBOX_SAXTON_LEFT_FOOT: - case HITBOX_SAXTON_RIGHT_THIGH: - case HITBOX_SAXTON_RIGHT_CALF: - case HITBOX_SAXTON_RIGHT_FOOT: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Legs; - } - break; - } - default: - { - switch (nHitbox) - { - case HITBOX_HEAD: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Head; - case HITBOX_BODY: - case HITBOX_THORAX: - case HITBOX_CHEST: - case HITBOX_UPPER_CHEST: - case HITBOX_PELVIS: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Body; - case HITBOX_LEFT_UPPER_ARM: - case HITBOX_LEFT_FOREARM: - case HITBOX_LEFT_HAND: - case HITBOX_RIGHT_UPPER_ARM: - case HITBOX_RIGHT_FOREARM: - case HITBOX_RIGHT_HAND: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Arms; - case HITBOX_LEFT_THIGH: - case HITBOX_LEFT_CALF: - case HITBOX_LEFT_FOOT: - case HITBOX_RIGHT_THIGH: - case HITBOX_RIGHT_CALF: - case HITBOX_RIGHT_FOOT: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Legs; - } - } + case HITBOX_HEAD: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Head; + case HITBOX_SPINE0: + case HITBOX_SPINE1: + case HITBOX_SPINE2: + case HITBOX_SPINE3: + case HITBOX_PELVIS: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Body; + case HITBOX_LEFT_UPPERARM: + case HITBOX_LEFT_FOREARM: + case HITBOX_LEFT_HAND: + case HITBOX_RIGHT_UPPERARM: + case HITBOX_RIGHT_FOREARM: + case HITBOX_RIGHT_HAND: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Arms; + case HITBOX_LEFT_THIGH: + case HITBOX_LEFT_CALF: + case HITBOX_LEFT_FOOT: + case HITBOX_RIGHT_THIGH: + case HITBOX_RIGHT_CALF: + case HITBOX_RIGHT_FOOT: return iHitboxes & Vars::Aimbot::Hitscan::HitboxesEnum::Legs; } return false; diff --git a/Amalgam/src/Features/Aimbot/AimbotHitscan/AimbotHitscan.cpp b/Amalgam/src/Features/Aimbot/AimbotHitscan/AimbotHitscan.cpp index 0112ab73..0891fee9 100644 --- a/Amalgam/src/Features/Aimbot/AimbotHitscan/AimbotHitscan.cpp +++ b/Amalgam/src/Features/Aimbot/AimbotHitscan/AimbotHitscan.cpp @@ -231,36 +231,14 @@ int CAimbotHitscan::GetHitboxPriority(int nHitbox, CTFPlayer* pLocal, CTFWeaponB int iMiscPriority = bHeadOnly ? -1 : 2; int iLimbPriority = bHeadOnly ? -1 : 3; - switch (H::Entities.GetModel(pTarget->entindex())) + switch (pTarget->GetHitboxToBase(nHitbox)) { - case FNV1A::Hash32Const("models/vsh/player/saxton_hale.mdl"): - case FNV1A::Hash32Const("models/vsh/player/hell_hale.mdl"): - case FNV1A::Hash32Const("models/vsh/player/santa_hale.mdl"): - { - switch (nHitbox) - { - case HITBOX_SAXTON_HEAD: return iHeadPriority; - case HITBOX_SAXTON_BODY: - case HITBOX_SAXTON_THORAX: - case HITBOX_SAXTON_CHEST: - case HITBOX_SAXTON_UPPER_CHEST: return iBodyPriority; - case HITBOX_SAXTON_NECK: - case HITBOX_SAXTON_PELVIS: return iMiscPriority; - } - break; - } - default: - { - switch (nHitbox) - { - case HITBOX_HEAD: return iHeadPriority; - case HITBOX_BODY: - case HITBOX_THORAX: - case HITBOX_CHEST: - case HITBOX_UPPER_CHEST: return iBodyPriority; - case HITBOX_PELVIS: return iMiscPriority; - } - } + case HITBOX_HEAD: return iHeadPriority; + case HITBOX_SPINE0: + case HITBOX_SPINE1: + case HITBOX_SPINE2: + case HITBOX_SPINE3: return iBodyPriority; + case HITBOX_PELVIS: return iMiscPriority; } return iLimbPriority; diff --git a/Amalgam/src/Features/Aimbot/AimbotProjectile/AimbotProjectile.cpp b/Amalgam/src/Features/Aimbot/AimbotProjectile/AimbotProjectile.cpp index e32c8dab..905347ac 100644 --- a/Amalgam/src/Features/Aimbot/AimbotProjectile/AimbotProjectile.cpp +++ b/Amalgam/src/Features/Aimbot/AimbotProjectile/AimbotProjectile.cpp @@ -3,6 +3,7 @@ #include "../Aimbot.h" #include "../../Simulation/MovementSimulation/MovementSimulation.h" #include "../../Simulation/ProjectileSimulation/ProjectileSimulation.h" +#include "../../EnginePrediction/EnginePrediction.h" #include "../../Ticks/Ticks.h" #include "../../Visuals/Visuals.h" #include "../AutoAirblast/AutoAirblast.h" @@ -1185,8 +1186,10 @@ bool CAimbotProjectile::TestAngle(CTFPlayer* pLocal, CTFWeaponBase* pWeapon, Tar } bool bDidHit = false, bPrimeTime = false; - const Vec3 vOriginal = tTarget.m_pEntity->GetAbsOrigin(); + const RestoreInfo_t tOriginal = { tTarget.m_pEntity->GetAbsOrigin(), tTarget.m_pEntity->m_vecMins(), tTarget.m_pEntity->m_vecMaxs() }; tTarget.m_pEntity->SetAbsOrigin(tTarget.m_vPos); + tTarget.m_pEntity->m_vecMins() = { -24, -24, tTarget.m_pEntity->m_vecMins().z }; + tTarget.m_pEntity->m_vecMaxs() = { 24, 24, tTarget.m_pEntity->m_vecMaxs().z }; for (int n = 1; n <= iSimTime; n++) { Vec3 vOld = F::ProjSim.GetOrigin(); @@ -1305,7 +1308,7 @@ bool CAimbotProjectile::TestAngle(CTFPlayer* pLocal, CTFWeaponBase* pWeapon, Tar if (!aBones) break; - Vec3 vOffset = vOriginal - tTarget.m_vPos; + Vec3 vOffset = tOriginal.m_vOrigin - tTarget.m_vPos; Vec3 vPos = trace.endpos + F::ProjSim.GetVelocity().Normalized() * 16 + vOffset; float flClosest = 0.f; int iClosest = -1; @@ -1344,7 +1347,9 @@ bool CAimbotProjectile::TestAngle(CTFPlayer* pLocal, CTFWeaponBase* pWeapon, Tar break; } } - tTarget.m_pEntity->SetAbsOrigin(vOriginal); + tTarget.m_pEntity->SetAbsOrigin(tOriginal.m_vOrigin); + tTarget.m_pEntity->m_vecMins() = tOriginal.m_vMins; + tTarget.m_pEntity->m_vecMaxs() = tOriginal.m_vMaxs; if (bDidHit && pProjectilePath) { diff --git a/Amalgam/src/Features/CritHack/CritHack.cpp b/Amalgam/src/Features/CritHack/CritHack.cpp index 06c23543..cb881980 100644 --- a/Amalgam/src/Features/CritHack/CritHack.cpp +++ b/Amalgam/src/Features/CritHack/CritHack.cpp @@ -433,7 +433,7 @@ void CCritHack::Event(IGameEvent* pEvent, uint32_t uHash, CTFPlayer* pLocal) auto pVictim = I::ClientEntityList->GetClientEntity(iVictim)->As(); if (!iHealth) - iDamage = std::min(iDamage, tHistory.m_iNewHealth); + iDamage = std::clamp(iDamage, 0, tHistory.m_iNewHealth); else if (pVictim && (pVictim->m_bFeignDeathReady() || pVictim->InCond(TF_COND_FEIGN_DEATH))) // damage number is spoofed upon sending, correct it { int iOldHealth = (tHistory.m_mHistory.contains(iHealth) ? tHistory.m_mHistory[iHealth].m_iOldHealth : tHistory.m_iNewHealth) % 32768; @@ -467,6 +467,10 @@ void CCritHack::Event(IGameEvent* pEvent, uint32_t uHash, CTFPlayer* pLocal) return; } } + + const int iInsanePlayerDamage = pGameRules->m_bPlayingMannVsMachine() ? 5000 : 1500; + if (iDamage > iInsanePlayerDamage) + return; } //m_flLastDamageTime = I::GlobalVars->curtime; @@ -665,16 +669,16 @@ void CCritHack::Draw(CTFPlayer* pLocal) { if (auto pPlayerStats = S::CTFGameStats_FindPlayerStats.Call(s_pCTFGameStats, pPlayer2)) { - int iRangedDamage = pPlayerStats->statsCurrentRound.m_iStat[TFSTAT_DAMAGE_RANGED] /*= m_iRangedDamage*/; - int iCritDamage = pPlayerStats->statsCurrentRound.m_iStat[TFSTAT_DAMAGE_RANGED_CRIT_RANDOM] /*= m_iCritDamage = 0*/; - int iDamage = pPlayerStats->statsCurrentRound.m_iStat[TFSTAT_DAMAGE] /*= m_iRangedDamage + m_iMeleeDamage*/; + int& iRangedDamage = pPlayerStats->statsCurrentRound.m_iStat[TFSTAT_DAMAGE_RANGED]; + int& iCritDamage = pPlayerStats->statsCurrentRound.m_iStat[TFSTAT_DAMAGE_RANGED_CRIT_RANDOM]; + int& iDamage = pPlayerStats->statsCurrentRound.m_iStat[TFSTAT_DAMAGE]; - H::Draw.StringOutlined(fFont, x, y += nTall, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, align, std::format( - "RangedDamage: {}, CritDamage: {}", iRangedDamage, iCritDamage - ).c_str()); - H::Draw.StringOutlined(fFont, x, y += nTall, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, align, std::format( - "AllDamage: {} ({})", iDamage, iDamage - iRangedDamage - ).c_str()); + //iRangedDamage = m_iRangedDamage; + //iCritDamage = m_iCritDamage = 0; + //iDamage = m_iRangedDamage + m_iMeleeDamage; + + H::Draw.StringOutlined(fFont, x, y += nTall, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, align, std::format("RangedDamage: {}, CritDamage: {}", iRangedDamage, iCritDamage).c_str()); + H::Draw.StringOutlined(fFont, x, y += nTall, Vars::Menu::Theme::Active.Value, Vars::Menu::Theme::Background.Value, align, std::format("AllDamage: {} ({})", iDamage, iDamage - iRangedDamage).c_str()); } } } diff --git a/Amalgam/src/Features/ImGui/Menu/Components.h b/Amalgam/src/Features/ImGui/Menu/Components.h index 41ad47fb..caa77ce2 100644 --- a/Amalgam/src/Features/ImGui/Menu/Components.h +++ b/Amalgam/src/Features/ImGui/Menu/Components.h @@ -2005,6 +2005,9 @@ namespace ImGui case VK_CONTROL: return "control"; case VK_LCONTROL: return "lcontrol"; case VK_RCONTROL: return "rcontrol"; + case VK_MENU: return "alt"; + case VK_LMENU: return "lalt"; + case VK_RMENU: return "ralt"; case VK_NUMPAD0: return "num0"; case VK_NUMPAD1: return "num1"; case VK_NUMPAD2: return "num2"; diff --git a/Amalgam/src/Features/Visuals/ESP/ESP.cpp b/Amalgam/src/Features/Visuals/ESP/ESP.cpp index e3803915..0ab86387 100644 --- a/Amalgam/src/Features/Visuals/ESP/ESP.cpp +++ b/Amalgam/src/Features/Visuals/ESP/ESP.cpp @@ -779,24 +779,27 @@ void CESP::DrawPlayers() matrix3x4 aBones[MAXSTUDIOBONES]; if (pPlayer->SetupBones(aBones, MAXSTUDIOBONES, BONE_USED_BY_ANYTHING, I::GlobalVars->curtime)) { - switch (H::Entities.GetModel(pPlayer->entindex())) - { - case FNV1A::Hash32Const("models/vsh/player/saxton_hale.mdl"): - case FNV1A::Hash32Const("models/vsh/player/hell_hale.mdl"): - case FNV1A::Hash32Const("models/vsh/player/santa_hale.mdl"): - DrawBones(pPlayer, aBones, { HITBOX_SAXTON_HEAD, HITBOX_SAXTON_CHEST, HITBOX_SAXTON_PELVIS }, tCache.m_tColor); - DrawBones(pPlayer, aBones, { HITBOX_SAXTON_CHEST, HITBOX_SAXTON_LEFT_UPPER_ARM, HITBOX_SAXTON_LEFT_FOREARM, HITBOX_SAXTON_LEFT_HAND }, tCache.m_tColor); - DrawBones(pPlayer, aBones, { HITBOX_SAXTON_CHEST, HITBOX_SAXTON_RIGHT_UPPER_ARM, HITBOX_SAXTON_RIGHT_FOREARM, HITBOX_SAXTON_RIGHT_HAND }, tCache.m_tColor); - DrawBones(pPlayer, aBones, { HITBOX_SAXTON_PELVIS, HITBOX_SAXTON_LEFT_THIGH, HITBOX_SAXTON_LEFT_CALF, HITBOX_SAXTON_LEFT_FOOT }, tCache.m_tColor); - DrawBones(pPlayer, aBones, { HITBOX_SAXTON_PELVIS, HITBOX_SAXTON_RIGHT_THIGH, HITBOX_SAXTON_RIGHT_CALF, HITBOX_SAXTON_RIGHT_FOOT }, tCache.m_tColor); - break; - default: - DrawBones(pPlayer, aBones, { HITBOX_HEAD, HITBOX_CHEST, HITBOX_PELVIS }, tCache.m_tColor); - DrawBones(pPlayer, aBones, { HITBOX_CHEST, HITBOX_LEFT_UPPER_ARM, HITBOX_LEFT_FOREARM, HITBOX_LEFT_HAND }, tCache.m_tColor); - DrawBones(pPlayer, aBones, { HITBOX_CHEST, HITBOX_RIGHT_UPPER_ARM, HITBOX_RIGHT_FOREARM, HITBOX_RIGHT_HAND }, tCache.m_tColor); - DrawBones(pPlayer, aBones, { HITBOX_PELVIS, HITBOX_LEFT_THIGH, HITBOX_LEFT_CALF, HITBOX_LEFT_FOOT }, tCache.m_tColor); - DrawBones(pPlayer, aBones, { HITBOX_PELVIS, HITBOX_RIGHT_THIGH, HITBOX_RIGHT_CALF, HITBOX_RIGHT_FOOT }, tCache.m_tColor); - } + int iHead = pPlayer->GetBaseToHitbox(HITBOX_HEAD); + int iSpine2 = pPlayer->GetBaseToHitbox(HITBOX_SPINE2); + int iPelvis = pPlayer->GetBaseToHitbox(HITBOX_PELVIS); + int iLeftUpperarm = pPlayer->GetBaseToHitbox(HITBOX_LEFT_UPPERARM); + int iLeftForearm = pPlayer->GetBaseToHitbox(HITBOX_LEFT_FOREARM); + int iLeftHand = pPlayer->GetBaseToHitbox(HITBOX_LEFT_HAND); + int iRightUpperarm = pPlayer->GetBaseToHitbox(HITBOX_RIGHT_UPPERARM); + int iRightForearm = pPlayer->GetBaseToHitbox(HITBOX_RIGHT_FOREARM); + int iRightHand = pPlayer->GetBaseToHitbox(HITBOX_RIGHT_HAND); + int iLeftThigh = pPlayer->GetBaseToHitbox(HITBOX_LEFT_THIGH); + int iLeftCalf = pPlayer->GetBaseToHitbox(HITBOX_LEFT_CALF); + int iLeftFoot = pPlayer->GetBaseToHitbox(HITBOX_LEFT_FOOT); + int iRightThigh = pPlayer->GetBaseToHitbox(HITBOX_RIGHT_THIGH); + int iRightCalf = pPlayer->GetBaseToHitbox(HITBOX_RIGHT_CALF); + int iRightFoot = pPlayer->GetBaseToHitbox(HITBOX_RIGHT_FOOT); + + DrawBones(pPlayer, aBones, { iHead, iSpine2, iPelvis }, tCache.m_tColor); + DrawBones(pPlayer, aBones, { iSpine2, iLeftUpperarm, iLeftForearm, iLeftHand }, tCache.m_tColor); + DrawBones(pPlayer, aBones, { iSpine2, iRightUpperarm, iRightForearm, iRightHand }, tCache.m_tColor); + DrawBones(pPlayer, aBones, { iPelvis, iLeftThigh, iLeftCalf, iLeftFoot }, tCache.m_tColor); + DrawBones(pPlayer, aBones, { iPelvis, iRightThigh, iRightCalf, iRightFoot }, tCache.m_tColor); } } diff --git a/Amalgam/src/SDK/Definitions/Definitions.h b/Amalgam/src/SDK/Definitions/Definitions.h index 3fa5e76f..f4e4f422 100644 --- a/Amalgam/src/SDK/Definitions/Definitions.h +++ b/Amalgam/src/SDK/Definitions/Definitions.h @@ -610,18 +610,18 @@ enum Collision_Group_t class CThreadMutex; typedef CThreadMutex CSourceMutex; -enum ETFHitboxes +enum EHitboxes { HITBOX_HEAD, HITBOX_PELVIS, - HITBOX_BODY, - HITBOX_THORAX, - HITBOX_CHEST, - HITBOX_UPPER_CHEST, - HITBOX_LEFT_UPPER_ARM, + HITBOX_SPINE0, + HITBOX_SPINE1, + HITBOX_SPINE2, + HITBOX_SPINE3, + HITBOX_LEFT_UPPERARM, HITBOX_LEFT_FOREARM, HITBOX_LEFT_HAND, - HITBOX_RIGHT_UPPER_ARM, + HITBOX_RIGHT_UPPERARM, HITBOX_RIGHT_FOREARM, HITBOX_RIGHT_HAND, HITBOX_LEFT_THIGH, @@ -647,16 +647,205 @@ enum ESaxtonHitboxes HITBOX_SAXTON_RIGHT_HAND, HITBOX_SAXTON_LEFT_FOREARM, HITBOX_SAXTON_RIGHT_FOREARM, - HITBOX_SAXTON_LEFT_UPPER_ARM, - HITBOX_SAXTON_RIGHT_UPPER_ARM, + HITBOX_SAXTON_LEFT_UPPERARM, + HITBOX_SAXTON_RIGHT_UPPERARM, HITBOX_SAXTON_PELVIS, - HITBOX_SAXTON_BODY, - HITBOX_SAXTON_THORAX, - HITBOX_SAXTON_CHEST, - HITBOX_SAXTON_UPPER_CHEST, + HITBOX_SAXTON_SPINE0, + HITBOX_SAXTON_SPINE1, + HITBOX_SAXTON_SPINE2, + HITBOX_SAXTON_SPINE3, HITBOX_SAXTON_MAX }; +#pragma region Zombie Infection +// these models are all terrible +// 1: scout, 2: soldier, 3: pyro, 4: demoman, 5: heavy, 6: engineer, 7: medic, 8: sniper, 9: spy +// reused where possible +// not adding garbage hitboxes that shouldn't exist + +enum EZombie128Hitboxes +{ + HITBOX_ZOMBIE128_PELVIS, + HITBOX_ZOMBIE128_SPINE0, + HITBOX_ZOMBIE128_SPINE1, + HITBOX_ZOMBIE128_SPINE2, + HITBOX_ZOMBIE128_SPINE3, + HITBOX_ZOMBIE128_NECK, + HITBOX_ZOMBIE128_HEAD, + HITBOX_ZOMBIE128_LEFT_COLLAR, + HITBOX_ZOMBIE128_RIGHT_COLLAR, + HITBOX_ZOMBIE128_LEFT_UPPERARM, + HITBOX_ZOMBIE128_RIGHT_UPPERARM, + HITBOX_ZOMBIE128_LEFT_FOREARM, + HITBOX_ZOMBIE128_RIGHT_FOREARM, + HITBOX_ZOMBIE128_LEFT_THIGH, + HITBOX_ZOMBIE128_RIGHT_THIGH, + HITBOX_ZOMBIE128_LEFT_CALF, + HITBOX_ZOMBIE128_RIGHT_CALF, + HITBOX_ZOMBIE128_LEFT_FOOT, + HITBOX_ZOMBIE128_RIGHT_FOOT, + HITBOX_ZOMBIE128_LEFT_HAND, + HITBOX_ZOMBIE128_RIGHT_HAND, + HITBOX_ZOMBIE128_MAX +}; + +enum EZombie3Hitboxes +{ + HITBOX_ZOMBIE3_PELVIS, + HITBOX_ZOMBIE3_SPINE0, + HITBOX_ZOMBIE3_SPINE1, + HITBOX_ZOMBIE3_SPINE2, + HITBOX_ZOMBIE3_SPINE3, + HITBOX_ZOMBIE3_NECK, + HITBOX_ZOMBIE3_HEAD, + HITBOX_ZOMBIE3_LEFT_COLLAR, + HITBOX_ZOMBIE3_LEFT_UPPERARM, + HITBOX_ZOMBIE3_LEFT_FOREARM, + HITBOX_ZOMBIE3_LEFT_HAND, + HITBOX_ZOMBIE3_RIGHT_COLLAR, + HITBOX_ZOMBIE3_RIGHT_UPPERARM, + HITBOX_ZOMBIE3_RIGHT_FOREARM, + HITBOX_ZOMBIE3_RIGHT_HAND, + HITBOX_ZOMBIE3_LEFT_THIGH, + HITBOX_ZOMBIE3_LEFT_CALF, + HITBOX_ZOMBIE3_LEFT_FOOT, + HITBOX_ZOMBIE3_RIGHT_THIGH = 19, + HITBOX_ZOMBIE3_RIGHT_CALF, + HITBOX_ZOMBIE3_RIGHT_FOOT, + HITBOX_ZOMBIE3_MAX +}; + +enum EZombie4Hitboxes +{ + HITBOX_ZOMBIE4_PELVIS, + HITBOX_ZOMBIE4_SPINE0, + HITBOX_ZOMBIE4_SPINE1, + HITBOX_ZOMBIE4_SPINE2, + HITBOX_ZOMBIE4_SPINE3, + HITBOX_ZOMBIE4_LEFT_COLLAR, + HITBOX_ZOMBIE4_LEFT_UPPERARM, + HITBOX_ZOMBIE4_RIGHT_COLLAR, + HITBOX_ZOMBIE4_RIGHT_UPPERARM, + HITBOX_ZOMBIE4_LEFT_THIGH, + HITBOX_ZOMBIE4_LEFT_CALF, + HITBOX_ZOMBIE4_RIGHT_THIGH, + HITBOX_ZOMBIE4_RIGHT_CALF, + HITBOX_ZOMBIE4_LEFT_FOREARM, + HITBOX_ZOMBIE4_RIGHT_FOREARM, + HITBOX_ZOMBIE4_NECK, + HITBOX_ZOMBIE4_HEAD, + HITBOX_ZOMBIE4_LEFT_HAND, + HITBOX_ZOMBIE4_RIGHT_HAND, + HITBOX_ZOMBIE4_LEFT_FOOT, + HITBOX_ZOMBIE4_RIGHT_FOOT, + HITBOX_ZOMBIE4_MAX +}; + +enum EZombie5Hitboxes +{ + HITBOX_ZOMBIE5_PELVIS, + HITBOX_ZOMBIE5_SPINE0, + HITBOX_ZOMBIE5_SPINE1, + HITBOX_ZOMBIE5_SPINE2, + HITBOX_ZOMBIE5_SPINE3, + HITBOX_ZOMBIE5_NECK, + HITBOX_ZOMBIE5_HEAD, + HITBOX_ZOMBIE5_LEFT_COLLAR, + HITBOX_ZOMBIE5_RIGHT_COLLAR, + HITBOX_ZOMBIE5_LEFT_UPPERARM, + HITBOX_ZOMBIE5_RIGHT_UPPERARM, + HITBOX_ZOMBIE5_LEFT_FOREARM, + HITBOX_ZOMBIE5_RIGHT_FOREARM, + HITBOX_ZOMBIE5_LEFT_THIGH, + HITBOX_ZOMBIE5_RIGHT_THIGH, + HITBOX_ZOMBIE5_LEFT_CALF, + HITBOX_ZOMBIE5_RIGHT_CALF, + HITBOX_ZOMBIE5_LEFT_HAND, + HITBOX_ZOMBIE5_RIGHT_HAND, + HITBOX_ZOMBIE5_LEFT_FOOT, + HITBOX_ZOMBIE5_RIGHT_FOOT, + HITBOX_ZOMBIE5_MAX +}; + +enum EZombie6Hitboxes +{ + HITBOX_ZOMBIE6_PELVIS, + HITBOX_ZOMBIE6_RIGHT_THIGH, + HITBOX_ZOMBIE6_RIGHT_CALF, + HITBOX_ZOMBIE6_SPINE0, + HITBOX_ZOMBIE6_SPINE1, + HITBOX_ZOMBIE6_SPINE2, + HITBOX_ZOMBIE6_SPINE3, + HITBOX_ZOMBIE6_NECK, + HITBOX_ZOMBIE6_HEAD, + HITBOX_ZOMBIE6_LEFT_THIGH, + HITBOX_ZOMBIE6_LEFT_CALF, + HITBOX_ZOMBIE6_LEFT_COLLAR, + HITBOX_ZOMBIE6_LEFT_UPPERARM, + HITBOX_ZOMBIE6_LEFT_FOREARM, + HITBOX_ZOMBIE6_RIGHT_COLLAR, + HITBOX_ZOMBIE6_RIGHT_UPPERARM, + HITBOX_ZOMBIE6_RIGHT_FOREARM, + HITBOX_ZOMBIE6_LEFT_FOOT, + HITBOX_ZOMBIE6_RIGHT_FOOT, + HITBOX_ZOMBIE6_RIGHT_HAND, + HITBOX_ZOMBIE6_LEFT_HAND, + HITBOX_ZOMBIE6_MAX +}; + +enum EZombie7Hitboxes +{ + HITBOX_ZOMBIE7_PELVIS, + HITBOX_ZOMBIE7_SPINE0, + HITBOX_ZOMBIE7_SPINE1, + HITBOX_ZOMBIE7_SPINE2, + HITBOX_ZOMBIE7_SPINE3, + HITBOX_ZOMBIE7_NECK, + HITBOX_ZOMBIE7_HEAD, + HITBOX_ZOMBIE7_LEFT_COLLAR, + HITBOX_ZOMBIE7_RIGHT_COLLAR, + HITBOX_ZOMBIE7_LEFT_UPPERARM, + HITBOX_ZOMBIE7_RIGHT_UPPERARM, + HITBOX_ZOMBIE7_LEFT_FOREARM, + HITBOX_ZOMBIE7_RIGHT_FOREARM, + HITBOX_ZOMBIE7_LEFT_THIGH, + HITBOX_ZOMBIE7_RIGHT_THIGH, + HITBOX_ZOMBIE7_LEFT_CALF, + HITBOX_ZOMBIE7_RIGHT_CALF, + HITBOX_ZOMBIE7_LEFT_HAND, + HITBOX_ZOMBIE7_RIGHT_HAND, + HITBOX_ZOMBIE7_LEFT_FOOT = 22, + HITBOX_ZOMBIE7_RIGHT_FOOT, + HITBOX_ZOMBIE7_MAX +}; + +enum EZombie9Hitboxes +{ + HITBOX_ZOMBIE9_PELVIS, + HITBOX_ZOMBIE9_SPINE0, + HITBOX_ZOMBIE9_SPINE1, + HITBOX_ZOMBIE9_SPINE2, + HITBOX_ZOMBIE9_SPINE3, + HITBOX_ZOMBIE9_NECK, + HITBOX_ZOMBIE9_HEAD, + HITBOX_ZOMBIE9_LEFT_COLLAR, + HITBOX_ZOMBIE9_RIGHT_COLLAR, + HITBOX_ZOMBIE9_LEFT_UPPERARM, + HITBOX_ZOMBIE9_RIGHT_UPPERARM, + HITBOX_ZOMBIE9_LEFT_FOREARM, + HITBOX_ZOMBIE9_RIGHT_FOREARM, + HITBOX_ZOMBIE9_LEFT_HAND, + HITBOX_ZOMBIE9_RIGHT_HAND, + HITBOX_ZOMBIE9_LEFT_THIGH, + HITBOX_ZOMBIE9_RIGHT_THIGH, + HITBOX_ZOMBIE9_LEFT_CALF, + HITBOX_ZOMBIE9_RIGHT_CALF, + HITBOX_ZOMBIE9_LEFT_FOOT, + HITBOX_ZOMBIE9_RIGHT_FOOT, + HITBOX_ZOMBIE9_MAX +}; +#pragma endregion + enum MinigunState_t { AC_STATE_IDLE = 0, diff --git a/Amalgam/src/SDK/Definitions/Main/CBaseEntity.cpp b/Amalgam/src/SDK/Definitions/Main/CBaseEntity.cpp index 42f16d09..87e08ed3 100644 --- a/Amalgam/src/SDK/Definitions/Main/CBaseEntity.cpp +++ b/Amalgam/src/SDK/Definitions/Main/CBaseEntity.cpp @@ -51,4 +51,422 @@ int CBaseEntity::SolidMask() return MASK_PLAYERSOLID; } return MASK_SOLID; -} \ No newline at end of file +} + +#pragma region Model hitboxes +// stupid, we shouldn't need to do this + +int CBaseEntity::GetHitboxToBase(int nHitbox) +{ + switch (H::Entities.GetModel(entindex())) + { + case FNV1A::Hash32Const("models/vsh/player/saxton_hale.mdl"): + case FNV1A::Hash32Const("models/vsh/player/hell_hale.mdl"): + case FNV1A::Hash32Const("models/vsh/player/santa_hale.mdl"): + switch (nHitbox) + { + case HITBOX_SAXTON_HEAD: return HITBOX_HEAD; + case HITBOX_SAXTON_SPINE0: return HITBOX_SPINE0; + case HITBOX_SAXTON_SPINE1: return HITBOX_SPINE1; + case HITBOX_SAXTON_SPINE2: return HITBOX_SPINE2; + case HITBOX_SAXTON_SPINE3: return HITBOX_SPINE3; + case HITBOX_SAXTON_NECK: + case HITBOX_SAXTON_PELVIS: return HITBOX_PELVIS; + case HITBOX_SAXTON_LEFT_UPPERARM: return HITBOX_LEFT_UPPERARM; + case HITBOX_SAXTON_LEFT_FOREARM: return HITBOX_LEFT_FOREARM; + case HITBOX_SAXTON_LEFT_HAND: return HITBOX_LEFT_HAND; + case HITBOX_SAXTON_RIGHT_UPPERARM: return HITBOX_RIGHT_UPPERARM; + case HITBOX_SAXTON_RIGHT_FOREARM: return HITBOX_RIGHT_FOREARM; + case HITBOX_SAXTON_RIGHT_HAND: return HITBOX_RIGHT_HAND; + case HITBOX_SAXTON_LEFT_THIGH: return HITBOX_LEFT_THIGH; + case HITBOX_SAXTON_LEFT_CALF: return HITBOX_LEFT_CALF; + case HITBOX_SAXTON_LEFT_FOOT: return HITBOX_LEFT_FOOT; + case HITBOX_SAXTON_RIGHT_THIGH: return HITBOX_RIGHT_THIGH; + case HITBOX_SAXTON_RIGHT_CALF: return HITBOX_RIGHT_CALF; + case HITBOX_SAXTON_RIGHT_FOOT: return HITBOX_RIGHT_FOOT; + } + break; + case FNV1A::Hash32Const("models/player/scout_infected.mdl"): + case FNV1A::Hash32Const("models/player/soldier_infected.mdl"): + case FNV1A::Hash32Const("models/player/sniper_infected.mdl"): + switch (nHitbox) + { + case HITBOX_ZOMBIE128_HEAD: return HITBOX_HEAD; + case HITBOX_ZOMBIE128_SPINE0: return HITBOX_SPINE0; + case HITBOX_ZOMBIE128_SPINE1: return HITBOX_SPINE1; + case HITBOX_ZOMBIE128_SPINE2: return HITBOX_SPINE2; + case HITBOX_ZOMBIE128_SPINE3: return HITBOX_SPINE3; + case HITBOX_ZOMBIE128_NECK: + case HITBOX_ZOMBIE128_PELVIS: return HITBOX_PELVIS; + case HITBOX_ZOMBIE128_LEFT_COLLAR: + case HITBOX_ZOMBIE128_LEFT_UPPERARM: return HITBOX_LEFT_UPPERARM; + case HITBOX_ZOMBIE128_LEFT_FOREARM: return HITBOX_LEFT_FOREARM; + case HITBOX_ZOMBIE128_LEFT_HAND: return HITBOX_LEFT_HAND; + case HITBOX_ZOMBIE128_RIGHT_COLLAR: + case HITBOX_ZOMBIE128_RIGHT_UPPERARM: return HITBOX_RIGHT_UPPERARM; + case HITBOX_ZOMBIE128_RIGHT_FOREARM: return HITBOX_RIGHT_FOREARM; + case HITBOX_ZOMBIE128_RIGHT_HAND: return HITBOX_RIGHT_HAND; + case HITBOX_ZOMBIE128_LEFT_THIGH: return HITBOX_LEFT_THIGH; + case HITBOX_ZOMBIE128_LEFT_CALF: return HITBOX_LEFT_CALF; + case HITBOX_ZOMBIE128_LEFT_FOOT: return HITBOX_LEFT_FOOT; + case HITBOX_ZOMBIE128_RIGHT_THIGH: return HITBOX_RIGHT_THIGH; + case HITBOX_ZOMBIE128_RIGHT_CALF: return HITBOX_RIGHT_CALF; + case HITBOX_ZOMBIE128_RIGHT_FOOT: return HITBOX_RIGHT_FOOT; + } + break; + case FNV1A::Hash32Const("models/player/pyro_infected.mdl"): + switch (nHitbox) + { + case HITBOX_ZOMBIE3_HEAD: return HITBOX_HEAD; + case HITBOX_ZOMBIE3_SPINE0: return HITBOX_SPINE0; + case HITBOX_ZOMBIE3_SPINE1: return HITBOX_SPINE1; + case HITBOX_ZOMBIE3_SPINE2: return HITBOX_SPINE2; + case HITBOX_ZOMBIE3_SPINE3: return HITBOX_SPINE3; + case HITBOX_ZOMBIE3_NECK: + case HITBOX_ZOMBIE3_PELVIS: return HITBOX_PELVIS; + case HITBOX_ZOMBIE3_LEFT_COLLAR: + case HITBOX_ZOMBIE3_LEFT_UPPERARM: return HITBOX_LEFT_UPPERARM; + case HITBOX_ZOMBIE3_LEFT_FOREARM: return HITBOX_LEFT_FOREARM; + case HITBOX_ZOMBIE3_LEFT_HAND: return HITBOX_LEFT_HAND; + case HITBOX_ZOMBIE3_RIGHT_COLLAR: + case HITBOX_ZOMBIE3_RIGHT_UPPERARM: return HITBOX_RIGHT_UPPERARM; + case HITBOX_ZOMBIE3_RIGHT_FOREARM: return HITBOX_RIGHT_FOREARM; + case HITBOX_ZOMBIE3_RIGHT_HAND: return HITBOX_RIGHT_HAND; + case HITBOX_ZOMBIE3_LEFT_THIGH: return HITBOX_LEFT_THIGH; + case HITBOX_ZOMBIE3_LEFT_CALF: return HITBOX_LEFT_CALF; + case HITBOX_ZOMBIE3_LEFT_FOOT: return HITBOX_LEFT_FOOT; + case HITBOX_ZOMBIE3_RIGHT_THIGH: return HITBOX_RIGHT_THIGH; + case HITBOX_ZOMBIE3_RIGHT_CALF: return HITBOX_RIGHT_CALF; + case HITBOX_ZOMBIE3_RIGHT_FOOT: return HITBOX_RIGHT_FOOT; + } + break; + case FNV1A::Hash32Const("models/player/demo_infected.mdl"): + switch (nHitbox) + { + case HITBOX_ZOMBIE4_HEAD: return HITBOX_HEAD; + case HITBOX_ZOMBIE4_SPINE0: return HITBOX_SPINE0; + case HITBOX_ZOMBIE4_SPINE1: return HITBOX_SPINE1; + case HITBOX_ZOMBIE4_SPINE2: return HITBOX_SPINE2; + case HITBOX_ZOMBIE4_SPINE3: return HITBOX_SPINE3; + case HITBOX_ZOMBIE4_NECK: + case HITBOX_ZOMBIE4_PELVIS: return HITBOX_PELVIS; + case HITBOX_ZOMBIE4_LEFT_COLLAR: + case HITBOX_ZOMBIE4_LEFT_UPPERARM: return HITBOX_LEFT_UPPERARM; + case HITBOX_ZOMBIE4_LEFT_FOREARM: return HITBOX_LEFT_FOREARM; + case HITBOX_ZOMBIE4_LEFT_HAND: return HITBOX_LEFT_HAND; + case HITBOX_ZOMBIE4_RIGHT_COLLAR: + case HITBOX_ZOMBIE4_RIGHT_UPPERARM: return HITBOX_RIGHT_UPPERARM; + case HITBOX_ZOMBIE4_RIGHT_FOREARM: return HITBOX_RIGHT_FOREARM; + case HITBOX_ZOMBIE4_RIGHT_HAND: return HITBOX_RIGHT_HAND; + case HITBOX_ZOMBIE4_LEFT_THIGH: return HITBOX_LEFT_THIGH; + case HITBOX_ZOMBIE4_LEFT_CALF: return HITBOX_LEFT_CALF; + case HITBOX_ZOMBIE4_LEFT_FOOT: return HITBOX_LEFT_FOOT; + case HITBOX_ZOMBIE4_RIGHT_THIGH: return HITBOX_RIGHT_THIGH; + case HITBOX_ZOMBIE4_RIGHT_CALF: return HITBOX_RIGHT_CALF; + case HITBOX_ZOMBIE4_RIGHT_FOOT: return HITBOX_RIGHT_FOOT; + } + break; + case FNV1A::Hash32Const("models/player/heavy_infected.mdl"): + switch (nHitbox) + { + case HITBOX_ZOMBIE5_HEAD: return HITBOX_HEAD; + case HITBOX_ZOMBIE5_SPINE0: return HITBOX_SPINE0; + case HITBOX_ZOMBIE5_SPINE1: return HITBOX_SPINE1; + case HITBOX_ZOMBIE5_SPINE2: return HITBOX_SPINE2; + case HITBOX_ZOMBIE5_SPINE3: return HITBOX_SPINE3; + case HITBOX_ZOMBIE5_NECK: + case HITBOX_ZOMBIE5_PELVIS: return HITBOX_PELVIS; + case HITBOX_ZOMBIE5_LEFT_COLLAR: + case HITBOX_ZOMBIE5_LEFT_UPPERARM: return HITBOX_LEFT_UPPERARM; + case HITBOX_ZOMBIE5_LEFT_FOREARM: return HITBOX_LEFT_FOREARM; + case HITBOX_ZOMBIE5_LEFT_HAND: return HITBOX_LEFT_HAND; + case HITBOX_ZOMBIE5_RIGHT_COLLAR: + case HITBOX_ZOMBIE5_RIGHT_UPPERARM: return HITBOX_RIGHT_UPPERARM; + case HITBOX_ZOMBIE5_RIGHT_FOREARM: return HITBOX_RIGHT_FOREARM; + case HITBOX_ZOMBIE5_RIGHT_HAND: return HITBOX_RIGHT_HAND; + case HITBOX_ZOMBIE5_LEFT_THIGH: return HITBOX_LEFT_THIGH; + case HITBOX_ZOMBIE5_LEFT_CALF: return HITBOX_LEFT_CALF; + case HITBOX_ZOMBIE5_LEFT_FOOT: return HITBOX_LEFT_FOOT; + case HITBOX_ZOMBIE5_RIGHT_THIGH: return HITBOX_RIGHT_THIGH; + case HITBOX_ZOMBIE5_RIGHT_CALF: return HITBOX_RIGHT_CALF; + case HITBOX_ZOMBIE5_RIGHT_FOOT: return HITBOX_RIGHT_FOOT; + } + break; + case FNV1A::Hash32Const("models/player/engineer_infected.mdl"): + switch (nHitbox) + { + case HITBOX_ZOMBIE6_HEAD: return HITBOX_HEAD; + case HITBOX_ZOMBIE6_SPINE0: return HITBOX_SPINE0; + case HITBOX_ZOMBIE6_SPINE1: return HITBOX_SPINE1; + case HITBOX_ZOMBIE6_SPINE2: return HITBOX_SPINE2; + case HITBOX_ZOMBIE6_SPINE3: return HITBOX_SPINE3; + case HITBOX_ZOMBIE6_NECK: + case HITBOX_ZOMBIE6_PELVIS: return HITBOX_PELVIS; + case HITBOX_ZOMBIE6_LEFT_COLLAR: + case HITBOX_ZOMBIE6_LEFT_UPPERARM: return HITBOX_LEFT_UPPERARM; + case HITBOX_ZOMBIE6_LEFT_FOREARM: return HITBOX_LEFT_FOREARM; + case HITBOX_ZOMBIE6_LEFT_HAND: return HITBOX_LEFT_HAND; + case HITBOX_ZOMBIE6_RIGHT_COLLAR: + case HITBOX_ZOMBIE6_RIGHT_UPPERARM: return HITBOX_RIGHT_UPPERARM; + case HITBOX_ZOMBIE6_RIGHT_FOREARM: return HITBOX_RIGHT_FOREARM; + case HITBOX_ZOMBIE6_RIGHT_HAND: return HITBOX_RIGHT_HAND; + case HITBOX_ZOMBIE6_LEFT_THIGH: return HITBOX_LEFT_THIGH; + case HITBOX_ZOMBIE6_LEFT_CALF: return HITBOX_LEFT_CALF; + case HITBOX_ZOMBIE6_LEFT_FOOT: return HITBOX_LEFT_FOOT; + case HITBOX_ZOMBIE6_RIGHT_THIGH: return HITBOX_RIGHT_THIGH; + case HITBOX_ZOMBIE6_RIGHT_CALF: return HITBOX_RIGHT_CALF; + case HITBOX_ZOMBIE6_RIGHT_FOOT: return HITBOX_RIGHT_FOOT; + } + break; + case FNV1A::Hash32Const("models/player/medic_infected.mdl"): + switch (nHitbox) + { + case HITBOX_ZOMBIE7_HEAD: return HITBOX_HEAD; + case HITBOX_ZOMBIE7_SPINE0: return HITBOX_SPINE0; + case HITBOX_ZOMBIE7_SPINE1: return HITBOX_SPINE1; + case HITBOX_ZOMBIE7_SPINE2: return HITBOX_SPINE2; + case HITBOX_ZOMBIE7_SPINE3: return HITBOX_SPINE3; + case HITBOX_ZOMBIE7_NECK: + case HITBOX_ZOMBIE7_PELVIS: return HITBOX_PELVIS; + case HITBOX_ZOMBIE7_LEFT_COLLAR: + case HITBOX_ZOMBIE7_LEFT_UPPERARM: return HITBOX_LEFT_UPPERARM; + case HITBOX_ZOMBIE7_LEFT_FOREARM: return HITBOX_LEFT_FOREARM; + case HITBOX_ZOMBIE7_LEFT_HAND: return HITBOX_LEFT_HAND; + case HITBOX_ZOMBIE7_RIGHT_COLLAR: + case HITBOX_ZOMBIE7_RIGHT_UPPERARM: return HITBOX_RIGHT_UPPERARM; + case HITBOX_ZOMBIE7_RIGHT_FOREARM: return HITBOX_RIGHT_FOREARM; + case HITBOX_ZOMBIE7_RIGHT_HAND: return HITBOX_RIGHT_HAND; + case HITBOX_ZOMBIE7_LEFT_THIGH: return HITBOX_LEFT_THIGH; + case HITBOX_ZOMBIE7_LEFT_CALF: return HITBOX_LEFT_CALF; + case HITBOX_ZOMBIE7_LEFT_FOOT: return HITBOX_LEFT_FOOT; + case HITBOX_ZOMBIE7_RIGHT_THIGH: return HITBOX_RIGHT_THIGH; + case HITBOX_ZOMBIE7_RIGHT_CALF: return HITBOX_RIGHT_CALF; + case HITBOX_ZOMBIE7_RIGHT_FOOT: return HITBOX_RIGHT_FOOT; + } + break; + case FNV1A::Hash32Const("models/player/spy_infected.mdl"): + switch (nHitbox) + { + case HITBOX_ZOMBIE9_HEAD: return HITBOX_HEAD; + case HITBOX_ZOMBIE9_SPINE0: return HITBOX_SPINE0; + case HITBOX_ZOMBIE9_SPINE1: return HITBOX_SPINE1; + case HITBOX_ZOMBIE9_SPINE2: return HITBOX_SPINE2; + case HITBOX_ZOMBIE9_SPINE3: return HITBOX_SPINE3; + case HITBOX_ZOMBIE9_NECK: + case HITBOX_ZOMBIE9_PELVIS: return HITBOX_PELVIS; + case HITBOX_ZOMBIE9_LEFT_COLLAR: + case HITBOX_ZOMBIE9_LEFT_UPPERARM: return HITBOX_LEFT_UPPERARM; + case HITBOX_ZOMBIE9_LEFT_FOREARM: return HITBOX_LEFT_FOREARM; + case HITBOX_ZOMBIE9_LEFT_HAND: return HITBOX_LEFT_HAND; + case HITBOX_ZOMBIE9_RIGHT_COLLAR: + case HITBOX_ZOMBIE9_RIGHT_UPPERARM: return HITBOX_RIGHT_UPPERARM; + case HITBOX_ZOMBIE9_RIGHT_FOREARM: return HITBOX_RIGHT_FOREARM; + case HITBOX_ZOMBIE9_RIGHT_HAND: return HITBOX_RIGHT_HAND; + case HITBOX_ZOMBIE9_LEFT_THIGH: return HITBOX_LEFT_THIGH; + case HITBOX_ZOMBIE9_LEFT_CALF: return HITBOX_LEFT_CALF; + case HITBOX_ZOMBIE9_LEFT_FOOT: return HITBOX_LEFT_FOOT; + case HITBOX_ZOMBIE9_RIGHT_THIGH: return HITBOX_RIGHT_THIGH; + case HITBOX_ZOMBIE9_RIGHT_CALF: return HITBOX_RIGHT_CALF; + case HITBOX_ZOMBIE9_RIGHT_FOOT: return HITBOX_RIGHT_FOOT; + } + break; + } + return nHitbox; +} + +int CBaseEntity::GetBaseToHitbox(int nHitbox) +{ + switch (H::Entities.GetModel(entindex())) + { + case FNV1A::Hash32Const("models/vsh/player/saxton_hale.mdl"): + case FNV1A::Hash32Const("models/vsh/player/hell_hale.mdl"): + case FNV1A::Hash32Const("models/vsh/player/santa_hale.mdl"): + switch (nHitbox) + { + case HITBOX_HEAD: return HITBOX_SAXTON_HEAD; + case HITBOX_SPINE0: return HITBOX_SAXTON_SPINE0; + case HITBOX_SPINE1: return HITBOX_SAXTON_SPINE1; + case HITBOX_SPINE2: return HITBOX_SAXTON_SPINE2; + case HITBOX_SPINE3: return HITBOX_SAXTON_SPINE3; + case HITBOX_PELVIS: return HITBOX_SAXTON_PELVIS; + case HITBOX_LEFT_UPPERARM: return HITBOX_SAXTON_LEFT_UPPERARM; + case HITBOX_LEFT_FOREARM: return HITBOX_SAXTON_LEFT_FOREARM; + case HITBOX_LEFT_HAND: return HITBOX_SAXTON_LEFT_HAND; + case HITBOX_RIGHT_UPPERARM: return HITBOX_SAXTON_RIGHT_UPPERARM; + case HITBOX_RIGHT_FOREARM: return HITBOX_SAXTON_RIGHT_FOREARM; + case HITBOX_RIGHT_HAND: return HITBOX_SAXTON_RIGHT_HAND; + case HITBOX_LEFT_THIGH: return HITBOX_SAXTON_LEFT_THIGH; + case HITBOX_LEFT_CALF: return HITBOX_SAXTON_LEFT_CALF; + case HITBOX_LEFT_FOOT: return HITBOX_SAXTON_LEFT_FOOT; + case HITBOX_RIGHT_THIGH: return HITBOX_SAXTON_RIGHT_THIGH; + case HITBOX_RIGHT_CALF: return HITBOX_SAXTON_RIGHT_CALF; + case HITBOX_RIGHT_FOOT: return HITBOX_SAXTON_RIGHT_FOOT; + } + break; + case FNV1A::Hash32Const("models/player/scout_infected.mdl"): + case FNV1A::Hash32Const("models/player/soldier_infected.mdl"): + case FNV1A::Hash32Const("models/player/sniper_infected.mdl"): + switch (nHitbox) + { + case HITBOX_HEAD: return HITBOX_ZOMBIE128_HEAD; + case HITBOX_SPINE0: return HITBOX_ZOMBIE128_SPINE0; + case HITBOX_SPINE1: return HITBOX_ZOMBIE128_SPINE1; + case HITBOX_SPINE2: return HITBOX_ZOMBIE128_SPINE2; + case HITBOX_SPINE3: return HITBOX_ZOMBIE128_SPINE3; + case HITBOX_PELVIS: return HITBOX_ZOMBIE128_PELVIS; + case HITBOX_LEFT_UPPERARM: return HITBOX_ZOMBIE128_LEFT_UPPERARM; + case HITBOX_LEFT_FOREARM: return HITBOX_ZOMBIE128_LEFT_FOREARM; + case HITBOX_LEFT_HAND: return HITBOX_ZOMBIE128_LEFT_HAND; + case HITBOX_RIGHT_UPPERARM: return HITBOX_ZOMBIE128_RIGHT_UPPERARM; + case HITBOX_RIGHT_FOREARM: return HITBOX_ZOMBIE128_RIGHT_FOREARM; + case HITBOX_RIGHT_HAND: return HITBOX_ZOMBIE128_RIGHT_HAND; + case HITBOX_LEFT_THIGH: return HITBOX_ZOMBIE128_LEFT_THIGH; + case HITBOX_LEFT_CALF: return HITBOX_ZOMBIE128_LEFT_CALF; + case HITBOX_LEFT_FOOT: return HITBOX_ZOMBIE128_LEFT_FOOT; + case HITBOX_RIGHT_THIGH: return HITBOX_ZOMBIE128_RIGHT_THIGH; + case HITBOX_RIGHT_CALF: return HITBOX_ZOMBIE128_RIGHT_CALF; + case HITBOX_RIGHT_FOOT: return HITBOX_ZOMBIE128_RIGHT_FOOT; + } + break; + case FNV1A::Hash32Const("models/player/pyro_infected.mdl"): + switch (nHitbox) + { + case HITBOX_HEAD: return HITBOX_ZOMBIE3_HEAD; + case HITBOX_SPINE0: return HITBOX_ZOMBIE3_SPINE0; + case HITBOX_SPINE1: return HITBOX_ZOMBIE3_SPINE1; + case HITBOX_SPINE2: return HITBOX_ZOMBIE3_SPINE2; + case HITBOX_SPINE3: return HITBOX_ZOMBIE3_SPINE3; + case HITBOX_PELVIS: return HITBOX_ZOMBIE3_PELVIS; + case HITBOX_LEFT_UPPERARM: return HITBOX_ZOMBIE3_LEFT_UPPERARM; + case HITBOX_LEFT_FOREARM: return HITBOX_ZOMBIE3_LEFT_FOREARM; + case HITBOX_LEFT_HAND: return HITBOX_ZOMBIE3_LEFT_HAND; + case HITBOX_RIGHT_UPPERARM: return HITBOX_ZOMBIE3_RIGHT_UPPERARM; + case HITBOX_RIGHT_FOREARM: return HITBOX_ZOMBIE3_RIGHT_FOREARM; + case HITBOX_RIGHT_HAND: return HITBOX_ZOMBIE3_RIGHT_HAND; + case HITBOX_LEFT_THIGH: return HITBOX_ZOMBIE3_LEFT_THIGH; + case HITBOX_LEFT_CALF: return HITBOX_ZOMBIE3_LEFT_CALF; + case HITBOX_LEFT_FOOT: return HITBOX_ZOMBIE3_LEFT_FOOT; + case HITBOX_RIGHT_THIGH: return HITBOX_ZOMBIE3_RIGHT_THIGH; + case HITBOX_RIGHT_CALF: return HITBOX_ZOMBIE3_RIGHT_CALF; + case HITBOX_RIGHT_FOOT: return HITBOX_ZOMBIE3_RIGHT_FOOT; + } + break; + case FNV1A::Hash32Const("models/player/demo_infected.mdl"): + switch (nHitbox) + { + case HITBOX_HEAD: return HITBOX_ZOMBIE4_HEAD; + case HITBOX_SPINE0: return HITBOX_ZOMBIE4_SPINE0; + case HITBOX_SPINE1: return HITBOX_ZOMBIE4_SPINE1; + case HITBOX_SPINE2: return HITBOX_ZOMBIE4_SPINE2; + case HITBOX_SPINE3: return HITBOX_ZOMBIE4_SPINE3; + case HITBOX_PELVIS: return HITBOX_ZOMBIE4_PELVIS; + case HITBOX_LEFT_UPPERARM: return HITBOX_ZOMBIE4_LEFT_UPPERARM; + case HITBOX_LEFT_FOREARM: return HITBOX_ZOMBIE4_LEFT_FOREARM; + case HITBOX_LEFT_HAND: return HITBOX_ZOMBIE4_LEFT_HAND; + case HITBOX_RIGHT_UPPERARM: return HITBOX_ZOMBIE4_RIGHT_UPPERARM; + case HITBOX_RIGHT_FOREARM: return HITBOX_ZOMBIE4_RIGHT_FOREARM; + case HITBOX_RIGHT_HAND: return HITBOX_ZOMBIE4_RIGHT_HAND; + case HITBOX_LEFT_THIGH: return HITBOX_ZOMBIE4_LEFT_THIGH; + case HITBOX_LEFT_CALF: return HITBOX_ZOMBIE4_LEFT_CALF; + case HITBOX_LEFT_FOOT: return HITBOX_ZOMBIE4_LEFT_FOOT; + case HITBOX_RIGHT_THIGH: return HITBOX_ZOMBIE4_RIGHT_THIGH; + case HITBOX_RIGHT_CALF: return HITBOX_ZOMBIE4_RIGHT_CALF; + case HITBOX_RIGHT_FOOT: return HITBOX_ZOMBIE4_RIGHT_FOOT; + } + break; + case FNV1A::Hash32Const("models/player/heavy_infected.mdl"): + switch (nHitbox) + { + case HITBOX_HEAD: return HITBOX_ZOMBIE5_HEAD; + case HITBOX_SPINE0: return HITBOX_ZOMBIE5_SPINE0; + case HITBOX_SPINE1: return HITBOX_ZOMBIE5_SPINE1; + case HITBOX_SPINE2: return HITBOX_ZOMBIE5_SPINE2; + case HITBOX_SPINE3: return HITBOX_ZOMBIE5_SPINE3; + case HITBOX_PELVIS: return HITBOX_ZOMBIE5_PELVIS; + case HITBOX_LEFT_UPPERARM: return HITBOX_ZOMBIE5_LEFT_UPPERARM; + case HITBOX_LEFT_FOREARM: return HITBOX_ZOMBIE5_LEFT_FOREARM; + case HITBOX_LEFT_HAND: return HITBOX_ZOMBIE5_LEFT_HAND; + case HITBOX_RIGHT_UPPERARM: return HITBOX_ZOMBIE5_RIGHT_UPPERARM; + case HITBOX_RIGHT_FOREARM: return HITBOX_ZOMBIE5_RIGHT_FOREARM; + case HITBOX_RIGHT_HAND: return HITBOX_ZOMBIE5_RIGHT_HAND; + case HITBOX_LEFT_THIGH: return HITBOX_ZOMBIE5_LEFT_THIGH; + case HITBOX_LEFT_CALF: return HITBOX_ZOMBIE5_LEFT_CALF; + case HITBOX_LEFT_FOOT: return HITBOX_ZOMBIE5_LEFT_FOOT; + case HITBOX_RIGHT_THIGH: return HITBOX_ZOMBIE5_RIGHT_THIGH; + case HITBOX_RIGHT_CALF: return HITBOX_ZOMBIE5_RIGHT_CALF; + case HITBOX_RIGHT_FOOT: return HITBOX_ZOMBIE5_RIGHT_FOOT; + } + break; + case FNV1A::Hash32Const("models/player/engineer_infected.mdl"): + switch (nHitbox) + { + case HITBOX_HEAD: return HITBOX_ZOMBIE6_HEAD; + case HITBOX_SPINE0: return HITBOX_ZOMBIE6_SPINE0; + case HITBOX_SPINE1: return HITBOX_ZOMBIE6_SPINE1; + case HITBOX_SPINE2: return HITBOX_ZOMBIE6_SPINE2; + case HITBOX_SPINE3: return HITBOX_ZOMBIE6_SPINE3; + case HITBOX_PELVIS: return HITBOX_ZOMBIE6_PELVIS; + case HITBOX_LEFT_UPPERARM: return HITBOX_ZOMBIE6_LEFT_UPPERARM; + case HITBOX_LEFT_FOREARM: return HITBOX_ZOMBIE6_LEFT_FOREARM; + case HITBOX_LEFT_HAND: return HITBOX_ZOMBIE6_LEFT_HAND; + case HITBOX_RIGHT_UPPERARM: return HITBOX_ZOMBIE6_RIGHT_UPPERARM; + case HITBOX_RIGHT_FOREARM: return HITBOX_ZOMBIE6_RIGHT_FOREARM; + case HITBOX_RIGHT_HAND: return HITBOX_ZOMBIE6_RIGHT_HAND; + case HITBOX_LEFT_THIGH: return HITBOX_ZOMBIE6_LEFT_THIGH; + case HITBOX_LEFT_CALF: return HITBOX_ZOMBIE6_LEFT_CALF; + case HITBOX_LEFT_FOOT: return HITBOX_ZOMBIE6_LEFT_FOOT; + case HITBOX_RIGHT_THIGH: return HITBOX_ZOMBIE6_RIGHT_THIGH; + case HITBOX_RIGHT_CALF: return HITBOX_ZOMBIE6_RIGHT_CALF; + case HITBOX_RIGHT_FOOT: return HITBOX_ZOMBIE6_RIGHT_FOOT; + } + break; + case FNV1A::Hash32Const("models/player/medic_infected.mdl"): + switch (nHitbox) + { + case HITBOX_HEAD: return HITBOX_ZOMBIE7_HEAD; + case HITBOX_SPINE0: return HITBOX_ZOMBIE7_SPINE0; + case HITBOX_SPINE1: return HITBOX_ZOMBIE7_SPINE1; + case HITBOX_SPINE2: return HITBOX_ZOMBIE7_SPINE2; + case HITBOX_SPINE3: return HITBOX_ZOMBIE7_SPINE3; + case HITBOX_PELVIS: return HITBOX_ZOMBIE7_PELVIS; + case HITBOX_LEFT_UPPERARM: return HITBOX_ZOMBIE7_LEFT_UPPERARM; + case HITBOX_LEFT_FOREARM: return HITBOX_ZOMBIE7_LEFT_FOREARM; + case HITBOX_LEFT_HAND: return HITBOX_ZOMBIE7_LEFT_HAND; + case HITBOX_RIGHT_UPPERARM: return HITBOX_ZOMBIE7_RIGHT_UPPERARM; + case HITBOX_RIGHT_FOREARM: return HITBOX_ZOMBIE7_RIGHT_FOREARM; + case HITBOX_RIGHT_HAND: return HITBOX_ZOMBIE7_RIGHT_HAND; + case HITBOX_LEFT_THIGH: return HITBOX_ZOMBIE7_LEFT_THIGH; + case HITBOX_LEFT_CALF: return HITBOX_ZOMBIE7_LEFT_CALF; + case HITBOX_LEFT_FOOT: return HITBOX_ZOMBIE7_LEFT_FOOT; + case HITBOX_RIGHT_THIGH: return HITBOX_ZOMBIE7_RIGHT_THIGH; + case HITBOX_RIGHT_CALF: return HITBOX_ZOMBIE7_RIGHT_CALF; + case HITBOX_RIGHT_FOOT: return HITBOX_ZOMBIE7_RIGHT_FOOT; + } + break; + case FNV1A::Hash32Const("models/player/spy_infected.mdl"): + switch (nHitbox) + { + case HITBOX_HEAD: return HITBOX_ZOMBIE9_HEAD; + case HITBOX_SPINE0: return HITBOX_ZOMBIE9_SPINE0; + case HITBOX_SPINE1: return HITBOX_ZOMBIE9_SPINE1; + case HITBOX_SPINE2: return HITBOX_ZOMBIE9_SPINE2; + case HITBOX_SPINE3: return HITBOX_ZOMBIE9_SPINE3; + case HITBOX_PELVIS: return HITBOX_ZOMBIE9_PELVIS; + case HITBOX_LEFT_UPPERARM: return HITBOX_ZOMBIE9_LEFT_UPPERARM; + case HITBOX_LEFT_FOREARM: return HITBOX_ZOMBIE9_LEFT_FOREARM; + case HITBOX_LEFT_HAND: return HITBOX_ZOMBIE9_LEFT_HAND; + case HITBOX_RIGHT_UPPERARM: return HITBOX_ZOMBIE9_RIGHT_UPPERARM; + case HITBOX_RIGHT_FOREARM: return HITBOX_ZOMBIE9_RIGHT_FOREARM; + case HITBOX_RIGHT_HAND: return HITBOX_ZOMBIE9_RIGHT_HAND; + case HITBOX_LEFT_THIGH: return HITBOX_ZOMBIE9_LEFT_THIGH; + case HITBOX_LEFT_CALF: return HITBOX_ZOMBIE9_LEFT_CALF; + case HITBOX_LEFT_FOOT: return HITBOX_ZOMBIE9_LEFT_FOOT; + case HITBOX_RIGHT_THIGH: return HITBOX_ZOMBIE9_RIGHT_THIGH; + case HITBOX_RIGHT_CALF: return HITBOX_ZOMBIE9_RIGHT_CALF; + case HITBOX_RIGHT_FOOT: return HITBOX_ZOMBIE9_RIGHT_FOOT; + } + break; + } + return nHitbox; +} +#pragma endregion \ No newline at end of file diff --git a/Amalgam/src/SDK/Definitions/Main/CBaseEntity.h b/Amalgam/src/SDK/Definitions/Main/CBaseEntity.h index c93c149d..95fb274d 100644 --- a/Amalgam/src/SDK/Definitions/Main/CBaseEntity.h +++ b/Amalgam/src/SDK/Definitions/Main/CBaseEntity.h @@ -297,4 +297,6 @@ public: Vec3 GetRenderCenter(); int IsInValidTeam(); int SolidMask(); + int GetHitboxToBase(int nHitbox); + int GetBaseToHitbox(int nHitbox); }; \ No newline at end of file