
27.03.2017, 22:07
|
|
Новичок
Регистрация: 17.07.2013
Сообщений: 16
С нами:
6748131
Репутация:
53
|
|
Помогите распарсить пакет RPC_SetObjectMaterial
тип вот так ведь делать нужно?
C++:
Код:
char
data
[
255
]
;
bsData
.
Read
(
data
)
;
но в пакете длина строки не передается, а без неё как?
или как-то по другому можн?
скажите в каком направлении копать хотябы
И вообще как узнать в каком виде пакет передается?
знаю что в pawn функция выглядит так
PHP:
Код:
SetObjectMaterial
(
myobject
,
0
,
19341
,
"egg_texts"
,
"easter_egg01"
,
0xFFFFFFFF
)
;
значит и в пакете как-то так должно передаваться
|
|
|

27.03.2017, 22:16
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Читай каждый параметр отдельно. По другому никак.
|
|
|

27.03.2017, 22:49
|
|
Постоянный
Регистрация: 10.01.2016
Сообщений: 922
С нами:
5441999
Репутация:
133
|
|
Сообщение от plakapenka
Помогите распарсить пакет RPC_SetObjectMaterial
тип вот так ведь делать нужно?
C++:
Код:
char
data
[
255
]
;
bsData
.
Read
(
data
)
;
но в пакете длина строки не передается, а без неё как?
или как-то по другому можн?
скажите в каком направлении копать хотябы
И вообще как узнать в каком виде пакет передается?
знаю что в pawn функция выглядит так
PHP:
Код:
SetObjectMaterial
(
myobject
,
0
,
19341
,
"egg_texts"
,
"easter_egg01"
,
0xFFFFFFFF
)
;
значит и в пакете как-то так должно передаваться
Разбирай рпц RakLogger'ом
|
|
|

27.03.2017, 23:19
|
|
Новичок
Регистрация: 17.07.2013
Сообщений: 16
С нами:
6748131
Репутация:
53
|
|
Чот яснее не стало:wall:
http://blob:https://www.blast.hk/86bc2eab-2f39-4193-a489-05c720c8f9a0
|
|
|

27.03.2017, 23:53
|
|
Новичок
Регистрация: 17.07.2013
Сообщений: 16
С нами:
6748131
Репутация:
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
)
;
дает набор каракуль

|
|
|

28.03.2017, 00:06
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
У тебя массив не закрыт нуль-терминирующим символом, поэтому и выводит лишнее.
|
|
|

28.03.2017, 01:37
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Плюс сначала надо читать длину строки, а потом уже строку.
|
|
|

28.03.2017, 01:38
|
|
Новичок
Регистрация: 17.07.2013
Сообщений: 16
С нами:
6748131
Репутация:
53
|
|
но я ведь не знаю длинну получаемой строки. Как его тогда закрыть?
как узнать длину?
|
|
|

28.03.2017, 02:04
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
Обычно перед строкой записывается её длина (byte/short/integer, зависит от структуры RPC/пакета)
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|