Код:
bool CLagRecord::StoreHitboxes() {
if (!g_ctx->m_pLocalPawn || !g_ctx->m_pLocalPawn->IsAlive())
return false;
if (!g_ctx->m_pLocalController || !g_ctx->m_pLocalController->m_bPawnIsAlive())
return false;
if (!g_ctx->m_pLocalData->m_pWeaponBaseVData)
{
return false;
}
m_arrTargetHitboxes.clear();
if (g_Variables.m_Ragebot.m_ActiveConfig.m_Hitboxes.empty())
{
return false;
}
if (m_pModel->m_nRendermeshCount <= 0 || !m_pModel->m_pRenderMeshes)
{
return false;
}
CRenderMesh* pMeshes = m_pModel->m_pRenderMeshes->m_pMeshes;
if (!pMeshes)
{
return false;
}
CHitBoxSets* pHitBoxSets = pMeshes[0].m_pHitboxSets;
if (!pHitBoxSets || pHitBoxSets[0].m_nHitboxCount <= 0)
{
return false;
}
CHitBox* pHitBoxArr = pHitBoxSets[0].m_pHitBox;
if (!pHitBoxArr)
{
return false;
}
int nDamageThreshold = g_ragebot->holdingMinOverride
? g_Variables.m_Ragebot.m_ActiveConfig.m_iMinDamageOverride
: ((g_Variables.m_Ragebot.m_ActiveConfig.m_iMinDamage > 100)
? (g_Variables.m_Ragebot.m_ActiveConfig.m_iMinDamage - 100 + m_pPawn->m_iHealth())
: g_Variables.m_Ragebot.m_ActiveConfig.m_iMinDamage);
bool bStoredHitbox = false;
for (const auto& hitbox : g_Variables.m_Ragebot.m_ActiveConfig.m_Hitboxes) {
int damage = g_ctx->m_pLocalData->m_pWeaponBaseVData->m_nDamage();
switch (hitbox.m_eDefinition) {
case HB_HEAD:
if (nDamageThreshold <= g_Autowall->MaxPossibleDamageToHitbox(m_pPawn, 1, damage)) {
m_arrTargetHitboxes.emplace_back(
pHitBoxArr[HITBOX_HEAD].ConstructHitboxData(m_Bones[6], hitbox.m_bMultipoint));
bStoredHitbox = true;
}
break;
case HB_CHEST:
if (nDamageThreshold <= g_Autowall->MaxPossibleDamageToHitbox(m_pPawn, 2, damage)) {
m_arrTargetHitboxes.emplace_back(
pHitBoxArr[HITBOX_UPPER_CHEST].ConstructHitboxData(
m_Bones[HitboxToBoneIndex(HITBOX_UPPER_CHEST)], hitbox.m_bMultipoint));
bStoredHitbox = true;
}
break;
case HB_STOMACH:
if (nDamageThreshold <= g_Autowall->MaxPossibleDamageToHitbox(m_pPawn, 3, damage)) {
m_arrTargetHitboxes.emplace_back(
pHitBoxArr[HITBOX_STOMACH].ConstructHitboxData(m_Bones[1], hitbox.m_bMultipoint));
bStoredHitbox = true;
}
break;
case HB_PELVIS:
if (nDamageThreshold <= g_Autowall->MaxPossibleDamageToHitbox(m_pPawn, 3, damage)) {
m_arrTargetHitboxes.emplace_back(
pHitBoxArr[HITBOX_PELVIS].ConstructHitboxData(m_Bones[0], hitbox.m_bMultipoint));
bStoredHitbox = true;
}
break;
case HB_LEGS:
if (nDamageThreshold <= g_Autowall->MaxPossibleDamageToHitbox(m_pPawn, 6, damage)) {
m_arrTargetHitboxes.emplace_back(
pHitBoxArr[HITBOX_LEFT_CALF].ConstructHitboxData(m_Bones[23], hitbox.m_bMultipoint));
m_arrTargetHitboxes.emplace_back(
pHitBoxArr[HITBOX_RIGHT_CALF].ConstructHitboxData(m_Bones[26], hitbox.m_bMultipoint));
bStoredHitbox = true;
}
break;
case HB_FEET:
if (nDamageThreshold <= g_Autowall->MaxPossibleDamageToHitbox(m_pPawn, 6, damage)) {
m_arrTargetHitboxes.emplace_back(
pHitBoxArr[HITBOX_LEFT_FOOT].ConstructHitboxData(m_Bones[24], hitbox.m_bMultipoint));
m_arrTargetHitboxes.emplace_back(
pHitBoxArr[HITBOX_RIGHT_FOOT].ConstructHitboxData(m_Bones[27], hitbox.m_bMultipoint));
bStoredHitbox = true;
}
break;
}
}
return bStoredHitbox;
}
Последнее редактирование: