
27.12.2022, 11:14
|
|
Участник форума
Регистрация: 16.08.2017
Сообщений: 110
С нами:
4600979
Репутация:
83
|
|
Сообщение от Gafask
Добрый день/вечер/ночь. 💤
Подскажите функцию или формулы.
Пишу External софт esp.
Задача получить экранные координаты обьекта из 3д мира не разу подобное не делал с 3д, только радар.
Не как не пойму, есть позиция x, y, z врага, позиция игрока x, y, z и угол поворота камеры x, z и можно fov найти. В планах рисовать к примеру квадрат на враге.
Подскажите пожалуйста. 🤔
Функция от s0beit, добавляем ее в прокси IDirect3DDevice9.cpp
C++:
Код:
if
(
gta_menu_active
(
)
)
return
;
if
(
cheat_state
->
_generic
.
cheat_panic_enabled
)
return
;
if
(
!
g_dwSAMP_Addr
||
!
g_SAMP
||
!
g_Players
)
return
;
if
(
!
pGameInterface
)
return
;
if
(
isBadPtr_GTA_pPed
(
pPedSelf
)
)
return
;
actor_info
*
player
=
getGTAPedFromSAMPPlayerID
(
id
)
;
actor_info
*
me
=
actor_info_get
(
ACTOR_SELF
,
NULL
)
;
if
(
!
player
)
return
;
CPed
*
pPed
=
pGameInterface
->
GetPools
(
)
->
GetPed
(
(
DWORD
*
)
player
)
;
if
(
!
pPed
)
return
;
float
max_up_val
=
0
,
max_down_val
=
0
,
max_left_val
=
0
,
max_right_val
=
0
;
bool
invalid
=
false
;
for
(
int
bone_id
=
BONE_PELVIS1
;
bone_id
=
BONE_PELVIS1
&&
bone_id
=
BONE_RIGHTUPPERTORSO
&&
bone_id
=
BONE_LEFTUPPERTORSO
&&
bone_id
=
BONE_LEFTHIP
&&
bone_id
=
BONE_RIGHTHIP
&&
bone_id
GetBonePosition
(
(
eBone
)
bone_id
,
&
bone
)
;
D3DXVECTOR3 bone_pos
;
bone_pos
.
x
=
bone
.
fX
;
bone_pos
.
y
=
bone
.
fY
;
bone_pos
.
z
=
bone
.
fZ
;
D3DXVECTOR3 bone_screen_pos
;
CalcScreenCoors
(
&
bone_pos
,
&
bone_screen_pos
)
;
if
(
bone_screen_pos
.
z
max_up_val
)
max_up_val
=
bone_screen_pos
.
y
;
if
(
bone_screen_pos
.
y
max_right_val
)
max_right_val
=
bone_screen_pos
.
x
;
if
(
bone_screen_pos
.
x
D3DBoxBorder
(
max_left_val
,
max_down_val
,
widht_box
,
height_box
,
D3DCOLOR_RGBA
(
0
,
255
,
0
,
255
)
,
0
)
;
}
}
|
|
|