 |
|

07.06.2019, 14:40
|
|
Новичок
Регистрация: 31.03.2016
Сообщений: 20
С нами:
5324981
Репутация:
1
|
|
How to hook the outcomimg RPC_ServerCommamd?
|
|
|

07.06.2019, 14:58
|
|
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами:
5332594
Репутация:
163
|
|
Сообщение от astap_
отлавливай через структуру чата либо через хук DISCONNECTION_NOTIFICATION
Даже если другой текст ввести туда, то всё равно не сравниваются строки
Как отловить сообщение и сравнить с помощью strcmp ?
|
|
|

07.06.2019, 15:01
|
|
Постоянный
Регистрация: 14.11.2017
Сообщений: 319
С нами:
4472205
Репутация:
163
|
|
Сообщение от Rece1ver
C++:
Код:
bool
CALLBACK
incomingRPC
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
ScriptRPCEnumeration
::
RPC_ScrClientMessage
)
{
DWORD strlen
;
char
string
[
2048
]
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
strlen
)
;
params
->
bitStream
->
Read
(
string
,
strlen
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"дебаг"
)
;
if
(
!
strcmp
(
string
,
"Server closed the connection."
)
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"Сервер закрыл соединение"
)
;
}
}
return
true
;
}
В чат выводит "дебаг", но "Сервер закрыл соединение" - нет. Почему так ?
1. не правильно читаешь
2. Server closed the connection не приходит в RPC_ScrClientMessage
|
|
|

07.06.2019, 15:47
|
|
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами:
5332594
Репутация:
163
|
|
Сообщение от ALF
1. не правильно читаешь
2. Server closed the connection не приходит в RPC_ScrClientMessage
Без разницы на этот клосед коннекцион, как любое другое сообщение отловить и сравнить ?
|
|
|

07.06.2019, 16:22
|
|
Постоянный
Регистрация: 14.11.2017
Сообщений: 319
С нами:
4472205
Репутация:
163
|
|
Сообщение от Rece1ver
Без разницы на этот клосед коннекцион, как любое другое сообщение отловить и сравнить ?
C++:
Код:
uint strLen
,
color
;
char
szMsg
[
144
]
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
color
)
;
params
->
bitStream
->
Read
(
strLen
)
;
if
(
strLen
>=
sizeof
(
szMsg
)
)
strLen
=
sizeof
(
szMsg
)
-
1
;
params
->
bitStream
->
Read
(
szMsg
,
strLen
)
;
szMsg
[
strLen
]
=
'\0'
;
if
(
strstr
(
szMsg
,
"text"
)
)
{
// ...
}
|
|
|

07.06.2019, 17:43
|
|
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами:
5332594
Репутация:
163
|
|
Сообщение от ALF
C++:
Код:
uint strLen
,
color
;
char
szMsg
[
144
]
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
color
)
;
params
->
bitStream
->
Read
(
strLen
)
;
if
(
strLen
>=
sizeof
(
szMsg
)
)
strLen
=
sizeof
(
szMsg
)
-
1
;
params
->
bitStream
->
Read
(
szMsg
,
strLen
)
;
szMsg
[
strLen
]
=
'\0'
;
if
(
strstr
(
szMsg
,
"text"
)
)
{
// ...
}
не работает, ничего не происходит
каллбэк регаю, хз в чём проблема
C++:
Код:
SF
->
getRakNet
(
)
->
registerRakNetCallback
(
RakNetScriptHookType
::
RAKHOOK_TYPE_INCOMING_RPC
,
incomingRPC
)
;
|
|
|

07.06.2019, 20:37
|
|
Участник форума
Регистрация: 19.01.2017
Сообщений: 130
С нами:
4901705
Репутация:
98
|
|
|
|
|

07.06.2019, 21:31
|
|
Участник форума
Регистрация: 04.04.2017
Сообщений: 263
С нами:
4793630
Репутация:
133
|
|
Сообщение от Rece1ver
не работает, ничего не происходит
каллбэк регаю, хз в чём проблема
C++:
Код:
SF
->
getRakNet
(
)
->
registerRakNetCallback
(
RakNetScriptHookType
::
RAKHOOK_TYPE_INCOMING_RPC
,
incomingRPC
)
;
C++:
Код:
if
(
params
->
packetId
==
ScriptRPCEnumeration
::
RPC_ScrClientMessage
)
{
size_t len
;
DWORD color
;
char
message
[
256
]
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
color
)
;
params
->
bitStream
->
Read
(
len
)
;
params
->
bitStream
->
Read
(
message
,
len
)
;
params
->
bitStream
->
ResetReadPointer
(
)
;
message
[
len
]
=
'\0'
;
if
(
strcmp
(
message
,
"cakebou"
)
==
0
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"Got it!"
)
;
}
}
;
Сообщение от Rece1ver
не работает, ничего не происходит
каллбэк регаю, хз в чём проблема
C++:
Код:
SF
->
getRakNet
(
)
->
registerRakNetCallback
(
RakNetScriptHookType
::
RAKHOOK_TYPE_INCOMING_RPC
,
incomingRPC
)
;
Если что функция strcmp проверяет целую строку, а strstr проверяет часть строки
|
|
|

07.06.2019, 22:42
|
|
Новичок
Регистрация: 31.03.2016
Сообщений: 20
С нами:
5324981
Репутация:
1
|
|
How to hook the outcomimg RPC_ServerCommamd?
|
|
|

08.06.2019, 09:41
|
|
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами:
5332594
Репутация:
163
|
|
Сообщение от cakebou
C++:
Код:
if
(
params
->
packetId
==
ScriptRPCEnumeration
::
RPC_ScrClientMessage
)
{
size_t len
;
DWORD color
;
char
message
[
256
]
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
color
)
;
params
->
bitStream
->
Read
(
len
)
;
params
->
bitStream
->
Read
(
message
,
len
)
;
params
->
bitStream
->
ResetReadPointer
(
)
;
message
[
len
]
=
'\0'
;
if
(
strcmp
(
message
,
"cakebou"
)
==
0
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"Got it!"
)
;
}
}
;
Если что функция strcmp проверяет целую строку, а strstr проверяет часть строки
И так и так проверял, не работает, он читает другие строки чата, но почему-то не сравнивает.
Это проблема появилась после подключения имгуи к проекту.
Возможно это из-за того что сравнивает с текстом на кириллице.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|