ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   SAMPFUNCS | как найти здоровье локального игрока? (https://forum.antichat.xyz/showthread.php?t=1381298)

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

Цитата:

Сообщение от Vintik

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

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

Цитата:

Сообщение от KiN4StAt

Вот тебе и "Преимущество" 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

Цитата:

Сообщение от KiN4StAt

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

Цитата:

Сообщение от SC6UT

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

C++:





Код:

float
health
=
(
*
reinterpret_cast

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

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



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

sc6ut 12.03.2021 17:33

Цитата:

Сообщение от KiN4StAt

Лишними скобками?

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


Время: 00:38