PDA

Просмотр полной версии : SAMPFUNCS | как найти здоровье локального игрока?


user337567
09.03.2021, 19:45
как найти здоровье локального игрока? и как вообще взаимодействовать с GameAPI

sc6ut
09.03.2021, 19:50
узнать здоровье -

PEDSELF->GetHealth()


PEDSELF - указатель на локального игрока (класс CPed).

GAME - указатель на класс CGame.

Vintik
09.03.2021, 19:50
с СФ апи почти не знаком, но здоровье легко и без его использования:

C++:






float
health
=
*
(
float
*
)
(
(
*
(
DWORD
*
)
0xB6F5F0
)
+
0x540
)
;
float
armour
=
*
(
float
*
)
(
(
*
(
DWORD
*
)
0xB6F5F0
)
+
0x548
)
;
// а так же вот так броню

kin4stat
09.03.2021, 19:58
с СФ апи почти не знаком, но здоровье легко и без его использования:

C++:






float
health
=
*
(
float
*
)
(
(
*
(
DWORD
*
)
0xB6F5F0
)
+
0x540
)
;
float
armour
=
*
(
float
*
)
(
(
*
(
DWORD
*
)
0xB6F5F0
)
+
0x548
)
;
// а так же вот так броню





Вот тебе и "Преимущество" C-style кастов. Куча скобок и разбирай какая куда относится

А вообще красиво можно сделать вот так:

C++:






float
health
=
*
reinterpret_cast

(
0xB6F5F0
)
[
0x540
/
sizeof
(
float
)
]
;
float
armour
=
*
reinterpret_cast

(
0xB6F5F0
)
[
0x548
/
sizeof
(
float
)
]
;

Vintik
09.03.2021, 21:04
Вот тебе и "Преимущество" C-style кастов. Куча скобок и разбирай какая куда относится
А вообще красиво можно сделать вот так:

C++:






float
health
=
*
reinterpret_cast

(
0xB6F5F0
)
[
0x540
/
4
]
;
float
armour
=
*
reinterpret_cast

(
0xB6F5F0
)
[
0x548
/
4
]
;





Верю, скобок много.

C++:






DWORD CPed
=
*
(
DWORD
*
)
0xB6F5F0
;
float
health
=
*
(
float
*
)
(
CPed
+
0x540
)
;
float
armour
=
*
(
float
*
)
(
Cped
+
0x548
)
;




Хотя твой вариант более элегантный, что ли.

sc6ut
12.03.2021, 12:24
float health = *reinterpret_cast(0xB6F5F0)[0x540 / sizeof(float)]; float armour = *reinterpret_cast(0xB6F5F0)[0x548 / sizeof(float)];


вообще-то так:

C++:






float
health
=
(
*
reinterpret_cast

(
0xB6F5F0
)
)
[
0x540
/
sizeof
(
float
)
]
;
float
armour
=
(
*
reinterpret_cast

(
0xB6F5F0
)
)
[
0x548
/
sizeof
(
float
)
]
;

kin4stat
12.03.2021, 15:56
вообще-то так:

C++:






float
health
=
(
*
reinterpret_cast

(
0xB6F5F0
)
)
[
0x540
/
sizeof
(
float
)
]
;
float
armour
=
(
*
reinterpret_cast

(
0xB6F5F0
)
)
[
0x548
/
sizeof
(
float
)
]
;





И чем же оно отличается? Лишними скобками?

sc6ut
12.03.2021, 17:33
Лишними скобками?


наборот, как раз таки, не лишними, без них игра крашит 🙂