У меня есть функция:
Вот содержимое iBoneList[]:
И сама проблема в том, что при большом CRANGE - рендже аимбота, если первые 2-3 кости iBoneList[] в радиусе, то аим будет захватывать их, хотя по логике должен захватить ближайшую, подскажите пожалуйста, как это исправить :З
При маленьком все нормально захватывает.
Если нужно, то вот код Math::vect2_dist:
Код взят отсюда -> https://www.blast.hk/threads/63079/
GetAimingPlayer:
void CAimbot::GetAimingPlayer()
{
iTargetPlayer = -1;
float fNearestDistance = 9999.0f;
// тут шлак бесполезный, смотри с нижнего комментария
if (g_Config.g_Aimbot.bAimbot || g_Config.g_Aimbot.bSmooth || g_Config.g_Aimbot.bSilent || g_Config.g_Aimbot.bProAim)
{
CVector vecCamera, vecOrigin, vecTarget;
Utils::getBonePosition(FindPlayerPed(), BONE_RIGHTWRIST, &vecOrigin);
TheCamera.Find3rdPersonCamTargetVector(100.f, vecOrigin, &vecCamera, &vecTarget);
for (int i = 0; i < SAMP_MAX_PLAYERS; i++)
{
if (!pSAMP->isPlayerStreamed(i))
continue;
CPed* pPed = CPools::GetPed(pSAMP->getPlayers()->pRemotePlayer[I]->pPlayerData->pSAMP_Actor->ulGTAEntityHandle);
if (!pPed || !pPed->IsAlive())
continue;
if (g_Config.g_Aimbot.bTeamProtect && pSAMP->getPlayerColor(i) == pSAMP->getPlayerColor(pSAMP->getPlayers()->sLocalPlayerID))
continue;
if (!g_Config.g_Aimbot.bIgnoreEverything)
{
if (g_Config.g_Aimbot.bIgnoreAFK && pSAMP->getPlayers()->pRemotePlayer[I]->pPlayerData->iAFKState == 2)
continue;
float fTargetDistance = Math::vect3_dist(&pSAMP->getPlayers()->pRemotePlayer[I]->pPlayerData->pSAMP_Actor->pGTA_Ped->base.matrix[12], &pSAMP->getPlayers()->pLocalPlayer->pSAMP_Actor->pGTA_Ped->base.matrix[12]);
if (!g_Config.g_Aimbot.bIgnoreMaxDistance && fTargetDistance > fWeaponRange[pSAMP->getPlayers()->pLocalPlayer->byteCurrentWeapon])
continue;
}
// Сам захват кости начинается отсюда
for (auto iBone : iBoneList)
{
CVector vecBone, vecBoneScreen;
Utils::getBonePosition(pPed, (ePedBones)iBone, &vecBone);
Utils::CalcScreenCoors(&vecBone, &vecBoneScreen);
if (vecBoneScreen.z < 1.0f)
continue;
float fCentreDistance = Math::vect2_dist(&vecCrosshair, &vecBoneScreen);
if (g_Config.g_Aimbot.bAimbot && fCentreDistance >= (float)g_Config.g_Aimbot.iAimbotConfig[pSAMP->getPlayers()->pLocalPlayer->byteCurrentWeapon][CRANGE] * 1.5f)
continue;
if (!g_Config.g_Aimbot.bIgnoreEverything && !g_Config.g_Aimbot.bLockThroughObjects && !CWorld::GetIsLineOfSightClear(vecCamera, vecBone, true, true, false, true, true, true, false))
continue;
if (fCentreDistance <= fNearestDistance)
{
fNearestDistance = fCentreDistance;
iTargetPlayer = i; iTargetBone = iBone;
vecTargetBone = vecBoneScreen;
break;
}
}
}
}
}
Вот содержимое iBoneList[]:
C++:
static int iBoneList[]
{
BONE_PELVIS1, BONE_PELVIS, BONE_SPINE1, BONE_UPPERTORSO, BONE_NECK,
BONE_HEAD2, BONE_HEAD1, BONE_HEAD, BONE_RIGHTUPPERTORSO, BONE_RIGHTSHOULDER,
BONE_RIGHTELBOW, BONE_LEFTUPPERTORSO, BONE_LEFTSHOULDER, BONE_LEFTELBOW,
BONE_LEFTHIP, BONE_LEFTKNEE, BONE_RIGHTHIP, BONE_RIGHTKNEE,
};
И сама проблема в том, что при большом CRANGE - рендже аимбота, если первые 2-3 кости iBoneList[] в радиусе, то аим будет захватывать их, хотя по логике должен захватить ближайшую, подскажите пожалуйста, как это исправить :З
При маленьком все нормально захватывает.
Если нужно, то вот код Math::vect2_dist:
C++:
static float vect2_dist(CVector* point1, CVector* point2)
{
return sqrt(pow(point1->x - point2->x, 2) + pow(point1->y - point2->y, 2));
}
Последнее редактирование: