Показать сообщение отдельно

  #5  
Старый 24.07.2022, 16:51
sizeoftrickster
Участник форума
Регистрация: 28.07.2021
Сообщений: 138
С нами: 2524529

Репутация: 163
По умолчанию

Цитата:
Сообщение от RedHolms  

up
Могу предложить вариант:

C++:





[CODE]
// Вначале получаем указатель на структуру SAMP или stSAMP, CNetGame, pSAMP, вообщем как удобнее
pSAMP
=
*
reinterpret_cast

(
samp
.
dll
+
0x21A0F8
)
;
// Потом из структуры сампа получаем указатель на структуру игровых пулов
ppPools
=
reinterpret_cast

(
(
size_t
)
pSAMP
+
0x3CD
)
;
// Потом из структуры игровых пулов в структуре самп получаем указатель на структуру игроков
ppPlayer
=
reinterpret_cast

(
(
size_t
)
pPools
+
0x18
)
;
// В итоге, из структуры игроков получаем ник и ид ЛОКАЛЬНОГО игрока. Смотри: https://gitlab.com/prime-hack/samp/plugins/templates/samp/-/blob/master/SAMP by SR_team
pLocalPlayerNickname
=
reinterpret_cast

(
(
size_t
)
pPlayerPool
+
0xA
)
;
pLocalPlayerId
=
reinterpret_cast

(
(
size_t
)
pPlayerPool
+
0x4
)
;
short
SAMP
::
PlayerPool
::
GetLocalPlayerId
(
)
{
if
(
pLocalPlayerId
)
return
*
pLocalPlayerId
;
return
-
1
;
}
std
::
string SAMP
::
PlayerPool
::
GetLocalPlayerNickname
(
)
{
struct
msvc_string
{
union
{
char
szString
[
0x10
]
;
char
*
pszString
;
}
;
std
::
size_t length
;
std
::
size_t allocated
;
}
;
auto
string
=
*
reinterpret_cast

(
pLocalPlayerNickname
)
;
if
(
string
.
allocated



Еще один вариант, через pack и pop

C++:





Код:
#pragma pack(push, 1)
// Сюда структуры, сами структуры можно посмотреть: https://github.com/BlastHackNet/mod_s0beit_sa-1/blob/master/src/samp.h
struct
stSAMP
{
void
*
pUnk0
;
struct
stServerInfo
*
pServerInfo
;
uint8_t
byteSpace
[
24
]
;
char
szIP
[
257
]
;
char
szHostname
[
259
]
;
bool
bNametagStatus
;
// changes by /nametagstatus
uint32_t
ulPort
;
uint32_t
ulMapIcons
[
100
]
;
int
iLanMode
;
int
iGameState
;
uint32_t
ulConnectTick
;
struct
stServerPresets
*
pSettings
;
void
*
pRakClientInterface
;
struct
stSAMPPools
*
pPools
;
}
;
#pragma pack(pop)
 
Ответить с цитированием