|
Новичок
Регистрация: 03.11.2018
Сообщений: 23
С нами:
3961687
Репутация:
3
|
|
У меня есть функция:
GetAimingPlayer:
[CODE]
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
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
=
(
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
Вот содержимое 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
)
)
;
}
Код взят отсюда -> https://www.blast.hk/threads/63079/
|