
16.04.2022, 22:35
|
|
Постоянный
Регистрация: 29.05.2017
Сообщений: 394
С нами:
4714653
Репутация:
98
|
|
Адаптировал эту функцию под свои задачи:
Сообщение от ЯedЯuM
Рассчитывает кватернион поворота к указанному игроку.
C++:
Код:
void
RotateQuaternion
(
float
angle_radian
,
float
*
quat_w
,
float
*
quat_x
)
{
*
quat_x
=
-
1
*
sinf
(
angle_radian
/
2.0f
)
;
*
quat_w
=
cosf
(
angle_radian
/
2.0f
)
;
}
void
RotateMeToPlayer
(
WORD player
)
{
stOnFootData ft
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
onFootData
;
BitStream bs
;
actor_info
*
actorInfo
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pRemotePlayer
[
player
]
->
pPlayerData
->
pSAMP_Actor
->
pGTA_Ped
;
if
(
actor_info
==
nullptr
)
return
;
CPed
*
Ped
=
GAME
->
GetPools
(
)
->
GetPed
(
(
DWORD
*
)
actorInfo
)
;
CVector pers
;
if
(
Ped
==
nullptr
)
return
;
Ped
->
GetTransformedBonePosition
(
BONE_RIGHTWRIST
,
&
pers
)
;
float
angle
=
-
1
*
atan2
(
pers
.
fX
-
PEDSELF
->
GetPosition
(
)
->
fX
,
pers
.
fY
-
PEDSELF
->
GetPosition
(
)
->
fY
)
;
RotateQuaternion
(
angle
,
&
ft
.
fQuaternion
[
0
]
,
&
ft
.
fQuaternion
[
3
]
)
;
bs
.
Write
(
(
BYTE
)
ID_PLAYER_SYNC
)
;
bs
.
Write
(
(
PCHAR
)
&
ft
,
sizeof
(
stOnFootData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bs
)
;
}
Пример:
C++:
Код:
RotateMeToPlayer
(
228
)
;
// Использовать в хуке онфут даты с блокировкой оригинальной синхры.
|
|
|