HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 06.05.2021, 15:04
Majunti
Постоянный
Регистрация: 05.10.2020
Сообщений: 509
С нами: 2950908

Репутация: 48


По умолчанию

Как в SF реализовать хук ClientJoin?
 
Ответить с цитированием

  #2  
Старый 09.05.2021, 21:01
sc6ut
Постоянный
Регистрация: 03.05.2020
Сообщений: 385
С нами: 3174020

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

C++:





Код:
// в мейнлуп регаешь колбэк
SF
->
getRakNet
(
)
->
registerRakNetCallback
(
RAKHOOK_TYPE_OUTCOMING_RPC
,
outcomingRPC
)
;
bool
__stdcall
outcomingRPC
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
RPC_ClientJoin
)
{
int32_t
version
;
uint8_t
mod
,
nickNameLen
,
authKeyLen
,
clientVerLen
;
std
::
string nickName
,
authKey
,
clientVersion
;
uint32_t
clientChallengeResponse
;
// читаешь данные
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
version
)
;
params
->
bitStream
->
Read
(
mod
)
;
params
->
bitStream
->
Read
(
nickNameLen
)
;
nickName
.
reserve
(
nickNameLen
)
;
params
->
bitStream
->
Read
(
const_cast

(
nickName
.
data
(
)
)
,
nickNameLen
)
;
params
->
bitStream
->
Read
(
clientChallengeResponse
)
;
params
->
bitStream
->
Read
(
authKeyLen
)
;
authKey
.
reserve
(
authKeyLen
)
;
params
->
bitStream
->
Read
(
const_cast

(
authKey
.
data
(
)
)
,
authKeyLen
)
;
params
->
bitStream
->
Read
(
clientVerLen
)
;
clientVersion
.
reserve
(
clientVerLen
)
;
params
->
bitStream
->
Read
(
const_cast

(
clientVersion
.
data
(
)
)
,
clientVerLen
)
;
// меняешь данные
// обратно вписываешь данные
params
->
bitStream
->
ResetWritePointer
(
)
;
params
->
bitStream
->
Write
(
version
)
;
params
->
bitStream
->
Write
(
mod
)
;
params
->
bitStream
->
Write
(
static_cast

(
nickName
.
size
(
)
)
)
;
params
->
bitStream
->
Write
(
nickName
.
c_str
(
)
,
nickName
.
size
(
)
)
;
params
->
bitStream
->
Write
(
clientChallengeResponse
)
;
params
->
bitStream
->
Write
(
static_cast

(
authKey
.
size
(
)
)
)
;
params
->
bitStream
->
Write
(
authKey
.
c_str
(
)
,
authKey
.
size
(
)
)
;
params
->
bitStream
->
Write
(
static_cast

(
clientVer
.
size
(
)
)
)
;
params
->
bitStream
->
Write
(
clientVersion
.
c_str
(
)
,
clientVer
.
size
(
)
)
;
}
return
true
;
}
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.