PDA

Просмотр полной версии : HandleRPCPacketFunc


plakapenka
27.03.2017, 22:07
Помогите распарсить пакет RPC_SetObjectMaterial

тип вот так ведь делать нужно?

C++:






char
data
[
255
]
;
bsData
.
Read
(
data
)
;




но в пакете длина строки не передается, а без неё как?

или как-то по другому можн?

скажите в каком направлении копать хотябы

И вообще как узнать в каком виде пакет передается?

знаю что в pawn функция выглядит так

PHP:






SetObjectMaterial
(
myobject
,
0
,
19341
,
"egg_texts"
,
"easter_egg01"
,
0xFFFFFFFF
)
;




значит и в пакете как-то так должно передаваться

Dark_Knight
27.03.2017, 22:16
Читай каждый параметр отдельно. По другому никак.

BlackKnigga
27.03.2017, 22:49
Помогите распарсить пакет RPC_SetObjectMaterial

тип вот так ведь делать нужно?

C++:






char
data
[
255
]
;
bsData
.
Read
(
data
)
;




но в пакете длина строки не передается, а без неё как?
или как-то по другому можн?
скажите в каком направлении копать хотябы

И вообще как узнать в каком виде пакет передается?
знаю что в pawn функция выглядит так

PHP:






SetObjectMaterial
(
myobject
,
0
,
19341
,
"egg_texts"
,
"easter_egg01"
,
0xFFFFFFFF
)
;




значит и в пакете как-то так должно передаваться


Разбирай рпц RakLogger'ом

plakapenka
27.03.2017, 23:19
Чот яснее не стало:wall:

http://blob:https://www.blast.hk/86bc2eab-2f39-4193-a489-05c720c8f9a0

plakapenka
27.03.2017, 23:53
как так же распарсить через соб?

C++:






BitStream
bsData
(
rpcParams
->
input
,
rpcParams
->
numberOfBitsOfData
/
8
,
false
)
;
int
asd1
;
bsData
.
Read
(
asd1
)
;
intasd2
;
bsData
.
Read
(
asd2
)
;
char
asd3
[
20
]
;
bsData
.
Read
(
asd3
)
;
char
asd4
[
20
]
;
bsData
.
Read
(
asd4
)
;
addMessageToChatWindow
(
"%d, %d, %s, %s"
,
asd1
,
asd2
,
asd3
,
asd4
)
;




дает набор каракуль

https://forum.antichat.xyz/attachments/27141502/

itsLegend
28.03.2017, 00:06
У тебя массив не закрыт нуль-терминирующим символом, поэтому и выводит лишнее.

Dark_Knight
28.03.2017, 01:37
Плюс сначала надо читать длину строки, а потом уже строку.

plakapenka
28.03.2017, 01:38
но я ведь не знаю длинну получаемой строки. Как его тогда закрыть?

как узнать длину?

itsLegend
28.03.2017, 02:04
Обычно перед строкой записывается её длина (byte/short/integer, зависит от структуры RPC/пакета)