ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   HandleRPCPacketFunc (https://forum.antichat.xyz/showthread.php?t=1316144)

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

Цитата:

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

Помогите распарсить пакет 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/пакета)


Время: 09:14